diff --git a/COPYING b/COPYING new file mode 100755 index 0000000..354f1e0 --- /dev/null +++ b/COPYING @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..2a829c2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,5 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = COPYING + +SUBDIRS = src \ No newline at end of file diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..96fc798 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,2 @@ +#! /bin/sh +autoreconf -fvi diff --git a/clean.sh b/clean.sh new file mode 100755 index 0000000..0c2c9f5 --- /dev/null +++ b/clean.sh @@ -0,0 +1,13 @@ +make maintainer-clean +rm -rf Makefile.in\ + aclocal.m4\ + config.guess\ + config.sub\ + configure\ + depcomp\ + install-sh\ + ltmain.sh\ + missing\ + src/Makefile.in\ + src/config.h.in + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..fcf359b --- /dev/null +++ b/configure.ac @@ -0,0 +1,76 @@ +AC_PREREQ([2.61]) +AC_INIT([libb2], [0.97], [contact@blake2.net], [libb2], [https://blake2.net]) +AC_CONFIG_SRCDIR([src/blake2b.c]) +AC_CONFIG_HEADERS([src/config.h]) +AM_INIT_AUTOMAKE([foreign 1.9]) +AC_CONFIG_MACRO_DIR([m4]) + +B2_LIBRARY_VERSION=1:2:0 # interface, revision, age +AC_SUBST(B2_LIBRARY_VERSION) + +AC_LANG_C +AC_PROG_CC +AC_PROG_CC_C99 + +AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h]) +AC_OPENMP +AX_CHECK_ALIGNED_ACCESS_REQUIRED +# AX_FORCEINLINE() +AC_C_BIGENDIAN( + [], + AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is little-endian]), + AC_MSG_ERROR(unknown endianness), + AC_MSG_ERROR(universal endianness not supported) +) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_INLINE +AC_TYPE_SIZE_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_CHECK_FUNCS([memset]) + +dnl AM_PROG_AR +AC_PROG_LIBTOOL +dnl LT_INIT + + +AC_ARG_ENABLE(fat, +AC_HELP_STRING([--enable-fat], + [build a fat binary on systems that support it [[default=no]]]), + [case $enableval in + yes|no) ;; + *) AC_MSG_ERROR([bad value $enableval for --enable-fat, need yes or no]) ;; + esac], + [enable_fat=no] +) + +AX_CHECK_COMPILE_FLAG([-O3], [CFLAGS=-O3]) + +if test $enable_fat == "yes"; then + dnl Fat build needs compiler who knows all the possible instruction sets + AX_CHECK_COMPILE_FLAG([-msse2], [], AC_MSG_ERROR([Compiler does not know -msse2.])) + AX_CHECK_COMPILE_FLAG([-mssse3], [], AC_MSG_ERROR([Compiler does not know -mssse3.])) + AX_CHECK_COMPILE_FLAG([-msse4.1], [], AC_MSG_ERROR([Compiler does not know -msse4.1.])) + AX_CHECK_COMPILE_FLAG([-mavx], [], AC_MSG_ERROR([Compiler does not know -mavx.])) + AX_CHECK_COMPILE_FLAG([-mxop], [], AC_MSG_ERROR([Compiler does not know -mxop.])) +else + AX_EXT + CFLAGS="${CFLAGS} -march=native" +fi + +case $host_os in + *mingw*) LDFLAGS="${LDFLAGS} -no-undefined" ;; +esac + +AM_CONDITIONAL([USE_FAT], [test "$enable_fat" = "yes"]) +dnl Only move away from ref with SSSE3; SSE2 is generally slower +AM_CONDITIONAL([USE_SSE], [test "$ax_cv_have_ssse3_ext" = "yes"]) + +AC_CONFIG_FILES([Makefile + src/Makefile + ]) +AC_OUTPUT diff --git a/m4/ax_check_aligned_access_required.m4 b/m4/ax_check_aligned_access_required.m4 new file mode 100644 index 0000000..b078275 --- /dev/null +++ b/m4/ax_check_aligned_access_required.m4 @@ -0,0 +1,84 @@ +# ==================================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_aligned_access_required.html +# ==================================================================================== +# +# SYNOPSIS +# +# AC_CHECK_ALIGNED_ACCESS_REQUIRED +# +# DESCRIPTION +# +# While the x86 CPUs allow access to memory objects to be unaligned it +# happens that most of the modern designs require objects to be aligned - +# or they will fail with a buserror. That mode is quite known by +# big-endian machines (sparc, etc) however the alpha cpu is little- +# endian. +# +# The following function will test for aligned access to be required and +# set a config.h define HAVE_ALIGNED_ACCESS_REQUIRED (name derived by +# standard usage). Structures loaded from a file (or mmapped to memory) +# should be accessed per-byte in that case to avoid segfault type errors. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 7 + +AC_DEFUN([AX_CHECK_ALIGNED_ACCESS_REQUIRED], +[AC_CACHE_CHECK([if pointers to integers require aligned access], + [ax_cv_have_aligned_access_required], + [AC_TRY_RUN([ +#include +#include + +int main() +{ + char* string = malloc(40); + int i; + for (i=0; i < 40; i++) string[[i]] = i; + { + void* s = string; + int* p = s+1; + int* q = s+2; + + if (*p == *q) { return 1; } + } + return 0; +} + ], + [ax_cv_have_aligned_access_required=yes], + [ax_cv_have_aligned_access_required=no], + [ax_cv_have_aligned_access_required=no]) + ]) +if test "$ax_cv_have_aligned_access_required" = yes ; then + AC_DEFINE([HAVE_ALIGNED_ACCESS_REQUIRED], [1], + [Define if pointers to integers require aligned access]) +fi +]) diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 new file mode 100644 index 0000000..af1b556 --- /dev/null +++ b/m4/ax_check_compile_flag.m4 @@ -0,0 +1,73 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x)]])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4 new file mode 100644 index 0000000..e2d0d36 --- /dev/null +++ b/m4/ax_check_link_flag.m4 @@ -0,0 +1,71 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the linker or gives an error. +# (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_CHECK_LINK_FLAG], +[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl +AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $4 $1" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + LDFLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_LINK_FLAGS diff --git a/m4/ax_ext.m4 b/m4/ax_ext.m4 new file mode 100644 index 0000000..aa3ae01 --- /dev/null +++ b/m4/ax_ext.m4 @@ -0,0 +1,213 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_ext.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_EXT +# +# DESCRIPTION +# +# Find supported SIMD extensions by requesting cpuid. When an SIMD +# extension is found, the -m"simdextensionname" is added to SIMD_FLAGS if +# compilator supports it. For example, if "sse2" is available, then +# "-msse2" is added to SIMD_FLAGS. +# +# This macro calls: +# +# AC_SUBST(SIMD_FLAGS) +# +# And defines: +# +# HAVE_MMX / HAVE_SSE / HAVE_SSE2 / HAVE_SSE3 / HAVE_SSSE3 / HAVE_SSE4.1 / HAVE_SSE4.2 / HAVE_AVX +# +# LICENSE +# +# Copyright (c) 2007 Christophe Tournayre +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 10 + +AC_DEFUN([AX_EXT], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + + case $host_cpu in + powerpc*) + AC_CACHE_CHECK([whether altivec is supported], [ax_cv_have_altivec_ext], + [ + if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then + if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then + ax_cv_have_altivec_ext=yes + fi + fi + ]) + + if test "$ax_cv_have_altivec_ext" = yes; then + AC_DEFINE(HAVE_ALTIVEC,,[Support Altivec instructions]) + AX_CHECK_COMPILE_FLAG(-faltivec, SIMD_FLAGS="$SIMD_FLAGS -faltivec", []) + fi + ;; + + + i[[3456]]86*|x86_64*) + + AC_REQUIRE([AX_GCC_X86_CPUID]) + + AX_GCC_X86_CPUID(0x00000001) + ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3` + edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4` + + AC_CACHE_CHECK([whether mmx is supported], [ax_cv_have_mmx_ext], + [ + ax_cv_have_mmx_ext=no + if test "$((0x$edx>>23&0x01))" = 1; then + ax_cv_have_mmx_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether sse is supported], [ax_cv_have_sse_ext], + [ + ax_cv_have_sse_ext=no + if test "$((0x$edx>>25&0x01))" = 1; then + ax_cv_have_sse_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether sse2 is supported], [ax_cv_have_sse2_ext], + [ + ax_cv_have_sse2_ext=no + if test "$((0x$edx>>26&0x01))" = 1; then + ax_cv_have_sse2_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether sse3 is supported], [ax_cv_have_sse3_ext], + [ + ax_cv_have_sse3_ext=no + if test "$((0x$ecx&0x01))" = 1; then + ax_cv_have_sse3_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether ssse3 is supported], [ax_cv_have_ssse3_ext], + [ + ax_cv_have_ssse3_ext=no + if test "$((0x$ecx>>9&0x01))" = 1; then + ax_cv_have_ssse3_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether sse4.1 is supported], [ax_cv_have_sse41_ext], + [ + ax_cv_have_sse41_ext=no + if test "$((0x$ecx>>19&0x01))" = 1; then + ax_cv_have_sse41_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether sse4.2 is supported], [ax_cv_have_sse42_ext], + [ + ax_cv_have_sse42_ext=no + if test "$((0x$ecx>>20&0x01))" = 1; then + ax_cv_have_sse42_ext=yes + fi + ]) + + AC_CACHE_CHECK([whether avx is supported], [ax_cv_have_avx_ext], + [ + ax_cv_have_avx_ext=no + if test "$((0x$ecx>>28&0x01))" = 1; then + ax_cv_have_avx_ext=yes + fi + ]) + + if test "$ax_cv_have_mmx_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-mmmx, ax_cv_support_mmx_ext=yes, []) + if test x"$ax_cv_support_mmx_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -mmmx" + AC_DEFINE(HAVE_MMX,,[Support mmx instructions]) + else + AC_MSG_WARN([Your processor support mmx instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_sse_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-msse, ax_cv_support_sse_ext=yes, []) + if test x"$ax_cv_support_sse_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -msse" + AC_DEFINE(HAVE_SSE,,[Support SSE (Streaming SIMD Extensions) instructions]) + else + AC_MSG_WARN([Your processor support sse instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_sse2_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-msse2, ax_cv_support_sse2_ext=yes, []) + if test x"$ax_cv_support_sse2_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -msse2" + AC_DEFINE(HAVE_SSE2,,[Support SSE2 (Streaming SIMD Extensions 2) instructions]) + else + AC_MSG_WARN([Your processor support sse2 instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_sse3_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-msse3, ax_cv_support_sse3_ext=yes, []) + if test x"$ax_cv_support_sse3_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -msse3" + AC_DEFINE(HAVE_SSE3,,[Support SSE3 (Streaming SIMD Extensions 3) instructions]) + else + AC_MSG_WARN([Your processor support sse3 instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_ssse3_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-mssse3, ax_cv_support_ssse3_ext=yes, []) + if test x"$ax_cv_support_ssse3_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -mssse3" + AC_DEFINE(HAVE_SSSE3,,[Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions]) + else + AC_MSG_WARN([Your processor support ssse3 instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_sse41_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-msse4.1, ax_cv_support_sse41_ext=yes, []) + if test x"$ax_cv_support_sse41_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -msse4.1" + AC_DEFINE(HAVE_SSE4_1,,[Support SSSE4.1 (Streaming SIMD Extensions 4.1) instructions]) + else + AC_MSG_WARN([Your processor support sse4.1 instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_sse42_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-msse4.2, ax_cv_support_sse42_ext=yes, []) + if test x"$ax_cv_support_sse42_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -msse4.2" + AC_DEFINE(HAVE_SSE4_2,,[Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions]) + else + AC_MSG_WARN([Your processor support sse4.2 instructions but not your compilor, can you try another compilor ?]) + fi + fi + + if test "$ax_cv_have_avx_ext" = yes; then + AX_CHECK_COMPILE_FLAG(-mavx, ax_cv_support_avx_ext=yes, []) + if test x"$ax_cv_support_avx_ext" = x"yes"; then + SIMD_FLAGS="$SIMD_FLAGS -mavx" + AC_DEFINE(HAVE_AVX,,[Support AVX (Advanced Vector Extensions) instructions]) + else + AC_MSG_WARN([Your processor support avx instructions but not your compilor, can you try another compilor ?]) + fi + fi + + ;; + esac + + AC_SUBST(SIMD_FLAGS) +]) diff --git a/m4/ax_forceinline.m4 b/m4/ax_forceinline.m4 new file mode 100644 index 0000000..fa91783 --- /dev/null +++ b/m4/ax_forceinline.m4 @@ -0,0 +1,60 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_forceinline.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_FORCEINLINE() +# +# DESCRIPTION +# +# Provides a test for C compiler support of forced inlining. If usable, +# #define FORCEINLINE to the appropriate force inline keyword. Otherwise +# #define FORCEINLINE to be 'inline'. +# +# LICENSE +# +# Copyright (c) 2008 Alan Woodland +# Copyright (c) 2009 Rhys Ulerich +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_FORCEINLINE], [ + AC_LANG_PUSH([C]) + AC_MSG_CHECKING(for forced inline keyword) + AC_CACHE_VAL(ac_cv_forceinline, [ + ax_forceinline_keywords="__forceinline inline none" + for ax_forceinline_keyword in $ax_forceinline_keywords; do + case $ax_forceinline_keyword in + none) ac_cv_forceinline=none ; break ;; + *) + AC_TRY_COMPILE( + [#include + ] $ax_forceinline_keyword [ + static void + foo(void) { + exit(1); + }], + [], + [ac_cv_forceinline=$ax_forceinline_keyword ; break], + ac_cv_forceinline=none + ) + esac + done +]) + + if test "$ac_cv_forceinline" = "none"; then + ax_forceinline_keyword= + else + ax_forceinline_keyword=$ac_cv_forceinline + fi + AC_DEFINE_UNQUOTED([FORCEINLINE],$ax_forceinline_keyword, + [The most forceful inline keyword known by the compiler]) + AC_MSG_RESULT($ac_cv_forceinline) + AC_LANG_POP([C]) +]) diff --git a/m4/ax_gcc_x86_cpuid.m4 b/m4/ax_gcc_x86_cpuid.m4 new file mode 100644 index 0000000..7d46fee --- /dev/null +++ b/m4/ax_gcc_x86_cpuid.m4 @@ -0,0 +1,79 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_X86_CPUID(OP) +# +# DESCRIPTION +# +# On Pentium and later x86 processors, with gcc or a compiler that has a +# compatible syntax for inline assembly instructions, run a small program +# that executes the cpuid instruction with input OP. This can be used to +# detect the CPU type. +# +# On output, the values of the eax, ebx, ecx, and edx registers are stored +# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable +# ax_cv_gcc_x86_cpuid_OP. +# +# If the cpuid instruction fails (because you are running a +# cross-compiler, or because you are not using gcc, or because you are on +# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP +# is set to the string "unknown". +# +# This macro mainly exists to be used in AX_GCC_ARCHFLAG. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2008 Matteo Frigo +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 7 + +AC_DEFUN([AX_GCC_X86_CPUID], +[AC_REQUIRE([AC_PROG_CC]) +AC_LANG_PUSH([C]) +AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, + [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ + int op = $1, eax, ebx, ecx, edx; + FILE *f; + __asm__("cpuid" + : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) + : "a" (op)); + f = fopen("conftest_cpuid", "w"); if (!f) return 1; + fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); + fclose(f); + return 0; +])], + [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], + [ax_cv_gcc_x86_cpuid_$1=unknown])]) +AC_LANG_POP([C]) +]) diff --git a/m4/libtool.m4 b/m4/libtool.m4 new file mode 100644 index 0000000..f12cfdf --- /dev/null +++ b/m4/libtool.m4 @@ -0,0 +1,7992 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 new file mode 100644 index 0000000..5d9acd8 --- /dev/null +++ b/m4/ltoptions.m4 @@ -0,0 +1,384 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 new file mode 100644 index 0000000..07a8602 --- /dev/null +++ b/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c573da9 --- /dev/null +++ b/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..215a434 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,152 @@ +# BLAKE2 reference source code package - optimized C implementations +# +# Written in 2012 by Samuel Neves +# +# To the extent possible under law, the author(s) have dedicated all copyright +# and related and neighboring rights to this software to the public domain +# worldwide. This software is distributed without any warranty. +# +# You should have received a copy of the CC0 Public Domain Dedication along with +# this software. If not, see . + +EXTRA_DIST = + +CPPFLAGS += $(LTDLINCL) $(OPENMP_CFLAGS) +CFLAGS += $(OPENMP_CFLAGS) +LDFLAGS += -version-info $(B2_LIBRARY_VERSION) + +lib_LTLIBRARIES = libb2.la +libb2_la_LIBADD = # -lgomp -lpthread +libb2_la_CPPFLAGS = -DSUFFIX= \ + $(LTDLINCL) \ + ${top_builddir}/src/ + +include_HEADERS = blake2.h + +if USE_FAT +noinst_LTLIBRARIES = libblake2b_ref.la \ + libblake2b_sse2.la \ + libblake2b_ssse3.la \ + libblake2b_sse41.la \ + libblake2b_avx.la \ + libblake2b_xop.la \ + libblake2s_ref.la \ + libblake2s_sse2.la \ + libblake2s_ssse3.la \ + libblake2s_sse41.la \ + libblake2s_avx.la \ + libblake2s_xop.la + +libb2_la_SOURCES = blake2-dispatch.c blake2sp.c blake2bp.c +libb2_la_LIBADD += libblake2b_ref.la \ + libblake2b_sse2.la \ + libblake2b_ssse3.la \ + libblake2b_sse41.la \ + libblake2b_avx.la \ + libblake2b_xop.la \ + libblake2s_ref.la \ + libblake2s_sse2.la \ + libblake2s_ssse3.la \ + libblake2s_sse41.la \ + libblake2s_avx.la \ + libblake2s_xop.la + + +libblake2b_ref_la_SOURCES = blake2b-ref.c +libblake2b_ref_la_CPPFLAGS = -DSUFFIX=_ref +libblake2b_ref_la_CFLAGS = + +libblake2b_sse2_la_SOURCES = blake2b.c +libblake2b_sse2_la_CPPFLAGS = -DSUFFIX=_sse2 +libblake2b_sse2_la_CFLAGS = -msse2 + +libblake2b_ssse3_la_SOURCES = blake2b.c +libblake2b_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3 +libblake2b_ssse3_la_CFLAGS = -msse2 -mssse3 + +libblake2b_sse41_la_SOURCES = blake2b.c +libblake2b_sse41_la_CPPFLAGS = -DSUFFIX=_sse41 +libblake2b_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1 + +libblake2b_avx_la_SOURCES = blake2b.c +libblake2b_avx_la_CPPFLAGS = -DSUFFIX=_avx +libblake2b_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx + +libblake2b_xop_la_SOURCES = blake2b.c +libblake2b_xop_la_CPPFLAGS = -DSUFFIX=_xop +libblake2b_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop + + +libblake2s_ref_la_SOURCES = blake2s-ref.c +libblake2s_ref_la_CPPFLAGS = -DSUFFIX=_ref +libblake2s_ref_la_CFLAGS = + +libblake2s_sse2_la_SOURCES = blake2s.c +libblake2s_sse2_la_CPPFLAGS = -DSUFFIX=_sse2 +libblake2s_sse2_la_CFLAGS = -msse2 + +libblake2s_ssse3_la_SOURCES = blake2s.c +libblake2s_ssse3_la_CPPFLAGS = -DSUFFIX=_ssse3 +libblake2s_ssse3_la_CFLAGS = -msse2 -mssse3 + +libblake2s_sse41_la_SOURCES = blake2s.c +libblake2s_sse41_la_CPPFLAGS = -DSUFFIX=_sse41 +libblake2s_sse41_la_CFLAGS = -msse2 -mssse3 -msse4.1 + +libblake2s_avx_la_SOURCES = blake2s.c +libblake2s_avx_la_CPPFLAGS = -DSUFFIX=_avx +libblake2s_avx_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx + +libblake2s_xop_la_SOURCES = blake2s.c +libblake2s_xop_la_CPPFLAGS = -DSUFFIX=_xop +libblake2s_xop_la_CFLAGS = -msse2 -mssse3 -msse4.1 -mavx -mxop + +else + +if USE_SSE +libb2_la_SOURCES = blake2sp.c \ + blake2bp.c \ + blake2s.c \ + blake2b.c \ + blake2-impl.h \ + blake2-config.h \ + blake2s-round.h \ + blake2b-round.h \ + blake2s-load-xop.h \ + blake2s-load-sse41.h \ + blake2s-load-sse2.h \ + blake2b-load-sse41.h \ + blake2b-load-sse2.h +else +libb2_la_SOURCES = blake2s-ref.c \ + blake2b-ref.c \ + blake2.h \ + blake2-impl.h \ + blake2sp.c \ + blake2bp.c \ + blake2-kat.h +endif +endif + +TESTS_TARGETS = blake2s-test \ + blake2b-test \ + blake2sp-test \ + blake2bp-test + +check_PROGRAMS = $(TESTS_TARGETS) +TESTS = $(TESTS_TARGETS) + +TESTS_LDADD = ${top_builddir}/src/libb2.la + +blake2s_test_SOURCE = blake2s-test.c blake2-kat.h +blake2s_test_LDADD = $(TESTS_LDADD) + +blake2b_test_SOURCE = blake2b-test.c blake2-kat.h +blake2b_test_LDADD = $(TESTS_LDADD) + +blake2sp_test_SOURCE = blake2sp-test.c blake2-kat.h +blake2sp_test_LDADD = $(TESTS_LDADD) + +blake2bp_test_SOURCE = blake2bp-test.c blake2-kat.h +blake2bp_test_LDADD = $(TESTS_LDADD) + diff --git a/src/blake2-config.h b/src/blake2-config.h new file mode 100644 index 0000000..f5dd6fa --- /dev/null +++ b/src/blake2-config.h @@ -0,0 +1,71 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2_CONFIG_H__ +#define __BLAKE2_CONFIG_H__ + +#if defined(__SSE2__) +#define HAVE_SSE2 +#endif + +#if defined(__SSSE3__) +#define HAVE_SSSE3 +#endif + +#if defined(__SSE4_1__) +#define HAVE_SSE4_1 +#endif + +#if defined(__AVX__) +#define HAVE_AVX +#endif + +#if defined(__XOP__) +#define HAVE_XOP +#endif + + +#ifdef HAVE_AVX2 +#ifndef HAVE_AVX +#define HAVE_AVX +#endif +#endif + +#ifdef HAVE_XOP +#ifndef HAVE_AVX +#define HAVE_AVX +#endif +#endif + +#ifdef HAVE_AVX +#ifndef HAVE_SSE4_1 +#define HAVE_SSE4_1 +#endif +#endif + +#ifdef HAVE_SSE41 +#ifndef HAVE_SSSE3 +#define HAVE_SSSE3 +#endif +#endif + +#ifdef HAVE_SSSE3 +#define HAVE_SSE2 +#endif + +#if !defined(HAVE_SSE2) +#error "This code requires at least SSE2." +#endif + +#endif + diff --git a/src/blake2-dispatch.c b/src/blake2-dispatch.c new file mode 100644 index 0000000..19fdcd5 --- /dev/null +++ b/src/blake2-dispatch.c @@ -0,0 +1,560 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#include +#if defined(WIN32) +#include +#endif +#include "blake2.h" + +#if defined(__x86_64__) || defined(__i386__) || defined(_M_IX86) || defined(_M_X64) +#define HAVE_X86 +#endif + +typedef enum +{ + NONE = 0, +#if defined(HAVE_X86) + SSE2 = 1, + SSSE3 = 2, + SSE41 = 3, + AVX = 4, + XOP = 5, + /* AVX2 = 6, */ +#endif +} cpu_feature_t; + +static const char feature_names[][8] = +{ + "none", +#if defined(HAVE_X86) + "sse2", + "ssse3", + "sse41", + "avx", + "xop", + /* "avx2" */ +#endif +}; + +#if defined(HAVE_X86) + +#if defined(__GNUC__) +static inline void cpuid( uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx ) +{ + __asm__ __volatile__( +#if defined(__i386__) /* This is needed for -fPIC to work on i386 */ + "movl %%ebx, %%esi\n\t" +#endif + "cpuid\n\t" +#if defined(__i386__) + "xchgl %%ebx, %%esi\n\t" + : "=a"( *eax ), "=S"( *ebx ), "=c"( *ecx ), "=d"( *edx ) : "a"( *eax ) ); +#else + : "=a"( *eax ), "=b"( *ebx ), "=c"( *ecx ), "=d"( *edx ) : "a"( *eax ) ); +#endif +} +#elif defined(_MSC_VER) +#include +static inline void cpuid( uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx ) +{ + int regs[4]; + __cpuid( regs, *eax ); + *eax = regs[0]; + *ebx = regs[1]; + *ecx = regs[2]; + *edx = regs[3]; +} +#else +#error "Don't know how to call cpuid on this compiler!" +#endif + +#endif /* HAVE_X86 */ + +static inline cpu_feature_t get_cpu_features( void ) +{ +#if defined(HAVE_X86) + static volatile int initialized = 0; + static cpu_feature_t feature = NONE; // Safe default + uint32_t eax, ecx, edx, ebx; + + if( initialized ) + return feature; + + eax = 1; + cpuid( &eax, &ebx, &ecx, &edx ); + + if( 1 & ( edx >> 26 ) ) + feature = SSE2; + + if( 1 & ( ecx >> 9 ) ) + feature = SSSE3; + + if( 1 & ( ecx >> 19 ) ) + feature = SSE41; + +#if defined(WIN32) /* Work around the fact that Windows <7 does NOT support AVX... */ + if( IsProcessorFeaturePresent(17) ) /* Some environments don't know about PF_XSAVE_ENABLED */ +#endif + { + if( 1 & ( ecx >> 28 ) ) + feature = AVX; + + + eax = 0x80000001; + cpuid( &eax, &ebx, &ecx, &edx ); + + if( 1 & ( ecx >> 11 ) ) + feature = XOP; + } + + /* For future architectures */ + /* + eax = 7; ecx = 0; + cpuid(&eax, &ebx, &ecx, &edx); + + if(1&(ebx >> 5)) + feature = AVX2; + */ + /* fprintf( stderr, "Using %s engine\n", feature_names[feature] ); */ + initialized = 1; + return feature; +#else + return NONE; +#endif +} + + + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2b_init_ref( blake2b_state *S, size_t outlen ); + int blake2b_init_key_ref( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_ref( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_ref( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_ref( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_ref( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + +#if defined(HAVE_X86) + + int blake2b_init_sse2( blake2b_state *S, size_t outlen ); + int blake2b_init_key_sse2( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_sse2( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_sse2( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_sse2( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_sse2( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2b_init_ssse3( blake2b_state *S, size_t outlen ); + int blake2b_init_key_ssse3( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_ssse3( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_ssse3( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_ssse3( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_ssse3( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2b_init_sse41( blake2b_state *S, size_t outlen ); + int blake2b_init_key_sse41( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_sse41( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_sse41( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_sse41( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_sse41( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2b_init_avx( blake2b_state *S, size_t outlen ); + int blake2b_init_key_avx( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_avx( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_avx( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_avx( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_avx( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2b_init_xop( blake2b_state *S, size_t outlen ); + int blake2b_init_key_xop( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_xop( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_xop( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_xop( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_xop( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + +#endif /* HAVE_X86 */ + + int blake2s_init_ref( blake2s_state *S, size_t outlen ); + int blake2s_init_key_ref( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_ref( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_ref( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_ref( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_ref( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + +#if defined(HAVE_X86) + + int blake2s_init_sse2( blake2s_state *S, size_t outlen ); + int blake2s_init_key_sse2( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_sse2( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_sse2( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_sse2( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_sse2( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2s_init_ssse3( blake2s_state *S, size_t outlen ); + int blake2s_init_key_ssse3( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_ssse3( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_ssse3( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_ssse3( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_ssse3( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2s_init_sse41( blake2s_state *S, size_t outlen ); + int blake2s_init_key_sse41( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_sse41( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_sse41( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_sse41( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_sse41( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2s_init_avx( blake2s_state *S, size_t outlen ); + int blake2s_init_key_avx( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_avx( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_avx( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_avx( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_avx( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2s_init_xop( blake2s_state *S, size_t outlen ); + int blake2s_init_key_xop( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_xop( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_xop( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_xop( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_xop( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + +#endif /* HAVE_X86 */ + +#if defined(__cplusplus) +} +#endif + +typedef int ( *blake2b_init_fn )( blake2b_state *, size_t ); +typedef int ( *blake2b_init_key_fn )( blake2b_state *, size_t, const void *, size_t ); +typedef int ( *blake2b_init_param_fn )( blake2b_state *, const blake2b_param * ); +typedef int ( *blake2b_update_fn )( blake2b_state *, const uint8_t *, size_t ); +typedef int ( *blake2b_final_fn )( blake2b_state *, uint8_t *, size_t ); +typedef int ( *blake2b_fn )( uint8_t *, const void *, const void *, size_t, size_t, size_t ); + +typedef int ( *blake2s_init_fn )( blake2s_state *, size_t ); +typedef int ( *blake2s_init_key_fn )( blake2s_state *, size_t, const void *, size_t ); +typedef int ( *blake2s_init_param_fn )( blake2s_state *, const blake2s_param * ); +typedef int ( *blake2s_update_fn )( blake2s_state *, const uint8_t *, size_t ); +typedef int ( *blake2s_final_fn )( blake2s_state *, uint8_t *, size_t ); +typedef int ( *blake2s_fn )( uint8_t *, const void *, const void *, size_t, size_t, size_t ); + +static const blake2b_init_fn blake2b_init_table[] = +{ + blake2b_init_ref, +#if defined(HAVE_X86) + blake2b_init_sse2, + blake2b_init_ssse3, + blake2b_init_sse41, + blake2b_init_avx, + blake2b_init_xop +#endif +}; + +static const blake2b_init_key_fn blake2b_init_key_table[] = +{ + blake2b_init_key_ref, +#if defined(HAVE_X86) + blake2b_init_key_sse2, + blake2b_init_key_ssse3, + blake2b_init_key_sse41, + blake2b_init_key_avx, + blake2b_init_key_xop +#endif +}; + +static const blake2b_init_param_fn blake2b_init_param_table[] = +{ + blake2b_init_param_ref, +#if defined(HAVE_X86) + blake2b_init_param_sse2, + blake2b_init_param_ssse3, + blake2b_init_param_sse41, + blake2b_init_param_avx, + blake2b_init_param_xop +#endif +}; + +static const blake2b_update_fn blake2b_update_table[] = +{ + blake2b_update_ref, +#if defined(HAVE_X86) + blake2b_update_sse2, + blake2b_update_ssse3, + blake2b_update_sse41, + blake2b_update_avx, + blake2b_update_xop +#endif +}; + +static const blake2b_final_fn blake2b_final_table[] = +{ + blake2b_final_ref, +#if defined(HAVE_X86) + blake2b_final_sse2, + blake2b_final_ssse3, + blake2b_final_sse41, + blake2b_final_avx, + blake2b_final_xop +#endif +}; + +static const blake2b_fn blake2b_table[] = +{ + blake2b_ref, +#if defined(HAVE_X86) + blake2b_sse2, + blake2b_ssse3, + blake2b_sse41, + blake2b_avx, + blake2b_xop +#endif +}; + +static const blake2s_init_fn blake2s_init_table[] = +{ + blake2s_init_ref, +#if defined(HAVE_X86) + blake2s_init_sse2, + blake2s_init_ssse3, + blake2s_init_sse41, + blake2s_init_avx, + blake2s_init_xop +#endif +}; + +static const blake2s_init_key_fn blake2s_init_key_table[] = +{ + blake2s_init_key_ref, +#if defined(HAVE_X86) + blake2s_init_key_sse2, + blake2s_init_key_ssse3, + blake2s_init_key_sse41, + blake2s_init_key_avx, + blake2s_init_key_xop +#endif +}; + +static const blake2s_init_param_fn blake2s_init_param_table[] = +{ + blake2s_init_param_ref, +#if defined(HAVE_X86) + blake2s_init_param_sse2, + blake2s_init_param_ssse3, + blake2s_init_param_sse41, + blake2s_init_param_avx, + blake2s_init_param_xop +#endif +}; + +static const blake2s_update_fn blake2s_update_table[] = +{ + blake2s_update_ref, +#if defined(HAVE_X86) + blake2s_update_sse2, + blake2s_update_ssse3, + blake2s_update_sse41, + blake2s_update_avx, + blake2s_update_xop +#endif +}; + +static const blake2s_final_fn blake2s_final_table[] = +{ + blake2s_final_ref, +#if defined(HAVE_X86) + blake2s_final_sse2, + blake2s_final_ssse3, + blake2s_final_sse41, + blake2s_final_avx, + blake2s_final_xop +#endif +}; + +static const blake2s_fn blake2s_table[] = +{ + blake2s_ref, +#if defined(HAVE_X86) + blake2s_sse2, + blake2s_ssse3, + blake2s_sse41, + blake2s_avx, + blake2s_xop +#endif +}; + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2b_init_dispatch( blake2b_state *S, size_t outlen ); + int blake2b_init_key_dispatch( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_init_param_dispatch( blake2b_state *S, const blake2b_param *P ); + int blake2b_update_dispatch( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final_dispatch( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b_dispatch( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + int blake2s_init_dispatch( blake2s_state *S, size_t outlen ); + int blake2s_init_key_dispatch( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_init_param_dispatch( blake2s_state *S, const blake2s_param *P ); + int blake2s_update_dispatch( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final_dispatch( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s_dispatch( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); +#if defined(__cplusplus) +} +#endif + +static blake2b_init_fn blake2b_init_ptr = blake2b_init_dispatch; +static blake2b_init_key_fn blake2b_init_key_ptr = blake2b_init_key_dispatch; +static blake2b_init_param_fn blake2b_init_param_ptr = blake2b_init_param_dispatch; +static blake2b_update_fn blake2b_update_ptr = blake2b_update_dispatch; +static blake2b_final_fn blake2b_final_ptr = blake2b_final_dispatch; +static blake2b_fn blake2b_ptr = blake2b_dispatch; + +static blake2s_init_fn blake2s_init_ptr = blake2s_init_dispatch; +static blake2s_init_key_fn blake2s_init_key_ptr = blake2s_init_key_dispatch; +static blake2s_init_param_fn blake2s_init_param_ptr = blake2s_init_param_dispatch; +static blake2s_update_fn blake2s_update_ptr = blake2s_update_dispatch; +static blake2s_final_fn blake2s_final_ptr = blake2s_final_dispatch; +static blake2s_fn blake2s_ptr = blake2s_dispatch; + +int blake2b_init_dispatch( blake2b_state *S, size_t outlen ) +{ + blake2b_init_ptr = blake2b_init_table[get_cpu_features()]; + return blake2b_init_ptr( S, outlen ); +} + +int blake2b_init_key_dispatch( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) +{ + blake2b_init_key_ptr = blake2b_init_key_table[get_cpu_features()]; + return blake2b_init_key_ptr( S, outlen, key, keylen ); +} + +int blake2b_init_param_dispatch( blake2b_state *S, const blake2b_param *P ) +{ + blake2b_init_param_ptr = blake2b_init_param_table[get_cpu_features()]; + return blake2b_init_param_ptr( S, P ); +} + +int blake2b_update_dispatch( blake2b_state *S, const uint8_t *in, size_t inlen ) +{ + blake2b_update_ptr = blake2b_update_table[get_cpu_features()]; + return blake2b_update_ptr( S, in, inlen ); +} + +int blake2b_final_dispatch( blake2b_state *S, uint8_t *out, size_t outlen ) +{ + blake2b_final_ptr = blake2b_final_table[get_cpu_features()]; + return blake2b_final_ptr( S, out, outlen ); +} + +int blake2b_dispatch( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2b_ptr = blake2b_table[get_cpu_features()]; + return blake2b_ptr( out, in, key, outlen, inlen, keylen ); +} + +EXPORT_DLL int blake2b_init( blake2b_state *S, size_t outlen ) +{ + return blake2b_init_ptr( S, outlen ); +} + +EXPORT_DLL int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) +{ + return blake2b_init_key_ptr( S, outlen, key, keylen ); +} + +EXPORT_DLL int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) +{ + return blake2b_init_param_ptr( S, P ); +} + +EXPORT_DLL int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ) +{ + return blake2b_update_ptr( S, in, inlen ); +} + +EXPORT_DLL int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ) +{ + return blake2b_final_ptr( S, out, outlen ); +} + +EXPORT_DLL int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + return blake2b_ptr( out, in, key, outlen, inlen, keylen ); +} + +int blake2s_init_dispatch( blake2s_state *S, size_t outlen ) +{ + blake2s_init_ptr = blake2s_init_table[get_cpu_features()]; + return blake2s_init_ptr( S, outlen ); +} + +int blake2s_init_key_dispatch( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) +{ + blake2s_init_key_ptr = blake2s_init_key_table[get_cpu_features()]; + return blake2s_init_key_ptr( S, outlen, key, keylen ); +} + +int blake2s_init_param_dispatch( blake2s_state *S, const blake2s_param *P ) +{ + blake2s_init_param_ptr = blake2s_init_param_table[get_cpu_features()]; + return blake2s_init_param_ptr( S, P ); +} + +int blake2s_update_dispatch( blake2s_state *S, const uint8_t *in, size_t inlen ) +{ + blake2s_update_ptr = blake2s_update_table[get_cpu_features()]; + return blake2s_update_ptr( S, in, inlen ); +} + +int blake2s_final_dispatch( blake2s_state *S, uint8_t *out, size_t outlen ) +{ + blake2s_final_ptr = blake2s_final_table[get_cpu_features()]; + return blake2s_final_ptr( S, out, outlen ); +} + +int blake2s_dispatch( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2s_ptr = blake2s_table[get_cpu_features()]; + return blake2s_ptr( out, in, key, outlen, inlen, keylen ); +} + +EXPORT_DLL int blake2s_init( blake2s_state *S, size_t outlen ) +{ + return blake2s_init_ptr( S, outlen ); +} + +EXPORT_DLL int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) +{ + return blake2s_init_key_ptr( S, outlen, key, keylen ); +} + +EXPORT_DLL int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) +{ + return blake2s_init_param_ptr( S, P ); +} + +EXPORT_DLL int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ) +{ + return blake2s_update_ptr( S, in, inlen ); +} + +EXPORT_DLL int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ) +{ + return blake2s_final_ptr( S, out, outlen ); +} + +EXPORT_DLL int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + return blake2s_ptr( out, in, key, outlen, inlen, keylen ); +} + diff --git a/src/blake2-impl.h b/src/blake2-impl.h new file mode 100644 index 0000000..3a2c186 --- /dev/null +++ b/src/blake2-impl.h @@ -0,0 +1,139 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2_IMPL_H__ +#define __BLAKE2_IMPL_H__ + +#include +#include +#include "config.h" + +#define BLAKE2_IMPL_CAT(x,y) x ## y +#define BLAKE2_IMPL_EVAL(x,y) BLAKE2_IMPL_CAT(x,y) +#define BLAKE2_IMPL_NAME(fun) BLAKE2_IMPL_EVAL(fun, SUFFIX) + +static inline uint32_t load32( const void *src ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) && !defined(HAVE_ALIGNED_ACCESS_REQUIRED) + return *( uint32_t * )( src ); +#else + const uint8_t *p = ( uint8_t * )src; + uint32_t w = *p++; + w |= ( uint32_t )( *p++ ) << 8; + w |= ( uint32_t )( *p++ ) << 16; + w |= ( uint32_t )( *p++ ) << 24; + return w; +#endif +} + +static inline uint64_t load64( const void *src ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) && !defined(HAVE_ALIGNED_ACCESS_REQUIRED) + return *( uint64_t * )( src ); +#else + const uint8_t *p = ( uint8_t * )src; + uint64_t w = *p++; + w |= ( uint64_t )( *p++ ) << 8; + w |= ( uint64_t )( *p++ ) << 16; + w |= ( uint64_t )( *p++ ) << 24; + w |= ( uint64_t )( *p++ ) << 32; + w |= ( uint64_t )( *p++ ) << 40; + w |= ( uint64_t )( *p++ ) << 48; + w |= ( uint64_t )( *p++ ) << 56; + return w; +#endif +} + +static inline void store32( void *dst, uint32_t w ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) && !defined(HAVE_ALIGNED_ACCESS_REQUIRED) + *( uint32_t * )( dst ) = w; +#else + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +#endif +} + +static inline void store64( void *dst, uint64_t w ) +{ +#if defined(NATIVE_LITTLE_ENDIAN) && !defined(HAVE_ALIGNED_ACCESS_REQUIRED) + *( uint64_t * )( dst ) = w; +#else + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +#endif +} + +static inline uint64_t load48( const void *src ) +{ + const uint8_t *p = ( const uint8_t * )src; + uint64_t w = *p++; + w |= ( uint64_t )( *p++ ) << 8; + w |= ( uint64_t )( *p++ ) << 16; + w |= ( uint64_t )( *p++ ) << 24; + w |= ( uint64_t )( *p++ ) << 32; + w |= ( uint64_t )( *p++ ) << 40; + return w; +} + +static inline void store48( void *dst, uint64_t w ) +{ + uint8_t *p = ( uint8_t * )dst; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; w >>= 8; + *p++ = ( uint8_t )w; +} + +static inline uint32_t rotl32( const uint32_t w, const unsigned c ) +{ + return ( w << c ) | ( w >> ( 32 - c ) ); +} + +static inline uint64_t rotl64( const uint64_t w, const unsigned c ) +{ + return ( w << c ) | ( w >> ( 64 - c ) ); +} + +static inline uint32_t rotr32( const uint32_t w, const unsigned c ) +{ + return ( w >> c ) | ( w << ( 32 - c ) ); +} + +static inline uint64_t rotr64( const uint64_t w, const unsigned c ) +{ + return ( w >> c ) | ( w << ( 64 - c ) ); +} + +/* prevents compiler optimizing out memset() */ +static inline void secure_zero_memory( void *v, size_t n ) +{ + volatile uint8_t *p = ( volatile uint8_t * )v; + + while( n-- ) *p++ = 0; +} + +#endif + diff --git a/src/blake2-kat.h b/src/blake2-kat.h new file mode 100644 index 0000000..3d20727 --- /dev/null +++ b/src/blake2-kat.h @@ -0,0 +1,16467 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2_KAT_H__ +#define __BLAKE2_KAT_H__ + + +#include + +#define KAT_LENGTH 256 + + + +static const uint8_t blake2s_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] = +{ + { + 0x69, 0x21, 0x7A, 0x30, 0x79, 0x90, 0x80, 0x94, + 0xE1, 0x11, 0x21, 0xD0, 0x42, 0x35, 0x4A, 0x7C, + 0x1F, 0x55, 0xB6, 0x48, 0x2C, 0xA1, 0xA5, 0x1E, + 0x1B, 0x25, 0x0D, 0xFD, 0x1E, 0xD0, 0xEE, 0xF9 + }, + { + 0xE3, 0x4D, 0x74, 0xDB, 0xAF, 0x4F, 0xF4, 0xC6, + 0xAB, 0xD8, 0x71, 0xCC, 0x22, 0x04, 0x51, 0xD2, + 0xEA, 0x26, 0x48, 0x84, 0x6C, 0x77, 0x57, 0xFB, + 0xAA, 0xC8, 0x2F, 0xE5, 0x1A, 0xD6, 0x4B, 0xEA + }, + { + 0xDD, 0xAD, 0x9A, 0xB1, 0x5D, 0xAC, 0x45, 0x49, + 0xBA, 0x42, 0xF4, 0x9D, 0x26, 0x24, 0x96, 0xBE, + 0xF6, 0xC0, 0xBA, 0xE1, 0xDD, 0x34, 0x2A, 0x88, + 0x08, 0xF8, 0xEA, 0x26, 0x7C, 0x6E, 0x21, 0x0C + }, + { + 0xE8, 0xF9, 0x1C, 0x6E, 0xF2, 0x32, 0xA0, 0x41, + 0x45, 0x2A, 0xB0, 0xE1, 0x49, 0x07, 0x0C, 0xDD, + 0x7D, 0xD1, 0x76, 0x9E, 0x75, 0xB3, 0xA5, 0x92, + 0x1B, 0xE3, 0x78, 0x76, 0xC4, 0x5C, 0x99, 0x00 + }, + { + 0x0C, 0xC7, 0x0E, 0x00, 0x34, 0x8B, 0x86, 0xBA, + 0x29, 0x44, 0xD0, 0xC3, 0x20, 0x38, 0xB2, 0x5C, + 0x55, 0x58, 0x4F, 0x90, 0xDF, 0x23, 0x04, 0xF5, + 0x5F, 0xA3, 0x32, 0xAF, 0x5F, 0xB0, 0x1E, 0x20 + }, + { + 0xEC, 0x19, 0x64, 0x19, 0x10, 0x87, 0xA4, 0xFE, + 0x9D, 0xF1, 0xC7, 0x95, 0x34, 0x2A, 0x02, 0xFF, + 0xC1, 0x91, 0xA5, 0xB2, 0x51, 0x76, 0x48, 0x56, + 0xAE, 0x5B, 0x8B, 0x57, 0x69, 0xF0, 0xC6, 0xCD + }, + { + 0xE1, 0xFA, 0x51, 0x61, 0x8D, 0x7D, 0xF4, 0xEB, + 0x70, 0xCF, 0x0D, 0x5A, 0x9E, 0x90, 0x6F, 0x80, + 0x6E, 0x9D, 0x19, 0xF7, 0xF4, 0xF0, 0x1E, 0x3B, + 0x62, 0x12, 0x88, 0xE4, 0x12, 0x04, 0x05, 0xD6 + }, + { + 0x59, 0x80, 0x01, 0xFA, 0xFB, 0xE8, 0xF9, 0x4E, + 0xC6, 0x6D, 0xC8, 0x27, 0xD0, 0x12, 0xCF, 0xCB, + 0xBA, 0x22, 0x28, 0x56, 0x9F, 0x44, 0x8E, 0x89, + 0xEA, 0x22, 0x08, 0xC8, 0xBF, 0x76, 0x92, 0x93 + }, + { + 0xC7, 0xE8, 0x87, 0xB5, 0x46, 0x62, 0x36, 0x35, + 0xE9, 0x3E, 0x04, 0x95, 0x59, 0x8F, 0x17, 0x26, + 0x82, 0x19, 0x96, 0xC2, 0x37, 0x77, 0x05, 0xB9, + 0x3A, 0x1F, 0x63, 0x6F, 0x87, 0x2B, 0xFA, 0x2D + }, + { + 0xC3, 0x15, 0xA4, 0x37, 0xDD, 0x28, 0x06, 0x2A, + 0x77, 0x0D, 0x48, 0x19, 0x67, 0x13, 0x6B, 0x1B, + 0x5E, 0xB8, 0x8B, 0x21, 0xEE, 0x53, 0xD0, 0x32, + 0x9C, 0x58, 0x97, 0x12, 0x6E, 0x9D, 0xB0, 0x2C + }, + { + 0xBB, 0x47, 0x3D, 0xED, 0xDC, 0x05, 0x5F, 0xEA, + 0x62, 0x28, 0xF2, 0x07, 0xDA, 0x57, 0x53, 0x47, + 0xBB, 0x00, 0x40, 0x4C, 0xD3, 0x49, 0xD3, 0x8C, + 0x18, 0x02, 0x63, 0x07, 0xA2, 0x24, 0xCB, 0xFF + }, + { + 0x68, 0x7E, 0x18, 0x73, 0xA8, 0x27, 0x75, 0x91, + 0xBB, 0x33, 0xD9, 0xAD, 0xF9, 0xA1, 0x39, 0x12, + 0xEF, 0xEF, 0xE5, 0x57, 0xCA, 0xFC, 0x39, 0xA7, + 0x95, 0x26, 0x23, 0xE4, 0x72, 0x55, 0xF1, 0x6D + }, + { + 0x1A, 0xC7, 0xBA, 0x75, 0x4D, 0x6E, 0x2F, 0x94, + 0xE0, 0xE8, 0x6C, 0x46, 0xBF, 0xB2, 0x62, 0xAB, + 0xBB, 0x74, 0xF4, 0x50, 0xEF, 0x45, 0x6D, 0x6B, + 0x4D, 0x97, 0xAA, 0x80, 0xCE, 0x6D, 0xA7, 0x67 + }, + { + 0x01, 0x2C, 0x97, 0x80, 0x96, 0x14, 0x81, 0x6B, + 0x5D, 0x94, 0x94, 0x47, 0x7D, 0x4B, 0x68, 0x7D, + 0x15, 0xB9, 0x6E, 0xB6, 0x9C, 0x0E, 0x80, 0x74, + 0xA8, 0x51, 0x6F, 0x31, 0x22, 0x4B, 0x5C, 0x98 + }, + { + 0x91, 0xFF, 0xD2, 0x6C, 0xFA, 0x4D, 0xA5, 0x13, + 0x4C, 0x7E, 0xA2, 0x62, 0xF7, 0x88, 0x9C, 0x32, + 0x9F, 0x61, 0xF6, 0xA6, 0x57, 0x22, 0x5C, 0xC2, + 0x12, 0xF4, 0x00, 0x56, 0xD9, 0x86, 0xB3, 0xF4 + }, + { + 0xD9, 0x7C, 0x82, 0x8D, 0x81, 0x82, 0xA7, 0x21, + 0x80, 0xA0, 0x6A, 0x78, 0x26, 0x83, 0x30, 0x67, + 0x3F, 0x7C, 0x4E, 0x06, 0x35, 0x94, 0x7C, 0x04, + 0xC0, 0x23, 0x23, 0xFD, 0x45, 0xC0, 0xA5, 0x2D + }, + { + 0xEF, 0xC0, 0x4C, 0xDC, 0x39, 0x1C, 0x7E, 0x91, + 0x19, 0xBD, 0x38, 0x66, 0x8A, 0x53, 0x4E, 0x65, + 0xFE, 0x31, 0x03, 0x6D, 0x6A, 0x62, 0x11, 0x2E, + 0x44, 0xEB, 0xEB, 0x11, 0xF9, 0xC5, 0x70, 0x80 + }, + { + 0x99, 0x2C, 0xF5, 0xC0, 0x53, 0x44, 0x2A, 0x5F, + 0xBC, 0x4F, 0xAF, 0x58, 0x3E, 0x04, 0xE5, 0x0B, + 0xB7, 0x0D, 0x2F, 0x39, 0xFB, 0xB6, 0xA5, 0x03, + 0xF8, 0x9E, 0x56, 0xA6, 0x3E, 0x18, 0x57, 0x8A + }, + { + 0x38, 0x64, 0x0E, 0x9F, 0x21, 0x98, 0x3E, 0x67, + 0xB5, 0x39, 0xCA, 0xCC, 0xAE, 0x5E, 0xCF, 0x61, + 0x5A, 0xE2, 0x76, 0x4F, 0x75, 0xA0, 0x9C, 0x9C, + 0x59, 0xB7, 0x64, 0x83, 0xC1, 0xFB, 0xC7, 0x35 + }, + { + 0x21, 0x3D, 0xD3, 0x4C, 0x7E, 0xFE, 0x4F, 0xB2, + 0x7A, 0x6B, 0x35, 0xF6, 0xB4, 0x00, 0x0D, 0x1F, + 0xE0, 0x32, 0x81, 0xAF, 0x3C, 0x72, 0x3E, 0x5C, + 0x9F, 0x94, 0x74, 0x7A, 0x5F, 0x31, 0xCD, 0x3B + }, + { + 0xEC, 0x24, 0x6E, 0xEE, 0xB9, 0xCE, 0xD3, 0xF7, + 0xAD, 0x33, 0xED, 0x28, 0x66, 0x0D, 0xD9, 0xBB, + 0x07, 0x32, 0x51, 0x3D, 0xB4, 0xE2, 0xFA, 0x27, + 0x8B, 0x60, 0xCD, 0xE3, 0x68, 0x2A, 0x4C, 0xCD + }, + { + 0xAC, 0x9B, 0x61, 0xD4, 0x46, 0x64, 0x8C, 0x30, + 0x05, 0xD7, 0x89, 0x2B, 0xF3, 0xA8, 0x71, 0x9F, + 0x4C, 0x81, 0x81, 0xCF, 0xDC, 0xBC, 0x2B, 0x79, + 0xFE, 0xF1, 0x0A, 0x27, 0x9B, 0x91, 0x10, 0x95 + }, + { + 0x7B, 0xF8, 0xB2, 0x29, 0x59, 0xE3, 0x4E, 0x3A, + 0x43, 0xF7, 0x07, 0x92, 0x23, 0xE8, 0x3A, 0x97, + 0x54, 0x61, 0x7D, 0x39, 0x1E, 0x21, 0x3D, 0xFD, + 0x80, 0x8E, 0x41, 0xB9, 0xBE, 0xAD, 0x4C, 0xE7 + }, + { + 0x68, 0xD4, 0xB5, 0xD4, 0xFA, 0x0E, 0x30, 0x2B, + 0x64, 0xCC, 0xC5, 0xAF, 0x79, 0x29, 0x13, 0xAC, + 0x4C, 0x88, 0xEC, 0x95, 0xC0, 0x7D, 0xDF, 0x40, + 0x69, 0x42, 0x56, 0xEB, 0x88, 0xCE, 0x9F, 0x3D + }, + { + 0xB2, 0xC2, 0x42, 0x0F, 0x05, 0xF9, 0xAB, 0xE3, + 0x63, 0x15, 0x91, 0x93, 0x36, 0xB3, 0x7E, 0x4E, + 0x0F, 0xA3, 0x3F, 0xF7, 0xE7, 0x6A, 0x49, 0x27, + 0x67, 0x00, 0x6F, 0xDB, 0x5D, 0x93, 0x54, 0x62 + }, + { + 0x13, 0x4F, 0x61, 0xBB, 0xD0, 0xBB, 0xB6, 0x9A, + 0xED, 0x53, 0x43, 0x90, 0x45, 0x51, 0xA3, 0xE6, + 0xC1, 0xAA, 0x7D, 0xCD, 0xD7, 0x7E, 0x90, 0x3E, + 0x70, 0x23, 0xEB, 0x7C, 0x60, 0x32, 0x0A, 0xA7 + }, + { + 0x46, 0x93, 0xF9, 0xBF, 0xF7, 0xD4, 0xF3, 0x98, + 0x6A, 0x7D, 0x17, 0x6E, 0x6E, 0x06, 0xF7, 0x2A, + 0xD1, 0x49, 0x0D, 0x80, 0x5C, 0x99, 0xE2, 0x53, + 0x47, 0xB8, 0xDE, 0x77, 0xB4, 0xDB, 0x6D, 0x9B + }, + { + 0x85, 0x3E, 0x26, 0xF7, 0x41, 0x95, 0x3B, 0x0F, + 0xD5, 0xBD, 0xB4, 0x24, 0xE8, 0xAB, 0x9E, 0x8B, + 0x37, 0x50, 0xEA, 0xA8, 0xEF, 0x61, 0xE4, 0x79, + 0x02, 0xC9, 0x1E, 0x55, 0x4E, 0x9C, 0x73, 0xB9 + }, + { + 0xF7, 0xDE, 0x53, 0x63, 0x61, 0xAB, 0xAA, 0x0E, + 0x15, 0x81, 0x56, 0xCF, 0x0E, 0xA4, 0xF6, 0x3A, + 0x99, 0xB5, 0xE4, 0x05, 0x4F, 0x8F, 0xA4, 0xC9, + 0xD4, 0x5F, 0x62, 0x85, 0xCA, 0xD5, 0x56, 0x94 + }, + { + 0x4C, 0x23, 0x06, 0x08, 0x86, 0x0A, 0x99, 0xAE, + 0x8D, 0x7B, 0xD5, 0xC2, 0xCC, 0x17, 0xFA, 0x52, + 0x09, 0x6B, 0x9A, 0x61, 0xBE, 0xDB, 0x17, 0xCB, + 0x76, 0x17, 0x86, 0x4A, 0xD2, 0x9C, 0xA7, 0xA6 + }, + { + 0xAE, 0xB9, 0x20, 0xEA, 0x87, 0x95, 0x2D, 0xAD, + 0xB1, 0xFB, 0x75, 0x92, 0x91, 0xE3, 0x38, 0x81, + 0x39, 0xA8, 0x72, 0x86, 0x50, 0x01, 0x88, 0x6E, + 0xD8, 0x47, 0x52, 0xE9, 0x3C, 0x25, 0x0C, 0x2A + }, + { + 0xAB, 0xA4, 0xAD, 0x9B, 0x48, 0x0B, 0x9D, 0xF3, + 0xD0, 0x8C, 0xA5, 0xE8, 0x7B, 0x0C, 0x24, 0x40, + 0xD4, 0xE4, 0xEA, 0x21, 0x22, 0x4C, 0x2E, 0xB4, + 0x2C, 0xBA, 0xE4, 0x69, 0xD0, 0x89, 0xB9, 0x31 + }, + { + 0x05, 0x82, 0x56, 0x07, 0xD7, 0xFD, 0xF2, 0xD8, + 0x2E, 0xF4, 0xC3, 0xC8, 0xC2, 0xAE, 0xA9, 0x61, + 0xAD, 0x98, 0xD6, 0x0E, 0xDF, 0xF7, 0xD0, 0x18, + 0x98, 0x3E, 0x21, 0x20, 0x4C, 0x0D, 0x93, 0xD1 + }, + { + 0xA7, 0x42, 0xF8, 0xB6, 0xAF, 0x82, 0xD8, 0xA6, + 0xCA, 0x23, 0x57, 0xC5, 0xF1, 0xCF, 0x91, 0xDE, + 0xFB, 0xD0, 0x66, 0x26, 0x7D, 0x75, 0xC0, 0x48, + 0xB3, 0x52, 0x36, 0x65, 0x85, 0x02, 0x59, 0x62 + }, + { + 0x2B, 0xCA, 0xC8, 0x95, 0x99, 0x00, 0x0B, 0x42, + 0xC9, 0x5A, 0xE2, 0x38, 0x35, 0xA7, 0x13, 0x70, + 0x4E, 0xD7, 0x97, 0x89, 0xC8, 0x4F, 0xEF, 0x14, + 0x9A, 0x87, 0x4F, 0xF7, 0x33, 0xF0, 0x17, 0xA2 + }, + { + 0xAC, 0x1E, 0xD0, 0x7D, 0x04, 0x8F, 0x10, 0x5A, + 0x9E, 0x5B, 0x7A, 0xB8, 0x5B, 0x09, 0xA4, 0x92, + 0xD5, 0xBA, 0xFF, 0x14, 0xB8, 0xBF, 0xB0, 0xE9, + 0xFD, 0x78, 0x94, 0x86, 0xEE, 0xA2, 0xB9, 0x74 + }, + { + 0xE4, 0x8D, 0x0E, 0xCF, 0xAF, 0x49, 0x7D, 0x5B, + 0x27, 0xC2, 0x5D, 0x99, 0xE1, 0x56, 0xCB, 0x05, + 0x79, 0xD4, 0x40, 0xD6, 0xE3, 0x1F, 0xB6, 0x24, + 0x73, 0x69, 0x6D, 0xBF, 0x95, 0xE0, 0x10, 0xE4 + }, + { + 0x12, 0xA9, 0x1F, 0xAD, 0xF8, 0xB2, 0x16, 0x44, + 0xFD, 0x0F, 0x93, 0x4F, 0x3C, 0x4A, 0x8F, 0x62, + 0xBA, 0x86, 0x2F, 0xFD, 0x20, 0xE8, 0xE9, 0x61, + 0x15, 0x4C, 0x15, 0xC1, 0x38, 0x84, 0xED, 0x3D + }, + { + 0x7C, 0xBE, 0xE9, 0x6E, 0x13, 0x98, 0x97, 0xDC, + 0x98, 0xFB, 0xEF, 0x3B, 0xE8, 0x1A, 0xD4, 0xD9, + 0x64, 0xD2, 0x35, 0xCB, 0x12, 0x14, 0x1F, 0xB6, + 0x67, 0x27, 0xE6, 0xE5, 0xDF, 0x73, 0xA8, 0x78 + }, + { + 0xEB, 0xF6, 0x6A, 0xBB, 0x59, 0x7A, 0xE5, 0x72, + 0xA7, 0x29, 0x7C, 0xB0, 0x87, 0x1E, 0x35, 0x5A, + 0xCC, 0xAF, 0xAD, 0x83, 0x77, 0xB8, 0xE7, 0x8B, + 0xF1, 0x64, 0xCE, 0x2A, 0x18, 0xDE, 0x4B, 0xAF + }, + { + 0x71, 0xB9, 0x33, 0xB0, 0x7E, 0x4F, 0xF7, 0x81, + 0x8C, 0xE0, 0x59, 0xD0, 0x08, 0x82, 0x9E, 0x45, + 0x3C, 0x6F, 0xF0, 0x2E, 0xC0, 0xA7, 0xDB, 0x39, + 0x3F, 0xC2, 0xD8, 0x70, 0xF3, 0x7A, 0x72, 0x86 + }, + { + 0x7C, 0xF7, 0xC5, 0x13, 0x31, 0x22, 0x0B, 0x8D, + 0x3E, 0xBA, 0xED, 0x9C, 0x29, 0x39, 0x8A, 0x16, + 0xD9, 0x81, 0x56, 0xE2, 0x61, 0x3C, 0xB0, 0x88, + 0xF2, 0xB0, 0xE0, 0x8A, 0x1B, 0xE4, 0xCF, 0x4F + }, + { + 0x3E, 0x41, 0xA1, 0x08, 0xE0, 0xF6, 0x4A, 0xD2, + 0x76, 0xB9, 0x79, 0xE1, 0xCE, 0x06, 0x82, 0x79, + 0xE1, 0x6F, 0x7B, 0xC7, 0xE4, 0xAA, 0x1D, 0x21, + 0x1E, 0x17, 0xB8, 0x11, 0x61, 0xDF, 0x16, 0x02 + }, + { + 0x88, 0x65, 0x02, 0xA8, 0x2A, 0xB4, 0x7B, 0xA8, + 0xD8, 0x67, 0x10, 0xAA, 0x9D, 0xE3, 0xD4, 0x6E, + 0xA6, 0x5C, 0x47, 0xAF, 0x6E, 0xE8, 0xDE, 0x45, + 0x0C, 0xCE, 0xB8, 0xB1, 0x1B, 0x04, 0x5F, 0x50 + }, + { + 0xC0, 0x21, 0xBC, 0x5F, 0x09, 0x54, 0xFE, 0xE9, + 0x4F, 0x46, 0xEA, 0x09, 0x48, 0x7E, 0x10, 0xA8, + 0x48, 0x40, 0xD0, 0x2F, 0x64, 0x81, 0x0B, 0xC0, + 0x8D, 0x9E, 0x55, 0x1F, 0x7D, 0x41, 0x68, 0x14 + }, + { + 0x20, 0x30, 0x51, 0x6E, 0x8A, 0x5F, 0xE1, 0x9A, + 0xE7, 0x9C, 0x33, 0x6F, 0xCE, 0x26, 0x38, 0x2A, + 0x74, 0x9D, 0x3F, 0xD0, 0xEC, 0x91, 0xE5, 0x37, + 0xD4, 0xBD, 0x23, 0x58, 0xC1, 0x2D, 0xFB, 0x22 + }, + { + 0x55, 0x66, 0x98, 0xDA, 0xC8, 0x31, 0x7F, 0xD3, + 0x6D, 0xFB, 0xDF, 0x25, 0xA7, 0x9C, 0xB1, 0x12, + 0xD5, 0x42, 0x58, 0x60, 0x60, 0x5C, 0xBA, 0xF5, + 0x07, 0xF2, 0x3B, 0xF7, 0xE9, 0xF4, 0x2A, 0xFE + }, + { + 0x2F, 0x86, 0x7B, 0xA6, 0x77, 0x73, 0xFD, 0xC3, + 0xE9, 0x2F, 0xCE, 0xD9, 0x9A, 0x64, 0x09, 0xAD, + 0x39, 0xD0, 0xB8, 0x80, 0xFD, 0xE8, 0xF1, 0x09, + 0xA8, 0x17, 0x30, 0xC4, 0x45, 0x1D, 0x01, 0x78 + }, + { + 0x17, 0x2E, 0xC2, 0x18, 0xF1, 0x19, 0xDF, 0xAE, + 0x98, 0x89, 0x6D, 0xFF, 0x29, 0xDD, 0x98, 0x76, + 0xC9, 0x4A, 0xF8, 0x74, 0x17, 0xF9, 0xAE, 0x4C, + 0x70, 0x14, 0xBB, 0x4E, 0x4B, 0x96, 0xAF, 0xC7 + }, + { + 0x3F, 0x85, 0x81, 0x4A, 0x18, 0x19, 0x5F, 0x87, + 0x9A, 0xA9, 0x62, 0xF9, 0x5D, 0x26, 0xBD, 0x82, + 0xA2, 0x78, 0xF2, 0xB8, 0x23, 0x20, 0x21, 0x8F, + 0x6B, 0x3B, 0xD6, 0xF7, 0xF6, 0x67, 0xA6, 0xD9 + }, + { + 0x1B, 0x61, 0x8F, 0xBA, 0xA5, 0x66, 0xB3, 0xD4, + 0x98, 0xC1, 0x2E, 0x98, 0x2C, 0x9E, 0xC5, 0x2E, + 0x4D, 0xA8, 0x5A, 0x8C, 0x54, 0xF3, 0x8F, 0x34, + 0xC0, 0x90, 0x39, 0x4F, 0x23, 0xC1, 0x84, 0xC1 + }, + { + 0x0C, 0x75, 0x8F, 0xB5, 0x69, 0x2F, 0xFD, 0x41, + 0xA3, 0x57, 0x5D, 0x0A, 0xF0, 0x0C, 0xC7, 0xFB, + 0xF2, 0xCB, 0xE5, 0x90, 0x5A, 0x58, 0x32, 0x3A, + 0x88, 0xAE, 0x42, 0x44, 0xF6, 0xE4, 0xC9, 0x93 + }, + { + 0xA9, 0x31, 0x36, 0x0C, 0xAD, 0x62, 0x8C, 0x7F, + 0x12, 0xA6, 0xC1, 0xC4, 0xB7, 0x53, 0xB0, 0xF4, + 0x06, 0x2A, 0xEF, 0x3C, 0xE6, 0x5A, 0x1A, 0xE3, + 0xF1, 0x93, 0x69, 0xDA, 0xDF, 0x3A, 0xE2, 0x3D + }, + { + 0xCB, 0xAC, 0x7D, 0x77, 0x3B, 0x1E, 0x3B, 0x3C, + 0x66, 0x91, 0xD7, 0xAB, 0xB7, 0xE9, 0xDF, 0x04, + 0x5C, 0x8B, 0xA1, 0x92, 0x68, 0xDE, 0xD1, 0x53, + 0x20, 0x7F, 0x5E, 0x80, 0x43, 0x52, 0xEC, 0x5D + }, + { + 0x23, 0xA1, 0x96, 0xD3, 0x80, 0x2E, 0xD3, 0xC1, + 0xB3, 0x84, 0x01, 0x9A, 0x82, 0x32, 0x58, 0x40, + 0xD3, 0x2F, 0x71, 0x95, 0x0C, 0x45, 0x80, 0xB0, + 0x34, 0x45, 0xE0, 0x89, 0x8E, 0x14, 0x05, 0x3C + }, + { + 0xF4, 0x49, 0x54, 0x70, 0xF2, 0x26, 0xC8, 0xC2, + 0x14, 0xBE, 0x08, 0xFD, 0xFA, 0xD4, 0xBC, 0x4A, + 0x2A, 0x9D, 0xBE, 0xA9, 0x13, 0x6A, 0x21, 0x0D, + 0xF0, 0xD4, 0xB6, 0x49, 0x29, 0xE6, 0xFC, 0x14 + }, + { + 0xE2, 0x90, 0xDD, 0x27, 0x0B, 0x46, 0x7F, 0x34, + 0xAB, 0x1C, 0x00, 0x2D, 0x34, 0x0F, 0xA0, 0x16, + 0x25, 0x7F, 0xF1, 0x9E, 0x58, 0x33, 0xFD, 0xBB, + 0xF2, 0xCB, 0x40, 0x1C, 0x3B, 0x28, 0x17, 0xDE + }, + { + 0x9F, 0xC7, 0xB5, 0xDE, 0xD3, 0xC1, 0x50, 0x42, + 0xB2, 0xA6, 0x58, 0x2D, 0xC3, 0x9B, 0xE0, 0x16, + 0xD2, 0x4A, 0x68, 0x2D, 0x5E, 0x61, 0xAD, 0x1E, + 0xFF, 0x9C, 0x63, 0x30, 0x98, 0x48, 0xF7, 0x06 + }, + { + 0x8C, 0xCA, 0x67, 0xA3, 0x6D, 0x17, 0xD5, 0xE6, + 0x34, 0x1C, 0xB5, 0x92, 0xFD, 0x7B, 0xEF, 0x99, + 0x26, 0xC9, 0xE3, 0xAA, 0x10, 0x27, 0xEA, 0x11, + 0xA7, 0xD8, 0xBD, 0x26, 0x0B, 0x57, 0x6E, 0x04 + }, + { + 0x40, 0x93, 0x92, 0xF5, 0x60, 0xF8, 0x68, 0x31, + 0xDA, 0x43, 0x73, 0xEE, 0x5E, 0x00, 0x74, 0x26, + 0x05, 0x95, 0xD7, 0xBC, 0x24, 0x18, 0x3B, 0x60, + 0xED, 0x70, 0x0D, 0x45, 0x83, 0xD3, 0xF6, 0xF0 + }, + { + 0x28, 0x02, 0x16, 0x5D, 0xE0, 0x90, 0x91, 0x55, + 0x46, 0xF3, 0x39, 0x8C, 0xD8, 0x49, 0x16, 0x4A, + 0x19, 0xF9, 0x2A, 0xDB, 0xC3, 0x61, 0xAD, 0xC9, + 0x9B, 0x0F, 0x20, 0xC8, 0xEA, 0x07, 0x10, 0x54 + }, + { + 0xAD, 0x83, 0x91, 0x68, 0xD9, 0xF8, 0xA4, 0xBE, + 0x95, 0xBA, 0x9E, 0xF9, 0xA6, 0x92, 0xF0, 0x72, + 0x56, 0xAE, 0x43, 0xFE, 0x6F, 0x98, 0x64, 0xE2, + 0x90, 0x69, 0x1B, 0x02, 0x56, 0xCE, 0x50, 0xA9 + }, + { + 0x75, 0xFD, 0xAA, 0x50, 0x38, 0xC2, 0x84, 0xB8, + 0x6D, 0x6E, 0x8A, 0xFF, 0xE8, 0xB2, 0x80, 0x7E, + 0x46, 0x7B, 0x86, 0x60, 0x0E, 0x79, 0xAF, 0x36, + 0x89, 0xFB, 0xC0, 0x63, 0x28, 0xCB, 0xF8, 0x94 + }, + { + 0xE5, 0x7C, 0xB7, 0x94, 0x87, 0xDD, 0x57, 0x90, + 0x24, 0x32, 0xB2, 0x50, 0x73, 0x38, 0x13, 0xBD, + 0x96, 0xA8, 0x4E, 0xFC, 0xE5, 0x9F, 0x65, 0x0F, + 0xAC, 0x26, 0xE6, 0x69, 0x6A, 0xEF, 0xAF, 0xC3 + }, + { + 0x56, 0xF3, 0x4E, 0x8B, 0x96, 0x55, 0x7E, 0x90, + 0xC1, 0xF2, 0x4B, 0x52, 0xD0, 0xC8, 0x9D, 0x51, + 0x08, 0x6A, 0xCF, 0x1B, 0x00, 0xF6, 0x34, 0xCF, + 0x1D, 0xDE, 0x92, 0x33, 0xB8, 0xEA, 0xAA, 0x3E + }, + { + 0x1B, 0x53, 0xEE, 0x94, 0xAA, 0xF3, 0x4E, 0x4B, + 0x15, 0x9D, 0x48, 0xDE, 0x35, 0x2C, 0x7F, 0x06, + 0x61, 0xD0, 0xA4, 0x0E, 0xDF, 0xF9, 0x5A, 0x0B, + 0x16, 0x39, 0xB4, 0x09, 0x0E, 0x97, 0x44, 0x72 + }, + { + 0x05, 0x70, 0x5E, 0x2A, 0x81, 0x75, 0x7C, 0x14, + 0xBD, 0x38, 0x3E, 0xA9, 0x8D, 0xDA, 0x54, 0x4E, + 0xB1, 0x0E, 0x6B, 0xC0, 0x7B, 0xAE, 0x43, 0x5E, + 0x25, 0x18, 0xDB, 0xE1, 0x33, 0x52, 0x53, 0x75 + }, + { + 0xD8, 0xB2, 0x86, 0x6E, 0x8A, 0x30, 0x9D, 0xB5, + 0x3E, 0x52, 0x9E, 0xC3, 0x29, 0x11, 0xD8, 0x2F, + 0x5C, 0xA1, 0x6C, 0xFF, 0x76, 0x21, 0x68, 0x91, + 0xA9, 0x67, 0x6A, 0xA3, 0x1A, 0xAA, 0x6C, 0x42 + }, + { + 0xF5, 0x04, 0x1C, 0x24, 0x12, 0x70, 0xEB, 0x04, + 0xC7, 0x1E, 0xC2, 0xC9, 0x5D, 0x4C, 0x38, 0xD8, + 0x03, 0xB1, 0x23, 0x7B, 0x0F, 0x29, 0xFD, 0x4D, + 0xB3, 0xEB, 0x39, 0x76, 0x69, 0xE8, 0x86, 0x99 + }, + { + 0x9A, 0x4C, 0xE0, 0x77, 0xC3, 0x49, 0x32, 0x2F, + 0x59, 0x5E, 0x0E, 0xE7, 0x9E, 0xD0, 0xDA, 0x5F, + 0xAB, 0x66, 0x75, 0x2C, 0xBF, 0xEF, 0x8F, 0x87, + 0xD0, 0xE9, 0xD0, 0x72, 0x3C, 0x75, 0x30, 0xDD + }, + { + 0x65, 0x7B, 0x09, 0xF3, 0xD0, 0xF5, 0x2B, 0x5B, + 0x8F, 0x2F, 0x97, 0x16, 0x3A, 0x0E, 0xDF, 0x0C, + 0x04, 0xF0, 0x75, 0x40, 0x8A, 0x07, 0xBB, 0xEB, + 0x3A, 0x41, 0x01, 0xA8, 0x91, 0x99, 0x0D, 0x62 + }, + { + 0x1E, 0x3F, 0x7B, 0xD5, 0xA5, 0x8F, 0xA5, 0x33, + 0x34, 0x4A, 0xA8, 0xED, 0x3A, 0xC1, 0x22, 0xBB, + 0x9E, 0x70, 0xD4, 0xEF, 0x50, 0xD0, 0x04, 0x53, + 0x08, 0x21, 0x94, 0x8F, 0x5F, 0xE6, 0x31, 0x5A + }, + { + 0x80, 0xDC, 0xCF, 0x3F, 0xD8, 0x3D, 0xFD, 0x0D, + 0x35, 0xAA, 0x28, 0x58, 0x59, 0x22, 0xAB, 0x89, + 0xD5, 0x31, 0x39, 0x97, 0x67, 0x3E, 0xAF, 0x90, + 0x5C, 0xEA, 0x9C, 0x0B, 0x22, 0x5C, 0x7B, 0x5F + }, + { + 0x8A, 0x0D, 0x0F, 0xBF, 0x63, 0x77, 0xD8, 0x3B, + 0xB0, 0x8B, 0x51, 0x4B, 0x4B, 0x1C, 0x43, 0xAC, + 0xC9, 0x5D, 0x75, 0x17, 0x14, 0xF8, 0x92, 0x56, + 0x45, 0xCB, 0x6B, 0xC8, 0x56, 0xCA, 0x15, 0x0A + }, + { + 0x9F, 0xA5, 0xB4, 0x87, 0x73, 0x8A, 0xD2, 0x84, + 0x4C, 0xC6, 0x34, 0x8A, 0x90, 0x19, 0x18, 0xF6, + 0x59, 0xA3, 0xB8, 0x9E, 0x9C, 0x0D, 0xFE, 0xEA, + 0xD3, 0x0D, 0xD9, 0x4B, 0xCF, 0x42, 0xEF, 0x8E + }, + { + 0x80, 0x83, 0x2C, 0x4A, 0x16, 0x77, 0xF5, 0xEA, + 0x25, 0x60, 0xF6, 0x68, 0xE9, 0x35, 0x4D, 0xD3, + 0x69, 0x97, 0xF0, 0x37, 0x28, 0xCF, 0xA5, 0x5E, + 0x1B, 0x38, 0x33, 0x7C, 0x0C, 0x9E, 0xF8, 0x18 + }, + { + 0xAB, 0x37, 0xDD, 0xB6, 0x83, 0x13, 0x7E, 0x74, + 0x08, 0x0D, 0x02, 0x6B, 0x59, 0x0B, 0x96, 0xAE, + 0x9B, 0xB4, 0x47, 0x72, 0x2F, 0x30, 0x5A, 0x5A, + 0xC5, 0x70, 0xEC, 0x1D, 0xF9, 0xB1, 0x74, 0x3C + }, + { + 0x3E, 0xE7, 0x35, 0xA6, 0x94, 0xC2, 0x55, 0x9B, + 0x69, 0x3A, 0xA6, 0x86, 0x29, 0x36, 0x1E, 0x15, + 0xD1, 0x22, 0x65, 0xAD, 0x6A, 0x3D, 0xED, 0xF4, + 0x88, 0xB0, 0xB0, 0x0F, 0xAC, 0x97, 0x54, 0xBA + }, + { + 0xD6, 0xFC, 0xD2, 0x32, 0x19, 0xB6, 0x47, 0xE4, + 0xCB, 0xD5, 0xEB, 0x2D, 0x0A, 0xD0, 0x1E, 0xC8, + 0x83, 0x8A, 0x4B, 0x29, 0x01, 0xFC, 0x32, 0x5C, + 0xC3, 0x70, 0x19, 0x81, 0xCA, 0x6C, 0x88, 0x8B + }, + { + 0x05, 0x20, 0xEC, 0x2F, 0x5B, 0xF7, 0xA7, 0x55, + 0xDA, 0xCB, 0x50, 0xC6, 0xBF, 0x23, 0x3E, 0x35, + 0x15, 0x43, 0x47, 0x63, 0xDB, 0x01, 0x39, 0xCC, + 0xD9, 0xFA, 0xEF, 0xBB, 0x82, 0x07, 0x61, 0x2D + }, + { + 0xAF, 0xF3, 0xB7, 0x5F, 0x3F, 0x58, 0x12, 0x64, + 0xD7, 0x66, 0x16, 0x62, 0xB9, 0x2F, 0x5A, 0xD3, + 0x7C, 0x1D, 0x32, 0xBD, 0x45, 0xFF, 0x81, 0xA4, + 0xED, 0x8A, 0xDC, 0x9E, 0xF3, 0x0D, 0xD9, 0x89 + }, + { + 0xD0, 0xDD, 0x65, 0x0B, 0xEF, 0xD3, 0xBA, 0x63, + 0xDC, 0x25, 0x10, 0x2C, 0x62, 0x7C, 0x92, 0x1B, + 0x9C, 0xBE, 0xB0, 0xB1, 0x30, 0x68, 0x69, 0x35, + 0xB5, 0xC9, 0x27, 0xCB, 0x7C, 0xCD, 0x5E, 0x3B + }, + { + 0xE1, 0x14, 0x98, 0x16, 0xB1, 0x0A, 0x85, 0x14, + 0xFB, 0x3E, 0x2C, 0xAB, 0x2C, 0x08, 0xBE, 0xE9, + 0xF7, 0x3C, 0xE7, 0x62, 0x21, 0x70, 0x12, 0x46, + 0xA5, 0x89, 0xBB, 0xB6, 0x73, 0x02, 0xD8, 0xA9 + }, + { + 0x7D, 0xA3, 0xF4, 0x41, 0xDE, 0x90, 0x54, 0x31, + 0x7E, 0x72, 0xB5, 0xDB, 0xF9, 0x79, 0xDA, 0x01, + 0xE6, 0xBC, 0xEE, 0xBB, 0x84, 0x78, 0xEA, 0xE6, + 0xA2, 0x28, 0x49, 0xD9, 0x02, 0x92, 0x63, 0x5C + }, + { + 0x12, 0x30, 0xB1, 0xFC, 0x8A, 0x7D, 0x92, 0x15, + 0xED, 0xC2, 0xD4, 0xA2, 0xDE, 0xCB, 0xDD, 0x0A, + 0x6E, 0x21, 0x6C, 0x92, 0x42, 0x78, 0xC9, 0x1F, + 0xC5, 0xD1, 0x0E, 0x7D, 0x60, 0x19, 0x2D, 0x94 + }, + { + 0x57, 0x50, 0xD7, 0x16, 0xB4, 0x80, 0x8F, 0x75, + 0x1F, 0xEB, 0xC3, 0x88, 0x06, 0xBA, 0x17, 0x0B, + 0xF6, 0xD5, 0x19, 0x9A, 0x78, 0x16, 0xBE, 0x51, + 0x4E, 0x3F, 0x93, 0x2F, 0xBE, 0x0C, 0xB8, 0x71 + }, + { + 0x6F, 0xC5, 0x9B, 0x2F, 0x10, 0xFE, 0xBA, 0x95, + 0x4A, 0xA6, 0x82, 0x0B, 0x3C, 0xA9, 0x87, 0xEE, + 0x81, 0xD5, 0xCC, 0x1D, 0xA3, 0xC6, 0x3C, 0xE8, + 0x27, 0x30, 0x1C, 0x56, 0x9D, 0xFB, 0x39, 0xCE + }, + { + 0xC7, 0xC3, 0xFE, 0x1E, 0xEB, 0xDC, 0x7B, 0x5A, + 0x93, 0x93, 0x26, 0xE8, 0xDD, 0xB8, 0x3E, 0x8B, + 0xF2, 0xB7, 0x80, 0xB6, 0x56, 0x78, 0xCB, 0x62, + 0xF2, 0x08, 0xB0, 0x40, 0xAB, 0xDD, 0x35, 0xE2 + }, + { + 0x0C, 0x75, 0xC1, 0xA1, 0x5C, 0xF3, 0x4A, 0x31, + 0x4E, 0xE4, 0x78, 0xF4, 0xA5, 0xCE, 0x0B, 0x8A, + 0x6B, 0x36, 0x52, 0x8E, 0xF7, 0xA8, 0x20, 0x69, + 0x6C, 0x3E, 0x42, 0x46, 0xC5, 0xA1, 0x58, 0x64 + }, + { + 0x21, 0x6D, 0xC1, 0x2A, 0x10, 0x85, 0x69, 0xA3, + 0xC7, 0xCD, 0xDE, 0x4A, 0xED, 0x43, 0xA6, 0xC3, + 0x30, 0x13, 0x9D, 0xDA, 0x3C, 0xCC, 0x4A, 0x10, + 0x89, 0x05, 0xDB, 0x38, 0x61, 0x89, 0x90, 0x50 + }, + { + 0xA5, 0x7B, 0xE6, 0xAE, 0x67, 0x56, 0xF2, 0x8B, + 0x02, 0xF5, 0x9D, 0xAD, 0xF7, 0xE0, 0xD7, 0xD8, + 0x80, 0x7F, 0x10, 0xFA, 0x15, 0xCE, 0xD1, 0xAD, + 0x35, 0x85, 0x52, 0x1A, 0x1D, 0x99, 0x5A, 0x89 + }, + { + 0x81, 0x6A, 0xEF, 0x87, 0x59, 0x53, 0x71, 0x6C, + 0xD7, 0xA5, 0x81, 0xF7, 0x32, 0xF5, 0x3D, 0xD4, + 0x35, 0xDA, 0xB6, 0x6D, 0x09, 0xC3, 0x61, 0xD2, + 0xD6, 0x59, 0x2D, 0xE1, 0x77, 0x55, 0xD8, 0xA8 + }, + { + 0x9A, 0x76, 0x89, 0x32, 0x26, 0x69, 0x3B, 0x6E, + 0xA9, 0x7E, 0x6A, 0x73, 0x8F, 0x9D, 0x10, 0xFB, + 0x3D, 0x0B, 0x43, 0xAE, 0x0E, 0x8B, 0x7D, 0x81, + 0x23, 0xEA, 0x76, 0xCE, 0x97, 0x98, 0x9C, 0x7E + }, + { + 0x8D, 0xAE, 0xDB, 0x9A, 0x27, 0x15, 0x29, 0xDB, + 0xB7, 0xDC, 0x3B, 0x60, 0x7F, 0xE5, 0xEB, 0x2D, + 0x32, 0x11, 0x77, 0x07, 0x58, 0xDD, 0x3B, 0x0A, + 0x35, 0x93, 0xD2, 0xD7, 0x95, 0x4E, 0x2D, 0x5B + }, + { + 0x16, 0xDB, 0xC0, 0xAA, 0x5D, 0xD2, 0xC7, 0x74, + 0xF5, 0x05, 0x10, 0x0F, 0x73, 0x37, 0x86, 0xD8, + 0xA1, 0x75, 0xFC, 0xBB, 0xB5, 0x9C, 0x43, 0xE1, + 0xFB, 0xFF, 0x3E, 0x1E, 0xAF, 0x31, 0xCB, 0x4A + }, + { + 0x86, 0x06, 0xCB, 0x89, 0x9C, 0x6A, 0xEA, 0xF5, + 0x1B, 0x9D, 0xB0, 0xFE, 0x49, 0x24, 0xA9, 0xFD, + 0x5D, 0xAB, 0xC1, 0x9F, 0x88, 0x26, 0xF2, 0xBC, + 0x1C, 0x1D, 0x7D, 0xA1, 0x4D, 0x2C, 0x2C, 0x99 + }, + { + 0x84, 0x79, 0x73, 0x1A, 0xED, 0xA5, 0x7B, 0xD3, + 0x7E, 0xAD, 0xB5, 0x1A, 0x50, 0x7E, 0x30, 0x7F, + 0x3B, 0xD9, 0x5E, 0x69, 0xDB, 0xCA, 0x94, 0xF3, + 0xBC, 0x21, 0x72, 0x60, 0x66, 0xAD, 0x6D, 0xFD + }, + { + 0x58, 0x47, 0x3A, 0x9E, 0xA8, 0x2E, 0xFA, 0x3F, + 0x3B, 0x3D, 0x8F, 0xC8, 0x3E, 0xD8, 0x86, 0x31, + 0x27, 0xB3, 0x3A, 0xE8, 0xDE, 0xAE, 0x63, 0x07, + 0x20, 0x1E, 0xDB, 0x6D, 0xDE, 0x61, 0xDE, 0x29 + }, + { + 0x9A, 0x92, 0x55, 0xD5, 0x3A, 0xF1, 0x16, 0xDE, + 0x8B, 0xA2, 0x7C, 0xE3, 0x5B, 0x4C, 0x7E, 0x15, + 0x64, 0x06, 0x57, 0xA0, 0xFC, 0xB8, 0x88, 0xC7, + 0x0D, 0x95, 0x43, 0x1D, 0xAC, 0xD8, 0xF8, 0x30 + }, + { + 0x9E, 0xB0, 0x5F, 0xFB, 0xA3, 0x9F, 0xD8, 0x59, + 0x6A, 0x45, 0x49, 0x3E, 0x18, 0xD2, 0x51, 0x0B, + 0xF3, 0xEF, 0x06, 0x5C, 0x51, 0xD6, 0xE1, 0x3A, + 0xBE, 0x66, 0xAA, 0x57, 0xE0, 0x5C, 0xFD, 0xB7 + }, + { + 0x81, 0xDC, 0xC3, 0xA5, 0x05, 0xEA, 0xCE, 0x3F, + 0x87, 0x9D, 0x8F, 0x70, 0x27, 0x76, 0x77, 0x0F, + 0x9D, 0xF5, 0x0E, 0x52, 0x1D, 0x14, 0x28, 0xA8, + 0x5D, 0xAF, 0x04, 0xF9, 0xAD, 0x21, 0x50, 0xE0 + }, + { + 0xE3, 0xE3, 0xC4, 0xAA, 0x3A, 0xCB, 0xBC, 0x85, + 0x33, 0x2A, 0xF9, 0xD5, 0x64, 0xBC, 0x24, 0x16, + 0x5E, 0x16, 0x87, 0xF6, 0xB1, 0xAD, 0xCB, 0xFA, + 0xE7, 0x7A, 0x8F, 0x03, 0xC7, 0x2A, 0xC2, 0x8C + }, + { + 0x67, 0x46, 0xC8, 0x0B, 0x4E, 0xB5, 0x6A, 0xEA, + 0x45, 0xE6, 0x4E, 0x72, 0x89, 0xBB, 0xA3, 0xED, + 0xBF, 0x45, 0xEC, 0xF8, 0x20, 0x64, 0x81, 0xFF, + 0x63, 0x02, 0x12, 0x29, 0x84, 0xCD, 0x52, 0x6A + }, + { + 0x2B, 0x62, 0x8E, 0x52, 0x76, 0x4D, 0x7D, 0x62, + 0xC0, 0x86, 0x8B, 0x21, 0x23, 0x57, 0xCD, 0xD1, + 0x2D, 0x91, 0x49, 0x82, 0x2F, 0x4E, 0x98, 0x45, + 0xD9, 0x18, 0xA0, 0x8D, 0x1A, 0xE9, 0x90, 0xC0 + }, + { + 0xE4, 0xBF, 0xE8, 0x0D, 0x58, 0xC9, 0x19, 0x94, + 0x61, 0x39, 0x09, 0xDC, 0x4B, 0x1A, 0x12, 0x49, + 0x68, 0x96, 0xC0, 0x04, 0xAF, 0x7B, 0x57, 0x01, + 0x48, 0x3D, 0xE4, 0x5D, 0x28, 0x23, 0xD7, 0x8E + }, + { + 0xEB, 0xB4, 0xBA, 0x15, 0x0C, 0xEF, 0x27, 0x34, + 0x34, 0x5B, 0x5D, 0x64, 0x1B, 0xBE, 0xD0, 0x3A, + 0x21, 0xEA, 0xFA, 0xE9, 0x33, 0xC9, 0x9E, 0x00, + 0x92, 0x12, 0xEF, 0x04, 0x57, 0x4A, 0x85, 0x30 + }, + { + 0x39, 0x66, 0xEC, 0x73, 0xB1, 0x54, 0xAC, 0xC6, + 0x97, 0xAC, 0x5C, 0xF5, 0xB2, 0x4B, 0x40, 0xBD, + 0xB0, 0xDB, 0x9E, 0x39, 0x88, 0x36, 0xD7, 0x6D, + 0x4B, 0x88, 0x0E, 0x3B, 0x2A, 0xF1, 0xAA, 0x27 + }, + { + 0xEF, 0x7E, 0x48, 0x31, 0xB3, 0xA8, 0x46, 0x36, + 0x51, 0x8D, 0x6E, 0x4B, 0xFC, 0xE6, 0x4A, 0x43, + 0xDB, 0x2A, 0x5D, 0xDA, 0x9C, 0xCA, 0x2B, 0x44, + 0xF3, 0x90, 0x33, 0xBD, 0xC4, 0x0D, 0x62, 0x43 + }, + { + 0x7A, 0xBF, 0x6A, 0xCF, 0x5C, 0x8E, 0x54, 0x9D, + 0xDB, 0xB1, 0x5A, 0xE8, 0xD8, 0xB3, 0x88, 0xC1, + 0xC1, 0x97, 0xE6, 0x98, 0x73, 0x7C, 0x97, 0x85, + 0x50, 0x1E, 0xD1, 0xF9, 0x49, 0x30, 0xB7, 0xD9 + }, + { + 0x88, 0x01, 0x8D, 0xED, 0x66, 0x81, 0x3F, 0x0C, + 0xA9, 0x5D, 0xEF, 0x47, 0x4C, 0x63, 0x06, 0x92, + 0x01, 0x99, 0x67, 0xB9, 0xE3, 0x68, 0x88, 0xDA, + 0xDD, 0x94, 0x12, 0x47, 0x19, 0xB6, 0x82, 0xF6 + }, + { + 0x39, 0x30, 0x87, 0x6B, 0x9F, 0xC7, 0x52, 0x90, + 0x36, 0xB0, 0x08, 0xB1, 0xB8, 0xBB, 0x99, 0x75, + 0x22, 0xA4, 0x41, 0x63, 0x5A, 0x0C, 0x25, 0xEC, + 0x02, 0xFB, 0x6D, 0x90, 0x26, 0xE5, 0x5A, 0x97 + }, + { + 0x0A, 0x40, 0x49, 0xD5, 0x7E, 0x83, 0x3B, 0x56, + 0x95, 0xFA, 0xC9, 0x3D, 0xD1, 0xFB, 0xEF, 0x31, + 0x66, 0xB4, 0x4B, 0x12, 0xAD, 0x11, 0x24, 0x86, + 0x62, 0x38, 0x3A, 0xE0, 0x51, 0xE1, 0x58, 0x27 + }, + { + 0x81, 0xDC, 0xC0, 0x67, 0x8B, 0xB6, 0xA7, 0x65, + 0xE4, 0x8C, 0x32, 0x09, 0x65, 0x4F, 0xE9, 0x00, + 0x89, 0xCE, 0x44, 0xFF, 0x56, 0x18, 0x47, 0x7E, + 0x39, 0xAB, 0x28, 0x64, 0x76, 0xDF, 0x05, 0x2B + }, + { + 0xE6, 0x9B, 0x3A, 0x36, 0xA4, 0x46, 0x19, 0x12, + 0xDC, 0x08, 0x34, 0x6B, 0x11, 0xDD, 0xCB, 0x9D, + 0xB7, 0x96, 0xF8, 0x85, 0xFD, 0x01, 0x93, 0x6E, + 0x66, 0x2F, 0xE2, 0x92, 0x97, 0xB0, 0x99, 0xA4 + }, + { + 0x5A, 0xC6, 0x50, 0x3B, 0x0D, 0x8D, 0xA6, 0x91, + 0x76, 0x46, 0xE6, 0xDC, 0xC8, 0x7E, 0xDC, 0x58, + 0xE9, 0x42, 0x45, 0x32, 0x4C, 0xC2, 0x04, 0xF4, + 0xDD, 0x4A, 0xF0, 0x15, 0x63, 0xAC, 0xD4, 0x27 + }, + { + 0xDF, 0x6D, 0xDA, 0x21, 0x35, 0x9A, 0x30, 0xBC, + 0x27, 0x17, 0x80, 0x97, 0x1C, 0x1A, 0xBD, 0x56, + 0xA6, 0xEF, 0x16, 0x7E, 0x48, 0x08, 0x87, 0x88, + 0x8E, 0x73, 0xA8, 0x6D, 0x3B, 0xF6, 0x05, 0xE9 + }, + { + 0xE8, 0xE6, 0xE4, 0x70, 0x71, 0xE7, 0xB7, 0xDF, + 0x25, 0x80, 0xF2, 0x25, 0xCF, 0xBB, 0xED, 0xF8, + 0x4C, 0xE6, 0x77, 0x46, 0x62, 0x66, 0x28, 0xD3, + 0x30, 0x97, 0xE4, 0xB7, 0xDC, 0x57, 0x11, 0x07 + }, + { + 0x53, 0xE4, 0x0E, 0xAD, 0x62, 0x05, 0x1E, 0x19, + 0xCB, 0x9B, 0xA8, 0x13, 0x3E, 0x3E, 0x5C, 0x1C, + 0xE0, 0x0D, 0xDC, 0xAD, 0x8A, 0xCF, 0x34, 0x2A, + 0x22, 0x43, 0x60, 0xB0, 0xAC, 0xC1, 0x47, 0x77 + }, + { + 0x9C, 0xCD, 0x53, 0xFE, 0x80, 0xBE, 0x78, 0x6A, + 0xA9, 0x84, 0x63, 0x84, 0x62, 0xFB, 0x28, 0xAF, + 0xDF, 0x12, 0x2B, 0x34, 0xD7, 0x8F, 0x46, 0x87, + 0xEC, 0x63, 0x2B, 0xB1, 0x9D, 0xE2, 0x37, 0x1A + }, + { + 0xCB, 0xD4, 0x80, 0x52, 0xC4, 0x8D, 0x78, 0x84, + 0x66, 0xA3, 0xE8, 0x11, 0x8C, 0x56, 0xC9, 0x7F, + 0xE1, 0x46, 0xE5, 0x54, 0x6F, 0xAA, 0xF9, 0x3E, + 0x2B, 0xC3, 0xC4, 0x7E, 0x45, 0x93, 0x97, 0x53 + }, + { + 0x25, 0x68, 0x83, 0xB1, 0x4E, 0x2A, 0xF4, 0x4D, + 0xAD, 0xB2, 0x8E, 0x1B, 0x34, 0xB2, 0xAC, 0x0F, + 0x0F, 0x4C, 0x91, 0xC3, 0x4E, 0xC9, 0x16, 0x9E, + 0x29, 0x03, 0x61, 0x58, 0xAC, 0xAA, 0x95, 0xB9 + }, + { + 0x44, 0x71, 0xB9, 0x1A, 0xB4, 0x2D, 0xB7, 0xC4, + 0xDD, 0x84, 0x90, 0xAB, 0x95, 0xA2, 0xEE, 0x8D, + 0x04, 0xE3, 0xEF, 0x5C, 0x3D, 0x6F, 0xC7, 0x1A, + 0xC7, 0x4B, 0x2B, 0x26, 0x91, 0x4D, 0x16, 0x41 + }, + { + 0xA5, 0xEB, 0x08, 0x03, 0x8F, 0x8F, 0x11, 0x55, + 0xED, 0x86, 0xE6, 0x31, 0x90, 0x6F, 0xC1, 0x30, + 0x95, 0xF6, 0xBB, 0xA4, 0x1D, 0xE5, 0xD4, 0xE7, + 0x95, 0x75, 0x8E, 0xC8, 0xC8, 0xDF, 0x8A, 0xF1 + }, + { + 0xDC, 0x1D, 0xB6, 0x4E, 0xD8, 0xB4, 0x8A, 0x91, + 0x0E, 0x06, 0x0A, 0x6B, 0x86, 0x63, 0x74, 0xC5, + 0x78, 0x78, 0x4E, 0x9A, 0xC4, 0x9A, 0xB2, 0x77, + 0x40, 0x92, 0xAC, 0x71, 0x50, 0x19, 0x34, 0xAC + }, + { + 0x28, 0x54, 0x13, 0xB2, 0xF2, 0xEE, 0x87, 0x3D, + 0x34, 0x31, 0x9E, 0xE0, 0xBB, 0xFB, 0xB9, 0x0F, + 0x32, 0xDA, 0x43, 0x4C, 0xC8, 0x7E, 0x3D, 0xB5, + 0xED, 0x12, 0x1B, 0xB3, 0x98, 0xED, 0x96, 0x4B + }, + { + 0x02, 0x16, 0xE0, 0xF8, 0x1F, 0x75, 0x0F, 0x26, + 0xF1, 0x99, 0x8B, 0xC3, 0x93, 0x4E, 0x3E, 0x12, + 0x4C, 0x99, 0x45, 0xE6, 0x85, 0xA6, 0x0B, 0x25, + 0xE8, 0xFB, 0xD9, 0x62, 0x5A, 0xB6, 0xB5, 0x99 + }, + { + 0x38, 0xC4, 0x10, 0xF5, 0xB9, 0xD4, 0x07, 0x20, + 0x50, 0x75, 0x5B, 0x31, 0xDC, 0xA8, 0x9F, 0xD5, + 0x39, 0x5C, 0x67, 0x85, 0xEE, 0xB3, 0xD7, 0x90, + 0xF3, 0x20, 0xFF, 0x94, 0x1C, 0x5A, 0x93, 0xBF + }, + { + 0xF1, 0x84, 0x17, 0xB3, 0x9D, 0x61, 0x7A, 0xB1, + 0xC1, 0x8F, 0xDF, 0x91, 0xEB, 0xD0, 0xFC, 0x6D, + 0x55, 0x16, 0xBB, 0x34, 0xCF, 0x39, 0x36, 0x40, + 0x37, 0xBC, 0xE8, 0x1F, 0xA0, 0x4C, 0xEC, 0xB1 + }, + { + 0x1F, 0xA8, 0x77, 0xDE, 0x67, 0x25, 0x9D, 0x19, + 0x86, 0x3A, 0x2A, 0x34, 0xBC, 0xC6, 0x96, 0x2A, + 0x2B, 0x25, 0xFC, 0xBF, 0x5C, 0xBE, 0xCD, 0x7E, + 0xDE, 0x8F, 0x1F, 0xA3, 0x66, 0x88, 0xA7, 0x96 + }, + { + 0x5B, 0xD1, 0x69, 0xE6, 0x7C, 0x82, 0xC2, 0xC2, + 0xE9, 0x8E, 0xF7, 0x00, 0x8B, 0xDF, 0x26, 0x1F, + 0x2D, 0xDF, 0x30, 0xB1, 0xC0, 0x0F, 0x9E, 0x7F, + 0x27, 0x5B, 0xB3, 0xE8, 0xA2, 0x8D, 0xC9, 0xA2 + }, + { + 0xC8, 0x0A, 0xBE, 0xEB, 0xB6, 0x69, 0xAD, 0x5D, + 0xEE, 0xB5, 0xF5, 0xEC, 0x8E, 0xA6, 0xB7, 0xA0, + 0x5D, 0xDF, 0x7D, 0x31, 0xEC, 0x4C, 0x0A, 0x2E, + 0xE2, 0x0B, 0x0B, 0x98, 0xCA, 0xEC, 0x67, 0x46 + }, + { + 0xE7, 0x6D, 0x3F, 0xBD, 0xA5, 0xBA, 0x37, 0x4E, + 0x6B, 0xF8, 0xE5, 0x0F, 0xAD, 0xC3, 0xBB, 0xB9, + 0xBA, 0x5C, 0x20, 0x6E, 0xBD, 0xEC, 0x89, 0xA3, + 0xA5, 0x4C, 0xF3, 0xDD, 0x84, 0xA0, 0x70, 0x16 + }, + { + 0x7B, 0xBA, 0x9D, 0xC5, 0xB5, 0xDB, 0x20, 0x71, + 0xD1, 0x77, 0x52, 0xB1, 0x04, 0x4C, 0x1E, 0xCE, + 0xD9, 0x6A, 0xAF, 0x2D, 0xD4, 0x6E, 0x9B, 0x43, + 0x37, 0x50, 0xE8, 0xEA, 0x0D, 0xCC, 0x18, 0x70 + }, + { + 0xF2, 0x9B, 0x1B, 0x1A, 0xB9, 0xBA, 0xB1, 0x63, + 0x01, 0x8E, 0xE3, 0xDA, 0x15, 0x23, 0x2C, 0xCA, + 0x78, 0xEC, 0x52, 0xDB, 0xC3, 0x4E, 0xDA, 0x5B, + 0x82, 0x2E, 0xC1, 0xD8, 0x0F, 0xC2, 0x1B, 0xD0 + }, + { + 0x9E, 0xE3, 0xE3, 0xE7, 0xE9, 0x00, 0xF1, 0xE1, + 0x1D, 0x30, 0x8C, 0x4B, 0x2B, 0x30, 0x76, 0xD2, + 0x72, 0xCF, 0x70, 0x12, 0x4F, 0x9F, 0x51, 0xE1, + 0xDA, 0x60, 0xF3, 0x78, 0x46, 0xCD, 0xD2, 0xF4 + }, + { + 0x70, 0xEA, 0x3B, 0x01, 0x76, 0x92, 0x7D, 0x90, + 0x96, 0xA1, 0x85, 0x08, 0xCD, 0x12, 0x3A, 0x29, + 0x03, 0x25, 0x92, 0x0A, 0x9D, 0x00, 0xA8, 0x9B, + 0x5D, 0xE0, 0x42, 0x73, 0xFB, 0xC7, 0x6B, 0x85 + }, + { + 0x67, 0xDE, 0x25, 0xC0, 0x2A, 0x4A, 0xAB, 0xA2, + 0x3B, 0xDC, 0x97, 0x3C, 0x8B, 0xB0, 0xB5, 0x79, + 0x6D, 0x47, 0xCC, 0x06, 0x59, 0xD4, 0x3D, 0xFF, + 0x1F, 0x97, 0xDE, 0x17, 0x49, 0x63, 0xB6, 0x8E + }, + { + 0xB2, 0x16, 0x8E, 0x4E, 0x0F, 0x18, 0xB0, 0xE6, + 0x41, 0x00, 0xB5, 0x17, 0xED, 0x95, 0x25, 0x7D, + 0x73, 0xF0, 0x62, 0x0D, 0xF8, 0x85, 0xC1, 0x3D, + 0x2E, 0xCF, 0x79, 0x36, 0x7B, 0x38, 0x4C, 0xEE + }, + { + 0x2E, 0x7D, 0xEC, 0x24, 0x28, 0x85, 0x3B, 0x2C, + 0x71, 0x76, 0x07, 0x45, 0x54, 0x1F, 0x7A, 0xFE, + 0x98, 0x25, 0xB5, 0xDD, 0x77, 0xDF, 0x06, 0x51, + 0x1D, 0x84, 0x41, 0xA9, 0x4B, 0xAC, 0xC9, 0x27 + }, + { + 0xCA, 0x9F, 0xFA, 0xC4, 0xC4, 0x3F, 0x0B, 0x48, + 0x46, 0x1D, 0xC5, 0xC2, 0x63, 0xBE, 0xA3, 0xF6, + 0xF0, 0x06, 0x11, 0xCE, 0xAC, 0xAB, 0xF6, 0xF8, + 0x95, 0xBA, 0x2B, 0x01, 0x01, 0xDB, 0xB6, 0x8D + }, + { + 0x74, 0x10, 0xD4, 0x2D, 0x8F, 0xD1, 0xD5, 0xE9, + 0xD2, 0xF5, 0x81, 0x5C, 0xB9, 0x34, 0x17, 0x99, + 0x88, 0x28, 0xEF, 0x3C, 0x42, 0x30, 0xBF, 0xBD, + 0x41, 0x2D, 0xF0, 0xA4, 0xA7, 0xA2, 0x50, 0x7A + }, + { + 0x50, 0x10, 0xF6, 0x84, 0x51, 0x6D, 0xCC, 0xD0, + 0xB6, 0xEE, 0x08, 0x52, 0xC2, 0x51, 0x2B, 0x4D, + 0xC0, 0x06, 0x6C, 0xF0, 0xD5, 0x6F, 0x35, 0x30, + 0x29, 0x78, 0xDB, 0x8A, 0xE3, 0x2C, 0x6A, 0x81 + }, + { + 0xAC, 0xAA, 0xB5, 0x85, 0xF7, 0xB7, 0x9B, 0x71, + 0x99, 0x35, 0xCE, 0xB8, 0x95, 0x23, 0xDD, 0xC5, + 0x48, 0x27, 0xF7, 0x5C, 0x56, 0x88, 0x38, 0x56, + 0x15, 0x4A, 0x56, 0xCD, 0xCD, 0x5E, 0xE9, 0x88 + }, + { + 0x66, 0x6D, 0xE5, 0xD1, 0x44, 0x0F, 0xEE, 0x73, + 0x31, 0xAA, 0xF0, 0x12, 0x3A, 0x62, 0xEF, 0x2D, + 0x8B, 0xA5, 0x74, 0x53, 0xA0, 0x76, 0x96, 0x35, + 0xAC, 0x6C, 0xD0, 0x1E, 0x63, 0x3F, 0x77, 0x12 + }, + { + 0xA6, 0xF9, 0x86, 0x58, 0xF6, 0xEA, 0xBA, 0xF9, + 0x02, 0xD8, 0xB3, 0x87, 0x1A, 0x4B, 0x10, 0x1D, + 0x16, 0x19, 0x6E, 0x8A, 0x4B, 0x24, 0x1E, 0x15, + 0x58, 0xFE, 0x29, 0x96, 0x6E, 0x10, 0x3E, 0x8D + }, + { + 0x89, 0x15, 0x46, 0xA8, 0xB2, 0x9F, 0x30, 0x47, + 0xDD, 0xCF, 0xE5, 0xB0, 0x0E, 0x45, 0xFD, 0x55, + 0x75, 0x63, 0x73, 0x10, 0x5E, 0xA8, 0x63, 0x7D, + 0xFC, 0xFF, 0x54, 0x7B, 0x6E, 0xA9, 0x53, 0x5F + }, + { + 0x18, 0xDF, 0xBC, 0x1A, 0xC5, 0xD2, 0x5B, 0x07, + 0x61, 0x13, 0x7D, 0xBD, 0x22, 0xC1, 0x7C, 0x82, + 0x9D, 0x0F, 0x0E, 0xF1, 0xD8, 0x23, 0x44, 0xE9, + 0xC8, 0x9C, 0x28, 0x66, 0x94, 0xDA, 0x24, 0xE8 + }, + { + 0xB5, 0x4B, 0x9B, 0x67, 0xF8, 0xFE, 0xD5, 0x4B, + 0xBF, 0x5A, 0x26, 0x66, 0xDB, 0xDF, 0x4B, 0x23, + 0xCF, 0xF1, 0xD1, 0xB6, 0xF4, 0xAF, 0xC9, 0x85, + 0xB2, 0xE6, 0xD3, 0x30, 0x5A, 0x9F, 0xF8, 0x0F + }, + { + 0x7D, 0xB4, 0x42, 0xE1, 0x32, 0xBA, 0x59, 0xBC, + 0x12, 0x89, 0xAA, 0x98, 0xB0, 0xD3, 0xE8, 0x06, + 0x00, 0x4F, 0x8E, 0xC1, 0x28, 0x11, 0xAF, 0x1E, + 0x2E, 0x33, 0xC6, 0x9B, 0xFD, 0xE7, 0x29, 0xE1 + }, + { + 0x25, 0x0F, 0x37, 0xCD, 0xC1, 0x5E, 0x81, 0x7D, + 0x2F, 0x16, 0x0D, 0x99, 0x56, 0xC7, 0x1F, 0xE3, + 0xEB, 0x5D, 0xB7, 0x45, 0x56, 0xE4, 0xAD, 0xF9, + 0xA4, 0xFF, 0xAF, 0xBA, 0x74, 0x01, 0x03, 0x96 + }, + { + 0x4A, 0xB8, 0xA3, 0xDD, 0x1D, 0xDF, 0x8A, 0xD4, + 0x3D, 0xAB, 0x13, 0xA2, 0x7F, 0x66, 0xA6, 0x54, + 0x4F, 0x29, 0x05, 0x97, 0xFA, 0x96, 0x04, 0x0E, + 0x0E, 0x1D, 0xB9, 0x26, 0x3A, 0xA4, 0x79, 0xF8 + }, + { + 0xEE, 0x61, 0x72, 0x7A, 0x07, 0x66, 0xDF, 0x93, + 0x9C, 0xCD, 0xC8, 0x60, 0x33, 0x40, 0x44, 0xC7, + 0x9A, 0x3C, 0x9B, 0x15, 0x62, 0x00, 0xBC, 0x3A, + 0xA3, 0x29, 0x73, 0x48, 0x3D, 0x83, 0x41, 0xAE + }, + { + 0x3F, 0x68, 0xC7, 0xEC, 0x63, 0xAC, 0x11, 0xEB, + 0xB9, 0x8F, 0x94, 0xB3, 0x39, 0xB0, 0x5C, 0x10, + 0x49, 0x84, 0xFD, 0xA5, 0x01, 0x03, 0x06, 0x01, + 0x44, 0xE5, 0xA2, 0xBF, 0xCC, 0xC9, 0xDA, 0x95 + }, + { + 0x05, 0x6F, 0x29, 0x81, 0x6B, 0x8A, 0xF8, 0xF5, + 0x66, 0x82, 0xBC, 0x4D, 0x7C, 0xF0, 0x94, 0x11, + 0x1D, 0xA7, 0x73, 0x3E, 0x72, 0x6C, 0xD1, 0x3D, + 0x6B, 0x3E, 0x8E, 0xA0, 0x3E, 0x92, 0xA0, 0xD5 + }, + { + 0xF5, 0xEC, 0x43, 0xA2, 0x8A, 0xCB, 0xEF, 0xF1, + 0xF3, 0x31, 0x8A, 0x5B, 0xCA, 0xC7, 0xC6, 0x6D, + 0xDB, 0x52, 0x30, 0xB7, 0x9D, 0xB2, 0xD1, 0x05, + 0xBC, 0xBE, 0x15, 0xF3, 0xC1, 0x14, 0x8D, 0x69 + }, + { + 0x2A, 0x69, 0x60, 0xAD, 0x1D, 0x8D, 0xD5, 0x47, + 0x55, 0x5C, 0xFB, 0xD5, 0xE4, 0x60, 0x0F, 0x1E, + 0xAA, 0x1C, 0x8E, 0xDA, 0x34, 0xDE, 0x03, 0x74, + 0xEC, 0x4A, 0x26, 0xEA, 0xAA, 0xA3, 0x3B, 0x4E + }, + { + 0xDC, 0xC1, 0xEA, 0x7B, 0xAA, 0xB9, 0x33, 0x84, + 0xF7, 0x6B, 0x79, 0x68, 0x66, 0x19, 0x97, 0x54, + 0x74, 0x2F, 0x7B, 0x96, 0xD6, 0xB4, 0xC1, 0x20, + 0x16, 0x5C, 0x04, 0xA6, 0xC4, 0xF5, 0xCE, 0x10 + }, + { + 0x13, 0xD5, 0xDF, 0x17, 0x92, 0x21, 0x37, 0x9C, + 0x6A, 0x78, 0xC0, 0x7C, 0x79, 0x3F, 0xF5, 0x34, + 0x87, 0xCA, 0xE6, 0xBF, 0x9F, 0xE8, 0x82, 0x54, + 0x1A, 0xB0, 0xE7, 0x35, 0xE3, 0xEA, 0xDA, 0x3B + }, + { + 0x8C, 0x59, 0xE4, 0x40, 0x76, 0x41, 0xA0, 0x1E, + 0x8F, 0xF9, 0x1F, 0x99, 0x80, 0xDC, 0x23, 0x6F, + 0x4E, 0xCD, 0x6F, 0xCF, 0x52, 0x58, 0x9A, 0x09, + 0x9A, 0x96, 0x16, 0x33, 0x96, 0x77, 0x14, 0xE1 + }, + { + 0x83, 0x3B, 0x1A, 0xC6, 0xA2, 0x51, 0xFD, 0x08, + 0xFD, 0x6D, 0x90, 0x8F, 0xEA, 0x2A, 0x4E, 0xE1, + 0xE0, 0x40, 0xBC, 0xA9, 0x3F, 0xC1, 0xA3, 0x8E, + 0xC3, 0x82, 0x0E, 0x0C, 0x10, 0xBD, 0x82, 0xEA + }, + { + 0xA2, 0x44, 0xF9, 0x27, 0xF3, 0xB4, 0x0B, 0x8F, + 0x6C, 0x39, 0x15, 0x70, 0xC7, 0x65, 0x41, 0x8F, + 0x2F, 0x6E, 0x70, 0x8E, 0xAC, 0x90, 0x06, 0xC5, + 0x1A, 0x7F, 0xEF, 0xF4, 0xAF, 0x3B, 0x2B, 0x9E + }, + { + 0x3D, 0x99, 0xED, 0x95, 0x50, 0xCF, 0x11, 0x96, + 0xE6, 0xC4, 0xD2, 0x0C, 0x25, 0x96, 0x20, 0xF8, + 0x58, 0xC3, 0xD7, 0x03, 0x37, 0x4C, 0x12, 0x8C, + 0xE7, 0xB5, 0x90, 0x31, 0x0C, 0x83, 0x04, 0x6D + }, + { + 0x2B, 0x35, 0xC4, 0x7D, 0x7B, 0x87, 0x76, 0x1F, + 0x0A, 0xE4, 0x3A, 0xC5, 0x6A, 0xC2, 0x7B, 0x9F, + 0x25, 0x83, 0x03, 0x67, 0xB5, 0x95, 0xBE, 0x8C, + 0x24, 0x0E, 0x94, 0x60, 0x0C, 0x6E, 0x33, 0x12 + }, + { + 0x5D, 0x11, 0xED, 0x37, 0xD2, 0x4D, 0xC7, 0x67, + 0x30, 0x5C, 0xB7, 0xE1, 0x46, 0x7D, 0x87, 0xC0, + 0x65, 0xAC, 0x4B, 0xC8, 0xA4, 0x26, 0xDE, 0x38, + 0x99, 0x1F, 0xF5, 0x9A, 0xA8, 0x73, 0x5D, 0x02 + }, + { + 0xB8, 0x36, 0x47, 0x8E, 0x1C, 0xA0, 0x64, 0x0D, + 0xCE, 0x6F, 0xD9, 0x10, 0xA5, 0x09, 0x62, 0x72, + 0xC8, 0x33, 0x09, 0x90, 0xCD, 0x97, 0x86, 0x4A, + 0xC2, 0xBF, 0x14, 0xEF, 0x6B, 0x23, 0x91, 0x4A + }, + { + 0x91, 0x00, 0xF9, 0x46, 0xD6, 0xCC, 0xDE, 0x3A, + 0x59, 0x7F, 0x90, 0xD3, 0x9F, 0xC1, 0x21, 0x5B, + 0xAD, 0xDC, 0x74, 0x13, 0x64, 0x3D, 0x85, 0xC2, + 0x1C, 0x3E, 0xEE, 0x5D, 0x2D, 0xD3, 0x28, 0x94 + }, + { + 0xDA, 0x70, 0xEE, 0xDD, 0x23, 0xE6, 0x63, 0xAA, + 0x1A, 0x74, 0xB9, 0x76, 0x69, 0x35, 0xB4, 0x79, + 0x22, 0x2A, 0x72, 0xAF, 0xBA, 0x5C, 0x79, 0x51, + 0x58, 0xDA, 0xD4, 0x1A, 0x3B, 0xD7, 0x7E, 0x40 + }, + { + 0xF0, 0x67, 0xED, 0x6A, 0x0D, 0xBD, 0x43, 0xAA, + 0x0A, 0x92, 0x54, 0xE6, 0x9F, 0xD6, 0x6B, 0xDD, + 0x8A, 0xCB, 0x87, 0xDE, 0x93, 0x6C, 0x25, 0x8C, + 0xFB, 0x02, 0x28, 0x5F, 0x2C, 0x11, 0xFA, 0x79 + }, + { + 0x71, 0x5C, 0x99, 0xC7, 0xD5, 0x75, 0x80, 0xCF, + 0x97, 0x53, 0xB4, 0xC1, 0xD7, 0x95, 0xE4, 0x5A, + 0x83, 0xFB, 0xB2, 0x28, 0xC0, 0xD3, 0x6F, 0xBE, + 0x20, 0xFA, 0xF3, 0x9B, 0xDD, 0x6D, 0x4E, 0x85 + }, + { + 0xE4, 0x57, 0xD6, 0xAD, 0x1E, 0x67, 0xCB, 0x9B, + 0xBD, 0x17, 0xCB, 0xD6, 0x98, 0xFA, 0x6D, 0x7D, + 0xAE, 0x0C, 0x9B, 0x7A, 0xD6, 0xCB, 0xD6, 0x53, + 0x96, 0x34, 0xE3, 0x2A, 0x71, 0x9C, 0x84, 0x92 + }, + { + 0xEC, 0xE3, 0xEA, 0x81, 0x03, 0xE0, 0x24, 0x83, + 0xC6, 0x4A, 0x70, 0xA4, 0xBD, 0xCE, 0xE8, 0xCE, + 0xB6, 0x27, 0x8F, 0x25, 0x33, 0xF3, 0xF4, 0x8D, + 0xBE, 0xED, 0xFB, 0xA9, 0x45, 0x31, 0xD4, 0xAE + }, + { + 0x38, 0x8A, 0xA5, 0xD3, 0x66, 0x7A, 0x97, 0xC6, + 0x8D, 0x3D, 0x56, 0xF8, 0xF3, 0xEE, 0x8D, 0x3D, + 0x36, 0x09, 0x1F, 0x17, 0xFE, 0x5D, 0x1B, 0x0D, + 0x5D, 0x84, 0xC9, 0x3B, 0x2F, 0xFE, 0x40, 0xBD + }, + { + 0x8B, 0x6B, 0x31, 0xB9, 0xAD, 0x7C, 0x3D, 0x5C, + 0xD8, 0x4B, 0xF9, 0x89, 0x47, 0xB9, 0xCD, 0xB5, + 0x9D, 0xF8, 0xA2, 0x5F, 0xF7, 0x38, 0x10, 0x10, + 0x13, 0xBE, 0x4F, 0xD6, 0x5E, 0x1D, 0xD1, 0xA3 + }, + { + 0x06, 0x62, 0x91, 0xF6, 0xBB, 0xD2, 0x5F, 0x3C, + 0x85, 0x3D, 0xB7, 0xD8, 0xB9, 0x5C, 0x9A, 0x1C, + 0xFB, 0x9B, 0xF1, 0xC1, 0xC9, 0x9F, 0xB9, 0x5A, + 0x9B, 0x78, 0x69, 0xD9, 0x0F, 0x1C, 0x29, 0x03 + }, + { + 0xA7, 0x07, 0xEF, 0xBC, 0xCD, 0xCE, 0xED, 0x42, + 0x96, 0x7A, 0x66, 0xF5, 0x53, 0x9B, 0x93, 0xED, + 0x75, 0x60, 0xD4, 0x67, 0x30, 0x40, 0x16, 0xC4, + 0x78, 0x0D, 0x77, 0x55, 0xA5, 0x65, 0xD4, 0xC4 + }, + { + 0x38, 0xC5, 0x3D, 0xFB, 0x70, 0xBE, 0x7E, 0x79, + 0x2B, 0x07, 0xA6, 0xA3, 0x5B, 0x8A, 0x6A, 0x0A, + 0xBA, 0x02, 0xC5, 0xC5, 0xF3, 0x8B, 0xAF, 0x5C, + 0x82, 0x3F, 0xDF, 0xD9, 0xE4, 0x2D, 0x65, 0x7E + }, + { + 0xF2, 0x91, 0x13, 0x86, 0x50, 0x1D, 0x9A, 0xB9, + 0xD7, 0x20, 0xCF, 0x8A, 0xD1, 0x05, 0x03, 0xD5, + 0x63, 0x4B, 0xF4, 0xB7, 0xD1, 0x2B, 0x56, 0xDF, + 0xB7, 0x4F, 0xEC, 0xC6, 0xE4, 0x09, 0x3F, 0x68 + }, + { + 0xC6, 0xF2, 0xBD, 0xD5, 0x2B, 0x81, 0xE6, 0xE4, + 0xF6, 0x59, 0x5A, 0xBD, 0x4D, 0x7F, 0xB3, 0x1F, + 0x65, 0x11, 0x69, 0xD0, 0x0F, 0xF3, 0x26, 0x92, + 0x6B, 0x34, 0x94, 0x7B, 0x28, 0xA8, 0x39, 0x59 + }, + { + 0x29, 0x3D, 0x94, 0xB1, 0x8C, 0x98, 0xBB, 0x32, + 0x23, 0x36, 0x6B, 0x8C, 0xE7, 0x4C, 0x28, 0xFB, + 0xDF, 0x28, 0xE1, 0xF8, 0x4A, 0x33, 0x50, 0xB0, + 0xEB, 0x2D, 0x18, 0x04, 0xA5, 0x77, 0x57, 0x9B + }, + { + 0x2C, 0x2F, 0xA5, 0xC0, 0xB5, 0x15, 0x33, 0x16, + 0x5B, 0xC3, 0x75, 0xC2, 0x2E, 0x27, 0x81, 0x76, + 0x82, 0x70, 0xA3, 0x83, 0x98, 0x5D, 0x13, 0xBD, + 0x6B, 0x67, 0xB6, 0xFD, 0x67, 0xF8, 0x89, 0xEB + }, + { + 0xCA, 0xA0, 0x9B, 0x82, 0xB7, 0x25, 0x62, 0xE4, + 0x3F, 0x4B, 0x22, 0x75, 0xC0, 0x91, 0x91, 0x8E, + 0x62, 0x4D, 0x91, 0x16, 0x61, 0xCC, 0x81, 0x1B, + 0xB5, 0xFA, 0xEC, 0x51, 0xF6, 0x08, 0x8E, 0xF7 + }, + { + 0x24, 0x76, 0x1E, 0x45, 0xE6, 0x74, 0x39, 0x53, + 0x79, 0xFB, 0x17, 0x72, 0x9C, 0x78, 0xCB, 0x93, + 0x9E, 0x6F, 0x74, 0xC5, 0xDF, 0xFB, 0x9C, 0x96, + 0x1F, 0x49, 0x59, 0x82, 0xC3, 0xED, 0x1F, 0xE3 + }, + { + 0x55, 0xB7, 0x0A, 0x82, 0x13, 0x1E, 0xC9, 0x48, + 0x88, 0xD7, 0xAB, 0x54, 0xA7, 0xC5, 0x15, 0x25, + 0x5C, 0x39, 0x38, 0xBB, 0x10, 0xBC, 0x78, 0x4D, + 0xC9, 0xB6, 0x7F, 0x07, 0x6E, 0x34, 0x1A, 0x73 + }, + { + 0x6A, 0xB9, 0x05, 0x7B, 0x97, 0x7E, 0xBC, 0x3C, + 0xA4, 0xD4, 0xCE, 0x74, 0x50, 0x6C, 0x25, 0xCC, + 0xCD, 0xC5, 0x66, 0x49, 0x7C, 0x45, 0x0B, 0x54, + 0x15, 0xA3, 0x94, 0x86, 0xF8, 0x65, 0x7A, 0x03 + }, + { + 0x24, 0x06, 0x6D, 0xEE, 0xE0, 0xEC, 0xEE, 0x15, + 0xA4, 0x5F, 0x0A, 0x32, 0x6D, 0x0F, 0x8D, 0xBC, + 0x79, 0x76, 0x1E, 0xBB, 0x93, 0xCF, 0x8C, 0x03, + 0x77, 0xAF, 0x44, 0x09, 0x78, 0xFC, 0xF9, 0x94 + }, + { + 0x20, 0x00, 0x0D, 0x3F, 0x66, 0xBA, 0x76, 0x86, + 0x0D, 0x5A, 0x95, 0x06, 0x88, 0xB9, 0xAA, 0x0D, + 0x76, 0xCF, 0xEA, 0x59, 0xB0, 0x05, 0xD8, 0x59, + 0x91, 0x4B, 0x1A, 0x46, 0x65, 0x3A, 0x93, 0x9B + }, + { + 0xB9, 0x2D, 0xAA, 0x79, 0x60, 0x3E, 0x3B, 0xDB, + 0xC3, 0xBF, 0xE0, 0xF4, 0x19, 0xE4, 0x09, 0xB2, + 0xEA, 0x10, 0xDC, 0x43, 0x5B, 0xEE, 0xFE, 0x29, + 0x59, 0xDA, 0x16, 0x89, 0x5D, 0x5D, 0xCA, 0x1C + }, + { + 0xE9, 0x47, 0x94, 0x87, 0x05, 0xB2, 0x06, 0xD5, + 0x72, 0xB0, 0xE8, 0xF6, 0x2F, 0x66, 0xA6, 0x55, + 0x1C, 0xBD, 0x6B, 0xC3, 0x05, 0xD2, 0x6C, 0xE7, + 0x53, 0x9A, 0x12, 0xF9, 0xAA, 0xDF, 0x75, 0x71 + }, + { + 0x3D, 0x67, 0xC1, 0xB3, 0xF9, 0xB2, 0x39, 0x10, + 0xE3, 0xD3, 0x5E, 0x6B, 0x0F, 0x2C, 0xCF, 0x44, + 0xA0, 0xB5, 0x40, 0xA4, 0x5C, 0x18, 0xBA, 0x3C, + 0x36, 0x26, 0x4D, 0xD4, 0x8E, 0x96, 0xAF, 0x6A + }, + { + 0xC7, 0x55, 0x8B, 0xAB, 0xDA, 0x04, 0xBC, 0xCB, + 0x76, 0x4D, 0x0B, 0xBF, 0x33, 0x58, 0x42, 0x51, + 0x41, 0x90, 0x2D, 0x22, 0x39, 0x1D, 0x9F, 0x8C, + 0x59, 0x15, 0x9F, 0xEC, 0x9E, 0x49, 0xB1, 0x51 + }, + { + 0x0B, 0x73, 0x2B, 0xB0, 0x35, 0x67, 0x5A, 0x50, + 0xFF, 0x58, 0xF2, 0xC2, 0x42, 0xE4, 0x71, 0x0A, + 0xEC, 0xE6, 0x46, 0x70, 0x07, 0x9C, 0x13, 0x04, + 0x4C, 0x79, 0xC9, 0xB7, 0x49, 0x1F, 0x70, 0x00 + }, + { + 0xD1, 0x20, 0xB5, 0xEF, 0x6D, 0x57, 0xEB, 0xF0, + 0x6E, 0xAF, 0x96, 0xBC, 0x93, 0x3C, 0x96, 0x7B, + 0x16, 0xCB, 0xE6, 0xE2, 0xBF, 0x00, 0x74, 0x1C, + 0x30, 0xAA, 0x1C, 0x54, 0xBA, 0x64, 0x80, 0x1F + }, + { + 0x58, 0xD2, 0x12, 0xAD, 0x6F, 0x58, 0xAE, 0xF0, + 0xF8, 0x01, 0x16, 0xB4, 0x41, 0xE5, 0x7F, 0x61, + 0x95, 0xBF, 0xEF, 0x26, 0xB6, 0x14, 0x63, 0xED, + 0xEC, 0x11, 0x83, 0xCD, 0xB0, 0x4F, 0xE7, 0x6D + }, + { + 0xB8, 0x83, 0x6F, 0x51, 0xD1, 0xE2, 0x9B, 0xDF, + 0xDB, 0xA3, 0x25, 0x56, 0x53, 0x60, 0x26, 0x8B, + 0x8F, 0xAD, 0x62, 0x74, 0x73, 0xED, 0xEC, 0xEF, + 0x7E, 0xAE, 0xFE, 0xE8, 0x37, 0xC7, 0x40, 0x03 + }, + { + 0xC5, 0x47, 0xA3, 0xC1, 0x24, 0xAE, 0x56, 0x85, + 0xFF, 0xA7, 0xB8, 0xED, 0xAF, 0x96, 0xEC, 0x86, + 0xF8, 0xB2, 0xD0, 0xD5, 0x0C, 0xEE, 0x8B, 0xE3, + 0xB1, 0xF0, 0xC7, 0x67, 0x63, 0x06, 0x9D, 0x9C + }, + { + 0x5D, 0x16, 0x8B, 0x76, 0x9A, 0x2F, 0x67, 0x85, + 0x3D, 0x62, 0x95, 0xF7, 0x56, 0x8B, 0xE4, 0x0B, + 0xB7, 0xA1, 0x6B, 0x8D, 0x65, 0xBA, 0x87, 0x63, + 0x5D, 0x19, 0x78, 0xD2, 0xAB, 0x11, 0xBA, 0x2A + }, + { + 0xA2, 0xF6, 0x75, 0xDC, 0x73, 0x02, 0x63, 0x8C, + 0xB6, 0x02, 0x01, 0x06, 0x4C, 0xA5, 0x50, 0x77, + 0x71, 0x4D, 0x71, 0xFE, 0x09, 0x6A, 0x31, 0x5F, + 0x2F, 0xE7, 0x40, 0x12, 0x77, 0xCA, 0xA5, 0xAF + }, + { + 0xC8, 0xAA, 0xB5, 0xCD, 0x01, 0x60, 0xAE, 0x78, + 0xCD, 0x2E, 0x8A, 0xC5, 0xFB, 0x0E, 0x09, 0x3C, + 0xDB, 0x5C, 0x4B, 0x60, 0x52, 0xA0, 0xA9, 0x7B, + 0xB0, 0x42, 0x16, 0x82, 0x6F, 0xA7, 0xA4, 0x37 + }, + { + 0xFF, 0x68, 0xCA, 0x40, 0x35, 0xBF, 0xEB, 0x43, + 0xFB, 0xF1, 0x45, 0xFD, 0xDD, 0x5E, 0x43, 0xF1, + 0xCE, 0xA5, 0x4F, 0x11, 0xF7, 0xBE, 0xE1, 0x30, + 0x58, 0xF0, 0x27, 0x32, 0x9A, 0x4A, 0x5F, 0xA4 + }, + { + 0x1D, 0x4E, 0x54, 0x87, 0xAE, 0x3C, 0x74, 0x0F, + 0x2B, 0xA6, 0xE5, 0x41, 0xAC, 0x91, 0xBC, 0x2B, + 0xFC, 0xD2, 0x99, 0x9C, 0x51, 0x8D, 0x80, 0x7B, + 0x42, 0x67, 0x48, 0x80, 0x3A, 0x35, 0x0F, 0xD4 + }, + { + 0x6D, 0x24, 0x4E, 0x1A, 0x06, 0xCE, 0x4E, 0xF5, + 0x78, 0xDD, 0x0F, 0x63, 0xAF, 0xF0, 0x93, 0x67, + 0x06, 0x73, 0x51, 0x19, 0xCA, 0x9C, 0x8D, 0x22, + 0xD8, 0x6C, 0x80, 0x14, 0x14, 0xAB, 0x97, 0x41 + }, + { + 0xDE, 0xCF, 0x73, 0x29, 0xDB, 0xCC, 0x82, 0x7B, + 0x8F, 0xC5, 0x24, 0xC9, 0x43, 0x1E, 0x89, 0x98, + 0x02, 0x9E, 0xCE, 0x12, 0xCE, 0x93, 0xB7, 0xB2, + 0xF3, 0xE7, 0x69, 0xA9, 0x41, 0xFB, 0x8C, 0xEA + }, + { + 0x2F, 0xAF, 0xCC, 0x0F, 0x2E, 0x63, 0xCB, 0xD0, + 0x77, 0x55, 0xBE, 0x7B, 0x75, 0xEC, 0xEA, 0x0A, + 0xDF, 0xF9, 0xAA, 0x5E, 0xDE, 0x2A, 0x52, 0xFD, + 0xAB, 0x4D, 0xFD, 0x03, 0x74, 0xCD, 0x48, 0x3F + }, + { + 0xAA, 0x85, 0x01, 0x0D, 0xD4, 0x6A, 0x54, 0x6B, + 0x53, 0x5E, 0xF4, 0xCF, 0x5F, 0x07, 0xD6, 0x51, + 0x61, 0xE8, 0x98, 0x28, 0xF3, 0xA7, 0x7D, 0xB7, + 0xB9, 0xB5, 0x6F, 0x0D, 0xF5, 0x9A, 0xAE, 0x45 + }, + { + 0x07, 0xE8, 0xE1, 0xEE, 0x73, 0x2C, 0xB0, 0xD3, + 0x56, 0xC9, 0xC0, 0xD1, 0x06, 0x9C, 0x89, 0xD1, + 0x7A, 0xDF, 0x6A, 0x9A, 0x33, 0x4F, 0x74, 0x5E, + 0xC7, 0x86, 0x73, 0x32, 0x54, 0x8C, 0xA8, 0xE9 + }, + { + 0x0E, 0x01, 0xE8, 0x1C, 0xAD, 0xA8, 0x16, 0x2B, + 0xFD, 0x5F, 0x8A, 0x8C, 0x81, 0x8A, 0x6C, 0x69, + 0xFE, 0xDF, 0x02, 0xCE, 0xB5, 0x20, 0x85, 0x23, + 0xCB, 0xE5, 0x31, 0x3B, 0x89, 0xCA, 0x10, 0x53 + }, + { + 0x6B, 0xB6, 0xC6, 0x47, 0x26, 0x55, 0x08, 0x43, + 0x99, 0x85, 0x2E, 0x00, 0x24, 0x9F, 0x8C, 0xB2, + 0x47, 0x89, 0x6D, 0x39, 0x2B, 0x02, 0xD7, 0x3B, + 0x7F, 0x0D, 0xD8, 0x18, 0xE1, 0xE2, 0x9B, 0x07 + }, + { + 0x42, 0xD4, 0x63, 0x6E, 0x20, 0x60, 0xF0, 0x8F, + 0x41, 0xC8, 0x82, 0xE7, 0x6B, 0x39, 0x6B, 0x11, + 0x2E, 0xF6, 0x27, 0xCC, 0x24, 0xC4, 0x3D, 0xD5, + 0xF8, 0x3A, 0x1D, 0x1A, 0x7E, 0xAD, 0x71, 0x1A + }, + { + 0x48, 0x58, 0xC9, 0xA1, 0x88, 0xB0, 0x23, 0x4F, + 0xB9, 0xA8, 0xD4, 0x7D, 0x0B, 0x41, 0x33, 0x65, + 0x0A, 0x03, 0x0B, 0xD0, 0x61, 0x1B, 0x87, 0xC3, + 0x89, 0x2E, 0x94, 0x95, 0x1F, 0x8D, 0xF8, 0x52 + }, + { + 0x3F, 0xAB, 0x3E, 0x36, 0x98, 0x8D, 0x44, 0x5A, + 0x51, 0xC8, 0x78, 0x3E, 0x53, 0x1B, 0xE3, 0xA0, + 0x2B, 0xE4, 0x0C, 0xD0, 0x47, 0x96, 0xCF, 0xB6, + 0x1D, 0x40, 0x34, 0x74, 0x42, 0xD3, 0xF7, 0x94 + }, + { + 0xEB, 0xAB, 0xC4, 0x96, 0x36, 0xBD, 0x43, 0x3D, + 0x2E, 0xC8, 0xF0, 0xE5, 0x18, 0x73, 0x2E, 0xF8, + 0xFA, 0x21, 0xD4, 0xD0, 0x71, 0xCC, 0x3B, 0xC4, + 0x6C, 0xD7, 0x9F, 0xA3, 0x8A, 0x28, 0xB8, 0x10 + }, + { + 0xA1, 0xD0, 0x34, 0x35, 0x23, 0xB8, 0x93, 0xFC, + 0xA8, 0x4F, 0x47, 0xFE, 0xB4, 0xA6, 0x4D, 0x35, + 0x0A, 0x17, 0xD8, 0xEE, 0xF5, 0x49, 0x7E, 0xCE, + 0x69, 0x7D, 0x02, 0xD7, 0x91, 0x78, 0xB5, 0x91 + }, + { + 0x26, 0x2E, 0xBF, 0xD9, 0x13, 0x0B, 0x7D, 0x28, + 0x76, 0x0D, 0x08, 0xEF, 0x8B, 0xFD, 0x3B, 0x86, + 0xCD, 0xD3, 0xB2, 0x11, 0x3D, 0x2C, 0xAE, 0xF7, + 0xEA, 0x95, 0x1A, 0x30, 0x3D, 0xFA, 0x38, 0x46 + }, + { + 0xF7, 0x61, 0x58, 0xED, 0xD5, 0x0A, 0x15, 0x4F, + 0xA7, 0x82, 0x03, 0xED, 0x23, 0x62, 0x93, 0x2F, + 0xCB, 0x82, 0x53, 0xAA, 0xE3, 0x78, 0x90, 0x3E, + 0xDE, 0xD1, 0xE0, 0x3F, 0x70, 0x21, 0xA2, 0x57 + }, + { + 0x26, 0x17, 0x8E, 0x95, 0x0A, 0xC7, 0x22, 0xF6, + 0x7A, 0xE5, 0x6E, 0x57, 0x1B, 0x28, 0x4C, 0x02, + 0x07, 0x68, 0x4A, 0x63, 0x34, 0xA1, 0x77, 0x48, + 0xA9, 0x4D, 0x26, 0x0B, 0xC5, 0xF5, 0x52, 0x74 + }, + { + 0xC3, 0x78, 0xD1, 0xE4, 0x93, 0xB4, 0x0E, 0xF1, + 0x1F, 0xE6, 0xA1, 0x5D, 0x9C, 0x27, 0x37, 0xA3, + 0x78, 0x09, 0x63, 0x4C, 0x5A, 0xBA, 0xD5, 0xB3, + 0x3D, 0x7E, 0x39, 0x3B, 0x4A, 0xE0, 0x5D, 0x03 + }, + { + 0x98, 0x4B, 0xD8, 0x37, 0x91, 0x01, 0xBE, 0x8F, + 0xD8, 0x06, 0x12, 0xD8, 0xEA, 0x29, 0x59, 0xA7, + 0x86, 0x5E, 0xC9, 0x71, 0x85, 0x23, 0x55, 0x01, + 0x07, 0xAE, 0x39, 0x38, 0xDF, 0x32, 0x01, 0x1B + }, + { + 0xC6, 0xF2, 0x5A, 0x81, 0x2A, 0x14, 0x48, 0x58, + 0xAC, 0x5C, 0xED, 0x37, 0xA9, 0x3A, 0x9F, 0x47, + 0x59, 0xBA, 0x0B, 0x1C, 0x0F, 0xDC, 0x43, 0x1D, + 0xCE, 0x35, 0xF9, 0xEC, 0x1F, 0x1F, 0x4A, 0x99 + }, + { + 0x92, 0x4C, 0x75, 0xC9, 0x44, 0x24, 0xFF, 0x75, + 0xE7, 0x4B, 0x8B, 0x4E, 0x94, 0x35, 0x89, 0x58, + 0xB0, 0x27, 0xB1, 0x71, 0xDF, 0x5E, 0x57, 0x89, + 0x9A, 0xD0, 0xD4, 0xDA, 0xC3, 0x73, 0x53, 0xB6 + }, + { + 0x0A, 0xF3, 0x58, 0x92, 0xA6, 0x3F, 0x45, 0x93, + 0x1F, 0x68, 0x46, 0xED, 0x19, 0x03, 0x61, 0xCD, + 0x07, 0x30, 0x89, 0xE0, 0x77, 0x16, 0x57, 0x14, + 0xB5, 0x0B, 0x81, 0xA2, 0xE3, 0xDD, 0x9B, 0xA1 + }, + { + 0xCC, 0x80, 0xCE, 0xFB, 0x26, 0xC3, 0xB2, 0xB0, + 0xDA, 0xEF, 0x23, 0x3E, 0x60, 0x6D, 0x5F, 0xFC, + 0x80, 0xFA, 0x17, 0x42, 0x7D, 0x18, 0xE3, 0x04, + 0x89, 0x67, 0x3E, 0x06, 0xEF, 0x4B, 0x87, 0xF7 + }, + { + 0xC2, 0xF8, 0xC8, 0x11, 0x74, 0x47, 0xF3, 0x97, + 0x8B, 0x08, 0x18, 0xDC, 0xF6, 0xF7, 0x01, 0x16, + 0xAC, 0x56, 0xFD, 0x18, 0x4D, 0xD1, 0x27, 0x84, + 0x94, 0xE1, 0x03, 0xFC, 0x6D, 0x74, 0xA8, 0x87 + }, + { + 0xBD, 0xEC, 0xF6, 0xBF, 0xC1, 0xBA, 0x0D, 0xF6, + 0xE8, 0x62, 0xC8, 0x31, 0x99, 0x22, 0x07, 0x79, + 0x6A, 0xCC, 0x79, 0x79, 0x68, 0x35, 0x88, 0x28, + 0xC0, 0x6E, 0x7A, 0x51, 0xE0, 0x90, 0x09, 0x8F + }, + { + 0x24, 0xD1, 0xA2, 0x6E, 0x3D, 0xAB, 0x02, 0xFE, + 0x45, 0x72, 0xD2, 0xAA, 0x7D, 0xBD, 0x3E, 0xC3, + 0x0F, 0x06, 0x93, 0xDB, 0x26, 0xF2, 0x73, 0xD0, + 0xAB, 0x2C, 0xB0, 0xC1, 0x3B, 0x5E, 0x64, 0x51 + }, + { + 0xEC, 0x56, 0xF5, 0x8B, 0x09, 0x29, 0x9A, 0x30, + 0x0B, 0x14, 0x05, 0x65, 0xD7, 0xD3, 0xE6, 0x87, + 0x82, 0xB6, 0xE2, 0xFB, 0xEB, 0x4B, 0x7E, 0xA9, + 0x7A, 0xC0, 0x57, 0x98, 0x90, 0x61, 0xDD, 0x3F + }, + { + 0x11, 0xA4, 0x37, 0xC1, 0xAB, 0xA3, 0xC1, 0x19, + 0xDD, 0xFA, 0xB3, 0x1B, 0x3E, 0x8C, 0x84, 0x1D, + 0xEE, 0xEB, 0x91, 0x3E, 0xF5, 0x7F, 0x7E, 0x48, + 0xF2, 0xC9, 0xCF, 0x5A, 0x28, 0xFA, 0x42, 0xBC + }, + { + 0x53, 0xC7, 0xE6, 0x11, 0x4B, 0x85, 0x0A, 0x2C, + 0xB4, 0x96, 0xC9, 0xB3, 0xC6, 0x9A, 0x62, 0x3E, + 0xAE, 0xA2, 0xCB, 0x1D, 0x33, 0xDD, 0x81, 0x7E, + 0x47, 0x65, 0xED, 0xAA, 0x68, 0x23, 0xC2, 0x28 + }, + { + 0x15, 0x4C, 0x3E, 0x96, 0xFE, 0xE5, 0xDB, 0x14, + 0xF8, 0x77, 0x3E, 0x18, 0xAF, 0x14, 0x85, 0x79, + 0x13, 0x50, 0x9D, 0xA9, 0x99, 0xB4, 0x6C, 0xDD, + 0x3D, 0x4C, 0x16, 0x97, 0x60, 0xC8, 0x3A, 0xD2 + }, + { + 0x40, 0xB9, 0x91, 0x6F, 0x09, 0x3E, 0x02, 0x7A, + 0x87, 0x86, 0x64, 0x18, 0x18, 0x92, 0x06, 0x20, + 0x47, 0x2F, 0xBC, 0xF6, 0x8F, 0x70, 0x1D, 0x1B, + 0x68, 0x06, 0x32, 0xE6, 0x99, 0x6B, 0xDE, 0xD3 + }, + { + 0x24, 0xC4, 0xCB, 0xBA, 0x07, 0x11, 0x98, 0x31, + 0xA7, 0x26, 0xB0, 0x53, 0x05, 0xD9, 0x6D, 0xA0, + 0x2F, 0xF8, 0xB1, 0x48, 0xF0, 0xDA, 0x44, 0x0F, + 0xE2, 0x33, 0xBC, 0xAA, 0x32, 0xC7, 0x2F, 0x6F + }, + { + 0x5D, 0x20, 0x15, 0x10, 0x25, 0x00, 0x20, 0xB7, + 0x83, 0x68, 0x96, 0x88, 0xAB, 0xBF, 0x8E, 0xCF, + 0x25, 0x94, 0xA9, 0x6A, 0x08, 0xF2, 0xBF, 0xEC, + 0x6C, 0xE0, 0x57, 0x44, 0x65, 0xDD, 0xED, 0x71 + }, + { + 0x04, 0x3B, 0x97, 0xE3, 0x36, 0xEE, 0x6F, 0xDB, + 0xBE, 0x2B, 0x50, 0xF2, 0x2A, 0xF8, 0x32, 0x75, + 0xA4, 0x08, 0x48, 0x05, 0xD2, 0xD5, 0x64, 0x59, + 0x62, 0x45, 0x4B, 0x6C, 0x9B, 0x80, 0x53, 0xA0 + }, + { + 0x56, 0x48, 0x35, 0xCB, 0xAE, 0xA7, 0x74, 0x94, + 0x85, 0x68, 0xBE, 0x36, 0xCF, 0x52, 0xFC, 0xDD, + 0x83, 0x93, 0x4E, 0xB0, 0xA2, 0x75, 0x12, 0xDB, + 0xE3, 0xE2, 0xDB, 0x47, 0xB9, 0xE6, 0x63, 0x5A + }, + { + 0xF2, 0x1C, 0x33, 0xF4, 0x7B, 0xDE, 0x40, 0xA2, + 0xA1, 0x01, 0xC9, 0xCD, 0xE8, 0x02, 0x7A, 0xAF, + 0x61, 0xA3, 0x13, 0x7D, 0xE2, 0x42, 0x2B, 0x30, + 0x03, 0x5A, 0x04, 0xC2, 0x70, 0x89, 0x41, 0x83 + }, + { + 0x9D, 0xB0, 0xEF, 0x74, 0xE6, 0x6C, 0xBB, 0x84, + 0x2E, 0xB0, 0xE0, 0x73, 0x43, 0xA0, 0x3C, 0x5C, + 0x56, 0x7E, 0x37, 0x2B, 0x3F, 0x23, 0xB9, 0x43, + 0xC7, 0x88, 0xA4, 0xF2, 0x50, 0xF6, 0x78, 0x91 + }, + { + 0xAB, 0x8D, 0x08, 0x65, 0x5F, 0xF1, 0xD3, 0xFE, + 0x87, 0x58, 0xD5, 0x62, 0x23, 0x5F, 0xD2, 0x3E, + 0x7C, 0xF9, 0xDC, 0xAA, 0xD6, 0x58, 0x87, 0x2A, + 0x49, 0xE5, 0xD3, 0x18, 0x3B, 0x6C, 0xCE, 0xBD + }, + { + 0x6F, 0x27, 0xF7, 0x7E, 0x7B, 0xCF, 0x46, 0xA1, + 0xE9, 0x63, 0xAD, 0xE0, 0x30, 0x97, 0x33, 0x54, + 0x30, 0x31, 0xDC, 0xCD, 0xD4, 0x7C, 0xAA, 0xC1, + 0x74, 0xD7, 0xD2, 0x7C, 0xE8, 0x07, 0x7E, 0x8B + }, + { + 0xE3, 0xCD, 0x54, 0xDA, 0x7E, 0x44, 0x4C, 0xAA, + 0x62, 0x07, 0x56, 0x95, 0x25, 0xA6, 0x70, 0xEB, + 0xAE, 0x12, 0x78, 0xDE, 0x4E, 0x3F, 0xE2, 0x68, + 0x4B, 0x3E, 0x33, 0xF5, 0xEF, 0x90, 0xCC, 0x1B + }, + { + 0xB2, 0xC3, 0xE3, 0x3A, 0x51, 0xD2, 0x2C, 0x4C, + 0x08, 0xFC, 0x09, 0x89, 0xC8, 0x73, 0xC9, 0xCC, + 0x41, 0x50, 0x57, 0x9B, 0x1E, 0x61, 0x63, 0xFA, + 0x69, 0x4A, 0xD5, 0x1D, 0x53, 0xD7, 0x12, 0xDC + }, + { + 0xBE, 0x7F, 0xDA, 0x98, 0x3E, 0x13, 0x18, 0x9B, + 0x4C, 0x77, 0xE0, 0xA8, 0x09, 0x20, 0xB6, 0xE0, + 0xE0, 0xEA, 0x80, 0xC3, 0xB8, 0x4D, 0xBE, 0x7E, + 0x71, 0x17, 0xD2, 0x53, 0xF4, 0x81, 0x12, 0xF4 + }, + { + 0xB6, 0x00, 0x8C, 0x28, 0xFA, 0xE0, 0x8A, 0xA4, + 0x27, 0xE5, 0xBD, 0x3A, 0xAD, 0x36, 0xF1, 0x00, + 0x21, 0xF1, 0x6C, 0x77, 0xCF, 0xEA, 0xBE, 0xD0, + 0x7F, 0x97, 0xCC, 0x7D, 0xC1, 0xF1, 0x28, 0x4A + }, + { + 0x6E, 0x4E, 0x67, 0x60, 0xC5, 0x38, 0xF2, 0xE9, + 0x7B, 0x3A, 0xDB, 0xFB, 0xBC, 0xDE, 0x57, 0xF8, + 0x96, 0x6B, 0x7E, 0xA8, 0xFC, 0xB5, 0xBF, 0x7E, + 0xFE, 0xC9, 0x13, 0xFD, 0x2A, 0x2B, 0x0C, 0x55 + }, + { + 0x4A, 0xE5, 0x1F, 0xD1, 0x83, 0x4A, 0xA5, 0xBD, + 0x9A, 0x6F, 0x7E, 0xC3, 0x9F, 0xC6, 0x63, 0x33, + 0x8D, 0xC5, 0xD2, 0xE2, 0x07, 0x61, 0x56, 0x6D, + 0x90, 0xCC, 0x68, 0xB1, 0xCB, 0x87, 0x5E, 0xD8 + }, + { + 0xB6, 0x73, 0xAA, 0xD7, 0x5A, 0xB1, 0xFD, 0xB5, + 0x40, 0x1A, 0xBF, 0xA1, 0xBF, 0x89, 0xF3, 0xAD, + 0xD2, 0xEB, 0xC4, 0x68, 0xDF, 0x36, 0x24, 0xA4, + 0x78, 0xF4, 0xFE, 0x85, 0x9D, 0x8D, 0x55, 0xE2 + }, + { + 0x13, 0xC9, 0x47, 0x1A, 0x98, 0x55, 0x91, 0x35, + 0x39, 0x83, 0x66, 0x60, 0x39, 0x8D, 0xA0, 0xF3, + 0xF9, 0x9A, 0xDA, 0x08, 0x47, 0x9C, 0x69, 0xD1, + 0xB7, 0xFC, 0xAA, 0x34, 0x61, 0xDD, 0x7E, 0x59 + }, + { + 0x2C, 0x11, 0xF4, 0xA7, 0xF9, 0x9A, 0x1D, 0x23, + 0xA5, 0x8B, 0xB6, 0x36, 0x35, 0x0F, 0xE8, 0x49, + 0xF2, 0x9C, 0xBA, 0xC1, 0xB2, 0xA1, 0x11, 0x2D, + 0x9F, 0x1E, 0xD5, 0xBC, 0x5B, 0x31, 0x3C, 0xCD + }, + { + 0xC7, 0xD3, 0xC0, 0x70, 0x6B, 0x11, 0xAE, 0x74, + 0x1C, 0x05, 0xA1, 0xEF, 0x15, 0x0D, 0xD6, 0x5B, + 0x54, 0x94, 0xD6, 0xD5, 0x4C, 0x9A, 0x86, 0xE2, + 0x61, 0x78, 0x54, 0xE6, 0xAE, 0xEE, 0xBB, 0xD9 + }, + { + 0x19, 0x4E, 0x10, 0xC9, 0x38, 0x93, 0xAF, 0xA0, + 0x64, 0xC3, 0xAC, 0x04, 0xC0, 0xDD, 0x80, 0x8D, + 0x79, 0x1C, 0x3D, 0x4B, 0x75, 0x56, 0xE8, 0x9D, + 0x8D, 0x9C, 0xB2, 0x25, 0xC4, 0xB3, 0x33, 0x39 + }, + { + 0x6F, 0xC4, 0x98, 0x8B, 0x8F, 0x78, 0x54, 0x6B, + 0x16, 0x88, 0x99, 0x18, 0x45, 0x90, 0x8F, 0x13, + 0x4B, 0x6A, 0x48, 0x2E, 0x69, 0x94, 0xB3, 0xD4, + 0x83, 0x17, 0xBF, 0x08, 0xDB, 0x29, 0x21, 0x85 + }, + { + 0x56, 0x65, 0xBE, 0xB8, 0xB0, 0x95, 0x55, 0x25, + 0x81, 0x3B, 0x59, 0x81, 0xCD, 0x14, 0x2E, 0xD4, + 0xD0, 0x3F, 0xBA, 0x38, 0xA6, 0xF3, 0xE5, 0xAD, + 0x26, 0x8E, 0x0C, 0xC2, 0x70, 0xD1, 0xCD, 0x11 + }, + { + 0xB8, 0x83, 0xD6, 0x8F, 0x5F, 0xE5, 0x19, 0x36, + 0x43, 0x1B, 0xA4, 0x25, 0x67, 0x38, 0x05, 0x3B, + 0x1D, 0x04, 0x26, 0xD4, 0xCB, 0x64, 0xB1, 0x6E, + 0x83, 0xBA, 0xDC, 0x5E, 0x9F, 0xBE, 0x3B, 0x81 + }, + { + 0x53, 0xE7, 0xB2, 0x7E, 0xA5, 0x9C, 0x2F, 0x6D, + 0xBB, 0x50, 0x76, 0x9E, 0x43, 0x55, 0x4D, 0xF3, + 0x5A, 0xF8, 0x9F, 0x48, 0x22, 0xD0, 0x46, 0x6B, + 0x00, 0x7D, 0xD6, 0xF6, 0xDE, 0xAF, 0xFF, 0x02 + }, + { + 0x1F, 0x1A, 0x02, 0x29, 0xD4, 0x64, 0x0F, 0x01, + 0x90, 0x15, 0x88, 0xD9, 0xDE, 0xC2, 0x2D, 0x13, + 0xFC, 0x3E, 0xB3, 0x4A, 0x61, 0xB3, 0x29, 0x38, + 0xEF, 0xBF, 0x53, 0x34, 0xB2, 0x80, 0x0A, 0xFA + }, + { + 0xC2, 0xB4, 0x05, 0xAF, 0xA0, 0xFA, 0x66, 0x68, + 0x85, 0x2A, 0xEE, 0x4D, 0x88, 0x04, 0x08, 0x53, + 0xFA, 0xB8, 0x00, 0xE7, 0x2B, 0x57, 0x58, 0x14, + 0x18, 0xE5, 0x50, 0x6F, 0x21, 0x4C, 0x7D, 0x1F + }, + { + 0xC0, 0x8A, 0xA1, 0xC2, 0x86, 0xD7, 0x09, 0xFD, + 0xC7, 0x47, 0x37, 0x44, 0x97, 0x71, 0x88, 0xC8, + 0x95, 0xBA, 0x01, 0x10, 0x14, 0x24, 0x7E, 0x4E, + 0xFA, 0x8D, 0x07, 0xE7, 0x8F, 0xEC, 0x69, 0x5C + }, + { + 0xF0, 0x3F, 0x57, 0x89, 0xD3, 0x33, 0x6B, 0x80, + 0xD0, 0x02, 0xD5, 0x9F, 0xDF, 0x91, 0x8B, 0xDB, + 0x77, 0x5B, 0x00, 0x95, 0x6E, 0xD5, 0x52, 0x8E, + 0x86, 0xAA, 0x99, 0x4A, 0xCB, 0x38, 0xFE, 0x2D + }, +}; + + + + +static const uint8_t blake2s_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] = +{ + { + 0x48, 0xA8, 0x99, 0x7D, 0xA4, 0x07, 0x87, 0x6B, + 0x3D, 0x79, 0xC0, 0xD9, 0x23, 0x25, 0xAD, 0x3B, + 0x89, 0xCB, 0xB7, 0x54, 0xD8, 0x6A, 0xB7, 0x1A, + 0xEE, 0x04, 0x7A, 0xD3, 0x45, 0xFD, 0x2C, 0x49 + }, + { + 0x40, 0xD1, 0x5F, 0xEE, 0x7C, 0x32, 0x88, 0x30, + 0x16, 0x6A, 0xC3, 0xF9, 0x18, 0x65, 0x0F, 0x80, + 0x7E, 0x7E, 0x01, 0xE1, 0x77, 0x25, 0x8C, 0xDC, + 0x0A, 0x39, 0xB1, 0x1F, 0x59, 0x80, 0x66, 0xF1 + }, + { + 0x6B, 0xB7, 0x13, 0x00, 0x64, 0x4C, 0xD3, 0x99, + 0x1B, 0x26, 0xCC, 0xD4, 0xD2, 0x74, 0xAC, 0xD1, + 0xAD, 0xEA, 0xB8, 0xB1, 0xD7, 0x91, 0x45, 0x46, + 0xC1, 0x19, 0x8B, 0xBE, 0x9F, 0xC9, 0xD8, 0x03 + }, + { + 0x1D, 0x22, 0x0D, 0xBE, 0x2E, 0xE1, 0x34, 0x66, + 0x1F, 0xDF, 0x6D, 0x9E, 0x74, 0xB4, 0x17, 0x04, + 0x71, 0x05, 0x56, 0xF2, 0xF6, 0xE5, 0xA0, 0x91, + 0xB2, 0x27, 0x69, 0x74, 0x45, 0xDB, 0xEA, 0x6B + }, + { + 0xF6, 0xC3, 0xFB, 0xAD, 0xB4, 0xCC, 0x68, 0x7A, + 0x00, 0x64, 0xA5, 0xBE, 0x6E, 0x79, 0x1B, 0xEC, + 0x63, 0xB8, 0x68, 0xAD, 0x62, 0xFB, 0xA6, 0x1B, + 0x37, 0x57, 0xEF, 0x9C, 0xA5, 0x2E, 0x05, 0xB2 + }, + { + 0x49, 0xC1, 0xF2, 0x11, 0x88, 0xDF, 0xD7, 0x69, + 0xAE, 0xA0, 0xE9, 0x11, 0xDD, 0x6B, 0x41, 0xF1, + 0x4D, 0xAB, 0x10, 0x9D, 0x2B, 0x85, 0x97, 0x7A, + 0xA3, 0x08, 0x8B, 0x5C, 0x70, 0x7E, 0x85, 0x98 + }, + { + 0xFD, 0xD8, 0x99, 0x3D, 0xCD, 0x43, 0xF6, 0x96, + 0xD4, 0x4F, 0x3C, 0xEA, 0x0F, 0xF3, 0x53, 0x45, + 0x23, 0x4E, 0xC8, 0xEE, 0x08, 0x3E, 0xB3, 0xCA, + 0xDA, 0x01, 0x7C, 0x7F, 0x78, 0xC1, 0x71, 0x43 + }, + { + 0xE6, 0xC8, 0x12, 0x56, 0x37, 0x43, 0x8D, 0x09, + 0x05, 0xB7, 0x49, 0xF4, 0x65, 0x60, 0xAC, 0x89, + 0xFD, 0x47, 0x1C, 0xF8, 0x69, 0x2E, 0x28, 0xFA, + 0xB9, 0x82, 0xF7, 0x3F, 0x01, 0x9B, 0x83, 0xA9 + }, + { + 0x19, 0xFC, 0x8C, 0xA6, 0x97, 0x9D, 0x60, 0xE6, + 0xED, 0xD3, 0xB4, 0x54, 0x1E, 0x2F, 0x96, 0x7C, + 0xED, 0x74, 0x0D, 0xF6, 0xEC, 0x1E, 0xAE, 0xBB, + 0xFE, 0x81, 0x38, 0x32, 0xE9, 0x6B, 0x29, 0x74 + }, + { + 0xA6, 0xAD, 0x77, 0x7C, 0xE8, 0x81, 0xB5, 0x2B, + 0xB5, 0xA4, 0x42, 0x1A, 0xB6, 0xCD, 0xD2, 0xDF, + 0xBA, 0x13, 0xE9, 0x63, 0x65, 0x2D, 0x4D, 0x6D, + 0x12, 0x2A, 0xEE, 0x46, 0x54, 0x8C, 0x14, 0xA7 + }, + { + 0xF5, 0xC4, 0xB2, 0xBA, 0x1A, 0x00, 0x78, 0x1B, + 0x13, 0xAB, 0xA0, 0x42, 0x52, 0x42, 0xC6, 0x9C, + 0xB1, 0x55, 0x2F, 0x3F, 0x71, 0xA9, 0xA3, 0xBB, + 0x22, 0xB4, 0xA6, 0xB4, 0x27, 0x7B, 0x46, 0xDD + }, + { + 0xE3, 0x3C, 0x4C, 0x9B, 0xD0, 0xCC, 0x7E, 0x45, + 0xC8, 0x0E, 0x65, 0xC7, 0x7F, 0xA5, 0x99, 0x7F, + 0xEC, 0x70, 0x02, 0x73, 0x85, 0x41, 0x50, 0x9E, + 0x68, 0xA9, 0x42, 0x38, 0x91, 0xE8, 0x22, 0xA3 + }, + { + 0xFB, 0xA1, 0x61, 0x69, 0xB2, 0xC3, 0xEE, 0x10, + 0x5B, 0xE6, 0xE1, 0xE6, 0x50, 0xE5, 0xCB, 0xF4, + 0x07, 0x46, 0xB6, 0x75, 0x3D, 0x03, 0x6A, 0xB5, + 0x51, 0x79, 0x01, 0x4A, 0xD7, 0xEF, 0x66, 0x51 + }, + { + 0xF5, 0xC4, 0xBE, 0xC6, 0xD6, 0x2F, 0xC6, 0x08, + 0xBF, 0x41, 0xCC, 0x11, 0x5F, 0x16, 0xD6, 0x1C, + 0x7E, 0xFD, 0x3F, 0xF6, 0xC6, 0x56, 0x92, 0xBB, + 0xE0, 0xAF, 0xFF, 0xB1, 0xFE, 0xDE, 0x74, 0x75 + }, + { + 0xA4, 0x86, 0x2E, 0x76, 0xDB, 0x84, 0x7F, 0x05, + 0xBA, 0x17, 0xED, 0xE5, 0xDA, 0x4E, 0x7F, 0x91, + 0xB5, 0x92, 0x5C, 0xF1, 0xAD, 0x4B, 0xA1, 0x27, + 0x32, 0xC3, 0x99, 0x57, 0x42, 0xA5, 0xCD, 0x6E + }, + { + 0x65, 0xF4, 0xB8, 0x60, 0xCD, 0x15, 0xB3, 0x8E, + 0xF8, 0x14, 0xA1, 0xA8, 0x04, 0x31, 0x4A, 0x55, + 0xBE, 0x95, 0x3C, 0xAA, 0x65, 0xFD, 0x75, 0x8A, + 0xD9, 0x89, 0xFF, 0x34, 0xA4, 0x1C, 0x1E, 0xEA + }, + { + 0x19, 0xBA, 0x23, 0x4F, 0x0A, 0x4F, 0x38, 0x63, + 0x7D, 0x18, 0x39, 0xF9, 0xD9, 0xF7, 0x6A, 0xD9, + 0x1C, 0x85, 0x22, 0x30, 0x71, 0x43, 0xC9, 0x7D, + 0x5F, 0x93, 0xF6, 0x92, 0x74, 0xCE, 0xC9, 0xA7 + }, + { + 0x1A, 0x67, 0x18, 0x6C, 0xA4, 0xA5, 0xCB, 0x8E, + 0x65, 0xFC, 0xA0, 0xE2, 0xEC, 0xBC, 0x5D, 0xDC, + 0x14, 0xAE, 0x38, 0x1B, 0xB8, 0xBF, 0xFE, 0xB9, + 0xE0, 0xA1, 0x03, 0x44, 0x9E, 0x3E, 0xF0, 0x3C + }, + { + 0xAF, 0xBE, 0xA3, 0x17, 0xB5, 0xA2, 0xE8, 0x9C, + 0x0B, 0xD9, 0x0C, 0xCF, 0x5D, 0x7F, 0xD0, 0xED, + 0x57, 0xFE, 0x58, 0x5E, 0x4B, 0xE3, 0x27, 0x1B, + 0x0A, 0x6B, 0xF0, 0xF5, 0x78, 0x6B, 0x0F, 0x26 + }, + { + 0xF1, 0xB0, 0x15, 0x58, 0xCE, 0x54, 0x12, 0x62, + 0xF5, 0xEC, 0x34, 0x29, 0x9D, 0x6F, 0xB4, 0x09, + 0x00, 0x09, 0xE3, 0x43, 0x4B, 0xE2, 0xF4, 0x91, + 0x05, 0xCF, 0x46, 0xAF, 0x4D, 0x2D, 0x41, 0x24 + }, + { + 0x13, 0xA0, 0xA0, 0xC8, 0x63, 0x35, 0x63, 0x5E, + 0xAA, 0x74, 0xCA, 0x2D, 0x5D, 0x48, 0x8C, 0x79, + 0x7B, 0xBB, 0x4F, 0x47, 0xDC, 0x07, 0x10, 0x50, + 0x15, 0xED, 0x6A, 0x1F, 0x33, 0x09, 0xEF, 0xCE + }, + { + 0x15, 0x80, 0xAF, 0xEE, 0xBE, 0xBB, 0x34, 0x6F, + 0x94, 0xD5, 0x9F, 0xE6, 0x2D, 0xA0, 0xB7, 0x92, + 0x37, 0xEA, 0xD7, 0xB1, 0x49, 0x1F, 0x56, 0x67, + 0xA9, 0x0E, 0x45, 0xED, 0xF6, 0xCA, 0x8B, 0x03 + }, + { + 0x20, 0xBE, 0x1A, 0x87, 0x5B, 0x38, 0xC5, 0x73, + 0xDD, 0x7F, 0xAA, 0xA0, 0xDE, 0x48, 0x9D, 0x65, + 0x5C, 0x11, 0xEF, 0xB6, 0xA5, 0x52, 0x69, 0x8E, + 0x07, 0xA2, 0xD3, 0x31, 0xB5, 0xF6, 0x55, 0xC3 + }, + { + 0xBE, 0x1F, 0xE3, 0xC4, 0xC0, 0x40, 0x18, 0xC5, + 0x4C, 0x4A, 0x0F, 0x6B, 0x9A, 0x2E, 0xD3, 0xC5, + 0x3A, 0xBE, 0x3A, 0x9F, 0x76, 0xB4, 0xD2, 0x6D, + 0xE5, 0x6F, 0xC9, 0xAE, 0x95, 0x05, 0x9A, 0x99 + }, + { + 0xE3, 0xE3, 0xAC, 0xE5, 0x37, 0xEB, 0x3E, 0xDD, + 0x84, 0x63, 0xD9, 0xAD, 0x35, 0x82, 0xE1, 0x3C, + 0xF8, 0x65, 0x33, 0xFF, 0xDE, 0x43, 0xD6, 0x68, + 0xDD, 0x2E, 0x93, 0xBB, 0xDB, 0xD7, 0x19, 0x5A + }, + { + 0x11, 0x0C, 0x50, 0xC0, 0xBF, 0x2C, 0x6E, 0x7A, + 0xEB, 0x7E, 0x43, 0x5D, 0x92, 0xD1, 0x32, 0xAB, + 0x66, 0x55, 0x16, 0x8E, 0x78, 0xA2, 0xDE, 0xCD, + 0xEC, 0x33, 0x30, 0x77, 0x76, 0x84, 0xD9, 0xC1 + }, + { + 0xE9, 0xBA, 0x8F, 0x50, 0x5C, 0x9C, 0x80, 0xC0, + 0x86, 0x66, 0xA7, 0x01, 0xF3, 0x36, 0x7E, 0x6C, + 0xC6, 0x65, 0xF3, 0x4B, 0x22, 0xE7, 0x3C, 0x3C, + 0x04, 0x17, 0xEB, 0x1C, 0x22, 0x06, 0x08, 0x2F + }, + { + 0x26, 0xCD, 0x66, 0xFC, 0xA0, 0x23, 0x79, 0xC7, + 0x6D, 0xF1, 0x23, 0x17, 0x05, 0x2B, 0xCA, 0xFD, + 0x6C, 0xD8, 0xC3, 0xA7, 0xB8, 0x90, 0xD8, 0x05, + 0xF3, 0x6C, 0x49, 0x98, 0x97, 0x82, 0x43, 0x3A + }, + { + 0x21, 0x3F, 0x35, 0x96, 0xD6, 0xE3, 0xA5, 0xD0, + 0xE9, 0x93, 0x2C, 0xD2, 0x15, 0x91, 0x46, 0x01, + 0x5E, 0x2A, 0xBC, 0x94, 0x9F, 0x47, 0x29, 0xEE, + 0x26, 0x32, 0xFE, 0x1E, 0xDB, 0x78, 0xD3, 0x37 + }, + { + 0x10, 0x15, 0xD7, 0x01, 0x08, 0xE0, 0x3B, 0xE1, + 0xC7, 0x02, 0xFE, 0x97, 0x25, 0x36, 0x07, 0xD1, + 0x4A, 0xEE, 0x59, 0x1F, 0x24, 0x13, 0xEA, 0x67, + 0x87, 0x42, 0x7B, 0x64, 0x59, 0xFF, 0x21, 0x9A + }, + { + 0x3C, 0xA9, 0x89, 0xDE, 0x10, 0xCF, 0xE6, 0x09, + 0x90, 0x94, 0x72, 0xC8, 0xD3, 0x56, 0x10, 0x80, + 0x5B, 0x2F, 0x97, 0x77, 0x34, 0xCF, 0x65, 0x2C, + 0xC6, 0x4B, 0x3B, 0xFC, 0x88, 0x2D, 0x5D, 0x89 + }, + { + 0xB6, 0x15, 0x6F, 0x72, 0xD3, 0x80, 0xEE, 0x9E, + 0xA6, 0xAC, 0xD1, 0x90, 0x46, 0x4F, 0x23, 0x07, + 0xA5, 0xC1, 0x79, 0xEF, 0x01, 0xFD, 0x71, 0xF9, + 0x9F, 0x2D, 0x0F, 0x7A, 0x57, 0x36, 0x0A, 0xEA + }, + { + 0xC0, 0x3B, 0xC6, 0x42, 0xB2, 0x09, 0x59, 0xCB, + 0xE1, 0x33, 0xA0, 0x30, 0x3E, 0x0C, 0x1A, 0xBF, + 0xF3, 0xE3, 0x1E, 0xC8, 0xE1, 0xA3, 0x28, 0xEC, + 0x85, 0x65, 0xC3, 0x6D, 0xEC, 0xFF, 0x52, 0x65 + }, + { + 0x2C, 0x3E, 0x08, 0x17, 0x6F, 0x76, 0x0C, 0x62, + 0x64, 0xC3, 0xA2, 0xCD, 0x66, 0xFE, 0xC6, 0xC3, + 0xD7, 0x8D, 0xE4, 0x3F, 0xC1, 0x92, 0x45, 0x7B, + 0x2A, 0x4A, 0x66, 0x0A, 0x1E, 0x0E, 0xB2, 0x2B + }, + { + 0xF7, 0x38, 0xC0, 0x2F, 0x3C, 0x1B, 0x19, 0x0C, + 0x51, 0x2B, 0x1A, 0x32, 0xDE, 0xAB, 0xF3, 0x53, + 0x72, 0x8E, 0x0E, 0x9A, 0xB0, 0x34, 0x49, 0x0E, + 0x3C, 0x34, 0x09, 0x94, 0x6A, 0x97, 0xAE, 0xEC + }, + { + 0x8B, 0x18, 0x80, 0xDF, 0x30, 0x1C, 0xC9, 0x63, + 0x41, 0x88, 0x11, 0x08, 0x89, 0x64, 0x83, 0x92, + 0x87, 0xFF, 0x7F, 0xE3, 0x1C, 0x49, 0xEA, 0x6E, + 0xBD, 0x9E, 0x48, 0xBD, 0xEE, 0xE4, 0x97, 0xC5 + }, + { + 0x1E, 0x75, 0xCB, 0x21, 0xC6, 0x09, 0x89, 0x02, + 0x03, 0x75, 0xF1, 0xA7, 0xA2, 0x42, 0x83, 0x9F, + 0x0B, 0x0B, 0x68, 0x97, 0x3A, 0x4C, 0x2A, 0x05, + 0xCF, 0x75, 0x55, 0xED, 0x5A, 0xAE, 0xC4, 0xC1 + }, + { + 0x62, 0xBF, 0x8A, 0x9C, 0x32, 0xA5, 0xBC, 0xCF, + 0x29, 0x0B, 0x6C, 0x47, 0x4D, 0x75, 0xB2, 0xA2, + 0xA4, 0x09, 0x3F, 0x1A, 0x9E, 0x27, 0x13, 0x94, + 0x33, 0xA8, 0xF2, 0xB3, 0xBC, 0xE7, 0xB8, 0xD7 + }, + { + 0x16, 0x6C, 0x83, 0x50, 0xD3, 0x17, 0x3B, 0x5E, + 0x70, 0x2B, 0x78, 0x3D, 0xFD, 0x33, 0xC6, 0x6E, + 0xE0, 0x43, 0x27, 0x42, 0xE9, 0xB9, 0x2B, 0x99, + 0x7F, 0xD2, 0x3C, 0x60, 0xDC, 0x67, 0x56, 0xCA + }, + { + 0x04, 0x4A, 0x14, 0xD8, 0x22, 0xA9, 0x0C, 0xAC, + 0xF2, 0xF5, 0xA1, 0x01, 0x42, 0x8A, 0xDC, 0x8F, + 0x41, 0x09, 0x38, 0x6C, 0xCB, 0x15, 0x8B, 0xF9, + 0x05, 0xC8, 0x61, 0x8B, 0x8E, 0xE2, 0x4E, 0xC3 + }, + { + 0x38, 0x7D, 0x39, 0x7E, 0xA4, 0x3A, 0x99, 0x4B, + 0xE8, 0x4D, 0x2D, 0x54, 0x4A, 0xFB, 0xE4, 0x81, + 0xA2, 0x00, 0x0F, 0x55, 0x25, 0x26, 0x96, 0xBB, + 0xA2, 0xC5, 0x0C, 0x8E, 0xBD, 0x10, 0x13, 0x47 + }, + { + 0x56, 0xF8, 0xCC, 0xF1, 0xF8, 0x64, 0x09, 0xB4, + 0x6C, 0xE3, 0x61, 0x66, 0xAE, 0x91, 0x65, 0x13, + 0x84, 0x41, 0x57, 0x75, 0x89, 0xDB, 0x08, 0xCB, + 0xC5, 0xF6, 0x6C, 0xA2, 0x97, 0x43, 0xB9, 0xFD + }, + { + 0x97, 0x06, 0xC0, 0x92, 0xB0, 0x4D, 0x91, 0xF5, + 0x3D, 0xFF, 0x91, 0xFA, 0x37, 0xB7, 0x49, 0x3D, + 0x28, 0xB5, 0x76, 0xB5, 0xD7, 0x10, 0x46, 0x9D, + 0xF7, 0x94, 0x01, 0x66, 0x22, 0x36, 0xFC, 0x03 + }, + { + 0x87, 0x79, 0x68, 0x68, 0x6C, 0x06, 0x8C, 0xE2, + 0xF7, 0xE2, 0xAD, 0xCF, 0xF6, 0x8B, 0xF8, 0x74, + 0x8E, 0xDF, 0x3C, 0xF8, 0x62, 0xCF, 0xB4, 0xD3, + 0x94, 0x7A, 0x31, 0x06, 0x95, 0x80, 0x54, 0xE3 + }, + { + 0x88, 0x17, 0xE5, 0x71, 0x98, 0x79, 0xAC, 0xF7, + 0x02, 0x47, 0x87, 0xEC, 0xCD, 0xB2, 0x71, 0x03, + 0x55, 0x66, 0xCF, 0xA3, 0x33, 0xE0, 0x49, 0x40, + 0x7C, 0x01, 0x78, 0xCC, 0xC5, 0x7A, 0x5B, 0x9F + }, + { + 0x89, 0x38, 0x24, 0x9E, 0x4B, 0x50, 0xCA, 0xDA, + 0xCC, 0xDF, 0x5B, 0x18, 0x62, 0x13, 0x26, 0xCB, + 0xB1, 0x52, 0x53, 0xE3, 0x3A, 0x20, 0xF5, 0x63, + 0x6E, 0x99, 0x5D, 0x72, 0x47, 0x8D, 0xE4, 0x72 + }, + { + 0xF1, 0x64, 0xAB, 0xBA, 0x49, 0x63, 0xA4, 0x4D, + 0x10, 0x72, 0x57, 0xE3, 0x23, 0x2D, 0x90, 0xAC, + 0xA5, 0xE6, 0x6A, 0x14, 0x08, 0x24, 0x8C, 0x51, + 0x74, 0x1E, 0x99, 0x1D, 0xB5, 0x22, 0x77, 0x56 + }, + { + 0xD0, 0x55, 0x63, 0xE2, 0xB1, 0xCB, 0xA0, 0xC4, + 0xA2, 0xA1, 0xE8, 0xBD, 0xE3, 0xA1, 0xA0, 0xD9, + 0xF5, 0xB4, 0x0C, 0x85, 0xA0, 0x70, 0xD6, 0xF5, + 0xFB, 0x21, 0x06, 0x6E, 0xAD, 0x5D, 0x06, 0x01 + }, + { + 0x03, 0xFB, 0xB1, 0x63, 0x84, 0xF0, 0xA3, 0x86, + 0x6F, 0x4C, 0x31, 0x17, 0x87, 0x76, 0x66, 0xEF, + 0xBF, 0x12, 0x45, 0x97, 0x56, 0x4B, 0x29, 0x3D, + 0x4A, 0xAB, 0x0D, 0x26, 0x9F, 0xAB, 0xDD, 0xFA + }, + { + 0x5F, 0xA8, 0x48, 0x6A, 0xC0, 0xE5, 0x29, 0x64, + 0xD1, 0x88, 0x1B, 0xBE, 0x33, 0x8E, 0xB5, 0x4B, + 0xE2, 0xF7, 0x19, 0x54, 0x92, 0x24, 0x89, 0x20, + 0x57, 0xB4, 0xDA, 0x04, 0xBA, 0x8B, 0x34, 0x75 + }, + { + 0xCD, 0xFA, 0xBC, 0xEE, 0x46, 0x91, 0x11, 0x11, + 0x23, 0x6A, 0x31, 0x70, 0x8B, 0x25, 0x39, 0xD7, + 0x1F, 0xC2, 0x11, 0xD9, 0xB0, 0x9C, 0x0D, 0x85, + 0x30, 0xA1, 0x1E, 0x1D, 0xBF, 0x6E, 0xED, 0x01 + }, + { + 0x4F, 0x82, 0xDE, 0x03, 0xB9, 0x50, 0x47, 0x93, + 0xB8, 0x2A, 0x07, 0xA0, 0xBD, 0xCD, 0xFF, 0x31, + 0x4D, 0x75, 0x9E, 0x7B, 0x62, 0xD2, 0x6B, 0x78, + 0x49, 0x46, 0xB0, 0xD3, 0x6F, 0x91, 0x6F, 0x52 + }, + { + 0x25, 0x9E, 0xC7, 0xF1, 0x73, 0xBC, 0xC7, 0x6A, + 0x09, 0x94, 0xC9, 0x67, 0xB4, 0xF5, 0xF0, 0x24, + 0xC5, 0x60, 0x57, 0xFB, 0x79, 0xC9, 0x65, 0xC4, + 0xFA, 0xE4, 0x18, 0x75, 0xF0, 0x6A, 0x0E, 0x4C + }, + { + 0x19, 0x3C, 0xC8, 0xE7, 0xC3, 0xE0, 0x8B, 0xB3, + 0x0F, 0x54, 0x37, 0xAA, 0x27, 0xAD, 0xE1, 0xF1, + 0x42, 0x36, 0x9B, 0x24, 0x6A, 0x67, 0x5B, 0x23, + 0x83, 0xE6, 0xDA, 0x9B, 0x49, 0xA9, 0x80, 0x9E + }, + { + 0x5C, 0x10, 0x89, 0x6F, 0x0E, 0x28, 0x56, 0xB2, + 0xA2, 0xEE, 0xE0, 0xFE, 0x4A, 0x2C, 0x16, 0x33, + 0x56, 0x5D, 0x18, 0xF0, 0xE9, 0x3E, 0x1F, 0xAB, + 0x26, 0xC3, 0x73, 0xE8, 0xF8, 0x29, 0x65, 0x4D + }, + { + 0xF1, 0x60, 0x12, 0xD9, 0x3F, 0x28, 0x85, 0x1A, + 0x1E, 0xB9, 0x89, 0xF5, 0xD0, 0xB4, 0x3F, 0x3F, + 0x39, 0xCA, 0x73, 0xC9, 0xA6, 0x2D, 0x51, 0x81, + 0xBF, 0xF2, 0x37, 0x53, 0x6B, 0xD3, 0x48, 0xC3 + }, + { + 0x29, 0x66, 0xB3, 0xCF, 0xAE, 0x1E, 0x44, 0xEA, + 0x99, 0x6D, 0xC5, 0xD6, 0x86, 0xCF, 0x25, 0xFA, + 0x05, 0x3F, 0xB6, 0xF6, 0x72, 0x01, 0xB9, 0xE4, + 0x6E, 0xAD, 0xE8, 0x5D, 0x0A, 0xD6, 0xB8, 0x06 + }, + { + 0xDD, 0xB8, 0x78, 0x24, 0x85, 0xE9, 0x00, 0xBC, + 0x60, 0xBC, 0xF4, 0xC3, 0x3A, 0x6F, 0xD5, 0x85, + 0x68, 0x0C, 0xC6, 0x83, 0xD5, 0x16, 0xEF, 0xA0, + 0x3E, 0xB9, 0x98, 0x5F, 0xAD, 0x87, 0x15, 0xFB + }, + { + 0x4C, 0x4D, 0x6E, 0x71, 0xAE, 0xA0, 0x57, 0x86, + 0x41, 0x31, 0x48, 0xFC, 0x7A, 0x78, 0x6B, 0x0E, + 0xCA, 0xF5, 0x82, 0xCF, 0xF1, 0x20, 0x9F, 0x5A, + 0x80, 0x9F, 0xBA, 0x85, 0x04, 0xCE, 0x66, 0x2C + }, + { + 0xFB, 0x4C, 0x5E, 0x86, 0xD7, 0xB2, 0x22, 0x9B, + 0x99, 0xB8, 0xBA, 0x6D, 0x94, 0xC2, 0x47, 0xEF, + 0x96, 0x4A, 0xA3, 0xA2, 0xBA, 0xE8, 0xED, 0xC7, + 0x75, 0x69, 0xF2, 0x8D, 0xBB, 0xFF, 0x2D, 0x4E + }, + { + 0xE9, 0x4F, 0x52, 0x6D, 0xE9, 0x01, 0x96, 0x33, + 0xEC, 0xD5, 0x4A, 0xC6, 0x12, 0x0F, 0x23, 0x95, + 0x8D, 0x77, 0x18, 0xF1, 0xE7, 0x71, 0x7B, 0xF3, + 0x29, 0x21, 0x1A, 0x4F, 0xAE, 0xED, 0x4E, 0x6D + }, + { + 0xCB, 0xD6, 0x66, 0x0A, 0x10, 0xDB, 0x3F, 0x23, + 0xF7, 0xA0, 0x3D, 0x4B, 0x9D, 0x40, 0x44, 0xC7, + 0x93, 0x2B, 0x28, 0x01, 0xAC, 0x89, 0xD6, 0x0B, + 0xC9, 0xEB, 0x92, 0xD6, 0x5A, 0x46, 0xC2, 0xA0 + }, + { + 0x88, 0x18, 0xBB, 0xD3, 0xDB, 0x4D, 0xC1, 0x23, + 0xB2, 0x5C, 0xBB, 0xA5, 0xF5, 0x4C, 0x2B, 0xC4, + 0xB3, 0xFC, 0xF9, 0xBF, 0x7D, 0x7A, 0x77, 0x09, + 0xF4, 0xAE, 0x58, 0x8B, 0x26, 0x7C, 0x4E, 0xCE + }, + { + 0xC6, 0x53, 0x82, 0x51, 0x3F, 0x07, 0x46, 0x0D, + 0xA3, 0x98, 0x33, 0xCB, 0x66, 0x6C, 0x5E, 0xD8, + 0x2E, 0x61, 0xB9, 0xE9, 0x98, 0xF4, 0xB0, 0xC4, + 0x28, 0x7C, 0xEE, 0x56, 0xC3, 0xCC, 0x9B, 0xCD + }, + { + 0x89, 0x75, 0xB0, 0x57, 0x7F, 0xD3, 0x55, 0x66, + 0xD7, 0x50, 0xB3, 0x62, 0xB0, 0x89, 0x7A, 0x26, + 0xC3, 0x99, 0x13, 0x6D, 0xF0, 0x7B, 0xAB, 0xAB, + 0xBD, 0xE6, 0x20, 0x3F, 0xF2, 0x95, 0x4E, 0xD4 + }, + { + 0x21, 0xFE, 0x0C, 0xEB, 0x00, 0x52, 0xBE, 0x7F, + 0xB0, 0xF0, 0x04, 0x18, 0x7C, 0xAC, 0xD7, 0xDE, + 0x67, 0xFA, 0x6E, 0xB0, 0x93, 0x8D, 0x92, 0x76, + 0x77, 0xF2, 0x39, 0x8C, 0x13, 0x23, 0x17, 0xA8 + }, + { + 0x2E, 0xF7, 0x3F, 0x3C, 0x26, 0xF1, 0x2D, 0x93, + 0x88, 0x9F, 0x3C, 0x78, 0xB6, 0xA6, 0x6C, 0x1D, + 0x52, 0xB6, 0x49, 0xDC, 0x9E, 0x85, 0x6E, 0x2C, + 0x17, 0x2E, 0xA7, 0xC5, 0x8A, 0xC2, 0xB5, 0xE3 + }, + { + 0x38, 0x8A, 0x3C, 0xD5, 0x6D, 0x73, 0x86, 0x7A, + 0xBB, 0x5F, 0x84, 0x01, 0x49, 0x2B, 0x6E, 0x26, + 0x81, 0xEB, 0x69, 0x85, 0x1E, 0x76, 0x7F, 0xD8, + 0x42, 0x10, 0xA5, 0x60, 0x76, 0xFB, 0x3D, 0xD3 + }, + { + 0xAF, 0x53, 0x3E, 0x02, 0x2F, 0xC9, 0x43, 0x9E, + 0x4E, 0x3C, 0xB8, 0x38, 0xEC, 0xD1, 0x86, 0x92, + 0x23, 0x2A, 0xDF, 0x6F, 0xE9, 0x83, 0x95, 0x26, + 0xD3, 0xC3, 0xDD, 0x1B, 0x71, 0x91, 0x0B, 0x1A + }, + { + 0x75, 0x1C, 0x09, 0xD4, 0x1A, 0x93, 0x43, 0x88, + 0x2A, 0x81, 0xCD, 0x13, 0xEE, 0x40, 0x81, 0x8D, + 0x12, 0xEB, 0x44, 0xC6, 0xC7, 0xF4, 0x0D, 0xF1, + 0x6E, 0x4A, 0xEA, 0x8F, 0xAB, 0x91, 0x97, 0x2A + }, + { + 0x5B, 0x73, 0xDD, 0xB6, 0x8D, 0x9D, 0x2B, 0x0A, + 0xA2, 0x65, 0xA0, 0x79, 0x88, 0xD6, 0xB8, 0x8A, + 0xE9, 0xAA, 0xC5, 0x82, 0xAF, 0x83, 0x03, 0x2F, + 0x8A, 0x9B, 0x21, 0xA2, 0xE1, 0xB7, 0xBF, 0x18 + }, + { + 0x3D, 0xA2, 0x91, 0x26, 0xC7, 0xC5, 0xD7, 0xF4, + 0x3E, 0x64, 0x24, 0x2A, 0x79, 0xFE, 0xAA, 0x4E, + 0xF3, 0x45, 0x9C, 0xDE, 0xCC, 0xC8, 0x98, 0xED, + 0x59, 0xA9, 0x7F, 0x6E, 0xC9, 0x3B, 0x9D, 0xAB + }, + { + 0x56, 0x6D, 0xC9, 0x20, 0x29, 0x3D, 0xA5, 0xCB, + 0x4F, 0xE0, 0xAA, 0x8A, 0xBD, 0xA8, 0xBB, 0xF5, + 0x6F, 0x55, 0x23, 0x13, 0xBF, 0xF1, 0x90, 0x46, + 0x64, 0x1E, 0x36, 0x15, 0xC1, 0xE3, 0xED, 0x3F + }, + { + 0x41, 0x15, 0xBE, 0xA0, 0x2F, 0x73, 0xF9, 0x7F, + 0x62, 0x9E, 0x5C, 0x55, 0x90, 0x72, 0x0C, 0x01, + 0xE7, 0xE4, 0x49, 0xAE, 0x2A, 0x66, 0x97, 0xD4, + 0xD2, 0x78, 0x33, 0x21, 0x30, 0x36, 0x92, 0xF9 + }, + { + 0x4C, 0xE0, 0x8F, 0x47, 0x62, 0x46, 0x8A, 0x76, + 0x70, 0x01, 0x21, 0x64, 0x87, 0x8D, 0x68, 0x34, + 0x0C, 0x52, 0xA3, 0x5E, 0x66, 0xC1, 0x88, 0x4D, + 0x5C, 0x86, 0x48, 0x89, 0xAB, 0xC9, 0x66, 0x77 + }, + { + 0x81, 0xEA, 0x0B, 0x78, 0x04, 0x12, 0x4E, 0x0C, + 0x22, 0xEA, 0x5F, 0xC7, 0x11, 0x04, 0xA2, 0xAF, + 0xCB, 0x52, 0xA1, 0xFA, 0x81, 0x6F, 0x3E, 0xCB, + 0x7D, 0xCB, 0x5D, 0x9D, 0xEA, 0x17, 0x86, 0xD0 + }, + { + 0xFE, 0x36, 0x27, 0x33, 0xB0, 0x5F, 0x6B, 0xED, + 0xAF, 0x93, 0x79, 0xD7, 0xF7, 0x93, 0x6E, 0xDE, + 0x20, 0x9B, 0x1F, 0x83, 0x23, 0xC3, 0x92, 0x25, + 0x49, 0xD9, 0xE7, 0x36, 0x81, 0xB5, 0xDB, 0x7B + }, + { + 0xEF, 0xF3, 0x7D, 0x30, 0xDF, 0xD2, 0x03, 0x59, + 0xBE, 0x4E, 0x73, 0xFD, 0xF4, 0x0D, 0x27, 0x73, + 0x4B, 0x3D, 0xF9, 0x0A, 0x97, 0xA5, 0x5E, 0xD7, + 0x45, 0x29, 0x72, 0x94, 0xCA, 0x85, 0xD0, 0x9F + }, + { + 0x17, 0x2F, 0xFC, 0x67, 0x15, 0x3D, 0x12, 0xE0, + 0xCA, 0x76, 0xA8, 0xB6, 0xCD, 0x5D, 0x47, 0x31, + 0x88, 0x5B, 0x39, 0xCE, 0x0C, 0xAC, 0x93, 0xA8, + 0x97, 0x2A, 0x18, 0x00, 0x6C, 0x8B, 0x8B, 0xAF + }, + { + 0xC4, 0x79, 0x57, 0xF1, 0xCC, 0x88, 0xE8, 0x3E, + 0xF9, 0x44, 0x58, 0x39, 0x70, 0x9A, 0x48, 0x0A, + 0x03, 0x6B, 0xED, 0x5F, 0x88, 0xAC, 0x0F, 0xCC, + 0x8E, 0x1E, 0x70, 0x3F, 0xFA, 0xAC, 0x13, 0x2C + }, + { + 0x30, 0xF3, 0x54, 0x83, 0x70, 0xCF, 0xDC, 0xED, + 0xA5, 0xC3, 0x7B, 0x56, 0x9B, 0x61, 0x75, 0xE7, + 0x99, 0xEE, 0xF1, 0xA6, 0x2A, 0xAA, 0x94, 0x32, + 0x45, 0xAE, 0x76, 0x69, 0xC2, 0x27, 0xA7, 0xB5 + }, + { + 0xC9, 0x5D, 0xCB, 0x3C, 0xF1, 0xF2, 0x7D, 0x0E, + 0xEF, 0x2F, 0x25, 0xD2, 0x41, 0x38, 0x70, 0x90, + 0x4A, 0x87, 0x7C, 0x4A, 0x56, 0xC2, 0xDE, 0x1E, + 0x83, 0xE2, 0xBC, 0x2A, 0xE2, 0xE4, 0x68, 0x21 + }, + { + 0xD5, 0xD0, 0xB5, 0xD7, 0x05, 0x43, 0x4C, 0xD4, + 0x6B, 0x18, 0x57, 0x49, 0xF6, 0x6B, 0xFB, 0x58, + 0x36, 0xDC, 0xDF, 0x6E, 0xE5, 0x49, 0xA2, 0xB7, + 0xA4, 0xAE, 0xE7, 0xF5, 0x80, 0x07, 0xCA, 0xAF + }, + { + 0xBB, 0xC1, 0x24, 0xA7, 0x12, 0xF1, 0x5D, 0x07, + 0xC3, 0x00, 0xE0, 0x5B, 0x66, 0x83, 0x89, 0xA4, + 0x39, 0xC9, 0x17, 0x77, 0xF7, 0x21, 0xF8, 0x32, + 0x0C, 0x1C, 0x90, 0x78, 0x06, 0x6D, 0x2C, 0x7E + }, + { + 0xA4, 0x51, 0xB4, 0x8C, 0x35, 0xA6, 0xC7, 0x85, + 0x4C, 0xFA, 0xAE, 0x60, 0x26, 0x2E, 0x76, 0x99, + 0x08, 0x16, 0x38, 0x2A, 0xC0, 0x66, 0x7E, 0x5A, + 0x5C, 0x9E, 0x1B, 0x46, 0xC4, 0x34, 0x2D, 0xDF + }, + { + 0xB0, 0xD1, 0x50, 0xFB, 0x55, 0xE7, 0x78, 0xD0, + 0x11, 0x47, 0xF0, 0xB5, 0xD8, 0x9D, 0x99, 0xEC, + 0xB2, 0x0F, 0xF0, 0x7E, 0x5E, 0x67, 0x60, 0xD6, + 0xB6, 0x45, 0xEB, 0x5B, 0x65, 0x4C, 0x62, 0x2B + }, + { + 0x34, 0xF7, 0x37, 0xC0, 0xAB, 0x21, 0x99, 0x51, + 0xEE, 0xE8, 0x9A, 0x9F, 0x8D, 0xAC, 0x29, 0x9C, + 0x9D, 0x4C, 0x38, 0xF3, 0x3F, 0xA4, 0x94, 0xC5, + 0xC6, 0xEE, 0xFC, 0x92, 0xB6, 0xDB, 0x08, 0xBC + }, + { + 0x1A, 0x62, 0xCC, 0x3A, 0x00, 0x80, 0x0D, 0xCB, + 0xD9, 0x98, 0x91, 0x08, 0x0C, 0x1E, 0x09, 0x84, + 0x58, 0x19, 0x3A, 0x8C, 0xC9, 0xF9, 0x70, 0xEA, + 0x99, 0xFB, 0xEF, 0xF0, 0x03, 0x18, 0xC2, 0x89 + }, + { + 0xCF, 0xCE, 0x55, 0xEB, 0xAF, 0xC8, 0x40, 0xD7, + 0xAE, 0x48, 0x28, 0x1C, 0x7F, 0xD5, 0x7E, 0xC8, + 0xB4, 0x82, 0xD4, 0xB7, 0x04, 0x43, 0x74, 0x95, + 0x49, 0x5A, 0xC4, 0x14, 0xCF, 0x4A, 0x37, 0x4B + }, + { + 0x67, 0x46, 0xFA, 0xCF, 0x71, 0x14, 0x6D, 0x99, + 0x9D, 0xAB, 0xD0, 0x5D, 0x09, 0x3A, 0xE5, 0x86, + 0x64, 0x8D, 0x1E, 0xE2, 0x8E, 0x72, 0x61, 0x7B, + 0x99, 0xD0, 0xF0, 0x08, 0x6E, 0x1E, 0x45, 0xBF + }, + { + 0x57, 0x1C, 0xED, 0x28, 0x3B, 0x3F, 0x23, 0xB4, + 0xE7, 0x50, 0xBF, 0x12, 0xA2, 0xCA, 0xF1, 0x78, + 0x18, 0x47, 0xBD, 0x89, 0x0E, 0x43, 0x60, 0x3C, + 0xDC, 0x59, 0x76, 0x10, 0x2B, 0x7B, 0xB1, 0x1B + }, + { + 0xCF, 0xCB, 0x76, 0x5B, 0x04, 0x8E, 0x35, 0x02, + 0x2C, 0x5D, 0x08, 0x9D, 0x26, 0xE8, 0x5A, 0x36, + 0xB0, 0x05, 0xA2, 0xB8, 0x04, 0x93, 0xD0, 0x3A, + 0x14, 0x4E, 0x09, 0xF4, 0x09, 0xB6, 0xAF, 0xD1 + }, + { + 0x40, 0x50, 0xC7, 0xA2, 0x77, 0x05, 0xBB, 0x27, + 0xF4, 0x20, 0x89, 0xB2, 0x99, 0xF3, 0xCB, 0xE5, + 0x05, 0x4E, 0xAD, 0x68, 0x72, 0x7E, 0x8E, 0xF9, + 0x31, 0x8C, 0xE6, 0xF2, 0x5C, 0xD6, 0xF3, 0x1D + }, + { + 0x18, 0x40, 0x70, 0xBD, 0x5D, 0x26, 0x5F, 0xBD, + 0xC1, 0x42, 0xCD, 0x1C, 0x5C, 0xD0, 0xD7, 0xE4, + 0x14, 0xE7, 0x03, 0x69, 0xA2, 0x66, 0xD6, 0x27, + 0xC8, 0xFB, 0xA8, 0x4F, 0xA5, 0xE8, 0x4C, 0x34 + }, + { + 0x9E, 0xDD, 0xA9, 0xA4, 0x44, 0x39, 0x02, 0xA9, + 0x58, 0x8C, 0x0D, 0x0C, 0xCC, 0x62, 0xB9, 0x30, + 0x21, 0x84, 0x79, 0xA6, 0x84, 0x1E, 0x6F, 0xE7, + 0xD4, 0x30, 0x03, 0xF0, 0x4B, 0x1F, 0xD6, 0x43 + }, + { + 0xE4, 0x12, 0xFE, 0xEF, 0x79, 0x08, 0x32, 0x4A, + 0x6D, 0xA1, 0x84, 0x16, 0x29, 0xF3, 0x5D, 0x3D, + 0x35, 0x86, 0x42, 0x01, 0x93, 0x10, 0xEC, 0x57, + 0xC6, 0x14, 0x83, 0x6B, 0x63, 0xD3, 0x07, 0x63 + }, + { + 0x1A, 0x2B, 0x8E, 0xDF, 0xF3, 0xF9, 0xAC, 0xC1, + 0x55, 0x4F, 0xCB, 0xAE, 0x3C, 0xF1, 0xD6, 0x29, + 0x8C, 0x64, 0x62, 0xE2, 0x2E, 0x5E, 0xB0, 0x25, + 0x96, 0x84, 0xF8, 0x35, 0x01, 0x2B, 0xD1, 0x3F + }, + { + 0x28, 0x8C, 0x4A, 0xD9, 0xB9, 0x40, 0x97, 0x62, + 0xEA, 0x07, 0xC2, 0x4A, 0x41, 0xF0, 0x4F, 0x69, + 0xA7, 0xD7, 0x4B, 0xEE, 0x2D, 0x95, 0x43, 0x53, + 0x74, 0xBD, 0xE9, 0x46, 0xD7, 0x24, 0x1C, 0x7B + }, + { + 0x80, 0x56, 0x91, 0xBB, 0x28, 0x67, 0x48, 0xCF, + 0xB5, 0x91, 0xD3, 0xAE, 0xBE, 0x7E, 0x6F, 0x4E, + 0x4D, 0xC6, 0xE2, 0x80, 0x8C, 0x65, 0x14, 0x3C, + 0xC0, 0x04, 0xE4, 0xEB, 0x6F, 0xD0, 0x9D, 0x43 + }, + { + 0xD4, 0xAC, 0x8D, 0x3A, 0x0A, 0xFC, 0x6C, 0xFA, + 0x7B, 0x46, 0x0A, 0xE3, 0x00, 0x1B, 0xAE, 0xB3, + 0x6D, 0xAD, 0xB3, 0x7D, 0xA0, 0x7D, 0x2E, 0x8A, + 0xC9, 0x18, 0x22, 0xDF, 0x34, 0x8A, 0xED, 0x3D + }, + { + 0xC3, 0x76, 0x61, 0x70, 0x14, 0xD2, 0x01, 0x58, + 0xBC, 0xED, 0x3D, 0x3B, 0xA5, 0x52, 0xB6, 0xEC, + 0xCF, 0x84, 0xE6, 0x2A, 0xA3, 0xEB, 0x65, 0x0E, + 0x90, 0x02, 0x9C, 0x84, 0xD1, 0x3E, 0xEA, 0x69 + }, + { + 0xC4, 0x1F, 0x09, 0xF4, 0x3C, 0xEC, 0xAE, 0x72, + 0x93, 0xD6, 0x00, 0x7C, 0xA0, 0xA3, 0x57, 0x08, + 0x7D, 0x5A, 0xE5, 0x9B, 0xE5, 0x00, 0xC1, 0xCD, + 0x5B, 0x28, 0x9E, 0xE8, 0x10, 0xC7, 0xB0, 0x82 + }, + { + 0x03, 0xD1, 0xCE, 0xD1, 0xFB, 0xA5, 0xC3, 0x91, + 0x55, 0xC4, 0x4B, 0x77, 0x65, 0xCB, 0x76, 0x0C, + 0x78, 0x70, 0x8D, 0xCF, 0xC8, 0x0B, 0x0B, 0xD8, + 0xAD, 0xE3, 0xA5, 0x6D, 0xA8, 0x83, 0x0B, 0x29 + }, + { + 0x09, 0xBD, 0xE6, 0xF1, 0x52, 0x21, 0x8D, 0xC9, + 0x2C, 0x41, 0xD7, 0xF4, 0x53, 0x87, 0xE6, 0x3E, + 0x58, 0x69, 0xD8, 0x07, 0xEC, 0x70, 0xB8, 0x21, + 0x40, 0x5D, 0xBD, 0x88, 0x4B, 0x7F, 0xCF, 0x4B + }, + { + 0x71, 0xC9, 0x03, 0x6E, 0x18, 0x17, 0x9B, 0x90, + 0xB3, 0x7D, 0x39, 0xE9, 0xF0, 0x5E, 0xB8, 0x9C, + 0xC5, 0xFC, 0x34, 0x1F, 0xD7, 0xC4, 0x77, 0xD0, + 0xD7, 0x49, 0x32, 0x85, 0xFA, 0xCA, 0x08, 0xA4 + }, + { + 0x59, 0x16, 0x83, 0x3E, 0xBB, 0x05, 0xCD, 0x91, + 0x9C, 0xA7, 0xFE, 0x83, 0xB6, 0x92, 0xD3, 0x20, + 0x5B, 0xEF, 0x72, 0x39, 0x2B, 0x2C, 0xF6, 0xBB, + 0x0A, 0x6D, 0x43, 0xF9, 0x94, 0xF9, 0x5F, 0x11 + }, + { + 0xF6, 0x3A, 0xAB, 0x3E, 0xC6, 0x41, 0xB3, 0xB0, + 0x24, 0x96, 0x4C, 0x2B, 0x43, 0x7C, 0x04, 0xF6, + 0x04, 0x3C, 0x4C, 0x7E, 0x02, 0x79, 0x23, 0x99, + 0x95, 0x40, 0x19, 0x58, 0xF8, 0x6B, 0xBE, 0x54 + }, + { + 0xF1, 0x72, 0xB1, 0x80, 0xBF, 0xB0, 0x97, 0x40, + 0x49, 0x31, 0x20, 0xB6, 0x32, 0x6C, 0xBD, 0xC5, + 0x61, 0xE4, 0x77, 0xDE, 0xF9, 0xBB, 0xCF, 0xD2, + 0x8C, 0xC8, 0xC1, 0xC5, 0xE3, 0x37, 0x9A, 0x31 + }, + { + 0xCB, 0x9B, 0x89, 0xCC, 0x18, 0x38, 0x1D, 0xD9, + 0x14, 0x1A, 0xDE, 0x58, 0x86, 0x54, 0xD4, 0xE6, + 0xA2, 0x31, 0xD5, 0xBF, 0x49, 0xD4, 0xD5, 0x9A, + 0xC2, 0x7D, 0x86, 0x9C, 0xBE, 0x10, 0x0C, 0xF3 + }, + { + 0x7B, 0xD8, 0x81, 0x50, 0x46, 0xFD, 0xD8, 0x10, + 0xA9, 0x23, 0xE1, 0x98, 0x4A, 0xAE, 0xBD, 0xCD, + 0xF8, 0x4D, 0x87, 0xC8, 0x99, 0x2D, 0x68, 0xB5, + 0xEE, 0xB4, 0x60, 0xF9, 0x3E, 0xB3, 0xC8, 0xD7 + }, + { + 0x60, 0x7B, 0xE6, 0x68, 0x62, 0xFD, 0x08, 0xEE, + 0x5B, 0x19, 0xFA, 0xCA, 0xC0, 0x9D, 0xFD, 0xBC, + 0xD4, 0x0C, 0x31, 0x21, 0x01, 0xD6, 0x6E, 0x6E, + 0xBD, 0x2B, 0x84, 0x1F, 0x1B, 0x9A, 0x93, 0x25 + }, + { + 0x9F, 0xE0, 0x3B, 0xBE, 0x69, 0xAB, 0x18, 0x34, + 0xF5, 0x21, 0x9B, 0x0D, 0xA8, 0x8A, 0x08, 0xB3, + 0x0A, 0x66, 0xC5, 0x91, 0x3F, 0x01, 0x51, 0x96, + 0x3C, 0x36, 0x05, 0x60, 0xDB, 0x03, 0x87, 0xB3 + }, + { + 0x90, 0xA8, 0x35, 0x85, 0x71, 0x7B, 0x75, 0xF0, + 0xE9, 0xB7, 0x25, 0xE0, 0x55, 0xEE, 0xEE, 0xB9, + 0xE7, 0xA0, 0x28, 0xEA, 0x7E, 0x6C, 0xBC, 0x07, + 0xB2, 0x09, 0x17, 0xEC, 0x03, 0x63, 0xE3, 0x8C + }, + { + 0x33, 0x6E, 0xA0, 0x53, 0x0F, 0x4A, 0x74, 0x69, + 0x12, 0x6E, 0x02, 0x18, 0x58, 0x7E, 0xBB, 0xDE, + 0x33, 0x58, 0xA0, 0xB3, 0x1C, 0x29, 0xD2, 0x00, + 0xF7, 0xDC, 0x7E, 0xB1, 0x5C, 0x6A, 0xAD, 0xD8 + }, + { + 0xA7, 0x9E, 0x76, 0xDC, 0x0A, 0xBC, 0xA4, 0x39, + 0x6F, 0x07, 0x47, 0xCD, 0x7B, 0x74, 0x8D, 0xF9, + 0x13, 0x00, 0x76, 0x26, 0xB1, 0xD6, 0x59, 0xDA, + 0x0C, 0x1F, 0x78, 0xB9, 0x30, 0x3D, 0x01, 0xA3 + }, + { + 0x44, 0xE7, 0x8A, 0x77, 0x37, 0x56, 0xE0, 0x95, + 0x15, 0x19, 0x50, 0x4D, 0x70, 0x38, 0xD2, 0x8D, + 0x02, 0x13, 0xA3, 0x7E, 0x0C, 0xE3, 0x75, 0x37, + 0x17, 0x57, 0xBC, 0x99, 0x63, 0x11, 0xE3, 0xB8 + }, + { + 0x77, 0xAC, 0x01, 0x2A, 0x3F, 0x75, 0x4D, 0xCF, + 0xEA, 0xB5, 0xEB, 0x99, 0x6B, 0xE9, 0xCD, 0x2D, + 0x1F, 0x96, 0x11, 0x1B, 0x6E, 0x49, 0xF3, 0x99, + 0x4D, 0xF1, 0x81, 0xF2, 0x85, 0x69, 0xD8, 0x25 + }, + { + 0xCE, 0x5A, 0x10, 0xDB, 0x6F, 0xCC, 0xDA, 0xF1, + 0x40, 0xAA, 0xA4, 0xDE, 0xD6, 0x25, 0x0A, 0x9C, + 0x06, 0xE9, 0x22, 0x2B, 0xC9, 0xF9, 0xF3, 0x65, + 0x8A, 0x4A, 0xFF, 0x93, 0x5F, 0x2B, 0x9F, 0x3A + }, + { + 0xEC, 0xC2, 0x03, 0xA7, 0xFE, 0x2B, 0xE4, 0xAB, + 0xD5, 0x5B, 0xB5, 0x3E, 0x6E, 0x67, 0x35, 0x72, + 0xE0, 0x07, 0x8D, 0xA8, 0xCD, 0x37, 0x5E, 0xF4, + 0x30, 0xCC, 0x97, 0xF9, 0xF8, 0x00, 0x83, 0xAF + }, + { + 0x14, 0xA5, 0x18, 0x6D, 0xE9, 0xD7, 0xA1, 0x8B, + 0x04, 0x12, 0xB8, 0x56, 0x3E, 0x51, 0xCC, 0x54, + 0x33, 0x84, 0x0B, 0x4A, 0x12, 0x9A, 0x8F, 0xF9, + 0x63, 0xB3, 0x3A, 0x3C, 0x4A, 0xFE, 0x8E, 0xBB + }, + { + 0x13, 0xF8, 0xEF, 0x95, 0xCB, 0x86, 0xE6, 0xA6, + 0x38, 0x93, 0x1C, 0x8E, 0x10, 0x76, 0x73, 0xEB, + 0x76, 0xBA, 0x10, 0xD7, 0xC2, 0xCD, 0x70, 0xB9, + 0xD9, 0x92, 0x0B, 0xBE, 0xED, 0x92, 0x94, 0x09 + }, + { + 0x0B, 0x33, 0x8F, 0x4E, 0xE1, 0x2F, 0x2D, 0xFC, + 0xB7, 0x87, 0x13, 0x37, 0x79, 0x41, 0xE0, 0xB0, + 0x63, 0x21, 0x52, 0x58, 0x1D, 0x13, 0x32, 0x51, + 0x6E, 0x4A, 0x2C, 0xAB, 0x19, 0x42, 0xCC, 0xA4 + }, + { + 0xEA, 0xAB, 0x0E, 0xC3, 0x7B, 0x3B, 0x8A, 0xB7, + 0x96, 0xE9, 0xF5, 0x72, 0x38, 0xDE, 0x14, 0xA2, + 0x64, 0xA0, 0x76, 0xF3, 0x88, 0x7D, 0x86, 0xE2, + 0x9B, 0xB5, 0x90, 0x6D, 0xB5, 0xA0, 0x0E, 0x02 + }, + { + 0x23, 0xCB, 0x68, 0xB8, 0xC0, 0xE6, 0xDC, 0x26, + 0xDC, 0x27, 0x76, 0x6D, 0xDC, 0x0A, 0x13, 0xA9, + 0x94, 0x38, 0xFD, 0x55, 0x61, 0x7A, 0xA4, 0x09, + 0x5D, 0x8F, 0x96, 0x97, 0x20, 0xC8, 0x72, 0xDF + }, + { + 0x09, 0x1D, 0x8E, 0xE3, 0x0D, 0x6F, 0x29, 0x68, + 0xD4, 0x6B, 0x68, 0x7D, 0xD6, 0x52, 0x92, 0x66, + 0x57, 0x42, 0xDE, 0x0B, 0xB8, 0x3D, 0xCC, 0x00, + 0x04, 0xC7, 0x2C, 0xE1, 0x00, 0x07, 0xA5, 0x49 + }, + { + 0x7F, 0x50, 0x7A, 0xBC, 0x6D, 0x19, 0xBA, 0x00, + 0xC0, 0x65, 0xA8, 0x76, 0xEC, 0x56, 0x57, 0x86, + 0x88, 0x82, 0xD1, 0x8A, 0x22, 0x1B, 0xC4, 0x6C, + 0x7A, 0x69, 0x12, 0x54, 0x1F, 0x5B, 0xC7, 0xBA + }, + { + 0xA0, 0x60, 0x7C, 0x24, 0xE1, 0x4E, 0x8C, 0x22, + 0x3D, 0xB0, 0xD7, 0x0B, 0x4D, 0x30, 0xEE, 0x88, + 0x01, 0x4D, 0x60, 0x3F, 0x43, 0x7E, 0x9E, 0x02, + 0xAA, 0x7D, 0xAF, 0xA3, 0xCD, 0xFB, 0xAD, 0x94 + }, + { + 0xDD, 0xBF, 0xEA, 0x75, 0xCC, 0x46, 0x78, 0x82, + 0xEB, 0x34, 0x83, 0xCE, 0x5E, 0x2E, 0x75, 0x6A, + 0x4F, 0x47, 0x01, 0xB7, 0x6B, 0x44, 0x55, 0x19, + 0xE8, 0x9F, 0x22, 0xD6, 0x0F, 0xA8, 0x6E, 0x06 + }, + { + 0x0C, 0x31, 0x1F, 0x38, 0xC3, 0x5A, 0x4F, 0xB9, + 0x0D, 0x65, 0x1C, 0x28, 0x9D, 0x48, 0x68, 0x56, + 0xCD, 0x14, 0x13, 0xDF, 0x9B, 0x06, 0x77, 0xF5, + 0x3E, 0xCE, 0x2C, 0xD9, 0xE4, 0x77, 0xC6, 0x0A + }, + { + 0x46, 0xA7, 0x3A, 0x8D, 0xD3, 0xE7, 0x0F, 0x59, + 0xD3, 0x94, 0x2C, 0x01, 0xDF, 0x59, 0x9D, 0xEF, + 0x78, 0x3C, 0x9D, 0xA8, 0x2F, 0xD8, 0x32, 0x22, + 0xCD, 0x66, 0x2B, 0x53, 0xDC, 0xE7, 0xDB, 0xDF + }, + { + 0xAD, 0x03, 0x8F, 0xF9, 0xB1, 0x4D, 0xE8, 0x4A, + 0x80, 0x1E, 0x4E, 0x62, 0x1C, 0xE5, 0xDF, 0x02, + 0x9D, 0xD9, 0x35, 0x20, 0xD0, 0xC2, 0xFA, 0x38, + 0xBF, 0xF1, 0x76, 0xA8, 0xB1, 0xD1, 0x69, 0x8C + }, + { + 0xAB, 0x70, 0xC5, 0xDF, 0xBD, 0x1E, 0xA8, 0x17, + 0xFE, 0xD0, 0xCD, 0x06, 0x72, 0x93, 0xAB, 0xF3, + 0x19, 0xE5, 0xD7, 0x90, 0x1C, 0x21, 0x41, 0xD5, + 0xD9, 0x9B, 0x23, 0xF0, 0x3A, 0x38, 0xE7, 0x48 + }, + { + 0x1F, 0xFF, 0xDA, 0x67, 0x93, 0x2B, 0x73, 0xC8, + 0xEC, 0xAF, 0x00, 0x9A, 0x34, 0x91, 0xA0, 0x26, + 0x95, 0x3B, 0xAB, 0xFE, 0x1F, 0x66, 0x3B, 0x06, + 0x97, 0xC3, 0xC4, 0xAE, 0x8B, 0x2E, 0x7D, 0xCB + }, + { + 0xB0, 0xD2, 0xCC, 0x19, 0x47, 0x2D, 0xD5, 0x7F, + 0x2B, 0x17, 0xEF, 0xC0, 0x3C, 0x8D, 0x58, 0xC2, + 0x28, 0x3D, 0xBB, 0x19, 0xDA, 0x57, 0x2F, 0x77, + 0x55, 0x85, 0x5A, 0xA9, 0x79, 0x43, 0x17, 0xA0 + }, + { + 0xA0, 0xD1, 0x9A, 0x6E, 0xE3, 0x39, 0x79, 0xC3, + 0x25, 0x51, 0x0E, 0x27, 0x66, 0x22, 0xDF, 0x41, + 0xF7, 0x15, 0x83, 0xD0, 0x75, 0x01, 0xB8, 0x70, + 0x71, 0x12, 0x9A, 0x0A, 0xD9, 0x47, 0x32, 0xA5 + }, + { + 0x72, 0x46, 0x42, 0xA7, 0x03, 0x2D, 0x10, 0x62, + 0xB8, 0x9E, 0x52, 0xBE, 0xA3, 0x4B, 0x75, 0xDF, + 0x7D, 0x8F, 0xE7, 0x72, 0xD9, 0xFE, 0x3C, 0x93, + 0xDD, 0xF3, 0xC4, 0x54, 0x5A, 0xB5, 0xA9, 0x9B + }, + { + 0xAD, 0xE5, 0xEA, 0xA7, 0xE6, 0x1F, 0x67, 0x2D, + 0x58, 0x7E, 0xA0, 0x3D, 0xAE, 0x7D, 0x7B, 0x55, + 0x22, 0x9C, 0x01, 0xD0, 0x6B, 0xC0, 0xA5, 0x70, + 0x14, 0x36, 0xCB, 0xD1, 0x83, 0x66, 0xA6, 0x26 + }, + { + 0x01, 0x3B, 0x31, 0xEB, 0xD2, 0x28, 0xFC, 0xDD, + 0xA5, 0x1F, 0xAB, 0xB0, 0x3B, 0xB0, 0x2D, 0x60, + 0xAC, 0x20, 0xCA, 0x21, 0x5A, 0xAF, 0xA8, 0x3B, + 0xDD, 0x85, 0x5E, 0x37, 0x55, 0xA3, 0x5F, 0x0B + }, + { + 0x33, 0x2E, 0xD4, 0x0B, 0xB1, 0x0D, 0xDE, 0x3C, + 0x95, 0x4A, 0x75, 0xD7, 0xB8, 0x99, 0x9D, 0x4B, + 0x26, 0xA1, 0xC0, 0x63, 0xC1, 0xDC, 0x6E, 0x32, + 0xC1, 0xD9, 0x1B, 0xAB, 0x7B, 0xBB, 0x7D, 0x16 + }, + { + 0xC7, 0xA1, 0x97, 0xB3, 0xA0, 0x5B, 0x56, 0x6B, + 0xCC, 0x9F, 0xAC, 0xD2, 0x0E, 0x44, 0x1D, 0x6F, + 0x6C, 0x28, 0x60, 0xAC, 0x96, 0x51, 0xCD, 0x51, + 0xD6, 0xB9, 0xD2, 0xCD, 0xEE, 0xEA, 0x03, 0x90 + }, + { + 0xBD, 0x9C, 0xF6, 0x4E, 0xA8, 0x95, 0x3C, 0x03, + 0x71, 0x08, 0xE6, 0xF6, 0x54, 0x91, 0x4F, 0x39, + 0x58, 0xB6, 0x8E, 0x29, 0xC1, 0x67, 0x00, 0xDC, + 0x18, 0x4D, 0x94, 0xA2, 0x17, 0x08, 0xFF, 0x60 + }, + { + 0x88, 0x35, 0xB0, 0xAC, 0x02, 0x11, 0x51, 0xDF, + 0x71, 0x64, 0x74, 0xCE, 0x27, 0xCE, 0x4D, 0x3C, + 0x15, 0xF0, 0xB2, 0xDA, 0xB4, 0x80, 0x03, 0xCF, + 0x3F, 0x3E, 0xFD, 0x09, 0x45, 0x10, 0x6B, 0x9A + }, + { + 0x3B, 0xFE, 0xFA, 0x33, 0x01, 0xAA, 0x55, 0xC0, + 0x80, 0x19, 0x0C, 0xFF, 0xDA, 0x8E, 0xAE, 0x51, + 0xD9, 0xAF, 0x48, 0x8B, 0x4C, 0x1F, 0x24, 0xC3, + 0xD9, 0xA7, 0x52, 0x42, 0xFD, 0x8E, 0xA0, 0x1D + }, + { + 0x08, 0x28, 0x4D, 0x14, 0x99, 0x3C, 0xD4, 0x7D, + 0x53, 0xEB, 0xAE, 0xCF, 0x0D, 0xF0, 0x47, 0x8C, + 0xC1, 0x82, 0xC8, 0x9C, 0x00, 0xE1, 0x85, 0x9C, + 0x84, 0x85, 0x16, 0x86, 0xDD, 0xF2, 0xC1, 0xB7 + }, + { + 0x1E, 0xD7, 0xEF, 0x9F, 0x04, 0xC2, 0xAC, 0x8D, + 0xB6, 0xA8, 0x64, 0xDB, 0x13, 0x10, 0x87, 0xF2, + 0x70, 0x65, 0x09, 0x8E, 0x69, 0xC3, 0xFE, 0x78, + 0x71, 0x8D, 0x9B, 0x94, 0x7F, 0x4A, 0x39, 0xD0 + }, + { + 0xC1, 0x61, 0xF2, 0xDC, 0xD5, 0x7E, 0x9C, 0x14, + 0x39, 0xB3, 0x1A, 0x9D, 0xD4, 0x3D, 0x8F, 0x3D, + 0x7D, 0xD8, 0xF0, 0xEB, 0x7C, 0xFA, 0xC6, 0xFB, + 0x25, 0xA0, 0xF2, 0x8E, 0x30, 0x6F, 0x06, 0x61 + }, + { + 0xC0, 0x19, 0x69, 0xAD, 0x34, 0xC5, 0x2C, 0xAF, + 0x3D, 0xC4, 0xD8, 0x0D, 0x19, 0x73, 0x5C, 0x29, + 0x73, 0x1A, 0xC6, 0xE7, 0xA9, 0x20, 0x85, 0xAB, + 0x92, 0x50, 0xC4, 0x8D, 0xEA, 0x48, 0xA3, 0xFC + }, + { + 0x17, 0x20, 0xB3, 0x65, 0x56, 0x19, 0xD2, 0xA5, + 0x2B, 0x35, 0x21, 0xAE, 0x0E, 0x49, 0xE3, 0x45, + 0xCB, 0x33, 0x89, 0xEB, 0xD6, 0x20, 0x8A, 0xCA, + 0xF9, 0xF1, 0x3F, 0xDA, 0xCC, 0xA8, 0xBE, 0x49 + }, + { + 0x75, 0x62, 0x88, 0x36, 0x1C, 0x83, 0xE2, 0x4C, + 0x61, 0x7C, 0xF9, 0x5C, 0x90, 0x5B, 0x22, 0xD0, + 0x17, 0xCD, 0xC8, 0x6F, 0x0B, 0xF1, 0xD6, 0x58, + 0xF4, 0x75, 0x6C, 0x73, 0x79, 0x87, 0x3B, 0x7F + }, + { + 0xE7, 0xD0, 0xED, 0xA3, 0x45, 0x26, 0x93, 0xB7, + 0x52, 0xAB, 0xCD, 0xA1, 0xB5, 0x5E, 0x27, 0x6F, + 0x82, 0x69, 0x8F, 0x5F, 0x16, 0x05, 0x40, 0x3E, + 0xFF, 0x83, 0x0B, 0xEA, 0x00, 0x71, 0xA3, 0x94 + }, + { + 0x2C, 0x82, 0xEC, 0xAA, 0x6B, 0x84, 0x80, 0x3E, + 0x04, 0x4A, 0xF6, 0x31, 0x18, 0xAF, 0xE5, 0x44, + 0x68, 0x7C, 0xB6, 0xE6, 0xC7, 0xDF, 0x49, 0xED, + 0x76, 0x2D, 0xFD, 0x7C, 0x86, 0x93, 0xA1, 0xBC + }, + { + 0x61, 0x36, 0xCB, 0xF4, 0xB4, 0x41, 0x05, 0x6F, + 0xA1, 0xE2, 0x72, 0x24, 0x98, 0x12, 0x5D, 0x6D, + 0xED, 0x45, 0xE1, 0x7B, 0x52, 0x14, 0x39, 0x59, + 0xC7, 0xF4, 0xD4, 0xE3, 0x95, 0x21, 0x8A, 0xC2 + }, + { + 0x72, 0x1D, 0x32, 0x45, 0xAA, 0xFE, 0xF2, 0x7F, + 0x6A, 0x62, 0x4F, 0x47, 0x95, 0x4B, 0x6C, 0x25, + 0x50, 0x79, 0x52, 0x6F, 0xFA, 0x25, 0xE9, 0xFF, + 0x77, 0xE5, 0xDC, 0xFF, 0x47, 0x3B, 0x15, 0x97 + }, + { + 0x9D, 0xD2, 0xFB, 0xD8, 0xCE, 0xF1, 0x6C, 0x35, + 0x3C, 0x0A, 0xC2, 0x11, 0x91, 0xD5, 0x09, 0xEB, + 0x28, 0xDD, 0x9E, 0x3E, 0x0D, 0x8C, 0xEA, 0x5D, + 0x26, 0xCA, 0x83, 0x93, 0x93, 0x85, 0x1C, 0x3A + }, + { + 0xB2, 0x39, 0x4C, 0xEA, 0xCD, 0xEB, 0xF2, 0x1B, + 0xF9, 0xDF, 0x2C, 0xED, 0x98, 0xE5, 0x8F, 0x1C, + 0x3A, 0x4B, 0xBB, 0xFF, 0x66, 0x0D, 0xD9, 0x00, + 0xF6, 0x22, 0x02, 0xD6, 0x78, 0x5C, 0xC4, 0x6E + }, + { + 0x57, 0x08, 0x9F, 0x22, 0x27, 0x49, 0xAD, 0x78, + 0x71, 0x76, 0x5F, 0x06, 0x2B, 0x11, 0x4F, 0x43, + 0xBA, 0x20, 0xEC, 0x56, 0x42, 0x2A, 0x8B, 0x1E, + 0x3F, 0x87, 0x19, 0x2C, 0x0E, 0xA7, 0x18, 0xC6 + }, + { + 0xE4, 0x9A, 0x94, 0x59, 0x96, 0x1C, 0xD3, 0x3C, + 0xDF, 0x4A, 0xAE, 0x1B, 0x10, 0x78, 0xA5, 0xDE, + 0xA7, 0xC0, 0x40, 0xE0, 0xFE, 0xA3, 0x40, 0xC9, + 0x3A, 0x72, 0x48, 0x72, 0xFC, 0x4A, 0xF8, 0x06 + }, + { + 0xED, 0xE6, 0x7F, 0x72, 0x0E, 0xFF, 0xD2, 0xCA, + 0x9C, 0x88, 0x99, 0x41, 0x52, 0xD0, 0x20, 0x1D, + 0xEE, 0x6B, 0x0A, 0x2D, 0x2C, 0x07, 0x7A, 0xCA, + 0x6D, 0xAE, 0x29, 0xF7, 0x3F, 0x8B, 0x63, 0x09 + }, + { + 0xE0, 0xF4, 0x34, 0xBF, 0x22, 0xE3, 0x08, 0x80, + 0x39, 0xC2, 0x1F, 0x71, 0x9F, 0xFC, 0x67, 0xF0, + 0xF2, 0xCB, 0x5E, 0x98, 0xA7, 0xA0, 0x19, 0x4C, + 0x76, 0xE9, 0x6B, 0xF4, 0xE8, 0xE1, 0x7E, 0x61 + }, + { + 0x27, 0x7C, 0x04, 0xE2, 0x85, 0x34, 0x84, 0xA4, + 0xEB, 0xA9, 0x10, 0xAD, 0x33, 0x6D, 0x01, 0xB4, + 0x77, 0xB6, 0x7C, 0xC2, 0x00, 0xC5, 0x9F, 0x3C, + 0x8D, 0x77, 0xEE, 0xF8, 0x49, 0x4F, 0x29, 0xCD + }, + { + 0x15, 0x6D, 0x57, 0x47, 0xD0, 0xC9, 0x9C, 0x7F, + 0x27, 0x09, 0x7D, 0x7B, 0x7E, 0x00, 0x2B, 0x2E, + 0x18, 0x5C, 0xB7, 0x2D, 0x8D, 0xD7, 0xEB, 0x42, + 0x4A, 0x03, 0x21, 0x52, 0x81, 0x61, 0x21, 0x9F + }, + { + 0x20, 0xDD, 0xD1, 0xED, 0x9B, 0x1C, 0xA8, 0x03, + 0x94, 0x6D, 0x64, 0xA8, 0x3A, 0xE4, 0x65, 0x9D, + 0xA6, 0x7F, 0xBA, 0x7A, 0x1A, 0x3E, 0xDD, 0xB1, + 0xE1, 0x03, 0xC0, 0xF5, 0xE0, 0x3E, 0x3A, 0x2C + }, + { + 0xF0, 0xAF, 0x60, 0x4D, 0x3D, 0xAB, 0xBF, 0x9A, + 0x0F, 0x2A, 0x7D, 0x3D, 0xDA, 0x6B, 0xD3, 0x8B, + 0xBA, 0x72, 0xC6, 0xD0, 0x9B, 0xE4, 0x94, 0xFC, + 0xEF, 0x71, 0x3F, 0xF1, 0x01, 0x89, 0xB6, 0xE6 + }, + { + 0x98, 0x02, 0xBB, 0x87, 0xDE, 0xF4, 0xCC, 0x10, + 0xC4, 0xA5, 0xFD, 0x49, 0xAA, 0x58, 0xDF, 0xE2, + 0xF3, 0xFD, 0xDB, 0x46, 0xB4, 0x70, 0x88, 0x14, + 0xEA, 0xD8, 0x1D, 0x23, 0xBA, 0x95, 0x13, 0x9B + }, + { + 0x4F, 0x8C, 0xE1, 0xE5, 0x1D, 0x2F, 0xE7, 0xF2, + 0x40, 0x43, 0xA9, 0x04, 0xD8, 0x98, 0xEB, 0xFC, + 0x91, 0x97, 0x54, 0x18, 0x75, 0x34, 0x13, 0xAA, + 0x09, 0x9B, 0x79, 0x5E, 0xCB, 0x35, 0xCE, 0xDB + }, + { + 0xBD, 0xDC, 0x65, 0x14, 0xD7, 0xEE, 0x6A, 0xCE, + 0x0A, 0x4A, 0xC1, 0xD0, 0xE0, 0x68, 0x11, 0x22, + 0x88, 0xCB, 0xCF, 0x56, 0x04, 0x54, 0x64, 0x27, + 0x05, 0x63, 0x01, 0x77, 0xCB, 0xA6, 0x08, 0xBD + }, + { + 0xD6, 0x35, 0x99, 0x4F, 0x62, 0x91, 0x51, 0x7B, + 0x02, 0x81, 0xFF, 0xDD, 0x49, 0x6A, 0xFA, 0x86, + 0x27, 0x12, 0xE5, 0xB3, 0xC4, 0xE5, 0x2E, 0x4C, + 0xD5, 0xFD, 0xAE, 0x8C, 0x0E, 0x72, 0xFB, 0x08 + }, + { + 0x87, 0x8D, 0x9C, 0xA6, 0x00, 0xCF, 0x87, 0xE7, + 0x69, 0xCC, 0x30, 0x5C, 0x1B, 0x35, 0x25, 0x51, + 0x86, 0x61, 0x5A, 0x73, 0xA0, 0xDA, 0x61, 0x3B, + 0x5F, 0x1C, 0x98, 0xDB, 0xF8, 0x12, 0x83, 0xEA + }, + { + 0xA6, 0x4E, 0xBE, 0x5D, 0xC1, 0x85, 0xDE, 0x9F, + 0xDD, 0xE7, 0x60, 0x7B, 0x69, 0x98, 0x70, 0x2E, + 0xB2, 0x34, 0x56, 0x18, 0x49, 0x57, 0x30, 0x7D, + 0x2F, 0xA7, 0x2E, 0x87, 0xA4, 0x77, 0x02, 0xD6 + }, + { + 0xCE, 0x50, 0xEA, 0xB7, 0xB5, 0xEB, 0x52, 0xBD, + 0xC9, 0xAD, 0x8E, 0x5A, 0x48, 0x0A, 0xB7, 0x80, + 0xCA, 0x93, 0x20, 0xE4, 0x43, 0x60, 0xB1, 0xFE, + 0x37, 0xE0, 0x3F, 0x2F, 0x7A, 0xD7, 0xDE, 0x01 + }, + { + 0xEE, 0xDD, 0xB7, 0xC0, 0xDB, 0x6E, 0x30, 0xAB, + 0xE6, 0x6D, 0x79, 0xE3, 0x27, 0x51, 0x1E, 0x61, + 0xFC, 0xEB, 0xBC, 0x29, 0xF1, 0x59, 0xB4, 0x0A, + 0x86, 0xB0, 0x46, 0xEC, 0xF0, 0x51, 0x38, 0x23 + }, + { + 0x78, 0x7F, 0xC9, 0x34, 0x40, 0xC1, 0xEC, 0x96, + 0xB5, 0xAD, 0x01, 0xC1, 0x6C, 0xF7, 0x79, 0x16, + 0xA1, 0x40, 0x5F, 0x94, 0x26, 0x35, 0x6E, 0xC9, + 0x21, 0xD8, 0xDF, 0xF3, 0xEA, 0x63, 0xB7, 0xE0 + }, + { + 0x7F, 0x0D, 0x5E, 0xAB, 0x47, 0xEE, 0xFD, 0xA6, + 0x96, 0xC0, 0xBF, 0x0F, 0xBF, 0x86, 0xAB, 0x21, + 0x6F, 0xCE, 0x46, 0x1E, 0x93, 0x03, 0xAB, 0xA6, + 0xAC, 0x37, 0x41, 0x20, 0xE8, 0x90, 0xE8, 0xDF + }, + { + 0xB6, 0x80, 0x04, 0xB4, 0x2F, 0x14, 0xAD, 0x02, + 0x9F, 0x4C, 0x2E, 0x03, 0xB1, 0xD5, 0xEB, 0x76, + 0xD5, 0x71, 0x60, 0xE2, 0x64, 0x76, 0xD2, 0x11, + 0x31, 0xBE, 0xF2, 0x0A, 0xDA, 0x7D, 0x27, 0xF4 + }, + { + 0xB0, 0xC4, 0xEB, 0x18, 0xAE, 0x25, 0x0B, 0x51, + 0xA4, 0x13, 0x82, 0xEA, 0xD9, 0x2D, 0x0D, 0xC7, + 0x45, 0x5F, 0x93, 0x79, 0xFC, 0x98, 0x84, 0x42, + 0x8E, 0x47, 0x70, 0x60, 0x8D, 0xB0, 0xFA, 0xEC + }, + { + 0xF9, 0x2B, 0x7A, 0x87, 0x0C, 0x05, 0x9F, 0x4D, + 0x46, 0x46, 0x4C, 0x82, 0x4E, 0xC9, 0x63, 0x55, + 0x14, 0x0B, 0xDC, 0xE6, 0x81, 0x32, 0x2C, 0xC3, + 0xA9, 0x92, 0xFF, 0x10, 0x3E, 0x3F, 0xEA, 0x52 + }, + { + 0x53, 0x64, 0x31, 0x26, 0x14, 0x81, 0x33, 0x98, + 0xCC, 0x52, 0x5D, 0x4C, 0x4E, 0x14, 0x6E, 0xDE, + 0xB3, 0x71, 0x26, 0x5F, 0xBA, 0x19, 0x13, 0x3A, + 0x2C, 0x3D, 0x21, 0x59, 0x29, 0x8A, 0x17, 0x42 + }, + { + 0xF6, 0x62, 0x0E, 0x68, 0xD3, 0x7F, 0xB2, 0xAF, + 0x50, 0x00, 0xFC, 0x28, 0xE2, 0x3B, 0x83, 0x22, + 0x97, 0xEC, 0xD8, 0xBC, 0xE9, 0x9E, 0x8B, 0xE4, + 0xD0, 0x4E, 0x85, 0x30, 0x9E, 0x3D, 0x33, 0x74 + }, + { + 0x53, 0x16, 0xA2, 0x79, 0x69, 0xD7, 0xFE, 0x04, + 0xFF, 0x27, 0xB2, 0x83, 0x96, 0x1B, 0xFF, 0xC3, + 0xBF, 0x5D, 0xFB, 0x32, 0xFB, 0x6A, 0x89, 0xD1, + 0x01, 0xC6, 0xC3, 0xB1, 0x93, 0x7C, 0x28, 0x71 + }, + { + 0x81, 0xD1, 0x66, 0x4F, 0xDF, 0x3C, 0xB3, 0x3C, + 0x24, 0xEE, 0xBA, 0xC0, 0xBD, 0x64, 0x24, 0x4B, + 0x77, 0xC4, 0xAB, 0xEA, 0x90, 0xBB, 0xE8, 0xB5, + 0xEE, 0x0B, 0x2A, 0xAF, 0xCF, 0x2D, 0x6A, 0x53 + }, + { + 0x34, 0x57, 0x82, 0xF2, 0x95, 0xB0, 0x88, 0x03, + 0x52, 0xE9, 0x24, 0xA0, 0x46, 0x7B, 0x5F, 0xBC, + 0x3E, 0x8F, 0x3B, 0xFB, 0xC3, 0xC7, 0xE4, 0x8B, + 0x67, 0x09, 0x1F, 0xB5, 0xE8, 0x0A, 0x94, 0x42 + }, + { + 0x79, 0x41, 0x11, 0xEA, 0x6C, 0xD6, 0x5E, 0x31, + 0x1F, 0x74, 0xEE, 0x41, 0xD4, 0x76, 0xCB, 0x63, + 0x2C, 0xE1, 0xE4, 0xB0, 0x51, 0xDC, 0x1D, 0x9E, + 0x9D, 0x06, 0x1A, 0x19, 0xE1, 0xD0, 0xBB, 0x49 + }, + { + 0x2A, 0x85, 0xDA, 0xF6, 0x13, 0x88, 0x16, 0xB9, + 0x9B, 0xF8, 0xD0, 0x8B, 0xA2, 0x11, 0x4B, 0x7A, + 0xB0, 0x79, 0x75, 0xA7, 0x84, 0x20, 0xC1, 0xA3, + 0xB0, 0x6A, 0x77, 0x7C, 0x22, 0xDD, 0x8B, 0xCB + }, + { + 0x89, 0xB0, 0xD5, 0xF2, 0x89, 0xEC, 0x16, 0x40, + 0x1A, 0x06, 0x9A, 0x96, 0x0D, 0x0B, 0x09, 0x3E, + 0x62, 0x5D, 0xA3, 0xCF, 0x41, 0xEE, 0x29, 0xB5, + 0x9B, 0x93, 0x0C, 0x58, 0x20, 0x14, 0x54, 0x55 + }, + { + 0xD0, 0xFD, 0xCB, 0x54, 0x39, 0x43, 0xFC, 0x27, + 0xD2, 0x08, 0x64, 0xF5, 0x21, 0x81, 0x47, 0x1B, + 0x94, 0x2C, 0xC7, 0x7C, 0xA6, 0x75, 0xBC, 0xB3, + 0x0D, 0xF3, 0x1D, 0x35, 0x8E, 0xF7, 0xB1, 0xEB + }, + { + 0xB1, 0x7E, 0xA8, 0xD7, 0x70, 0x63, 0xC7, 0x09, + 0xD4, 0xDC, 0x6B, 0x87, 0x94, 0x13, 0xC3, 0x43, + 0xE3, 0x79, 0x0E, 0x9E, 0x62, 0xCA, 0x85, 0xB7, + 0x90, 0x0B, 0x08, 0x6F, 0x6B, 0x75, 0xC6, 0x72 + }, + { + 0xE7, 0x1A, 0x3E, 0x2C, 0x27, 0x4D, 0xB8, 0x42, + 0xD9, 0x21, 0x14, 0xF2, 0x17, 0xE2, 0xC0, 0xEA, + 0xC8, 0xB4, 0x50, 0x93, 0xFD, 0xFD, 0x9D, 0xF4, + 0xCA, 0x71, 0x62, 0x39, 0x48, 0x62, 0xD5, 0x01 + }, + { + 0xC0, 0x47, 0x67, 0x59, 0xAB, 0x7A, 0xA3, 0x33, + 0x23, 0x4F, 0x6B, 0x44, 0xF5, 0xFD, 0x85, 0x83, + 0x90, 0xEC, 0x23, 0x69, 0x4C, 0x62, 0x2C, 0xB9, + 0x86, 0xE7, 0x69, 0xC7, 0x8E, 0xDD, 0x73, 0x3E + }, + { + 0x9A, 0xB8, 0xEA, 0xBB, 0x14, 0x16, 0x43, 0x4D, + 0x85, 0x39, 0x13, 0x41, 0xD5, 0x69, 0x93, 0xC5, + 0x54, 0x58, 0x16, 0x7D, 0x44, 0x18, 0xB1, 0x9A, + 0x0F, 0x2A, 0xD8, 0xB7, 0x9A, 0x83, 0xA7, 0x5B + }, + { + 0x79, 0x92, 0xD0, 0xBB, 0xB1, 0x5E, 0x23, 0x82, + 0x6F, 0x44, 0x3E, 0x00, 0x50, 0x5D, 0x68, 0xD3, + 0xED, 0x73, 0x72, 0x99, 0x5A, 0x5C, 0x3E, 0x49, + 0x86, 0x54, 0x10, 0x2F, 0xBC, 0xD0, 0x96, 0x4E + }, + { + 0xC0, 0x21, 0xB3, 0x00, 0x85, 0x15, 0x14, 0x35, + 0xDF, 0x33, 0xB0, 0x07, 0xCC, 0xEC, 0xC6, 0x9D, + 0xF1, 0x26, 0x9F, 0x39, 0xBA, 0x25, 0x09, 0x2B, + 0xED, 0x59, 0xD9, 0x32, 0xAC, 0x0F, 0xDC, 0x28 + }, + { + 0x91, 0xA2, 0x5E, 0xC0, 0xEC, 0x0D, 0x9A, 0x56, + 0x7F, 0x89, 0xC4, 0xBF, 0xE1, 0xA6, 0x5A, 0x0E, + 0x43, 0x2D, 0x07, 0x06, 0x4B, 0x41, 0x90, 0xE2, + 0x7D, 0xFB, 0x81, 0x90, 0x1F, 0xD3, 0x13, 0x9B + }, + { + 0x59, 0x50, 0xD3, 0x9A, 0x23, 0xE1, 0x54, 0x5F, + 0x30, 0x12, 0x70, 0xAA, 0x1A, 0x12, 0xF2, 0xE6, + 0xC4, 0x53, 0x77, 0x6E, 0x4D, 0x63, 0x55, 0xDE, + 0x42, 0x5C, 0xC1, 0x53, 0xF9, 0x81, 0x88, 0x67 + }, + { + 0xD7, 0x9F, 0x14, 0x72, 0x0C, 0x61, 0x0A, 0xF1, + 0x79, 0xA3, 0x76, 0x5D, 0x4B, 0x7C, 0x09, 0x68, + 0xF9, 0x77, 0x96, 0x2D, 0xBF, 0x65, 0x5B, 0x52, + 0x12, 0x72, 0xB6, 0xF1, 0xE1, 0x94, 0x48, 0x8E + }, + { + 0xE9, 0x53, 0x1B, 0xFC, 0x8B, 0x02, 0x99, 0x5A, + 0xEA, 0xA7, 0x5B, 0xA2, 0x70, 0x31, 0xFA, 0xDB, + 0xCB, 0xF4, 0xA0, 0xDA, 0xB8, 0x96, 0x1D, 0x92, + 0x96, 0xCD, 0x7E, 0x84, 0xD2, 0x5D, 0x60, 0x06 + }, + { + 0x34, 0xE9, 0xC2, 0x6A, 0x01, 0xD7, 0xF1, 0x61, + 0x81, 0xB4, 0x54, 0xA9, 0xD1, 0x62, 0x3C, 0x23, + 0x3C, 0xB9, 0x9D, 0x31, 0xC6, 0x94, 0x65, 0x6E, + 0x94, 0x13, 0xAC, 0xA3, 0xE9, 0x18, 0x69, 0x2F + }, + { + 0xD9, 0xD7, 0x42, 0x2F, 0x43, 0x7B, 0xD4, 0x39, + 0xDD, 0xD4, 0xD8, 0x83, 0xDA, 0xE2, 0xA0, 0x83, + 0x50, 0x17, 0x34, 0x14, 0xBE, 0x78, 0x15, 0x51, + 0x33, 0xFF, 0xF1, 0x96, 0x4C, 0x3D, 0x79, 0x72 + }, + { + 0x4A, 0xEE, 0x0C, 0x7A, 0xAF, 0x07, 0x54, 0x14, + 0xFF, 0x17, 0x93, 0xEA, 0xD7, 0xEA, 0xCA, 0x60, + 0x17, 0x75, 0xC6, 0x15, 0xDB, 0xD6, 0x0B, 0x64, + 0x0B, 0x0A, 0x9F, 0x0C, 0xE5, 0x05, 0xD4, 0x35 + }, + { + 0x6B, 0xFD, 0xD1, 0x54, 0x59, 0xC8, 0x3B, 0x99, + 0xF0, 0x96, 0xBF, 0xB4, 0x9E, 0xE8, 0x7B, 0x06, + 0x3D, 0x69, 0xC1, 0x97, 0x4C, 0x69, 0x28, 0xAC, + 0xFC, 0xFB, 0x40, 0x99, 0xF8, 0xC4, 0xEF, 0x67 + }, + { + 0x9F, 0xD1, 0xC4, 0x08, 0xFD, 0x75, 0xC3, 0x36, + 0x19, 0x3A, 0x2A, 0x14, 0xD9, 0x4F, 0x6A, 0xF5, + 0xAD, 0xF0, 0x50, 0xB8, 0x03, 0x87, 0xB4, 0xB0, + 0x10, 0xFB, 0x29, 0xF4, 0xCC, 0x72, 0x70, 0x7C + }, + { + 0x13, 0xC8, 0x84, 0x80, 0xA5, 0xD0, 0x0D, 0x6C, + 0x8C, 0x7A, 0xD2, 0x11, 0x0D, 0x76, 0xA8, 0x2D, + 0x9B, 0x70, 0xF4, 0xFA, 0x66, 0x96, 0xD4, 0xE5, + 0xDD, 0x42, 0xA0, 0x66, 0xDC, 0xAF, 0x99, 0x20 + }, + { + 0x82, 0x0E, 0x72, 0x5E, 0xE2, 0x5F, 0xE8, 0xFD, + 0x3A, 0x8D, 0x5A, 0xBE, 0x4C, 0x46, 0xC3, 0xBA, + 0x88, 0x9D, 0xE6, 0xFA, 0x91, 0x91, 0xAA, 0x22, + 0xBA, 0x67, 0xD5, 0x70, 0x54, 0x21, 0x54, 0x2B + }, + { + 0x32, 0xD9, 0x3A, 0x0E, 0xB0, 0x2F, 0x42, 0xFB, + 0xBC, 0xAF, 0x2B, 0xAD, 0x00, 0x85, 0xB2, 0x82, + 0xE4, 0x60, 0x46, 0xA4, 0xDF, 0x7A, 0xD1, 0x06, + 0x57, 0xC9, 0xD6, 0x47, 0x63, 0x75, 0xB9, 0x3E + }, + { + 0xAD, 0xC5, 0x18, 0x79, 0x05, 0xB1, 0x66, 0x9C, + 0xD8, 0xEC, 0x9C, 0x72, 0x1E, 0x19, 0x53, 0x78, + 0x6B, 0x9D, 0x89, 0xA9, 0xBA, 0xE3, 0x07, 0x80, + 0xF1, 0xE1, 0xEA, 0xB2, 0x4A, 0x00, 0x52, 0x3C + }, + { + 0xE9, 0x07, 0x56, 0xFF, 0x7F, 0x9A, 0xD8, 0x10, + 0xB2, 0x39, 0xA1, 0x0C, 0xED, 0x2C, 0xF9, 0xB2, + 0x28, 0x43, 0x54, 0xC1, 0xF8, 0xC7, 0xE0, 0xAC, + 0xCC, 0x24, 0x61, 0xDC, 0x79, 0x6D, 0x6E, 0x89 + }, + { + 0x12, 0x51, 0xF7, 0x6E, 0x56, 0x97, 0x84, 0x81, + 0x87, 0x53, 0x59, 0x80, 0x1D, 0xB5, 0x89, 0xA0, + 0xB2, 0x2F, 0x86, 0xD8, 0xD6, 0x34, 0xDC, 0x04, + 0x50, 0x6F, 0x32, 0x2E, 0xD7, 0x8F, 0x17, 0xE8 + }, + { + 0x3A, 0xFA, 0x89, 0x9F, 0xD9, 0x80, 0xE7, 0x3E, + 0xCB, 0x7F, 0x4D, 0x8B, 0x8F, 0x29, 0x1D, 0xC9, + 0xAF, 0x79, 0x6B, 0xC6, 0x5D, 0x27, 0xF9, 0x74, + 0xC6, 0xF1, 0x93, 0xC9, 0x19, 0x1A, 0x09, 0xFD + }, + { + 0xAA, 0x30, 0x5B, 0xE2, 0x6E, 0x5D, 0xED, 0xDC, + 0x3C, 0x10, 0x10, 0xCB, 0xC2, 0x13, 0xF9, 0x5F, + 0x05, 0x1C, 0x78, 0x5C, 0x5B, 0x43, 0x1E, 0x6A, + 0x7C, 0xD0, 0x48, 0xF1, 0x61, 0x78, 0x75, 0x28 + }, + { + 0x8E, 0xA1, 0x88, 0x4F, 0xF3, 0x2E, 0x9D, 0x10, + 0xF0, 0x39, 0xB4, 0x07, 0xD0, 0xD4, 0x4E, 0x7E, + 0x67, 0x0A, 0xBD, 0x88, 0x4A, 0xEE, 0xE0, 0xFB, + 0x75, 0x7A, 0xE9, 0x4E, 0xAA, 0x97, 0x37, 0x3D + }, + { + 0xD4, 0x82, 0xB2, 0x15, 0x5D, 0x4D, 0xEC, 0x6B, + 0x47, 0x36, 0xA1, 0xF1, 0x61, 0x7B, 0x53, 0xAA, + 0xA3, 0x73, 0x10, 0x27, 0x7D, 0x3F, 0xEF, 0x0C, + 0x37, 0xAD, 0x41, 0x76, 0x8F, 0xC2, 0x35, 0xB4 + }, + { + 0x4D, 0x41, 0x39, 0x71, 0x38, 0x7E, 0x7A, 0x88, + 0x98, 0xA8, 0xDC, 0x2A, 0x27, 0x50, 0x07, 0x78, + 0x53, 0x9E, 0xA2, 0x14, 0xA2, 0xDF, 0xE9, 0xB3, + 0xD7, 0xE8, 0xEB, 0xDC, 0xE5, 0xCF, 0x3D, 0xB3 + }, + { + 0x69, 0x6E, 0x5D, 0x46, 0xE6, 0xC5, 0x7E, 0x87, + 0x96, 0xE4, 0x73, 0x5D, 0x08, 0x91, 0x6E, 0x0B, + 0x79, 0x29, 0xB3, 0xCF, 0x29, 0x8C, 0x29, 0x6D, + 0x22, 0xE9, 0xD3, 0x01, 0x96, 0x53, 0x37, 0x1C + }, + { + 0x1F, 0x56, 0x47, 0xC1, 0xD3, 0xB0, 0x88, 0x22, + 0x88, 0x85, 0x86, 0x5C, 0x89, 0x40, 0x90, 0x8B, + 0xF4, 0x0D, 0x1A, 0x82, 0x72, 0x82, 0x19, 0x73, + 0xB1, 0x60, 0x00, 0x8E, 0x7A, 0x3C, 0xE2, 0xEB + }, + { + 0xB6, 0xE7, 0x6C, 0x33, 0x0F, 0x02, 0x1A, 0x5B, + 0xDA, 0x65, 0x87, 0x50, 0x10, 0xB0, 0xED, 0xF0, + 0x91, 0x26, 0xC0, 0xF5, 0x10, 0xEA, 0x84, 0x90, + 0x48, 0x19, 0x20, 0x03, 0xAE, 0xF4, 0xC6, 0x1C + }, + { + 0x3C, 0xD9, 0x52, 0xA0, 0xBE, 0xAD, 0xA4, 0x1A, + 0xBB, 0x42, 0x4C, 0xE4, 0x7F, 0x94, 0xB4, 0x2B, + 0xE6, 0x4E, 0x1F, 0xFB, 0x0F, 0xD0, 0x78, 0x22, + 0x76, 0x80, 0x79, 0x46, 0xD0, 0xD0, 0xBC, 0x55 + }, + { + 0x98, 0xD9, 0x26, 0x77, 0x43, 0x9B, 0x41, 0xB7, + 0xBB, 0x51, 0x33, 0x12, 0xAF, 0xB9, 0x2B, 0xCC, + 0x8E, 0xE9, 0x68, 0xB2, 0xE3, 0xB2, 0x38, 0xCE, + 0xCB, 0x9B, 0x0F, 0x34, 0xC9, 0xBB, 0x63, 0xD0 + }, + { + 0xEC, 0xBC, 0xA2, 0xCF, 0x08, 0xAE, 0x57, 0xD5, + 0x17, 0xAD, 0x16, 0x15, 0x8A, 0x32, 0xBF, 0xA7, + 0xDC, 0x03, 0x82, 0xEA, 0xED, 0xA1, 0x28, 0xE9, + 0x18, 0x86, 0x73, 0x4C, 0x24, 0xA0, 0xB2, 0x9D + }, + { + 0x94, 0x2C, 0xC7, 0xC0, 0xB5, 0x2E, 0x2B, 0x16, + 0xA4, 0xB8, 0x9F, 0xA4, 0xFC, 0x7E, 0x0B, 0xF6, + 0x09, 0xE2, 0x9A, 0x08, 0xC1, 0xA8, 0x54, 0x34, + 0x52, 0xB7, 0x7C, 0x7B, 0xFD, 0x11, 0xBB, 0x28 + }, + { + 0x8A, 0x06, 0x5D, 0x8B, 0x61, 0xA0, 0xDF, 0xFB, + 0x17, 0x0D, 0x56, 0x27, 0x73, 0x5A, 0x76, 0xB0, + 0xE9, 0x50, 0x60, 0x37, 0x80, 0x8C, 0xBA, 0x16, + 0xC3, 0x45, 0x00, 0x7C, 0x9F, 0x79, 0xCF, 0x8F + }, + { + 0x1B, 0x9F, 0xA1, 0x97, 0x14, 0x65, 0x9C, 0x78, + 0xFF, 0x41, 0x38, 0x71, 0x84, 0x92, 0x15, 0x36, + 0x10, 0x29, 0xAC, 0x80, 0x2B, 0x1C, 0xBC, 0xD5, + 0x4E, 0x40, 0x8B, 0xD8, 0x72, 0x87, 0xF8, 0x1F + }, + { + 0x8D, 0xAB, 0x07, 0x1B, 0xCD, 0x6C, 0x72, 0x92, + 0xA9, 0xEF, 0x72, 0x7B, 0x4A, 0xE0, 0xD8, 0x67, + 0x13, 0x30, 0x1D, 0xA8, 0x61, 0x8D, 0x9A, 0x48, + 0xAD, 0xCE, 0x55, 0xF3, 0x03, 0xA8, 0x69, 0xA1 + }, + { + 0x82, 0x53, 0xE3, 0xE7, 0xC7, 0xB6, 0x84, 0xB9, + 0xCB, 0x2B, 0xEB, 0x01, 0x4C, 0xE3, 0x30, 0xFF, + 0x3D, 0x99, 0xD1, 0x7A, 0xBB, 0xDB, 0xAB, 0xE4, + 0xF4, 0xD6, 0x74, 0xDE, 0xD5, 0x3F, 0xFC, 0x6B + }, + { + 0xF1, 0x95, 0xF3, 0x21, 0xE9, 0xE3, 0xD6, 0xBD, + 0x7D, 0x07, 0x45, 0x04, 0xDD, 0x2A, 0xB0, 0xE6, + 0x24, 0x1F, 0x92, 0xE7, 0x84, 0xB1, 0xAA, 0x27, + 0x1F, 0xF6, 0x48, 0xB1, 0xCA, 0xB6, 0xD7, 0xF6 + }, + { + 0x27, 0xE4, 0xCC, 0x72, 0x09, 0x0F, 0x24, 0x12, + 0x66, 0x47, 0x6A, 0x7C, 0x09, 0x49, 0x5F, 0x2D, + 0xB1, 0x53, 0xD5, 0xBC, 0xBD, 0x76, 0x19, 0x03, + 0xEF, 0x79, 0x27, 0x5E, 0xC5, 0x6B, 0x2E, 0xD8 + }, + { + 0x89, 0x9C, 0x24, 0x05, 0x78, 0x8E, 0x25, 0xB9, + 0x9A, 0x18, 0x46, 0x35, 0x5E, 0x64, 0x6D, 0x77, + 0xCF, 0x40, 0x00, 0x83, 0x41, 0x5F, 0x7D, 0xC5, + 0xAF, 0xE6, 0x9D, 0x6E, 0x17, 0xC0, 0x00, 0x23 + }, + { + 0xA5, 0x9B, 0x78, 0xC4, 0x90, 0x57, 0x44, 0x07, + 0x6B, 0xFE, 0xE8, 0x94, 0xDE, 0x70, 0x7D, 0x4F, + 0x12, 0x0B, 0x5C, 0x68, 0x93, 0xEA, 0x04, 0x00, + 0x29, 0x7D, 0x0B, 0xB8, 0x34, 0x72, 0x76, 0x32 + }, + { + 0x59, 0xDC, 0x78, 0xB1, 0x05, 0x64, 0x97, 0x07, + 0xA2, 0xBB, 0x44, 0x19, 0xC4, 0x8F, 0x00, 0x54, + 0x00, 0xD3, 0x97, 0x3D, 0xE3, 0x73, 0x66, 0x10, + 0x23, 0x04, 0x35, 0xB1, 0x04, 0x24, 0xB2, 0x4F + }, + { + 0xC0, 0x14, 0x9D, 0x1D, 0x7E, 0x7A, 0x63, 0x53, + 0xA6, 0xD9, 0x06, 0xEF, 0xE7, 0x28, 0xF2, 0xF3, + 0x29, 0xFE, 0x14, 0xA4, 0x14, 0x9A, 0x3E, 0xA7, + 0x76, 0x09, 0xBC, 0x42, 0xB9, 0x75, 0xDD, 0xFA + }, + { + 0xA3, 0x2F, 0x24, 0x14, 0x74, 0xA6, 0xC1, 0x69, + 0x32, 0xE9, 0x24, 0x3B, 0xE0, 0xCF, 0x09, 0xBC, + 0xDC, 0x7E, 0x0C, 0xA0, 0xE7, 0xA6, 0xA1, 0xB9, + 0xB1, 0xA0, 0xF0, 0x1E, 0x41, 0x50, 0x23, 0x77 + }, + { + 0xB2, 0x39, 0xB2, 0xE4, 0xF8, 0x18, 0x41, 0x36, + 0x1C, 0x13, 0x39, 0xF6, 0x8E, 0x2C, 0x35, 0x9F, + 0x92, 0x9A, 0xF9, 0xAD, 0x9F, 0x34, 0xE0, 0x1A, + 0xAB, 0x46, 0x31, 0xAD, 0x6D, 0x55, 0x00, 0xB0 + }, + { + 0x85, 0xFB, 0x41, 0x9C, 0x70, 0x02, 0xA3, 0xE0, + 0xB4, 0xB6, 0xEA, 0x09, 0x3B, 0x4C, 0x1A, 0xC6, + 0x93, 0x66, 0x45, 0xB6, 0x5D, 0xAC, 0x5A, 0xC1, + 0x5A, 0x85, 0x28, 0xB7, 0xB9, 0x4C, 0x17, 0x54 + }, + { + 0x96, 0x19, 0x72, 0x06, 0x25, 0xF1, 0x90, 0xB9, + 0x3A, 0x3F, 0xAD, 0x18, 0x6A, 0xB3, 0x14, 0x18, + 0x96, 0x33, 0xC0, 0xD3, 0xA0, 0x1E, 0x6F, 0x9B, + 0xC8, 0xC4, 0xA8, 0xF8, 0x2F, 0x38, 0x3D, 0xBF + }, + { + 0x7D, 0x62, 0x0D, 0x90, 0xFE, 0x69, 0xFA, 0x46, + 0x9A, 0x65, 0x38, 0x38, 0x89, 0x70, 0xA1, 0xAA, + 0x09, 0xBB, 0x48, 0xA2, 0xD5, 0x9B, 0x34, 0x7B, + 0x97, 0xE8, 0xCE, 0x71, 0xF4, 0x8C, 0x7F, 0x46 + }, + { + 0x29, 0x43, 0x83, 0x56, 0x85, 0x96, 0xFB, 0x37, + 0xC7, 0x5B, 0xBA, 0xCD, 0x97, 0x9C, 0x5F, 0xF6, + 0xF2, 0x0A, 0x55, 0x6B, 0xF8, 0x87, 0x9C, 0xC7, + 0x29, 0x24, 0x85, 0x5D, 0xF9, 0xB8, 0x24, 0x0E + }, + { + 0x16, 0xB1, 0x8A, 0xB3, 0x14, 0x35, 0x9C, 0x2B, + 0x83, 0x3C, 0x1C, 0x69, 0x86, 0xD4, 0x8C, 0x55, + 0xA9, 0xFC, 0x97, 0xCD, 0xE9, 0xA3, 0xC1, 0xF1, + 0x0A, 0x31, 0x77, 0x14, 0x0F, 0x73, 0xF7, 0x38 + }, + { + 0x8C, 0xBB, 0xDD, 0x14, 0xBC, 0x33, 0xF0, 0x4C, + 0xF4, 0x58, 0x13, 0xE4, 0xA1, 0x53, 0xA2, 0x73, + 0xD3, 0x6A, 0xDA, 0xD5, 0xCE, 0x71, 0xF4, 0x99, + 0xEE, 0xB8, 0x7F, 0xB8, 0xAC, 0x63, 0xB7, 0x29 + }, + { + 0x69, 0xC9, 0xA4, 0x98, 0xDB, 0x17, 0x4E, 0xCA, + 0xEF, 0xCC, 0x5A, 0x3A, 0xC9, 0xFD, 0xED, 0xF0, + 0xF8, 0x13, 0xA5, 0xBE, 0xC7, 0x27, 0xF1, 0xE7, + 0x75, 0xBA, 0xBD, 0xEC, 0x77, 0x18, 0x81, 0x6E + }, + { + 0xB4, 0x62, 0xC3, 0xBE, 0x40, 0x44, 0x8F, 0x1D, + 0x4F, 0x80, 0x62, 0x62, 0x54, 0xE5, 0x35, 0xB0, + 0x8B, 0xC9, 0xCD, 0xCF, 0xF5, 0x99, 0xA7, 0x68, + 0x57, 0x8D, 0x4B, 0x28, 0x81, 0xA8, 0xE3, 0xF0 + }, + { + 0x55, 0x3E, 0x9D, 0x9C, 0x5F, 0x36, 0x0A, 0xC0, + 0xB7, 0x4A, 0x7D, 0x44, 0xE5, 0xA3, 0x91, 0xDA, + 0xD4, 0xCE, 0xD0, 0x3E, 0x0C, 0x24, 0x18, 0x3B, + 0x7E, 0x8E, 0xCA, 0xBD, 0xF1, 0x71, 0x5A, 0x64 + }, + { + 0x7A, 0x7C, 0x55, 0xA5, 0x6F, 0xA9, 0xAE, 0x51, + 0xE6, 0x55, 0xE0, 0x19, 0x75, 0xD8, 0xA6, 0xFF, + 0x4A, 0xE9, 0xE4, 0xB4, 0x86, 0xFC, 0xBE, 0x4E, + 0xAC, 0x04, 0x45, 0x88, 0xF2, 0x45, 0xEB, 0xEA + }, + { + 0x2A, 0xFD, 0xF3, 0xC8, 0x2A, 0xBC, 0x48, 0x67, + 0xF5, 0xDE, 0x11, 0x12, 0x86, 0xC2, 0xB3, 0xBE, + 0x7D, 0x6E, 0x48, 0x65, 0x7B, 0xA9, 0x23, 0xCF, + 0xBF, 0x10, 0x1A, 0x6D, 0xFC, 0xF9, 0xDB, 0x9A + }, + { + 0x41, 0x03, 0x7D, 0x2E, 0xDC, 0xDC, 0xE0, 0xC4, + 0x9B, 0x7F, 0xB4, 0xA6, 0xAA, 0x09, 0x99, 0xCA, + 0x66, 0x97, 0x6C, 0x74, 0x83, 0xAF, 0xE6, 0x31, + 0xD4, 0xED, 0xA2, 0x83, 0x14, 0x4F, 0x6D, 0xFC + }, + { + 0xC4, 0x46, 0x6F, 0x84, 0x97, 0xCA, 0x2E, 0xEB, + 0x45, 0x83, 0xA0, 0xB0, 0x8E, 0x9D, 0x9A, 0xC7, + 0x43, 0x95, 0x70, 0x9F, 0xDA, 0x10, 0x9D, 0x24, + 0xF2, 0xE4, 0x46, 0x21, 0x96, 0x77, 0x9C, 0x5D + }, + { + 0x75, 0xF6, 0x09, 0x33, 0x8A, 0xA6, 0x7D, 0x96, + 0x9A, 0x2A, 0xE2, 0xA2, 0x36, 0x2B, 0x2D, 0xA9, + 0xD7, 0x7C, 0x69, 0x5D, 0xFD, 0x1D, 0xF7, 0x22, + 0x4A, 0x69, 0x01, 0xDB, 0x93, 0x2C, 0x33, 0x64 + }, + { + 0x68, 0x60, 0x6C, 0xEB, 0x98, 0x9D, 0x54, 0x88, + 0xFC, 0x7C, 0xF6, 0x49, 0xF3, 0xD7, 0xC2, 0x72, + 0xEF, 0x05, 0x5D, 0xA1, 0xA9, 0x3F, 0xAE, 0xCD, + 0x55, 0xFE, 0x06, 0xF6, 0x96, 0x70, 0x98, 0xCA + }, + { + 0x44, 0x34, 0x6B, 0xDE, 0xB7, 0xE0, 0x52, 0xF6, + 0x25, 0x50, 0x48, 0xF0, 0xD9, 0xB4, 0x2C, 0x42, + 0x5B, 0xAB, 0x9C, 0x3D, 0xD2, 0x41, 0x68, 0x21, + 0x2C, 0x3E, 0xCF, 0x1E, 0xBF, 0x34, 0xE6, 0xAE + }, + { + 0x8E, 0x9C, 0xF6, 0xE1, 0xF3, 0x66, 0x47, 0x1F, + 0x2A, 0xC7, 0xD2, 0xEE, 0x9B, 0x5E, 0x62, 0x66, + 0xFD, 0xA7, 0x1F, 0x8F, 0x2E, 0x41, 0x09, 0xF2, + 0x23, 0x7E, 0xD5, 0xF8, 0x81, 0x3F, 0xC7, 0x18 + }, + { + 0x84, 0xBB, 0xEB, 0x84, 0x06, 0xD2, 0x50, 0x95, + 0x1F, 0x8C, 0x1B, 0x3E, 0x86, 0xA7, 0xC0, 0x10, + 0x08, 0x29, 0x21, 0x83, 0x3D, 0xFD, 0x95, 0x55, + 0xA2, 0xF9, 0x09, 0xB1, 0x08, 0x6E, 0xB4, 0xB8 + }, + { + 0xEE, 0x66, 0x6F, 0x3E, 0xEF, 0x0F, 0x7E, 0x2A, + 0x9C, 0x22, 0x29, 0x58, 0xC9, 0x7E, 0xAF, 0x35, + 0xF5, 0x1C, 0xED, 0x39, 0x3D, 0x71, 0x44, 0x85, + 0xAB, 0x09, 0xA0, 0x69, 0x34, 0x0F, 0xDF, 0x88 + }, + { + 0xC1, 0x53, 0xD3, 0x4A, 0x65, 0xC4, 0x7B, 0x4A, + 0x62, 0xC5, 0xCA, 0xCF, 0x24, 0x01, 0x09, 0x75, + 0xD0, 0x35, 0x6B, 0x2F, 0x32, 0xC8, 0xF5, 0xDA, + 0x53, 0x0D, 0x33, 0x88, 0x16, 0xAD, 0x5D, 0xE6 + }, + { + 0x9F, 0xC5, 0x45, 0x01, 0x09, 0xE1, 0xB7, 0x79, + 0xF6, 0xC7, 0xAE, 0x79, 0xD5, 0x6C, 0x27, 0x63, + 0x5C, 0x8D, 0xD4, 0x26, 0xC5, 0xA9, 0xD5, 0x4E, + 0x25, 0x78, 0xDB, 0x98, 0x9B, 0x8C, 0x3B, 0x4E + }, + { + 0xD1, 0x2B, 0xF3, 0x73, 0x2E, 0xF4, 0xAF, 0x5C, + 0x22, 0xFA, 0x90, 0x35, 0x6A, 0xF8, 0xFC, 0x50, + 0xFC, 0xB4, 0x0F, 0x8F, 0x2E, 0xA5, 0xC8, 0x59, + 0x47, 0x37, 0xA3, 0xB3, 0xD5, 0xAB, 0xDB, 0xD7 + }, + { + 0x11, 0x03, 0x0B, 0x92, 0x89, 0xBB, 0xA5, 0xAF, + 0x65, 0x26, 0x06, 0x72, 0xAB, 0x6F, 0xEE, 0x88, + 0xB8, 0x74, 0x20, 0xAC, 0xEF, 0x4A, 0x17, 0x89, + 0xA2, 0x07, 0x3B, 0x7E, 0xC2, 0xF2, 0xA0, 0x9E + }, + { + 0x69, 0xCB, 0x19, 0x2B, 0x84, 0x44, 0x00, 0x5C, + 0x8C, 0x0C, 0xEB, 0x12, 0xC8, 0x46, 0x86, 0x07, + 0x68, 0x18, 0x8C, 0xDA, 0x0A, 0xEC, 0x27, 0xA9, + 0xC8, 0xA5, 0x5C, 0xDE, 0xE2, 0x12, 0x36, 0x32 + }, + { + 0xDB, 0x44, 0x4C, 0x15, 0x59, 0x7B, 0x5F, 0x1A, + 0x03, 0xD1, 0xF9, 0xED, 0xD1, 0x6E, 0x4A, 0x9F, + 0x43, 0xA6, 0x67, 0xCC, 0x27, 0x51, 0x75, 0xDF, + 0xA2, 0xB7, 0x04, 0xE3, 0xBB, 0x1A, 0x9B, 0x83 + }, + { + 0x3F, 0xB7, 0x35, 0x06, 0x1A, 0xBC, 0x51, 0x9D, + 0xFE, 0x97, 0x9E, 0x54, 0xC1, 0xEE, 0x5B, 0xFA, + 0xD0, 0xA9, 0xD8, 0x58, 0xB3, 0x31, 0x5B, 0xAD, + 0x34, 0xBD, 0xE9, 0x99, 0xEF, 0xD7, 0x24, 0xDD + }, +}; + + + + +static const uint8_t blake2b_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] = +{ + { + 0x78, 0x6A, 0x02, 0xF7, 0x42, 0x01, 0x59, 0x03, + 0xC6, 0xC6, 0xFD, 0x85, 0x25, 0x52, 0xD2, 0x72, + 0x91, 0x2F, 0x47, 0x40, 0xE1, 0x58, 0x47, 0x61, + 0x8A, 0x86, 0xE2, 0x17, 0xF7, 0x1F, 0x54, 0x19, + 0xD2, 0x5E, 0x10, 0x31, 0xAF, 0xEE, 0x58, 0x53, + 0x13, 0x89, 0x64, 0x44, 0x93, 0x4E, 0xB0, 0x4B, + 0x90, 0x3A, 0x68, 0x5B, 0x14, 0x48, 0xB7, 0x55, + 0xD5, 0x6F, 0x70, 0x1A, 0xFE, 0x9B, 0xE2, 0xCE + }, + { + 0x2F, 0xA3, 0xF6, 0x86, 0xDF, 0x87, 0x69, 0x95, + 0x16, 0x7E, 0x7C, 0x2E, 0x5D, 0x74, 0xC4, 0xC7, + 0xB6, 0xE4, 0x8F, 0x80, 0x68, 0xFE, 0x0E, 0x44, + 0x20, 0x83, 0x44, 0xD4, 0x80, 0xF7, 0x90, 0x4C, + 0x36, 0x96, 0x3E, 0x44, 0x11, 0x5F, 0xE3, 0xEB, + 0x2A, 0x3A, 0xC8, 0x69, 0x4C, 0x28, 0xBC, 0xB4, + 0xF5, 0xA0, 0xF3, 0x27, 0x6F, 0x2E, 0x79, 0x48, + 0x7D, 0x82, 0x19, 0x05, 0x7A, 0x50, 0x6E, 0x4B + }, + { + 0x1C, 0x08, 0x79, 0x8D, 0xC6, 0x41, 0xAB, 0xA9, + 0xDE, 0xE4, 0x35, 0xE2, 0x25, 0x19, 0xA4, 0x72, + 0x9A, 0x09, 0xB2, 0xBF, 0xE0, 0xFF, 0x00, 0xEF, + 0x2D, 0xCD, 0x8E, 0xD6, 0xF8, 0xA0, 0x7D, 0x15, + 0xEA, 0xF4, 0xAE, 0xE5, 0x2B, 0xBF, 0x18, 0xAB, + 0x56, 0x08, 0xA6, 0x19, 0x0F, 0x70, 0xB9, 0x04, + 0x86, 0xC8, 0xA7, 0xD4, 0x87, 0x37, 0x10, 0xB1, + 0x11, 0x5D, 0x3D, 0xEB, 0xBB, 0x43, 0x27, 0xB5 + }, + { + 0x40, 0xA3, 0x74, 0x72, 0x73, 0x02, 0xD9, 0xA4, + 0x76, 0x9C, 0x17, 0xB5, 0xF4, 0x09, 0xFF, 0x32, + 0xF5, 0x8A, 0xA2, 0x4F, 0xF1, 0x22, 0xD7, 0x60, + 0x3E, 0x4F, 0xDA, 0x15, 0x09, 0xE9, 0x19, 0xD4, + 0x10, 0x7A, 0x52, 0xC5, 0x75, 0x70, 0xA6, 0xD9, + 0x4E, 0x50, 0x96, 0x7A, 0xEA, 0x57, 0x3B, 0x11, + 0xF8, 0x6F, 0x47, 0x3F, 0x53, 0x75, 0x65, 0xC6, + 0x6F, 0x70, 0x39, 0x83, 0x0A, 0x85, 0xD1, 0x86 + }, + { + 0x77, 0xDD, 0xF4, 0xB1, 0x44, 0x25, 0xEB, 0x3D, + 0x05, 0x3C, 0x1E, 0x84, 0xE3, 0x46, 0x9D, 0x92, + 0xC4, 0xCD, 0x91, 0x0E, 0xD2, 0x0F, 0x92, 0x03, + 0x5E, 0x0C, 0x99, 0xD8, 0xA7, 0xA8, 0x6C, 0xEC, + 0xAF, 0x69, 0xF9, 0x66, 0x3C, 0x20, 0xA7, 0xAA, + 0x23, 0x0B, 0xC8, 0x2F, 0x60, 0xD2, 0x2F, 0xB4, + 0xA0, 0x0B, 0x09, 0xD3, 0xEB, 0x8F, 0xC6, 0x5E, + 0xF5, 0x47, 0xFE, 0x63, 0xC8, 0xD3, 0xDD, 0xCE + }, + { + 0xCB, 0xAA, 0x0B, 0xA7, 0xD4, 0x82, 0xB1, 0xF3, + 0x01, 0x10, 0x9A, 0xE4, 0x10, 0x51, 0x99, 0x1A, + 0x32, 0x89, 0xBC, 0x11, 0x98, 0x00, 0x5A, 0xF2, + 0x26, 0xC5, 0xE4, 0xF1, 0x03, 0xB6, 0x65, 0x79, + 0xF4, 0x61, 0x36, 0x10, 0x44, 0xC8, 0xBA, 0x34, + 0x39, 0xFF, 0x12, 0xC5, 0x15, 0xFB, 0x29, 0xC5, + 0x21, 0x61, 0xB7, 0xEB, 0x9C, 0x28, 0x37, 0xB7, + 0x6A, 0x5D, 0xC3, 0x3F, 0x7C, 0xB2, 0xE2, 0xE8 + }, + { + 0xF9, 0x5D, 0x45, 0xCF, 0x69, 0xAF, 0x5C, 0x20, + 0x23, 0xBD, 0xB5, 0x05, 0x82, 0x1E, 0x62, 0xE8, + 0x5D, 0x7C, 0xAE, 0xDF, 0x7B, 0xED, 0xA1, 0x2C, + 0x02, 0x48, 0x77, 0x5B, 0x0C, 0x88, 0x20, 0x5E, + 0xEB, 0x35, 0xAF, 0x3A, 0x90, 0x81, 0x6F, 0x66, + 0x08, 0xCE, 0x7D, 0xD4, 0x4E, 0xC2, 0x8D, 0xB1, + 0x14, 0x06, 0x14, 0xE1, 0xDD, 0xEB, 0xF3, 0xAA, + 0x9C, 0xD1, 0x84, 0x3E, 0x0F, 0xAD, 0x2C, 0x36 + }, + { + 0x8F, 0x94, 0x5B, 0xA7, 0x00, 0xF2, 0x53, 0x0E, + 0x5C, 0x2A, 0x7D, 0xF7, 0xD5, 0xDC, 0xE0, 0xF8, + 0x3F, 0x9E, 0xFC, 0x78, 0xC0, 0x73, 0xFE, 0x71, + 0xAE, 0x1F, 0x88, 0x20, 0x4A, 0x4F, 0xD1, 0xCF, + 0x70, 0xA0, 0x73, 0xF5, 0xD1, 0xF9, 0x42, 0xED, + 0x62, 0x3A, 0xA1, 0x6E, 0x90, 0xA8, 0x71, 0x24, + 0x6C, 0x90, 0xC4, 0x5B, 0x62, 0x1B, 0x34, 0x01, + 0xA5, 0xDD, 0xBD, 0x9D, 0xF6, 0x26, 0x41, 0x65 + }, + { + 0xE9, 0x98, 0xE0, 0xDC, 0x03, 0xEC, 0x30, 0xEB, + 0x99, 0xBB, 0x6B, 0xFA, 0xAF, 0x66, 0x18, 0xAC, + 0xC6, 0x20, 0x32, 0x0D, 0x72, 0x20, 0xB3, 0xAF, + 0x2B, 0x23, 0xD1, 0x12, 0xD8, 0xE9, 0xCB, 0x12, + 0x62, 0xF3, 0xC0, 0xD6, 0x0D, 0x18, 0x3B, 0x1E, + 0xE7, 0xF0, 0x96, 0xD1, 0x2D, 0xAE, 0x42, 0xC9, + 0x58, 0x41, 0x86, 0x00, 0x21, 0x4D, 0x04, 0xF5, + 0xED, 0x6F, 0x5E, 0x71, 0x8B, 0xE3, 0x55, 0x66 + }, + { + 0x6A, 0x9A, 0x09, 0x0C, 0x61, 0xB3, 0x41, 0x0A, + 0xED, 0xE7, 0xEC, 0x91, 0x38, 0x14, 0x6C, 0xEB, + 0x2C, 0x69, 0x66, 0x2F, 0x46, 0x0C, 0x3D, 0xA5, + 0x3C, 0x65, 0x15, 0xC1, 0xEB, 0x31, 0xF4, 0x1C, + 0xA3, 0xD2, 0x80, 0xE5, 0x67, 0x88, 0x2F, 0x95, + 0xCF, 0x66, 0x4A, 0x94, 0x14, 0x7D, 0x78, 0xF4, + 0x2C, 0xFC, 0x71, 0x4A, 0x40, 0xD2, 0x2E, 0xF1, + 0x94, 0x70, 0xE0, 0x53, 0x49, 0x35, 0x08, 0xA2 + }, + { + 0x29, 0x10, 0x25, 0x11, 0xD7, 0x49, 0xDB, 0x3C, + 0xC9, 0xB4, 0xE3, 0x35, 0xFA, 0x1F, 0x5E, 0x8F, + 0xAC, 0xA8, 0x42, 0x1D, 0x55, 0x8F, 0x6A, 0x3F, + 0x33, 0x21, 0xD5, 0x0D, 0x04, 0x4A, 0x24, 0x8B, + 0xA5, 0x95, 0xCF, 0xC3, 0xEF, 0xD3, 0xD2, 0xAD, + 0xC9, 0x73, 0x34, 0xDA, 0x73, 0x24, 0x13, 0xF5, + 0xCB, 0xF4, 0x75, 0x1C, 0x36, 0x2B, 0xA1, 0xD5, + 0x38, 0x62, 0xAC, 0x1E, 0x8D, 0xAB, 0xEE, 0xE8 + }, + { + 0xC9, 0x7A, 0x47, 0x79, 0xD4, 0x7E, 0x6F, 0x77, + 0x72, 0x9B, 0x59, 0x17, 0xD0, 0x13, 0x8A, 0xBB, + 0x35, 0x98, 0x0A, 0xB6, 0x41, 0xBD, 0x73, 0xA8, + 0x85, 0x9E, 0xB1, 0xAC, 0x98, 0xC0, 0x53, 0x62, + 0xED, 0x7D, 0x60, 0x8F, 0x2E, 0x95, 0x87, 0xD6, + 0xBA, 0x9E, 0x27, 0x1D, 0x34, 0x31, 0x25, 0xD4, + 0x0D, 0x93, 0x3A, 0x8E, 0xD0, 0x4E, 0xC1, 0xFE, + 0x75, 0xEC, 0x40, 0x7C, 0x7A, 0x53, 0xC3, 0x4E + }, + { + 0x10, 0xF0, 0xDC, 0x91, 0xB9, 0xF8, 0x45, 0xFB, + 0x95, 0xFA, 0xD6, 0x86, 0x0E, 0x6C, 0xE1, 0xAD, + 0xFA, 0x00, 0x2C, 0x7F, 0xC3, 0x27, 0x11, 0x6D, + 0x44, 0xD0, 0x47, 0xCD, 0x7D, 0x58, 0x70, 0xD7, + 0x72, 0xBB, 0x12, 0xB5, 0xFA, 0xC0, 0x0E, 0x02, + 0xB0, 0x8A, 0xC2, 0xA0, 0x17, 0x4D, 0x04, 0x46, + 0xC3, 0x6A, 0xB3, 0x5F, 0x14, 0xCA, 0x31, 0x89, + 0x4C, 0xD6, 0x1C, 0x78, 0xC8, 0x49, 0xB4, 0x8A + }, + { + 0xDE, 0xA9, 0x10, 0x1C, 0xAC, 0x62, 0xB8, 0xF6, + 0xA3, 0xC6, 0x50, 0xF9, 0x0E, 0xEA, 0x5B, 0xFA, + 0xE2, 0x65, 0x3A, 0x4E, 0xAF, 0xD6, 0x3A, 0x6D, + 0x1F, 0x0F, 0x13, 0x2D, 0xB9, 0xE4, 0xF2, 0xB1, + 0xB6, 0x62, 0x43, 0x2E, 0xC8, 0x5B, 0x17, 0xBC, + 0xAC, 0x41, 0xE7, 0x75, 0x63, 0x78, 0x81, 0xF6, + 0xAA, 0xB3, 0x8D, 0xD6, 0x6D, 0xCB, 0xD0, 0x80, + 0xF0, 0x99, 0x0A, 0x7A, 0x6E, 0x98, 0x54, 0xFE + }, + { + 0x44, 0x1F, 0xFA, 0xA0, 0x8C, 0xD7, 0x9D, 0xFF, + 0x4A, 0xFC, 0x9B, 0x9E, 0x5B, 0x56, 0x20, 0xEE, + 0xC0, 0x86, 0x73, 0x0C, 0x25, 0xF6, 0x61, 0xB1, + 0xD6, 0xFB, 0xFB, 0xD1, 0xCE, 0xC3, 0x14, 0x8D, + 0xD7, 0x22, 0x58, 0xC6, 0x56, 0x41, 0xF2, 0xFC, + 0xA5, 0xEB, 0x15, 0x5F, 0xAD, 0xBC, 0xAB, 0xB1, + 0x3C, 0x6E, 0x21, 0xDC, 0x11, 0xFA, 0xF7, 0x2C, + 0x2A, 0x28, 0x1B, 0x7D, 0x56, 0x14, 0x5F, 0x19 + }, + { + 0x44, 0x4B, 0x24, 0x0F, 0xE3, 0xED, 0x86, 0xD0, + 0xE2, 0xEF, 0x4C, 0xE7, 0xD8, 0x51, 0xED, 0xDE, + 0x22, 0x15, 0x55, 0x82, 0xAA, 0x09, 0x14, 0x79, + 0x7B, 0x72, 0x6C, 0xD0, 0x58, 0xB6, 0xF4, 0x59, + 0x32, 0xE0, 0xE1, 0x29, 0x51, 0x68, 0x76, 0x52, + 0x7B, 0x1D, 0xD8, 0x8F, 0xC6, 0x6D, 0x71, 0x19, + 0xF4, 0xAB, 0x3B, 0xED, 0x93, 0xA6, 0x1A, 0x0E, + 0x2D, 0x2D, 0x2A, 0xEA, 0xC3, 0x36, 0xD9, 0x58 + }, + { + 0xBF, 0xBA, 0xBB, 0xEF, 0x45, 0x55, 0x4C, 0xCF, + 0xA0, 0xDC, 0x83, 0x75, 0x2A, 0x19, 0xCC, 0x35, + 0xD5, 0x92, 0x09, 0x56, 0xB3, 0x01, 0xD5, 0x58, + 0xD7, 0x72, 0x28, 0x2B, 0xC8, 0x67, 0x00, 0x91, + 0x68, 0xE9, 0xE9, 0x86, 0x06, 0xBB, 0x5B, 0xA7, + 0x3A, 0x38, 0x5D, 0xE5, 0x74, 0x92, 0x28, 0xC9, + 0x25, 0xA8, 0x50, 0x19, 0xB7, 0x1F, 0x72, 0xFE, + 0x29, 0xB3, 0xCD, 0x37, 0xCA, 0x52, 0xEF, 0xE6 + }, + { + 0x9C, 0x4D, 0x0C, 0x3E, 0x1C, 0xDB, 0xBF, 0x48, + 0x5B, 0xEC, 0x86, 0xF4, 0x1C, 0xEC, 0x7C, 0x98, + 0x37, 0x3F, 0x0E, 0x09, 0xF3, 0x92, 0x84, 0x9A, + 0xAA, 0x22, 0x9E, 0xBF, 0xBF, 0x39, 0x7B, 0x22, + 0x08, 0x55, 0x29, 0xCB, 0x7E, 0xF3, 0x9F, 0x9C, + 0x7C, 0x22, 0x22, 0xA5, 0x14, 0x18, 0x2B, 0x1E, + 0xFF, 0xAA, 0x17, 0x8C, 0xC3, 0x68, 0x7B, 0x1B, + 0x2B, 0x6C, 0xBC, 0xB6, 0xFD, 0xEB, 0x96, 0xF8 + }, + { + 0x47, 0x71, 0x76, 0xB3, 0xBF, 0xCB, 0xAD, 0xD7, + 0x65, 0x7C, 0x23, 0xC2, 0x46, 0x25, 0xE4, 0xD0, + 0xD6, 0x74, 0xD1, 0x86, 0x8F, 0x00, 0x60, 0x06, + 0x39, 0x8A, 0xF9, 0x7A, 0xA4, 0x18, 0x77, 0xC8, + 0xE7, 0x0D, 0x3D, 0x14, 0xC3, 0xBB, 0xC9, 0xBB, + 0xCD, 0xCE, 0xA8, 0x01, 0xBD, 0x0E, 0x15, 0x99, + 0xAF, 0x1F, 0x3E, 0xEC, 0x67, 0x40, 0x51, 0x70, + 0xF4, 0xE2, 0x6C, 0x96, 0x4A, 0x57, 0xA8, 0xB7 + }, + { + 0xA7, 0x8C, 0x49, 0x0E, 0xDA, 0x31, 0x73, 0xBB, + 0x3F, 0x10, 0xDE, 0xE5, 0x2F, 0x11, 0x0F, 0xB1, + 0xC0, 0x8E, 0x03, 0x02, 0x23, 0x0B, 0x85, 0xDD, + 0xD7, 0xC1, 0x12, 0x57, 0xD9, 0x2D, 0xE1, 0x48, + 0x78, 0x5E, 0xF0, 0x0C, 0x03, 0x9C, 0x0B, 0xB8, + 0xEB, 0x98, 0x08, 0xA3, 0x5B, 0x2D, 0x8C, 0x08, + 0x0F, 0x57, 0x28, 0x59, 0x71, 0x4C, 0x9D, 0x40, + 0x69, 0xC5, 0xBC, 0xAF, 0x09, 0x0E, 0x89, 0x8E + }, + { + 0x58, 0xD0, 0x23, 0x39, 0x7B, 0xEB, 0x5B, 0x41, + 0x45, 0xCB, 0x22, 0x55, 0xB0, 0x7D, 0x74, 0x29, + 0x0B, 0x36, 0xD9, 0xFD, 0x1E, 0x59, 0x4A, 0xFB, + 0xD8, 0xEE, 0xA4, 0x7C, 0x20, 0x5B, 0x2E, 0xFB, + 0xFE, 0x6F, 0x46, 0x19, 0x0F, 0xAF, 0x95, 0xAF, + 0x50, 0x4A, 0xB0, 0x72, 0xE3, 0x6F, 0x6C, 0x85, + 0xD7, 0x67, 0xA3, 0x21, 0xBF, 0xD7, 0xF2, 0x26, + 0x87, 0xA4, 0xAB, 0xBF, 0x49, 0x4A, 0x68, 0x9C + }, + { + 0x40, 0x01, 0xEC, 0x74, 0xD5, 0xA4, 0x6F, 0xD2, + 0x9C, 0x2C, 0x3C, 0xDB, 0xE5, 0xD1, 0xB9, 0xF2, + 0x0E, 0x51, 0xA9, 0x41, 0xBE, 0x98, 0xD2, 0xA4, + 0xE1, 0xE2, 0xFB, 0xF8, 0x66, 0xA6, 0x72, 0x12, + 0x1D, 0xB6, 0xF8, 0x1A, 0x51, 0x4C, 0xFD, 0x10, + 0xE7, 0x35, 0x8D, 0x57, 0x1B, 0xDB, 0xA4, 0x8E, + 0x4C, 0xE7, 0x08, 0xB9, 0xD1, 0x24, 0x89, 0x4B, + 0xC0, 0xB5, 0xED, 0x55, 0x49, 0x35, 0xF7, 0x3A + }, + { + 0xCC, 0xD1, 0xB2, 0x2D, 0xAB, 0x65, 0x11, 0x22, + 0x5D, 0x24, 0x01, 0xEA, 0x2D, 0x86, 0x25, 0xD2, + 0x06, 0xA1, 0x24, 0x73, 0xCC, 0x73, 0x2B, 0x61, + 0x5E, 0x56, 0x40, 0xCE, 0xFF, 0xF0, 0xA4, 0xAD, + 0xF9, 0x71, 0xB0, 0xE8, 0x27, 0xA6, 0x19, 0xE0, + 0xA8, 0x0F, 0x5D, 0xB9, 0xCC, 0xD0, 0x96, 0x23, + 0x29, 0x01, 0x0D, 0x07, 0xE3, 0x4A, 0x20, 0x64, + 0xE7, 0x31, 0xC5, 0x20, 0x81, 0x7B, 0x21, 0x83 + }, + { + 0xB4, 0xA0, 0xA9, 0xE3, 0x57, 0x4E, 0xDB, 0x9E, + 0x1E, 0x72, 0xAA, 0x31, 0xE3, 0x9C, 0xC5, 0xF3, + 0x0D, 0xBF, 0x94, 0x3F, 0x8C, 0xAB, 0xC4, 0x08, + 0x44, 0x96, 0x54, 0xA3, 0x91, 0x31, 0xE6, 0x6D, + 0x71, 0x8A, 0x18, 0x81, 0x91, 0x43, 0xE3, 0xEA, + 0x96, 0xB4, 0xA1, 0x89, 0x59, 0x88, 0xA1, 0xC0, + 0x05, 0x6C, 0xF2, 0xB6, 0xE0, 0x4F, 0x9A, 0xC1, + 0x9D, 0x65, 0x73, 0x83, 0xC2, 0x91, 0x0C, 0x44 + }, + { + 0x44, 0x7B, 0xEC, 0xAB, 0x16, 0x63, 0x06, 0x08, + 0xD3, 0x9F, 0x4F, 0x05, 0x8B, 0x16, 0xF7, 0xAF, + 0x95, 0xB8, 0x5A, 0x76, 0xAA, 0x0F, 0xA7, 0xCE, + 0xA2, 0xB8, 0x07, 0x55, 0xFB, 0x76, 0xE9, 0xC8, + 0x04, 0xF2, 0xCA, 0x78, 0xF0, 0x26, 0x43, 0xC9, + 0x15, 0xFB, 0xF2, 0xFC, 0xE5, 0xE1, 0x9D, 0xE8, + 0x60, 0x00, 0xDE, 0x03, 0xB1, 0x88, 0x61, 0x81, + 0x5A, 0x83, 0x12, 0x60, 0x71, 0xF8, 0xA3, 0x7B + }, + { + 0x54, 0xE6, 0xDA, 0xB9, 0x97, 0x73, 0x80, 0xA5, + 0x66, 0x58, 0x22, 0xDB, 0x93, 0x37, 0x4E, 0xDA, + 0x52, 0x8D, 0x9B, 0xEB, 0x62, 0x6F, 0x9B, 0x94, + 0x02, 0x70, 0x71, 0xCB, 0x26, 0x67, 0x5E, 0x11, + 0x2B, 0x4A, 0x7F, 0xEC, 0x94, 0x1E, 0xE6, 0x0A, + 0x81, 0xE4, 0xD2, 0xEA, 0x3F, 0xF7, 0xBC, 0x52, + 0xCF, 0xC4, 0x5D, 0xFB, 0xFE, 0x73, 0x5A, 0x1C, + 0x64, 0x6B, 0x2C, 0xF6, 0xD6, 0xA4, 0x9B, 0x62 + }, + { + 0x3E, 0xA6, 0x26, 0x25, 0x94, 0x9E, 0x36, 0x46, + 0x70, 0x4D, 0x7E, 0x3C, 0x90, 0x6F, 0x82, 0xF6, + 0xC0, 0x28, 0xF5, 0x40, 0xF5, 0xF7, 0x2A, 0x79, + 0x4B, 0x0C, 0x57, 0xBF, 0x97, 0xB7, 0x64, 0x9B, + 0xFE, 0xB9, 0x0B, 0x01, 0xD3, 0xCA, 0x3E, 0x82, + 0x9D, 0xE2, 0x1B, 0x38, 0x26, 0xE6, 0xF8, 0x70, + 0x14, 0xD3, 0xC7, 0x73, 0x50, 0xCB, 0x5A, 0x15, + 0xFF, 0x5D, 0x46, 0x8A, 0x81, 0xBE, 0xC1, 0x60 + }, + { + 0x21, 0x3C, 0xFE, 0x14, 0x5C, 0x54, 0xA3, 0x36, + 0x91, 0x56, 0x99, 0x80, 0xE5, 0x93, 0x8C, 0x88, + 0x83, 0xA4, 0x6D, 0x84, 0xD1, 0x49, 0xC8, 0xFF, + 0x1A, 0x67, 0xCD, 0x28, 0x7B, 0x4D, 0x49, 0xC6, + 0xDA, 0x69, 0xD3, 0xA0, 0x35, 0x44, 0x3D, 0xB0, + 0x85, 0x98, 0x3D, 0x0E, 0xFE, 0x63, 0x70, 0x6B, + 0xD5, 0xB6, 0xF1, 0x5A, 0x7D, 0xA4, 0x59, 0xE8, + 0xD5, 0x0A, 0x19, 0x09, 0x3D, 0xB5, 0x5E, 0x80 + }, + { + 0x57, 0x16, 0xC4, 0xA3, 0x8F, 0x38, 0xDB, 0x10, + 0x4E, 0x49, 0x4A, 0x0A, 0x27, 0xCB, 0xE8, 0x9A, + 0x26, 0xA6, 0xBB, 0x6F, 0x49, 0x9E, 0xC0, 0x1C, + 0x8C, 0x01, 0xAA, 0x7C, 0xB8, 0x84, 0x97, 0xE7, + 0x51, 0x48, 0xCD, 0x6E, 0xEE, 0x12, 0xA7, 0x16, + 0x8B, 0x6F, 0x78, 0xAB, 0x74, 0xE4, 0xBE, 0x74, + 0x92, 0x51, 0xA1, 0xA7, 0x4C, 0x38, 0xC8, 0x6D, + 0x61, 0x29, 0x17, 0x7E, 0x28, 0x89, 0xE0, 0xB6 + }, + { + 0x03, 0x04, 0x60, 0xA9, 0x8B, 0xDF, 0x9F, 0xF1, + 0x7C, 0xD9, 0x64, 0x04, 0xF2, 0x8F, 0xC3, 0x04, + 0xF2, 0xB7, 0xC0, 0x4E, 0xAA, 0xDE, 0x53, 0x67, + 0x7F, 0xD2, 0x8F, 0x78, 0x8C, 0xA2, 0x21, 0x86, + 0xB8, 0xBC, 0x80, 0xDD, 0x21, 0xD1, 0x7F, 0x85, + 0x49, 0xC7, 0x11, 0xAF, 0xF0, 0xE5, 0x14, 0xE1, + 0x9D, 0x4E, 0x15, 0xF5, 0x99, 0x02, 0x52, 0xA0, + 0x3E, 0x08, 0x2F, 0x28, 0xDC, 0x20, 0x52, 0xF6 + }, + { + 0x19, 0xE7, 0xF1, 0xCC, 0xEE, 0x88, 0xA1, 0x06, + 0x72, 0x33, 0x3E, 0x39, 0x0C, 0xF2, 0x20, 0x13, + 0xA8, 0xC7, 0x34, 0xC6, 0xCB, 0x9E, 0xAB, 0x41, + 0xF1, 0x7C, 0x3C, 0x80, 0x32, 0xA2, 0xE4, 0xAC, + 0xA0, 0x56, 0x9E, 0xA3, 0x6F, 0x08, 0x60, 0xC7, + 0xA1, 0xAF, 0x28, 0xFA, 0x47, 0x68, 0x40, 0xD6, + 0x60, 0x11, 0x16, 0x88, 0x59, 0x33, 0x4A, 0x9E, + 0x4E, 0xF9, 0xCC, 0x2E, 0x61, 0xA0, 0xE2, 0x9E + }, + { + 0x29, 0xF8, 0xB8, 0xC7, 0x8C, 0x80, 0xF2, 0xFC, + 0xB4, 0xBD, 0xF7, 0x82, 0x5E, 0xD9, 0x0A, 0x70, + 0xD6, 0x25, 0xFF, 0x78, 0x5D, 0x26, 0x26, 0x77, + 0xE2, 0x50, 0xC0, 0x4F, 0x37, 0x20, 0xC8, 0x88, + 0xD0, 0x3F, 0x80, 0x45, 0xE4, 0xED, 0xF3, 0xF5, + 0x28, 0x5B, 0xD3, 0x9D, 0x92, 0x8A, 0x10, 0xA7, + 0xD0, 0xA5, 0xDF, 0x00, 0xB8, 0x48, 0x4A, 0xC2, + 0x86, 0x81, 0x42, 0xA1, 0xE8, 0xBE, 0xA3, 0x51 + }, + { + 0x5C, 0x52, 0x92, 0x0A, 0x72, 0x63, 0xE3, 0x9D, + 0x57, 0x92, 0x0C, 0xA0, 0xCB, 0x75, 0x2A, 0xC6, + 0xD7, 0x9A, 0x04, 0xFE, 0xF8, 0xA7, 0xA2, 0x16, + 0xA1, 0xEC, 0xB7, 0x11, 0x5C, 0xE0, 0x6D, 0x89, + 0xFD, 0x7D, 0x73, 0x5B, 0xD6, 0xF4, 0x27, 0x25, + 0x55, 0xDB, 0xA2, 0x2C, 0x2D, 0x1C, 0x96, 0xE6, + 0x35, 0x23, 0x22, 0xC6, 0x2C, 0x56, 0x30, 0xFD, + 0xE0, 0xF4, 0x77, 0x7A, 0x76, 0xC3, 0xDE, 0x2C + }, + { + 0x83, 0xB0, 0x98, 0xF2, 0x62, 0x25, 0x1B, 0xF6, + 0x60, 0x06, 0x4A, 0x9D, 0x35, 0x11, 0xCE, 0x76, + 0x87, 0xA0, 0x9E, 0x6D, 0xFB, 0xB8, 0x78, 0x29, + 0x9C, 0x30, 0xE9, 0x3D, 0xFB, 0x43, 0xA9, 0x31, + 0x4D, 0xB9, 0xA6, 0x00, 0x33, 0x7D, 0xB2, 0x6E, + 0xBE, 0xED, 0xAF, 0x22, 0x56, 0xA9, 0x6D, 0xAB, + 0xE9, 0xB2, 0x9E, 0x75, 0x73, 0xAD, 0x11, 0xC3, + 0x52, 0x3D, 0x87, 0x4D, 0xDE, 0x5B, 0xE7, 0xED + }, + { + 0x94, 0x47, 0xD9, 0x8A, 0xA5, 0xC9, 0x33, 0x13, + 0x52, 0xF4, 0x3D, 0x3E, 0x56, 0xD0, 0xA9, 0xA9, + 0xF9, 0x58, 0x18, 0x65, 0x99, 0x8E, 0x28, 0x85, + 0xCC, 0x56, 0xDD, 0x0A, 0x0B, 0xD5, 0xA7, 0xB5, + 0x05, 0x95, 0xBD, 0x10, 0xF7, 0x52, 0x9B, 0xCD, + 0x31, 0xF3, 0x7D, 0xC1, 0x6A, 0x14, 0x65, 0xD5, + 0x94, 0x07, 0x96, 0x67, 0xDA, 0x2A, 0x3F, 0xCB, + 0x70, 0x40, 0x14, 0x98, 0x83, 0x7C, 0xED, 0xEB + }, + { + 0x86, 0x77, 0x32, 0xF2, 0xFE, 0xEB, 0x23, 0x89, + 0x30, 0x97, 0x56, 0x1A, 0xC7, 0x10, 0xA4, 0xBF, + 0xF4, 0x53, 0xBE, 0x9C, 0xFB, 0xED, 0xBA, 0x8B, + 0xA3, 0x24, 0xF9, 0xD3, 0x12, 0xA8, 0x2D, 0x73, + 0x2E, 0x1B, 0x83, 0xB8, 0x29, 0xFD, 0xCD, 0x17, + 0x7B, 0x88, 0x2C, 0xA0, 0xC1, 0xBF, 0x54, 0x4B, + 0x22, 0x3B, 0xE5, 0x29, 0x92, 0x4A, 0x24, 0x6A, + 0x63, 0xCF, 0x05, 0x9B, 0xFD, 0xC5, 0x0A, 0x1B + }, + { + 0xF1, 0x5A, 0xB2, 0x6D, 0x4C, 0xDF, 0xCF, 0x56, + 0xE1, 0x96, 0xBB, 0x6B, 0xA1, 0x70, 0xA8, 0xFC, + 0xCC, 0x41, 0x4D, 0xE9, 0x28, 0x5A, 0xFD, 0x98, + 0xA3, 0xD3, 0xCF, 0x2F, 0xB8, 0x8F, 0xCB, 0xC0, + 0xF1, 0x98, 0x32, 0xAC, 0x43, 0x3A, 0x5B, 0x2C, + 0xC2, 0x39, 0x2A, 0x4C, 0xE3, 0x43, 0x32, 0x98, + 0x7D, 0x8D, 0x2C, 0x2B, 0xEF, 0x6C, 0x34, 0x66, + 0x13, 0x8D, 0xB0, 0xC6, 0xE4, 0x2F, 0xA4, 0x7B + }, + { + 0x28, 0x13, 0x51, 0x6D, 0x68, 0xED, 0x4A, 0x08, + 0xB3, 0x9D, 0x64, 0x8A, 0xA6, 0xAA, 0xCD, 0x81, + 0xE9, 0xD6, 0x55, 0xEC, 0xD5, 0xF0, 0xC1, 0x35, + 0x56, 0xC6, 0x0F, 0xDF, 0x0D, 0x33, 0x3E, 0xA3, + 0x84, 0x64, 0xB3, 0x6C, 0x02, 0xBA, 0xCC, 0xD7, + 0x46, 0xE9, 0x57, 0x5E, 0x96, 0xC6, 0x30, 0x14, + 0xF0, 0x74, 0xAE, 0x34, 0xA0, 0xA2, 0x5B, 0x32, + 0x0F, 0x0F, 0xBE, 0xDD, 0x6A, 0xCF, 0x76, 0x65 + }, + { + 0xD3, 0x25, 0x9A, 0xFC, 0xA8, 0xA4, 0x89, 0x62, + 0xFA, 0x89, 0x2E, 0x14, 0x5A, 0xCF, 0x54, 0x7F, + 0x26, 0x92, 0x3A, 0xE8, 0xD4, 0x92, 0x4C, 0x8A, + 0x53, 0x15, 0x81, 0x52, 0x6B, 0x04, 0xB4, 0x4C, + 0x7A, 0xF8, 0x3C, 0x64, 0x3E, 0xF5, 0xA0, 0xBC, + 0x28, 0x2D, 0x36, 0xF3, 0xFB, 0x04, 0xC8, 0x4E, + 0x28, 0xB3, 0x51, 0xF4, 0x0C, 0x74, 0xB6, 0x9D, + 0xC7, 0x84, 0x0B, 0xC7, 0x17, 0xB6, 0xF1, 0x5F + }, + { + 0xF1, 0x4B, 0x06, 0x1A, 0xE3, 0x59, 0xFA, 0x31, + 0xB9, 0x89, 0xE3, 0x03, 0x32, 0xBF, 0xE8, 0xDE, + 0x8C, 0xC8, 0xCD, 0xB5, 0x68, 0xE1, 0x4B, 0xE2, + 0x14, 0xA2, 0x22, 0x3B, 0x84, 0xCA, 0xAB, 0x74, + 0x19, 0x54, 0x9E, 0xCF, 0xCC, 0x96, 0xCE, 0x2A, + 0xCE, 0xC1, 0x19, 0x48, 0x5D, 0x87, 0xD1, 0x57, + 0xD3, 0xA8, 0x73, 0x4F, 0xC4, 0x26, 0x59, 0x7D, + 0x64, 0xF3, 0x65, 0x70, 0xCE, 0xAF, 0x22, 0x4D + }, + { + 0x55, 0xE7, 0x0B, 0x01, 0xD1, 0xFB, 0xF8, 0xB2, + 0x3B, 0x57, 0xFB, 0x62, 0xE2, 0x6C, 0x2C, 0xE5, + 0x4F, 0x13, 0xF8, 0xFA, 0x24, 0x64, 0xE6, 0xEB, + 0x98, 0xD1, 0x6A, 0x61, 0x17, 0x02, 0x6D, 0x8B, + 0x90, 0x81, 0x90, 0x12, 0x49, 0x6D, 0x40, 0x71, + 0xEB, 0xE2, 0xE5, 0x95, 0x57, 0xEC, 0xE3, 0x51, + 0x9A, 0x7A, 0xA4, 0x58, 0x02, 0xF9, 0x61, 0x53, + 0x74, 0x87, 0x73, 0x32, 0xB7, 0x34, 0x90, 0xB3 + }, + { + 0x25, 0x26, 0x1E, 0xB2, 0x96, 0x97, 0x1D, 0x6E, + 0x4A, 0x71, 0xB2, 0x92, 0x8E, 0x64, 0x83, 0x9C, + 0x67, 0xD4, 0x22, 0x87, 0x2B, 0xF9, 0xF3, 0xC3, + 0x19, 0x93, 0x61, 0x52, 0x22, 0xDE, 0x9F, 0x8F, + 0x0B, 0x2C, 0x4B, 0xE8, 0x54, 0x85, 0x59, 0xB4, + 0xB3, 0x54, 0xE7, 0x36, 0x41, 0x6E, 0x32, 0x18, + 0xD4, 0xE8, 0xA1, 0xE2, 0x19, 0xA4, 0xA6, 0xD4, + 0x3E, 0x1A, 0x9A, 0x52, 0x1D, 0x0E, 0x75, 0xFC + }, + { + 0x08, 0x30, 0x7F, 0x34, 0x7C, 0x41, 0x29, 0x4E, + 0x34, 0xBB, 0x54, 0xCB, 0x42, 0xB1, 0x52, 0x2D, + 0x22, 0xF8, 0x24, 0xF7, 0xB6, 0xE5, 0xDB, 0x50, + 0xFD, 0xA0, 0x96, 0x79, 0x8E, 0x18, 0x1A, 0x8F, + 0x02, 0x6F, 0xA2, 0x7B, 0x4A, 0xE4, 0x5D, 0x52, + 0xA6, 0x2C, 0xAF, 0x9D, 0x51, 0x98, 0xE2, 0x4A, + 0x49, 0x13, 0xC6, 0x67, 0x17, 0x75, 0xB2, 0xD7, + 0x23, 0xC1, 0x23, 0x9B, 0xFB, 0xF0, 0x16, 0xD7 + }, + { + 0x1E, 0x5C, 0x62, 0xE7, 0xE9, 0xBF, 0xA1, 0xB1, + 0x18, 0x74, 0x7A, 0x2D, 0xE0, 0x8B, 0x3C, 0xA1, + 0x01, 0x12, 0xAF, 0x96, 0xA4, 0x6E, 0x4B, 0x22, + 0xC3, 0xFC, 0x06, 0xF9, 0xBF, 0xEE, 0x4E, 0xB5, + 0xC4, 0x9E, 0x05, 0x7A, 0x4A, 0x48, 0x86, 0x23, + 0x43, 0x24, 0x57, 0x25, 0x76, 0xBB, 0x9B, 0x5E, + 0xCF, 0xDE, 0x0D, 0x99, 0xB0, 0xDE, 0x4F, 0x98, + 0xEC, 0x16, 0xE4, 0xD1, 0xB8, 0x5F, 0xA9, 0x47 + }, + { + 0xC7, 0x4A, 0x77, 0x39, 0x5F, 0xB8, 0xBC, 0x12, + 0x64, 0x47, 0x45, 0x48, 0x38, 0xE5, 0x61, 0xE9, + 0x62, 0x85, 0x3D, 0xC7, 0xEB, 0x49, 0xA1, 0xE3, + 0xCB, 0x67, 0xC3, 0xD0, 0x85, 0x1F, 0x3E, 0x39, + 0x51, 0x7B, 0xE8, 0xC3, 0x50, 0xAC, 0x91, 0x09, + 0x03, 0xD4, 0x9C, 0xD2, 0xBF, 0xDF, 0x54, 0x5C, + 0x99, 0x31, 0x6D, 0x03, 0x46, 0x17, 0x0B, 0x73, + 0x9F, 0x0A, 0xDD, 0x5D, 0x53, 0x3C, 0x2C, 0xFC + }, + { + 0x0D, 0xD5, 0x7B, 0x42, 0x3C, 0xC0, 0x1E, 0xB2, + 0x86, 0x13, 0x91, 0xEB, 0x88, 0x6A, 0x0D, 0x17, + 0x07, 0x9B, 0x93, 0x3F, 0xC7, 0x6E, 0xB3, 0xFC, + 0x08, 0xA1, 0x9F, 0x8A, 0x74, 0x95, 0x2C, 0xB6, + 0x8F, 0x6B, 0xCD, 0xC6, 0x44, 0xF7, 0x73, 0x70, + 0x96, 0x6E, 0x4D, 0x13, 0xE8, 0x05, 0x60, 0xBC, + 0xF0, 0x82, 0xEF, 0x04, 0x79, 0xD4, 0x8F, 0xBB, + 0xAB, 0x4D, 0xF0, 0x3B, 0x53, 0xA4, 0xE1, 0x78 + }, + { + 0x4D, 0x8D, 0xC3, 0x92, 0x3E, 0xDC, 0xCD, 0xFC, + 0xE7, 0x00, 0x72, 0x39, 0x8B, 0x8A, 0x3D, 0xA5, + 0xC3, 0x1F, 0xCB, 0x3E, 0xE3, 0xB6, 0x45, 0xC8, + 0x5F, 0x71, 0x7C, 0xBA, 0xEB, 0x4B, 0x67, 0x3A, + 0x19, 0x39, 0x44, 0x25, 0xA5, 0x85, 0xBF, 0xB4, + 0x64, 0xD9, 0x2F, 0x15, 0x97, 0xD0, 0xB7, 0x54, + 0xD1, 0x63, 0xF9, 0x7C, 0xED, 0x34, 0x3B, 0x25, + 0xDB, 0x5A, 0x70, 0xEF, 0x48, 0xEB, 0xB3, 0x4F + }, + { + 0xF0, 0xA5, 0x05, 0x53, 0xE4, 0xDF, 0xB0, 0xC4, + 0xE3, 0xE3, 0xD3, 0xBA, 0x82, 0x03, 0x48, 0x57, + 0xE3, 0xB1, 0xE5, 0x09, 0x18, 0xF5, 0xB8, 0xA7, + 0xD6, 0x98, 0xE1, 0x0D, 0x24, 0x2B, 0x0F, 0xB5, + 0x44, 0xAF, 0x6C, 0x92, 0xD0, 0xC3, 0xAA, 0xF9, + 0x93, 0x22, 0x20, 0x41, 0x61, 0x17, 0xB4, 0xE7, + 0x8E, 0xCB, 0x8A, 0x8F, 0x43, 0x0E, 0x13, 0xB8, + 0x2A, 0x59, 0x15, 0x29, 0x0A, 0x58, 0x19, 0xC5 + }, + { + 0xB1, 0x55, 0x43, 0xF3, 0xF7, 0x36, 0x08, 0x66, + 0x27, 0xCC, 0x53, 0x65, 0xE7, 0xE8, 0x98, 0x8C, + 0x2E, 0xF1, 0x55, 0xC0, 0xFD, 0x4F, 0x42, 0x89, + 0x61, 0xB0, 0x0D, 0x15, 0x26, 0xF0, 0x4D, 0x6D, + 0x6A, 0x65, 0x8B, 0x4B, 0x8E, 0xD3, 0x2C, 0x5D, + 0x86, 0x21, 0xE7, 0xF4, 0xF8, 0xE8, 0xA9, 0x33, + 0xD9, 0xEC, 0xC9, 0xDD, 0x1B, 0x83, 0x33, 0xCB, + 0xE2, 0x8C, 0xFC, 0x37, 0xD9, 0x71, 0x9E, 0x1C + }, + { + 0x7B, 0x4F, 0xA1, 0x58, 0xE4, 0x15, 0xFE, 0xF0, + 0x23, 0x24, 0x72, 0x64, 0xCB, 0xBE, 0x15, 0xD1, + 0x6D, 0x91, 0xA4, 0x44, 0x24, 0xA8, 0xDB, 0x70, + 0x7E, 0xB1, 0xE2, 0x03, 0x3C, 0x30, 0xE9, 0xE1, + 0xE7, 0xC8, 0xC0, 0x86, 0x45, 0x95, 0xD2, 0xCB, + 0x8C, 0x58, 0x0E, 0xB4, 0x7E, 0x9D, 0x16, 0xAB, + 0xBD, 0x7E, 0x44, 0xE8, 0x24, 0xF7, 0xCE, 0xDB, + 0x7D, 0xEF, 0x57, 0x13, 0x0E, 0x52, 0xCF, 0xE9 + }, + { + 0x60, 0x42, 0x4F, 0xF2, 0x32, 0x34, 0xC3, 0x4D, + 0xC9, 0x68, 0x7A, 0xD5, 0x02, 0x86, 0x93, 0x72, + 0xCC, 0x31, 0xA5, 0x93, 0x80, 0x18, 0x6B, 0xC2, + 0x36, 0x1C, 0x83, 0x5D, 0x97, 0x2F, 0x49, 0x66, + 0x6E, 0xB1, 0xAC, 0x69, 0x62, 0x9D, 0xE6, 0x46, + 0xF0, 0x3F, 0x9B, 0x4D, 0xB9, 0xE2, 0xAC, 0xE0, + 0x93, 0xFB, 0xFD, 0xF8, 0xF2, 0x0A, 0xB5, 0xF9, + 0x85, 0x41, 0x97, 0x8B, 0xE8, 0xEF, 0x54, 0x9F + }, + { + 0x74, 0x06, 0x01, 0x8C, 0xE7, 0x04, 0xD8, 0x4F, + 0x5E, 0xB9, 0xC7, 0x9F, 0xEA, 0x97, 0xDA, 0x34, + 0x56, 0x99, 0x46, 0x8A, 0x35, 0x0E, 0xE0, 0xB2, + 0xD0, 0xF3, 0xA4, 0xBF, 0x20, 0x70, 0x30, 0x4E, + 0xA8, 0x62, 0xD7, 0x2A, 0x51, 0xC5, 0x7D, 0x30, + 0x64, 0x94, 0x72, 0x86, 0xF5, 0x31, 0xE0, 0xEA, + 0xF7, 0x56, 0x37, 0x02, 0x26, 0x2E, 0x6C, 0x72, + 0x4A, 0xBF, 0x5E, 0xD8, 0xC8, 0x39, 0x8D, 0x17 + }, + { + 0x14, 0xEF, 0x5C, 0x6D, 0x64, 0x7B, 0x3B, 0xD1, + 0xE6, 0xE3, 0x20, 0x06, 0xC2, 0x31, 0x19, 0x98, + 0x10, 0xDE, 0x5C, 0x4D, 0xC8, 0x8E, 0x70, 0x24, + 0x02, 0x73, 0xB0, 0xEA, 0x18, 0xE6, 0x51, 0xA3, + 0xEB, 0x4F, 0x5C, 0xA3, 0x11, 0x4B, 0x8A, 0x56, + 0x71, 0x69, 0x69, 0xC7, 0xCD, 0xA2, 0x7E, 0x0C, + 0x8D, 0xB8, 0x32, 0xAD, 0x5E, 0x89, 0xA2, 0xDC, + 0x6C, 0xB0, 0xAD, 0xBE, 0x7D, 0x93, 0xAB, 0xD1 + }, + { + 0x38, 0xCF, 0x6C, 0x24, 0xE3, 0xE0, 0x8B, 0xCF, + 0x1F, 0x6C, 0xF3, 0xD1, 0xB1, 0xF6, 0x5B, 0x90, + 0x52, 0x39, 0xA3, 0x11, 0x80, 0x33, 0x24, 0x9E, + 0x44, 0x81, 0x13, 0xEC, 0x63, 0x2E, 0xA6, 0xDC, + 0x34, 0x6F, 0xEE, 0xB2, 0x57, 0x1C, 0x38, 0xBD, + 0x9A, 0x73, 0x98, 0xB2, 0x22, 0x12, 0x80, 0x32, + 0x80, 0x02, 0xB2, 0x3E, 0x1A, 0x45, 0xAD, 0xAF, + 0xFE, 0x66, 0xD9, 0x3F, 0x65, 0x64, 0xEA, 0xA2 + }, + { + 0x6C, 0xD7, 0x20, 0x8A, 0x4B, 0xC7, 0xE7, 0xE5, + 0x62, 0x01, 0xBB, 0xBA, 0x02, 0xA0, 0xF4, 0x89, + 0xCD, 0x38, 0x4A, 0xBE, 0x40, 0xAF, 0xD4, 0x22, + 0x2F, 0x15, 0x8B, 0x3D, 0x98, 0x6E, 0xE7, 0x2A, + 0x54, 0xC5, 0x0F, 0xB6, 0x4F, 0xD4, 0xED, 0x25, + 0x30, 0xED, 0xA2, 0xC8, 0xAF, 0x29, 0x28, 0xA0, + 0xDA, 0x6D, 0x4F, 0x83, 0x0A, 0xE1, 0xC9, 0xDB, + 0x46, 0x9D, 0xFD, 0x97, 0x0F, 0x12, 0xA5, 0x6F + }, + { + 0x65, 0x98, 0x58, 0xF0, 0xB5, 0xC9, 0xED, 0xAB, + 0x5B, 0x94, 0xFD, 0x73, 0x2F, 0x6E, 0x6B, 0x17, + 0xC5, 0x1C, 0xC0, 0x96, 0x10, 0x4F, 0x09, 0xBE, + 0xB3, 0xAF, 0xC3, 0xAA, 0x46, 0x7C, 0x2E, 0xCF, + 0x88, 0x5C, 0x4C, 0x65, 0x41, 0xEF, 0xFA, 0x90, + 0x23, 0xD3, 0xB5, 0x73, 0x8A, 0xE5, 0xA1, 0x4D, + 0x86, 0x7E, 0x15, 0xDB, 0x06, 0xFE, 0x1F, 0x9D, + 0x11, 0x27, 0xB7, 0x7E, 0x1A, 0xAB, 0xB5, 0x16 + }, + { + 0x26, 0xCC, 0xA0, 0x12, 0x6F, 0x5D, 0x1A, 0x81, + 0x3C, 0x62, 0xE5, 0xC7, 0x10, 0x01, 0xC0, 0x46, + 0xF9, 0xC9, 0x20, 0x95, 0x70, 0x45, 0x50, 0xBE, + 0x58, 0x73, 0xA4, 0x95, 0xA9, 0x99, 0xAD, 0x01, + 0x0A, 0x4F, 0x79, 0x49, 0x1F, 0x24, 0xF2, 0x86, + 0x50, 0x0A, 0xDC, 0xE1, 0xA1, 0x37, 0xBC, 0x20, + 0x84, 0xE4, 0x94, 0x9F, 0x5B, 0x72, 0x94, 0xCE, + 0xFE, 0x51, 0xEC, 0xAF, 0xF8, 0xE9, 0x5C, 0xBA + }, + { + 0x41, 0x47, 0xC1, 0xF5, 0x51, 0x72, 0x78, 0x8C, + 0x55, 0x67, 0xC5, 0x61, 0xFE, 0xEF, 0x87, 0x6F, + 0x62, 0x1F, 0xFF, 0x1C, 0xE8, 0x77, 0x86, 0xB8, + 0x46, 0x76, 0x37, 0xE7, 0x0D, 0xFB, 0xCD, 0x0D, + 0xBD, 0xB6, 0x41, 0x5C, 0xB6, 0x00, 0x95, 0x4A, + 0xB9, 0xC0, 0x4C, 0x0E, 0x45, 0x7E, 0x62, 0x5B, + 0x40, 0x72, 0x22, 0xC0, 0xFE, 0x1A, 0xE2, 0x1B, + 0x21, 0x43, 0x68, 0x8A, 0xDA, 0x94, 0xDC, 0x58 + }, + { + 0x5B, 0x1B, 0xF1, 0x54, 0xC6, 0x2A, 0x8A, 0xF6, + 0xE9, 0x3D, 0x35, 0xF1, 0x8F, 0x7F, 0x90, 0xAB, + 0xB1, 0x6A, 0x6E, 0xF0, 0xE8, 0xD1, 0xAE, 0xCD, + 0x11, 0x8B, 0xF7, 0x01, 0x67, 0xBA, 0xB2, 0xAF, + 0x08, 0x93, 0x5C, 0x6F, 0xDC, 0x06, 0x63, 0xCE, + 0x74, 0x48, 0x2D, 0x17, 0xA8, 0xE5, 0x4B, 0x54, + 0x6D, 0x1C, 0x29, 0x66, 0x31, 0xC6, 0x5F, 0x3B, + 0x52, 0x2A, 0x51, 0x58, 0x39, 0xD4, 0x3D, 0x71 + }, + { + 0x9F, 0x60, 0x04, 0x19, 0xA4, 0xE8, 0xF4, 0xFB, + 0x83, 0x4C, 0x24, 0xB0, 0xF7, 0xFC, 0x13, 0xBF, + 0x4E, 0x27, 0x9D, 0x98, 0xE8, 0xA3, 0xC7, 0x65, + 0xEE, 0x93, 0x49, 0x17, 0x40, 0x3E, 0x3A, 0x66, + 0x09, 0x71, 0x82, 0xEA, 0x21, 0x45, 0x3C, 0xB6, + 0x3E, 0xBB, 0xE8, 0xB7, 0x3A, 0x9C, 0x21, 0x67, + 0x59, 0x64, 0x46, 0x43, 0x8C, 0x57, 0x62, 0x7F, + 0x33, 0x0B, 0xAD, 0xD4, 0xF5, 0x69, 0xF7, 0xD6 + }, + { + 0x45, 0x7E, 0xF6, 0x46, 0x6A, 0x89, 0x24, 0xFD, + 0x80, 0x11, 0xA3, 0x44, 0x71, 0xA5, 0xA1, 0xAC, + 0x8C, 0xCD, 0x9B, 0xD0, 0xD0, 0x7A, 0x97, 0x41, + 0x4A, 0xC9, 0x43, 0x02, 0x1C, 0xE4, 0xB9, 0xE4, + 0xB9, 0xC8, 0xDB, 0x0A, 0x28, 0xF0, 0x16, 0xED, + 0x43, 0xB1, 0x54, 0x24, 0x81, 0x99, 0x00, 0x22, + 0x14, 0x7B, 0x31, 0x3E, 0x19, 0x46, 0x71, 0x13, + 0x1E, 0x70, 0x8D, 0xD4, 0x3A, 0x3E, 0xD7, 0xDC + }, + { + 0x99, 0x97, 0xB2, 0x19, 0x4D, 0x9A, 0xF6, 0xDF, + 0xCB, 0x91, 0x43, 0xF4, 0x1C, 0x0E, 0xD8, 0x3D, + 0x3A, 0x3F, 0x43, 0x88, 0x36, 0x11, 0x03, 0xD3, + 0x8C, 0x2A, 0x49, 0xB2, 0x80, 0xA5, 0x81, 0x21, + 0x27, 0x15, 0xFD, 0x90, 0x8D, 0x41, 0xC6, 0x51, + 0xF5, 0xC7, 0x15, 0xCA, 0x38, 0xC0, 0xCE, 0x28, + 0x30, 0xA3, 0x7E, 0x00, 0xE5, 0x08, 0xCE, 0xD1, + 0xBC, 0xDC, 0x32, 0x0E, 0x5E, 0x4D, 0x1E, 0x2E + }, + { + 0x5C, 0x6B, 0xBF, 0x16, 0xBA, 0xA1, 0x80, 0xF9, + 0x86, 0xBD, 0x40, 0xA1, 0x28, 0x7E, 0xD4, 0xC5, + 0x49, 0x77, 0x0E, 0x72, 0x84, 0x85, 0x8F, 0xC4, + 0x7B, 0xC2, 0x1A, 0xB9, 0x5E, 0xBB, 0xF3, 0x37, + 0x4B, 0x4E, 0xE3, 0xFD, 0x9F, 0x2A, 0xF6, 0x0F, + 0x33, 0x95, 0x22, 0x1B, 0x2A, 0xCC, 0x76, 0xF2, + 0xD3, 0x4C, 0x13, 0x29, 0x54, 0x04, 0x9F, 0x8A, + 0x3A, 0x99, 0x6F, 0x1E, 0x32, 0xEC, 0x84, 0xE5 + }, + { + 0xD1, 0x0B, 0xF9, 0xA1, 0x5B, 0x1C, 0x9F, 0xC8, + 0xD4, 0x1F, 0x89, 0xBB, 0x14, 0x0B, 0xF0, 0xBE, + 0x08, 0xD2, 0xF3, 0x66, 0x61, 0x76, 0xD1, 0x3B, + 0xAA, 0xC4, 0xD3, 0x81, 0x35, 0x8A, 0xD0, 0x74, + 0xC9, 0xD4, 0x74, 0x8C, 0x30, 0x05, 0x20, 0xEB, + 0x02, 0x6D, 0xAE, 0xAE, 0xA7, 0xC5, 0xB1, 0x58, + 0x89, 0x2F, 0xDE, 0x4E, 0x8E, 0xC1, 0x7D, 0xC9, + 0x98, 0xDC, 0xD5, 0x07, 0xDF, 0x26, 0xEB, 0x63 + }, + { + 0x2F, 0xC6, 0xE6, 0x9F, 0xA2, 0x6A, 0x89, 0xA5, + 0xED, 0x26, 0x90, 0x92, 0xCB, 0x9B, 0x2A, 0x44, + 0x9A, 0x44, 0x09, 0xA7, 0xA4, 0x40, 0x11, 0xEE, + 0xCA, 0xD1, 0x3D, 0x7C, 0x4B, 0x04, 0x56, 0x60, + 0x2D, 0x40, 0x2F, 0xA5, 0x84, 0x4F, 0x1A, 0x7A, + 0x75, 0x81, 0x36, 0xCE, 0x3D, 0x5D, 0x8D, 0x0E, + 0x8B, 0x86, 0x92, 0x1F, 0xFF, 0xF4, 0xF6, 0x92, + 0xDD, 0x95, 0xBD, 0xC8, 0xE5, 0xFF, 0x00, 0x52 + }, + { + 0xFC, 0xBE, 0x8B, 0xE7, 0xDC, 0xB4, 0x9A, 0x32, + 0xDB, 0xDF, 0x23, 0x94, 0x59, 0xE2, 0x63, 0x08, + 0xB8, 0x4D, 0xFF, 0x1E, 0xA4, 0x80, 0xDF, 0x8D, + 0x10, 0x4E, 0xEF, 0xF3, 0x4B, 0x46, 0xFA, 0xE9, + 0x86, 0x27, 0xB4, 0x50, 0xC2, 0x26, 0x7D, 0x48, + 0xC0, 0x94, 0x6A, 0x69, 0x7C, 0x5B, 0x59, 0x53, + 0x14, 0x52, 0xAC, 0x04, 0x84, 0xF1, 0xC8, 0x4E, + 0x3A, 0x33, 0xD0, 0xC3, 0x39, 0xBB, 0x2E, 0x28 + }, + { + 0xA1, 0x90, 0x93, 0xA6, 0xE3, 0xBC, 0xF5, 0x95, + 0x2F, 0x85, 0x0F, 0x20, 0x30, 0xF6, 0x9B, 0x96, + 0x06, 0xF1, 0x47, 0xF9, 0x0B, 0x8B, 0xAE, 0xE3, + 0x36, 0x2D, 0xA7, 0x1D, 0x9F, 0x35, 0xB4, 0x4E, + 0xF9, 0xD8, 0xF0, 0xA7, 0x71, 0x2B, 0xA1, 0x87, + 0x7F, 0xDD, 0xCD, 0x2D, 0x8E, 0xA8, 0xF1, 0xE5, + 0xA7, 0x73, 0xD0, 0xB7, 0x45, 0xD4, 0x72, 0x56, + 0x05, 0x98, 0x3A, 0x2D, 0xE9, 0x01, 0xF8, 0x03 + }, + { + 0x3C, 0x20, 0x06, 0x42, 0x3F, 0x73, 0xE2, 0x68, + 0xFA, 0x59, 0xD2, 0x92, 0x03, 0x77, 0xEB, 0x29, + 0xA4, 0xF9, 0xA8, 0xB4, 0x62, 0xBE, 0x15, 0x98, + 0x3E, 0xE3, 0xB8, 0x5A, 0xE8, 0xA7, 0x8E, 0x99, + 0x26, 0x33, 0x58, 0x1A, 0x90, 0x99, 0x89, 0x3B, + 0x63, 0xDB, 0x30, 0x24, 0x1C, 0x34, 0xF6, 0x43, + 0x02, 0x7D, 0xC8, 0x78, 0x27, 0x9A, 0xF5, 0x85, + 0x0D, 0x7E, 0x2D, 0x4A, 0x26, 0x53, 0x07, 0x3A + }, + { + 0xD0, 0xF2, 0xF2, 0xE3, 0x78, 0x76, 0x53, 0xF7, + 0x7C, 0xCE, 0x2F, 0xA2, 0x48, 0x35, 0x78, 0x5B, + 0xBD, 0x0C, 0x43, 0x3F, 0xC7, 0x79, 0x46, 0x5A, + 0x11, 0x51, 0x49, 0x90, 0x5A, 0x9D, 0xD1, 0xCB, + 0x82, 0x7A, 0x62, 0x85, 0x06, 0xD4, 0x57, 0xFC, + 0xF1, 0x24, 0xA0, 0xC2, 0xAE, 0xF9, 0xCE, 0x2D, + 0x2A, 0x0A, 0x0F, 0x63, 0x54, 0x55, 0x70, 0xD8, + 0x66, 0x7F, 0xF9, 0xE2, 0xEB, 0xA0, 0x73, 0x34 + }, + { + 0x78, 0xA9, 0xFC, 0x04, 0x8E, 0x25, 0xC6, 0xDC, + 0xB5, 0xDE, 0x45, 0x66, 0x7D, 0xE8, 0xFF, 0xDD, + 0x3A, 0x93, 0x71, 0x11, 0x41, 0xD5, 0x94, 0xE9, + 0xFA, 0x62, 0xA9, 0x59, 0x47, 0x5D, 0xA6, 0x07, + 0x5E, 0xA8, 0xF0, 0x91, 0x6E, 0x84, 0xE4, 0x5A, + 0xD9, 0x11, 0xB7, 0x54, 0x67, 0x07, 0x7E, 0xE5, + 0x2D, 0x2C, 0x9A, 0xEB, 0xF4, 0xD5, 0x8F, 0x20, + 0xCE, 0x4A, 0x3A, 0x00, 0x45, 0x8B, 0x05, 0xD4 + }, + { + 0x45, 0x81, 0x3F, 0x44, 0x17, 0x69, 0xAB, 0x6E, + 0xD3, 0x7D, 0x34, 0x9F, 0xF6, 0xE7, 0x22, 0x67, + 0xD7, 0x6A, 0xE6, 0xBB, 0x3E, 0x3C, 0x61, 0x2E, + 0xC0, 0x5C, 0x6E, 0x02, 0xA1, 0x2A, 0xF5, 0xA3, + 0x7C, 0x91, 0x8B, 0x52, 0xBF, 0x74, 0x26, 0x7C, + 0x3F, 0x6A, 0x3F, 0x18, 0x3A, 0x80, 0x64, 0xFF, + 0x84, 0xC0, 0x7B, 0x19, 0x3D, 0x08, 0x06, 0x67, + 0x89, 0xA0, 0x1A, 0xCC, 0xDB, 0x6F, 0x93, 0x40 + }, + { + 0x95, 0x6D, 0xA1, 0xC6, 0x8D, 0x83, 0xA7, 0xB8, + 0x81, 0xE0, 0x1B, 0x9A, 0x96, 0x6C, 0x3C, 0x0B, + 0xF2, 0x7F, 0x68, 0x60, 0x6A, 0x8B, 0x71, 0xD4, + 0x57, 0xBD, 0x01, 0x6D, 0x4C, 0x41, 0xDD, 0x8A, + 0x38, 0x0C, 0x70, 0x9A, 0x29, 0x6C, 0xB4, 0xC6, + 0x54, 0x47, 0x92, 0x92, 0x0F, 0xD7, 0x88, 0x83, + 0x57, 0x71, 0xA0, 0x7D, 0x4A, 0x16, 0xFB, 0x52, + 0xED, 0x48, 0x05, 0x03, 0x31, 0xDC, 0x4C, 0x8B + }, + { + 0xDF, 0x18, 0x6C, 0x2D, 0xC0, 0x9C, 0xAA, 0x48, + 0xE1, 0x4E, 0x94, 0x2F, 0x75, 0xDE, 0x5A, 0xC1, + 0xB7, 0xA2, 0x1E, 0x4F, 0x9F, 0x07, 0x2A, 0x5B, + 0x37, 0x1E, 0x09, 0xE0, 0x73, 0x45, 0xB0, 0x74, + 0x0C, 0x76, 0x17, 0x7B, 0x01, 0x27, 0x88, 0x08, + 0xFE, 0xC0, 0x25, 0xED, 0xED, 0x98, 0x22, 0xC1, + 0x22, 0xAF, 0xD1, 0xC6, 0x3E, 0x6F, 0x0C, 0xE2, + 0xE3, 0x26, 0x31, 0x04, 0x10, 0x63, 0x14, 0x5C + }, + { + 0x87, 0x47, 0x56, 0x40, 0x96, 0x6A, 0x9F, 0xDC, + 0xD6, 0xD3, 0xA3, 0xB5, 0xA2, 0xCC, 0xA5, 0xC0, + 0x8F, 0x0D, 0x88, 0x2B, 0x10, 0x24, 0x3C, 0x0E, + 0xC1, 0xBF, 0x3C, 0x6B, 0x1C, 0x37, 0xF2, 0xCD, + 0x32, 0x12, 0xF1, 0x9A, 0x05, 0x78, 0x64, 0x47, + 0x7D, 0x5E, 0xAF, 0x8F, 0xAE, 0xD7, 0x3F, 0x29, + 0x37, 0xC7, 0x68, 0xA0, 0xAF, 0x41, 0x5E, 0x84, + 0xBB, 0xCE, 0x6B, 0xD7, 0xDE, 0x23, 0xB6, 0x60 + }, + { + 0xC3, 0xB5, 0x73, 0xBB, 0xE1, 0x09, 0x49, 0xA0, + 0xFB, 0xD4, 0xFF, 0x88, 0x4C, 0x44, 0x6F, 0x22, + 0x29, 0xB7, 0x69, 0x02, 0xF9, 0xDF, 0xDB, 0xB8, + 0xA0, 0x35, 0x3D, 0xA5, 0xC8, 0x3C, 0xA1, 0x4E, + 0x81, 0x51, 0xBB, 0xAA, 0xC8, 0x2F, 0xD1, 0x57, + 0x6A, 0x00, 0x9A, 0xDC, 0x6F, 0x19, 0x35, 0xCF, + 0x26, 0xED, 0xD4, 0xF1, 0xFB, 0x8D, 0xA4, 0x83, + 0xE6, 0xC5, 0xCD, 0x9D, 0x89, 0x23, 0xAD, 0xC3 + }, + { + 0xB0, 0x9D, 0x8D, 0x0B, 0xBA, 0x8A, 0x72, 0x86, + 0xE4, 0x35, 0x68, 0xF7, 0x90, 0x75, 0x50, 0xE4, + 0x20, 0x36, 0xD6, 0x74, 0xE3, 0xC8, 0xFC, 0x34, + 0xD8, 0xCA, 0x46, 0xF7, 0x71, 0xD6, 0x46, 0x6B, + 0x70, 0xFB, 0x60, 0x58, 0x75, 0xF6, 0xA8, 0x63, + 0xC8, 0x77, 0xD1, 0x2F, 0x07, 0x06, 0x3F, 0xDC, + 0x2E, 0x90, 0xCC, 0xD4, 0x59, 0xB1, 0x91, 0x0D, + 0xCD, 0x52, 0xD8, 0xF1, 0x0B, 0x2B, 0x0A, 0x15 + }, + { + 0xAF, 0x3A, 0x22, 0xBF, 0x75, 0xB2, 0x1A, 0xBF, + 0xB0, 0xAC, 0xD5, 0x44, 0x22, 0xBA, 0x1B, 0x73, + 0x00, 0xA9, 0x52, 0xEF, 0xF0, 0x2E, 0xBE, 0xB6, + 0x5B, 0x5C, 0x23, 0x44, 0x71, 0xA9, 0x8D, 0xF3, + 0x2F, 0x4F, 0x96, 0x43, 0xCE, 0x19, 0x04, 0x10, + 0x8A, 0x16, 0x87, 0x67, 0x92, 0x42, 0x80, 0xBD, + 0x76, 0xC8, 0x3F, 0x8C, 0x82, 0xD9, 0xA7, 0x9D, + 0x92, 0x59, 0xB1, 0x95, 0x36, 0x2A, 0x2A, 0x04 + }, + { + 0xBF, 0x4F, 0xF2, 0x22, 0x1B, 0x7E, 0x69, 0x57, + 0xA7, 0x24, 0xCD, 0x96, 0x4A, 0xA3, 0xD5, 0xD0, + 0xD9, 0x94, 0x1F, 0x54, 0x04, 0x13, 0x75, 0x2F, + 0x46, 0x99, 0xD8, 0x10, 0x1B, 0x3E, 0x53, 0x75, + 0x08, 0xBF, 0x09, 0xF8, 0x50, 0x8B, 0x31, 0x77, + 0x36, 0xFF, 0xD2, 0x65, 0xF2, 0x84, 0x7A, 0xA7, + 0xD8, 0x4B, 0xD2, 0xD9, 0x75, 0x69, 0xC4, 0x9D, + 0x63, 0x2A, 0xED, 0x99, 0x45, 0xE5, 0xFA, 0x5E + }, + { + 0x9C, 0x6B, 0x6B, 0x78, 0x19, 0x9B, 0x1B, 0xDA, + 0xCB, 0x43, 0x00, 0xE3, 0x14, 0x79, 0xFA, 0x62, + 0x2A, 0x6B, 0x5B, 0xC8, 0x0D, 0x46, 0x78, 0xA6, + 0x07, 0x8F, 0x88, 0xA8, 0x26, 0x8C, 0xD7, 0x20, + 0x6A, 0x27, 0x99, 0xE8, 0xD4, 0x62, 0x1A, 0x46, + 0x4E, 0xF6, 0xB4, 0x3D, 0xD8, 0xAD, 0xFF, 0xE9, + 0x7C, 0xAF, 0x22, 0x1B, 0x22, 0xB6, 0xB8, 0x77, + 0x8B, 0x14, 0x9A, 0x82, 0x2A, 0xEF, 0xBB, 0x09 + }, + { + 0x89, 0x06, 0x56, 0xF0, 0x9C, 0x99, 0xD2, 0x80, + 0xB5, 0xEC, 0xB3, 0x81, 0xF5, 0x64, 0x27, 0xB8, + 0x13, 0x75, 0x1B, 0xC6, 0x52, 0xC7, 0x82, 0x80, + 0x78, 0xB2, 0x3A, 0x4A, 0xF8, 0x3B, 0x4E, 0x3A, + 0x61, 0xFD, 0xBA, 0xC6, 0x1F, 0x89, 0xBE, 0xE8, + 0x4E, 0xA6, 0xBE, 0xE7, 0x60, 0xC0, 0x47, 0xF2, + 0x5C, 0x6B, 0x0A, 0x20, 0x1C, 0x69, 0xA3, 0x8F, + 0xD6, 0xFD, 0x97, 0x1A, 0xF1, 0x85, 0x88, 0xBB + }, + { + 0x31, 0xA0, 0x46, 0xF7, 0x88, 0x2F, 0xFE, 0x6F, + 0x83, 0xCE, 0x47, 0x2E, 0x9A, 0x07, 0x01, 0x83, + 0x2E, 0xC7, 0xB3, 0xF7, 0x6F, 0xBC, 0xFD, 0x1D, + 0xF6, 0x0F, 0xE3, 0xEA, 0x48, 0xFD, 0xE1, 0x65, + 0x12, 0x54, 0x24, 0x7C, 0x3F, 0xD9, 0x5E, 0x10, + 0x0F, 0x91, 0x72, 0x73, 0x1E, 0x17, 0xFD, 0x52, + 0x97, 0xC1, 0x1F, 0x4B, 0xB3, 0x28, 0x36, 0x3C, + 0xA3, 0x61, 0x62, 0x4A, 0x81, 0xAF, 0x79, 0x7C + }, + { + 0x27, 0xA6, 0x0B, 0x2D, 0x00, 0xE7, 0xA6, 0x71, + 0xD4, 0x7D, 0x0A, 0xEC, 0x2A, 0x68, 0x6A, 0x0A, + 0xC0, 0x4B, 0x52, 0xF4, 0x0A, 0xB6, 0x62, 0x90, + 0x28, 0xEB, 0x7D, 0x13, 0xF4, 0xBA, 0xA9, 0x9A, + 0xC0, 0xFE, 0x46, 0xEE, 0x6C, 0x81, 0x49, 0x44, + 0xF2, 0xF4, 0xB4, 0xD2, 0x0E, 0x93, 0x78, 0xE4, + 0x84, 0x7E, 0xA4, 0x4C, 0x13, 0x17, 0x80, 0x91, + 0xE2, 0x77, 0xB8, 0x7E, 0xA7, 0xA5, 0x57, 0x11 + }, + { + 0x8B, 0x5C, 0xCE, 0xF1, 0x94, 0x16, 0x2C, 0x1F, + 0x19, 0xD6, 0x8F, 0x91, 0xE0, 0xB0, 0x92, 0x8F, + 0x28, 0x9E, 0xC5, 0x28, 0x37, 0x20, 0x84, 0x0C, + 0x2F, 0x73, 0xD2, 0x53, 0x11, 0x12, 0x38, 0xDC, + 0xFE, 0x94, 0xAF, 0x2B, 0x59, 0xC2, 0xC1, 0xCA, + 0x25, 0x91, 0x90, 0x1A, 0x7B, 0xC0, 0x60, 0xE7, + 0x45, 0x9B, 0x6C, 0x47, 0xDF, 0x0F, 0x71, 0x70, + 0x1A, 0x35, 0xCC, 0x0A, 0xA8, 0x31, 0xB5, 0xB6 + }, + { + 0x57, 0xAB, 0x6C, 0x4B, 0x22, 0x29, 0xAE, 0xB3, + 0xB7, 0x04, 0x76, 0xD8, 0x03, 0xCD, 0x63, 0x81, + 0x2F, 0x10, 0x7C, 0xE6, 0xDA, 0x17, 0xFE, 0xD9, + 0xB1, 0x78, 0x75, 0xE8, 0xF8, 0x6C, 0x72, 0x4F, + 0x49, 0xE0, 0x24, 0xCB, 0xF3, 0xA1, 0xB8, 0xB1, + 0x19, 0xC5, 0x03, 0x57, 0x65, 0x2B, 0x81, 0x87, + 0x9D, 0x2A, 0xDE, 0x2D, 0x58, 0x8B, 0x9E, 0x4F, + 0x7C, 0xED, 0xBA, 0x0E, 0x46, 0x44, 0xC9, 0xEE + }, + { + 0x01, 0x90, 0xA8, 0xDA, 0xC3, 0x20, 0xA7, 0x39, + 0xF3, 0x22, 0xE1, 0x57, 0x31, 0xAA, 0x14, 0x0D, + 0xDA, 0xF5, 0xBE, 0xD2, 0x94, 0xD5, 0xC8, 0x2E, + 0x54, 0xFE, 0xF2, 0x9F, 0x21, 0x4E, 0x18, 0xAA, + 0xFA, 0xA8, 0x4F, 0x8B, 0xE9, 0x9A, 0xF6, 0x29, + 0x50, 0x26, 0x6B, 0x8F, 0x90, 0x1F, 0x15, 0xDD, + 0x4C, 0x5D, 0x35, 0x51, 0x6F, 0xC3, 0x5B, 0x4C, + 0xAB, 0x2E, 0x96, 0xE4, 0x69, 0x5B, 0xBE, 0x1C + }, + { + 0xD1, 0x4D, 0x7C, 0x4C, 0x41, 0x5E, 0xEB, 0x0E, + 0x10, 0xB1, 0x59, 0x22, 0x4B, 0xEA, 0x12, 0x7E, + 0xBD, 0x84, 0xF9, 0x59, 0x1C, 0x70, 0x2A, 0x33, + 0x0F, 0x5B, 0xB7, 0xBB, 0x7A, 0xA4, 0x4E, 0xA3, + 0x9D, 0xE6, 0xED, 0x01, 0xF1, 0x8D, 0xA7, 0xAD, + 0xF4, 0x0C, 0xFB, 0x97, 0xC5, 0xD1, 0x52, 0xC2, + 0x75, 0x28, 0x82, 0x4B, 0x21, 0xE2, 0x39, 0x52, + 0x6A, 0xF8, 0xF3, 0x6B, 0x21, 0x4E, 0x0C, 0xFB + }, + { + 0xBE, 0x28, 0xC4, 0xBE, 0x70, 0x69, 0x70, 0x48, + 0x8F, 0xAC, 0x7D, 0x29, 0xC3, 0xBD, 0x5C, 0x4E, + 0x98, 0x60, 0x85, 0xC4, 0xC3, 0x33, 0x2F, 0x1F, + 0x3F, 0xD3, 0x09, 0x73, 0xDB, 0x61, 0x41, 0x64, + 0xBA, 0x2F, 0x31, 0xA7, 0x88, 0x75, 0xFF, 0xDC, + 0x15, 0x03, 0x25, 0xC8, 0x83, 0x27, 0xA9, 0x44, + 0x3E, 0xD0, 0x4F, 0xDF, 0xE5, 0xBE, 0x93, 0x87, + 0x6D, 0x16, 0x28, 0x56, 0x0C, 0x76, 0x4A, 0x80 + }, + { + 0x03, 0x1D, 0xA1, 0x06, 0x9E, 0x3A, 0x2E, 0x9C, + 0x33, 0x82, 0xE4, 0x36, 0xFF, 0xD7, 0x9D, 0xF7, + 0x4B, 0x1C, 0xA6, 0xA8, 0xAD, 0xB2, 0xDE, 0xAB, + 0xE6, 0x76, 0xAB, 0x45, 0x99, 0x4C, 0xBC, 0x05, + 0x4F, 0x03, 0x7D, 0x2F, 0x0E, 0xAC, 0xE8, 0x58, + 0xD3, 0x2C, 0x14, 0xE2, 0xD1, 0xC8, 0xB4, 0x60, + 0x77, 0x30, 0x8E, 0x3B, 0xDC, 0x2C, 0x1B, 0x53, + 0x17, 0x2E, 0xCF, 0x7A, 0x8C, 0x14, 0xE3, 0x49 + }, + { + 0x46, 0x65, 0xCE, 0xF8, 0xBA, 0x4D, 0xB4, 0xD0, + 0xAC, 0xB1, 0x18, 0xF2, 0x98, 0x7F, 0x0B, 0xB0, + 0x9F, 0x8F, 0x86, 0xAA, 0x44, 0x5A, 0xA3, 0xD5, + 0xFC, 0x9A, 0x8B, 0x34, 0x68, 0x64, 0x78, 0x74, + 0x89, 0xE8, 0xFC, 0xEC, 0xC1, 0x25, 0xD1, 0x7E, + 0x9B, 0x56, 0xE1, 0x29, 0x88, 0xEA, 0xC5, 0xEC, + 0xC7, 0x28, 0x68, 0x83, 0xDB, 0x06, 0x61, 0xB8, + 0xFF, 0x05, 0xDA, 0x2A, 0xFF, 0xF3, 0x0F, 0xE4 + }, + { + 0x63, 0xB7, 0x03, 0x2E, 0x5F, 0x93, 0x0C, 0xC9, + 0x93, 0x95, 0x17, 0xF9, 0xE9, 0x86, 0x81, 0x6C, + 0xFB, 0xEC, 0x2B, 0xE5, 0x9B, 0x95, 0x68, 0xB1, + 0x3F, 0x2E, 0xAD, 0x05, 0xBA, 0xE7, 0x77, 0x7C, + 0xAB, 0x62, 0x0C, 0x66, 0x59, 0x40, 0x4F, 0x74, + 0x09, 0xE4, 0x19, 0x9A, 0x3B, 0xE5, 0xF7, 0x86, + 0x5A, 0xA7, 0xCB, 0xDF, 0x8C, 0x42, 0x53, 0xF7, + 0xE8, 0x21, 0x9B, 0x1B, 0xD5, 0xF4, 0x6F, 0xEA + }, + { + 0x9F, 0x09, 0xBF, 0x09, 0x3A, 0x2B, 0x0F, 0xF8, + 0xC2, 0x63, 0x4B, 0x49, 0xE3, 0x7F, 0x1B, 0x21, + 0x35, 0xB4, 0x47, 0xAA, 0x91, 0x44, 0xC9, 0x78, + 0x7D, 0xBF, 0xD9, 0x21, 0x29, 0x31, 0x6C, 0x99, + 0xE8, 0x8A, 0xAB, 0x8A, 0x21, 0xFD, 0xEF, 0x23, + 0x72, 0xD1, 0x18, 0x9A, 0xEC, 0x50, 0x0F, 0x95, + 0x77, 0x5F, 0x1F, 0x92, 0xBF, 0xB4, 0x55, 0x45, + 0xE4, 0x25, 0x9F, 0xB9, 0xB7, 0xB0, 0x2D, 0x14 + }, + { + 0xF9, 0xF8, 0x49, 0x3C, 0x68, 0x08, 0x88, 0x07, + 0xDF, 0x7F, 0x6A, 0x26, 0x93, 0xD6, 0x4E, 0xA5, + 0x9F, 0x03, 0xE9, 0xE0, 0x5A, 0x22, 0x3E, 0x68, + 0x52, 0x4C, 0xA3, 0x21, 0x95, 0xA4, 0x73, 0x4B, + 0x65, 0x4F, 0xCE, 0xA4, 0xD2, 0x73, 0x4C, 0x86, + 0x6C, 0xF9, 0x5C, 0x88, 0x9F, 0xB1, 0x0C, 0x49, + 0x15, 0x9B, 0xE2, 0xF5, 0x04, 0x3D, 0xC9, 0x8B, + 0xB5, 0x5E, 0x02, 0xEF, 0x7B, 0xDC, 0xB0, 0x82 + }, + { + 0x3C, 0x9A, 0x73, 0x59, 0xAB, 0x4F, 0xEB, 0xCE, + 0x07, 0xB2, 0x0A, 0xC4, 0x47, 0xB0, 0x6A, 0x24, + 0x0B, 0x7F, 0xE1, 0xDA, 0xE5, 0x43, 0x9C, 0x49, + 0xB6, 0x0B, 0x58, 0x19, 0xF7, 0x81, 0x2E, 0x4C, + 0x17, 0x24, 0x06, 0xC1, 0xAA, 0xC3, 0x16, 0x71, + 0x3C, 0xF0, 0xDD, 0xED, 0x10, 0x38, 0x07, 0x72, + 0x58, 0xE2, 0xEF, 0xF5, 0xB3, 0x39, 0x13, 0xD9, + 0xD9, 0x5C, 0xAE, 0xB4, 0xE6, 0xC6, 0xB9, 0x70 + }, + { + 0xAD, 0x6A, 0xAB, 0x80, 0x84, 0x51, 0x0E, 0x82, + 0x2C, 0xFC, 0xE8, 0x62, 0x5D, 0x62, 0xCF, 0x4D, + 0xE6, 0x55, 0xF4, 0x76, 0x38, 0x84, 0xC7, 0x1E, + 0x80, 0xBA, 0xB9, 0xAC, 0x9D, 0x53, 0x18, 0xDB, + 0xA4, 0xA6, 0x03, 0x3E, 0xD2, 0x90, 0x84, 0xE6, + 0x52, 0x16, 0xC0, 0x31, 0x60, 0x6C, 0xA1, 0x76, + 0x15, 0xDC, 0xFE, 0x3B, 0xA1, 0x1D, 0x26, 0x85, + 0x1A, 0xE0, 0x99, 0x9C, 0xA6, 0xE2, 0x32, 0xCF + }, + { + 0x15, 0x6E, 0x9E, 0x62, 0x61, 0x37, 0x4C, 0x9D, + 0xC8, 0x84, 0xF3, 0x6E, 0x70, 0xF0, 0xFE, 0x1A, + 0xB9, 0x29, 0x79, 0x97, 0xB8, 0x36, 0xFA, 0x7D, + 0x17, 0x0A, 0x9C, 0x9E, 0xBF, 0x57, 0x5B, 0x88, + 0x1E, 0x7B, 0xCE, 0xA4, 0x4D, 0x6C, 0x02, 0x48, + 0xD3, 0x55, 0x97, 0x90, 0x71, 0x54, 0x82, 0x89, + 0x55, 0xBE, 0x19, 0x13, 0x58, 0x52, 0xF9, 0x22, + 0x88, 0x15, 0xEC, 0xA0, 0x24, 0xA8, 0xAD, 0xFB + }, + { + 0x42, 0x15, 0x40, 0x76, 0x33, 0xF4, 0xCC, 0xA9, + 0xB6, 0x78, 0x8B, 0xE9, 0x3E, 0x6A, 0xA3, 0xD9, + 0x63, 0xC7, 0xD6, 0xCE, 0x4B, 0x14, 0x72, 0x47, + 0x09, 0x9F, 0x46, 0xA3, 0xAC, 0xB5, 0x00, 0xA3, + 0x00, 0x38, 0xCB, 0x3E, 0x78, 0x8C, 0x3D, 0x29, + 0xF1, 0x32, 0xAD, 0x84, 0x4E, 0x80, 0xE9, 0xE9, + 0x92, 0x51, 0xF6, 0xDB, 0x96, 0xAC, 0xD8, 0xA0, + 0x91, 0xCF, 0xC7, 0x70, 0xAF, 0x53, 0x84, 0x7B + }, + { + 0x1C, 0x07, 0x7E, 0x27, 0x9D, 0xE6, 0x54, 0x85, + 0x23, 0x50, 0x2B, 0x6D, 0xF8, 0x00, 0xFF, 0xDA, + 0xB5, 0xE2, 0xC3, 0xE9, 0x44, 0x2E, 0xB8, 0x38, + 0xF5, 0x8C, 0x29, 0x5F, 0x3B, 0x14, 0x7C, 0xEF, + 0x9D, 0x70, 0x1C, 0x41, 0xC3, 0x21, 0x28, 0x3F, + 0x00, 0xC7, 0x1A, 0xFF, 0xA0, 0x61, 0x93, 0x10, + 0x39, 0x91, 0x26, 0x29, 0x5B, 0x78, 0xDD, 0x4D, + 0x1A, 0x74, 0x57, 0x2E, 0xF9, 0xED, 0x51, 0x35 + }, + { + 0xF0, 0x7A, 0x55, 0x5F, 0x49, 0xFE, 0x48, 0x1C, + 0xF4, 0xCD, 0x0A, 0x87, 0xB7, 0x1B, 0x82, 0xE4, + 0xA9, 0x50, 0x64, 0xD0, 0x66, 0x77, 0xFD, 0xD9, + 0x0A, 0x0E, 0xB5, 0x98, 0x87, 0x7B, 0xA1, 0xC8, + 0x3D, 0x46, 0x77, 0xB3, 0x93, 0xC3, 0xA3, 0xB6, + 0x66, 0x1C, 0x42, 0x1F, 0x5B, 0x12, 0xCB, 0x99, + 0xD2, 0x03, 0x76, 0xBA, 0x72, 0x75, 0xC2, 0xF3, + 0xA8, 0xF5, 0xA9, 0xB7, 0x82, 0x17, 0x20, 0xDA + }, + { + 0xB5, 0x91, 0x1B, 0x38, 0x0D, 0x20, 0xC7, 0xB0, + 0x43, 0x23, 0xE4, 0x02, 0x6B, 0x38, 0xE2, 0x00, + 0xF5, 0x34, 0x25, 0x92, 0x33, 0xB5, 0x81, 0xE0, + 0x2C, 0x1E, 0x3E, 0x2D, 0x84, 0x38, 0xD6, 0xC6, + 0x6D, 0x5A, 0x4E, 0xB2, 0x01, 0xD5, 0xA8, 0xB7, + 0x50, 0x72, 0xC4, 0xEC, 0x29, 0x10, 0x63, 0x34, + 0xDA, 0x70, 0xBC, 0x79, 0x52, 0x1B, 0x0C, 0xED, + 0x2C, 0xFD, 0x53, 0x3F, 0x5F, 0xF8, 0x4F, 0x95 + }, + { + 0x01, 0xF0, 0x70, 0xA0, 0x9B, 0xAE, 0x91, 0x12, + 0x96, 0x36, 0x1F, 0x91, 0xAA, 0x0E, 0x8E, 0x0D, + 0x09, 0xA7, 0x72, 0x54, 0x78, 0x53, 0x6D, 0x9D, + 0x48, 0xC5, 0xFE, 0x1E, 0x5E, 0x7C, 0x3C, 0x5B, + 0x9B, 0x9D, 0x6E, 0xB0, 0x77, 0x96, 0xF6, 0xDA, + 0x57, 0xAE, 0x56, 0x2A, 0x7D, 0x70, 0xE8, 0x82, + 0xE3, 0x7A, 0xDF, 0xDE, 0x83, 0xF0, 0xC4, 0x33, + 0xC2, 0xCD, 0x36, 0x35, 0x36, 0xBB, 0x22, 0xC8 + }, + { + 0x6F, 0x79, 0x3E, 0xB4, 0x37, 0x4A, 0x48, 0xB0, + 0x77, 0x5A, 0xCA, 0xF9, 0xAD, 0xCF, 0x8E, 0x45, + 0xE5, 0x42, 0x70, 0xC9, 0x47, 0x5F, 0x00, 0x4A, + 0xD8, 0xD5, 0x97, 0x3E, 0x2A, 0xCA, 0x52, 0x74, + 0x7F, 0xF4, 0xED, 0x04, 0xAE, 0x96, 0x72, 0x75, + 0xB9, 0xF9, 0xEB, 0x0E, 0x1F, 0xF7, 0x5F, 0xB4, + 0xF7, 0x94, 0xFA, 0x8B, 0xE9, 0xAD, 0xD7, 0xA4, + 0x13, 0x04, 0x86, 0x8D, 0x10, 0x3F, 0xAB, 0x10 + }, + { + 0x96, 0x5F, 0x20, 0xF1, 0x39, 0x76, 0x5F, 0xCC, + 0x4C, 0xE4, 0xBA, 0x37, 0x94, 0x67, 0x58, 0x63, + 0xCA, 0xC2, 0x4D, 0xB4, 0x72, 0xCD, 0x2B, 0x79, + 0x9D, 0x03, 0x5B, 0xCE, 0x3D, 0xBE, 0xA5, 0x02, + 0xDA, 0x7B, 0x52, 0x48, 0x65, 0xF6, 0xB8, 0x11, + 0xD8, 0xC5, 0x82, 0x8D, 0x3A, 0x88, 0x96, 0x46, + 0xFE, 0x64, 0xA3, 0x80, 0xDA, 0x1A, 0xA7, 0xC7, + 0x04, 0x4E, 0x9F, 0x24, 0x5D, 0xCE, 0xD1, 0x28 + }, + { + 0xEC, 0x29, 0x5B, 0x57, 0x83, 0x60, 0x12, 0x44, + 0xC3, 0x0E, 0x46, 0x41, 0xE3, 0xB4, 0x5B, 0xE2, + 0x22, 0xC4, 0xDC, 0xE7, 0x7A, 0x58, 0x70, 0x0F, + 0x53, 0xBC, 0x8E, 0xC5, 0x2A, 0x94, 0x16, 0x90, + 0xB4, 0xD0, 0xB0, 0x87, 0xFB, 0x6F, 0xCB, 0x3F, + 0x39, 0x83, 0x2B, 0x9D, 0xE8, 0xF7, 0x5E, 0xC2, + 0x0B, 0xD4, 0x30, 0x79, 0x81, 0x17, 0x49, 0xCD, + 0xC9, 0x07, 0xED, 0xB9, 0x41, 0x57, 0xD1, 0x80 + }, + { + 0x61, 0xC7, 0x2F, 0x8C, 0xCC, 0x91, 0xDB, 0xB5, + 0x4C, 0xA6, 0x75, 0x0B, 0xC4, 0x89, 0x67, 0x2D, + 0xE0, 0x9F, 0xAE, 0xDB, 0x8F, 0xDD, 0x4F, 0x94, + 0xFF, 0x23, 0x20, 0x90, 0x9A, 0x30, 0x3F, 0x5D, + 0x5A, 0x98, 0x48, 0x1C, 0x0B, 0xC1, 0xA6, 0x25, + 0x41, 0x9F, 0xB4, 0xDE, 0xBF, 0xBF, 0x7F, 0x8A, + 0x53, 0xBB, 0x07, 0xEC, 0x3D, 0x98, 0x5E, 0x8E, + 0xA1, 0x1E, 0x72, 0xD5, 0x59, 0x94, 0x07, 0x80 + }, + { + 0xAF, 0xD8, 0x14, 0x5B, 0x25, 0x9E, 0xEF, 0xC8, + 0xD1, 0x26, 0x20, 0xC3, 0xC5, 0xB0, 0x3E, 0x1E, + 0xD8, 0xFD, 0x2C, 0xCE, 0xFE, 0x03, 0x65, 0x07, + 0x8C, 0x80, 0xFD, 0x42, 0xC1, 0x77, 0x0E, 0x28, + 0xB4, 0x49, 0x48, 0xF2, 0x7E, 0x65, 0xA1, 0x88, + 0x66, 0x90, 0x11, 0x0D, 0xB8, 0x14, 0x39, 0x7B, + 0x68, 0xE4, 0x3D, 0x80, 0xD1, 0xBA, 0x16, 0xDF, + 0xA3, 0x58, 0xE7, 0x39, 0xC8, 0x98, 0xCF, 0xA3 + }, + { + 0x55, 0x2F, 0xC7, 0x89, 0x3C, 0xF1, 0xCE, 0x93, + 0x3A, 0xDA, 0x35, 0xC0, 0xDA, 0x98, 0x84, 0x4E, + 0x41, 0x54, 0x5E, 0x24, 0x4C, 0x31, 0x57, 0xA1, + 0x42, 0x8D, 0x7B, 0x4C, 0x21, 0xF9, 0xCD, 0x7E, + 0x40, 0x71, 0xAE, 0xD7, 0x7B, 0x7C, 0xA9, 0xF1, + 0xC3, 0x8F, 0xBA, 0x32, 0x23, 0x74, 0x12, 0xEF, + 0x21, 0xA3, 0x42, 0x74, 0x2E, 0xC8, 0x32, 0x43, + 0x78, 0xF2, 0x1E, 0x50, 0x7F, 0xAF, 0xDD, 0x88 + }, + { + 0x46, 0x7A, 0x33, 0xFB, 0xAD, 0xF5, 0xEB, 0xC5, + 0x25, 0x96, 0xEF, 0x86, 0xAA, 0xAE, 0xFC, 0x6F, + 0xAB, 0xA8, 0xEE, 0x65, 0x1B, 0x1C, 0xE0, 0x4D, + 0xE3, 0x68, 0xA0, 0x3A, 0x5A, 0x90, 0x40, 0xEF, + 0x28, 0x35, 0xE0, 0x0A, 0xDB, 0x09, 0xAB, 0xB3, + 0xFB, 0xD2, 0xBC, 0xE8, 0x18, 0xA2, 0x41, 0x3D, + 0x0B, 0x02, 0x53, 0xB5, 0xBD, 0xA4, 0xFC, 0x5B, + 0x2F, 0x6F, 0x85, 0xF3, 0xFD, 0x5B, 0x55, 0xF2 + }, + { + 0x22, 0xEF, 0xF8, 0xE6, 0xDD, 0x52, 0x36, 0xF5, + 0xF5, 0x7D, 0x94, 0xED, 0xE8, 0x74, 0xD6, 0xC9, + 0x42, 0x8E, 0x8F, 0x5D, 0x56, 0x6F, 0x17, 0xCD, + 0x6D, 0x18, 0x48, 0xCD, 0x75, 0x2F, 0xE1, 0x3C, + 0x65, 0x5C, 0xB1, 0x0F, 0xBA, 0xAF, 0xF7, 0x68, + 0x72, 0xF2, 0xBF, 0x2D, 0xA9, 0x9E, 0x15, 0xDC, + 0x62, 0x40, 0x75, 0xE1, 0xEC, 0x2F, 0x58, 0xA3, + 0xF6, 0x40, 0x72, 0x12, 0x18, 0x38, 0x56, 0x9E + }, + { + 0x9C, 0xEC, 0x6B, 0xBF, 0x62, 0xC4, 0xBC, 0xE4, + 0x13, 0x8A, 0xBA, 0xE1, 0xCB, 0xEC, 0x8D, 0xAD, + 0x31, 0x95, 0x04, 0x44, 0xE9, 0x03, 0x21, 0xB1, + 0x34, 0x71, 0x96, 0x83, 0x4C, 0x11, 0x4B, 0x86, + 0x4A, 0xF3, 0xF3, 0xCC, 0x35, 0x08, 0xF8, 0x37, + 0x51, 0xFF, 0xB4, 0xED, 0xA7, 0xC8, 0x4D, 0x14, + 0x07, 0x34, 0xBB, 0x42, 0x63, 0xC3, 0x62, 0x5C, + 0x00, 0xF0, 0x4F, 0x4C, 0x80, 0x68, 0x98, 0x1B + }, + { + 0xA8, 0xB6, 0x0F, 0xA4, 0xFC, 0x24, 0x42, 0xF6, + 0xF1, 0x51, 0x4A, 0xD7, 0x40, 0x26, 0x26, 0x92, + 0x0C, 0xC7, 0xC2, 0xC9, 0xF7, 0x21, 0x24, 0xB8, + 0xCB, 0xA8, 0xEE, 0x2C, 0xB7, 0xC4, 0x58, 0x6F, + 0x65, 0x8A, 0x44, 0x10, 0xCF, 0xFC, 0xC0, 0xAB, + 0x88, 0x34, 0x39, 0x55, 0xE0, 0x94, 0xC6, 0xAF, + 0x0D, 0x20, 0xD0, 0xC7, 0x14, 0xFB, 0x0A, 0x98, + 0x8F, 0x54, 0x3F, 0x30, 0x0F, 0x58, 0xD3, 0x89 + }, + { + 0x82, 0x71, 0xCC, 0x45, 0xDF, 0xA5, 0xE4, 0x17, + 0x0E, 0x84, 0x7E, 0x86, 0x30, 0xB9, 0x52, 0xCF, + 0x9C, 0x2A, 0xA7, 0x77, 0xD0, 0x6F, 0x26, 0xA7, + 0x58, 0x5B, 0x83, 0x81, 0xF1, 0x88, 0xDA, 0xCC, + 0x73, 0x37, 0x39, 0x1C, 0xFC, 0xC9, 0x4B, 0x05, + 0x3D, 0xC4, 0xEC, 0x29, 0xCC, 0x17, 0xF0, 0x77, + 0x87, 0x04, 0x28, 0xF1, 0xAC, 0x23, 0xFD, 0xDD, + 0xA1, 0x65, 0xEF, 0x5A, 0x3F, 0x15, 0x5F, 0x39 + }, + { + 0xBF, 0x23, 0xC0, 0xC2, 0x5C, 0x80, 0x60, 0xE4, + 0xF6, 0x99, 0x5F, 0x16, 0x23, 0xA3, 0xBE, 0xBE, + 0xCA, 0xA9, 0x6E, 0x30, 0x86, 0x80, 0x00, 0x0A, + 0x8A, 0xA3, 0xCD, 0x56, 0xBB, 0x1A, 0x6D, 0xA0, + 0x99, 0xE1, 0x0D, 0x92, 0x31, 0xB3, 0x7F, 0x45, + 0x19, 0xB2, 0xEF, 0xD2, 0xC2, 0x4D, 0xE7, 0x2F, + 0x31, 0xA5, 0xF1, 0x95, 0x35, 0x24, 0x1B, 0x4A, + 0x59, 0xFA, 0x3C, 0x03, 0xCE, 0xB7, 0x90, 0xE7 + }, + { + 0x87, 0x7F, 0xD6, 0x52, 0xC0, 0x52, 0x81, 0x00, + 0x9C, 0x0A, 0x52, 0x50, 0xE7, 0xA3, 0xA6, 0x71, + 0xF8, 0xB1, 0x8C, 0x10, 0x88, 0x17, 0xFE, 0x4A, + 0x87, 0x4D, 0xE2, 0x2D, 0xA8, 0xE4, 0x5D, 0xB1, + 0x19, 0x58, 0xA6, 0x00, 0xC5, 0xF6, 0x2E, 0x67, + 0xD3, 0x6C, 0xBF, 0x84, 0x47, 0x4C, 0xF2, 0x44, + 0xA9, 0xC2, 0xB0, 0x3A, 0x9F, 0xB9, 0xDC, 0x71, + 0x1C, 0xD1, 0xA2, 0xCA, 0xB6, 0xF3, 0xFA, 0xE0 + }, + { + 0x29, 0xDF, 0x4D, 0x87, 0xEA, 0x44, 0x4B, 0xAF, + 0x5B, 0xCD, 0xF5, 0xF4, 0xE4, 0x15, 0x79, 0xE2, + 0x8A, 0x67, 0xDE, 0x84, 0x14, 0x9F, 0x06, 0xC0, + 0x3F, 0x11, 0x0E, 0xA8, 0x4F, 0x57, 0x2A, 0x9F, + 0x67, 0x6A, 0xDD, 0xD0, 0x4C, 0x48, 0x78, 0xF4, + 0x9C, 0x5C, 0x00, 0xAC, 0xCD, 0xA4, 0x41, 0xB1, + 0xA3, 0x87, 0xCA, 0xCE, 0xB2, 0xE9, 0x93, 0xBB, + 0x7A, 0x10, 0xCD, 0x8C, 0x2D, 0x67, 0x17, 0xE1 + }, + { + 0x71, 0x0D, 0xAC, 0xB1, 0x66, 0x84, 0x46, 0x39, + 0xCD, 0x7B, 0x63, 0x7C, 0x27, 0x42, 0x09, 0x42, + 0x4E, 0x24, 0x49, 0xDC, 0x35, 0xD7, 0x90, 0xBB, + 0xFA, 0x4F, 0x76, 0x17, 0x70, 0x54, 0xA3, 0x6B, + 0x3B, 0x76, 0xFA, 0xC0, 0xCA, 0x6E, 0x61, 0xDF, + 0x1E, 0x68, 0x70, 0x00, 0x67, 0x8A, 0xC0, 0x74, + 0x6D, 0xF7, 0x5D, 0x0A, 0x39, 0x54, 0x89, 0x76, + 0x81, 0xFD, 0x39, 0x3A, 0x15, 0x5A, 0x1B, 0xB4 + }, + { + 0xC1, 0xD5, 0xF9, 0x3B, 0x8D, 0xEA, 0x1F, 0x25, + 0x71, 0xBA, 0xBC, 0xCB, 0xC0, 0x17, 0x64, 0x54, + 0x1A, 0x0C, 0xDA, 0x87, 0xE4, 0x44, 0xD6, 0x73, + 0xC5, 0x09, 0x66, 0xCA, 0x55, 0x9C, 0x33, 0x35, + 0x4B, 0x3A, 0xCB, 0x26, 0xE5, 0xD5, 0x78, 0x1F, + 0xFB, 0x28, 0x84, 0x7A, 0x4B, 0x47, 0x54, 0xD7, + 0x70, 0x08, 0xC6, 0x2A, 0x83, 0x58, 0x35, 0xF5, + 0x00, 0xDE, 0xA7, 0xC3, 0xB5, 0x8B, 0xDA, 0xE2 + }, + { + 0xA4, 0x1E, 0x41, 0x27, 0x1C, 0xDA, 0xB8, 0xAF, + 0x4D, 0x72, 0xB1, 0x04, 0xBF, 0xB2, 0xAD, 0x04, + 0x1A, 0xC4, 0xDF, 0x14, 0x67, 0x7D, 0xA6, 0x71, + 0xD8, 0x56, 0x40, 0xC4, 0xB1, 0x87, 0xF5, 0x0C, + 0x2B, 0x66, 0x51, 0x3C, 0x46, 0x19, 0xFB, 0xD5, + 0xD5, 0xDC, 0x4F, 0xE6, 0x5D, 0xD3, 0x7B, 0x90, + 0x42, 0xE9, 0x84, 0x8D, 0xDA, 0x55, 0x6A, 0x50, + 0x4C, 0xAA, 0x2B, 0x1C, 0x6A, 0xFE, 0x47, 0x30 + }, + { + 0xE7, 0xBC, 0xBA, 0xCD, 0xC3, 0x79, 0xC4, 0x3D, + 0x81, 0xEB, 0xAD, 0xCB, 0x37, 0x78, 0x15, 0x52, + 0xFC, 0x1D, 0x75, 0x3E, 0x8C, 0xF3, 0x10, 0xD9, + 0x68, 0x39, 0x2D, 0x06, 0xC9, 0x1F, 0x1D, 0x64, + 0xCC, 0x9E, 0x90, 0xCE, 0x1D, 0x22, 0xC3, 0x2D, + 0x27, 0x7F, 0xC6, 0xCD, 0xA4, 0x33, 0xA4, 0xD4, + 0x42, 0xC7, 0x62, 0xE9, 0xEA, 0xCF, 0x2C, 0x25, + 0x9F, 0x32, 0xD6, 0x4C, 0xF9, 0xDA, 0x3A, 0x22 + }, + { + 0x51, 0x75, 0x5B, 0x4A, 0xC5, 0x45, 0x6B, 0x13, + 0x21, 0x8A, 0x19, 0xC5, 0xB9, 0x24, 0x2F, 0x57, + 0xC4, 0xA9, 0x81, 0xE4, 0xD4, 0xEC, 0xDC, 0xE0, + 0x9A, 0x31, 0x93, 0x36, 0x2B, 0x80, 0x8A, 0x57, + 0x93, 0x45, 0xD4, 0x88, 0x1C, 0x26, 0x07, 0xA5, + 0x65, 0x34, 0xDD, 0x7F, 0x21, 0x95, 0x6A, 0xFF, + 0x72, 0xC2, 0xF4, 0x17, 0x3A, 0x6E, 0x7B, 0x6C, + 0xC2, 0x21, 0x2B, 0xA0, 0xE3, 0xDA, 0xEE, 0x1F + }, + { + 0xDC, 0xC2, 0xC4, 0xBE, 0xB9, 0xC1, 0xF2, 0x60, + 0x7B, 0x78, 0x6C, 0x20, 0xC6, 0x31, 0x97, 0x23, + 0x47, 0x03, 0x4C, 0x1C, 0xC0, 0x2F, 0xCC, 0x7D, + 0x02, 0xFF, 0x01, 0x09, 0x9C, 0xFE, 0x1C, 0x69, + 0x89, 0x84, 0x0A, 0xC2, 0x13, 0x92, 0x36, 0x29, + 0x11, 0x3A, 0xA8, 0xBA, 0xD7, 0x13, 0xCC, 0xF0, + 0xFE, 0x4C, 0xE1, 0x32, 0x64, 0xFB, 0x32, 0xB8, + 0xB0, 0xFE, 0x37, 0x2D, 0xA3, 0x82, 0x54, 0x4A + }, + { + 0x3D, 0x55, 0x17, 0x6A, 0xCE, 0xA4, 0xA7, 0xE3, + 0xA6, 0x5F, 0xFA, 0x9F, 0xB1, 0x0A, 0x7A, 0x17, + 0x67, 0x19, 0x9C, 0xF0, 0x77, 0xCE, 0xE9, 0xF7, + 0x15, 0x32, 0xD6, 0x7C, 0xD7, 0xC7, 0x3C, 0x9F, + 0x93, 0xCF, 0xC3, 0x7C, 0xCD, 0xCC, 0x1F, 0xDE, + 0xF5, 0x0A, 0xAD, 0x46, 0xA5, 0x04, 0xA6, 0x50, + 0xD2, 0x98, 0xD5, 0x97, 0xA3, 0xA9, 0xFA, 0x95, + 0xC6, 0xC4, 0x0C, 0xB7, 0x1F, 0xA5, 0xE7, 0x25 + }, + { + 0xD0, 0x77, 0x13, 0xC0, 0x05, 0xDE, 0x96, 0xDD, + 0x21, 0xD2, 0xEB, 0x8B, 0xBE, 0xCA, 0x66, 0x74, + 0x6E, 0xA5, 0x1A, 0x31, 0xAE, 0x92, 0x2A, 0x3E, + 0x74, 0x86, 0x48, 0x89, 0x54, 0x0A, 0x48, 0xDB, + 0x27, 0xD7, 0xE4, 0xC9, 0x03, 0x11, 0x63, 0x8B, + 0x22, 0x4B, 0xF0, 0x20, 0x1B, 0x50, 0x18, 0x91, + 0x75, 0x48, 0x48, 0x11, 0x3C, 0x26, 0x61, 0x08, + 0xD0, 0xAD, 0xB1, 0x3D, 0xB7, 0x19, 0x09, 0xC7 + }, + { + 0x58, 0x98, 0x3C, 0x21, 0x43, 0x3D, 0x95, 0x0C, + 0xAA, 0x23, 0xE4, 0xBC, 0x18, 0x54, 0x3B, 0x8E, + 0x60, 0x1C, 0x20, 0x43, 0x18, 0x53, 0x21, 0x52, + 0xDA, 0xF5, 0xE1, 0x59, 0xA0, 0xCD, 0x14, 0x80, + 0x18, 0x3D, 0x29, 0x28, 0x5C, 0x05, 0xF1, 0x29, + 0xCB, 0x0C, 0xC3, 0x16, 0x46, 0x87, 0x92, 0x80, + 0x86, 0xFF, 0xE3, 0x80, 0x15, 0x8D, 0xF1, 0xD3, + 0x94, 0xC6, 0xAC, 0x0D, 0x42, 0x88, 0xBC, 0xA8 + }, + { + 0x81, 0x00, 0xA8, 0xDC, 0x52, 0x8D, 0x2B, 0x68, + 0x2A, 0xB4, 0x25, 0x08, 0x01, 0xBA, 0x33, 0xF0, + 0x2A, 0x3E, 0x94, 0xC5, 0x4D, 0xAC, 0x0A, 0xE1, + 0x48, 0x2A, 0xA2, 0x1F, 0x51, 0xEF, 0x3A, 0x82, + 0xF3, 0x80, 0x7E, 0x6F, 0xAC, 0xB0, 0xAE, 0xB0, + 0x59, 0x47, 0xBF, 0x7A, 0xA2, 0xAD, 0xCB, 0x03, + 0x43, 0x56, 0xF9, 0x0F, 0xA4, 0x56, 0x0E, 0xDE, + 0x02, 0x20, 0x1A, 0x37, 0xE4, 0x11, 0xEC, 0x1A + }, + { + 0x07, 0x02, 0x5F, 0x1B, 0xB6, 0xC7, 0x84, 0xF3, + 0xFE, 0x49, 0xDE, 0x5C, 0x14, 0xB9, 0x36, 0xA5, + 0xAC, 0xAC, 0xAC, 0xAA, 0xB3, 0x3F, 0x6A, 0xC4, + 0xD0, 0xE0, 0x0A, 0xB6, 0xA1, 0x24, 0x83, 0xD6, + 0xBE, 0xC0, 0x0B, 0x4F, 0xE6, 0x7C, 0x7C, 0xA5, + 0xCC, 0x50, 0x8C, 0x2A, 0x53, 0xEF, 0xB5, 0xBF, + 0xA5, 0x39, 0x87, 0x69, 0xD8, 0x43, 0xFF, 0x0D, + 0x9E, 0x8B, 0x14, 0xD3, 0x6A, 0x01, 0xA7, 0x7F + }, + { + 0xBA, 0x6A, 0xEF, 0xD9, 0x72, 0xB6, 0x18, 0x6E, + 0x02, 0x7A, 0x76, 0x27, 0x3A, 0x4A, 0x72, 0x33, + 0x21, 0xA3, 0xF5, 0x80, 0xCF, 0xA8, 0x94, 0xDA, + 0x5A, 0x9C, 0xE8, 0xE7, 0x21, 0xC8, 0x28, 0x55, + 0x2C, 0x64, 0xDA, 0xCE, 0xE3, 0xA7, 0xFD, 0x2D, + 0x74, 0x3B, 0x5C, 0x35, 0xAD, 0x0C, 0x8E, 0xFA, + 0x71, 0xF8, 0xCE, 0x99, 0xBF, 0x96, 0x33, 0x47, + 0x10, 0xE2, 0xC2, 0x34, 0x6E, 0x8F, 0x3C, 0x52 + }, + { + 0xE0, 0x72, 0x1E, 0x02, 0x51, 0x7A, 0xED, 0xFA, + 0x4E, 0x7E, 0x9B, 0xA5, 0x03, 0xE0, 0x25, 0xFD, + 0x46, 0xE7, 0x14, 0x56, 0x6D, 0xC8, 0x89, 0xA8, + 0x4C, 0xBF, 0xE5, 0x6A, 0x55, 0xDF, 0xBE, 0x2F, + 0xC4, 0x93, 0x8A, 0xC4, 0x12, 0x05, 0x88, 0x33, + 0x5D, 0xEA, 0xC8, 0xEF, 0x3F, 0xA2, 0x29, 0xAD, + 0xC9, 0x64, 0x7F, 0x54, 0xAD, 0x2E, 0x34, 0x72, + 0x23, 0x4F, 0x9B, 0x34, 0xEF, 0xC4, 0x65, 0x43 + }, + { + 0xB6, 0x29, 0x26, 0x69, 0xCC, 0xD3, 0x8D, 0x5F, + 0x01, 0xCA, 0xAE, 0x96, 0xBA, 0x27, 0x2C, 0x76, + 0xA8, 0x79, 0xA4, 0x57, 0x43, 0xAF, 0xA0, 0x72, + 0x5D, 0x83, 0xB9, 0xEB, 0xB2, 0x66, 0x65, 0xB7, + 0x31, 0xF1, 0x84, 0x8C, 0x52, 0xF1, 0x19, 0x72, + 0xB6, 0x64, 0x4F, 0x55, 0x4C, 0x06, 0x4F, 0xA9, + 0x07, 0x80, 0xDB, 0xBB, 0xF3, 0xA8, 0x9D, 0x4F, + 0xC3, 0x1F, 0x67, 0xDF, 0x3E, 0x58, 0x57, 0xEF + }, + { + 0x23, 0x19, 0xE3, 0x78, 0x9C, 0x47, 0xE2, 0xDA, + 0xA5, 0xFE, 0x80, 0x7F, 0x61, 0xBE, 0xC2, 0xA1, + 0xA6, 0x53, 0x7F, 0xA0, 0x3F, 0x19, 0xFF, 0x32, + 0xE8, 0x7E, 0xEC, 0xBF, 0xD6, 0x4B, 0x7E, 0x0E, + 0x8C, 0xCF, 0xF4, 0x39, 0xAC, 0x33, 0x3B, 0x04, + 0x0F, 0x19, 0xB0, 0xC4, 0xDD, 0xD1, 0x1A, 0x61, + 0xE2, 0x4A, 0xC1, 0xFE, 0x0F, 0x10, 0xA0, 0x39, + 0x80, 0x6C, 0x5D, 0xCC, 0x0D, 0xA3, 0xD1, 0x15 + }, + { + 0xF5, 0x97, 0x11, 0xD4, 0x4A, 0x03, 0x1D, 0x5F, + 0x97, 0xA9, 0x41, 0x3C, 0x06, 0x5D, 0x1E, 0x61, + 0x4C, 0x41, 0x7E, 0xDE, 0x99, 0x85, 0x90, 0x32, + 0x5F, 0x49, 0xBA, 0xD2, 0xFD, 0x44, 0x4D, 0x3E, + 0x44, 0x18, 0xBE, 0x19, 0xAE, 0xC4, 0xE1, 0x14, + 0x49, 0xAC, 0x1A, 0x57, 0x20, 0x78, 0x98, 0xBC, + 0x57, 0xD7, 0x6A, 0x1B, 0xCF, 0x35, 0x66, 0x29, + 0x2C, 0x20, 0xC6, 0x83, 0xA5, 0xC4, 0x64, 0x8F + }, + { + 0xDF, 0x0A, 0x9D, 0x0C, 0x21, 0x28, 0x43, 0xA6, + 0xA9, 0x34, 0xE3, 0x90, 0x2B, 0x2D, 0xD3, 0x0D, + 0x17, 0xFB, 0xA5, 0xF9, 0x69, 0xD2, 0x03, 0x0B, + 0x12, 0xA5, 0x46, 0xD8, 0xA6, 0xA4, 0x5E, 0x80, + 0xCF, 0x56, 0x35, 0xF0, 0x71, 0xF0, 0x45, 0x2E, + 0x9C, 0x91, 0x92, 0x75, 0xDA, 0x99, 0xBE, 0xD5, + 0x1E, 0xB1, 0x17, 0x3C, 0x1A, 0xF0, 0x51, 0x87, + 0x26, 0xB7, 0x5B, 0x0E, 0xC3, 0xBA, 0xE2, 0xB5 + }, + { + 0xA3, 0xEB, 0x6E, 0x6C, 0x7B, 0xF2, 0xFB, 0x8B, + 0x28, 0xBF, 0xE8, 0xB1, 0x5E, 0x15, 0xBB, 0x50, + 0x0F, 0x78, 0x1E, 0xCC, 0x86, 0xF7, 0x78, 0xC3, + 0xA4, 0xE6, 0x55, 0xFC, 0x58, 0x69, 0xBF, 0x28, + 0x46, 0xA2, 0x45, 0xD4, 0xE3, 0x3B, 0x7B, 0x14, + 0x43, 0x6A, 0x17, 0xE6, 0x3B, 0xE7, 0x9B, 0x36, + 0x65, 0x5C, 0x22, 0x6A, 0x50, 0xFF, 0xBC, 0x71, + 0x24, 0x20, 0x7B, 0x02, 0x02, 0x34, 0x2D, 0xB5 + }, + { + 0x56, 0xD4, 0xCB, 0xCD, 0x07, 0x05, 0x63, 0x42, + 0x6A, 0x01, 0x70, 0x69, 0x42, 0x5C, 0x2C, 0xD2, + 0xAE, 0x54, 0x06, 0x68, 0x28, 0x7A, 0x5F, 0xB9, + 0xDA, 0xC4, 0x32, 0xEB, 0x8A, 0xB1, 0xA3, 0x53, + 0xA3, 0x0F, 0x2F, 0xE1, 0xF4, 0x0D, 0x83, 0x33, + 0x3A, 0xFE, 0x69, 0x6A, 0x26, 0x77, 0x95, 0x40, + 0x8A, 0x92, 0xFE, 0x7D, 0xA0, 0x7A, 0x0C, 0x18, + 0x14, 0xCF, 0x77, 0xF3, 0x6E, 0x10, 0x5E, 0xE8 + }, + { + 0xE5, 0x9B, 0x99, 0x87, 0xD4, 0x28, 0xB3, 0xED, + 0xA3, 0x7D, 0x80, 0xAB, 0xDB, 0x16, 0xCD, 0x2B, + 0x0A, 0xEF, 0x67, 0x4C, 0x2B, 0x1D, 0xDA, 0x44, + 0x32, 0xEA, 0x91, 0xEE, 0x6C, 0x93, 0x5C, 0x68, + 0x4B, 0x48, 0xB4, 0x42, 0x8A, 0x8C, 0xC7, 0x40, + 0xE5, 0x79, 0xA3, 0x0D, 0xEF, 0xF3, 0x5A, 0x80, + 0x30, 0x13, 0x82, 0x0D, 0xD2, 0x3F, 0x14, 0xAE, + 0x1D, 0x84, 0x13, 0xB5, 0xC8, 0x67, 0x2A, 0xEC + }, + { + 0xCD, 0x9F, 0xCC, 0x99, 0xF9, 0x9D, 0x4C, 0xC1, + 0x6D, 0x03, 0x19, 0x00, 0xB2, 0xA7, 0x36, 0xE1, + 0x50, 0x8D, 0xB4, 0xB5, 0x86, 0x81, 0x4E, 0x63, + 0x45, 0x85, 0x7F, 0x35, 0x4A, 0x70, 0xCC, 0xEC, + 0xB1, 0xDF, 0x3B, 0x50, 0xA1, 0x9A, 0xDA, 0xF4, + 0x3C, 0x27, 0x8E, 0xFA, 0x42, 0x3F, 0xF4, 0xBB, + 0x6C, 0x52, 0x3E, 0xC7, 0xFD, 0x78, 0x59, 0xB9, + 0x7B, 0x16, 0x8A, 0x7E, 0xBF, 0xF8, 0x46, 0x7C + }, + { + 0x06, 0x02, 0x18, 0x5D, 0x8C, 0x3A, 0x78, 0x73, + 0x8B, 0x99, 0x16, 0x4B, 0x8B, 0xC6, 0xFF, 0xB2, + 0x1C, 0x7D, 0xEB, 0xEB, 0xBF, 0x80, 0x63, 0x72, + 0xE0, 0xDA, 0x44, 0xD1, 0x21, 0x54, 0x55, 0x97, + 0xB9, 0xC6, 0x62, 0xA2, 0x55, 0xDC, 0x31, 0x54, + 0x2C, 0xF9, 0x95, 0xEC, 0xBE, 0x6A, 0x50, 0xFB, + 0x5E, 0x6E, 0x0E, 0xE4, 0xEF, 0x24, 0x0F, 0xE5, + 0x57, 0xED, 0xED, 0x11, 0x88, 0x08, 0x7E, 0x86 + }, + { + 0xC0, 0x8A, 0xFA, 0x5B, 0x92, 0x7B, 0xF0, 0x80, + 0x97, 0xAF, 0xC5, 0xFF, 0xF9, 0xCA, 0x4E, 0x78, + 0x00, 0x12, 0x5C, 0x1F, 0x52, 0xF2, 0xAF, 0x35, + 0x53, 0xFA, 0x2B, 0x89, 0xE1, 0xE3, 0x01, 0x5C, + 0x4F, 0x87, 0xD5, 0xE0, 0xA4, 0x89, 0x56, 0xAD, + 0x31, 0x45, 0x0B, 0x08, 0x3D, 0xAD, 0x14, 0x7F, + 0xFB, 0x5E, 0xC0, 0x34, 0x34, 0xA2, 0x68, 0x30, + 0xCF, 0x37, 0xD1, 0x03, 0xAB, 0x50, 0xC5, 0xDA + }, + { + 0x36, 0xF1, 0xE1, 0xC1, 0x1D, 0x6E, 0xF6, 0xBC, + 0x3B, 0x53, 0x6D, 0x50, 0x5D, 0x54, 0x4A, 0x87, + 0x15, 0x22, 0xC5, 0xC2, 0xA2, 0x53, 0x06, 0x7E, + 0xC9, 0x93, 0x3B, 0x6E, 0xC2, 0x54, 0x64, 0xDA, + 0xF9, 0x85, 0x52, 0x5F, 0x5B, 0x95, 0x60, 0xA1, + 0x6D, 0x89, 0x02, 0x59, 0xAC, 0x1B, 0xB5, 0xCC, + 0x67, 0xC0, 0xC4, 0x69, 0xCD, 0xE1, 0x33, 0xDE, + 0xF0, 0x00, 0xEA, 0x1D, 0x68, 0x6F, 0x4F, 0x5D + }, + { + 0xBF, 0x2A, 0xB2, 0xE2, 0x47, 0x0F, 0x54, 0x38, + 0xC3, 0xB6, 0x89, 0xE6, 0x6E, 0x76, 0x86, 0xFF, + 0xFA, 0x0C, 0xB1, 0xE1, 0x79, 0x8A, 0xD3, 0xA8, + 0x6F, 0xF9, 0x90, 0x75, 0xBF, 0x61, 0x38, 0xE3, + 0x3D, 0x9C, 0x0C, 0xE5, 0x9A, 0xFB, 0x24, 0xAC, + 0x67, 0xA0, 0x2A, 0xF3, 0x44, 0x28, 0x19, 0x1A, + 0x9A, 0x0A, 0x60, 0x41, 0xC0, 0x74, 0x71, 0xB7, + 0xC3, 0xB1, 0xA7, 0x52, 0xD6, 0xFC, 0x0B, 0x8B + }, + { + 0xD4, 0x00, 0x60, 0x1F, 0x97, 0x28, 0xCC, 0xC4, + 0xC9, 0x23, 0x42, 0xD9, 0x78, 0x7D, 0x8D, 0x28, + 0xAB, 0x32, 0x3A, 0xF3, 0x75, 0xCA, 0x56, 0x24, + 0xB4, 0xBB, 0x91, 0xD1, 0x72, 0x71, 0xFB, 0xAE, + 0x86, 0x2E, 0x41, 0x3B, 0xE7, 0x3F, 0x1F, 0x68, + 0xE6, 0x15, 0xB8, 0xC5, 0xC3, 0x91, 0xBE, 0x0D, + 0xBD, 0x91, 0x44, 0x74, 0x6E, 0xB3, 0x39, 0xAD, + 0x54, 0x15, 0x47, 0xBA, 0x9C, 0x46, 0x8A, 0x17 + }, + { + 0x79, 0xFE, 0x2F, 0xE1, 0x57, 0xEB, 0x85, 0xA0, + 0x38, 0xAB, 0xB8, 0xEB, 0xBC, 0x64, 0x77, 0x31, + 0xD2, 0xC8, 0x3F, 0x51, 0xB0, 0xAC, 0x6E, 0xE1, + 0x4A, 0xA2, 0x84, 0xCB, 0x6A, 0x35, 0x49, 0xA4, + 0xDC, 0xCE, 0xB3, 0x00, 0x74, 0x0A, 0x82, 0x5F, + 0x52, 0xF5, 0xFB, 0x30, 0xB0, 0x3B, 0x8C, 0x4D, + 0x8B, 0x0F, 0x4A, 0xA6, 0x7A, 0x63, 0xF4, 0xA9, + 0x4E, 0x33, 0x03, 0xC4, 0xED, 0xA4, 0xC0, 0x2B + }, + { + 0x75, 0x35, 0x13, 0x13, 0xB5, 0x2A, 0x85, 0x29, + 0x29, 0x8D, 0x8C, 0x18, 0x6B, 0x17, 0x68, 0x66, + 0x6D, 0xCC, 0xA8, 0x59, 0x53, 0x17, 0xD7, 0xA4, + 0x81, 0x6E, 0xB8, 0x8C, 0x06, 0x20, 0x20, 0xC0, + 0xC8, 0xEF, 0xC5, 0x54, 0xBB, 0x34, 0x1B, 0x64, + 0x68, 0x8D, 0xB5, 0xCC, 0xAF, 0xC3, 0x5F, 0x3C, + 0x3C, 0xD0, 0x9D, 0x65, 0x64, 0xB3, 0x6D, 0x7B, + 0x04, 0xA2, 0x48, 0xE1, 0x46, 0x98, 0x0D, 0x4B + }, + { + 0xE3, 0x12, 0x8B, 0x1D, 0x31, 0x1D, 0x02, 0x17, + 0x9D, 0x7F, 0x25, 0xF9, 0x7A, 0x5A, 0x8B, 0xEE, + 0x2C, 0xC8, 0xC8, 0x63, 0x03, 0x64, 0x4F, 0xCD, + 0x66, 0x4E, 0x15, 0x7D, 0x1F, 0xEF, 0x00, 0xF2, + 0x3E, 0x46, 0xF9, 0xA5, 0xE8, 0xE5, 0xC8, 0x90, + 0xCE, 0x56, 0x5B, 0xB6, 0xAB, 0xD4, 0x30, 0x2C, + 0xE0, 0x64, 0x69, 0xD5, 0x2A, 0x5B, 0xD5, 0x3E, + 0x1C, 0x5A, 0x54, 0xD0, 0x46, 0x49, 0xDC, 0x03 + }, + { + 0xC2, 0x38, 0x2A, 0x72, 0xD2, 0xD3, 0xAC, 0xE9, + 0xD5, 0x93, 0x3D, 0x00, 0xB6, 0x08, 0x27, 0xED, + 0x38, 0x0C, 0xDA, 0x08, 0xD0, 0xBA, 0x5F, 0x6D, + 0xD4, 0x1E, 0x29, 0xEE, 0x6D, 0xBE, 0x8E, 0xCB, + 0x92, 0x35, 0xF0, 0x6B, 0xE9, 0x5D, 0x83, 0xB6, + 0x81, 0x6A, 0x2F, 0xB7, 0xA5, 0xAD, 0x47, 0x03, + 0x5E, 0x8A, 0x4B, 0x69, 0xA4, 0x88, 0x4B, 0x99, + 0xE4, 0xBE, 0xCE, 0x58, 0xCA, 0xB2, 0x5D, 0x44 + }, + { + 0x6B, 0x1C, 0x69, 0x46, 0x0B, 0xBD, 0x50, 0xAC, + 0x2E, 0xD6, 0xF3, 0x2E, 0x6E, 0x88, 0x7C, 0xFE, + 0xD4, 0x07, 0xD4, 0x7D, 0xCF, 0x0A, 0xAA, 0x60, + 0x38, 0x7F, 0xE3, 0x20, 0xD7, 0x80, 0xBD, 0x03, + 0xEA, 0xB6, 0xD7, 0xBA, 0xEB, 0x2A, 0x07, 0xD1, + 0x0C, 0xD5, 0x52, 0xA3, 0x00, 0x34, 0x13, 0x54, + 0xEA, 0x9A, 0x5F, 0x03, 0x18, 0x3A, 0x62, 0x3F, + 0x92, 0xA2, 0xD4, 0xD9, 0xF0, 0x09, 0x26, 0xAF + }, + { + 0x6C, 0xDA, 0x20, 0x6C, 0x80, 0xCD, 0xC9, 0xC4, + 0x4B, 0xA9, 0x90, 0xE0, 0x32, 0x8C, 0x31, 0x4F, + 0x81, 0x9B, 0x14, 0x2D, 0x00, 0x63, 0x04, 0x04, + 0xC4, 0x8C, 0x05, 0xDC, 0x76, 0xD1, 0xB0, 0x0C, + 0xE4, 0xD7, 0x2F, 0xC6, 0xA4, 0x8E, 0x14, 0x69, + 0xDD, 0xEF, 0x60, 0x94, 0x12, 0xC3, 0x64, 0x82, + 0x08, 0x54, 0x21, 0x4B, 0x48, 0x69, 0xAF, 0x09, + 0x0F, 0x00, 0xD3, 0xC1, 0xBA, 0x44, 0x3E, 0x1B + }, + { + 0x7F, 0xFC, 0x8C, 0x26, 0xFB, 0xD6, 0xA0, 0xF7, + 0xA6, 0x09, 0xE6, 0xE1, 0x93, 0x9F, 0x6A, 0x9E, + 0xDF, 0x1B, 0x0B, 0x06, 0x66, 0x41, 0xFB, 0x76, + 0xC4, 0xF9, 0x60, 0x2E, 0xD7, 0x48, 0xD1, 0x16, + 0x02, 0x49, 0x6B, 0x35, 0x35, 0x5B, 0x1A, 0xA2, + 0x55, 0x85, 0x0A, 0x50, 0x9D, 0x2F, 0x8E, 0xE1, + 0x8C, 0x8F, 0x3E, 0x1D, 0x7D, 0xCB, 0xC3, 0x7A, + 0x13, 0x65, 0x98, 0xF5, 0x6A, 0x59, 0xED, 0x17 + }, + { + 0x70, 0xDE, 0x1F, 0x08, 0xDD, 0x4E, 0x09, 0xD5, + 0xFC, 0x15, 0x1F, 0x17, 0xFC, 0x99, 0x1A, 0x23, + 0xAB, 0xFC, 0x05, 0x10, 0x42, 0x90, 0xD5, 0x04, + 0x68, 0x88, 0x2E, 0xFA, 0xF5, 0x82, 0xB6, 0xEC, + 0x2F, 0x14, 0xF5, 0x77, 0xC0, 0xD6, 0x8C, 0x3A, + 0xD0, 0x66, 0x26, 0x91, 0x6E, 0x3C, 0x86, 0xE6, + 0xDA, 0xAB, 0x6C, 0x53, 0xE5, 0x16, 0x3E, 0x82, + 0xB6, 0xBD, 0x0C, 0xE4, 0x9F, 0xC0, 0xD8, 0xDF + }, + { + 0x4F, 0x81, 0x93, 0x57, 0x56, 0xED, 0x35, 0xEE, + 0x20, 0x58, 0xEE, 0x0C, 0x6A, 0x61, 0x10, 0xD6, + 0xFA, 0xC5, 0xCB, 0x6A, 0x4F, 0x46, 0xAA, 0x94, + 0x11, 0x60, 0x3F, 0x99, 0x96, 0x58, 0x23, 0xB6, + 0xDA, 0x48, 0x38, 0x27, 0x6C, 0x5C, 0x06, 0xBC, + 0x78, 0x80, 0xE3, 0x76, 0xD9, 0x27, 0x58, 0x36, + 0x9E, 0xE7, 0x30, 0x5B, 0xCE, 0xC8, 0xD3, 0xCF, + 0xD2, 0x8C, 0xCA, 0xBB, 0x7B, 0x4F, 0x05, 0x79 + }, + { + 0xAB, 0xCB, 0x61, 0xCB, 0x36, 0x83, 0xD1, 0x8F, + 0x27, 0xAD, 0x52, 0x79, 0x08, 0xED, 0x2D, 0x32, + 0xA0, 0x42, 0x6C, 0xB7, 0xBB, 0x4B, 0xF1, 0x80, + 0x61, 0x90, 0x3A, 0x7D, 0xC4, 0x2E, 0x7E, 0x76, + 0xF9, 0x82, 0x38, 0x23, 0x04, 0xD1, 0x8A, 0xF8, + 0xC8, 0x0D, 0x91, 0xDD, 0x58, 0xDD, 0x47, 0xAF, + 0x76, 0xF8, 0xE2, 0xC3, 0x6E, 0x28, 0xAF, 0x24, + 0x76, 0xB4, 0xBC, 0xCF, 0x82, 0xE8, 0x9F, 0xDF + }, + { + 0x02, 0xD2, 0x61, 0xAD, 0x56, 0xA5, 0x26, 0x33, + 0x1B, 0x64, 0x3D, 0xD2, 0x18, 0x6D, 0xE9, 0xA8, + 0x2E, 0x72, 0xA5, 0x82, 0x23, 0xCD, 0x1E, 0x72, + 0x36, 0x86, 0xC5, 0x3D, 0x86, 0x9B, 0x83, 0xB9, + 0x46, 0x32, 0xB7, 0xB6, 0x47, 0xAB, 0x2A, 0xFC, + 0x0D, 0x52, 0x2E, 0x29, 0xDA, 0x3A, 0x56, 0x15, + 0xB7, 0x41, 0xD8, 0x28, 0x52, 0xE0, 0xDF, 0x41, + 0xB6, 0x60, 0x07, 0xDB, 0xCB, 0xA9, 0x05, 0x43 + }, + { + 0xC5, 0x83, 0x27, 0x41, 0xFA, 0x30, 0xC5, 0x43, + 0x68, 0x23, 0x01, 0x53, 0x83, 0xD2, 0x97, 0xFF, + 0x4C, 0x4A, 0x5D, 0x72, 0x76, 0xC3, 0xF9, 0x02, + 0x12, 0x20, 0x66, 0xE0, 0x4B, 0xE5, 0x43, 0x1B, + 0x1A, 0x85, 0xFA, 0xF7, 0x3B, 0x91, 0x84, 0x34, + 0xF9, 0x30, 0x09, 0x63, 0xD1, 0xDE, 0xA9, 0xE8, + 0xAC, 0x39, 0x24, 0xEF, 0x49, 0x02, 0x26, 0xED, + 0xEE, 0xA5, 0xF7, 0x43, 0xE4, 0x10, 0x66, 0x9F + }, + { + 0xCF, 0xAE, 0xAB, 0x26, 0x8C, 0xD0, 0x75, 0xA5, + 0xA6, 0xAE, 0xD5, 0x15, 0x02, 0x3A, 0x03, 0x2D, + 0x54, 0xF2, 0xF2, 0xFF, 0x73, 0x3C, 0xE0, 0xCB, + 0xC7, 0x8D, 0xB5, 0x1D, 0xB4, 0x50, 0x4D, 0x67, + 0x59, 0x23, 0xF8, 0x27, 0x46, 0xD6, 0x59, 0x46, + 0x06, 0xAD, 0x5D, 0x67, 0x73, 0x4B, 0x11, 0xA6, + 0x7C, 0xC6, 0xA4, 0x68, 0xC2, 0x03, 0x2E, 0x43, + 0xCA, 0x1A, 0x94, 0xC6, 0x27, 0x3A, 0x98, 0x5E + }, + { + 0x86, 0x08, 0x50, 0xF9, 0x2E, 0xB2, 0x68, 0x27, + 0x2B, 0x67, 0xD1, 0x33, 0x60, 0x9B, 0xD6, 0x4E, + 0x34, 0xF6, 0x1B, 0xF0, 0x3F, 0x4C, 0x17, 0x38, + 0x64, 0x5C, 0x17, 0xFE, 0xC8, 0x18, 0x46, 0x5D, + 0x7E, 0xCD, 0x2B, 0xE2, 0x90, 0x76, 0x41, 0x13, + 0x00, 0x25, 0xFD, 0xA7, 0x94, 0x70, 0xAB, 0x73, + 0x16, 0x46, 0xE7, 0xF6, 0x94, 0x40, 0xE8, 0x36, + 0x7E, 0xA7, 0x6A, 0xC4, 0xCE, 0xE8, 0xA1, 0xDF + }, + { + 0x84, 0xB1, 0x54, 0xED, 0x29, 0xBB, 0xED, 0xEF, + 0xA6, 0x48, 0x28, 0x68, 0x39, 0x04, 0x6F, 0x4B, + 0x5A, 0xA3, 0x44, 0x30, 0xE2, 0xD6, 0x7F, 0x74, + 0x96, 0xE4, 0xC3, 0x9F, 0x2C, 0x7E, 0xA7, 0x89, + 0x95, 0xF6, 0x9E, 0x12, 0x92, 0x20, 0x00, 0x16, + 0xF1, 0x6A, 0xC3, 0xB3, 0x77, 0x00, 0xE6, 0xC7, + 0xE7, 0x86, 0x1A, 0xFC, 0x39, 0x6B, 0x64, 0xA5, + 0x9A, 0x1D, 0xBF, 0x47, 0xA5, 0x5C, 0x4B, 0xBC + }, + { + 0xAE, 0xEE, 0xC2, 0x60, 0xA5, 0xD8, 0xEF, 0xF5, + 0xCC, 0xAB, 0x8B, 0x95, 0xDA, 0x43, 0x5A, 0x63, + 0xED, 0x7A, 0x21, 0xEA, 0x7F, 0xC7, 0x55, 0x94, + 0x13, 0xFD, 0x61, 0x7E, 0x33, 0x60, 0x9F, 0x8C, + 0x29, 0x0E, 0x64, 0xBB, 0xAC, 0xC5, 0x28, 0xF6, + 0xC0, 0x80, 0x26, 0x22, 0x88, 0xB0, 0xF0, 0xA3, + 0x21, 0x9B, 0xE2, 0x23, 0xC9, 0x91, 0xBE, 0xE9, + 0x2E, 0x72, 0x34, 0x95, 0x93, 0xE6, 0x76, 0x38 + }, + { + 0x8A, 0xD7, 0x8A, 0x9F, 0x26, 0x60, 0x1D, 0x12, + 0x7E, 0x8D, 0x2F, 0x2F, 0x97, 0x6E, 0x63, 0xD1, + 0x9A, 0x05, 0x4A, 0x17, 0xDC, 0xF5, 0x9E, 0x0F, + 0x01, 0x3A, 0xB5, 0x4A, 0x68, 0x87, 0xBB, 0xDF, + 0xFD, 0xE7, 0xAA, 0xAE, 0x11, 0x7E, 0x0F, 0xBF, + 0x32, 0x71, 0x01, 0x65, 0x95, 0xB9, 0xD9, 0xC7, + 0x12, 0xC0, 0x1B, 0x2C, 0x53, 0xE9, 0x65, 0x5A, + 0x38, 0x2B, 0xC4, 0x52, 0x2E, 0x61, 0x66, 0x45 + }, + { + 0x89, 0x34, 0x15, 0x9D, 0xAD, 0xE1, 0xAC, 0x74, + 0x14, 0x7D, 0xFA, 0x28, 0x2C, 0x75, 0x95, 0x4F, + 0xCE, 0xF4, 0x43, 0xEF, 0x25, 0xF8, 0x0D, 0xFE, + 0x9F, 0xB6, 0xEA, 0x63, 0x3B, 0x85, 0x45, 0x11, + 0x1D, 0x08, 0xB3, 0x4E, 0xF4, 0x3F, 0xFF, 0x17, + 0x02, 0x6C, 0x79, 0x64, 0xF5, 0xDE, 0xAC, 0x6D, + 0x2B, 0x3C, 0x29, 0xDA, 0xCF, 0x27, 0x47, 0xF0, + 0x22, 0xDF, 0x59, 0x67, 0xDF, 0xDC, 0x1A, 0x0A + }, + { + 0xCD, 0x36, 0xDD, 0x0B, 0x24, 0x06, 0x14, 0xCF, + 0x2F, 0xA2, 0xB9, 0xE9, 0x59, 0x67, 0x9D, 0xCD, + 0xD7, 0x2E, 0xC0, 0xCD, 0x58, 0xA4, 0x3D, 0xA3, + 0x79, 0x0A, 0x92, 0xF6, 0xCD, 0xEB, 0x9E, 0x1E, + 0x79, 0x5E, 0x47, 0x8A, 0x0A, 0x47, 0xD3, 0x71, + 0x10, 0x0D, 0x34, 0x0C, 0x5C, 0xED, 0xCD, 0xBB, + 0xC9, 0xE6, 0x8B, 0x3F, 0x46, 0x08, 0x18, 0xE5, + 0xBD, 0xFF, 0x7B, 0x4C, 0xDA, 0x4C, 0x27, 0x44 + }, + { + 0x00, 0xDF, 0x4E, 0x09, 0x9B, 0x80, 0x71, 0x37, + 0xA8, 0x59, 0x90, 0xF4, 0x9D, 0x3A, 0x94, 0x31, + 0x5E, 0x5A, 0x5F, 0x7F, 0x7A, 0x60, 0x76, 0xB3, + 0x03, 0xE9, 0x6B, 0x05, 0x6F, 0xB9, 0x38, 0x00, + 0x11, 0x1F, 0x47, 0x96, 0x28, 0xE2, 0xF8, 0xDB, + 0x59, 0xAE, 0xB6, 0xAC, 0x70, 0xC3, 0xB6, 0x1F, + 0x51, 0xF9, 0xB4, 0x6E, 0x80, 0xFF, 0xDE, 0xAE, + 0x25, 0xEB, 0xDD, 0xB4, 0xAF, 0x6C, 0xB4, 0xEE + }, + { + 0x2B, 0x9C, 0x95, 0x5E, 0x6C, 0xAE, 0xD4, 0xB7, + 0xC9, 0xE2, 0x46, 0xB8, 0x6F, 0x9A, 0x17, 0x26, + 0xE8, 0x10, 0xC5, 0x9D, 0x12, 0x6C, 0xEE, 0x66, + 0xED, 0x71, 0xBF, 0x01, 0x5B, 0x83, 0x55, 0x8A, + 0x4B, 0x6D, 0x84, 0xD1, 0x8D, 0xC3, 0xFF, 0x46, + 0x20, 0xC2, 0xFF, 0xB7, 0x22, 0x35, 0x9F, 0xDE, + 0xF8, 0x5B, 0xA0, 0xD4, 0xE2, 0xD2, 0x2E, 0xCB, + 0xE0, 0xED, 0x78, 0x4F, 0x99, 0xAF, 0xE5, 0x87 + }, + { + 0x18, 0x1D, 0xF0, 0xA2, 0x61, 0xA2, 0xF7, 0xD2, + 0x9E, 0xA5, 0xA1, 0x57, 0x72, 0x71, 0x51, 0x05, + 0xD4, 0x50, 0xA4, 0xB6, 0xC2, 0x36, 0xF6, 0x99, + 0xF4, 0x62, 0xD6, 0x0C, 0xA7, 0x64, 0x87, 0xFE, + 0xED, 0xFC, 0x9F, 0x5E, 0xB9, 0x2D, 0xF8, 0x38, + 0xE8, 0xFB, 0x5D, 0xC3, 0x69, 0x4E, 0x84, 0xC5, + 0xE0, 0xF4, 0xA1, 0x0B, 0x76, 0x1F, 0x50, 0x67, + 0x62, 0xBE, 0x05, 0x2C, 0x74, 0x5A, 0x6E, 0xE8 + }, + { + 0x21, 0xFB, 0x20, 0x34, 0x58, 0xBF, 0x3A, 0x7E, + 0x9A, 0x80, 0x43, 0x9F, 0x9A, 0x90, 0x28, 0x99, + 0xCD, 0x5D, 0xE0, 0x13, 0x9D, 0xFD, 0x56, 0xF7, + 0x11, 0x0C, 0x9D, 0xEC, 0x84, 0x37, 0xB2, 0x6B, + 0xDA, 0x63, 0xDE, 0x2F, 0x56, 0x59, 0x26, 0xD8, + 0x5E, 0xDB, 0x1D, 0x6C, 0x68, 0x25, 0x66, 0x97, + 0x43, 0xDD, 0x99, 0x92, 0x65, 0x3D, 0x13, 0x97, + 0x95, 0x44, 0xD5, 0xDC, 0x82, 0x28, 0xBF, 0xAA + }, + { + 0xEF, 0x02, 0x1F, 0x29, 0xC5, 0xFF, 0xB8, 0x30, + 0xE6, 0x4B, 0x9A, 0xA9, 0x05, 0x8D, 0xD6, 0x60, + 0xFD, 0x2F, 0xCB, 0x81, 0xC4, 0x97, 0xA7, 0xE6, + 0x98, 0xBC, 0xFB, 0xF5, 0x9D, 0xE5, 0xAD, 0x4A, + 0x86, 0xFF, 0x93, 0xC1, 0x0A, 0x4B, 0x9D, 0x1A, + 0xE5, 0x77, 0x47, 0x25, 0xF9, 0x07, 0x2D, 0xCD, + 0xE9, 0xE1, 0xF1, 0x99, 0xBA, 0xB9, 0x1F, 0x8B, + 0xFF, 0x92, 0x18, 0x64, 0xAA, 0x50, 0x2E, 0xEE + }, + { + 0xB3, 0xCF, 0xDA, 0x40, 0x52, 0x6B, 0x7F, 0x1D, + 0x37, 0x56, 0x9B, 0xDF, 0xCD, 0xF9, 0x11, 0xE5, + 0xA6, 0xEF, 0xE6, 0xB2, 0xEC, 0x90, 0xA0, 0x45, + 0x4C, 0x47, 0xB2, 0xC0, 0x46, 0xBF, 0x13, 0x0F, + 0xC3, 0xB3, 0x52, 0xB3, 0x4D, 0xF4, 0x81, 0x3D, + 0x48, 0xD3, 0x3A, 0xB8, 0xE2, 0x69, 0xB6, 0x9B, + 0x07, 0x56, 0x76, 0xCB, 0x6D, 0x00, 0xA8, 0xDC, + 0xF9, 0xE1, 0xF9, 0x67, 0xEC, 0x19, 0x1B, 0x2C + }, + { + 0xB4, 0xC6, 0xC3, 0xB2, 0x67, 0x07, 0x1E, 0xEF, + 0xB9, 0xC8, 0xC7, 0x2E, 0x0E, 0x2B, 0x94, 0x12, + 0x93, 0x64, 0x1F, 0x86, 0x73, 0xCB, 0x70, 0xC1, + 0xCC, 0x26, 0xAD, 0x1E, 0x73, 0xCF, 0x14, 0x17, + 0x55, 0x86, 0x0A, 0xD1, 0x9B, 0x34, 0xC2, 0xF3, + 0x4E, 0xD3, 0x5B, 0xB5, 0x2E, 0xC4, 0x50, 0x7C, + 0xC1, 0xFE, 0x59, 0x04, 0x77, 0x43, 0xA5, 0xF0, + 0xC6, 0xFE, 0xBD, 0xE6, 0x25, 0xE2, 0x60, 0x91 + }, + { + 0x57, 0xA3, 0x4F, 0x2B, 0xCC, 0xA6, 0x0D, 0x4B, + 0x85, 0x10, 0x3B, 0x83, 0x0C, 0x9D, 0x79, 0x52, + 0xA4, 0x16, 0xBE, 0x52, 0x63, 0xAE, 0x42, 0x9C, + 0x9E, 0x5E, 0x53, 0xFE, 0x85, 0x90, 0xA8, 0xF7, + 0x8E, 0xC6, 0x5A, 0x51, 0x10, 0x9E, 0xA8, 0x5D, + 0xCD, 0xF7, 0xB6, 0x22, 0x3F, 0x9F, 0x2B, 0x34, + 0x05, 0x39, 0xFA, 0xD8, 0x19, 0x23, 0xDB, 0xF8, + 0xED, 0xAB, 0xF9, 0x51, 0x29, 0xE4, 0xDF, 0xF6 + }, + { + 0x9C, 0xF4, 0x66, 0x62, 0xFC, 0xD6, 0x1A, 0x23, + 0x22, 0x77, 0xB6, 0x85, 0x66, 0x3B, 0x8B, 0x5D, + 0xA8, 0x32, 0xDF, 0xD9, 0xA3, 0xB8, 0xCC, 0xFE, + 0xEC, 0x99, 0x3E, 0xC6, 0xAC, 0x41, 0x5A, 0xD0, + 0x7E, 0x04, 0x8A, 0xDF, 0xE4, 0x14, 0xDF, 0x27, + 0x27, 0x70, 0xDB, 0xA8, 0x67, 0xDA, 0x5C, 0x12, + 0x24, 0xC6, 0xFD, 0x0A, 0xA0, 0xC2, 0x18, 0x7D, + 0x42, 0x6A, 0xC6, 0x47, 0xE9, 0x88, 0x73, 0x61 + }, + { + 0x5C, 0xE1, 0x04, 0x2A, 0xB4, 0xD5, 0x42, 0xC2, + 0xF9, 0xEE, 0x9D, 0x17, 0x26, 0x2A, 0xF8, 0x16, + 0x40, 0x98, 0x93, 0x5B, 0xEF, 0x17, 0x3D, 0x0E, + 0x18, 0x48, 0x9B, 0x04, 0x84, 0x17, 0x46, 0xCD, + 0x2F, 0x2D, 0xF8, 0x66, 0xBD, 0x7D, 0xA6, 0xE5, + 0xEF, 0x90, 0x24, 0xC6, 0x48, 0x02, 0x3E, 0xC7, + 0x23, 0xAB, 0x9C, 0x62, 0xFD, 0x80, 0x28, 0x57, + 0x39, 0xD8, 0x4F, 0x15, 0xD2, 0xAB, 0x51, 0x5A + }, + { + 0x84, 0x88, 0x39, 0x6B, 0xD4, 0xA8, 0x72, 0x9B, + 0x7A, 0x47, 0x31, 0x78, 0xF2, 0x32, 0xDA, 0xDF, + 0x3F, 0x0F, 0x8E, 0x22, 0x67, 0x8B, 0xA5, 0xA4, + 0x3E, 0x04, 0x1E, 0x72, 0xDA, 0x1E, 0x2C, 0xF8, + 0x21, 0x94, 0xC3, 0x07, 0x20, 0x7A, 0x54, 0xCB, + 0x81, 0x56, 0x29, 0x33, 0x39, 0xEA, 0xEC, 0x69, + 0x3F, 0xF6, 0x6B, 0xFC, 0xD5, 0xEF, 0xC6, 0x5E, + 0x95, 0xE4, 0xEC, 0xAF, 0x54, 0x53, 0x0A, 0xBD + }, + { + 0xF5, 0x98, 0xDA, 0x90, 0x1C, 0x38, 0x35, 0xBC, + 0xA5, 0x60, 0x77, 0x90, 0x37, 0xDF, 0xDE, 0x9F, + 0x0C, 0x51, 0xDC, 0x61, 0xC0, 0xB7, 0x60, 0xFC, + 0x15, 0x22, 0xD7, 0xB4, 0x70, 0xEE, 0x63, 0xF5, + 0xBD, 0xC6, 0x49, 0x84, 0x76, 0xE8, 0x60, 0x49, + 0xAD, 0x86, 0xE4, 0xE2, 0x1A, 0xF2, 0x85, 0x4A, + 0x98, 0x4C, 0xC9, 0x05, 0x42, 0x7D, 0x2F, 0x17, + 0xF6, 0x6B, 0x1F, 0x41, 0xC3, 0xDA, 0x6F, 0x61 + }, + { + 0x5F, 0x93, 0x26, 0x97, 0x98, 0xCF, 0x02, 0x13, + 0x21, 0x07, 0x33, 0x76, 0x60, 0xA8, 0xD7, 0xA1, + 0x77, 0x35, 0x4C, 0x02, 0x12, 0xEB, 0x93, 0xE5, + 0x55, 0xE7, 0xC3, 0x7A, 0x08, 0xAE, 0xF3, 0xD8, + 0xDC, 0xE0, 0x12, 0x17, 0x01, 0x1C, 0xD9, 0x65, + 0xC0, 0x4D, 0xD2, 0xC1, 0x05, 0xF2, 0xE2, 0xB6, + 0xCA, 0xE5, 0xE4, 0xE6, 0xBC, 0xAF, 0x09, 0xDF, + 0xBE, 0xE3, 0xE0, 0xA6, 0xA6, 0x35, 0x7C, 0x37 + }, + { + 0x0E, 0xCF, 0x58, 0x1D, 0x47, 0xBA, 0xC9, 0x23, + 0x09, 0x86, 0xFA, 0xAB, 0xD7, 0x0C, 0x2F, 0x5B, + 0x80, 0xE9, 0x10, 0x66, 0xF0, 0xEC, 0x55, 0xA8, + 0x42, 0x93, 0x78, 0x82, 0x28, 0x6D, 0x2C, 0xA0, + 0x07, 0xBB, 0x4E, 0x97, 0x3B, 0x0B, 0x09, 0x1D, + 0x52, 0x16, 0x7F, 0xF7, 0xC4, 0x00, 0x9C, 0x7A, + 0xB4, 0xAD, 0x38, 0xFF, 0xF1, 0xDC, 0xEA, 0xCD, + 0xB7, 0xBE, 0x81, 0xEF, 0x4A, 0x45, 0x29, 0x52 + }, + { + 0x5A, 0xEC, 0xA8, 0xAB, 0xE1, 0x52, 0x85, 0x82, + 0xB2, 0xA3, 0x07, 0xB4, 0x00, 0x95, 0x85, 0x49, + 0x8A, 0x3D, 0x46, 0x7C, 0xA6, 0x10, 0x1C, 0xB0, + 0xC5, 0x12, 0x6F, 0x99, 0x76, 0x05, 0x6E, 0x9F, + 0xFC, 0x12, 0x3C, 0xC2, 0x0C, 0x30, 0x2B, 0x2A, + 0x73, 0x7F, 0x49, 0x2C, 0x75, 0xD2, 0x1F, 0x01, + 0x51, 0x2C, 0x90, 0xCA, 0x05, 0x41, 0xDF, 0xA5, + 0x6E, 0x95, 0x0A, 0x32, 0x1D, 0xCB, 0x28, 0xD8 + }, + { + 0x73, 0x2F, 0xBF, 0x8F, 0x1C, 0xB2, 0xB8, 0x32, + 0x92, 0x63, 0xED, 0xE2, 0x78, 0x58, 0xFE, 0x46, + 0xF8, 0xD3, 0x35, 0x4D, 0x37, 0x6B, 0xCD, 0xA0, + 0x54, 0x8E, 0x7C, 0xE1, 0xFA, 0x9D, 0xD1, 0x1F, + 0x85, 0xEB, 0x66, 0x1F, 0xE9, 0x50, 0xB5, 0x43, + 0xAA, 0x63, 0x5C, 0xA4, 0xD3, 0xF0, 0x4E, 0xDE, + 0x5B, 0x32, 0xD6, 0xB6, 0x56, 0xE5, 0xCE, 0x1C, + 0x44, 0xD3, 0x5C, 0x4A, 0x6C, 0x56, 0xCF, 0xF8 + }, + { + 0xD5, 0xE9, 0x38, 0x73, 0x5D, 0x63, 0x78, 0x8C, + 0x80, 0x10, 0x0A, 0xEF, 0xD1, 0x86, 0x48, 0xD1, + 0x8C, 0xF2, 0x72, 0xF6, 0x9F, 0x20, 0xFF, 0x24, + 0xCF, 0xE2, 0x89, 0x5C, 0x08, 0x8A, 0xD0, 0x8B, + 0x01, 0x04, 0xDA, 0x16, 0x72, 0xA4, 0xEB, 0x26, + 0xFC, 0x52, 0x54, 0x5C, 0xC7, 0xD7, 0xA0, 0x1B, + 0x26, 0x6C, 0xF5, 0x46, 0xC4, 0x03, 0xC4, 0x5B, + 0xD1, 0x29, 0xEB, 0x41, 0xBD, 0xD9, 0x20, 0x0B + }, + { + 0x65, 0xA2, 0x45, 0xB4, 0x93, 0x52, 0xEE, 0x29, + 0x7D, 0x91, 0xAF, 0x8C, 0x8B, 0xE0, 0x05, 0x28, + 0xAC, 0x6E, 0x04, 0x6D, 0xD8, 0x3A, 0xC7, 0xBD, + 0x46, 0x5A, 0x98, 0x81, 0x6D, 0xD6, 0x8F, 0x3E, + 0x00, 0xE1, 0xAE, 0x8F, 0x89, 0x53, 0x27, 0xA7, + 0xE9, 0xA8, 0xC9, 0x32, 0x65, 0x98, 0x37, 0x9A, + 0x29, 0xC9, 0xFC, 0x91, 0xEC, 0x0C, 0x6E, 0xEF, + 0x08, 0xF3, 0xE2, 0xB2, 0x16, 0xC1, 0x10, 0x08 + }, + { + 0xC9, 0x56, 0x54, 0xB6, 0x30, 0x19, 0x13, 0x0A, + 0xB4, 0x5D, 0xD0, 0xFB, 0x49, 0x41, 0xB9, 0x8A, + 0xEB, 0x3A, 0xF2, 0xA1, 0x23, 0x91, 0x3E, 0xCA, + 0x2C, 0xE9, 0x9B, 0x3E, 0x97, 0x41, 0x0A, 0x7B, + 0xF8, 0x66, 0x1C, 0xC7, 0xFB, 0xAA, 0x2B, 0xC1, + 0xCF, 0x2B, 0x13, 0x11, 0x3B, 0x1E, 0xD4, 0x0A, + 0x01, 0x18, 0xB8, 0x8E, 0x5F, 0xFF, 0xC3, 0x54, + 0x27, 0x59, 0xEA, 0x00, 0x7E, 0xD4, 0xC5, 0x8D + }, + { + 0x1E, 0xB2, 0x62, 0xF3, 0x8F, 0xA4, 0x94, 0x43, + 0x1F, 0x01, 0x7D, 0xAD, 0x44, 0xC0, 0xDF, 0xB6, + 0x93, 0x24, 0xAC, 0x03, 0x2F, 0x04, 0xB6, 0x57, + 0xFC, 0x91, 0xA8, 0x86, 0x47, 0xBB, 0x74, 0x76, + 0x0F, 0x24, 0xE7, 0xC9, 0x56, 0x51, 0x4F, 0x0C, + 0xF0, 0x02, 0x99, 0x0B, 0x18, 0x2C, 0x16, 0x42, + 0xB9, 0xB2, 0x42, 0x6E, 0x96, 0xA6, 0x11, 0x87, + 0xE4, 0xE0, 0x12, 0xF0, 0x0E, 0x21, 0x7D, 0x84 + }, + { + 0x3B, 0x95, 0x5A, 0xEE, 0xBF, 0xA5, 0x15, 0x1A, + 0xC1, 0xAB, 0x8E, 0x3F, 0x5C, 0xC1, 0xE3, 0x76, + 0x70, 0x84, 0xC8, 0x42, 0xA5, 0x75, 0xD3, 0x62, + 0x69, 0x83, 0x6E, 0x97, 0x35, 0x3D, 0x41, 0x62, + 0x2B, 0x73, 0x1D, 0xDD, 0xCD, 0x5F, 0x26, 0x95, + 0x50, 0xA3, 0xA5, 0xB8, 0x7B, 0xE1, 0xE9, 0x03, + 0x26, 0x34, 0x0B, 0x6E, 0x0E, 0x62, 0x55, 0x58, + 0x15, 0xD9, 0x60, 0x05, 0x97, 0xAC, 0x6E, 0xF9 + }, + { + 0x68, 0x28, 0x9F, 0x66, 0x05, 0x47, 0x3B, 0xA0, + 0xE4, 0xF2, 0x41, 0xBA, 0xF7, 0x47, 0x7A, 0x98, + 0x85, 0x42, 0x6A, 0x85, 0x8F, 0x19, 0xEF, 0x2A, + 0x18, 0xB0, 0xD4, 0x0E, 0xF8, 0xE4, 0x12, 0x82, + 0xED, 0x55, 0x26, 0xB5, 0x19, 0x79, 0x9E, 0x27, + 0x0F, 0x13, 0x88, 0x13, 0x27, 0x91, 0x82, 0x78, + 0x75, 0x57, 0x11, 0x07, 0x1D, 0x85, 0x11, 0xFE, + 0x96, 0x3E, 0x3B, 0x56, 0x06, 0xAA, 0x37, 0x16 + }, + { + 0x80, 0xA3, 0x37, 0x87, 0x54, 0x26, 0x12, 0xC3, + 0x8F, 0x6B, 0xCD, 0x7C, 0xD8, 0x6C, 0xAB, 0x46, + 0x02, 0x27, 0x50, 0x9B, 0x1C, 0xBA, 0xD5, 0xEC, + 0x40, 0x8A, 0x91, 0x41, 0x3D, 0x51, 0x15, 0x5A, + 0x04, 0x76, 0xDA, 0xDB, 0xF3, 0xA2, 0x51, 0x8E, + 0x4A, 0x6E, 0x77, 0xCC, 0x34, 0x66, 0x22, 0xE3, + 0x47, 0xA4, 0x69, 0xBF, 0x8B, 0xAA, 0x5F, 0x04, + 0xEB, 0x2D, 0x98, 0x70, 0x53, 0x55, 0xD0, 0x63 + }, + { + 0x34, 0x62, 0x9B, 0xC6, 0xD8, 0x31, 0x39, 0x1C, + 0x4C, 0xDF, 0x8A, 0xF1, 0xB4, 0xB7, 0xB6, 0xB8, + 0xE8, 0xEE, 0x17, 0xCF, 0x98, 0xC7, 0x0E, 0x5D, + 0xD5, 0x86, 0xCD, 0x99, 0xF1, 0x4B, 0x11, 0xDF, + 0x94, 0x51, 0x66, 0x23, 0x6A, 0x95, 0x71, 0xE6, + 0xD5, 0x91, 0xBB, 0x83, 0xEE, 0x4D, 0x16, 0x4D, + 0x46, 0xF6, 0xB9, 0xD8, 0xEF, 0x86, 0xFF, 0x86, + 0x5A, 0x81, 0xBF, 0xB9, 0x1B, 0x00, 0x42, 0x4B + }, + { + 0x8B, 0x7C, 0xC3, 0x39, 0x16, 0x38, 0x63, 0xBB, + 0x43, 0x83, 0xE5, 0x42, 0xB0, 0xEF, 0x0E, 0x7C, + 0xF3, 0x6B, 0x84, 0xAD, 0x93, 0x2C, 0xDF, 0x5A, + 0x80, 0x41, 0x9E, 0xC9, 0xAD, 0x69, 0x2E, 0x7A, + 0x7E, 0x78, 0x4D, 0x2C, 0x7C, 0xB3, 0x79, 0x6A, + 0x18, 0xB8, 0xF8, 0x00, 0x03, 0x5F, 0x3A, 0xA0, + 0x6C, 0x82, 0x41, 0x00, 0x61, 0x11, 0x20, 0xA7, + 0xBD, 0xEB, 0x35, 0x61, 0x8C, 0xCB, 0x81, 0xB7 + }, + { + 0x4F, 0x08, 0x4E, 0x49, 0x39, 0xDD, 0x5A, 0x7F, + 0x5A, 0x65, 0x8F, 0xAD, 0x58, 0xA1, 0x8A, 0x15, + 0xC2, 0x5C, 0x32, 0xEC, 0x1C, 0x7F, 0xD5, 0xC5, + 0xC6, 0xC3, 0xE8, 0x92, 0xB3, 0x97, 0x1A, 0xEA, + 0xAC, 0x30, 0x83, 0x04, 0xEF, 0x17, 0xB1, 0xC4, + 0x72, 0x39, 0xEA, 0x4B, 0xB3, 0x98, 0xB3, 0xFD, + 0x6D, 0x45, 0x28, 0xD8, 0xDE, 0x8E, 0x76, 0x8A, + 0xE0, 0xF1, 0xA5, 0xA5, 0xC6, 0xB5, 0xC2, 0x97 + }, + { + 0x48, 0xF4, 0x07, 0xA1, 0xAF, 0x5B, 0x80, 0x09, + 0xB2, 0x05, 0x17, 0x42, 0xE8, 0xCF, 0x5C, 0xD5, + 0x65, 0x66, 0x69, 0xE7, 0xD7, 0x22, 0xEE, 0x8E, + 0x7B, 0xD2, 0x02, 0x06, 0x08, 0x49, 0x44, 0x21, + 0x68, 0xD8, 0xFA, 0xCC, 0x11, 0x7C, 0x01, 0x2B, + 0xFB, 0x7B, 0xF4, 0x49, 0xD9, 0x9B, 0xEF, 0xFF, + 0x6A, 0x34, 0xAE, 0xA2, 0x03, 0xF1, 0xD8, 0xD3, + 0x52, 0x72, 0x2B, 0xE5, 0x01, 0x4E, 0xC8, 0x18 + }, + { + 0xA6, 0xAA, 0x82, 0xCD, 0x1E, 0x42, 0x6F, 0x9A, + 0x73, 0xBF, 0xA3, 0x9A, 0x29, 0x03, 0x78, 0x76, + 0x11, 0x46, 0x55, 0xB8, 0xC2, 0x2D, 0x6D, 0x3F, + 0xF8, 0xB6, 0x38, 0xAE, 0x7D, 0xEA, 0x6B, 0x17, + 0x84, 0x3E, 0x09, 0xE5, 0x2E, 0xB6, 0x6F, 0xA1, + 0xE4, 0x75, 0xE4, 0xA8, 0xA3, 0xDE, 0x42, 0x9B, + 0x7D, 0x0F, 0x4A, 0x77, 0x6F, 0xCB, 0x8B, 0xDC, + 0x9B, 0x9F, 0xED, 0xE7, 0xD5, 0x2E, 0x81, 0x5F + }, + { + 0x58, 0x17, 0x02, 0x7D, 0x6B, 0xDD, 0x00, 0xC5, + 0xDD, 0x10, 0xAC, 0x59, 0x3C, 0xD5, 0x60, 0x37, + 0x22, 0x70, 0x77, 0x5A, 0x18, 0x52, 0x6D, 0x7E, + 0x6F, 0x13, 0x87, 0x2A, 0x2E, 0x20, 0xEA, 0xB6, + 0x64, 0x62, 0x5B, 0xE7, 0x16, 0x8A, 0xC4, 0xBD, + 0x7C, 0x9E, 0x0C, 0xE7, 0xFC, 0x40, 0x99, 0xE0, + 0xF4, 0x84, 0x42, 0xE2, 0xC7, 0x67, 0x19, 0x1C, + 0x6E, 0x12, 0x84, 0xE9, 0xB2, 0xCC, 0xEA, 0x8C + }, + { + 0x08, 0xE4, 0x10, 0x28, 0x34, 0x0A, 0x45, 0xC7, + 0x4E, 0x40, 0x52, 0xB3, 0xA8, 0xD6, 0x38, 0x9E, + 0x22, 0xE0, 0x43, 0xA1, 0xAD, 0xAB, 0x5E, 0x28, + 0xD9, 0x76, 0x19, 0x45, 0x0D, 0x72, 0x34, 0x69, + 0xB6, 0x20, 0xCA, 0xA5, 0x19, 0xB8, 0x1C, 0x14, + 0x52, 0x38, 0x54, 0xF6, 0x19, 0xFD, 0x30, 0x27, + 0xE3, 0x84, 0x7B, 0xD0, 0x32, 0x76, 0xE6, 0x06, + 0x04, 0xA8, 0x0D, 0xDB, 0x4D, 0xE8, 0x76, 0xD6 + }, + { + 0x13, 0x0B, 0x84, 0x20, 0x53, 0x7E, 0xB0, 0x7D, + 0x72, 0xAB, 0xDA, 0x07, 0xC8, 0x5A, 0xCB, 0xD8, + 0xB9, 0xA4, 0x4F, 0x16, 0x32, 0x1D, 0xD0, 0x42, + 0x21, 0x45, 0xF8, 0x09, 0x67, 0x3D, 0x30, 0xF2, + 0xB5, 0x32, 0x13, 0x26, 0xE2, 0xBF, 0xF3, 0x17, + 0xEF, 0x3F, 0xEF, 0x98, 0x3C, 0x51, 0xC4, 0xF8, + 0xAB, 0x24, 0xA3, 0x25, 0xD2, 0x98, 0xE3, 0x4A, + 0xFC, 0xE5, 0x69, 0xA8, 0x25, 0x55, 0x77, 0x4C + }, + { + 0xAC, 0x49, 0xB8, 0x44, 0xAF, 0xAA, 0x01, 0x2E, + 0x31, 0xC4, 0x74, 0xCA, 0x26, 0x36, 0x48, 0x84, + 0x4F, 0xD2, 0xF6, 0x30, 0x79, 0x92, 0xC2, 0xF7, + 0x52, 0xAC, 0xA0, 0x2C, 0x38, 0x28, 0x96, 0x51, + 0x75, 0x79, 0x4D, 0xEE, 0xE2, 0xD2, 0xEE, 0x95, + 0xC6, 0x1C, 0xD2, 0x84, 0xF6, 0xB5, 0xA2, 0xD7, + 0x5E, 0x2E, 0xF2, 0xB2, 0x9E, 0xE8, 0x14, 0x9E, + 0x77, 0xFB, 0x81, 0x44, 0x7B, 0x2F, 0xD0, 0x4B + }, + { + 0xB9, 0xD7, 0xCA, 0x81, 0xCC, 0x60, 0xBB, 0x95, + 0x78, 0xE4, 0x40, 0x24, 0xE5, 0xA0, 0xA0, 0xBE, + 0x80, 0xF2, 0x73, 0x36, 0xA6, 0xA9, 0xF4, 0xE5, + 0x3D, 0xF3, 0x99, 0x9C, 0xB1, 0x91, 0x28, 0x0B, + 0x09, 0x0E, 0x2A, 0xC2, 0xD2, 0x9C, 0x5B, 0xAA, + 0xD9, 0xD7, 0x14, 0x15, 0xBD, 0xC1, 0x29, 0xE6, + 0x9A, 0xA2, 0x66, 0x7A, 0xF6, 0xA7, 0xFD, 0x5E, + 0x18, 0x9F, 0xCC, 0xDC, 0xEE, 0x81, 0x73, 0x40 + }, + { + 0xA7, 0x55, 0xE1, 0x13, 0x38, 0x65, 0x72, 0xC7, + 0x5C, 0xED, 0x61, 0xD7, 0x19, 0x70, 0x60, 0x70, + 0xB9, 0x14, 0x60, 0x48, 0xE4, 0x2A, 0x9F, 0x8C, + 0xD3, 0x56, 0x67, 0xA0, 0x88, 0xB4, 0x2F, 0x08, + 0x80, 0x8A, 0xBD, 0xF7, 0x7E, 0x61, 0x8A, 0xBD, + 0x95, 0x9A, 0xFC, 0x75, 0x73, 0x79, 0xCA, 0x2C, + 0x00, 0xBC, 0xC1, 0xA4, 0x83, 0x90, 0xFA, 0x2B, + 0xFF, 0x61, 0x8B, 0x1E, 0x00, 0x78, 0xA6, 0x13 + }, + { + 0xA7, 0x3C, 0x7D, 0xEB, 0xED, 0x32, 0x6F, 0x1C, + 0x0D, 0xB0, 0x79, 0x5E, 0xE7, 0xD6, 0xE3, 0x94, + 0x68, 0x94, 0xB8, 0x26, 0xB1, 0xF8, 0x10, 0x1C, + 0x56, 0xC8, 0x23, 0xBA, 0x17, 0x16, 0x83, 0x12, + 0xE7, 0xF5, 0x3F, 0xC7, 0xDB, 0xE5, 0x2C, 0x3E, + 0x11, 0xE6, 0x98, 0x52, 0xC4, 0x04, 0x85, 0xE2, + 0xEF, 0x18, 0x24, 0x77, 0x86, 0x2E, 0xA6, 0xA3, + 0x4E, 0xC1, 0x36, 0xE2, 0xDF, 0xEE, 0xA6, 0xF4 + }, + { + 0x6C, 0xB8, 0xF9, 0xD5, 0x2C, 0x56, 0xD8, 0x2C, + 0xAC, 0x28, 0xF3, 0x9E, 0xA1, 0x59, 0x3E, 0x8B, + 0xB2, 0x50, 0x62, 0x93, 0xAC, 0x0D, 0x68, 0x37, + 0x6A, 0x17, 0x09, 0xB6, 0x2A, 0x46, 0xDF, 0x14, + 0xA4, 0xAE, 0x64, 0xB2, 0xD8, 0xFA, 0xB7, 0x67, + 0x33, 0xA1, 0xCE, 0xD2, 0xD5, 0x48, 0xE3, 0xF3, + 0xC6, 0xFC, 0xB4, 0x9D, 0x40, 0xC3, 0xD5, 0x80, + 0x8E, 0x44, 0x9C, 0xD8, 0x3D, 0x1C, 0x2A, 0xA2 + }, + { + 0x68, 0x3F, 0xA2, 0xB2, 0x36, 0x9A, 0x10, 0x16, + 0x2C, 0x1C, 0x1C, 0x7B, 0x24, 0xBC, 0x97, 0x0E, + 0xE6, 0x7D, 0xA2, 0x20, 0x56, 0x4F, 0x32, 0x20, + 0x3F, 0x62, 0x56, 0x96, 0xC0, 0x35, 0x2A, 0x0B, + 0x9A, 0xD9, 0x66, 0x24, 0x36, 0x2D, 0x95, 0x2D, + 0x84, 0x46, 0x3C, 0x11, 0x06, 0xA2, 0xDB, 0xA7, + 0xA0, 0x92, 0x59, 0x98, 0x84, 0xB3, 0x5A, 0x0B, + 0x89, 0xC8, 0xF1, 0xB6, 0xA9, 0xB5, 0xA6, 0x1E + }, + { + 0xAA, 0xD9, 0xAD, 0x44, 0x61, 0x01, 0x18, 0xB7, + 0x7D, 0x50, 0x8A, 0xEB, 0x1B, 0xBC, 0xD1, 0xC1, + 0xB7, 0xD0, 0x17, 0x13, 0x97, 0xFB, 0x51, 0x0A, + 0x40, 0x1B, 0xBC, 0x0E, 0xC3, 0x46, 0x23, 0x67, + 0x0D, 0x86, 0xA2, 0xDC, 0x3C, 0x8F, 0x3A, 0xB5, + 0xA2, 0x04, 0x4D, 0xF7, 0x30, 0x25, 0x67, 0x27, + 0x54, 0x5F, 0x08, 0x60, 0xCE, 0x21, 0xA1, 0xEA, + 0xC7, 0x17, 0xDF, 0xC4, 0x8F, 0x5D, 0x22, 0x8E + }, + { + 0xC4, 0x25, 0x78, 0xDE, 0x23, 0xB4, 0xC9, 0x87, + 0xD5, 0xE1, 0xAC, 0x4D, 0x68, 0x9E, 0xD5, 0xDE, + 0x4B, 0x04, 0x17, 0xF9, 0x70, 0x4B, 0xC6, 0xBC, + 0xE9, 0x69, 0xFA, 0x13, 0x47, 0x15, 0x85, 0xD6, + 0x2C, 0x2C, 0xB1, 0x21, 0x2A, 0x94, 0x4F, 0x39, + 0x7F, 0xC9, 0xCA, 0x2C, 0x37, 0x47, 0xC3, 0xBE, + 0xB6, 0x94, 0xEC, 0x4C, 0x5B, 0xE6, 0x88, 0x28, + 0xDD, 0xA5, 0x3E, 0xF4, 0x3F, 0xAE, 0xC6, 0xC0 + }, + { + 0x47, 0x0F, 0x00, 0x84, 0x1E, 0xE8, 0x24, 0x4E, + 0x63, 0xED, 0x2C, 0x7E, 0xA3, 0x0E, 0x2E, 0x41, + 0x98, 0x97, 0xC1, 0x97, 0x46, 0x2E, 0xCC, 0xCE, + 0xCF, 0x71, 0x3B, 0x42, 0xA5, 0x06, 0x5F, 0xFF, + 0x59, 0x14, 0xBC, 0x9B, 0x79, 0xAF, 0xFE, 0x8F, + 0x6B, 0x65, 0x78, 0x75, 0xE7, 0x89, 0xAE, 0x21, + 0x3B, 0xD9, 0x14, 0xCD, 0x35, 0xBD, 0x17, 0x4D, + 0x46, 0xE9, 0xD1, 0x8B, 0xD8, 0x43, 0x77, 0x3D + }, + { + 0x34, 0xFC, 0x42, 0x13, 0x73, 0x0F, 0x47, 0xA5, + 0xE9, 0xA3, 0x58, 0x0F, 0x64, 0x3E, 0x12, 0x94, + 0x5C, 0xFC, 0xB3, 0x1B, 0xF2, 0x06, 0xF6, 0xAD, + 0x45, 0x0C, 0xE5, 0x28, 0xDA, 0x3F, 0xA4, 0x32, + 0xE0, 0x05, 0xD6, 0xB0, 0xEC, 0xCE, 0x10, 0xDC, + 0xA7, 0xC5, 0x99, 0x5F, 0x6A, 0xAC, 0xC5, 0x15, + 0x0E, 0x1B, 0x00, 0x9E, 0x19, 0x75, 0x1E, 0x83, + 0x09, 0xF8, 0x85, 0x95, 0x31, 0x84, 0x43, 0x74 + }, + { + 0xFB, 0x3C, 0x1F, 0x0F, 0x56, 0xA5, 0x6F, 0x8E, + 0x31, 0x6F, 0xDF, 0x5D, 0x85, 0x3C, 0x8C, 0x87, + 0x2C, 0x39, 0x63, 0x5D, 0x08, 0x36, 0x34, 0xC3, + 0x90, 0x4F, 0xC3, 0xAC, 0x07, 0xD1, 0xB5, 0x78, + 0xE8, 0x5F, 0xF0, 0xE4, 0x80, 0xE9, 0x2D, 0x44, + 0xAD, 0xE3, 0x3B, 0x62, 0xE8, 0x93, 0xEE, 0x32, + 0x34, 0x3E, 0x79, 0xDD, 0xF6, 0xEF, 0x29, 0x2E, + 0x89, 0xB5, 0x82, 0xD3, 0x12, 0x50, 0x23, 0x14 + }, + { + 0xC7, 0xC9, 0x7F, 0xC6, 0x5D, 0xD2, 0xB9, 0xE3, + 0xD3, 0xD6, 0x07, 0xD3, 0x15, 0x98, 0xD3, 0xF8, + 0x42, 0x61, 0xE9, 0x91, 0x92, 0x51, 0xE9, 0xC8, + 0xE5, 0x7B, 0xB5, 0xF8, 0x29, 0x37, 0x7D, 0x5F, + 0x73, 0xEA, 0xBB, 0xED, 0x55, 0xC6, 0xC3, 0x81, + 0x18, 0x0F, 0x29, 0xAD, 0x02, 0xE5, 0xBE, 0x79, + 0x7F, 0xFE, 0xC7, 0xE5, 0x7B, 0xDE, 0xCB, 0xC5, + 0x0A, 0xD3, 0xD0, 0x62, 0xF0, 0x99, 0x3A, 0xB0 + }, + { + 0xA5, 0x7A, 0x49, 0xCD, 0xBE, 0x67, 0xAE, 0x7D, + 0x9F, 0x79, 0x7B, 0xB5, 0xCC, 0x7E, 0xFC, 0x2D, + 0xF0, 0x7F, 0x4E, 0x1B, 0x15, 0x95, 0x5F, 0x85, + 0xDA, 0xE7, 0x4B, 0x76, 0xE2, 0xEC, 0xB8, 0x5A, + 0xFB, 0x6C, 0xD9, 0xEE, 0xED, 0x88, 0x88, 0xD5, + 0xCA, 0x3E, 0xC5, 0xAB, 0x65, 0xD2, 0x7A, 0x7B, + 0x19, 0xE5, 0x78, 0x47, 0x57, 0x60, 0xA0, 0x45, + 0xAC, 0x3C, 0x92, 0xE1, 0x3A, 0x93, 0x8E, 0x77 + }, + { + 0xC7, 0x14, 0x3F, 0xCE, 0x96, 0x14, 0xA1, 0x7F, + 0xD6, 0x53, 0xAE, 0xB1, 0x40, 0x72, 0x6D, 0xC9, + 0xC3, 0xDB, 0xB1, 0xDE, 0x6C, 0xC5, 0x81, 0xB2, + 0x72, 0x68, 0x97, 0xEC, 0x24, 0xB7, 0xA5, 0x03, + 0x59, 0xAD, 0x49, 0x22, 0x43, 0xBE, 0x66, 0xD9, + 0xED, 0xD8, 0xC9, 0x33, 0xB5, 0xB8, 0x0E, 0x0B, + 0x91, 0xBB, 0x61, 0xEA, 0x98, 0x05, 0x60, 0x06, + 0x51, 0x69, 0x76, 0xFA, 0xE8, 0xD9, 0x9A, 0x35 + }, + { + 0x65, 0xBB, 0x58, 0xD0, 0x7F, 0x93, 0x7E, 0x2D, + 0x3C, 0x7E, 0x65, 0x38, 0x5F, 0x9C, 0x54, 0x73, + 0x0B, 0x70, 0x41, 0x05, 0xCC, 0xDB, 0x69, 0x1F, + 0x6E, 0x14, 0x6D, 0x4E, 0xE8, 0xF6, 0xC0, 0x86, + 0xF4, 0x95, 0x11, 0x03, 0x51, 0x10, 0xA9, 0xAD, + 0x60, 0x31, 0xFD, 0xCE, 0xB9, 0x43, 0xE0, 0xF9, + 0x61, 0x3B, 0xCB, 0x27, 0x6D, 0xD4, 0x0F, 0x06, + 0x24, 0xEF, 0x0F, 0x92, 0x4F, 0x80, 0x97, 0x83 + }, + { + 0xE5, 0x40, 0x27, 0x7F, 0x68, 0x3B, 0x11, 0x86, + 0xDD, 0x3B, 0x5B, 0x3F, 0x61, 0x43, 0x33, 0x96, + 0x58, 0x1A, 0x35, 0xFE, 0xB1, 0x20, 0x02, 0xBE, + 0x8C, 0x6A, 0x62, 0x31, 0xFC, 0x40, 0xFF, 0xA7, + 0x0F, 0x08, 0x08, 0x1B, 0xC5, 0x8B, 0x2D, 0x94, + 0xF7, 0x64, 0x95, 0x43, 0x61, 0x4A, 0x43, 0x5F, + 0xAA, 0x2D, 0x62, 0x11, 0x0E, 0x13, 0xDA, 0xBC, + 0x7B, 0x86, 0x62, 0x9B, 0x63, 0xAF, 0x9C, 0x24 + }, + { + 0x41, 0x85, 0x00, 0x87, 0x8C, 0x5F, 0xBC, 0xB5, + 0x84, 0xC4, 0x32, 0xF4, 0x28, 0x5E, 0x05, 0xE4, + 0x9F, 0x2E, 0x3E, 0x07, 0x53, 0x99, 0xA0, 0xDB, + 0xFC, 0xF8, 0x74, 0xEB, 0xF8, 0xC0, 0x3D, 0x02, + 0xBF, 0x16, 0xBC, 0x69, 0x89, 0xD1, 0x61, 0xC7, + 0x7C, 0xA0, 0x78, 0x6B, 0x05, 0x05, 0x3C, 0x6C, + 0x70, 0x94, 0x33, 0x71, 0x23, 0x19, 0x19, 0x21, + 0x28, 0x83, 0x5C, 0xF0, 0xB6, 0x60, 0x59, 0x5B + }, + { + 0x88, 0x90, 0x90, 0xDB, 0xB1, 0x94, 0x4B, 0xDC, + 0x94, 0x33, 0xEE, 0x5E, 0xF1, 0x01, 0x0C, 0x7A, + 0x4A, 0x24, 0xA8, 0xE7, 0x1E, 0xCE, 0xA8, 0xE1, + 0x2A, 0x31, 0x31, 0x8C, 0xE4, 0x9D, 0xCA, 0xB0, + 0xAC, 0xA5, 0xC3, 0x80, 0x23, 0x34, 0xAA, 0xB2, + 0xCC, 0x84, 0xB1, 0x4C, 0x6B, 0x93, 0x21, 0xFE, + 0x58, 0x6B, 0xF3, 0xF8, 0x76, 0xF1, 0x9C, 0xD4, + 0x06, 0xEB, 0x11, 0x27, 0xFB, 0x94, 0x48, 0x01 + }, + { + 0x53, 0xB6, 0xA2, 0x89, 0x10, 0xAA, 0x92, 0xE2, + 0x7E, 0x53, 0x6F, 0xB5, 0x49, 0xCF, 0x9B, 0x99, + 0x18, 0x79, 0x10, 0x60, 0x89, 0x8E, 0x0B, 0x9F, + 0xE1, 0x83, 0x57, 0x7F, 0xF4, 0x3B, 0x5E, 0x9C, + 0x76, 0x89, 0xC7, 0x45, 0xB3, 0x2E, 0x41, 0x22, + 0x69, 0x83, 0x7C, 0x31, 0xB8, 0x9E, 0x6C, 0xC1, + 0x2B, 0xF7, 0x6E, 0x13, 0xCA, 0xD3, 0x66, 0xB7, + 0x4E, 0xCE, 0x48, 0xBB, 0x85, 0xFD, 0x09, 0xE9 + }, + { + 0x7C, 0x09, 0x20, 0x80, 0xC6, 0xA8, 0x0D, 0x67, + 0x24, 0x09, 0xD0, 0x81, 0xD3, 0xD1, 0x77, 0x10, + 0x6B, 0xCD, 0x63, 0x56, 0x77, 0x85, 0x14, 0x07, + 0x19, 0x49, 0x09, 0x50, 0xAE, 0x07, 0xAE, 0x8F, + 0xCA, 0xAB, 0xBA, 0xAA, 0xB3, 0x30, 0xCF, 0xBC, + 0xF7, 0x37, 0x44, 0x82, 0xC2, 0x20, 0xAF, 0x2E, + 0xAD, 0xEE, 0xB7, 0x3D, 0xCB, 0xB3, 0x5E, 0xD8, + 0x23, 0x34, 0x4E, 0x14, 0x4E, 0x7D, 0x48, 0x99 + }, + { + 0x9C, 0xCD, 0xE5, 0x66, 0xD2, 0x40, 0x05, 0x09, + 0x18, 0x11, 0x11, 0xF3, 0x2D, 0xDE, 0x4C, 0xD6, + 0x32, 0x09, 0xFE, 0x59, 0xA3, 0x0C, 0x11, 0x45, + 0x46, 0xAD, 0x27, 0x76, 0xD8, 0x89, 0xA4, 0x1B, + 0xAD, 0x8F, 0xA1, 0xBB, 0x46, 0x8C, 0xB2, 0xF9, + 0xD4, 0x2C, 0xA9, 0x92, 0x8A, 0x77, 0x70, 0xFE, + 0xF8, 0xE8, 0xBA, 0x4D, 0x0C, 0x81, 0x2D, 0x9A, + 0x1E, 0x75, 0xC3, 0xD8, 0xD2, 0xCC, 0xD7, 0x5A + }, + { + 0x6E, 0x29, 0x3B, 0xF5, 0xD0, 0x3F, 0xE4, 0x39, + 0x77, 0xCF, 0xE3, 0xF5, 0x7C, 0xCD, 0xB3, 0xAE, + 0x28, 0x2A, 0x85, 0x45, 0x5D, 0xCA, 0x33, 0xF3, + 0x7F, 0x4B, 0x74, 0xF8, 0x39, 0x8C, 0xC6, 0x12, + 0x43, 0x3D, 0x75, 0x5C, 0xBE, 0xC4, 0x12, 0xF8, + 0xF8, 0x2A, 0x3B, 0xD3, 0xBC, 0x4A, 0x27, 0x8F, + 0x7E, 0xCD, 0x0D, 0xFA, 0x9B, 0xBD, 0xC4, 0x0B, + 0xE7, 0xA7, 0x87, 0xC8, 0xF1, 0x59, 0xB2, 0xDF + }, + { + 0xC5, 0x65, 0x46, 0xFB, 0x21, 0x78, 0x45, 0x6F, + 0x33, 0x61, 0x64, 0xC1, 0x8B, 0x90, 0xDE, 0xFF, + 0xC8, 0x3A, 0xE2, 0xB5, 0xA3, 0xAC, 0xA7, 0x7B, + 0x68, 0x84, 0xD3, 0x6D, 0x2C, 0x1D, 0xB3, 0x95, + 0x01, 0xB3, 0xE6, 0x5E, 0x36, 0xC7, 0x58, 0xC6, + 0x6E, 0x31, 0x88, 0x45, 0x1F, 0xDB, 0x35, 0x15, + 0xEE, 0x16, 0x2C, 0x00, 0x1F, 0x06, 0xC3, 0xE8, + 0xCB, 0x57, 0x3A, 0xDF, 0x30, 0xF7, 0xA1, 0x01 + }, + { + 0x6F, 0x82, 0xF8, 0x9F, 0x29, 0x9E, 0xBC, 0xA2, + 0xFE, 0x01, 0x4B, 0x59, 0xBF, 0xFE, 0x1A, 0xA8, + 0x4E, 0x88, 0xB1, 0x91, 0x5F, 0xE2, 0x56, 0xAF, + 0xB6, 0x46, 0xFD, 0x84, 0x48, 0xAF, 0x2B, 0x88, + 0x91, 0xA7, 0xFA, 0xB3, 0x7A, 0x4E, 0xA6, 0xF9, + 0xA5, 0x0E, 0x6C, 0x31, 0x70, 0x39, 0xD8, 0xCF, + 0x87, 0x8F, 0x4C, 0x8E, 0x1A, 0x0D, 0xD4, 0x64, + 0xF0, 0xB4, 0xD6, 0xFF, 0x1C, 0x7E, 0xA8, 0x53 + }, + { + 0x2B, 0x85, 0x99, 0xFF, 0x9C, 0x3D, 0x61, 0x98, + 0x63, 0x7A, 0xD5, 0x1E, 0x57, 0xD1, 0x99, 0x8B, + 0x0D, 0x75, 0x31, 0x3F, 0xE2, 0xDD, 0x61, 0xA5, + 0x33, 0xC9, 0x64, 0xA6, 0xDD, 0x96, 0x07, 0xC6, + 0xF7, 0x23, 0xE9, 0x45, 0x2C, 0xE4, 0x6E, 0x01, + 0x4B, 0x1C, 0x1D, 0x6D, 0xE7, 0x7B, 0xA5, 0xB8, + 0x8C, 0x91, 0x4D, 0x1C, 0x59, 0x7B, 0xF1, 0xEA, + 0xE1, 0x34, 0x74, 0xB4, 0x29, 0x0E, 0x89, 0xB2 + }, + { + 0x08, 0xBF, 0x34, 0x6D, 0x38, 0xE1, 0xDF, 0x06, + 0xC8, 0x26, 0x0E, 0xDB, 0x1D, 0xA7, 0x55, 0x79, + 0x27, 0x59, 0x48, 0xD5, 0xC0, 0xA0, 0xAA, 0x9E, + 0xD2, 0x88, 0x6F, 0x88, 0x56, 0xDE, 0x54, 0x17, + 0xA1, 0x56, 0x99, 0x87, 0x58, 0xF5, 0xB1, 0x7E, + 0x52, 0xF1, 0x01, 0xCA, 0x95, 0x7A, 0x71, 0x13, + 0x74, 0x73, 0xDF, 0xD1, 0x8D, 0x7D, 0x20, 0x9C, + 0x4C, 0x10, 0xD9, 0x23, 0x3C, 0x93, 0x69, 0x1D + }, + { + 0x6D, 0xF2, 0x15, 0x6D, 0x77, 0x31, 0x14, 0xD3, + 0x10, 0xB6, 0x3D, 0xB9, 0xEE, 0x53, 0x50, 0xD7, + 0x7E, 0x6B, 0xCF, 0x25, 0xB0, 0x5F, 0xCD, 0x91, + 0x0F, 0x9B, 0x31, 0xBC, 0x42, 0xBB, 0x13, 0xFE, + 0x82, 0x25, 0xEB, 0xCB, 0x2A, 0x23, 0xA6, 0x22, + 0x80, 0x77, 0x7B, 0x6B, 0xF7, 0x4E, 0x2C, 0xD0, + 0x91, 0x7C, 0x76, 0x40, 0xB4, 0x3D, 0xEF, 0xE4, + 0x68, 0xCD, 0x1E, 0x18, 0xC9, 0x43, 0xC6, 0x6A + }, + { + 0x7C, 0x70, 0x38, 0xBC, 0x13, 0xA9, 0x11, 0x51, + 0x82, 0x8A, 0x5B, 0xA8, 0x2B, 0x4A, 0x96, 0x04, + 0x0F, 0x25, 0x8A, 0x4D, 0xFB, 0x1B, 0x13, 0x73, + 0xF0, 0xD3, 0x59, 0x16, 0x8A, 0xFB, 0x05, 0x17, + 0xA2, 0x0B, 0x28, 0xA1, 0x2D, 0x36, 0x44, 0x04, + 0x6B, 0xE6, 0x6B, 0x8D, 0x08, 0xD8, 0xAE, 0x7F, + 0x6A, 0x92, 0x3E, 0xA1, 0xC0, 0x01, 0x87, 0xC6, + 0xD1, 0x1D, 0xC5, 0x02, 0xBA, 0xC7, 0x13, 0x05 + }, + { + 0xBC, 0xD1, 0xB3, 0x0D, 0x80, 0x8F, 0xB7, 0x39, + 0xB9, 0x87, 0xCB, 0xF1, 0x54, 0xBE, 0xA0, 0x0D, + 0xA9, 0xD4, 0x03, 0x80, 0xB8, 0x61, 0xD4, 0xC1, + 0xD6, 0x37, 0x71, 0x22, 0xDA, 0xDD, 0x61, 0xC0, + 0xE5, 0x90, 0x18, 0xB7, 0x19, 0x41, 0xCF, 0xB6, + 0x2E, 0x00, 0xDC, 0xD7, 0x0A, 0xEB, 0x9A, 0xBF, + 0x04, 0x73, 0xE8, 0x0F, 0x0A, 0x7E, 0xCA, 0x6B, + 0x6D, 0xEA, 0x24, 0x6A, 0xB2, 0x29, 0xDD, 0x2B + }, + { + 0x7E, 0xD4, 0x46, 0x8D, 0x96, 0x85, 0x30, 0xFE, + 0x7A, 0xB2, 0xC3, 0x35, 0x40, 0xB2, 0x6D, 0x8C, + 0x3B, 0xD3, 0xED, 0x44, 0xB3, 0x4F, 0xBE, 0x8C, + 0x2A, 0x9D, 0x7F, 0x80, 0x5B, 0x5A, 0xDA, 0x0E, + 0xA2, 0x52, 0xEE, 0xAD, 0xE4, 0xFC, 0xE9, 0x7F, + 0x89, 0x72, 0x8A, 0xD8, 0x5B, 0xC8, 0xBB, 0x24, + 0x30, 0xB1, 0xBE, 0xF2, 0xCD, 0xDD, 0x32, 0xC8, + 0x44, 0x6E, 0x59, 0xB8, 0xE8, 0xBA, 0x3C, 0x67 + }, + { + 0x6D, 0x30, 0xB7, 0xC6, 0xCE, 0x8A, 0x32, 0x36, + 0xC0, 0xCA, 0x2F, 0x8D, 0x72, 0x8B, 0x10, 0x88, + 0xCA, 0x06, 0x98, 0x3A, 0x80, 0x43, 0xE6, 0x21, + 0xD5, 0xDC, 0xF0, 0xC5, 0x37, 0xD1, 0x3B, 0x08, + 0x79, 0x1E, 0xDE, 0xB0, 0x1A, 0x3C, 0xF0, 0x94, + 0x3E, 0xC1, 0xC8, 0x90, 0xAB, 0x6E, 0x29, 0xB1, + 0x46, 0xA2, 0x36, 0xCD, 0x46, 0xBC, 0xB9, 0xD9, + 0x3B, 0xF5, 0x16, 0xFB, 0x67, 0xC6, 0x3F, 0xE5 + }, + { + 0x97, 0xFE, 0x03, 0xCE, 0xF3, 0x14, 0x38, 0x50, + 0x89, 0x11, 0xBD, 0xED, 0x97, 0x59, 0x80, 0xA6, + 0x60, 0x29, 0x30, 0x5D, 0xC5, 0xE3, 0xFA, 0x8A, + 0xD1, 0xB4, 0xFB, 0x22, 0xFC, 0xDF, 0x5A, 0x19, + 0xA7, 0x33, 0x32, 0x03, 0x27, 0xD8, 0xF7, 0x1C, + 0xCF, 0x49, 0x6C, 0xB3, 0xA4, 0x4A, 0x77, 0xAF, + 0x56, 0xE3, 0xDD, 0xE7, 0x3D, 0x3A, 0x5F, 0x17, + 0x68, 0x96, 0xCC, 0x57, 0xC9, 0xA5, 0xAD, 0x99 + }, + { + 0x78, 0x5A, 0x9D, 0x0F, 0xBD, 0x21, 0x13, 0x6D, + 0xBC, 0xE8, 0xFA, 0x7E, 0xAF, 0xD6, 0x3C, 0x9D, + 0xAD, 0x22, 0x00, 0x52, 0x97, 0x84, 0x16, 0xB3, + 0x1D, 0x97, 0x53, 0xEA, 0xA1, 0x49, 0x09, 0x78, + 0x47, 0xED, 0x9B, 0x30, 0xA6, 0x5C, 0x70, 0x50, + 0x7E, 0xFF, 0x01, 0x87, 0x91, 0x49, 0xED, 0x5C, + 0xF0, 0x47, 0x1D, 0x37, 0x79, 0x8E, 0xDC, 0x05, + 0xAB, 0xD5, 0x6A, 0xD4, 0xA2, 0xCC, 0xCB, 0x1D + }, + { + 0xAD, 0x40, 0x8D, 0x2A, 0xBD, 0xDF, 0xD3, 0x7B, + 0x3B, 0xF3, 0x47, 0x94, 0xC1, 0xA3, 0x37, 0x1D, + 0x92, 0x8E, 0xD7, 0xFC, 0x8D, 0x96, 0x62, 0x25, + 0x33, 0x35, 0x84, 0xC5, 0x66, 0x58, 0x17, 0x83, + 0x2A, 0x37, 0xC0, 0x7F, 0x0D, 0xC7, 0xCB, 0x5A, + 0xA8, 0x74, 0xCD, 0x7D, 0x20, 0xFE, 0x8F, 0xAB, + 0x8E, 0xAB, 0xCB, 0x9B, 0x33, 0xD2, 0xE0, 0x84, + 0x1F, 0x6E, 0x20, 0x09, 0x60, 0x89, 0x9D, 0x95 + }, + { + 0x97, 0x66, 0x8F, 0x74, 0x5B, 0x60, 0x32, 0xFC, + 0x81, 0x5D, 0x95, 0x79, 0x32, 0x27, 0x69, 0xDC, + 0xCD, 0x95, 0x01, 0xA5, 0x08, 0x00, 0x29, 0xB8, + 0xAE, 0x82, 0x6B, 0xEF, 0xB6, 0x74, 0x23, 0x31, + 0xBD, 0x9F, 0x76, 0xEF, 0xEB, 0x3E, 0x2B, 0x8E, + 0x81, 0xA9, 0x78, 0x6B, 0x28, 0x2F, 0x50, 0x68, + 0xA3, 0xA2, 0x42, 0x46, 0x97, 0xA7, 0x7C, 0x41, + 0x87, 0x6B, 0x7E, 0x75, 0x3F, 0x4C, 0x77, 0x67 + }, + { + 0x26, 0xBB, 0x98, 0x5F, 0x47, 0xE7, 0xFE, 0xE0, + 0xCF, 0xD2, 0x52, 0xD4, 0xEF, 0x96, 0xBE, 0xD4, + 0x2B, 0x9C, 0x37, 0x0C, 0x1C, 0x6A, 0x3E, 0x8C, + 0x9E, 0xB0, 0x4E, 0xF7, 0xF7, 0x81, 0x8B, 0x83, + 0x3A, 0x0D, 0x1F, 0x04, 0x3E, 0xBA, 0xFB, 0x91, + 0x1D, 0xC7, 0x79, 0xE0, 0x27, 0x40, 0xA0, 0x2A, + 0x44, 0xD3, 0xA1, 0xEA, 0x45, 0xED, 0x4A, 0xD5, + 0x5E, 0x68, 0x6C, 0x92, 0x7C, 0xAF, 0xE9, 0x7E + }, + { + 0x5B, 0xFE, 0x2B, 0x1D, 0xCF, 0x7F, 0xE9, 0xB9, + 0x50, 0x88, 0xAC, 0xED, 0xB5, 0x75, 0xC1, 0x90, + 0x16, 0xC7, 0x43, 0xB2, 0xE7, 0x63, 0xBF, 0x58, + 0x51, 0xAC, 0x40, 0x7C, 0x9E, 0xDA, 0x43, 0x71, + 0x5E, 0xDF, 0xA4, 0x8B, 0x48, 0x25, 0x49, 0x2C, + 0x51, 0x79, 0x59, 0x3F, 0xFF, 0x21, 0x35, 0x1B, + 0x76, 0xE8, 0xB7, 0xE0, 0x34, 0xE4, 0xC5, 0x3C, + 0x79, 0xF6, 0x1F, 0x29, 0xC4, 0x79, 0xBD, 0x08 + }, + { + 0xC7, 0x65, 0x09, 0xEF, 0x72, 0xF4, 0xA6, 0xF9, + 0xC9, 0xC4, 0x06, 0x18, 0xED, 0x52, 0xB2, 0x08, + 0x4F, 0x83, 0x50, 0x22, 0x32, 0xE0, 0xAC, 0x8B, + 0xDA, 0xF3, 0x26, 0x43, 0x68, 0xE4, 0xD0, 0x18, + 0x0F, 0x68, 0x54, 0xC4, 0xAB, 0xF4, 0xF6, 0x50, + 0x9C, 0x79, 0xCA, 0xAF, 0xC4, 0x4C, 0xF3, 0x19, + 0x4A, 0xFC, 0x57, 0xBD, 0x07, 0x7B, 0xD7, 0xB3, + 0xC9, 0xBD, 0xA3, 0xD4, 0xB8, 0x77, 0x58, 0x16 + }, + { + 0xD6, 0x6F, 0x2B, 0xEA, 0xB9, 0x90, 0xE3, 0x54, + 0xCC, 0xB9, 0x10, 0xE4, 0xE9, 0xC7, 0xAC, 0x61, + 0x8C, 0x7B, 0x63, 0xEF, 0x29, 0x2A, 0x96, 0xB5, + 0x52, 0x34, 0x1D, 0xE7, 0x8D, 0xC4, 0x6D, 0x3E, + 0xC8, 0xCF, 0xAB, 0xC6, 0x99, 0xB5, 0x0A, 0xF4, + 0x1F, 0xDA, 0x39, 0xCF, 0x1B, 0x01, 0x73, 0x66, + 0x09, 0x23, 0x51, 0x0A, 0xD6, 0x7F, 0xAE, 0xDE, + 0xF5, 0x20, 0x7C, 0xFF, 0xE8, 0x64, 0x1D, 0x20 + }, + { + 0x7D, 0x8F, 0x06, 0x72, 0x99, 0x2B, 0x79, 0xBE, + 0x3A, 0x36, 0x4D, 0x8E, 0x59, 0x04, 0xF4, 0xAB, + 0x71, 0x3B, 0xBC, 0x8A, 0xB0, 0x1B, 0x4F, 0x30, + 0x9A, 0xD8, 0xCC, 0xF2, 0x23, 0xCE, 0x10, 0x34, + 0xA8, 0x60, 0xDC, 0xB0, 0xB0, 0x05, 0x50, 0x61, + 0x2C, 0xC2, 0xFA, 0x17, 0xF2, 0x96, 0x9E, 0x18, + 0xF2, 0x2E, 0x14, 0x27, 0xD2, 0x54, 0xB4, 0xA8, + 0x2B, 0x3A, 0x03, 0xA3, 0xEB, 0x39, 0x4A, 0xDF + }, + { + 0xA5, 0x6D, 0x67, 0x25, 0xBF, 0xB3, 0xDE, 0x47, + 0xC1, 0x41, 0x4A, 0xDF, 0x25, 0xFC, 0x8F, 0x0F, + 0xC9, 0x84, 0x6F, 0x69, 0x87, 0x72, 0x2B, 0xC0, + 0x63, 0x66, 0xD5, 0xCA, 0x4E, 0x89, 0x72, 0x29, + 0x25, 0xEB, 0xBC, 0x88, 0x14, 0x18, 0x84, 0x40, + 0x75, 0x39, 0x7A, 0x0C, 0xA8, 0x98, 0x42, 0xC7, + 0xB9, 0xE9, 0xE0, 0x7E, 0x1D, 0x9D, 0x18, 0x3E, + 0xBE, 0xB3, 0x9E, 0x12, 0x0B, 0x48, 0x3B, 0xF7 + }, + { + 0xAF, 0x5E, 0x03, 0xD7, 0xFE, 0x60, 0xC6, 0x7E, + 0x10, 0x31, 0x33, 0x44, 0x43, 0x4E, 0x79, 0x48, + 0x5A, 0x03, 0xA7, 0x58, 0xD6, 0xDC, 0xE9, 0x85, + 0x57, 0x47, 0x45, 0x76, 0x3C, 0x1C, 0x5C, 0x77, + 0xD4, 0xFB, 0x3E, 0x6F, 0xB1, 0x22, 0x30, 0x36, + 0x83, 0x70, 0x99, 0x3B, 0xF9, 0x0F, 0xEE, 0xD0, + 0xC5, 0xD1, 0x60, 0x75, 0x24, 0x56, 0x2D, 0x7C, + 0x09, 0xC0, 0xC2, 0x10, 0xED, 0x39, 0x3D, 0x7C + }, + { + 0x7A, 0x20, 0x54, 0x0C, 0xC0, 0x7B, 0xF7, 0x2B, + 0x58, 0x24, 0x21, 0xFC, 0x34, 0x2E, 0x82, 0xF5, + 0x21, 0x34, 0xB6, 0x98, 0x41, 0xEC, 0x28, 0xED, + 0x18, 0x9E, 0x2E, 0xA6, 0xA2, 0x9D, 0xD2, 0xF8, + 0x2A, 0x64, 0x03, 0x52, 0xD2, 0x22, 0xB5, 0x2F, + 0x29, 0x11, 0xDC, 0x72, 0xA7, 0xDA, 0xB3, 0x1C, + 0xAA, 0xDD, 0x80, 0xC6, 0x11, 0x8F, 0x13, 0xC5, + 0x6B, 0x2A, 0x1E, 0x43, 0x73, 0xBE, 0x0E, 0xA3 + }, + { + 0x48, 0x6F, 0x02, 0xC6, 0x3E, 0x54, 0x67, 0xEA, + 0x1F, 0xDD, 0xE7, 0xE8, 0x2B, 0xFA, 0xCC, 0x2C, + 0x1B, 0xA5, 0xD6, 0x36, 0xD9, 0xF3, 0xD0, 0x8B, + 0x21, 0x0D, 0xA3, 0xF3, 0x72, 0xF7, 0x06, 0xEC, + 0x21, 0x8C, 0xC1, 0x7F, 0xF6, 0x0A, 0xEF, 0x70, + 0x3B, 0xBE, 0x0C, 0x15, 0xC3, 0x8A, 0xE5, 0x5D, + 0x28, 0x6A, 0x68, 0x4F, 0x86, 0x4C, 0x78, 0x21, + 0x1C, 0xCA, 0xB4, 0x17, 0x8C, 0x92, 0xAD, 0xBA + }, + { + 0x1C, 0x7A, 0x5C, 0x1D, 0xED, 0xCD, 0x04, 0xA9, + 0x21, 0x78, 0x8F, 0x7E, 0xB2, 0x33, 0x61, 0xCA, + 0x19, 0x53, 0xB0, 0x4B, 0x9C, 0x7A, 0xEC, 0x35, + 0xD6, 0x5E, 0xA3, 0xE4, 0x99, 0x6D, 0xB2, 0x6F, + 0x28, 0x12, 0x78, 0xEA, 0x4A, 0xE6, 0x66, 0xAD, + 0x81, 0x02, 0x7D, 0x98, 0xAF, 0x57, 0x26, 0x2C, + 0xDB, 0xFA, 0x4C, 0x08, 0x5F, 0x42, 0x10, 0x56, + 0x8C, 0x7E, 0x15, 0xEE, 0xC7, 0x80, 0x51, 0x14 + }, + { + 0x9C, 0xE3, 0xFA, 0x9A, 0x86, 0x0B, 0xDB, 0xD5, + 0x37, 0x8F, 0xD6, 0xD7, 0xB8, 0xB6, 0x71, 0xC6, + 0xCB, 0x76, 0x92, 0x91, 0x0C, 0xE8, 0xF9, 0xB6, + 0xCB, 0x41, 0x22, 0xCB, 0xCB, 0xE6, 0xAC, 0x06, + 0xCA, 0x04, 0x22, 0xCE, 0xF1, 0x22, 0x59, 0x35, + 0x05, 0x3B, 0x7D, 0x19, 0x3A, 0x81, 0xB9, 0xE9, + 0x72, 0xEB, 0x85, 0xA1, 0xD3, 0x07, 0x4F, 0x14, + 0xCB, 0xB5, 0xEC, 0x9F, 0x05, 0x73, 0x89, 0x2D + }, + { + 0xA9, 0x11, 0x87, 0xBE, 0x5C, 0x37, 0x1C, 0x42, + 0x65, 0xC1, 0x74, 0xFD, 0x46, 0x53, 0xB8, 0xAB, + 0x70, 0x85, 0x51, 0xF8, 0x3D, 0x1F, 0xEE, 0x1C, + 0xC1, 0x47, 0x95, 0x81, 0xBC, 0x00, 0x6D, 0x6F, + 0xB7, 0x8F, 0xCC, 0x9A, 0x5D, 0xEE, 0x1D, 0xB3, + 0x66, 0x6F, 0x50, 0x8F, 0x97, 0x80, 0xA3, 0x75, + 0x93, 0xEB, 0xCC, 0xCF, 0x5F, 0xBE, 0xD3, 0x96, + 0x67, 0xDC, 0x63, 0x61, 0xE9, 0x21, 0xF7, 0x79 + }, + { + 0x46, 0x25, 0x76, 0x7D, 0x7B, 0x1D, 0x3D, 0x3E, + 0xD2, 0xFB, 0xC6, 0x74, 0xAF, 0x14, 0xE0, 0x24, + 0x41, 0x52, 0xF2, 0xA4, 0x02, 0x1F, 0xCF, 0x33, + 0x11, 0x50, 0x5D, 0x89, 0xBD, 0x81, 0xE2, 0xF9, + 0xF9, 0xA5, 0x00, 0xC3, 0xB1, 0x99, 0x91, 0x4D, + 0xB4, 0x95, 0x00, 0xB3, 0xC9, 0x8D, 0x03, 0xEA, + 0x93, 0x28, 0x67, 0x51, 0xA6, 0x86, 0xA3, 0xB8, + 0x75, 0xDA, 0xAB, 0x0C, 0xCD, 0x63, 0xB4, 0x4F + }, + { + 0x43, 0xDF, 0xDF, 0xE1, 0xB0, 0x14, 0xFE, 0xD3, + 0xA2, 0xAC, 0xAB, 0xB7, 0xF3, 0xE9, 0xA1, 0x82, + 0xF2, 0xAA, 0x18, 0x01, 0x9D, 0x27, 0xE3, 0xE6, + 0xCD, 0xCF, 0x31, 0xA1, 0x5B, 0x42, 0x8E, 0x91, + 0xE7, 0xB0, 0x8C, 0xF5, 0xE5, 0xC3, 0x76, 0xFC, + 0xE2, 0xD8, 0xA2, 0x8F, 0xF8, 0x5A, 0xB0, 0xA0, + 0xA1, 0x65, 0x6E, 0xDB, 0x4A, 0x0A, 0x91, 0x53, + 0x26, 0x20, 0x09, 0x6D, 0x9A, 0x5A, 0x65, 0x2D + }, + { + 0x27, 0x9E, 0x32, 0x02, 0xBE, 0x39, 0x89, 0xBA, + 0x31, 0x12, 0x77, 0x25, 0x85, 0x17, 0x74, 0x87, + 0xE4, 0xFE, 0x3E, 0xE3, 0xEA, 0xB4, 0x9C, 0x2F, + 0x7F, 0xA7, 0xFE, 0x87, 0xCF, 0xE7, 0xB8, 0x0D, + 0x3E, 0x03, 0x55, 0xED, 0xFF, 0x6D, 0x03, 0x1E, + 0x6C, 0x96, 0xC7, 0x95, 0xDB, 0x1C, 0x6F, 0x04, + 0x18, 0x80, 0xEC, 0x38, 0x24, 0xDE, 0xFA, 0xCF, + 0x92, 0x63, 0x82, 0x0A, 0x8E, 0x73, 0x27, 0xDE + }, + { + 0xEA, 0x2D, 0x06, 0x6A, 0xC2, 0x29, 0xD4, 0xD4, + 0xB6, 0x16, 0xA8, 0xBE, 0xDE, 0xC7, 0x34, 0x32, + 0x52, 0x24, 0xE4, 0xB4, 0xE5, 0x8F, 0x1A, 0xE6, + 0xDA, 0xD7, 0xE4, 0x0C, 0x2D, 0xA2, 0x91, 0x96, + 0xC3, 0xB1, 0xEA, 0x95, 0x71, 0xDA, 0xCC, 0x81, + 0xE8, 0x73, 0x28, 0xCA, 0xA0, 0x21, 0x1E, 0x09, + 0x02, 0x7B, 0x05, 0x24, 0xAA, 0x3F, 0x4A, 0x84, + 0x99, 0x17, 0xB3, 0x58, 0x67, 0x47, 0xEB, 0xBB + }, + { + 0x49, 0xF0, 0x14, 0xF5, 0xC6, 0x18, 0x22, 0xC8, + 0x99, 0xAB, 0x5C, 0xAE, 0x51, 0xBE, 0x40, 0x44, + 0xA4, 0x49, 0x5E, 0x77, 0x7D, 0xEB, 0x7D, 0xA9, + 0xB6, 0xD8, 0x49, 0x0E, 0xFB, 0xB8, 0x75, 0x30, + 0xAD, 0xF2, 0x93, 0xDA, 0xF0, 0x79, 0xF9, 0x4C, + 0x33, 0xB7, 0x04, 0x4E, 0xF6, 0x2E, 0x2E, 0x5B, + 0xB3, 0xEB, 0x11, 0xE1, 0x73, 0x04, 0xF8, 0x45, + 0x3E, 0xE6, 0xCE, 0x24, 0xF0, 0x33, 0xDD, 0xB0 + }, + { + 0x92, 0x33, 0x49, 0x03, 0x44, 0xE5, 0xB0, 0xDC, + 0x59, 0x12, 0x67, 0x1B, 0x7A, 0xE5, 0x4C, 0xEE, + 0x77, 0x30, 0xDB, 0xE1, 0xF4, 0xC7, 0xD9, 0x2A, + 0x4D, 0x3E, 0x3A, 0xAB, 0x50, 0x57, 0x17, 0x08, + 0xDB, 0x51, 0xDC, 0xF9, 0xC2, 0x94, 0x45, 0x91, + 0xDB, 0x65, 0x1D, 0xB3, 0x2D, 0x22, 0x93, 0x5B, + 0x86, 0x94, 0x49, 0x69, 0xBE, 0x77, 0xD5, 0xB5, + 0xFE, 0xAE, 0x6C, 0x38, 0x40, 0xA8, 0xDB, 0x26 + }, + { + 0xB6, 0xE7, 0x5E, 0x6F, 0x4C, 0x7F, 0x45, 0x3B, + 0x74, 0x65, 0xD2, 0x5B, 0x5A, 0xC8, 0xC7, 0x19, + 0x69, 0x02, 0xEA, 0xA9, 0x53, 0x87, 0x52, 0x28, + 0xC8, 0x63, 0x4E, 0x16, 0xE2, 0xAE, 0x1F, 0x38, + 0xBC, 0x32, 0x75, 0x30, 0x43, 0x35, 0xF5, 0x98, + 0x9E, 0xCC, 0xC1, 0xE3, 0x41, 0x67, 0xD4, 0xE6, + 0x8D, 0x77, 0x19, 0x96, 0x8F, 0xBA, 0x8E, 0x2F, + 0xE6, 0x79, 0x47, 0xC3, 0x5C, 0x48, 0xE8, 0x06 + }, + { + 0xCC, 0x14, 0xCA, 0x66, 0x5A, 0xF1, 0x48, 0x3E, + 0xFB, 0xC3, 0xAF, 0x80, 0x08, 0x0E, 0x65, 0x0D, + 0x50, 0x46, 0xA3, 0x93, 0x2F, 0x4F, 0x51, 0xF3, + 0xFE, 0x90, 0xA0, 0x70, 0x5E, 0xC2, 0x51, 0x04, + 0xAD, 0xF0, 0x78, 0x39, 0x26, 0x5D, 0xC5, 0x1D, + 0x43, 0x40, 0x14, 0x11, 0x24, 0x6E, 0x47, 0x4F, + 0x0D, 0x5E, 0x56, 0x37, 0xAF, 0x94, 0x76, 0x72, + 0x83, 0xD5, 0x3E, 0x06, 0x17, 0xE9, 0x81, 0xF4 + }, + { + 0x23, 0x0A, 0x1C, 0x85, 0x7C, 0xB2, 0xE7, 0x85, + 0x2E, 0x41, 0xB6, 0x47, 0xE9, 0x0E, 0x45, 0x85, + 0xD2, 0xD8, 0x81, 0xE1, 0x73, 0x4D, 0xC3, 0x89, + 0x55, 0x35, 0x6E, 0x8D, 0xD7, 0xBF, 0xF3, 0x90, + 0x53, 0x09, 0x2C, 0x6B, 0x38, 0xE2, 0x36, 0xE1, + 0x89, 0x95, 0x25, 0x64, 0x70, 0x73, 0xDD, 0xDF, + 0x68, 0x95, 0xD6, 0x42, 0x06, 0x32, 0x5E, 0x76, + 0x47, 0xF2, 0x75, 0x56, 0x7B, 0x25, 0x59, 0x09 + }, + { + 0xCB, 0xB6, 0x53, 0x21, 0xAC, 0x43, 0x6E, 0x2F, + 0xFD, 0xAB, 0x29, 0x36, 0x35, 0x9C, 0xE4, 0x90, + 0x23, 0xF7, 0xDE, 0xE7, 0x61, 0x4E, 0xF2, 0x8D, + 0x17, 0x3C, 0x3D, 0x27, 0xC5, 0xD1, 0xBF, 0xFA, + 0x51, 0x55, 0x3D, 0x43, 0x3F, 0x8E, 0xE3, 0xC9, + 0xE4, 0x9C, 0x05, 0xA2, 0xB8, 0x83, 0xCC, 0xE9, + 0x54, 0xC9, 0xA8, 0x09, 0x3B, 0x80, 0x61, 0x2A, + 0x0C, 0xDD, 0x47, 0x32, 0xE0, 0x41, 0xF9, 0x95 + }, + { + 0x3E, 0x7E, 0x57, 0x00, 0x74, 0x33, 0x72, 0x75, + 0xEF, 0xB5, 0x13, 0x15, 0x58, 0x80, 0x34, 0xC3, + 0xCF, 0x0D, 0xDD, 0xCA, 0x20, 0xB4, 0x61, 0x2E, + 0x0B, 0xD5, 0xB8, 0x81, 0xE7, 0xE5, 0x47, 0x6D, + 0x31, 0x9C, 0xE4, 0xFE, 0x9F, 0x19, 0x18, 0x6E, + 0x4C, 0x08, 0x26, 0xF4, 0x4F, 0x13, 0x1E, 0xB0, + 0x48, 0xE6, 0x5B, 0xE2, 0x42, 0xB1, 0x17, 0x2C, + 0x63, 0xBA, 0xDB, 0x12, 0x3A, 0xB0, 0xCB, 0xE8 + }, + { + 0xD3, 0x2E, 0x9E, 0xC0, 0x2D, 0x38, 0xD4, 0xE1, + 0xB8, 0x24, 0x9D, 0xF8, 0xDC, 0xB0, 0x0C, 0x5B, + 0x9C, 0x68, 0xEB, 0x89, 0x22, 0x67, 0x2E, 0x35, + 0x05, 0x39, 0x3B, 0x6A, 0x21, 0x0B, 0xA5, 0x6F, + 0x94, 0x96, 0xE5, 0xEE, 0x04, 0x90, 0xEF, 0x38, + 0x7C, 0x3C, 0xDE, 0xC0, 0x61, 0xF0, 0x6B, 0xC0, + 0x38, 0x2D, 0x93, 0x04, 0xCA, 0xFB, 0xB8, 0xE0, + 0xCD, 0x33, 0xD5, 0x70, 0x29, 0xE6, 0x2D, 0xF2 + }, + { + 0x8C, 0x15, 0x12, 0x46, 0x60, 0x89, 0xF0, 0x5B, + 0x37, 0x75, 0xC2, 0x62, 0xB6, 0x2D, 0x22, 0xB8, + 0x38, 0x54, 0xA8, 0x32, 0x18, 0x13, 0x0B, 0x4E, + 0xC9, 0x1B, 0x3C, 0xCB, 0xD2, 0x93, 0xD2, 0xA5, + 0x43, 0x02, 0xCE, 0xCA, 0xAB, 0x9B, 0x10, 0x0C, + 0x68, 0xD1, 0xE6, 0xDD, 0xC8, 0xF0, 0x7C, 0xDD, + 0xBD, 0xFE, 0x6F, 0xDA, 0xAA, 0xF0, 0x99, 0xCC, + 0x09, 0xD6, 0xB7, 0x25, 0x87, 0x9C, 0x63, 0x69 + }, + { + 0x91, 0xA7, 0xF6, 0x1C, 0x97, 0xC2, 0x91, 0x1E, + 0x4C, 0x81, 0x2E, 0xF7, 0x1D, 0x78, 0x0A, 0xD8, + 0xFA, 0x78, 0x87, 0x94, 0x56, 0x1D, 0x08, 0x30, + 0x3F, 0xD1, 0xC1, 0xCB, 0x60, 0x8A, 0x46, 0xA1, + 0x25, 0x63, 0x08, 0x6E, 0xC5, 0xB3, 0x9D, 0x47, + 0x1A, 0xED, 0x94, 0xFB, 0x0F, 0x6C, 0x67, 0x8A, + 0x43, 0xB8, 0x79, 0x29, 0x32, 0xF9, 0x02, 0x8D, + 0x77, 0x2A, 0x22, 0x76, 0x8E, 0xA2, 0x3A, 0x9B + }, + { + 0x4F, 0x6B, 0xB2, 0x22, 0xA3, 0x95, 0xE8, 0xB1, + 0x8F, 0x6B, 0xA1, 0x55, 0x47, 0x7A, 0xED, 0x3F, + 0x07, 0x29, 0xAC, 0x9E, 0x83, 0xE1, 0x6D, 0x31, + 0xA2, 0xA8, 0xBC, 0x65, 0x54, 0x22, 0xB8, 0x37, + 0xC8, 0x91, 0xC6, 0x19, 0x9E, 0x6F, 0x0D, 0x75, + 0x79, 0x9E, 0x3B, 0x69, 0x15, 0x25, 0xC5, 0x81, + 0x95, 0x35, 0x17, 0xF2, 0x52, 0xC4, 0xB9, 0xE3, + 0xA2, 0x7A, 0x28, 0xFB, 0xAF, 0x49, 0x64, 0x4C + }, + { + 0x5D, 0x06, 0xC0, 0x7E, 0x7A, 0x64, 0x6C, 0x41, + 0x3A, 0x50, 0x1C, 0x3F, 0x4B, 0xB2, 0xFC, 0x38, + 0x12, 0x7D, 0xE7, 0x50, 0x9B, 0x70, 0x77, 0xC4, + 0xD9, 0xB5, 0x61, 0x32, 0x01, 0xC1, 0xAA, 0x02, + 0xFD, 0x5F, 0x79, 0xD2, 0x74, 0x59, 0x15, 0xDD, + 0x57, 0xFB, 0xCB, 0x4C, 0xE0, 0x86, 0x95, 0xF6, + 0xEF, 0xC0, 0xCB, 0x3D, 0x2D, 0x33, 0x0E, 0x19, + 0xB4, 0xB0, 0xE6, 0x00, 0x4E, 0xA6, 0x47, 0x1E + }, + { + 0xB9, 0x67, 0x56, 0xE5, 0x79, 0x09, 0x96, 0x8F, + 0x14, 0xB7, 0x96, 0xA5, 0xD3, 0x0F, 0x4C, 0x9D, + 0x67, 0x14, 0x72, 0xCF, 0x82, 0xC8, 0xCF, 0xB2, + 0xCA, 0xCA, 0x7A, 0xC7, 0xA4, 0x4C, 0xA0, 0xA1, + 0x4C, 0x98, 0x42, 0xD0, 0x0C, 0x82, 0xE3, 0x37, + 0x50, 0x2C, 0x94, 0xD5, 0x96, 0x0A, 0xCA, 0x4C, + 0x49, 0x2E, 0xA7, 0xB0, 0xDF, 0x91, 0x9D, 0xDF, + 0x1A, 0xAD, 0xA2, 0xA2, 0x75, 0xBB, 0x10, 0xD4 + }, + { + 0xFF, 0x0A, 0x01, 0x5E, 0x98, 0xDB, 0x9C, 0x99, + 0xF0, 0x39, 0x77, 0x71, 0x0A, 0xAC, 0x3E, 0x65, + 0x8C, 0x0D, 0x89, 0x6F, 0x6D, 0x71, 0xD6, 0x18, + 0xBA, 0x79, 0xDC, 0x6C, 0xF7, 0x2A, 0xC7, 0x5B, + 0x7C, 0x03, 0x8E, 0xB6, 0x86, 0x2D, 0xED, 0xE4, + 0x54, 0x3E, 0x14, 0x54, 0x13, 0xA6, 0x36, 0x8D, + 0x69, 0xF5, 0x72, 0x2C, 0x82, 0x7B, 0xA3, 0xEF, + 0x25, 0xB6, 0xAE, 0x64, 0x40, 0xD3, 0x92, 0x76 + }, + { + 0x5B, 0x21, 0xC5, 0xFD, 0x88, 0x68, 0x36, 0x76, + 0x12, 0x47, 0x4F, 0xA2, 0xE7, 0x0E, 0x9C, 0xFA, + 0x22, 0x01, 0xFF, 0xEE, 0xE8, 0xFA, 0xFA, 0xB5, + 0x79, 0x7A, 0xD5, 0x8F, 0xEF, 0xA1, 0x7C, 0x9B, + 0x5B, 0x10, 0x7D, 0xA4, 0xA3, 0xDB, 0x63, 0x20, + 0xBA, 0xAF, 0x2C, 0x86, 0x17, 0xD5, 0xA5, 0x1D, + 0xF9, 0x14, 0xAE, 0x88, 0xDA, 0x38, 0x67, 0xC2, + 0xD4, 0x1F, 0x0C, 0xC1, 0x4F, 0xA6, 0x79, 0x28 + }, +}; + + + + +static const uint8_t blake2b_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] = +{ + { + 0x10, 0xEB, 0xB6, 0x77, 0x00, 0xB1, 0x86, 0x8E, + 0xFB, 0x44, 0x17, 0x98, 0x7A, 0xCF, 0x46, 0x90, + 0xAE, 0x9D, 0x97, 0x2F, 0xB7, 0xA5, 0x90, 0xC2, + 0xF0, 0x28, 0x71, 0x79, 0x9A, 0xAA, 0x47, 0x86, + 0xB5, 0xE9, 0x96, 0xE8, 0xF0, 0xF4, 0xEB, 0x98, + 0x1F, 0xC2, 0x14, 0xB0, 0x05, 0xF4, 0x2D, 0x2F, + 0xF4, 0x23, 0x34, 0x99, 0x39, 0x16, 0x53, 0xDF, + 0x7A, 0xEF, 0xCB, 0xC1, 0x3F, 0xC5, 0x15, 0x68 + }, + { + 0x96, 0x1F, 0x6D, 0xD1, 0xE4, 0xDD, 0x30, 0xF6, + 0x39, 0x01, 0x69, 0x0C, 0x51, 0x2E, 0x78, 0xE4, + 0xB4, 0x5E, 0x47, 0x42, 0xED, 0x19, 0x7C, 0x3C, + 0x5E, 0x45, 0xC5, 0x49, 0xFD, 0x25, 0xF2, 0xE4, + 0x18, 0x7B, 0x0B, 0xC9, 0xFE, 0x30, 0x49, 0x2B, + 0x16, 0xB0, 0xD0, 0xBC, 0x4E, 0xF9, 0xB0, 0xF3, + 0x4C, 0x70, 0x03, 0xFA, 0xC0, 0x9A, 0x5E, 0xF1, + 0x53, 0x2E, 0x69, 0x43, 0x02, 0x34, 0xCE, 0xBD + }, + { + 0xDA, 0x2C, 0xFB, 0xE2, 0xD8, 0x40, 0x9A, 0x0F, + 0x38, 0x02, 0x61, 0x13, 0x88, 0x4F, 0x84, 0xB5, + 0x01, 0x56, 0x37, 0x1A, 0xE3, 0x04, 0xC4, 0x43, + 0x01, 0x73, 0xD0, 0x8A, 0x99, 0xD9, 0xFB, 0x1B, + 0x98, 0x31, 0x64, 0xA3, 0x77, 0x07, 0x06, 0xD5, + 0x37, 0xF4, 0x9E, 0x0C, 0x91, 0x6D, 0x9F, 0x32, + 0xB9, 0x5C, 0xC3, 0x7A, 0x95, 0xB9, 0x9D, 0x85, + 0x74, 0x36, 0xF0, 0x23, 0x2C, 0x88, 0xA9, 0x65 + }, + { + 0x33, 0xD0, 0x82, 0x5D, 0xDD, 0xF7, 0xAD, 0xA9, + 0x9B, 0x0E, 0x7E, 0x30, 0x71, 0x04, 0xAD, 0x07, + 0xCA, 0x9C, 0xFD, 0x96, 0x92, 0x21, 0x4F, 0x15, + 0x61, 0x35, 0x63, 0x15, 0xE7, 0x84, 0xF3, 0xE5, + 0xA1, 0x7E, 0x36, 0x4A, 0xE9, 0xDB, 0xB1, 0x4C, + 0xB2, 0x03, 0x6D, 0xF9, 0x32, 0xB7, 0x7F, 0x4B, + 0x29, 0x27, 0x61, 0x36, 0x5F, 0xB3, 0x28, 0xDE, + 0x7A, 0xFD, 0xC6, 0xD8, 0x99, 0x8F, 0x5F, 0xC1 + }, + { + 0xBE, 0xAA, 0x5A, 0x3D, 0x08, 0xF3, 0x80, 0x71, + 0x43, 0xCF, 0x62, 0x1D, 0x95, 0xCD, 0x69, 0x05, + 0x14, 0xD0, 0xB4, 0x9E, 0xFF, 0xF9, 0xC9, 0x1D, + 0x24, 0xB5, 0x92, 0x41, 0xEC, 0x0E, 0xEF, 0xA5, + 0xF6, 0x01, 0x96, 0xD4, 0x07, 0x04, 0x8B, 0xBA, + 0x8D, 0x21, 0x46, 0x82, 0x8E, 0xBC, 0xB0, 0x48, + 0x8D, 0x88, 0x42, 0xFD, 0x56, 0xBB, 0x4F, 0x6D, + 0xF8, 0xE1, 0x9C, 0x4B, 0x4D, 0xAA, 0xB8, 0xAC + }, + { + 0x09, 0x80, 0x84, 0xB5, 0x1F, 0xD1, 0x3D, 0xEA, + 0xE5, 0xF4, 0x32, 0x0D, 0xE9, 0x4A, 0x68, 0x8E, + 0xE0, 0x7B, 0xAE, 0xA2, 0x80, 0x04, 0x86, 0x68, + 0x9A, 0x86, 0x36, 0x11, 0x7B, 0x46, 0xC1, 0xF4, + 0xC1, 0xF6, 0xAF, 0x7F, 0x74, 0xAE, 0x7C, 0x85, + 0x76, 0x00, 0x45, 0x6A, 0x58, 0xA3, 0xAF, 0x25, + 0x1D, 0xC4, 0x72, 0x3A, 0x64, 0xCC, 0x7C, 0x0A, + 0x5A, 0xB6, 0xD9, 0xCA, 0xC9, 0x1C, 0x20, 0xBB + }, + { + 0x60, 0x44, 0x54, 0x0D, 0x56, 0x08, 0x53, 0xEB, + 0x1C, 0x57, 0xDF, 0x00, 0x77, 0xDD, 0x38, 0x10, + 0x94, 0x78, 0x1C, 0xDB, 0x90, 0x73, 0xE5, 0xB1, + 0xB3, 0xD3, 0xF6, 0xC7, 0x82, 0x9E, 0x12, 0x06, + 0x6B, 0xBA, 0xCA, 0x96, 0xD9, 0x89, 0xA6, 0x90, + 0xDE, 0x72, 0xCA, 0x31, 0x33, 0xA8, 0x36, 0x52, + 0xBA, 0x28, 0x4A, 0x6D, 0x62, 0x94, 0x2B, 0x27, + 0x1F, 0xFA, 0x26, 0x20, 0xC9, 0xE7, 0x5B, 0x1F + }, + { + 0x7A, 0x8C, 0xFE, 0x9B, 0x90, 0xF7, 0x5F, 0x7E, + 0xCB, 0x3A, 0xCC, 0x05, 0x3A, 0xAE, 0xD6, 0x19, + 0x31, 0x12, 0xB6, 0xF6, 0xA4, 0xAE, 0xEB, 0x3F, + 0x65, 0xD3, 0xDE, 0x54, 0x19, 0x42, 0xDE, 0xB9, + 0xE2, 0x22, 0x81, 0x52, 0xA3, 0xC4, 0xBB, 0xBE, + 0x72, 0xFC, 0x3B, 0x12, 0x62, 0x95, 0x28, 0xCF, + 0xBB, 0x09, 0xFE, 0x63, 0x0F, 0x04, 0x74, 0x33, + 0x9F, 0x54, 0xAB, 0xF4, 0x53, 0xE2, 0xED, 0x52 + }, + { + 0x38, 0x0B, 0xEA, 0xF6, 0xEA, 0x7C, 0xC9, 0x36, + 0x5E, 0x27, 0x0E, 0xF0, 0xE6, 0xF3, 0xA6, 0x4F, + 0xB9, 0x02, 0xAC, 0xAE, 0x51, 0xDD, 0x55, 0x12, + 0xF8, 0x42, 0x59, 0xAD, 0x2C, 0x91, 0xF4, 0xBC, + 0x41, 0x08, 0xDB, 0x73, 0x19, 0x2A, 0x5B, 0xBF, + 0xB0, 0xCB, 0xCF, 0x71, 0xE4, 0x6C, 0x3E, 0x21, + 0xAE, 0xE1, 0xC5, 0xE8, 0x60, 0xDC, 0x96, 0xE8, + 0xEB, 0x0B, 0x7B, 0x84, 0x26, 0xE6, 0xAB, 0xE9 + }, + { + 0x60, 0xFE, 0x3C, 0x45, 0x35, 0xE1, 0xB5, 0x9D, + 0x9A, 0x61, 0xEA, 0x85, 0x00, 0xBF, 0xAC, 0x41, + 0xA6, 0x9D, 0xFF, 0xB1, 0xCE, 0xAD, 0xD9, 0xAC, + 0xA3, 0x23, 0xE9, 0xA6, 0x25, 0xB6, 0x4D, 0xA5, + 0x76, 0x3B, 0xAD, 0x72, 0x26, 0xDA, 0x02, 0xB9, + 0xC8, 0xC4, 0xF1, 0xA5, 0xDE, 0x14, 0x0A, 0xC5, + 0xA6, 0xC1, 0x12, 0x4E, 0x4F, 0x71, 0x8C, 0xE0, + 0xB2, 0x8E, 0xA4, 0x73, 0x93, 0xAA, 0x66, 0x37 + }, + { + 0x4F, 0xE1, 0x81, 0xF5, 0x4A, 0xD6, 0x3A, 0x29, + 0x83, 0xFE, 0xAA, 0xF7, 0x7D, 0x1E, 0x72, 0x35, + 0xC2, 0xBE, 0xB1, 0x7F, 0xA3, 0x28, 0xB6, 0xD9, + 0x50, 0x5B, 0xDA, 0x32, 0x7D, 0xF1, 0x9F, 0xC3, + 0x7F, 0x02, 0xC4, 0xB6, 0xF0, 0x36, 0x8C, 0xE2, + 0x31, 0x47, 0x31, 0x3A, 0x8E, 0x57, 0x38, 0xB5, + 0xFA, 0x2A, 0x95, 0xB2, 0x9D, 0xE1, 0xC7, 0xF8, + 0x26, 0x4E, 0xB7, 0x7B, 0x69, 0xF5, 0x85, 0xCD + }, + { + 0xF2, 0x28, 0x77, 0x3C, 0xE3, 0xF3, 0xA4, 0x2B, + 0x5F, 0x14, 0x4D, 0x63, 0x23, 0x7A, 0x72, 0xD9, + 0x96, 0x93, 0xAD, 0xB8, 0x83, 0x7D, 0x0E, 0x11, + 0x2A, 0x8A, 0x0F, 0x8F, 0xFF, 0xF2, 0xC3, 0x62, + 0x85, 0x7A, 0xC4, 0x9C, 0x11, 0xEC, 0x74, 0x0D, + 0x15, 0x00, 0x74, 0x9D, 0xAC, 0x9B, 0x1F, 0x45, + 0x48, 0x10, 0x8B, 0xF3, 0x15, 0x57, 0x94, 0xDC, + 0xC9, 0xE4, 0x08, 0x28, 0x49, 0xE2, 0xB8, 0x5B + }, + { + 0x96, 0x24, 0x52, 0xA8, 0x45, 0x5C, 0xC5, 0x6C, + 0x85, 0x11, 0x31, 0x7E, 0x3B, 0x1F, 0x3B, 0x2C, + 0x37, 0xDF, 0x75, 0xF5, 0x88, 0xE9, 0x43, 0x25, + 0xFD, 0xD7, 0x70, 0x70, 0x35, 0x9C, 0xF6, 0x3A, + 0x9A, 0xE6, 0xE9, 0x30, 0x93, 0x6F, 0xDF, 0x8E, + 0x1E, 0x08, 0xFF, 0xCA, 0x44, 0x0C, 0xFB, 0x72, + 0xC2, 0x8F, 0x06, 0xD8, 0x9A, 0x21, 0x51, 0xD1, + 0xC4, 0x6C, 0xD5, 0xB2, 0x68, 0xEF, 0x85, 0x63 + }, + { + 0x43, 0xD4, 0x4B, 0xFA, 0x18, 0x76, 0x8C, 0x59, + 0x89, 0x6B, 0xF7, 0xED, 0x17, 0x65, 0xCB, 0x2D, + 0x14, 0xAF, 0x8C, 0x26, 0x02, 0x66, 0x03, 0x90, + 0x99, 0xB2, 0x5A, 0x60, 0x3E, 0x4D, 0xDC, 0x50, + 0x39, 0xD6, 0xEF, 0x3A, 0x91, 0x84, 0x7D, 0x10, + 0x88, 0xD4, 0x01, 0xC0, 0xC7, 0xE8, 0x47, 0x78, + 0x1A, 0x8A, 0x59, 0x0D, 0x33, 0xA3, 0xC6, 0xCB, + 0x4D, 0xF0, 0xFA, 0xB1, 0xC2, 0xF2, 0x23, 0x55 + }, + { + 0xDC, 0xFF, 0xA9, 0xD5, 0x8C, 0x2A, 0x4C, 0xA2, + 0xCD, 0xBB, 0x0C, 0x7A, 0xA4, 0xC4, 0xC1, 0xD4, + 0x51, 0x65, 0x19, 0x00, 0x89, 0xF4, 0xE9, 0x83, + 0xBB, 0x1C, 0x2C, 0xAB, 0x4A, 0xAE, 0xFF, 0x1F, + 0xA2, 0xB5, 0xEE, 0x51, 0x6F, 0xEC, 0xD7, 0x80, + 0x54, 0x02, 0x40, 0xBF, 0x37, 0xE5, 0x6C, 0x8B, + 0xCC, 0xA7, 0xFA, 0xB9, 0x80, 0xE1, 0xE6, 0x1C, + 0x94, 0x00, 0xD8, 0xA9, 0xA5, 0xB1, 0x4A, 0xC6 + }, + { + 0x6F, 0xBF, 0x31, 0xB4, 0x5A, 0xB0, 0xC0, 0xB8, + 0xDA, 0xD1, 0xC0, 0xF5, 0xF4, 0x06, 0x13, 0x79, + 0x91, 0x2D, 0xDE, 0x5A, 0xA9, 0x22, 0x09, 0x9A, + 0x03, 0x0B, 0x72, 0x5C, 0x73, 0x34, 0x6C, 0x52, + 0x42, 0x91, 0xAD, 0xEF, 0x89, 0xD2, 0xF6, 0xFD, + 0x8D, 0xFC, 0xDA, 0x6D, 0x07, 0xDA, 0xD8, 0x11, + 0xA9, 0x31, 0x45, 0x36, 0xC2, 0x91, 0x5E, 0xD4, + 0x5D, 0xA3, 0x49, 0x47, 0xE8, 0x3D, 0xE3, 0x4E + }, + { + 0xA0, 0xC6, 0x5B, 0xDD, 0xDE, 0x8A, 0xDE, 0xF5, + 0x72, 0x82, 0xB0, 0x4B, 0x11, 0xE7, 0xBC, 0x8A, + 0xAB, 0x10, 0x5B, 0x99, 0x23, 0x1B, 0x75, 0x0C, + 0x02, 0x1F, 0x4A, 0x73, 0x5C, 0xB1, 0xBC, 0xFA, + 0xB8, 0x75, 0x53, 0xBB, 0xA3, 0xAB, 0xB0, 0xC3, + 0xE6, 0x4A, 0x0B, 0x69, 0x55, 0x28, 0x51, 0x85, + 0xA0, 0xBD, 0x35, 0xFB, 0x8C, 0xFD, 0xE5, 0x57, + 0x32, 0x9B, 0xEB, 0xB1, 0xF6, 0x29, 0xEE, 0x93 + }, + { + 0xF9, 0x9D, 0x81, 0x55, 0x50, 0x55, 0x8E, 0x81, + 0xEC, 0xA2, 0xF9, 0x67, 0x18, 0xAE, 0xD1, 0x0D, + 0x86, 0xF3, 0xF1, 0xCF, 0xB6, 0x75, 0xCC, 0xE0, + 0x6B, 0x0E, 0xFF, 0x02, 0xF6, 0x17, 0xC5, 0xA4, + 0x2C, 0x5A, 0xA7, 0x60, 0x27, 0x0F, 0x26, 0x79, + 0xDA, 0x26, 0x77, 0xC5, 0xAE, 0xB9, 0x4F, 0x11, + 0x42, 0x27, 0x7F, 0x21, 0xC7, 0xF7, 0x9F, 0x3C, + 0x4F, 0x0C, 0xCE, 0x4E, 0xD8, 0xEE, 0x62, 0xB1 + }, + { + 0x95, 0x39, 0x1D, 0xA8, 0xFC, 0x7B, 0x91, 0x7A, + 0x20, 0x44, 0xB3, 0xD6, 0xF5, 0x37, 0x4E, 0x1C, + 0xA0, 0x72, 0xB4, 0x14, 0x54, 0xD5, 0x72, 0xC7, + 0x35, 0x6C, 0x05, 0xFD, 0x4B, 0xC1, 0xE0, 0xF4, + 0x0B, 0x8B, 0xB8, 0xB4, 0xA9, 0xF6, 0xBC, 0xE9, + 0xBE, 0x2C, 0x46, 0x23, 0xC3, 0x99, 0xB0, 0xDC, + 0xA0, 0xDA, 0xB0, 0x5C, 0xB7, 0x28, 0x1B, 0x71, + 0xA2, 0x1B, 0x0E, 0xBC, 0xD9, 0xE5, 0x56, 0x70 + }, + { + 0x04, 0xB9, 0xCD, 0x3D, 0x20, 0xD2, 0x21, 0xC0, + 0x9A, 0xC8, 0x69, 0x13, 0xD3, 0xDC, 0x63, 0x04, + 0x19, 0x89, 0xA9, 0xA1, 0xE6, 0x94, 0xF1, 0xE6, + 0x39, 0xA3, 0xBA, 0x7E, 0x45, 0x18, 0x40, 0xF7, + 0x50, 0xC2, 0xFC, 0x19, 0x1D, 0x56, 0xAD, 0x61, + 0xF2, 0xE7, 0x93, 0x6B, 0xC0, 0xAC, 0x8E, 0x09, + 0x4B, 0x60, 0xCA, 0xEE, 0xD8, 0x78, 0xC1, 0x87, + 0x99, 0x04, 0x54, 0x02, 0xD6, 0x1C, 0xEA, 0xF9 + }, + { + 0xEC, 0x0E, 0x0E, 0xF7, 0x07, 0xE4, 0xED, 0x6C, + 0x0C, 0x66, 0xF9, 0xE0, 0x89, 0xE4, 0x95, 0x4B, + 0x05, 0x80, 0x30, 0xD2, 0xDD, 0x86, 0x39, 0x8F, + 0xE8, 0x40, 0x59, 0x63, 0x1F, 0x9E, 0xE5, 0x91, + 0xD9, 0xD7, 0x73, 0x75, 0x35, 0x51, 0x49, 0x17, + 0x8C, 0x0C, 0xF8, 0xF8, 0xE7, 0xC4, 0x9E, 0xD2, + 0xA5, 0xE4, 0xF9, 0x54, 0x88, 0xA2, 0x24, 0x70, + 0x67, 0xC2, 0x08, 0x51, 0x0F, 0xAD, 0xC4, 0x4C + }, + { + 0x9A, 0x37, 0xCC, 0xE2, 0x73, 0xB7, 0x9C, 0x09, + 0x91, 0x36, 0x77, 0x51, 0x0E, 0xAF, 0x76, 0x88, + 0xE8, 0x9B, 0x33, 0x14, 0xD3, 0x53, 0x2F, 0xD2, + 0x76, 0x4C, 0x39, 0xDE, 0x02, 0x2A, 0x29, 0x45, + 0xB5, 0x71, 0x0D, 0x13, 0x51, 0x7A, 0xF8, 0xDD, + 0xC0, 0x31, 0x66, 0x24, 0xE7, 0x3B, 0xEC, 0x1C, + 0xE6, 0x7D, 0xF1, 0x52, 0x28, 0x30, 0x20, 0x36, + 0xF3, 0x30, 0xAB, 0x0C, 0xB4, 0xD2, 0x18, 0xDD + }, + { + 0x4C, 0xF9, 0xBB, 0x8F, 0xB3, 0xD4, 0xDE, 0x8B, + 0x38, 0xB2, 0xF2, 0x62, 0xD3, 0xC4, 0x0F, 0x46, + 0xDF, 0xE7, 0x47, 0xE8, 0xFC, 0x0A, 0x41, 0x4C, + 0x19, 0x3D, 0x9F, 0xCF, 0x75, 0x31, 0x06, 0xCE, + 0x47, 0xA1, 0x8F, 0x17, 0x2F, 0x12, 0xE8, 0xA2, + 0xF1, 0xC2, 0x67, 0x26, 0x54, 0x53, 0x58, 0xE5, + 0xEE, 0x28, 0xC9, 0xE2, 0x21, 0x3A, 0x87, 0x87, + 0xAA, 0xFB, 0xC5, 0x16, 0xD2, 0x34, 0x31, 0x52 + }, + { + 0x64, 0xE0, 0xC6, 0x3A, 0xF9, 0xC8, 0x08, 0xFD, + 0x89, 0x31, 0x37, 0x12, 0x98, 0x67, 0xFD, 0x91, + 0x93, 0x9D, 0x53, 0xF2, 0xAF, 0x04, 0xBE, 0x4F, + 0xA2, 0x68, 0x00, 0x61, 0x00, 0x06, 0x9B, 0x2D, + 0x69, 0xDA, 0xA5, 0xC5, 0xD8, 0xED, 0x7F, 0xDD, + 0xCB, 0x2A, 0x70, 0xEE, 0xEC, 0xDF, 0x2B, 0x10, + 0x5D, 0xD4, 0x6A, 0x1E, 0x3B, 0x73, 0x11, 0x72, + 0x8F, 0x63, 0x9A, 0xB4, 0x89, 0x32, 0x6B, 0xC9 + }, + { + 0x5E, 0x9C, 0x93, 0x15, 0x8D, 0x65, 0x9B, 0x2D, + 0xEF, 0x06, 0xB0, 0xC3, 0xC7, 0x56, 0x50, 0x45, + 0x54, 0x26, 0x62, 0xD6, 0xEE, 0xE8, 0xA9, 0x6A, + 0x89, 0xB7, 0x8A, 0xDE, 0x09, 0xFE, 0x8B, 0x3D, + 0xCC, 0x09, 0x6D, 0x4F, 0xE4, 0x88, 0x15, 0xD8, + 0x8D, 0x8F, 0x82, 0x62, 0x01, 0x56, 0x60, 0x2A, + 0xF5, 0x41, 0x95, 0x5E, 0x1F, 0x6C, 0xA3, 0x0D, + 0xCE, 0x14, 0xE2, 0x54, 0xC3, 0x26, 0xB8, 0x8F + }, + { + 0x77, 0x75, 0xDF, 0xF8, 0x89, 0x45, 0x8D, 0xD1, + 0x1A, 0xEF, 0x41, 0x72, 0x76, 0x85, 0x3E, 0x21, + 0x33, 0x5E, 0xB8, 0x8E, 0x4D, 0xEC, 0x9C, 0xFB, + 0x4E, 0x9E, 0xDB, 0x49, 0x82, 0x00, 0x88, 0x55, + 0x1A, 0x2C, 0xA6, 0x03, 0x39, 0xF1, 0x20, 0x66, + 0x10, 0x11, 0x69, 0xF0, 0xDF, 0xE8, 0x4B, 0x09, + 0x8F, 0xDD, 0xB1, 0x48, 0xD9, 0xDA, 0x6B, 0x3D, + 0x61, 0x3D, 0xF2, 0x63, 0x88, 0x9A, 0xD6, 0x4B + }, + { + 0xF0, 0xD2, 0x80, 0x5A, 0xFB, 0xB9, 0x1F, 0x74, + 0x39, 0x51, 0x35, 0x1A, 0x6D, 0x02, 0x4F, 0x93, + 0x53, 0xA2, 0x3C, 0x7C, 0xE1, 0xFC, 0x2B, 0x05, + 0x1B, 0x3A, 0x8B, 0x96, 0x8C, 0x23, 0x3F, 0x46, + 0xF5, 0x0F, 0x80, 0x6E, 0xCB, 0x15, 0x68, 0xFF, + 0xAA, 0x0B, 0x60, 0x66, 0x1E, 0x33, 0x4B, 0x21, + 0xDD, 0xE0, 0x4F, 0x8F, 0xA1, 0x55, 0xAC, 0x74, + 0x0E, 0xEB, 0x42, 0xE2, 0x0B, 0x60, 0xD7, 0x64 + }, + { + 0x86, 0xA2, 0xAF, 0x31, 0x6E, 0x7D, 0x77, 0x54, + 0x20, 0x1B, 0x94, 0x2E, 0x27, 0x53, 0x64, 0xAC, + 0x12, 0xEA, 0x89, 0x62, 0xAB, 0x5B, 0xD8, 0xD7, + 0xFB, 0x27, 0x6D, 0xC5, 0xFB, 0xFF, 0xC8, 0xF9, + 0xA2, 0x8C, 0xAE, 0x4E, 0x48, 0x67, 0xDF, 0x67, + 0x80, 0xD9, 0xB7, 0x25, 0x24, 0x16, 0x09, 0x27, + 0xC8, 0x55, 0xDA, 0x5B, 0x60, 0x78, 0xE0, 0xB5, + 0x54, 0xAA, 0x91, 0xE3, 0x1C, 0xB9, 0xCA, 0x1D + }, + { + 0x10, 0xBD, 0xF0, 0xCA, 0xA0, 0x80, 0x27, 0x05, + 0xE7, 0x06, 0x36, 0x9B, 0xAF, 0x8A, 0x3F, 0x79, + 0xD7, 0x2C, 0x0A, 0x03, 0xA8, 0x06, 0x75, 0xA7, + 0xBB, 0xB0, 0x0B, 0xE3, 0xA4, 0x5E, 0x51, 0x64, + 0x24, 0xD1, 0xEE, 0x88, 0xEF, 0xB5, 0x6F, 0x6D, + 0x57, 0x77, 0x54, 0x5A, 0xE6, 0xE2, 0x77, 0x65, + 0xC3, 0xA8, 0xF5, 0xE4, 0x93, 0xFC, 0x30, 0x89, + 0x15, 0x63, 0x89, 0x33, 0xA1, 0xDF, 0xEE, 0x55 + }, + { + 0xB0, 0x17, 0x81, 0x09, 0x2B, 0x17, 0x48, 0x45, + 0x9E, 0x2E, 0x4E, 0xC1, 0x78, 0x69, 0x66, 0x27, + 0xBF, 0x4E, 0xBA, 0xFE, 0xBB, 0xA7, 0x74, 0xEC, + 0xF0, 0x18, 0xB7, 0x9A, 0x68, 0xAE, 0xB8, 0x49, + 0x17, 0xBF, 0x0B, 0x84, 0xBB, 0x79, 0xD1, 0x7B, + 0x74, 0x31, 0x51, 0x14, 0x4C, 0xD6, 0x6B, 0x7B, + 0x33, 0xA4, 0xB9, 0xE5, 0x2C, 0x76, 0xC4, 0xE1, + 0x12, 0x05, 0x0F, 0xF5, 0x38, 0x5B, 0x7F, 0x0B + }, + { + 0xC6, 0xDB, 0xC6, 0x1D, 0xEC, 0x6E, 0xAE, 0xAC, + 0x81, 0xE3, 0xD5, 0xF7, 0x55, 0x20, 0x3C, 0x8E, + 0x22, 0x05, 0x51, 0x53, 0x4A, 0x0B, 0x2F, 0xD1, + 0x05, 0xA9, 0x18, 0x89, 0x94, 0x5A, 0x63, 0x85, + 0x50, 0x20, 0x4F, 0x44, 0x09, 0x3D, 0xD9, 0x98, + 0xC0, 0x76, 0x20, 0x5D, 0xFF, 0xAD, 0x70, 0x3A, + 0x0E, 0x5C, 0xD3, 0xC7, 0xF4, 0x38, 0xA7, 0xE6, + 0x34, 0xCD, 0x59, 0xFE, 0xDE, 0xDB, 0x53, 0x9E + }, + { + 0xEB, 0xA5, 0x1A, 0xCF, 0xFB, 0x4C, 0xEA, 0x31, + 0xDB, 0x4B, 0x8D, 0x87, 0xE9, 0xBF, 0x7D, 0xD4, + 0x8F, 0xE9, 0x7B, 0x02, 0x53, 0xAE, 0x67, 0xAA, + 0x58, 0x0F, 0x9A, 0xC4, 0xA9, 0xD9, 0x41, 0xF2, + 0xBE, 0xA5, 0x18, 0xEE, 0x28, 0x68, 0x18, 0xCC, + 0x9F, 0x63, 0x3F, 0x2A, 0x3B, 0x9F, 0xB6, 0x8E, + 0x59, 0x4B, 0x48, 0xCD, 0xD6, 0xD5, 0x15, 0xBF, + 0x1D, 0x52, 0xBA, 0x6C, 0x85, 0xA2, 0x03, 0xA7 + }, + { + 0x86, 0x22, 0x1F, 0x3A, 0xDA, 0x52, 0x03, 0x7B, + 0x72, 0x22, 0x4F, 0x10, 0x5D, 0x79, 0x99, 0x23, + 0x1C, 0x5E, 0x55, 0x34, 0xD0, 0x3D, 0xA9, 0xD9, + 0xC0, 0xA1, 0x2A, 0xCB, 0x68, 0x46, 0x0C, 0xD3, + 0x75, 0xDA, 0xF8, 0xE2, 0x43, 0x86, 0x28, 0x6F, + 0x96, 0x68, 0xF7, 0x23, 0x26, 0xDB, 0xF9, 0x9B, + 0xA0, 0x94, 0x39, 0x24, 0x37, 0xD3, 0x98, 0xE9, + 0x5B, 0xB8, 0x16, 0x1D, 0x71, 0x7F, 0x89, 0x91 + }, + { + 0x55, 0x95, 0xE0, 0x5C, 0x13, 0xA7, 0xEC, 0x4D, + 0xC8, 0xF4, 0x1F, 0xB7, 0x0C, 0xB5, 0x0A, 0x71, + 0xBC, 0xE1, 0x7C, 0x02, 0x4F, 0xF6, 0xDE, 0x7A, + 0xF6, 0x18, 0xD0, 0xCC, 0x4E, 0x9C, 0x32, 0xD9, + 0x57, 0x0D, 0x6D, 0x3E, 0xA4, 0x5B, 0x86, 0x52, + 0x54, 0x91, 0x03, 0x0C, 0x0D, 0x8F, 0x2B, 0x18, + 0x36, 0xD5, 0x77, 0x8C, 0x1C, 0xE7, 0x35, 0xC1, + 0x77, 0x07, 0xDF, 0x36, 0x4D, 0x05, 0x43, 0x47 + }, + { + 0xCE, 0x0F, 0x4F, 0x6A, 0xCA, 0x89, 0x59, 0x0A, + 0x37, 0xFE, 0x03, 0x4D, 0xD7, 0x4D, 0xD5, 0xFA, + 0x65, 0xEB, 0x1C, 0xBD, 0x0A, 0x41, 0x50, 0x8A, + 0xAD, 0xDC, 0x09, 0x35, 0x1A, 0x3C, 0xEA, 0x6D, + 0x18, 0xCB, 0x21, 0x89, 0xC5, 0x4B, 0x70, 0x0C, + 0x00, 0x9F, 0x4C, 0xBF, 0x05, 0x21, 0xC7, 0xEA, + 0x01, 0xBE, 0x61, 0xC5, 0xAE, 0x09, 0xCB, 0x54, + 0xF2, 0x7B, 0xC1, 0xB4, 0x4D, 0x65, 0x8C, 0x82 + }, + { + 0x7E, 0xE8, 0x0B, 0x06, 0xA2, 0x15, 0xA3, 0xBC, + 0xA9, 0x70, 0xC7, 0x7C, 0xDA, 0x87, 0x61, 0x82, + 0x2B, 0xC1, 0x03, 0xD4, 0x4F, 0xA4, 0xB3, 0x3F, + 0x4D, 0x07, 0xDC, 0xB9, 0x97, 0xE3, 0x6D, 0x55, + 0x29, 0x8B, 0xCE, 0xAE, 0x12, 0x24, 0x1B, 0x3F, + 0xA0, 0x7F, 0xA6, 0x3B, 0xE5, 0x57, 0x60, 0x68, + 0xDA, 0x38, 0x7B, 0x8D, 0x58, 0x59, 0xAE, 0xAB, + 0x70, 0x13, 0x69, 0x84, 0x8B, 0x17, 0x6D, 0x42 + }, + { + 0x94, 0x0A, 0x84, 0xB6, 0xA8, 0x4D, 0x10, 0x9A, + 0xAB, 0x20, 0x8C, 0x02, 0x4C, 0x6C, 0xE9, 0x64, + 0x76, 0x76, 0xBA, 0x0A, 0xAA, 0x11, 0xF8, 0x6D, + 0xBB, 0x70, 0x18, 0xF9, 0xFD, 0x22, 0x20, 0xA6, + 0xD9, 0x01, 0xA9, 0x02, 0x7F, 0x9A, 0xBC, 0xF9, + 0x35, 0x37, 0x27, 0x27, 0xCB, 0xF0, 0x9E, 0xBD, + 0x61, 0xA2, 0xA2, 0xEE, 0xB8, 0x76, 0x53, 0xE8, + 0xEC, 0xAD, 0x1B, 0xAB, 0x85, 0xDC, 0x83, 0x27 + }, + { + 0x20, 0x20, 0xB7, 0x82, 0x64, 0xA8, 0x2D, 0x9F, + 0x41, 0x51, 0x14, 0x1A, 0xDB, 0xA8, 0xD4, 0x4B, + 0xF2, 0x0C, 0x5E, 0xC0, 0x62, 0xEE, 0xE9, 0xB5, + 0x95, 0xA1, 0x1F, 0x9E, 0x84, 0x90, 0x1B, 0xF1, + 0x48, 0xF2, 0x98, 0xE0, 0xC9, 0xF8, 0x77, 0x7D, + 0xCD, 0xBC, 0x7C, 0xC4, 0x67, 0x0A, 0xAC, 0x35, + 0x6C, 0xC2, 0xAD, 0x8C, 0xCB, 0x16, 0x29, 0xF1, + 0x6F, 0x6A, 0x76, 0xBC, 0xEF, 0xBE, 0xE7, 0x60 + }, + { + 0xD1, 0xB8, 0x97, 0xB0, 0xE0, 0x75, 0xBA, 0x68, + 0xAB, 0x57, 0x2A, 0xDF, 0x9D, 0x9C, 0x43, 0x66, + 0x63, 0xE4, 0x3E, 0xB3, 0xD8, 0xE6, 0x2D, 0x92, + 0xFC, 0x49, 0xC9, 0xBE, 0x21, 0x4E, 0x6F, 0x27, + 0x87, 0x3F, 0xE2, 0x15, 0xA6, 0x51, 0x70, 0xE6, + 0xBE, 0xA9, 0x02, 0x40, 0x8A, 0x25, 0xB4, 0x95, + 0x06, 0xF4, 0x7B, 0xAB, 0xD0, 0x7C, 0xEC, 0xF7, + 0x11, 0x3E, 0xC1, 0x0C, 0x5D, 0xD3, 0x12, 0x52 + }, + { + 0xB1, 0x4D, 0x0C, 0x62, 0xAB, 0xFA, 0x46, 0x9A, + 0x35, 0x71, 0x77, 0xE5, 0x94, 0xC1, 0x0C, 0x19, + 0x42, 0x43, 0xED, 0x20, 0x25, 0xAB, 0x8A, 0xA5, + 0xAD, 0x2F, 0xA4, 0x1A, 0xD3, 0x18, 0xE0, 0xFF, + 0x48, 0xCD, 0x5E, 0x60, 0xBE, 0xC0, 0x7B, 0x13, + 0x63, 0x4A, 0x71, 0x1D, 0x23, 0x26, 0xE4, 0x88, + 0xA9, 0x85, 0xF3, 0x1E, 0x31, 0x15, 0x33, 0x99, + 0xE7, 0x30, 0x88, 0xEF, 0xC8, 0x6A, 0x5C, 0x55 + }, + { + 0x41, 0x69, 0xC5, 0xCC, 0x80, 0x8D, 0x26, 0x97, + 0xDC, 0x2A, 0x82, 0x43, 0x0D, 0xC2, 0x3E, 0x3C, + 0xD3, 0x56, 0xDC, 0x70, 0xA9, 0x45, 0x66, 0x81, + 0x05, 0x02, 0xB8, 0xD6, 0x55, 0xB3, 0x9A, 0xBF, + 0x9E, 0x7F, 0x90, 0x2F, 0xE7, 0x17, 0xE0, 0x38, + 0x92, 0x19, 0x85, 0x9E, 0x19, 0x45, 0xDF, 0x1A, + 0xF6, 0xAD, 0xA4, 0x2E, 0x4C, 0xCD, 0xA5, 0x5A, + 0x19, 0x7B, 0x71, 0x00, 0xA3, 0x0C, 0x30, 0xA1 + }, + { + 0x25, 0x8A, 0x4E, 0xDB, 0x11, 0x3D, 0x66, 0xC8, + 0x39, 0xC8, 0xB1, 0xC9, 0x1F, 0x15, 0xF3, 0x5A, + 0xDE, 0x60, 0x9F, 0x11, 0xCD, 0x7F, 0x86, 0x81, + 0xA4, 0x04, 0x5B, 0x9F, 0xEF, 0x7B, 0x0B, 0x24, + 0xC8, 0x2C, 0xDA, 0x06, 0xA5, 0xF2, 0x06, 0x7B, + 0x36, 0x88, 0x25, 0xE3, 0x91, 0x4E, 0x53, 0xD6, + 0x94, 0x8E, 0xDE, 0x92, 0xEF, 0xD6, 0xE8, 0x38, + 0x7F, 0xA2, 0xE5, 0x37, 0x23, 0x9B, 0x5B, 0xEE + }, + { + 0x79, 0xD2, 0xD8, 0x69, 0x6D, 0x30, 0xF3, 0x0F, + 0xB3, 0x46, 0x57, 0x76, 0x11, 0x71, 0xA1, 0x1E, + 0x6C, 0x3F, 0x1E, 0x64, 0xCB, 0xE7, 0xBE, 0xBE, + 0xE1, 0x59, 0xCB, 0x95, 0xBF, 0xAF, 0x81, 0x2B, + 0x4F, 0x41, 0x1E, 0x2F, 0x26, 0xD9, 0xC4, 0x21, + 0xDC, 0x2C, 0x28, 0x4A, 0x33, 0x42, 0xD8, 0x23, + 0xEC, 0x29, 0x38, 0x49, 0xE4, 0x2D, 0x1E, 0x46, + 0xB0, 0xA4, 0xAC, 0x1E, 0x3C, 0x86, 0xAB, 0xAA + }, + { + 0x8B, 0x94, 0x36, 0x01, 0x0D, 0xC5, 0xDE, 0xE9, + 0x92, 0xAE, 0x38, 0xAE, 0xA9, 0x7F, 0x2C, 0xD6, + 0x3B, 0x94, 0x6D, 0x94, 0xFE, 0xDD, 0x2E, 0xC9, + 0x67, 0x1D, 0xCD, 0xE3, 0xBD, 0x4C, 0xE9, 0x56, + 0x4D, 0x55, 0x5C, 0x66, 0xC1, 0x5B, 0xB2, 0xB9, + 0x00, 0xDF, 0x72, 0xED, 0xB6, 0xB8, 0x91, 0xEB, + 0xCA, 0xDF, 0xEF, 0xF6, 0x3C, 0x9E, 0xA4, 0x03, + 0x6A, 0x99, 0x8B, 0xE7, 0x97, 0x39, 0x81, 0xE7 + }, + { + 0xC8, 0xF6, 0x8E, 0x69, 0x6E, 0xD2, 0x82, 0x42, + 0xBF, 0x99, 0x7F, 0x5B, 0x3B, 0x34, 0x95, 0x95, + 0x08, 0xE4, 0x2D, 0x61, 0x38, 0x10, 0xF1, 0xE2, + 0xA4, 0x35, 0xC9, 0x6E, 0xD2, 0xFF, 0x56, 0x0C, + 0x70, 0x22, 0xF3, 0x61, 0xA9, 0x23, 0x4B, 0x98, + 0x37, 0xFE, 0xEE, 0x90, 0xBF, 0x47, 0x92, 0x2E, + 0xE0, 0xFD, 0x5F, 0x8D, 0xDF, 0x82, 0x37, 0x18, + 0xD8, 0x6D, 0x1E, 0x16, 0xC6, 0x09, 0x00, 0x71 + }, + { + 0xB0, 0x2D, 0x3E, 0xEE, 0x48, 0x60, 0xD5, 0x86, + 0x8B, 0x2C, 0x39, 0xCE, 0x39, 0xBF, 0xE8, 0x10, + 0x11, 0x29, 0x05, 0x64, 0xDD, 0x67, 0x8C, 0x85, + 0xE8, 0x78, 0x3F, 0x29, 0x30, 0x2D, 0xFC, 0x13, + 0x99, 0xBA, 0x95, 0xB6, 0xB5, 0x3C, 0xD9, 0xEB, + 0xBF, 0x40, 0x0C, 0xCA, 0x1D, 0xB0, 0xAB, 0x67, + 0xE1, 0x9A, 0x32, 0x5F, 0x2D, 0x11, 0x58, 0x12, + 0xD2, 0x5D, 0x00, 0x97, 0x8A, 0xD1, 0xBC, 0xA4 + }, + { + 0x76, 0x93, 0xEA, 0x73, 0xAF, 0x3A, 0xC4, 0xDA, + 0xD2, 0x1C, 0xA0, 0xD8, 0xDA, 0x85, 0xB3, 0x11, + 0x8A, 0x7D, 0x1C, 0x60, 0x24, 0xCF, 0xAF, 0x55, + 0x76, 0x99, 0x86, 0x82, 0x17, 0xBC, 0x0C, 0x2F, + 0x44, 0xA1, 0x99, 0xBC, 0x6C, 0x0E, 0xDD, 0x51, + 0x97, 0x98, 0xBA, 0x05, 0xBD, 0x5B, 0x1B, 0x44, + 0x84, 0x34, 0x6A, 0x47, 0xC2, 0xCA, 0xDF, 0x6B, + 0xF3, 0x0B, 0x78, 0x5C, 0xC8, 0x8B, 0x2B, 0xAF + }, + { + 0xA0, 0xE5, 0xC1, 0xC0, 0x03, 0x1C, 0x02, 0xE4, + 0x8B, 0x7F, 0x09, 0xA5, 0xE8, 0x96, 0xEE, 0x9A, + 0xEF, 0x2F, 0x17, 0xFC, 0x9E, 0x18, 0xE9, 0x97, + 0xD7, 0xF6, 0xCA, 0xC7, 0xAE, 0x31, 0x64, 0x22, + 0xC2, 0xB1, 0xE7, 0x79, 0x84, 0xE5, 0xF3, 0xA7, + 0x3C, 0xB4, 0x5D, 0xEE, 0xD5, 0xD3, 0xF8, 0x46, + 0x00, 0x10, 0x5E, 0x6E, 0xE3, 0x8F, 0x2D, 0x09, + 0x0C, 0x7D, 0x04, 0x42, 0xEA, 0x34, 0xC4, 0x6D + }, + { + 0x41, 0xDA, 0xA6, 0xAD, 0xCF, 0xDB, 0x69, 0xF1, + 0x44, 0x0C, 0x37, 0xB5, 0x96, 0x44, 0x01, 0x65, + 0xC1, 0x5A, 0xDA, 0x59, 0x68, 0x13, 0xE2, 0xE2, + 0x2F, 0x06, 0x0F, 0xCD, 0x55, 0x1F, 0x24, 0xDE, + 0xE8, 0xE0, 0x4B, 0xA6, 0x89, 0x03, 0x87, 0x88, + 0x6C, 0xEE, 0xC4, 0xA7, 0xA0, 0xD7, 0xFC, 0x6B, + 0x44, 0x50, 0x63, 0x92, 0xEC, 0x38, 0x22, 0xC0, + 0xD8, 0xC1, 0xAC, 0xFC, 0x7D, 0x5A, 0xEB, 0xE8 + }, + { + 0x14, 0xD4, 0xD4, 0x0D, 0x59, 0x84, 0xD8, 0x4C, + 0x5C, 0xF7, 0x52, 0x3B, 0x77, 0x98, 0xB2, 0x54, + 0xE2, 0x75, 0xA3, 0xA8, 0xCC, 0x0A, 0x1B, 0xD0, + 0x6E, 0xBC, 0x0B, 0xEE, 0x72, 0x68, 0x56, 0xAC, + 0xC3, 0xCB, 0xF5, 0x16, 0xFF, 0x66, 0x7C, 0xDA, + 0x20, 0x58, 0xAD, 0x5C, 0x34, 0x12, 0x25, 0x44, + 0x60, 0xA8, 0x2C, 0x92, 0x18, 0x70, 0x41, 0x36, + 0x3C, 0xC7, 0x7A, 0x4D, 0xC2, 0x15, 0xE4, 0x87 + }, + { + 0xD0, 0xE7, 0xA1, 0xE2, 0xB9, 0xA4, 0x47, 0xFE, + 0xE8, 0x3E, 0x22, 0x77, 0xE9, 0xFF, 0x80, 0x10, + 0xC2, 0xF3, 0x75, 0xAE, 0x12, 0xFA, 0x7A, 0xAA, + 0x8C, 0xA5, 0xA6, 0x31, 0x78, 0x68, 0xA2, 0x6A, + 0x36, 0x7A, 0x0B, 0x69, 0xFB, 0xC1, 0xCF, 0x32, + 0xA5, 0x5D, 0x34, 0xEB, 0x37, 0x06, 0x63, 0x01, + 0x6F, 0x3D, 0x21, 0x10, 0x23, 0x0E, 0xBA, 0x75, + 0x40, 0x28, 0xA5, 0x6F, 0x54, 0xAC, 0xF5, 0x7C + }, + { + 0xE7, 0x71, 0xAA, 0x8D, 0xB5, 0xA3, 0xE0, 0x43, + 0xE8, 0x17, 0x8F, 0x39, 0xA0, 0x85, 0x7B, 0xA0, + 0x4A, 0x3F, 0x18, 0xE4, 0xAA, 0x05, 0x74, 0x3C, + 0xF8, 0xD2, 0x22, 0xB0, 0xB0, 0x95, 0x82, 0x53, + 0x50, 0xBA, 0x42, 0x2F, 0x63, 0x38, 0x2A, 0x23, + 0xD9, 0x2E, 0x41, 0x49, 0x07, 0x4E, 0x81, 0x6A, + 0x36, 0xC1, 0xCD, 0x28, 0x28, 0x4D, 0x14, 0x62, + 0x67, 0x94, 0x0B, 0x31, 0xF8, 0x81, 0x8E, 0xA2 + }, + { + 0xFE, 0xB4, 0xFD, 0x6F, 0x9E, 0x87, 0xA5, 0x6B, + 0xEF, 0x39, 0x8B, 0x32, 0x84, 0xD2, 0xBD, 0xA5, + 0xB5, 0xB0, 0xE1, 0x66, 0x58, 0x3A, 0x66, 0xB6, + 0x1E, 0x53, 0x84, 0x57, 0xFF, 0x05, 0x84, 0x87, + 0x2C, 0x21, 0xA3, 0x29, 0x62, 0xB9, 0x92, 0x8F, + 0xFA, 0xB5, 0x8D, 0xE4, 0xAF, 0x2E, 0xDD, 0x4E, + 0x15, 0xD8, 0xB3, 0x55, 0x70, 0x52, 0x32, 0x07, + 0xFF, 0x4E, 0x2A, 0x5A, 0xA7, 0x75, 0x4C, 0xAA + }, + { + 0x46, 0x2F, 0x17, 0xBF, 0x00, 0x5F, 0xB1, 0xC1, + 0xB9, 0xE6, 0x71, 0x77, 0x9F, 0x66, 0x52, 0x09, + 0xEC, 0x28, 0x73, 0xE3, 0xE4, 0x11, 0xF9, 0x8D, + 0xAB, 0xF2, 0x40, 0xA1, 0xD5, 0xEC, 0x3F, 0x95, + 0xCE, 0x67, 0x96, 0xB6, 0xFC, 0x23, 0xFE, 0x17, + 0x19, 0x03, 0xB5, 0x02, 0x02, 0x34, 0x67, 0xDE, + 0xC7, 0x27, 0x3F, 0xF7, 0x48, 0x79, 0xB9, 0x29, + 0x67, 0xA2, 0xA4, 0x3A, 0x5A, 0x18, 0x3D, 0x33 + }, + { + 0xD3, 0x33, 0x81, 0x93, 0xB6, 0x45, 0x53, 0xDB, + 0xD3, 0x8D, 0x14, 0x4B, 0xEA, 0x71, 0xC5, 0x91, + 0x5B, 0xB1, 0x10, 0xE2, 0xD8, 0x81, 0x80, 0xDB, + 0xC5, 0xDB, 0x36, 0x4F, 0xD6, 0x17, 0x1D, 0xF3, + 0x17, 0xFC, 0x72, 0x68, 0x83, 0x1B, 0x5A, 0xEF, + 0x75, 0xE4, 0x34, 0x2B, 0x2F, 0xAD, 0x87, 0x97, + 0xBA, 0x39, 0xED, 0xDC, 0xEF, 0x80, 0xE6, 0xEC, + 0x08, 0x15, 0x93, 0x50, 0xB1, 0xAD, 0x69, 0x6D + }, + { + 0xE1, 0x59, 0x0D, 0x58, 0x5A, 0x3D, 0x39, 0xF7, + 0xCB, 0x59, 0x9A, 0xBD, 0x47, 0x90, 0x70, 0x96, + 0x64, 0x09, 0xA6, 0x84, 0x6D, 0x43, 0x77, 0xAC, + 0xF4, 0x47, 0x1D, 0x06, 0x5D, 0x5D, 0xB9, 0x41, + 0x29, 0xCC, 0x9B, 0xE9, 0x25, 0x73, 0xB0, 0x5E, + 0xD2, 0x26, 0xBE, 0x1E, 0x9B, 0x7C, 0xB0, 0xCA, + 0xBE, 0x87, 0x91, 0x85, 0x89, 0xF8, 0x0D, 0xAD, + 0xD4, 0xEF, 0x5E, 0xF2, 0x5A, 0x93, 0xD2, 0x8E + }, + { + 0xF8, 0xF3, 0x72, 0x6A, 0xC5, 0xA2, 0x6C, 0xC8, + 0x01, 0x32, 0x49, 0x3A, 0x6F, 0xED, 0xCB, 0x0E, + 0x60, 0x76, 0x0C, 0x09, 0xCF, 0xC8, 0x4C, 0xAD, + 0x17, 0x81, 0x75, 0x98, 0x68, 0x19, 0x66, 0x5E, + 0x76, 0x84, 0x2D, 0x7B, 0x9F, 0xED, 0xF7, 0x6D, + 0xDD, 0xEB, 0xF5, 0xD3, 0xF5, 0x6F, 0xAA, 0xAD, + 0x44, 0x77, 0x58, 0x7A, 0xF2, 0x16, 0x06, 0xD3, + 0x96, 0xAE, 0x57, 0x0D, 0x8E, 0x71, 0x9A, 0xF2 + }, + { + 0x30, 0x18, 0x60, 0x55, 0xC0, 0x79, 0x49, 0x94, + 0x81, 0x83, 0xC8, 0x50, 0xE9, 0xA7, 0x56, 0xCC, + 0x09, 0x93, 0x7E, 0x24, 0x7D, 0x9D, 0x92, 0x8E, + 0x86, 0x9E, 0x20, 0xBA, 0xFC, 0x3C, 0xD9, 0x72, + 0x17, 0x19, 0xD3, 0x4E, 0x04, 0xA0, 0x89, 0x9B, + 0x92, 0xC7, 0x36, 0x08, 0x45, 0x50, 0x18, 0x68, + 0x86, 0xEF, 0xBA, 0x2E, 0x79, 0x0D, 0x8B, 0xE6, + 0xEB, 0xF0, 0x40, 0xB2, 0x09, 0xC4, 0x39, 0xA4 + }, + { + 0xF3, 0xC4, 0x27, 0x6C, 0xB8, 0x63, 0x63, 0x77, + 0x12, 0xC2, 0x41, 0xC4, 0x44, 0xC5, 0xCC, 0x1E, + 0x35, 0x54, 0xE0, 0xFD, 0xDB, 0x17, 0x4D, 0x03, + 0x58, 0x19, 0xDD, 0x83, 0xEB, 0x70, 0x0B, 0x4C, + 0xE8, 0x8D, 0xF3, 0xAB, 0x38, 0x41, 0xBA, 0x02, + 0x08, 0x5E, 0x1A, 0x99, 0xB4, 0xE1, 0x73, 0x10, + 0xC5, 0x34, 0x10, 0x75, 0xC0, 0x45, 0x8B, 0xA3, + 0x76, 0xC9, 0x5A, 0x68, 0x18, 0xFB, 0xB3, 0xE2 + }, + { + 0x0A, 0xA0, 0x07, 0xC4, 0xDD, 0x9D, 0x58, 0x32, + 0x39, 0x30, 0x40, 0xA1, 0x58, 0x3C, 0x93, 0x0B, + 0xCA, 0x7D, 0xC5, 0xE7, 0x7E, 0xA5, 0x3A, 0xDD, + 0x7E, 0x2B, 0x3F, 0x7C, 0x8E, 0x23, 0x13, 0x68, + 0x04, 0x35, 0x20, 0xD4, 0xA3, 0xEF, 0x53, 0xC9, + 0x69, 0xB6, 0xBB, 0xFD, 0x02, 0x59, 0x46, 0xF6, + 0x32, 0xBD, 0x7F, 0x76, 0x5D, 0x53, 0xC2, 0x10, + 0x03, 0xB8, 0xF9, 0x83, 0xF7, 0x5E, 0x2A, 0x6A + }, + { + 0x08, 0xE9, 0x46, 0x47, 0x20, 0x53, 0x3B, 0x23, + 0xA0, 0x4E, 0xC2, 0x4F, 0x7A, 0xE8, 0xC1, 0x03, + 0x14, 0x5F, 0x76, 0x53, 0x87, 0xD7, 0x38, 0x77, + 0x7D, 0x3D, 0x34, 0x34, 0x77, 0xFD, 0x1C, 0x58, + 0xDB, 0x05, 0x21, 0x42, 0xCA, 0xB7, 0x54, 0xEA, + 0x67, 0x43, 0x78, 0xE1, 0x87, 0x66, 0xC5, 0x35, + 0x42, 0xF7, 0x19, 0x70, 0x17, 0x1C, 0xC4, 0xF8, + 0x16, 0x94, 0x24, 0x6B, 0x71, 0x7D, 0x75, 0x64 + }, + { + 0xD3, 0x7F, 0xF7, 0xAD, 0x29, 0x79, 0x93, 0xE7, + 0xEC, 0x21, 0xE0, 0xF1, 0xB4, 0xB5, 0xAE, 0x71, + 0x9C, 0xDC, 0x83, 0xC5, 0xDB, 0x68, 0x75, 0x27, + 0xF2, 0x75, 0x16, 0xCB, 0xFF, 0xA8, 0x22, 0x88, + 0x8A, 0x68, 0x10, 0xEE, 0x5C, 0x1C, 0xA7, 0xBF, + 0xE3, 0x32, 0x11, 0x19, 0xBE, 0x1A, 0xB7, 0xBF, + 0xA0, 0xA5, 0x02, 0x67, 0x1C, 0x83, 0x29, 0x49, + 0x4D, 0xF7, 0xAD, 0x6F, 0x52, 0x2D, 0x44, 0x0F + }, + { + 0xDD, 0x90, 0x42, 0xF6, 0xE4, 0x64, 0xDC, 0xF8, + 0x6B, 0x12, 0x62, 0xF6, 0xAC, 0xCF, 0xAF, 0xBD, + 0x8C, 0xFD, 0x90, 0x2E, 0xD3, 0xED, 0x89, 0xAB, + 0xF7, 0x8F, 0xFA, 0x48, 0x2D, 0xBD, 0xEE, 0xB6, + 0x96, 0x98, 0x42, 0x39, 0x4C, 0x9A, 0x11, 0x68, + 0xAE, 0x3D, 0x48, 0x1A, 0x01, 0x78, 0x42, 0xF6, + 0x60, 0x00, 0x2D, 0x42, 0x44, 0x7C, 0x6B, 0x22, + 0xF7, 0xB7, 0x2F, 0x21, 0xAA, 0xE0, 0x21, 0xC9 + }, + { + 0xBD, 0x96, 0x5B, 0xF3, 0x1E, 0x87, 0xD7, 0x03, + 0x27, 0x53, 0x6F, 0x2A, 0x34, 0x1C, 0xEB, 0xC4, + 0x76, 0x8E, 0xCA, 0x27, 0x5F, 0xA0, 0x5E, 0xF9, + 0x8F, 0x7F, 0x1B, 0x71, 0xA0, 0x35, 0x12, 0x98, + 0xDE, 0x00, 0x6F, 0xBA, 0x73, 0xFE, 0x67, 0x33, + 0xED, 0x01, 0xD7, 0x58, 0x01, 0xB4, 0xA9, 0x28, + 0xE5, 0x42, 0x31, 0xB3, 0x8E, 0x38, 0xC5, 0x62, + 0xB2, 0xE3, 0x3E, 0xA1, 0x28, 0x49, 0x92, 0xFA + }, + { + 0x65, 0x67, 0x6D, 0x80, 0x06, 0x17, 0x97, 0x2F, + 0xBD, 0x87, 0xE4, 0xB9, 0x51, 0x4E, 0x1C, 0x67, + 0x40, 0x2B, 0x7A, 0x33, 0x10, 0x96, 0xD3, 0xBF, + 0xAC, 0x22, 0xF1, 0xAB, 0xB9, 0x53, 0x74, 0xAB, + 0xC9, 0x42, 0xF1, 0x6E, 0x9A, 0xB0, 0xEA, 0xD3, + 0x3B, 0x87, 0xC9, 0x19, 0x68, 0xA6, 0xE5, 0x09, + 0xE1, 0x19, 0xFF, 0x07, 0x78, 0x7B, 0x3E, 0xF4, + 0x83, 0xE1, 0xDC, 0xDC, 0xCF, 0x6E, 0x30, 0x22 + }, + { + 0x93, 0x9F, 0xA1, 0x89, 0x69, 0x9C, 0x5D, 0x2C, + 0x81, 0xDD, 0xD1, 0xFF, 0xC1, 0xFA, 0x20, 0x7C, + 0x97, 0x0B, 0x6A, 0x36, 0x85, 0xBB, 0x29, 0xCE, + 0x1D, 0x3E, 0x99, 0xD4, 0x2F, 0x2F, 0x74, 0x42, + 0xDA, 0x53, 0xE9, 0x5A, 0x72, 0x90, 0x73, 0x14, + 0xF4, 0x58, 0x83, 0x99, 0xA3, 0xFF, 0x5B, 0x0A, + 0x92, 0xBE, 0xB3, 0xF6, 0xBE, 0x26, 0x94, 0xF9, + 0xF8, 0x6E, 0xCF, 0x29, 0x52, 0xD5, 0xB4, 0x1C + }, + { + 0xC5, 0x16, 0x54, 0x17, 0x01, 0x86, 0x3F, 0x91, + 0x00, 0x5F, 0x31, 0x41, 0x08, 0xCE, 0xEC, 0xE3, + 0xC6, 0x43, 0xE0, 0x4F, 0xC8, 0xC4, 0x2F, 0xD2, + 0xFF, 0x55, 0x62, 0x20, 0xE6, 0x16, 0xAA, 0xA6, + 0xA4, 0x8A, 0xEB, 0x97, 0xA8, 0x4B, 0xAD, 0x74, + 0x78, 0x2E, 0x8D, 0xFF, 0x96, 0xA1, 0xA2, 0xFA, + 0x94, 0x93, 0x39, 0xD7, 0x22, 0xED, 0xCA, 0xA3, + 0x2B, 0x57, 0x06, 0x70, 0x41, 0xDF, 0x88, 0xCC + }, + { + 0x98, 0x7F, 0xD6, 0xE0, 0xD6, 0x85, 0x7C, 0x55, + 0x3E, 0xAE, 0xBB, 0x3D, 0x34, 0x97, 0x0A, 0x2C, + 0x2F, 0x6E, 0x89, 0xA3, 0x54, 0x8F, 0x49, 0x25, + 0x21, 0x72, 0x2B, 0x80, 0xA1, 0xC2, 0x1A, 0x15, + 0x38, 0x92, 0x34, 0x6D, 0x2C, 0xBA, 0x64, 0x44, + 0x21, 0x2D, 0x56, 0xDA, 0x9A, 0x26, 0xE3, 0x24, + 0xDC, 0xCB, 0xC0, 0xDC, 0xDE, 0x85, 0xD4, 0xD2, + 0xEE, 0x43, 0x99, 0xEE, 0xC5, 0xA6, 0x4E, 0x8F + }, + { + 0xAE, 0x56, 0xDE, 0xB1, 0xC2, 0x32, 0x8D, 0x9C, + 0x40, 0x17, 0x70, 0x6B, 0xCE, 0x6E, 0x99, 0xD4, + 0x13, 0x49, 0x05, 0x3B, 0xA9, 0xD3, 0x36, 0xD6, + 0x77, 0xC4, 0xC2, 0x7D, 0x9F, 0xD5, 0x0A, 0xE6, + 0xAE, 0xE1, 0x7E, 0x85, 0x31, 0x54, 0xE1, 0xF4, + 0xFE, 0x76, 0x72, 0x34, 0x6D, 0xA2, 0xEA, 0xA3, + 0x1E, 0xEA, 0x53, 0xFC, 0xF2, 0x4A, 0x22, 0x80, + 0x4F, 0x11, 0xD0, 0x3D, 0xA6, 0xAB, 0xFC, 0x2B + }, + { + 0x49, 0xD6, 0xA6, 0x08, 0xC9, 0xBD, 0xE4, 0x49, + 0x18, 0x70, 0x49, 0x85, 0x72, 0xAC, 0x31, 0xAA, + 0xC3, 0xFA, 0x40, 0x93, 0x8B, 0x38, 0xA7, 0x81, + 0x8F, 0x72, 0x38, 0x3E, 0xB0, 0x40, 0xAD, 0x39, + 0x53, 0x2B, 0xC0, 0x65, 0x71, 0xE1, 0x3D, 0x76, + 0x7E, 0x69, 0x45, 0xAB, 0x77, 0xC0, 0xBD, 0xC3, + 0xB0, 0x28, 0x42, 0x53, 0x34, 0x3F, 0x9F, 0x6C, + 0x12, 0x44, 0xEB, 0xF2, 0xFF, 0x0D, 0xF8, 0x66 + }, + { + 0xDA, 0x58, 0x2A, 0xD8, 0xC5, 0x37, 0x0B, 0x44, + 0x69, 0xAF, 0x86, 0x2A, 0xA6, 0x46, 0x7A, 0x22, + 0x93, 0xB2, 0xB2, 0x8B, 0xD8, 0x0A, 0xE0, 0xE9, + 0x1F, 0x42, 0x5A, 0xD3, 0xD4, 0x72, 0x49, 0xFD, + 0xF9, 0x88, 0x25, 0xCC, 0x86, 0xF1, 0x40, 0x28, + 0xC3, 0x30, 0x8C, 0x98, 0x04, 0xC7, 0x8B, 0xFE, + 0xEE, 0xEE, 0x46, 0x14, 0x44, 0xCE, 0x24, 0x36, + 0x87, 0xE1, 0xA5, 0x05, 0x22, 0x45, 0x6A, 0x1D + }, + { + 0xD5, 0x26, 0x6A, 0xA3, 0x33, 0x11, 0x94, 0xAE, + 0xF8, 0x52, 0xEE, 0xD8, 0x6D, 0x7B, 0x5B, 0x26, + 0x33, 0xA0, 0xAF, 0x1C, 0x73, 0x59, 0x06, 0xF2, + 0xE1, 0x32, 0x79, 0xF1, 0x49, 0x31, 0xA9, 0xFC, + 0x3B, 0x0E, 0xAC, 0x5C, 0xE9, 0x24, 0x52, 0x73, + 0xBD, 0x1A, 0xA9, 0x29, 0x05, 0xAB, 0xE1, 0x62, + 0x78, 0xEF, 0x7E, 0xFD, 0x47, 0x69, 0x47, 0x89, + 0xA7, 0x28, 0x3B, 0x77, 0xDA, 0x3C, 0x70, 0xF8 + }, + { + 0x29, 0x62, 0x73, 0x4C, 0x28, 0x25, 0x21, 0x86, + 0xA9, 0xA1, 0x11, 0x1C, 0x73, 0x2A, 0xD4, 0xDE, + 0x45, 0x06, 0xD4, 0xB4, 0x48, 0x09, 0x16, 0x30, + 0x3E, 0xB7, 0x99, 0x1D, 0x65, 0x9C, 0xCD, 0xA0, + 0x7A, 0x99, 0x11, 0x91, 0x4B, 0xC7, 0x5C, 0x41, + 0x8A, 0xB7, 0xA4, 0x54, 0x17, 0x57, 0xAD, 0x05, + 0x47, 0x96, 0xE2, 0x67, 0x97, 0xFE, 0xAF, 0x36, + 0xE9, 0xF6, 0xAD, 0x43, 0xF1, 0x4B, 0x35, 0xA4 + }, + { + 0xE8, 0xB7, 0x9E, 0xC5, 0xD0, 0x6E, 0x11, 0x1B, + 0xDF, 0xAF, 0xD7, 0x1E, 0x9F, 0x57, 0x60, 0xF0, + 0x0A, 0xC8, 0xAC, 0x5D, 0x8B, 0xF7, 0x68, 0xF9, + 0xFF, 0x6F, 0x08, 0xB8, 0xF0, 0x26, 0x09, 0x6B, + 0x1C, 0xC3, 0xA4, 0xC9, 0x73, 0x33, 0x30, 0x19, + 0xF1, 0xE3, 0x55, 0x3E, 0x77, 0xDA, 0x3F, 0x98, + 0xCB, 0x9F, 0x54, 0x2E, 0x0A, 0x90, 0xE5, 0xF8, + 0xA9, 0x40, 0xCC, 0x58, 0xE5, 0x98, 0x44, 0xB3 + }, + { + 0xDF, 0xB3, 0x20, 0xC4, 0x4F, 0x9D, 0x41, 0xD1, + 0xEF, 0xDC, 0xC0, 0x15, 0xF0, 0x8D, 0xD5, 0x53, + 0x9E, 0x52, 0x6E, 0x39, 0xC8, 0x7D, 0x50, 0x9A, + 0xE6, 0x81, 0x2A, 0x96, 0x9E, 0x54, 0x31, 0xBF, + 0x4F, 0xA7, 0xD9, 0x1F, 0xFD, 0x03, 0xB9, 0x81, + 0xE0, 0xD5, 0x44, 0xCF, 0x72, 0xD7, 0xB1, 0xC0, + 0x37, 0x4F, 0x88, 0x01, 0x48, 0x2E, 0x6D, 0xEA, + 0x2E, 0xF9, 0x03, 0x87, 0x7E, 0xBA, 0x67, 0x5E + }, + { + 0xD8, 0x86, 0x75, 0x11, 0x8F, 0xDB, 0x55, 0xA5, + 0xFB, 0x36, 0x5A, 0xC2, 0xAF, 0x1D, 0x21, 0x7B, + 0xF5, 0x26, 0xCE, 0x1E, 0xE9, 0xC9, 0x4B, 0x2F, + 0x00, 0x90, 0xB2, 0xC5, 0x8A, 0x06, 0xCA, 0x58, + 0x18, 0x7D, 0x7F, 0xE5, 0x7C, 0x7B, 0xED, 0x9D, + 0x26, 0xFC, 0xA0, 0x67, 0xB4, 0x11, 0x0E, 0xEF, + 0xCD, 0x9A, 0x0A, 0x34, 0x5D, 0xE8, 0x72, 0xAB, + 0xE2, 0x0D, 0xE3, 0x68, 0x00, 0x1B, 0x07, 0x45 + }, + { + 0xB8, 0x93, 0xF2, 0xFC, 0x41, 0xF7, 0xB0, 0xDD, + 0x6E, 0x2F, 0x6A, 0xA2, 0xE0, 0x37, 0x0C, 0x0C, + 0xFF, 0x7D, 0xF0, 0x9E, 0x3A, 0xCF, 0xCC, 0x0E, + 0x92, 0x0B, 0x6E, 0x6F, 0xAD, 0x0E, 0xF7, 0x47, + 0xC4, 0x06, 0x68, 0x41, 0x7D, 0x34, 0x2B, 0x80, + 0xD2, 0x35, 0x1E, 0x8C, 0x17, 0x5F, 0x20, 0x89, + 0x7A, 0x06, 0x2E, 0x97, 0x65, 0xE6, 0xC6, 0x7B, + 0x53, 0x9B, 0x6B, 0xA8, 0xB9, 0x17, 0x05, 0x45 + }, + { + 0x6C, 0x67, 0xEC, 0x56, 0x97, 0xAC, 0xCD, 0x23, + 0x5C, 0x59, 0xB4, 0x86, 0xD7, 0xB7, 0x0B, 0xAE, + 0xED, 0xCB, 0xD4, 0xAA, 0x64, 0xEB, 0xD4, 0xEE, + 0xF3, 0xC7, 0xEA, 0xC1, 0x89, 0x56, 0x1A, 0x72, + 0x62, 0x50, 0xAE, 0xC4, 0xD4, 0x8C, 0xAD, 0xCA, + 0xFB, 0xBE, 0x2C, 0xE3, 0xC1, 0x6C, 0xE2, 0xD6, + 0x91, 0xA8, 0xCC, 0xE0, 0x6E, 0x88, 0x79, 0x55, + 0x6D, 0x44, 0x83, 0xED, 0x71, 0x65, 0xC0, 0x63 + }, + { + 0xF1, 0xAA, 0x2B, 0x04, 0x4F, 0x8F, 0x0C, 0x63, + 0x8A, 0x3F, 0x36, 0x2E, 0x67, 0x7B, 0x5D, 0x89, + 0x1D, 0x6F, 0xD2, 0xAB, 0x07, 0x65, 0xF6, 0xEE, + 0x1E, 0x49, 0x87, 0xDE, 0x05, 0x7E, 0xAD, 0x35, + 0x78, 0x83, 0xD9, 0xB4, 0x05, 0xB9, 0xD6, 0x09, + 0xEE, 0xA1, 0xB8, 0x69, 0xD9, 0x7F, 0xB1, 0x6D, + 0x9B, 0x51, 0x01, 0x7C, 0x55, 0x3F, 0x3B, 0x93, + 0xC0, 0xA1, 0xE0, 0xF1, 0x29, 0x6F, 0xED, 0xCD + }, + { + 0xCB, 0xAA, 0x25, 0x95, 0x72, 0xD4, 0xAE, 0xBF, + 0xC1, 0x91, 0x7A, 0xCD, 0xDC, 0x58, 0x2B, 0x9F, + 0x8D, 0xFA, 0xA9, 0x28, 0xA1, 0x98, 0xCA, 0x7A, + 0xCD, 0x0F, 0x2A, 0xA7, 0x6A, 0x13, 0x4A, 0x90, + 0x25, 0x2E, 0x62, 0x98, 0xA6, 0x5B, 0x08, 0x18, + 0x6A, 0x35, 0x0D, 0x5B, 0x76, 0x26, 0x69, 0x9F, + 0x8C, 0xB7, 0x21, 0xA3, 0xEA, 0x59, 0x21, 0xB7, + 0x53, 0xAE, 0x3A, 0x2D, 0xCE, 0x24, 0xBA, 0x3A + }, + { + 0xFA, 0x15, 0x49, 0xC9, 0x79, 0x6C, 0xD4, 0xD3, + 0x03, 0xDC, 0xF4, 0x52, 0xC1, 0xFB, 0xD5, 0x74, + 0x4F, 0xD9, 0xB9, 0xB4, 0x70, 0x03, 0xD9, 0x20, + 0xB9, 0x2D, 0xE3, 0x48, 0x39, 0xD0, 0x7E, 0xF2, + 0xA2, 0x9D, 0xED, 0x68, 0xF6, 0xFC, 0x9E, 0x6C, + 0x45, 0xE0, 0x71, 0xA2, 0xE4, 0x8B, 0xD5, 0x0C, + 0x50, 0x84, 0xE9, 0x6B, 0x65, 0x7D, 0xD0, 0x40, + 0x40, 0x45, 0xA1, 0xDD, 0xEF, 0xE2, 0x82, 0xED + }, + { + 0x5C, 0xF2, 0xAC, 0x89, 0x7A, 0xB4, 0x44, 0xDC, + 0xB5, 0xC8, 0xD8, 0x7C, 0x49, 0x5D, 0xBD, 0xB3, + 0x4E, 0x18, 0x38, 0xB6, 0xB6, 0x29, 0x42, 0x7C, + 0xAA, 0x51, 0x70, 0x2A, 0xD0, 0xF9, 0x68, 0x85, + 0x25, 0xF1, 0x3B, 0xEC, 0x50, 0x3A, 0x3C, 0x3A, + 0x2C, 0x80, 0xA6, 0x5E, 0x0B, 0x57, 0x15, 0xE8, + 0xAF, 0xAB, 0x00, 0xFF, 0xA5, 0x6E, 0xC4, 0x55, + 0xA4, 0x9A, 0x1A, 0xD3, 0x0A, 0xA2, 0x4F, 0xCD + }, + { + 0x9A, 0xAF, 0x80, 0x20, 0x7B, 0xAC, 0xE1, 0x7B, + 0xB7, 0xAB, 0x14, 0x57, 0x57, 0xD5, 0x69, 0x6B, + 0xDE, 0x32, 0x40, 0x6E, 0xF2, 0x2B, 0x44, 0x29, + 0x2E, 0xF6, 0x5D, 0x45, 0x19, 0xC3, 0xBB, 0x2A, + 0xD4, 0x1A, 0x59, 0xB6, 0x2C, 0xC3, 0xE9, 0x4B, + 0x6F, 0xA9, 0x6D, 0x32, 0xA7, 0xFA, 0xAD, 0xAE, + 0x28, 0xAF, 0x7D, 0x35, 0x09, 0x72, 0x19, 0xAA, + 0x3F, 0xD8, 0xCD, 0xA3, 0x1E, 0x40, 0xC2, 0x75 + }, + { + 0xAF, 0x88, 0xB1, 0x63, 0x40, 0x2C, 0x86, 0x74, + 0x5C, 0xB6, 0x50, 0xC2, 0x98, 0x8F, 0xB9, 0x52, + 0x11, 0xB9, 0x4B, 0x03, 0xEF, 0x29, 0x0E, 0xED, + 0x96, 0x62, 0x03, 0x42, 0x41, 0xFD, 0x51, 0xCF, + 0x39, 0x8F, 0x80, 0x73, 0xE3, 0x69, 0x35, 0x4C, + 0x43, 0xEA, 0xE1, 0x05, 0x2F, 0x9B, 0x63, 0xB0, + 0x81, 0x91, 0xCA, 0xA1, 0x38, 0xAA, 0x54, 0xFE, + 0xA8, 0x89, 0xCC, 0x70, 0x24, 0x23, 0x68, 0x97 + }, + { + 0x48, 0xFA, 0x7D, 0x64, 0xE1, 0xCE, 0xEE, 0x27, + 0xB9, 0x86, 0x4D, 0xB5, 0xAD, 0xA4, 0xB5, 0x3D, + 0x00, 0xC9, 0xBC, 0x76, 0x26, 0x55, 0x58, 0x13, + 0xD3, 0xCD, 0x67, 0x30, 0xAB, 0x3C, 0xC0, 0x6F, + 0xF3, 0x42, 0xD7, 0x27, 0x90, 0x5E, 0x33, 0x17, + 0x1B, 0xDE, 0x6E, 0x84, 0x76, 0xE7, 0x7F, 0xB1, + 0x72, 0x08, 0x61, 0xE9, 0x4B, 0x73, 0xA2, 0xC5, + 0x38, 0xD2, 0x54, 0x74, 0x62, 0x85, 0xF4, 0x30 + }, + { + 0x0E, 0x6F, 0xD9, 0x7A, 0x85, 0xE9, 0x04, 0xF8, + 0x7B, 0xFE, 0x85, 0xBB, 0xEB, 0x34, 0xF6, 0x9E, + 0x1F, 0x18, 0x10, 0x5C, 0xF4, 0xED, 0x4F, 0x87, + 0xAE, 0xC3, 0x6C, 0x6E, 0x8B, 0x5F, 0x68, 0xBD, + 0x2A, 0x6F, 0x3D, 0xC8, 0xA9, 0xEC, 0xB2, 0xB6, + 0x1D, 0xB4, 0xEE, 0xDB, 0x6B, 0x2E, 0xA1, 0x0B, + 0xF9, 0xCB, 0x02, 0x51, 0xFB, 0x0F, 0x8B, 0x34, + 0x4A, 0xBF, 0x7F, 0x36, 0x6B, 0x6D, 0xE5, 0xAB + }, + { + 0x06, 0x62, 0x2D, 0xA5, 0x78, 0x71, 0x76, 0x28, + 0x7F, 0xDC, 0x8F, 0xED, 0x44, 0x0B, 0xAD, 0x18, + 0x7D, 0x83, 0x00, 0x99, 0xC9, 0x4E, 0x6D, 0x04, + 0xC8, 0xE9, 0xC9, 0x54, 0xCD, 0xA7, 0x0C, 0x8B, + 0xB9, 0xE1, 0xFC, 0x4A, 0x6D, 0x0B, 0xAA, 0x83, + 0x1B, 0x9B, 0x78, 0xEF, 0x66, 0x48, 0x68, 0x1A, + 0x48, 0x67, 0xA1, 0x1D, 0xA9, 0x3E, 0xE3, 0x6E, + 0x5E, 0x6A, 0x37, 0xD8, 0x7F, 0xC6, 0x3F, 0x6F + }, + { + 0x1D, 0xA6, 0x77, 0x2B, 0x58, 0xFA, 0xBF, 0x9C, + 0x61, 0xF6, 0x8D, 0x41, 0x2C, 0x82, 0xF1, 0x82, + 0xC0, 0x23, 0x6D, 0x7D, 0x57, 0x5E, 0xF0, 0xB5, + 0x8D, 0xD2, 0x24, 0x58, 0xD6, 0x43, 0xCD, 0x1D, + 0xFC, 0x93, 0xB0, 0x38, 0x71, 0xC3, 0x16, 0xD8, + 0x43, 0x0D, 0x31, 0x29, 0x95, 0xD4, 0x19, 0x7F, + 0x08, 0x74, 0xC9, 0x91, 0x72, 0xBA, 0x00, 0x4A, + 0x01, 0xEE, 0x29, 0x5A, 0xBA, 0xC2, 0x4E, 0x46 + }, + { + 0x3C, 0xD2, 0xD9, 0x32, 0x0B, 0x7B, 0x1D, 0x5F, + 0xB9, 0xAA, 0xB9, 0x51, 0xA7, 0x60, 0x23, 0xFA, + 0x66, 0x7B, 0xE1, 0x4A, 0x91, 0x24, 0xE3, 0x94, + 0x51, 0x39, 0x18, 0xA3, 0xF4, 0x40, 0x96, 0xAE, + 0x49, 0x04, 0xBA, 0x0F, 0xFC, 0x15, 0x0B, 0x63, + 0xBC, 0x7A, 0xB1, 0xEE, 0xB9, 0xA6, 0xE2, 0x57, + 0xE5, 0xC8, 0xF0, 0x00, 0xA7, 0x03, 0x94, 0xA5, + 0xAF, 0xD8, 0x42, 0x71, 0x5D, 0xE1, 0x5F, 0x29 + }, + { + 0x04, 0xCD, 0xC1, 0x4F, 0x74, 0x34, 0xE0, 0xB4, + 0xBE, 0x70, 0xCB, 0x41, 0xDB, 0x4C, 0x77, 0x9A, + 0x88, 0xEA, 0xEF, 0x6A, 0xCC, 0xEB, 0xCB, 0x41, + 0xF2, 0xD4, 0x2F, 0xFF, 0xE7, 0xF3, 0x2A, 0x8E, + 0x28, 0x1B, 0x5C, 0x10, 0x3A, 0x27, 0x02, 0x1D, + 0x0D, 0x08, 0x36, 0x22, 0x50, 0x75, 0x3C, 0xDF, + 0x70, 0x29, 0x21, 0x95, 0xA5, 0x3A, 0x48, 0x72, + 0x8C, 0xEB, 0x58, 0x44, 0xC2, 0xD9, 0x8B, 0xAB + }, + { + 0x90, 0x71, 0xB7, 0xA8, 0xA0, 0x75, 0xD0, 0x09, + 0x5B, 0x8F, 0xB3, 0xAE, 0x51, 0x13, 0x78, 0x57, + 0x35, 0xAB, 0x98, 0xE2, 0xB5, 0x2F, 0xAF, 0x91, + 0xD5, 0xB8, 0x9E, 0x44, 0xAA, 0xC5, 0xB5, 0xD4, + 0xEB, 0xBF, 0x91, 0x22, 0x3B, 0x0F, 0xF4, 0xC7, + 0x19, 0x05, 0xDA, 0x55, 0x34, 0x2E, 0x64, 0x65, + 0x5D, 0x6E, 0xF8, 0xC8, 0x9A, 0x47, 0x68, 0xC3, + 0xF9, 0x3A, 0x6D, 0xC0, 0x36, 0x6B, 0x5B, 0xC8 + }, + { + 0xEB, 0xB3, 0x02, 0x40, 0xDD, 0x96, 0xC7, 0xBC, + 0x8D, 0x0A, 0xBE, 0x49, 0xAA, 0x4E, 0xDC, 0xBB, + 0x4A, 0xFD, 0xC5, 0x1F, 0xF9, 0xAA, 0xF7, 0x20, + 0xD3, 0xF9, 0xE7, 0xFB, 0xB0, 0xF9, 0xC6, 0xD6, + 0x57, 0x13, 0x50, 0x50, 0x17, 0x69, 0xFC, 0x4E, + 0xBD, 0x0B, 0x21, 0x41, 0x24, 0x7F, 0xF4, 0x00, + 0xD4, 0xFD, 0x4B, 0xE4, 0x14, 0xED, 0xF3, 0x77, + 0x57, 0xBB, 0x90, 0xA3, 0x2A, 0xC5, 0xC6, 0x5A + }, + { + 0x85, 0x32, 0xC5, 0x8B, 0xF3, 0xC8, 0x01, 0x5D, + 0x9D, 0x1C, 0xBE, 0x00, 0xEE, 0xF1, 0xF5, 0x08, + 0x2F, 0x8F, 0x36, 0x32, 0xFB, 0xE9, 0xF1, 0xED, + 0x4F, 0x9D, 0xFB, 0x1F, 0xA7, 0x9E, 0x82, 0x83, + 0x06, 0x6D, 0x77, 0xC4, 0x4C, 0x4A, 0xF9, 0x43, + 0xD7, 0x6B, 0x30, 0x03, 0x64, 0xAE, 0xCB, 0xD0, + 0x64, 0x8C, 0x8A, 0x89, 0x39, 0xBD, 0x20, 0x41, + 0x23, 0xF4, 0xB5, 0x62, 0x60, 0x42, 0x2D, 0xEC + }, + { + 0xFE, 0x98, 0x46, 0xD6, 0x4F, 0x7C, 0x77, 0x08, + 0x69, 0x6F, 0x84, 0x0E, 0x2D, 0x76, 0xCB, 0x44, + 0x08, 0xB6, 0x59, 0x5C, 0x2F, 0x81, 0xEC, 0x6A, + 0x28, 0xA7, 0xF2, 0xF2, 0x0C, 0xB8, 0x8C, 0xFE, + 0x6A, 0xC0, 0xB9, 0xE9, 0xB8, 0x24, 0x4F, 0x08, + 0xBD, 0x70, 0x95, 0xC3, 0x50, 0xC1, 0xD0, 0x84, + 0x2F, 0x64, 0xFB, 0x01, 0xBB, 0x7F, 0x53, 0x2D, + 0xFC, 0xD4, 0x73, 0x71, 0xB0, 0xAE, 0xEB, 0x79 + }, + { + 0x28, 0xF1, 0x7E, 0xA6, 0xFB, 0x6C, 0x42, 0x09, + 0x2D, 0xC2, 0x64, 0x25, 0x7E, 0x29, 0x74, 0x63, + 0x21, 0xFB, 0x5B, 0xDA, 0xEA, 0x98, 0x73, 0xC2, + 0xA7, 0xFA, 0x9D, 0x8F, 0x53, 0x81, 0x8E, 0x89, + 0x9E, 0x16, 0x1B, 0xC7, 0x7D, 0xFE, 0x80, 0x90, + 0xAF, 0xD8, 0x2B, 0xF2, 0x26, 0x6C, 0x5C, 0x1B, + 0xC9, 0x30, 0xA8, 0xD1, 0x54, 0x76, 0x24, 0x43, + 0x9E, 0x66, 0x2E, 0xF6, 0x95, 0xF2, 0x6F, 0x24 + }, + { + 0xEC, 0x6B, 0x7D, 0x7F, 0x03, 0x0D, 0x48, 0x50, + 0xAC, 0xAE, 0x3C, 0xB6, 0x15, 0xC2, 0x1D, 0xD2, + 0x52, 0x06, 0xD6, 0x3E, 0x84, 0xD1, 0xDB, 0x8D, + 0x95, 0x73, 0x70, 0x73, 0x7B, 0xA0, 0xE9, 0x84, + 0x67, 0xEA, 0x0C, 0xE2, 0x74, 0xC6, 0x61, 0x99, + 0x90, 0x1E, 0xAE, 0xC1, 0x8A, 0x08, 0x52, 0x57, + 0x15, 0xF5, 0x3B, 0xFD, 0xB0, 0xAA, 0xCB, 0x61, + 0x3D, 0x34, 0x2E, 0xBD, 0xCE, 0xED, 0xDC, 0x3B + }, + { + 0xB4, 0x03, 0xD3, 0x69, 0x1C, 0x03, 0xB0, 0xD3, + 0x41, 0x8D, 0xF3, 0x27, 0xD5, 0x86, 0x0D, 0x34, + 0xBB, 0xFC, 0xC4, 0x51, 0x9B, 0xFB, 0xCE, 0x36, + 0xBF, 0x33, 0xB2, 0x08, 0x38, 0x5F, 0xAD, 0xB9, + 0x18, 0x6B, 0xC7, 0x8A, 0x76, 0xC4, 0x89, 0xD8, + 0x9F, 0xD5, 0x7E, 0x7D, 0xC7, 0x54, 0x12, 0xD2, + 0x3B, 0xCD, 0x1D, 0xAE, 0x84, 0x70, 0xCE, 0x92, + 0x74, 0x75, 0x4B, 0xB8, 0x58, 0x5B, 0x13, 0xC5 + }, + { + 0x31, 0xFC, 0x79, 0x73, 0x8B, 0x87, 0x72, 0xB3, + 0xF5, 0x5C, 0xD8, 0x17, 0x88, 0x13, 0xB3, 0xB5, + 0x2D, 0x0D, 0xB5, 0xA4, 0x19, 0xD3, 0x0B, 0xA9, + 0x49, 0x5C, 0x4B, 0x9D, 0xA0, 0x21, 0x9F, 0xAC, + 0x6D, 0xF8, 0xE7, 0xC2, 0x3A, 0x81, 0x15, 0x51, + 0xA6, 0x2B, 0x82, 0x7F, 0x25, 0x6E, 0xCD, 0xB8, + 0x12, 0x4A, 0xC8, 0xA6, 0x79, 0x2C, 0xCF, 0xEC, + 0xC3, 0xB3, 0x01, 0x27, 0x22, 0xE9, 0x44, 0x63 + }, + { + 0xBB, 0x20, 0x39, 0xEC, 0x28, 0x70, 0x91, 0xBC, + 0xC9, 0x64, 0x2F, 0xC9, 0x00, 0x49, 0xE7, 0x37, + 0x32, 0xE0, 0x2E, 0x57, 0x7E, 0x28, 0x62, 0xB3, + 0x22, 0x16, 0xAE, 0x9B, 0xED, 0xCD, 0x73, 0x0C, + 0x4C, 0x28, 0x4E, 0xF3, 0x96, 0x8C, 0x36, 0x8B, + 0x7D, 0x37, 0x58, 0x4F, 0x97, 0xBD, 0x4B, 0x4D, + 0xC6, 0xEF, 0x61, 0x27, 0xAC, 0xFE, 0x2E, 0x6A, + 0xE2, 0x50, 0x91, 0x24, 0xE6, 0x6C, 0x8A, 0xF4 + }, + { + 0xF5, 0x3D, 0x68, 0xD1, 0x3F, 0x45, 0xED, 0xFC, + 0xB9, 0xBD, 0x41, 0x5E, 0x28, 0x31, 0xE9, 0x38, + 0x35, 0x0D, 0x53, 0x80, 0xD3, 0x43, 0x22, 0x78, + 0xFC, 0x1C, 0x0C, 0x38, 0x1F, 0xCB, 0x7C, 0x65, + 0xC8, 0x2D, 0xAF, 0xE0, 0x51, 0xD8, 0xC8, 0xB0, + 0xD4, 0x4E, 0x09, 0x74, 0xA0, 0xE5, 0x9E, 0xC7, + 0xBF, 0x7E, 0xD0, 0x45, 0x9F, 0x86, 0xE9, 0x6F, + 0x32, 0x9F, 0xC7, 0x97, 0x52, 0x51, 0x0F, 0xD3 + }, + { + 0x8D, 0x56, 0x8C, 0x79, 0x84, 0xF0, 0xEC, 0xDF, + 0x76, 0x40, 0xFB, 0xC4, 0x83, 0xB5, 0xD8, 0xC9, + 0xF8, 0x66, 0x34, 0xF6, 0xF4, 0x32, 0x91, 0x84, + 0x1B, 0x30, 0x9A, 0x35, 0x0A, 0xB9, 0xC1, 0x13, + 0x7D, 0x24, 0x06, 0x6B, 0x09, 0xDA, 0x99, 0x44, + 0xBA, 0xC5, 0x4D, 0x5B, 0xB6, 0x58, 0x0D, 0x83, + 0x60, 0x47, 0xAA, 0xC7, 0x4A, 0xB7, 0x24, 0xB8, + 0x87, 0xEB, 0xF9, 0x3D, 0x4B, 0x32, 0xEC, 0xA9 + }, + { + 0xC0, 0xB6, 0x5C, 0xE5, 0xA9, 0x6F, 0xF7, 0x74, + 0xC4, 0x56, 0xCA, 0xC3, 0xB5, 0xF2, 0xC4, 0xCD, + 0x35, 0x9B, 0x4F, 0xF5, 0x3E, 0xF9, 0x3A, 0x3D, + 0xA0, 0x77, 0x8B, 0xE4, 0x90, 0x0D, 0x1E, 0x8D, + 0xA1, 0x60, 0x1E, 0x76, 0x9E, 0x8F, 0x1B, 0x02, + 0xD2, 0xA2, 0xF8, 0xC5, 0xB9, 0xFA, 0x10, 0xB4, + 0x4F, 0x1C, 0x18, 0x69, 0x85, 0x46, 0x8F, 0xEE, + 0xB0, 0x08, 0x73, 0x02, 0x83, 0xA6, 0x65, 0x7D + }, + { + 0x49, 0x00, 0xBB, 0xA6, 0xF5, 0xFB, 0x10, 0x3E, + 0xCE, 0x8E, 0xC9, 0x6A, 0xDA, 0x13, 0xA5, 0xC3, + 0xC8, 0x54, 0x88, 0xE0, 0x55, 0x51, 0xDA, 0x6B, + 0x6B, 0x33, 0xD9, 0x88, 0xE6, 0x11, 0xEC, 0x0F, + 0xE2, 0xE3, 0xC2, 0xAA, 0x48, 0xEA, 0x6A, 0xE8, + 0x98, 0x6A, 0x3A, 0x23, 0x1B, 0x22, 0x3C, 0x5D, + 0x27, 0xCE, 0xC2, 0xEA, 0xDD, 0xE9, 0x1C, 0xE0, + 0x79, 0x81, 0xEE, 0x65, 0x28, 0x62, 0xD1, 0xE4 + }, + { + 0xC7, 0xF5, 0xC3, 0x7C, 0x72, 0x85, 0xF9, 0x27, + 0xF7, 0x64, 0x43, 0x41, 0x4D, 0x43, 0x57, 0xFF, + 0x78, 0x96, 0x47, 0xD7, 0xA0, 0x05, 0xA5, 0xA7, + 0x87, 0xE0, 0x3C, 0x34, 0x6B, 0x57, 0xF4, 0x9F, + 0x21, 0xB6, 0x4F, 0xA9, 0xCF, 0x4B, 0x7E, 0x45, + 0x57, 0x3E, 0x23, 0x04, 0x90, 0x17, 0x56, 0x71, + 0x21, 0xA9, 0xC3, 0xD4, 0xB2, 0xB7, 0x3E, 0xC5, + 0xE9, 0x41, 0x35, 0x77, 0x52, 0x5D, 0xB4, 0x5A + }, + { + 0xEC, 0x70, 0x96, 0x33, 0x07, 0x36, 0xFD, 0xB2, + 0xD6, 0x4B, 0x56, 0x53, 0xE7, 0x47, 0x5D, 0xA7, + 0x46, 0xC2, 0x3A, 0x46, 0x13, 0xA8, 0x26, 0x87, + 0xA2, 0x80, 0x62, 0xD3, 0x23, 0x63, 0x64, 0x28, + 0x4A, 0xC0, 0x17, 0x20, 0xFF, 0xB4, 0x06, 0xCF, + 0xE2, 0x65, 0xC0, 0xDF, 0x62, 0x6A, 0x18, 0x8C, + 0x9E, 0x59, 0x63, 0xAC, 0xE5, 0xD3, 0xD5, 0xBB, + 0x36, 0x3E, 0x32, 0xC3, 0x8C, 0x21, 0x90, 0xA6 + }, + { + 0x82, 0xE7, 0x44, 0xC7, 0x5F, 0x46, 0x49, 0xEC, + 0x52, 0xB8, 0x07, 0x71, 0xA7, 0x7D, 0x47, 0x5A, + 0x3B, 0xC0, 0x91, 0x98, 0x95, 0x56, 0x96, 0x0E, + 0x27, 0x6A, 0x5F, 0x9E, 0xAD, 0x92, 0xA0, 0x3F, + 0x71, 0x87, 0x42, 0xCD, 0xCF, 0xEA, 0xEE, 0x5C, + 0xB8, 0x5C, 0x44, 0xAF, 0x19, 0x8A, 0xDC, 0x43, + 0xA4, 0xA4, 0x28, 0xF5, 0xF0, 0xC2, 0xDD, 0xB0, + 0xBE, 0x36, 0x05, 0x9F, 0x06, 0xD7, 0xDF, 0x73 + }, + { + 0x28, 0x34, 0xB7, 0xA7, 0x17, 0x0F, 0x1F, 0x5B, + 0x68, 0x55, 0x9A, 0xB7, 0x8C, 0x10, 0x50, 0xEC, + 0x21, 0xC9, 0x19, 0x74, 0x0B, 0x78, 0x4A, 0x90, + 0x72, 0xF6, 0xE5, 0xD6, 0x9F, 0x82, 0x8D, 0x70, + 0xC9, 0x19, 0xC5, 0x03, 0x9F, 0xB1, 0x48, 0xE3, + 0x9E, 0x2C, 0x8A, 0x52, 0x11, 0x83, 0x78, 0xB0, + 0x64, 0xCA, 0x8D, 0x50, 0x01, 0xCD, 0x10, 0xA5, + 0x47, 0x83, 0x87, 0xB9, 0x66, 0x71, 0x5E, 0xD6 + }, + { + 0x16, 0xB4, 0xAD, 0xA8, 0x83, 0xF7, 0x2F, 0x85, + 0x3B, 0xB7, 0xEF, 0x25, 0x3E, 0xFC, 0xAB, 0x0C, + 0x3E, 0x21, 0x61, 0x68, 0x7A, 0xD6, 0x15, 0x43, + 0xA0, 0xD2, 0x82, 0x4F, 0x91, 0xC1, 0xF8, 0x13, + 0x47, 0xD8, 0x6B, 0xE7, 0x09, 0xB1, 0x69, 0x96, + 0xE1, 0x7F, 0x2D, 0xD4, 0x86, 0x92, 0x7B, 0x02, + 0x88, 0xAD, 0x38, 0xD1, 0x30, 0x63, 0xC4, 0xA9, + 0x67, 0x2C, 0x39, 0x39, 0x7D, 0x37, 0x89, 0xB6 + }, + { + 0x78, 0xD0, 0x48, 0xF3, 0xA6, 0x9D, 0x8B, 0x54, + 0xAE, 0x0E, 0xD6, 0x3A, 0x57, 0x3A, 0xE3, 0x50, + 0xD8, 0x9F, 0x7C, 0x6C, 0xF1, 0xF3, 0x68, 0x89, + 0x30, 0xDE, 0x89, 0x9A, 0xFA, 0x03, 0x76, 0x97, + 0x62, 0x9B, 0x31, 0x4E, 0x5C, 0xD3, 0x03, 0xAA, + 0x62, 0xFE, 0xEA, 0x72, 0xA2, 0x5B, 0xF4, 0x2B, + 0x30, 0x4B, 0x6C, 0x6B, 0xCB, 0x27, 0xFA, 0xE2, + 0x1C, 0x16, 0xD9, 0x25, 0xE1, 0xFB, 0xDA, 0xC3 + }, + { + 0x0F, 0x74, 0x6A, 0x48, 0x74, 0x92, 0x87, 0xAD, + 0xA7, 0x7A, 0x82, 0x96, 0x1F, 0x05, 0xA4, 0xDA, + 0x4A, 0xBD, 0xB7, 0xD7, 0x7B, 0x12, 0x20, 0xF8, + 0x36, 0xD0, 0x9E, 0xC8, 0x14, 0x35, 0x9C, 0x0E, + 0xC0, 0x23, 0x9B, 0x8C, 0x7B, 0x9F, 0xF9, 0xE0, + 0x2F, 0x56, 0x9D, 0x1B, 0x30, 0x1E, 0xF6, 0x7C, + 0x46, 0x12, 0xD1, 0xDE, 0x4F, 0x73, 0x0F, 0x81, + 0xC1, 0x2C, 0x40, 0xCC, 0x06, 0x3C, 0x5C, 0xAA + }, + { + 0xF0, 0xFC, 0x85, 0x9D, 0x3B, 0xD1, 0x95, 0xFB, + 0xDC, 0x2D, 0x59, 0x1E, 0x4C, 0xDA, 0xC1, 0x51, + 0x79, 0xEC, 0x0F, 0x1D, 0xC8, 0x21, 0xC1, 0x1D, + 0xF1, 0xF0, 0xC1, 0xD2, 0x6E, 0x62, 0x60, 0xAA, + 0xA6, 0x5B, 0x79, 0xFA, 0xFA, 0xCA, 0xFD, 0x7D, + 0x3A, 0xD6, 0x1E, 0x60, 0x0F, 0x25, 0x09, 0x05, + 0xF5, 0x87, 0x8C, 0x87, 0x45, 0x28, 0x97, 0x64, + 0x7A, 0x35, 0xB9, 0x95, 0xBC, 0xAD, 0xC3, 0xA3 + }, + { + 0x26, 0x20, 0xF6, 0x87, 0xE8, 0x62, 0x5F, 0x6A, + 0x41, 0x24, 0x60, 0xB4, 0x2E, 0x2C, 0xEF, 0x67, + 0x63, 0x42, 0x08, 0xCE, 0x10, 0xA0, 0xCB, 0xD4, + 0xDF, 0xF7, 0x04, 0x4A, 0x41, 0xB7, 0x88, 0x00, + 0x77, 0xE9, 0xF8, 0xDC, 0x3B, 0x8D, 0x12, 0x16, + 0xD3, 0x37, 0x6A, 0x21, 0xE0, 0x15, 0xB5, 0x8F, + 0xB2, 0x79, 0xB5, 0x21, 0xD8, 0x3F, 0x93, 0x88, + 0xC7, 0x38, 0x2C, 0x85, 0x05, 0x59, 0x0B, 0x9B + }, + { + 0x22, 0x7E, 0x3A, 0xED, 0x8D, 0x2C, 0xB1, 0x0B, + 0x91, 0x8F, 0xCB, 0x04, 0xF9, 0xDE, 0x3E, 0x6D, + 0x0A, 0x57, 0xE0, 0x84, 0x76, 0xD9, 0x37, 0x59, + 0xCD, 0x7B, 0x2E, 0xD5, 0x4A, 0x1C, 0xBF, 0x02, + 0x39, 0xC5, 0x28, 0xFB, 0x04, 0xBB, 0xF2, 0x88, + 0x25, 0x3E, 0x60, 0x1D, 0x3B, 0xC3, 0x8B, 0x21, + 0x79, 0x4A, 0xFE, 0xF9, 0x0B, 0x17, 0x09, 0x4A, + 0x18, 0x2C, 0xAC, 0x55, 0x77, 0x45, 0xE7, 0x5F + }, + { + 0x1A, 0x92, 0x99, 0x01, 0xB0, 0x9C, 0x25, 0xF2, + 0x7D, 0x6B, 0x35, 0xBE, 0x7B, 0x2F, 0x1C, 0x47, + 0x45, 0x13, 0x1F, 0xDE, 0xBC, 0xA7, 0xF3, 0xE2, + 0x45, 0x19, 0x26, 0x72, 0x04, 0x34, 0xE0, 0xDB, + 0x6E, 0x74, 0xFD, 0x69, 0x3A, 0xD2, 0x9B, 0x77, + 0x7D, 0xC3, 0x35, 0x5C, 0x59, 0x2A, 0x36, 0x1C, + 0x48, 0x73, 0xB0, 0x11, 0x33, 0xA5, 0x7C, 0x2E, + 0x3B, 0x70, 0x75, 0xCB, 0xDB, 0x86, 0xF4, 0xFC + }, + { + 0x5F, 0xD7, 0x96, 0x8B, 0xC2, 0xFE, 0x34, 0xF2, + 0x20, 0xB5, 0xE3, 0xDC, 0x5A, 0xF9, 0x57, 0x17, + 0x42, 0xD7, 0x3B, 0x7D, 0x60, 0x81, 0x9F, 0x28, + 0x88, 0xB6, 0x29, 0x07, 0x2B, 0x96, 0xA9, 0xD8, + 0xAB, 0x2D, 0x91, 0xB8, 0x2D, 0x0A, 0x9A, 0xAB, + 0xA6, 0x1B, 0xBD, 0x39, 0x95, 0x81, 0x32, 0xFC, + 0xC4, 0x25, 0x70, 0x23, 0xD1, 0xEC, 0xA5, 0x91, + 0xB3, 0x05, 0x4E, 0x2D, 0xC8, 0x1C, 0x82, 0x00 + }, + { + 0xDF, 0xCC, 0xE8, 0xCF, 0x32, 0x87, 0x0C, 0xC6, + 0xA5, 0x03, 0xEA, 0xDA, 0xFC, 0x87, 0xFD, 0x6F, + 0x78, 0x91, 0x8B, 0x9B, 0x4D, 0x07, 0x37, 0xDB, + 0x68, 0x10, 0xBE, 0x99, 0x6B, 0x54, 0x97, 0xE7, + 0xE5, 0xCC, 0x80, 0xE3, 0x12, 0xF6, 0x1E, 0x71, + 0xFF, 0x3E, 0x96, 0x24, 0x43, 0x60, 0x73, 0x15, + 0x64, 0x03, 0xF7, 0x35, 0xF5, 0x6B, 0x0B, 0x01, + 0x84, 0x5C, 0x18, 0xF6, 0xCA, 0xF7, 0x72, 0xE6 + }, + { + 0x02, 0xF7, 0xEF, 0x3A, 0x9C, 0xE0, 0xFF, 0xF9, + 0x60, 0xF6, 0x70, 0x32, 0xB2, 0x96, 0xEF, 0xCA, + 0x30, 0x61, 0xF4, 0x93, 0x4D, 0x69, 0x07, 0x49, + 0xF2, 0xD0, 0x1C, 0x35, 0xC8, 0x1C, 0x14, 0xF3, + 0x9A, 0x67, 0xFA, 0x35, 0x0B, 0xC8, 0xA0, 0x35, + 0x9B, 0xF1, 0x72, 0x4B, 0xFF, 0xC3, 0xBC, 0xA6, + 0xD7, 0xC7, 0xBB, 0xA4, 0x79, 0x1F, 0xD5, 0x22, + 0xA3, 0xAD, 0x35, 0x3C, 0x02, 0xEC, 0x5A, 0xA8 + }, + { + 0x64, 0xBE, 0x5C, 0x6A, 0xBA, 0x65, 0xD5, 0x94, + 0x84, 0x4A, 0xE7, 0x8B, 0xB0, 0x22, 0xE5, 0xBE, + 0xBE, 0x12, 0x7F, 0xD6, 0xB6, 0xFF, 0xA5, 0xA1, + 0x37, 0x03, 0x85, 0x5A, 0xB6, 0x3B, 0x62, 0x4D, + 0xCD, 0x1A, 0x36, 0x3F, 0x99, 0x20, 0x3F, 0x63, + 0x2E, 0xC3, 0x86, 0xF3, 0xEA, 0x76, 0x7F, 0xC9, + 0x92, 0xE8, 0xED, 0x96, 0x86, 0x58, 0x6A, 0xA2, + 0x75, 0x55, 0xA8, 0x59, 0x9D, 0x5B, 0x80, 0x8F + }, + { + 0xF7, 0x85, 0x85, 0x50, 0x5C, 0x4E, 0xAA, 0x54, + 0xA8, 0xB5, 0xBE, 0x70, 0xA6, 0x1E, 0x73, 0x5E, + 0x0F, 0xF9, 0x7A, 0xF9, 0x44, 0xDD, 0xB3, 0x00, + 0x1E, 0x35, 0xD8, 0x6C, 0x4E, 0x21, 0x99, 0xD9, + 0x76, 0x10, 0x4B, 0x6A, 0xE3, 0x17, 0x50, 0xA3, + 0x6A, 0x72, 0x6E, 0xD2, 0x85, 0x06, 0x4F, 0x59, + 0x81, 0xB5, 0x03, 0x88, 0x9F, 0xEF, 0x82, 0x2F, + 0xCD, 0xC2, 0x89, 0x8D, 0xDD, 0xB7, 0x88, 0x9A + }, + { + 0xE4, 0xB5, 0x56, 0x60, 0x33, 0x86, 0x95, 0x72, + 0xED, 0xFD, 0x87, 0x47, 0x9A, 0x5B, 0xB7, 0x3C, + 0x80, 0xE8, 0x75, 0x9B, 0x91, 0x23, 0x28, 0x79, + 0xD9, 0x6B, 0x1D, 0xDA, 0x36, 0xC0, 0x12, 0x07, + 0x6E, 0xE5, 0xA2, 0xED, 0x7A, 0xE2, 0xDE, 0x63, + 0xEF, 0x84, 0x06, 0xA0, 0x6A, 0xEA, 0x82, 0xC1, + 0x88, 0x03, 0x1B, 0x56, 0x0B, 0xEA, 0xFB, 0x58, + 0x3F, 0xB3, 0xDE, 0x9E, 0x57, 0x95, 0x2A, 0x7E + }, + { + 0xE1, 0xB3, 0xE7, 0xED, 0x86, 0x7F, 0x6C, 0x94, + 0x84, 0xA2, 0xA9, 0x7F, 0x77, 0x15, 0xF2, 0x5E, + 0x25, 0x29, 0x4E, 0x99, 0x2E, 0x41, 0xF6, 0xA7, + 0xC1, 0x61, 0xFF, 0xC2, 0xAD, 0xC6, 0xDA, 0xAE, + 0xB7, 0x11, 0x31, 0x02, 0xD5, 0xE6, 0x09, 0x02, + 0x87, 0xFE, 0x6A, 0xD9, 0x4C, 0xE5, 0xD6, 0xB7, + 0x39, 0xC6, 0xCA, 0x24, 0x0B, 0x05, 0xC7, 0x6F, + 0xB7, 0x3F, 0x25, 0xDD, 0x02, 0x4B, 0xF9, 0x35 + }, + { + 0x85, 0xFD, 0x08, 0x5F, 0xDC, 0x12, 0xA0, 0x80, + 0x98, 0x3D, 0xF0, 0x7B, 0xD7, 0x01, 0x2B, 0x0D, + 0x40, 0x2A, 0x0F, 0x40, 0x43, 0xFC, 0xB2, 0x77, + 0x5A, 0xDF, 0x0B, 0xAD, 0x17, 0x4F, 0x9B, 0x08, + 0xD1, 0x67, 0x6E, 0x47, 0x69, 0x85, 0x78, 0x5C, + 0x0A, 0x5D, 0xCC, 0x41, 0xDB, 0xFF, 0x6D, 0x95, + 0xEF, 0x4D, 0x66, 0xA3, 0xFB, 0xDC, 0x4A, 0x74, + 0xB8, 0x2B, 0xA5, 0x2D, 0xA0, 0x51, 0x2B, 0x74 + }, + { + 0xAE, 0xD8, 0xFA, 0x76, 0x4B, 0x0F, 0xBF, 0xF8, + 0x21, 0xE0, 0x52, 0x33, 0xD2, 0xF7, 0xB0, 0x90, + 0x0E, 0xC4, 0x4D, 0x82, 0x6F, 0x95, 0xE9, 0x3C, + 0x34, 0x3C, 0x1B, 0xC3, 0xBA, 0x5A, 0x24, 0x37, + 0x4B, 0x1D, 0x61, 0x6E, 0x7E, 0x7A, 0xBA, 0x45, + 0x3A, 0x0A, 0xDA, 0x5E, 0x4F, 0xAB, 0x53, 0x82, + 0x40, 0x9E, 0x0D, 0x42, 0xCE, 0x9C, 0x2B, 0xC7, + 0xFB, 0x39, 0xA9, 0x9C, 0x34, 0x0C, 0x20, 0xF0 + }, + { + 0x7B, 0xA3, 0xB2, 0xE2, 0x97, 0x23, 0x35, 0x22, + 0xEE, 0xB3, 0x43, 0xBD, 0x3E, 0xBC, 0xFD, 0x83, + 0x5A, 0x04, 0x00, 0x77, 0x35, 0xE8, 0x7F, 0x0C, + 0xA3, 0x00, 0xCB, 0xEE, 0x6D, 0x41, 0x65, 0x65, + 0x16, 0x21, 0x71, 0x58, 0x1E, 0x40, 0x20, 0xFF, + 0x4C, 0xF1, 0x76, 0x45, 0x0F, 0x12, 0x91, 0xEA, + 0x22, 0x85, 0xCB, 0x9E, 0xBF, 0xFE, 0x4C, 0x56, + 0x66, 0x06, 0x27, 0x68, 0x51, 0x45, 0x05, 0x1C + }, + { + 0xDE, 0x74, 0x8B, 0xCF, 0x89, 0xEC, 0x88, 0x08, + 0x47, 0x21, 0xE1, 0x6B, 0x85, 0xF3, 0x0A, 0xDB, + 0x1A, 0x61, 0x34, 0xD6, 0x64, 0xB5, 0x84, 0x35, + 0x69, 0xBA, 0xBC, 0x5B, 0xBD, 0x1A, 0x15, 0xCA, + 0x9B, 0x61, 0x80, 0x3C, 0x90, 0x1A, 0x4F, 0xEF, + 0x32, 0x96, 0x5A, 0x17, 0x49, 0xC9, 0xF3, 0xA4, + 0xE2, 0x43, 0xE1, 0x73, 0x93, 0x9D, 0xC5, 0xA8, + 0xDC, 0x49, 0x5C, 0x67, 0x1A, 0xB5, 0x21, 0x45 + }, + { + 0xAA, 0xF4, 0xD2, 0xBD, 0xF2, 0x00, 0xA9, 0x19, + 0x70, 0x6D, 0x98, 0x42, 0xDC, 0xE1, 0x6C, 0x98, + 0x14, 0x0D, 0x34, 0xBC, 0x43, 0x3D, 0xF3, 0x20, + 0xAB, 0xA9, 0xBD, 0x42, 0x9E, 0x54, 0x9A, 0xA7, + 0xA3, 0x39, 0x76, 0x52, 0xA4, 0xD7, 0x68, 0x27, + 0x77, 0x86, 0xCF, 0x99, 0x3C, 0xDE, 0x23, 0x38, + 0x67, 0x3E, 0xD2, 0xE6, 0xB6, 0x6C, 0x96, 0x1F, + 0xEF, 0xB8, 0x2C, 0xD2, 0x0C, 0x93, 0x33, 0x8F + }, + { + 0xC4, 0x08, 0x21, 0x89, 0x68, 0xB7, 0x88, 0xBF, + 0x86, 0x4F, 0x09, 0x97, 0xE6, 0xBC, 0x4C, 0x3D, + 0xBA, 0x68, 0xB2, 0x76, 0xE2, 0x12, 0x5A, 0x48, + 0x43, 0x29, 0x60, 0x52, 0xFF, 0x93, 0xBF, 0x57, + 0x67, 0xB8, 0xCD, 0xCE, 0x71, 0x31, 0xF0, 0x87, + 0x64, 0x30, 0xC1, 0x16, 0x5F, 0xEC, 0x6C, 0x4F, + 0x47, 0xAD, 0xAA, 0x4F, 0xD8, 0xBC, 0xFA, 0xCE, + 0xF4, 0x63, 0xB5, 0xD3, 0xD0, 0xFA, 0x61, 0xA0 + }, + { + 0x76, 0xD2, 0xD8, 0x19, 0xC9, 0x2B, 0xCE, 0x55, + 0xFA, 0x8E, 0x09, 0x2A, 0xB1, 0xBF, 0x9B, 0x9E, + 0xAB, 0x23, 0x7A, 0x25, 0x26, 0x79, 0x86, 0xCA, + 0xCF, 0x2B, 0x8E, 0xE1, 0x4D, 0x21, 0x4D, 0x73, + 0x0D, 0xC9, 0xA5, 0xAA, 0x2D, 0x7B, 0x59, 0x6E, + 0x86, 0xA1, 0xFD, 0x8F, 0xA0, 0x80, 0x4C, 0x77, + 0x40, 0x2D, 0x2F, 0xCD, 0x45, 0x08, 0x36, 0x88, + 0xB2, 0x18, 0xB1, 0xCD, 0xFA, 0x0D, 0xCB, 0xCB + }, + { + 0x72, 0x06, 0x5E, 0xE4, 0xDD, 0x91, 0xC2, 0xD8, + 0x50, 0x9F, 0xA1, 0xFC, 0x28, 0xA3, 0x7C, 0x7F, + 0xC9, 0xFA, 0x7D, 0x5B, 0x3F, 0x8A, 0xD3, 0xD0, + 0xD7, 0xA2, 0x56, 0x26, 0xB5, 0x7B, 0x1B, 0x44, + 0x78, 0x8D, 0x4C, 0xAF, 0x80, 0x62, 0x90, 0x42, + 0x5F, 0x98, 0x90, 0xA3, 0xA2, 0xA3, 0x5A, 0x90, + 0x5A, 0xB4, 0xB3, 0x7A, 0xCF, 0xD0, 0xDA, 0x6E, + 0x45, 0x17, 0xB2, 0x52, 0x5C, 0x96, 0x51, 0xE4 + }, + { + 0x64, 0x47, 0x5D, 0xFE, 0x76, 0x00, 0xD7, 0x17, + 0x1B, 0xEA, 0x0B, 0x39, 0x4E, 0x27, 0xC9, 0xB0, + 0x0D, 0x8E, 0x74, 0xDD, 0x1E, 0x41, 0x6A, 0x79, + 0x47, 0x36, 0x82, 0xAD, 0x3D, 0xFD, 0xBB, 0x70, + 0x66, 0x31, 0x55, 0x80, 0x55, 0xCF, 0xC8, 0xA4, + 0x0E, 0x07, 0xBD, 0x01, 0x5A, 0x45, 0x40, 0xDC, + 0xDE, 0xA1, 0x58, 0x83, 0xCB, 0xBF, 0x31, 0x41, + 0x2D, 0xF1, 0xDE, 0x1C, 0xD4, 0x15, 0x2B, 0x91 + }, + { + 0x12, 0xCD, 0x16, 0x74, 0xA4, 0x48, 0x8A, 0x5D, + 0x7C, 0x2B, 0x31, 0x60, 0xD2, 0xE2, 0xC4, 0xB5, + 0x83, 0x71, 0xBE, 0xDA, 0xD7, 0x93, 0x41, 0x8D, + 0x6F, 0x19, 0xC6, 0xEE, 0x38, 0x5D, 0x70, 0xB3, + 0xE0, 0x67, 0x39, 0x36, 0x9D, 0x4D, 0xF9, 0x10, + 0xED, 0xB0, 0xB0, 0xA5, 0x4C, 0xBF, 0xF4, 0x3D, + 0x54, 0x54, 0x4C, 0xD3, 0x7A, 0xB3, 0xA0, 0x6C, + 0xFA, 0x0A, 0x3D, 0xDA, 0xC8, 0xB6, 0x6C, 0x89 + }, + { + 0x60, 0x75, 0x69, 0x66, 0x47, 0x9D, 0xED, 0xC6, + 0xDD, 0x4B, 0xCF, 0xF8, 0xEA, 0x7D, 0x1D, 0x4C, + 0xE4, 0xD4, 0xAF, 0x2E, 0x7B, 0x09, 0x7E, 0x32, + 0xE3, 0x76, 0x35, 0x18, 0x44, 0x11, 0x47, 0xCC, + 0x12, 0xB3, 0xC0, 0xEE, 0x6D, 0x2E, 0xCA, 0xBF, + 0x11, 0x98, 0xCE, 0xC9, 0x2E, 0x86, 0xA3, 0x61, + 0x6F, 0xBA, 0x4F, 0x4E, 0x87, 0x2F, 0x58, 0x25, + 0x33, 0x0A, 0xDB, 0xB4, 0xC1, 0xDE, 0xE4, 0x44 + }, + { + 0xA7, 0x80, 0x3B, 0xCB, 0x71, 0xBC, 0x1D, 0x0F, + 0x43, 0x83, 0xDD, 0xE1, 0xE0, 0x61, 0x2E, 0x04, + 0xF8, 0x72, 0xB7, 0x15, 0xAD, 0x30, 0x81, 0x5C, + 0x22, 0x49, 0xCF, 0x34, 0xAB, 0xB8, 0xB0, 0x24, + 0x91, 0x5C, 0xB2, 0xFC, 0x9F, 0x4E, 0x7C, 0xC4, + 0xC8, 0xCF, 0xD4, 0x5B, 0xE2, 0xD5, 0xA9, 0x1E, + 0xAB, 0x09, 0x41, 0xC7, 0xD2, 0x70, 0xE2, 0xDA, + 0x4C, 0xA4, 0xA9, 0xF7, 0xAC, 0x68, 0x66, 0x3A + }, + { + 0xB8, 0x4E, 0xF6, 0xA7, 0x22, 0x9A, 0x34, 0xA7, + 0x50, 0xD9, 0xA9, 0x8E, 0xE2, 0x52, 0x98, 0x71, + 0x81, 0x6B, 0x87, 0xFB, 0xE3, 0xBC, 0x45, 0xB4, + 0x5F, 0xA5, 0xAE, 0x82, 0xD5, 0x14, 0x15, 0x40, + 0x21, 0x11, 0x65, 0xC3, 0xC5, 0xD7, 0xA7, 0x47, + 0x6B, 0xA5, 0xA4, 0xAA, 0x06, 0xD6, 0x64, 0x76, + 0xF0, 0xD9, 0xDC, 0x49, 0xA3, 0xF1, 0xEE, 0x72, + 0xC3, 0xAC, 0xAB, 0xD4, 0x98, 0x96, 0x74, 0x14 + }, + { + 0xFA, 0xE4, 0xB6, 0xD8, 0xEF, 0xC3, 0xF8, 0xC8, + 0xE6, 0x4D, 0x00, 0x1D, 0xAB, 0xEC, 0x3A, 0x21, + 0xF5, 0x44, 0xE8, 0x27, 0x14, 0x74, 0x52, 0x51, + 0xB2, 0xB4, 0xB3, 0x93, 0xF2, 0xF4, 0x3E, 0x0D, + 0xA3, 0xD4, 0x03, 0xC6, 0x4D, 0xB9, 0x5A, 0x2C, + 0xB6, 0xE2, 0x3E, 0xBB, 0x7B, 0x9E, 0x94, 0xCD, + 0xD5, 0xDD, 0xAC, 0x54, 0xF0, 0x7C, 0x4A, 0x61, + 0xBD, 0x3C, 0xB1, 0x0A, 0xA6, 0xF9, 0x3B, 0x49 + }, + { + 0x34, 0xF7, 0x28, 0x66, 0x05, 0xA1, 0x22, 0x36, + 0x95, 0x40, 0x14, 0x1D, 0xED, 0x79, 0xB8, 0x95, + 0x72, 0x55, 0xDA, 0x2D, 0x41, 0x55, 0xAB, 0xBF, + 0x5A, 0x8D, 0xBB, 0x89, 0xC8, 0xEB, 0x7E, 0xDE, + 0x8E, 0xEE, 0xF1, 0xDA, 0xA4, 0x6D, 0xC2, 0x9D, + 0x75, 0x1D, 0x04, 0x5D, 0xC3, 0xB1, 0xD6, 0x58, + 0xBB, 0x64, 0xB8, 0x0F, 0xF8, 0x58, 0x9E, 0xDD, + 0xB3, 0x82, 0x4B, 0x13, 0xDA, 0x23, 0x5A, 0x6B + }, + { + 0x3B, 0x3B, 0x48, 0x43, 0x4B, 0xE2, 0x7B, 0x9E, + 0xAB, 0xAB, 0xBA, 0x43, 0xBF, 0x6B, 0x35, 0xF1, + 0x4B, 0x30, 0xF6, 0xA8, 0x8D, 0xC2, 0xE7, 0x50, + 0xC3, 0x58, 0x47, 0x0D, 0x6B, 0x3A, 0xA3, 0xC1, + 0x8E, 0x47, 0xDB, 0x40, 0x17, 0xFA, 0x55, 0x10, + 0x6D, 0x82, 0x52, 0xF0, 0x16, 0x37, 0x1A, 0x00, + 0xF5, 0xF8, 0xB0, 0x70, 0xB7, 0x4B, 0xA5, 0xF2, + 0x3C, 0xFF, 0xC5, 0x51, 0x1C, 0x9F, 0x09, 0xF0 + }, + { + 0xBA, 0x28, 0x9E, 0xBD, 0x65, 0x62, 0xC4, 0x8C, + 0x3E, 0x10, 0xA8, 0xAD, 0x6C, 0xE0, 0x2E, 0x73, + 0x43, 0x3D, 0x1E, 0x93, 0xD7, 0xC9, 0x27, 0x9D, + 0x4D, 0x60, 0xA7, 0xE8, 0x79, 0xEE, 0x11, 0xF4, + 0x41, 0xA0, 0x00, 0xF4, 0x8E, 0xD9, 0xF7, 0xC4, + 0xED, 0x87, 0xA4, 0x51, 0x36, 0xD7, 0xDC, 0xCD, + 0xCA, 0x48, 0x21, 0x09, 0xC7, 0x8A, 0x51, 0x06, + 0x2B, 0x3B, 0xA4, 0x04, 0x4A, 0xDA, 0x24, 0x69 + }, + { + 0x02, 0x29, 0x39, 0xE2, 0x38, 0x6C, 0x5A, 0x37, + 0x04, 0x98, 0x56, 0xC8, 0x50, 0xA2, 0xBB, 0x10, + 0xA1, 0x3D, 0xFE, 0xA4, 0x21, 0x2B, 0x4C, 0x73, + 0x2A, 0x88, 0x40, 0xA9, 0xFF, 0xA5, 0xFA, 0xF5, + 0x48, 0x75, 0xC5, 0x44, 0x88, 0x16, 0xB2, 0x78, + 0x5A, 0x00, 0x7D, 0xA8, 0xA8, 0xD2, 0xBC, 0x7D, + 0x71, 0xA5, 0x4E, 0x4E, 0x65, 0x71, 0xF1, 0x0B, + 0x60, 0x0C, 0xBD, 0xB2, 0x5D, 0x13, 0xED, 0xE3 + }, + { + 0xE6, 0xFE, 0xC1, 0x9D, 0x89, 0xCE, 0x87, 0x17, + 0xB1, 0xA0, 0x87, 0x02, 0x46, 0x70, 0xFE, 0x02, + 0x6F, 0x6C, 0x7C, 0xBD, 0xA1, 0x1C, 0xAE, 0xF9, + 0x59, 0xBB, 0x2D, 0x35, 0x1B, 0xF8, 0x56, 0xF8, + 0x05, 0x5D, 0x1C, 0x0E, 0xBD, 0xAA, 0xA9, 0xD1, + 0xB1, 0x78, 0x86, 0xFC, 0x2C, 0x56, 0x2B, 0x5E, + 0x99, 0x64, 0x2F, 0xC0, 0x64, 0x71, 0x0C, 0x0D, + 0x34, 0x88, 0xA0, 0x2B, 0x5E, 0xD7, 0xF6, 0xFD + }, + { + 0x94, 0xC9, 0x6F, 0x02, 0xA8, 0xF5, 0x76, 0xAC, + 0xA3, 0x2B, 0xA6, 0x1C, 0x2B, 0x20, 0x6F, 0x90, + 0x72, 0x85, 0xD9, 0x29, 0x9B, 0x83, 0xAC, 0x17, + 0x5C, 0x20, 0x9A, 0x8D, 0x43, 0xD5, 0x3B, 0xFE, + 0x68, 0x3D, 0xD1, 0xD8, 0x3E, 0x75, 0x49, 0xCB, + 0x90, 0x6C, 0x28, 0xF5, 0x9A, 0xB7, 0xC4, 0x6F, + 0x87, 0x51, 0x36, 0x6A, 0x28, 0xC3, 0x9D, 0xD5, + 0xFE, 0x26, 0x93, 0xC9, 0x01, 0x96, 0x66, 0xC8 + }, + { + 0x31, 0xA0, 0xCD, 0x21, 0x5E, 0xBD, 0x2C, 0xB6, + 0x1D, 0xE5, 0xB9, 0xED, 0xC9, 0x1E, 0x61, 0x95, + 0xE3, 0x1C, 0x59, 0xA5, 0x64, 0x8D, 0x5C, 0x9F, + 0x73, 0x7E, 0x12, 0x5B, 0x26, 0x05, 0x70, 0x8F, + 0x2E, 0x32, 0x5A, 0xB3, 0x38, 0x1C, 0x8D, 0xCE, + 0x1A, 0x3E, 0x95, 0x88, 0x86, 0xF1, 0xEC, 0xDC, + 0x60, 0x31, 0x8F, 0x88, 0x2C, 0xFE, 0x20, 0xA2, + 0x41, 0x91, 0x35, 0x2E, 0x61, 0x7B, 0x0F, 0x21 + }, + { + 0x91, 0xAB, 0x50, 0x4A, 0x52, 0x2D, 0xCE, 0x78, + 0x77, 0x9F, 0x4C, 0x6C, 0x6B, 0xA2, 0xE6, 0xB6, + 0xDB, 0x55, 0x65, 0xC7, 0x6D, 0x3E, 0x7E, 0x7C, + 0x92, 0x0C, 0xAF, 0x7F, 0x75, 0x7E, 0xF9, 0xDB, + 0x7C, 0x8F, 0xCF, 0x10, 0xE5, 0x7F, 0x03, 0x37, + 0x9E, 0xA9, 0xBF, 0x75, 0xEB, 0x59, 0x89, 0x5D, + 0x96, 0xE1, 0x49, 0x80, 0x0B, 0x6A, 0xAE, 0x01, + 0xDB, 0x77, 0x8B, 0xB9, 0x0A, 0xFB, 0xC9, 0x89 + }, + { + 0xD8, 0x5C, 0xAB, 0xC6, 0xBD, 0x5B, 0x1A, 0x01, + 0xA5, 0xAF, 0xD8, 0xC6, 0x73, 0x47, 0x40, 0xDA, + 0x9F, 0xD1, 0xC1, 0xAC, 0xC6, 0xDB, 0x29, 0xBF, + 0xC8, 0xA2, 0xE5, 0xB6, 0x68, 0xB0, 0x28, 0xB6, + 0xB3, 0x15, 0x4B, 0xFB, 0x87, 0x03, 0xFA, 0x31, + 0x80, 0x25, 0x1D, 0x58, 0x9A, 0xD3, 0x80, 0x40, + 0xCE, 0xB7, 0x07, 0xC4, 0xBA, 0xD1, 0xB5, 0x34, + 0x3C, 0xB4, 0x26, 0xB6, 0x1E, 0xAA, 0x49, 0xC1 + }, + { + 0xD6, 0x2E, 0xFB, 0xEC, 0x2C, 0xA9, 0xC1, 0xF8, + 0xBD, 0x66, 0xCE, 0x8B, 0x3F, 0x6A, 0x89, 0x8C, + 0xB3, 0xF7, 0x56, 0x6B, 0xA6, 0x56, 0x8C, 0x61, + 0x8A, 0xD1, 0xFE, 0xB2, 0xB6, 0x5B, 0x76, 0xC3, + 0xCE, 0x1D, 0xD2, 0x0F, 0x73, 0x95, 0x37, 0x2F, + 0xAF, 0x28, 0x42, 0x7F, 0x61, 0xC9, 0x27, 0x80, + 0x49, 0xCF, 0x01, 0x40, 0xDF, 0x43, 0x4F, 0x56, + 0x33, 0x04, 0x8C, 0x86, 0xB8, 0x1E, 0x03, 0x99 + }, + { + 0x7C, 0x8F, 0xDC, 0x61, 0x75, 0x43, 0x9E, 0x2C, + 0x3D, 0xB1, 0x5B, 0xAF, 0xA7, 0xFB, 0x06, 0x14, + 0x3A, 0x6A, 0x23, 0xBC, 0x90, 0xF4, 0x49, 0xE7, + 0x9D, 0xEE, 0xF7, 0x3C, 0x3D, 0x49, 0x2A, 0x67, + 0x17, 0x15, 0xC1, 0x93, 0xB6, 0xFE, 0xA9, 0xF0, + 0x36, 0x05, 0x0B, 0x94, 0x60, 0x69, 0x85, 0x6B, + 0x89, 0x7E, 0x08, 0xC0, 0x07, 0x68, 0xF5, 0xEE, + 0x5D, 0xDC, 0xF7, 0x0B, 0x7C, 0xD6, 0xD0, 0xE0 + }, + { + 0x58, 0x60, 0x2E, 0xE7, 0x46, 0x8E, 0x6B, 0xC9, + 0xDF, 0x21, 0xBD, 0x51, 0xB2, 0x3C, 0x00, 0x5F, + 0x72, 0xD6, 0xCB, 0x01, 0x3F, 0x0A, 0x1B, 0x48, + 0xCB, 0xEC, 0x5E, 0xCA, 0x29, 0x92, 0x99, 0xF9, + 0x7F, 0x09, 0xF5, 0x4A, 0x9A, 0x01, 0x48, 0x3E, + 0xAE, 0xB3, 0x15, 0xA6, 0x47, 0x8B, 0xAD, 0x37, + 0xBA, 0x47, 0xCA, 0x13, 0x47, 0xC7, 0xC8, 0xFC, + 0x9E, 0x66, 0x95, 0x59, 0x2C, 0x91, 0xD7, 0x23 + }, + { + 0x27, 0xF5, 0xB7, 0x9E, 0xD2, 0x56, 0xB0, 0x50, + 0x99, 0x3D, 0x79, 0x34, 0x96, 0xED, 0xF4, 0x80, + 0x7C, 0x1D, 0x85, 0xA7, 0xB0, 0xA6, 0x7C, 0x9C, + 0x4F, 0xA9, 0x98, 0x60, 0x75, 0x0B, 0x0A, 0xE6, + 0x69, 0x89, 0x67, 0x0A, 0x8F, 0xFD, 0x78, 0x56, + 0xD7, 0xCE, 0x41, 0x15, 0x99, 0xE5, 0x8C, 0x4D, + 0x77, 0xB2, 0x32, 0xA6, 0x2B, 0xEF, 0x64, 0xD1, + 0x52, 0x75, 0xBE, 0x46, 0xA6, 0x82, 0x35, 0xFF + }, + { + 0x39, 0x57, 0xA9, 0x76, 0xB9, 0xF1, 0x88, 0x7B, + 0xF0, 0x04, 0xA8, 0xDC, 0xA9, 0x42, 0xC9, 0x2D, + 0x2B, 0x37, 0xEA, 0x52, 0x60, 0x0F, 0x25, 0xE0, + 0xC9, 0xBC, 0x57, 0x07, 0xD0, 0x27, 0x9C, 0x00, + 0xC6, 0xE8, 0x5A, 0x83, 0x9B, 0x0D, 0x2D, 0x8E, + 0xB5, 0x9C, 0x51, 0xD9, 0x47, 0x88, 0xEB, 0xE6, + 0x24, 0x74, 0xA7, 0x91, 0xCA, 0xDF, 0x52, 0xCC, + 0xCF, 0x20, 0xF5, 0x07, 0x0B, 0x65, 0x73, 0xFC + }, + { + 0xEA, 0xA2, 0x37, 0x6D, 0x55, 0x38, 0x0B, 0xF7, + 0x72, 0xEC, 0xCA, 0x9C, 0xB0, 0xAA, 0x46, 0x68, + 0xC9, 0x5C, 0x70, 0x71, 0x62, 0xFA, 0x86, 0xD5, + 0x18, 0xC8, 0xCE, 0x0C, 0xA9, 0xBF, 0x73, 0x62, + 0xB9, 0xF2, 0xA0, 0xAD, 0xC3, 0xFF, 0x59, 0x92, + 0x2D, 0xF9, 0x21, 0xB9, 0x45, 0x67, 0xE8, 0x1E, + 0x45, 0x2F, 0x6C, 0x1A, 0x07, 0xFC, 0x81, 0x7C, + 0xEB, 0xE9, 0x96, 0x04, 0xB3, 0x50, 0x5D, 0x38 + }, + { + 0xC1, 0xE2, 0xC7, 0x8B, 0x6B, 0x27, 0x34, 0xE2, + 0x48, 0x0E, 0xC5, 0x50, 0x43, 0x4C, 0xB5, 0xD6, + 0x13, 0x11, 0x1A, 0xDC, 0xC2, 0x1D, 0x47, 0x55, + 0x45, 0xC3, 0xB1, 0xB7, 0xE6, 0xFF, 0x12, 0x44, + 0x44, 0x76, 0xE5, 0xC0, 0x55, 0x13, 0x2E, 0x22, + 0x29, 0xDC, 0x0F, 0x80, 0x70, 0x44, 0xBB, 0x91, + 0x9B, 0x1A, 0x56, 0x62, 0xDD, 0x38, 0xA9, 0xEE, + 0x65, 0xE2, 0x43, 0xA3, 0x91, 0x1A, 0xED, 0x1A + }, + { + 0x8A, 0xB4, 0x87, 0x13, 0x38, 0x9D, 0xD0, 0xFC, + 0xF9, 0xF9, 0x65, 0xD3, 0xCE, 0x66, 0xB1, 0xE5, + 0x59, 0xA1, 0xF8, 0xC5, 0x87, 0x41, 0xD6, 0x76, + 0x83, 0xCD, 0x97, 0x13, 0x54, 0xF4, 0x52, 0xE6, + 0x2D, 0x02, 0x07, 0xA6, 0x5E, 0x43, 0x6C, 0x5D, + 0x5D, 0x8F, 0x8E, 0xE7, 0x1C, 0x6A, 0xBF, 0xE5, + 0x0E, 0x66, 0x90, 0x04, 0xC3, 0x02, 0xB3, 0x1A, + 0x7E, 0xA8, 0x31, 0x1D, 0x4A, 0x91, 0x60, 0x51 + }, + { + 0x24, 0xCE, 0x0A, 0xDD, 0xAA, 0x4C, 0x65, 0x03, + 0x8B, 0xD1, 0xB1, 0xC0, 0xF1, 0x45, 0x2A, 0x0B, + 0x12, 0x87, 0x77, 0xAA, 0xBC, 0x94, 0xA2, 0x9D, + 0xF2, 0xFD, 0x6C, 0x7E, 0x2F, 0x85, 0xF8, 0xAB, + 0x9A, 0xC7, 0xEF, 0xF5, 0x16, 0xB0, 0xE0, 0xA8, + 0x25, 0xC8, 0x4A, 0x24, 0xCF, 0xE4, 0x92, 0xEA, + 0xAD, 0x0A, 0x63, 0x08, 0xE4, 0x6D, 0xD4, 0x2F, + 0xE8, 0x33, 0x3A, 0xB9, 0x71, 0xBB, 0x30, 0xCA + }, + { + 0x51, 0x54, 0xF9, 0x29, 0xEE, 0x03, 0x04, 0x5B, + 0x6B, 0x0C, 0x00, 0x04, 0xFA, 0x77, 0x8E, 0xDE, + 0xE1, 0xD1, 0x39, 0x89, 0x32, 0x67, 0xCC, 0x84, + 0x82, 0x5A, 0xD7, 0xB3, 0x6C, 0x63, 0xDE, 0x32, + 0x79, 0x8E, 0x4A, 0x16, 0x6D, 0x24, 0x68, 0x65, + 0x61, 0x35, 0x4F, 0x63, 0xB0, 0x07, 0x09, 0xA1, + 0x36, 0x4B, 0x3C, 0x24, 0x1D, 0xE3, 0xFE, 0xBF, + 0x07, 0x54, 0x04, 0x58, 0x97, 0x46, 0x7C, 0xD4 + }, + { + 0xE7, 0x4E, 0x90, 0x79, 0x20, 0xFD, 0x87, 0xBD, + 0x5A, 0xD6, 0x36, 0xDD, 0x11, 0x08, 0x5E, 0x50, + 0xEE, 0x70, 0x45, 0x9C, 0x44, 0x3E, 0x1C, 0xE5, + 0x80, 0x9A, 0xF2, 0xBC, 0x2E, 0xBA, 0x39, 0xF9, + 0xE6, 0xD7, 0x12, 0x8E, 0x0E, 0x37, 0x12, 0xC3, + 0x16, 0xDA, 0x06, 0xF4, 0x70, 0x5D, 0x78, 0xA4, + 0x83, 0x8E, 0x28, 0x12, 0x1D, 0x43, 0x44, 0xA2, + 0xC7, 0x9C, 0x5E, 0x0D, 0xB3, 0x07, 0xA6, 0x77 + }, + { + 0xBF, 0x91, 0xA2, 0x23, 0x34, 0xBA, 0xC2, 0x0F, + 0x3F, 0xD8, 0x06, 0x63, 0xB3, 0xCD, 0x06, 0xC4, + 0xE8, 0x80, 0x2F, 0x30, 0xE6, 0xB5, 0x9F, 0x90, + 0xD3, 0x03, 0x5C, 0xC9, 0x79, 0x8A, 0x21, 0x7E, + 0xD5, 0xA3, 0x1A, 0xBB, 0xDA, 0x7F, 0xA6, 0x84, + 0x28, 0x27, 0xBD, 0xF2, 0xA7, 0xA1, 0xC2, 0x1F, + 0x6F, 0xCF, 0xCC, 0xBB, 0x54, 0xC6, 0xC5, 0x29, + 0x26, 0xF3, 0x2D, 0xA8, 0x16, 0x26, 0x9B, 0xE1 + }, + { + 0xD9, 0xD5, 0xC7, 0x4B, 0xE5, 0x12, 0x1B, 0x0B, + 0xD7, 0x42, 0xF2, 0x6B, 0xFF, 0xB8, 0xC8, 0x9F, + 0x89, 0x17, 0x1F, 0x3F, 0x93, 0x49, 0x13, 0x49, + 0x2B, 0x09, 0x03, 0xC2, 0x71, 0xBB, 0xE2, 0xB3, + 0x39, 0x5E, 0xF2, 0x59, 0x66, 0x9B, 0xEF, 0x43, + 0xB5, 0x7F, 0x7F, 0xCC, 0x30, 0x27, 0xDB, 0x01, + 0x82, 0x3F, 0x6B, 0xAE, 0xE6, 0x6E, 0x4F, 0x9F, + 0xEA, 0xD4, 0xD6, 0x72, 0x6C, 0x74, 0x1F, 0xCE + }, + { + 0x50, 0xC8, 0xB8, 0xCF, 0x34, 0xCD, 0x87, 0x9F, + 0x80, 0xE2, 0xFA, 0xAB, 0x32, 0x30, 0xB0, 0xC0, + 0xE1, 0xCC, 0x3E, 0x9D, 0xCA, 0xDE, 0xB1, 0xB9, + 0xD9, 0x7A, 0xB9, 0x23, 0x41, 0x5D, 0xD9, 0xA1, + 0xFE, 0x38, 0xAD, 0xDD, 0x5C, 0x11, 0x75, 0x6C, + 0x67, 0x99, 0x0B, 0x25, 0x6E, 0x95, 0xAD, 0x6D, + 0x8F, 0x9F, 0xED, 0xCE, 0x10, 0xBF, 0x1C, 0x90, + 0x67, 0x9C, 0xDE, 0x0E, 0xCF, 0x1B, 0xE3, 0x47 + }, + { + 0x0A, 0x38, 0x6E, 0x7C, 0xD5, 0xDD, 0x9B, 0x77, + 0xA0, 0x35, 0xE0, 0x9F, 0xE6, 0xFE, 0xE2, 0xC8, + 0xCE, 0x61, 0xB5, 0x38, 0x3C, 0x87, 0xEA, 0x43, + 0x20, 0x50, 0x59, 0xC5, 0xE4, 0xCD, 0x4F, 0x44, + 0x08, 0x31, 0x9B, 0xB0, 0xA8, 0x23, 0x60, 0xF6, + 0xA5, 0x8E, 0x6C, 0x9C, 0xE3, 0xF4, 0x87, 0xC4, + 0x46, 0x06, 0x3B, 0xF8, 0x13, 0xBC, 0x6B, 0xA5, + 0x35, 0xE1, 0x7F, 0xC1, 0x82, 0x6C, 0xFC, 0x91 + }, + { + 0x1F, 0x14, 0x59, 0xCB, 0x6B, 0x61, 0xCB, 0xAC, + 0x5F, 0x0E, 0xFE, 0x8F, 0xC4, 0x87, 0x53, 0x8F, + 0x42, 0x54, 0x89, 0x87, 0xFC, 0xD5, 0x62, 0x21, + 0xCF, 0xA7, 0xBE, 0xB2, 0x25, 0x04, 0x76, 0x9E, + 0x79, 0x2C, 0x45, 0xAD, 0xFB, 0x1D, 0x6B, 0x3D, + 0x60, 0xD7, 0xB7, 0x49, 0xC8, 0xA7, 0x5B, 0x0B, + 0xDF, 0x14, 0xE8, 0xEA, 0x72, 0x1B, 0x95, 0xDC, + 0xA5, 0x38, 0xCA, 0x6E, 0x25, 0x71, 0x12, 0x09 + }, + { + 0xE5, 0x8B, 0x38, 0x36, 0xB7, 0xD8, 0xFE, 0xDB, + 0xB5, 0x0C, 0xA5, 0x72, 0x5C, 0x65, 0x71, 0xE7, + 0x4C, 0x07, 0x85, 0xE9, 0x78, 0x21, 0xDA, 0xB8, + 0xB6, 0x29, 0x8C, 0x10, 0xE4, 0xC0, 0x79, 0xD4, + 0xA6, 0xCD, 0xF2, 0x2F, 0x0F, 0xED, 0xB5, 0x50, + 0x32, 0x92, 0x5C, 0x16, 0x74, 0x81, 0x15, 0xF0, + 0x1A, 0x10, 0x5E, 0x77, 0xE0, 0x0C, 0xEE, 0x3D, + 0x07, 0x92, 0x4D, 0xC0, 0xD8, 0xF9, 0x06, 0x59 + }, + { + 0xB9, 0x29, 0xCC, 0x65, 0x05, 0xF0, 0x20, 0x15, + 0x86, 0x72, 0xDE, 0xDA, 0x56, 0xD0, 0xDB, 0x08, + 0x1A, 0x2E, 0xE3, 0x4C, 0x00, 0xC1, 0x10, 0x00, + 0x29, 0xBD, 0xF8, 0xEA, 0x98, 0x03, 0x4F, 0xA4, + 0xBF, 0x3E, 0x86, 0x55, 0xEC, 0x69, 0x7F, 0xE3, + 0x6F, 0x40, 0x55, 0x3C, 0x5B, 0xB4, 0x68, 0x01, + 0x64, 0x4A, 0x62, 0x7D, 0x33, 0x42, 0xF4, 0xFC, + 0x92, 0xB6, 0x1F, 0x03, 0x29, 0x0F, 0xB3, 0x81 + }, + { + 0x72, 0xD3, 0x53, 0x99, 0x4B, 0x49, 0xD3, 0xE0, + 0x31, 0x53, 0x92, 0x9A, 0x1E, 0x4D, 0x4F, 0x18, + 0x8E, 0xE5, 0x8A, 0xB9, 0xE7, 0x2E, 0xE8, 0xE5, + 0x12, 0xF2, 0x9B, 0xC7, 0x73, 0x91, 0x38, 0x19, + 0xCE, 0x05, 0x7D, 0xDD, 0x70, 0x02, 0xC0, 0x43, + 0x3E, 0xE0, 0xA1, 0x61, 0x14, 0xE3, 0xD1, 0x56, + 0xDD, 0x2C, 0x4A, 0x7E, 0x80, 0xEE, 0x53, 0x37, + 0x8B, 0x86, 0x70, 0xF2, 0x3E, 0x33, 0xEF, 0x56 + }, + { + 0xC7, 0x0E, 0xF9, 0xBF, 0xD7, 0x75, 0xD4, 0x08, + 0x17, 0x67, 0x37, 0xA0, 0x73, 0x6D, 0x68, 0x51, + 0x7C, 0xE1, 0xAA, 0xAD, 0x7E, 0x81, 0xA9, 0x3C, + 0x8C, 0x1E, 0xD9, 0x67, 0xEA, 0x21, 0x4F, 0x56, + 0xC8, 0xA3, 0x77, 0xB1, 0x76, 0x3E, 0x67, 0x66, + 0x15, 0xB6, 0x0F, 0x39, 0x88, 0x24, 0x1E, 0xAE, + 0x6E, 0xAB, 0x96, 0x85, 0xA5, 0x12, 0x49, 0x29, + 0xD2, 0x81, 0x88, 0xF2, 0x9E, 0xAB, 0x06, 0xF7 + }, + { + 0xC2, 0x30, 0xF0, 0x80, 0x26, 0x79, 0xCB, 0x33, + 0x82, 0x2E, 0xF8, 0xB3, 0xB2, 0x1B, 0xF7, 0xA9, + 0xA2, 0x89, 0x42, 0x09, 0x29, 0x01, 0xD7, 0xDA, + 0xC3, 0x76, 0x03, 0x00, 0x83, 0x10, 0x26, 0xCF, + 0x35, 0x4C, 0x92, 0x32, 0xDF, 0x3E, 0x08, 0x4D, + 0x99, 0x03, 0x13, 0x0C, 0x60, 0x1F, 0x63, 0xC1, + 0xF4, 0xA4, 0xA4, 0xB8, 0x10, 0x6E, 0x46, 0x8C, + 0xD4, 0x43, 0xBB, 0xE5, 0xA7, 0x34, 0xF4, 0x5F + }, + { + 0x6F, 0x43, 0x09, 0x4C, 0xAF, 0xB5, 0xEB, 0xF1, + 0xF7, 0xA4, 0x93, 0x7E, 0xC5, 0x0F, 0x56, 0xA4, + 0xC9, 0xDA, 0x30, 0x3C, 0xBB, 0x55, 0xAC, 0x1F, + 0x27, 0xF1, 0xF1, 0x97, 0x6C, 0xD9, 0x6B, 0xED, + 0xA9, 0x46, 0x4F, 0x0E, 0x7B, 0x9C, 0x54, 0x62, + 0x0B, 0x8A, 0x9F, 0xBA, 0x98, 0x31, 0x64, 0xB8, + 0xBE, 0x35, 0x78, 0x42, 0x5A, 0x02, 0x4F, 0x5F, + 0xE1, 0x99, 0xC3, 0x63, 0x56, 0xB8, 0x89, 0x72 + }, + { + 0x37, 0x45, 0x27, 0x3F, 0x4C, 0x38, 0x22, 0x5D, + 0xB2, 0x33, 0x73, 0x81, 0x87, 0x1A, 0x0C, 0x6A, + 0xAF, 0xD3, 0xAF, 0x9B, 0x01, 0x8C, 0x88, 0xAA, + 0x02, 0x02, 0x58, 0x50, 0xA5, 0xDC, 0x3A, 0x42, + 0xA1, 0xA3, 0xE0, 0x3E, 0x56, 0xCB, 0xF1, 0xB0, + 0x87, 0x6D, 0x63, 0xA4, 0x41, 0xF1, 0xD2, 0x85, + 0x6A, 0x39, 0xB8, 0x80, 0x1E, 0xB5, 0xAF, 0x32, + 0x52, 0x01, 0xC4, 0x15, 0xD6, 0x5E, 0x97, 0xFE + }, + { + 0xC5, 0x0C, 0x44, 0xCC, 0xA3, 0xEC, 0x3E, 0xDA, + 0xAE, 0x77, 0x9A, 0x7E, 0x17, 0x94, 0x50, 0xEB, + 0xDD, 0xA2, 0xF9, 0x70, 0x67, 0xC6, 0x90, 0xAA, + 0x6C, 0x5A, 0x4A, 0xC7, 0xC3, 0x01, 0x39, 0xBB, + 0x27, 0xC0, 0xDF, 0x4D, 0xB3, 0x22, 0x0E, 0x63, + 0xCB, 0x11, 0x0D, 0x64, 0xF3, 0x7F, 0xFE, 0x07, + 0x8D, 0xB7, 0x26, 0x53, 0xE2, 0xDA, 0xAC, 0xF9, + 0x3A, 0xE3, 0xF0, 0xA2, 0xD1, 0xA7, 0xEB, 0x2E + }, + { + 0x8A, 0xEF, 0x26, 0x3E, 0x38, 0x5C, 0xBC, 0x61, + 0xE1, 0x9B, 0x28, 0x91, 0x42, 0x43, 0x26, 0x2A, + 0xF5, 0xAF, 0xE8, 0x72, 0x6A, 0xF3, 0xCE, 0x39, + 0xA7, 0x9C, 0x27, 0x02, 0x8C, 0xF3, 0xEC, 0xD3, + 0xF8, 0xD2, 0xDF, 0xD9, 0xCF, 0xC9, 0xAD, 0x91, + 0xB5, 0x8F, 0x6F, 0x20, 0x77, 0x8F, 0xD5, 0xF0, + 0x28, 0x94, 0xA3, 0xD9, 0x1C, 0x7D, 0x57, 0xD1, + 0xE4, 0xB8, 0x66, 0xA7, 0xF3, 0x64, 0xB6, 0xBE + }, + { + 0x28, 0x69, 0x61, 0x41, 0xDE, 0x6E, 0x2D, 0x9B, + 0xCB, 0x32, 0x35, 0x57, 0x8A, 0x66, 0x16, 0x6C, + 0x14, 0x48, 0xD3, 0xE9, 0x05, 0xA1, 0xB4, 0x82, + 0xD4, 0x23, 0xBE, 0x4B, 0xC5, 0x36, 0x9B, 0xC8, + 0xC7, 0x4D, 0xAE, 0x0A, 0xCC, 0x9C, 0xC1, 0x23, + 0xE1, 0xD8, 0xDD, 0xCE, 0x9F, 0x97, 0x91, 0x7E, + 0x8C, 0x01, 0x9C, 0x55, 0x2D, 0xA3, 0x2D, 0x39, + 0xD2, 0x21, 0x9B, 0x9A, 0xBF, 0x0F, 0xA8, 0xC8 + }, + { + 0x2F, 0xB9, 0xEB, 0x20, 0x85, 0x83, 0x01, 0x81, + 0x90, 0x3A, 0x9D, 0xAF, 0xE3, 0xDB, 0x42, 0x8E, + 0xE1, 0x5B, 0xE7, 0x66, 0x22, 0x24, 0xEF, 0xD6, + 0x43, 0x37, 0x1F, 0xB2, 0x56, 0x46, 0xAE, 0xE7, + 0x16, 0xE5, 0x31, 0xEC, 0xA6, 0x9B, 0x2B, 0xDC, + 0x82, 0x33, 0xF1, 0xA8, 0x08, 0x1F, 0xA4, 0x3D, + 0xA1, 0x50, 0x03, 0x02, 0x97, 0x5A, 0x77, 0xF4, + 0x2F, 0xA5, 0x92, 0x13, 0x67, 0x10, 0xE9, 0xDC + }, + { + 0x66, 0xF9, 0xA7, 0x14, 0x3F, 0x7A, 0x33, 0x14, + 0xA6, 0x69, 0xBF, 0x2E, 0x24, 0xBB, 0xB3, 0x50, + 0x14, 0x26, 0x1D, 0x63, 0x9F, 0x49, 0x5B, 0x6C, + 0x9C, 0x1F, 0x10, 0x4F, 0xE8, 0xE3, 0x20, 0xAC, + 0xA6, 0x0D, 0x45, 0x50, 0xD6, 0x9D, 0x52, 0xED, + 0xBD, 0x5A, 0x3C, 0xDE, 0xB4, 0x01, 0x4A, 0xE6, + 0x5B, 0x1D, 0x87, 0xAA, 0x77, 0x0B, 0x69, 0xAE, + 0x5C, 0x15, 0xF4, 0x33, 0x0B, 0x0B, 0x0A, 0xD8 + }, + { + 0xF4, 0xC4, 0xDD, 0x1D, 0x59, 0x4C, 0x35, 0x65, + 0xE3, 0xE2, 0x5C, 0xA4, 0x3D, 0xAD, 0x82, 0xF6, + 0x2A, 0xBE, 0xA4, 0x83, 0x5E, 0xD4, 0xCD, 0x81, + 0x1B, 0xCD, 0x97, 0x5E, 0x46, 0x27, 0x98, 0x28, + 0xD4, 0x4D, 0x4C, 0x62, 0xC3, 0x67, 0x9F, 0x1B, + 0x7F, 0x7B, 0x9D, 0xD4, 0x57, 0x1D, 0x7B, 0x49, + 0x55, 0x73, 0x47, 0xB8, 0xC5, 0x46, 0x0C, 0xBD, + 0xC1, 0xBE, 0xF6, 0x90, 0xFB, 0x2A, 0x08, 0xC0 + }, + { + 0x8F, 0x1D, 0xC9, 0x64, 0x9C, 0x3A, 0x84, 0x55, + 0x1F, 0x8F, 0x6E, 0x91, 0xCA, 0xC6, 0x82, 0x42, + 0xA4, 0x3B, 0x1F, 0x8F, 0x32, 0x8E, 0xE9, 0x22, + 0x80, 0x25, 0x73, 0x87, 0xFA, 0x75, 0x59, 0xAA, + 0x6D, 0xB1, 0x2E, 0x4A, 0xEA, 0xDC, 0x2D, 0x26, + 0x09, 0x91, 0x78, 0x74, 0x9C, 0x68, 0x64, 0xB3, + 0x57, 0xF3, 0xF8, 0x3B, 0x2F, 0xB3, 0xEF, 0xA8, + 0xD2, 0xA8, 0xDB, 0x05, 0x6B, 0xED, 0x6B, 0xCC + }, + { + 0x31, 0x39, 0xC1, 0xA7, 0xF9, 0x7A, 0xFD, 0x16, + 0x75, 0xD4, 0x60, 0xEB, 0xBC, 0x07, 0xF2, 0x72, + 0x8A, 0xA1, 0x50, 0xDF, 0x84, 0x96, 0x24, 0x51, + 0x1E, 0xE0, 0x4B, 0x74, 0x3B, 0xA0, 0xA8, 0x33, + 0x09, 0x2F, 0x18, 0xC1, 0x2D, 0xC9, 0x1B, 0x4D, + 0xD2, 0x43, 0xF3, 0x33, 0x40, 0x2F, 0x59, 0xFE, + 0x28, 0xAB, 0xDB, 0xBB, 0xAE, 0x30, 0x1E, 0x7B, + 0x65, 0x9C, 0x7A, 0x26, 0xD5, 0xC0, 0xF9, 0x79 + }, + { + 0x06, 0xF9, 0x4A, 0x29, 0x96, 0x15, 0x8A, 0x81, + 0x9F, 0xE3, 0x4C, 0x40, 0xDE, 0x3C, 0xF0, 0x37, + 0x9F, 0xD9, 0xFB, 0x85, 0xB3, 0xE3, 0x63, 0xBA, + 0x39, 0x26, 0xA0, 0xE7, 0xD9, 0x60, 0xE3, 0xF4, + 0xC2, 0xE0, 0xC7, 0x0C, 0x7C, 0xE0, 0xCC, 0xB2, + 0xA6, 0x4F, 0xC2, 0x98, 0x69, 0xF6, 0xE7, 0xAB, + 0x12, 0xBD, 0x4D, 0x3F, 0x14, 0xFC, 0xE9, 0x43, + 0x27, 0x90, 0x27, 0xE7, 0x85, 0xFB, 0x5C, 0x29 + }, + { + 0xC2, 0x9C, 0x39, 0x9E, 0xF3, 0xEE, 0xE8, 0x96, + 0x1E, 0x87, 0x56, 0x5C, 0x1C, 0xE2, 0x63, 0x92, + 0x5F, 0xC3, 0xD0, 0xCE, 0x26, 0x7D, 0x13, 0xE4, + 0x8D, 0xD9, 0xE7, 0x32, 0xEE, 0x67, 0xB0, 0xF6, + 0x9F, 0xAD, 0x56, 0x40, 0x1B, 0x0F, 0x10, 0xFC, + 0xAA, 0xC1, 0x19, 0x20, 0x10, 0x46, 0xCC, 0xA2, + 0x8C, 0x5B, 0x14, 0xAB, 0xDE, 0xA3, 0x21, 0x2A, + 0xE6, 0x55, 0x62, 0xF7, 0xF1, 0x38, 0xDB, 0x3D + }, + { + 0x4C, 0xEC, 0x4C, 0x9D, 0xF5, 0x2E, 0xEF, 0x05, + 0xC3, 0xF6, 0xFA, 0xAA, 0x97, 0x91, 0xBC, 0x74, + 0x45, 0x93, 0x71, 0x83, 0x22, 0x4E, 0xCC, 0x37, + 0xA1, 0xE5, 0x8D, 0x01, 0x32, 0xD3, 0x56, 0x17, + 0x53, 0x1D, 0x7E, 0x79, 0x5F, 0x52, 0xAF, 0x7B, + 0x1E, 0xB9, 0xD1, 0x47, 0xDE, 0x12, 0x92, 0xD3, + 0x45, 0xFE, 0x34, 0x18, 0x23, 0xF8, 0xE6, 0xBC, + 0x1E, 0x5B, 0xAD, 0xCA, 0x5C, 0x65, 0x61, 0x08 + }, + { + 0x89, 0x8B, 0xFB, 0xAE, 0x93, 0xB3, 0xE1, 0x8D, + 0x00, 0x69, 0x7E, 0xAB, 0x7D, 0x97, 0x04, 0xFA, + 0x36, 0xEC, 0x33, 0x9D, 0x07, 0x61, 0x31, 0xCE, + 0xFD, 0xF3, 0x0E, 0xDB, 0xE8, 0xD9, 0xCC, 0x81, + 0xC3, 0xA8, 0x0B, 0x12, 0x96, 0x59, 0xB1, 0x63, + 0xA3, 0x23, 0xBA, 0xB9, 0x79, 0x3D, 0x4F, 0xEE, + 0xD9, 0x2D, 0x54, 0xDA, 0xE9, 0x66, 0xC7, 0x75, + 0x29, 0x76, 0x4A, 0x09, 0xBE, 0x88, 0xDB, 0x45 + }, + { + 0xEE, 0x9B, 0xD0, 0x46, 0x9D, 0x3A, 0xAF, 0x4F, + 0x14, 0x03, 0x5B, 0xE4, 0x8A, 0x2C, 0x3B, 0x84, + 0xD9, 0xB4, 0xB1, 0xFF, 0xF1, 0xD9, 0x45, 0xE1, + 0xF1, 0xC1, 0xD3, 0x89, 0x80, 0xA9, 0x51, 0xBE, + 0x19, 0x7B, 0x25, 0xFE, 0x22, 0xC7, 0x31, 0xF2, + 0x0A, 0xEA, 0xCC, 0x93, 0x0B, 0xA9, 0xC4, 0xA1, + 0xF4, 0x76, 0x22, 0x27, 0x61, 0x7A, 0xD3, 0x50, + 0xFD, 0xAB, 0xB4, 0xE8, 0x02, 0x73, 0xA0, 0xF4 + }, + { + 0x3D, 0x4D, 0x31, 0x13, 0x30, 0x05, 0x81, 0xCD, + 0x96, 0xAC, 0xBF, 0x09, 0x1C, 0x3D, 0x0F, 0x3C, + 0x31, 0x01, 0x38, 0xCD, 0x69, 0x79, 0xE6, 0x02, + 0x6C, 0xDE, 0x62, 0x3E, 0x2D, 0xD1, 0xB2, 0x4D, + 0x4A, 0x86, 0x38, 0xBE, 0xD1, 0x07, 0x33, 0x44, + 0x78, 0x3A, 0xD0, 0x64, 0x9C, 0xC6, 0x30, 0x5C, + 0xCE, 0xC0, 0x4B, 0xEB, 0x49, 0xF3, 0x1C, 0x63, + 0x30, 0x88, 0xA9, 0x9B, 0x65, 0x13, 0x02, 0x67 + }, + { + 0x95, 0xC0, 0x59, 0x1A, 0xD9, 0x1F, 0x92, 0x1A, + 0xC7, 0xBE, 0x6D, 0x9C, 0xE3, 0x7E, 0x06, 0x63, + 0xED, 0x80, 0x11, 0xC1, 0xCF, 0xD6, 0xD0, 0x16, + 0x2A, 0x55, 0x72, 0xE9, 0x43, 0x68, 0xBA, 0xC0, + 0x20, 0x24, 0x48, 0x5E, 0x6A, 0x39, 0x85, 0x4A, + 0xA4, 0x6F, 0xE3, 0x8E, 0x97, 0xD6, 0xC6, 0xB1, + 0x94, 0x7C, 0xD2, 0x72, 0xD8, 0x6B, 0x06, 0xBB, + 0x5B, 0x2F, 0x78, 0xB9, 0xB6, 0x8D, 0x55, 0x9D + }, + { + 0x22, 0x7B, 0x79, 0xDE, 0xD3, 0x68, 0x15, 0x3B, + 0xF4, 0x6C, 0x0A, 0x3C, 0xA9, 0x78, 0xBF, 0xDB, + 0xEF, 0x31, 0xF3, 0x02, 0x4A, 0x56, 0x65, 0x84, + 0x24, 0x68, 0x49, 0x0B, 0x0F, 0xF7, 0x48, 0xAE, + 0x04, 0xE7, 0x83, 0x2E, 0xD4, 0xC9, 0xF4, 0x9D, + 0xE9, 0xB1, 0x70, 0x67, 0x09, 0xD6, 0x23, 0xE5, + 0xC8, 0xC1, 0x5E, 0x3C, 0xAE, 0xCA, 0xE8, 0xD5, + 0xE4, 0x33, 0x43, 0x0F, 0xF7, 0x2F, 0x20, 0xEB + }, + { + 0x5D, 0x34, 0xF3, 0x95, 0x2F, 0x01, 0x05, 0xEE, + 0xF8, 0x8A, 0xE8, 0xB6, 0x4C, 0x6C, 0xE9, 0x5E, + 0xBF, 0xAD, 0xE0, 0xE0, 0x2C, 0x69, 0xB0, 0x87, + 0x62, 0xA8, 0x71, 0x2D, 0x2E, 0x49, 0x11, 0xAD, + 0x3F, 0x94, 0x1F, 0xC4, 0x03, 0x4D, 0xC9, 0xB2, + 0xE4, 0x79, 0xFD, 0xBC, 0xD2, 0x79, 0xB9, 0x02, + 0xFA, 0xF5, 0xD8, 0x38, 0xBB, 0x2E, 0x0C, 0x64, + 0x95, 0xD3, 0x72, 0xB5, 0xB7, 0x02, 0x98, 0x13 + }, + { + 0x7F, 0x93, 0x9B, 0xF8, 0x35, 0x3A, 0xBC, 0xE4, + 0x9E, 0x77, 0xF1, 0x4F, 0x37, 0x50, 0xAF, 0x20, + 0xB7, 0xB0, 0x39, 0x02, 0xE1, 0xA1, 0xE7, 0xFB, + 0x6A, 0xAF, 0x76, 0xD0, 0x25, 0x9C, 0xD4, 0x01, + 0xA8, 0x31, 0x90, 0xF1, 0x56, 0x40, 0xE7, 0x4F, + 0x3E, 0x6C, 0x5A, 0x90, 0xE8, 0x39, 0xC7, 0x82, + 0x1F, 0x64, 0x74, 0x75, 0x7F, 0x75, 0xC7, 0xBF, + 0x90, 0x02, 0x08, 0x4D, 0xDC, 0x7A, 0x62, 0xDC + }, + { + 0x06, 0x2B, 0x61, 0xA2, 0xF9, 0xA3, 0x3A, 0x71, + 0xD7, 0xD0, 0xA0, 0x61, 0x19, 0x64, 0x4C, 0x70, + 0xB0, 0x71, 0x6A, 0x50, 0x4D, 0xE7, 0xE5, 0xE1, + 0xBE, 0x49, 0xBD, 0x7B, 0x86, 0xE7, 0xED, 0x68, + 0x17, 0x71, 0x4F, 0x9F, 0x0F, 0xC3, 0x13, 0xD0, + 0x61, 0x29, 0x59, 0x7E, 0x9A, 0x22, 0x35, 0xEC, + 0x85, 0x21, 0xDE, 0x36, 0xF7, 0x29, 0x0A, 0x90, + 0xCC, 0xFC, 0x1F, 0xFA, 0x6D, 0x0A, 0xEE, 0x29 + }, + { + 0xF2, 0x9E, 0x01, 0xEE, 0xAE, 0x64, 0x31, 0x1E, + 0xB7, 0xF1, 0xC6, 0x42, 0x2F, 0x94, 0x6B, 0xF7, + 0xBE, 0xA3, 0x63, 0x79, 0x52, 0x3E, 0x7B, 0x2B, + 0xBA, 0xBA, 0x7D, 0x1D, 0x34, 0xA2, 0x2D, 0x5E, + 0xA5, 0xF1, 0xC5, 0xA0, 0x9D, 0x5C, 0xE1, 0xFE, + 0x68, 0x2C, 0xCE, 0xD9, 0xA4, 0x79, 0x8D, 0x1A, + 0x05, 0xB4, 0x6C, 0xD7, 0x2D, 0xFF, 0x5C, 0x1B, + 0x35, 0x54, 0x40, 0xB2, 0xA2, 0xD4, 0x76, 0xBC + }, + { + 0xEC, 0x38, 0xCD, 0x3B, 0xBA, 0xB3, 0xEF, 0x35, + 0xD7, 0xCB, 0x6D, 0x5C, 0x91, 0x42, 0x98, 0x35, + 0x1D, 0x8A, 0x9D, 0xC9, 0x7F, 0xCE, 0xE0, 0x51, + 0xA8, 0xA0, 0x2F, 0x58, 0xE3, 0xED, 0x61, 0x84, + 0xD0, 0xB7, 0x81, 0x0A, 0x56, 0x15, 0x41, 0x1A, + 0xB1, 0xB9, 0x52, 0x09, 0xC3, 0xC8, 0x10, 0x11, + 0x4F, 0xDE, 0xB2, 0x24, 0x52, 0x08, 0x4E, 0x77, + 0xF3, 0xF8, 0x47, 0xC6, 0xDB, 0xAA, 0xFE, 0x16 + }, + { + 0xC2, 0xAE, 0xF5, 0xE0, 0xCA, 0x43, 0xE8, 0x26, + 0x41, 0x56, 0x5B, 0x8C, 0xB9, 0x43, 0xAA, 0x8B, + 0xA5, 0x35, 0x50, 0xCA, 0xEF, 0x79, 0x3B, 0x65, + 0x32, 0xFA, 0xFA, 0xD9, 0x4B, 0x81, 0x60, 0x82, + 0xF0, 0x11, 0x3A, 0x3E, 0xA2, 0xF6, 0x36, 0x08, + 0xAB, 0x40, 0x43, 0x7E, 0xCC, 0x0F, 0x02, 0x29, + 0xCB, 0x8F, 0xA2, 0x24, 0xDC, 0xF1, 0xC4, 0x78, + 0xA6, 0x7D, 0x9B, 0x64, 0x16, 0x2B, 0x92, 0xD1 + }, + { + 0x15, 0xF5, 0x34, 0xEF, 0xFF, 0x71, 0x05, 0xCD, + 0x1C, 0x25, 0x4D, 0x07, 0x4E, 0x27, 0xD5, 0x89, + 0x8B, 0x89, 0x31, 0x3B, 0x7D, 0x36, 0x6D, 0xC2, + 0xD7, 0xD8, 0x71, 0x13, 0xFA, 0x7D, 0x53, 0xAA, + 0xE1, 0x3F, 0x6D, 0xBA, 0x48, 0x7A, 0xD8, 0x10, + 0x3D, 0x5E, 0x85, 0x4C, 0x91, 0xFD, 0xB6, 0xE1, + 0xE7, 0x4B, 0x2E, 0xF6, 0xD1, 0x43, 0x17, 0x69, + 0xC3, 0x07, 0x67, 0xDD, 0xE0, 0x67, 0xA3, 0x5C + }, + { + 0x89, 0xAC, 0xBC, 0xA0, 0xB1, 0x69, 0x89, 0x7A, + 0x0A, 0x27, 0x14, 0xC2, 0xDF, 0x8C, 0x95, 0xB5, + 0xB7, 0x9C, 0xB6, 0x93, 0x90, 0x14, 0x2B, 0x7D, + 0x60, 0x18, 0xBB, 0x3E, 0x30, 0x76, 0xB0, 0x99, + 0xB7, 0x9A, 0x96, 0x41, 0x52, 0xA9, 0xD9, 0x12, + 0xB1, 0xB8, 0x64, 0x12, 0xB7, 0xE3, 0x72, 0xE9, + 0xCE, 0xCA, 0xD7, 0xF2, 0x5D, 0x4C, 0xBA, 0xB8, + 0xA3, 0x17, 0xBE, 0x36, 0x49, 0x2A, 0x67, 0xD7 + }, + { + 0xE3, 0xC0, 0x73, 0x91, 0x90, 0xED, 0x84, 0x9C, + 0x9C, 0x96, 0x2F, 0xD9, 0xDB, 0xB5, 0x5E, 0x20, + 0x7E, 0x62, 0x4F, 0xCA, 0xC1, 0xEB, 0x41, 0x76, + 0x91, 0x51, 0x54, 0x99, 0xEE, 0xA8, 0xD8, 0x26, + 0x7B, 0x7E, 0x8F, 0x12, 0x87, 0xA6, 0x36, 0x33, + 0xAF, 0x50, 0x11, 0xFD, 0xE8, 0xC4, 0xDD, 0xF5, + 0x5B, 0xFD, 0xF7, 0x22, 0xED, 0xF8, 0x88, 0x31, + 0x41, 0x4F, 0x2C, 0xFA, 0xED, 0x59, 0xCB, 0x9A + }, + { + 0x8D, 0x6C, 0xF8, 0x7C, 0x08, 0x38, 0x0D, 0x2D, + 0x15, 0x06, 0xEE, 0xE4, 0x6F, 0xD4, 0x22, 0x2D, + 0x21, 0xD8, 0xC0, 0x4E, 0x58, 0x5F, 0xBF, 0xD0, + 0x82, 0x69, 0xC9, 0x8F, 0x70, 0x28, 0x33, 0xA1, + 0x56, 0x32, 0x6A, 0x07, 0x24, 0x65, 0x64, 0x00, + 0xEE, 0x09, 0x35, 0x1D, 0x57, 0xB4, 0x40, 0x17, + 0x5E, 0x2A, 0x5D, 0xE9, 0x3C, 0xC5, 0xF8, 0x0D, + 0xB6, 0xDA, 0xF8, 0x35, 0x76, 0xCF, 0x75, 0xFA + }, + { + 0xDA, 0x24, 0xBE, 0xDE, 0x38, 0x36, 0x66, 0xD5, + 0x63, 0xEE, 0xED, 0x37, 0xF6, 0x31, 0x9B, 0xAF, + 0x20, 0xD5, 0xC7, 0x5D, 0x16, 0x35, 0xA6, 0xBA, + 0x5E, 0xF4, 0xCF, 0xA1, 0xAC, 0x95, 0x48, 0x7E, + 0x96, 0xF8, 0xC0, 0x8A, 0xF6, 0x00, 0xAA, 0xB8, + 0x7C, 0x98, 0x6E, 0xBA, 0xD4, 0x9F, 0xC7, 0x0A, + 0x58, 0xB4, 0x89, 0x0B, 0x9C, 0x87, 0x6E, 0x09, + 0x10, 0x16, 0xDA, 0xF4, 0x9E, 0x1D, 0x32, 0x2E + }, + { + 0xF9, 0xD1, 0xD1, 0xB1, 0xE8, 0x7E, 0xA7, 0xAE, + 0x75, 0x3A, 0x02, 0x97, 0x50, 0xCC, 0x1C, 0xF3, + 0xD0, 0x15, 0x7D, 0x41, 0x80, 0x5E, 0x24, 0x5C, + 0x56, 0x17, 0xBB, 0x93, 0x4E, 0x73, 0x2F, 0x0A, + 0xE3, 0x18, 0x0B, 0x78, 0xE0, 0x5B, 0xFE, 0x76, + 0xC7, 0xC3, 0x05, 0x1E, 0x3E, 0x3A, 0xC7, 0x8B, + 0x9B, 0x50, 0xC0, 0x51, 0x42, 0x65, 0x7E, 0x1E, + 0x03, 0x21, 0x5D, 0x6E, 0xC7, 0xBF, 0xD0, 0xFC + }, + { + 0x11, 0xB7, 0xBC, 0x16, 0x68, 0x03, 0x20, 0x48, + 0xAA, 0x43, 0x34, 0x3D, 0xE4, 0x76, 0x39, 0x5E, + 0x81, 0x4B, 0xBB, 0xC2, 0x23, 0x67, 0x8D, 0xB9, + 0x51, 0xA1, 0xB0, 0x3A, 0x02, 0x1E, 0xFA, 0xC9, + 0x48, 0xCF, 0xBE, 0x21, 0x5F, 0x97, 0xFE, 0x9A, + 0x72, 0xA2, 0xF6, 0xBC, 0x03, 0x9E, 0x39, 0x56, + 0xBF, 0xA4, 0x17, 0xC1, 0xA9, 0xF1, 0x0D, 0x6D, + 0x7B, 0xA5, 0xD3, 0xD3, 0x2F, 0xF3, 0x23, 0xE5 + }, + { + 0xB8, 0xD9, 0x00, 0x0E, 0x4F, 0xC2, 0xB0, 0x66, + 0xED, 0xB9, 0x1A, 0xFE, 0xE8, 0xE7, 0xEB, 0x0F, + 0x24, 0xE3, 0xA2, 0x01, 0xDB, 0x8B, 0x67, 0x93, + 0xC0, 0x60, 0x85, 0x81, 0xE6, 0x28, 0xED, 0x0B, + 0xCC, 0x4E, 0x5A, 0xA6, 0x78, 0x79, 0x92, 0xA4, + 0xBC, 0xC4, 0x4E, 0x28, 0x80, 0x93, 0xE6, 0x3E, + 0xE8, 0x3A, 0xBD, 0x0B, 0xC3, 0xEC, 0x6D, 0x09, + 0x34, 0xA6, 0x74, 0xA4, 0xDA, 0x13, 0x83, 0x8A + }, + { + 0xCE, 0x32, 0x5E, 0x29, 0x4F, 0x9B, 0x67, 0x19, + 0xD6, 0xB6, 0x12, 0x78, 0x27, 0x6A, 0xE0, 0x6A, + 0x25, 0x64, 0xC0, 0x3B, 0xB0, 0xB7, 0x83, 0xFA, + 0xFE, 0x78, 0x5B, 0xDF, 0x89, 0xC7, 0xD5, 0xAC, + 0xD8, 0x3E, 0x78, 0x75, 0x6D, 0x30, 0x1B, 0x44, + 0x56, 0x99, 0x02, 0x4E, 0xAE, 0xB7, 0x7B, 0x54, + 0xD4, 0x77, 0x33, 0x6E, 0xC2, 0xA4, 0xF3, 0x32, + 0xF2, 0xB3, 0xF8, 0x87, 0x65, 0xDD, 0xB0, 0xC3 + }, + { + 0x29, 0xAC, 0xC3, 0x0E, 0x96, 0x03, 0xAE, 0x2F, + 0xCC, 0xF9, 0x0B, 0xF9, 0x7E, 0x6C, 0xC4, 0x63, + 0xEB, 0xE2, 0x8C, 0x1B, 0x2F, 0x9B, 0x4B, 0x76, + 0x5E, 0x70, 0x53, 0x7C, 0x25, 0xC7, 0x02, 0xA2, + 0x9D, 0xCB, 0xFB, 0xF1, 0x4C, 0x99, 0xC5, 0x43, + 0x45, 0xBA, 0x2B, 0x51, 0xF1, 0x7B, 0x77, 0xB5, + 0xF1, 0x5D, 0xB9, 0x2B, 0xBA, 0xD8, 0xFA, 0x95, + 0xC4, 0x71, 0xF5, 0xD0, 0x70, 0xA1, 0x37, 0xCC + }, + { + 0x33, 0x79, 0xCB, 0xAA, 0xE5, 0x62, 0xA8, 0x7B, + 0x4C, 0x04, 0x25, 0x55, 0x0F, 0xFD, 0xD6, 0xBF, + 0xE1, 0x20, 0x3F, 0x0D, 0x66, 0x6C, 0xC7, 0xEA, + 0x09, 0x5B, 0xE4, 0x07, 0xA5, 0xDF, 0xE6, 0x1E, + 0xE9, 0x14, 0x41, 0xCD, 0x51, 0x54, 0xB3, 0xE5, + 0x3B, 0x4F, 0x5F, 0xB3, 0x1A, 0xD4, 0xC7, 0xA9, + 0xAD, 0x5C, 0x7A, 0xF4, 0xAE, 0x67, 0x9A, 0xA5, + 0x1A, 0x54, 0x00, 0x3A, 0x54, 0xCA, 0x6B, 0x2D + }, + { + 0x30, 0x95, 0xA3, 0x49, 0xD2, 0x45, 0x70, 0x8C, + 0x7C, 0xF5, 0x50, 0x11, 0x87, 0x03, 0xD7, 0x30, + 0x2C, 0x27, 0xB6, 0x0A, 0xF5, 0xD4, 0xE6, 0x7F, + 0xC9, 0x78, 0xF8, 0xA4, 0xE6, 0x09, 0x53, 0xC7, + 0xA0, 0x4F, 0x92, 0xFC, 0xF4, 0x1A, 0xEE, 0x64, + 0x32, 0x1C, 0xCB, 0x70, 0x7A, 0x89, 0x58, 0x51, + 0x55, 0x2B, 0x1E, 0x37, 0xB0, 0x0B, 0xC5, 0xE6, + 0xB7, 0x2F, 0xA5, 0xBC, 0xEF, 0x9E, 0x3F, 0xFF + }, + { + 0x07, 0x26, 0x2D, 0x73, 0x8B, 0x09, 0x32, 0x1F, + 0x4D, 0xBC, 0xCE, 0xC4, 0xBB, 0x26, 0xF4, 0x8C, + 0xB0, 0xF0, 0xED, 0x24, 0x6C, 0xE0, 0xB3, 0x1B, + 0x9A, 0x6E, 0x7B, 0xC6, 0x83, 0x04, 0x9F, 0x1F, + 0x3E, 0x55, 0x45, 0xF2, 0x8C, 0xE9, 0x32, 0xDD, + 0x98, 0x5C, 0x5A, 0xB0, 0xF4, 0x3B, 0xD6, 0xDE, + 0x07, 0x70, 0x56, 0x0A, 0xF3, 0x29, 0x06, 0x5E, + 0xD2, 0xE4, 0x9D, 0x34, 0x62, 0x4C, 0x2C, 0xBB + }, + { + 0xB6, 0x40, 0x5E, 0xCA, 0x8E, 0xE3, 0x31, 0x6C, + 0x87, 0x06, 0x1C, 0xC6, 0xEC, 0x18, 0xDB, 0xA5, + 0x3E, 0x6C, 0x25, 0x0C, 0x63, 0xBA, 0x1F, 0x3B, + 0xAE, 0x9E, 0x55, 0xDD, 0x34, 0x98, 0x03, 0x6A, + 0xF0, 0x8C, 0xD2, 0x72, 0xAA, 0x24, 0xD7, 0x13, + 0xC6, 0x02, 0x0D, 0x77, 0xAB, 0x2F, 0x39, 0x19, + 0xAF, 0x1A, 0x32, 0xF3, 0x07, 0x42, 0x06, 0x18, + 0xAB, 0x97, 0xE7, 0x39, 0x53, 0x99, 0x4F, 0xB4 + }, + { + 0x7E, 0xE6, 0x82, 0xF6, 0x31, 0x48, 0xEE, 0x45, + 0xF6, 0xE5, 0x31, 0x5D, 0xA8, 0x1E, 0x5C, 0x6E, + 0x55, 0x7C, 0x2C, 0x34, 0x64, 0x1F, 0xC5, 0x09, + 0xC7, 0xA5, 0x70, 0x10, 0x88, 0xC3, 0x8A, 0x74, + 0x75, 0x61, 0x68, 0xE2, 0xCD, 0x8D, 0x35, 0x1E, + 0x88, 0xFD, 0x1A, 0x45, 0x1F, 0x36, 0x0A, 0x01, + 0xF5, 0xB2, 0x58, 0x0F, 0x9B, 0x5A, 0x2E, 0x8C, + 0xFC, 0x13, 0x8F, 0x3D, 0xD5, 0x9A, 0x3F, 0xFC + }, + { + 0x1D, 0x26, 0x3C, 0x17, 0x9D, 0x6B, 0x26, 0x8F, + 0x6F, 0xA0, 0x16, 0xF3, 0xA4, 0xF2, 0x9E, 0x94, + 0x38, 0x91, 0x12, 0x5E, 0xD8, 0x59, 0x3C, 0x81, + 0x25, 0x60, 0x59, 0xF5, 0xA7, 0xB4, 0x4A, 0xF2, + 0xDC, 0xB2, 0x03, 0x0D, 0x17, 0x5C, 0x00, 0xE6, + 0x2E, 0xCA, 0xF7, 0xEE, 0x96, 0x68, 0x2A, 0xA0, + 0x7A, 0xB2, 0x0A, 0x61, 0x10, 0x24, 0xA2, 0x85, + 0x32, 0xB1, 0xC2, 0x5B, 0x86, 0x65, 0x79, 0x02 + }, + { + 0x10, 0x6D, 0x13, 0x2C, 0xBD, 0xB4, 0xCD, 0x25, + 0x97, 0x81, 0x28, 0x46, 0xE2, 0xBC, 0x1B, 0xF7, + 0x32, 0xFE, 0xC5, 0xF0, 0xA5, 0xF6, 0x5D, 0xBB, + 0x39, 0xEC, 0x4E, 0x6D, 0xC6, 0x4A, 0xB2, 0xCE, + 0x6D, 0x24, 0x63, 0x0D, 0x0F, 0x15, 0xA8, 0x05, + 0xC3, 0x54, 0x00, 0x25, 0xD8, 0x4A, 0xFA, 0x98, + 0xE3, 0x67, 0x03, 0xC3, 0xDB, 0xEE, 0x71, 0x3E, + 0x72, 0xDD, 0xE8, 0x46, 0x5B, 0xC1, 0xBE, 0x7E + }, + { + 0x0E, 0x79, 0x96, 0x82, 0x26, 0x65, 0x06, 0x67, + 0xA8, 0xD8, 0x62, 0xEA, 0x8D, 0xA4, 0x89, 0x1A, + 0xF5, 0x6A, 0x4E, 0x3A, 0x8B, 0x6D, 0x17, 0x50, + 0xE3, 0x94, 0xF0, 0xDE, 0xA7, 0x6D, 0x64, 0x0D, + 0x85, 0x07, 0x7B, 0xCE, 0xC2, 0xCC, 0x86, 0x88, + 0x6E, 0x50, 0x67, 0x51, 0xB4, 0xF6, 0xA5, 0x83, + 0x8F, 0x7F, 0x0B, 0x5F, 0xEF, 0x76, 0x5D, 0x9D, + 0xC9, 0x0D, 0xCD, 0xCB, 0xAF, 0x07, 0x9F, 0x08 + }, + { + 0x52, 0x11, 0x56, 0xA8, 0x2A, 0xB0, 0xC4, 0xE5, + 0x66, 0xE5, 0x84, 0x4D, 0x5E, 0x31, 0xAD, 0x9A, + 0xAF, 0x14, 0x4B, 0xBD, 0x5A, 0x46, 0x4F, 0xDC, + 0xA3, 0x4D, 0xBD, 0x57, 0x17, 0xE8, 0xFF, 0x71, + 0x1D, 0x3F, 0xFE, 0xBB, 0xFA, 0x08, 0x5D, 0x67, + 0xFE, 0x99, 0x6A, 0x34, 0xF6, 0xD3, 0xE4, 0xE6, + 0x0B, 0x13, 0x96, 0xBF, 0x4B, 0x16, 0x10, 0xC2, + 0x63, 0xBD, 0xBB, 0x83, 0x4D, 0x56, 0x08, 0x16 + }, + { + 0x1A, 0xBA, 0x88, 0xBE, 0xFC, 0x55, 0xBC, 0x25, + 0xEF, 0xBC, 0xE0, 0x2D, 0xB8, 0xB9, 0x93, 0x3E, + 0x46, 0xF5, 0x76, 0x61, 0xBA, 0xEA, 0xBE, 0xB2, + 0x1C, 0xC2, 0x57, 0x4D, 0x2A, 0x51, 0x8A, 0x3C, + 0xBA, 0x5D, 0xC5, 0xA3, 0x8E, 0x49, 0x71, 0x34, + 0x40, 0xB2, 0x5F, 0x9C, 0x74, 0x4E, 0x75, 0xF6, + 0xB8, 0x5C, 0x9D, 0x8F, 0x46, 0x81, 0xF6, 0x76, + 0x16, 0x0F, 0x61, 0x05, 0x35, 0x7B, 0x84, 0x06 + }, + { + 0x5A, 0x99, 0x49, 0xFC, 0xB2, 0xC4, 0x73, 0xCD, + 0xA9, 0x68, 0xAC, 0x1B, 0x5D, 0x08, 0x56, 0x6D, + 0xC2, 0xD8, 0x16, 0xD9, 0x60, 0xF5, 0x7E, 0x63, + 0xB8, 0x98, 0xFA, 0x70, 0x1C, 0xF8, 0xEB, 0xD3, + 0xF5, 0x9B, 0x12, 0x4D, 0x95, 0xBF, 0xBB, 0xED, + 0xC5, 0xF1, 0xCF, 0x0E, 0x17, 0xD5, 0xEA, 0xED, + 0x0C, 0x02, 0xC5, 0x0B, 0x69, 0xD8, 0xA4, 0x02, + 0xCA, 0xBC, 0xCA, 0x44, 0x33, 0xB5, 0x1F, 0xD4 + }, + { + 0xB0, 0xCE, 0xAD, 0x09, 0x80, 0x7C, 0x67, 0x2A, + 0xF2, 0xEB, 0x2B, 0x0F, 0x06, 0xDD, 0xE4, 0x6C, + 0xF5, 0x37, 0x0E, 0x15, 0xA4, 0x09, 0x6B, 0x1A, + 0x7D, 0x7C, 0xBB, 0x36, 0xEC, 0x31, 0xC2, 0x05, + 0xFB, 0xEF, 0xCA, 0x00, 0xB7, 0xA4, 0x16, 0x2F, + 0xA8, 0x9F, 0xB4, 0xFB, 0x3E, 0xB7, 0x8D, 0x79, + 0x77, 0x0C, 0x23, 0xF4, 0x4E, 0x72, 0x06, 0x66, + 0x4C, 0xE3, 0xCD, 0x93, 0x1C, 0x29, 0x1E, 0x5D + }, + { + 0xBB, 0x66, 0x64, 0x93, 0x1E, 0xC9, 0x70, 0x44, + 0xE4, 0x5B, 0x2A, 0xE4, 0x20, 0xAE, 0x1C, 0x55, + 0x1A, 0x88, 0x74, 0xBC, 0x93, 0x7D, 0x08, 0xE9, + 0x69, 0x39, 0x9C, 0x39, 0x64, 0xEB, 0xDB, 0xA8, + 0x34, 0x6C, 0xDD, 0x5D, 0x09, 0xCA, 0xAF, 0xE4, + 0xC2, 0x8B, 0xA7, 0xEC, 0x78, 0x81, 0x91, 0xCE, + 0xCA, 0x65, 0xDD, 0xD6, 0xF9, 0x5F, 0x18, 0x58, + 0x3E, 0x04, 0x0D, 0x0F, 0x30, 0xD0, 0x36, 0x4D + }, + { + 0x65, 0xBC, 0x77, 0x0A, 0x5F, 0xAA, 0x37, 0x92, + 0x36, 0x98, 0x03, 0x68, 0x3E, 0x84, 0x4B, 0x0B, + 0xE7, 0xEE, 0x96, 0xF2, 0x9F, 0x6D, 0x6A, 0x35, + 0x56, 0x80, 0x06, 0xBD, 0x55, 0x90, 0xF9, 0xA4, + 0xEF, 0x63, 0x9B, 0x7A, 0x80, 0x61, 0xC7, 0xB0, + 0x42, 0x4B, 0x66, 0xB6, 0x0A, 0xC3, 0x4A, 0xF3, + 0x11, 0x99, 0x05, 0xF3, 0x3A, 0x9D, 0x8C, 0x3A, + 0xE1, 0x83, 0x82, 0xCA, 0x9B, 0x68, 0x99, 0x00 + }, + { + 0xEA, 0x9B, 0x4D, 0xCA, 0x33, 0x33, 0x36, 0xAA, + 0xF8, 0x39, 0xA4, 0x5C, 0x6E, 0xAA, 0x48, 0xB8, + 0xCB, 0x4C, 0x7D, 0xDA, 0xBF, 0xFE, 0xA4, 0xF6, + 0x43, 0xD6, 0x35, 0x7E, 0xA6, 0x62, 0x8A, 0x48, + 0x0A, 0x5B, 0x45, 0xF2, 0xB0, 0x52, 0xC1, 0xB0, + 0x7D, 0x1F, 0xED, 0xCA, 0x91, 0x8B, 0x6F, 0x11, + 0x39, 0xD8, 0x0F, 0x74, 0xC2, 0x45, 0x10, 0xDC, + 0xBA, 0xA4, 0xBE, 0x70, 0xEA, 0xCC, 0x1B, 0x06 + }, + { + 0xE6, 0x34, 0x2F, 0xB4, 0xA7, 0x80, 0xAD, 0x97, + 0x5D, 0x0E, 0x24, 0xBC, 0xE1, 0x49, 0x98, 0x9B, + 0x91, 0xD3, 0x60, 0x55, 0x7E, 0x87, 0x99, 0x4F, + 0x6B, 0x45, 0x7B, 0x89, 0x55, 0x75, 0xCC, 0x02, + 0xD0, 0xC1, 0x5B, 0xAD, 0x3C, 0xE7, 0x57, 0x7F, + 0x4C, 0x63, 0x92, 0x7F, 0xF1, 0x3F, 0x3E, 0x38, + 0x1F, 0xF7, 0xE7, 0x2B, 0xDB, 0xE7, 0x45, 0x32, + 0x48, 0x44, 0xA9, 0xD2, 0x7E, 0x3F, 0x1C, 0x01 + }, + { + 0x3E, 0x20, 0x9C, 0x9B, 0x33, 0xE8, 0xE4, 0x61, + 0x17, 0x8A, 0xB4, 0x6B, 0x1C, 0x64, 0xB4, 0x9A, + 0x07, 0xFB, 0x74, 0x5F, 0x1C, 0x8B, 0xC9, 0x5F, + 0xBF, 0xB9, 0x4C, 0x6B, 0x87, 0xC6, 0x95, 0x16, + 0x65, 0x1B, 0x26, 0x4E, 0xF9, 0x80, 0x93, 0x7F, + 0xAD, 0x41, 0x23, 0x8B, 0x91, 0xDD, 0xC0, 0x11, + 0xA5, 0xDD, 0x77, 0x7C, 0x7E, 0xFD, 0x44, 0x94, + 0xB4, 0xB6, 0xEC, 0xD3, 0xA9, 0xC2, 0x2A, 0xC0 + }, + { + 0xFD, 0x6A, 0x3D, 0x5B, 0x18, 0x75, 0xD8, 0x04, + 0x86, 0xD6, 0xE6, 0x96, 0x94, 0xA5, 0x6D, 0xBB, + 0x04, 0xA9, 0x9A, 0x4D, 0x05, 0x1F, 0x15, 0xDB, + 0x26, 0x89, 0x77, 0x6B, 0xA1, 0xC4, 0x88, 0x2E, + 0x6D, 0x46, 0x2A, 0x60, 0x3B, 0x70, 0x15, 0xDC, + 0x9F, 0x4B, 0x74, 0x50, 0xF0, 0x53, 0x94, 0x30, + 0x3B, 0x86, 0x52, 0xCF, 0xB4, 0x04, 0xA2, 0x66, + 0x96, 0x2C, 0x41, 0xBA, 0xE6, 0xE1, 0x8A, 0x94 + }, + { + 0x95, 0x1E, 0x27, 0x51, 0x7E, 0x6B, 0xAD, 0x9E, + 0x41, 0x95, 0xFC, 0x86, 0x71, 0xDE, 0xE3, 0xE7, + 0xE9, 0xBE, 0x69, 0xCE, 0xE1, 0x42, 0x2C, 0xB9, + 0xFE, 0xCF, 0xCE, 0x0D, 0xBA, 0x87, 0x5F, 0x7B, + 0x31, 0x0B, 0x93, 0xEE, 0x3A, 0x3D, 0x55, 0x8F, + 0x94, 0x1F, 0x63, 0x5F, 0x66, 0x8F, 0xF8, 0x32, + 0xD2, 0xC1, 0xD0, 0x33, 0xC5, 0xE2, 0xF0, 0x99, + 0x7E, 0x4C, 0x66, 0xF1, 0x47, 0x34, 0x4E, 0x02 + }, + { + 0x8E, 0xBA, 0x2F, 0x87, 0x4F, 0x1A, 0xE8, 0x40, + 0x41, 0x90, 0x3C, 0x7C, 0x42, 0x53, 0xC8, 0x22, + 0x92, 0x53, 0x0F, 0xC8, 0x50, 0x95, 0x50, 0xBF, + 0xDC, 0x34, 0xC9, 0x5C, 0x7E, 0x28, 0x89, 0xD5, + 0x65, 0x0B, 0x0A, 0xD8, 0xCB, 0x98, 0x8E, 0x5C, + 0x48, 0x94, 0xCB, 0x87, 0xFB, 0xFB, 0xB1, 0x96, + 0x12, 0xEA, 0x93, 0xCC, 0xC4, 0xC5, 0xCA, 0xD1, + 0x71, 0x58, 0xB9, 0x76, 0x34, 0x64, 0xB4, 0x92 + }, + { + 0x16, 0xF7, 0x12, 0xEA, 0xA1, 0xB7, 0xC6, 0x35, + 0x47, 0x19, 0xA8, 0xE7, 0xDB, 0xDF, 0xAF, 0x55, + 0xE4, 0x06, 0x3A, 0x4D, 0x27, 0x7D, 0x94, 0x75, + 0x50, 0x01, 0x9B, 0x38, 0xDF, 0xB5, 0x64, 0x83, + 0x09, 0x11, 0x05, 0x7D, 0x50, 0x50, 0x61, 0x36, + 0xE2, 0x39, 0x4C, 0x3B, 0x28, 0x94, 0x5C, 0xC9, + 0x64, 0x96, 0x7D, 0x54, 0xE3, 0x00, 0x0C, 0x21, + 0x81, 0x62, 0x6C, 0xFB, 0x9B, 0x73, 0xEF, 0xD2 + }, + { + 0xC3, 0x96, 0x39, 0xE7, 0xD5, 0xC7, 0xFB, 0x8C, + 0xDD, 0x0F, 0xD3, 0xE6, 0xA5, 0x20, 0x96, 0x03, + 0x94, 0x37, 0x12, 0x2F, 0x21, 0xC7, 0x8F, 0x16, + 0x79, 0xCE, 0xA9, 0xD7, 0x8A, 0x73, 0x4C, 0x56, + 0xEC, 0xBE, 0xB2, 0x86, 0x54, 0xB4, 0xF1, 0x8E, + 0x34, 0x2C, 0x33, 0x1F, 0x6F, 0x72, 0x29, 0xEC, + 0x4B, 0x4B, 0xC2, 0x81, 0xB2, 0xD8, 0x0A, 0x6E, + 0xB5, 0x00, 0x43, 0xF3, 0x17, 0x96, 0xC8, 0x8C + }, + { + 0x72, 0xD0, 0x81, 0xAF, 0x99, 0xF8, 0xA1, 0x73, + 0xDC, 0xC9, 0xA0, 0xAC, 0x4E, 0xB3, 0x55, 0x74, + 0x05, 0x63, 0x9A, 0x29, 0x08, 0x4B, 0x54, 0xA4, + 0x01, 0x72, 0x91, 0x2A, 0x2F, 0x8A, 0x39, 0x51, + 0x29, 0xD5, 0x53, 0x6F, 0x09, 0x18, 0xE9, 0x02, + 0xF9, 0xE8, 0xFA, 0x60, 0x00, 0x99, 0x5F, 0x41, + 0x68, 0xDD, 0xC5, 0xF8, 0x93, 0x01, 0x1B, 0xE6, + 0xA0, 0xDB, 0xC9, 0xB8, 0xA1, 0xA3, 0xF5, 0xBB + }, + { + 0xC1, 0x1A, 0xA8, 0x1E, 0x5E, 0xFD, 0x24, 0xD5, + 0xFC, 0x27, 0xEE, 0x58, 0x6C, 0xFD, 0x88, 0x47, + 0xFB, 0xB0, 0xE2, 0x76, 0x01, 0xCC, 0xEC, 0xE5, + 0xEC, 0xCA, 0x01, 0x98, 0xE3, 0xC7, 0x76, 0x53, + 0x93, 0xBB, 0x74, 0x45, 0x7C, 0x7E, 0x7A, 0x27, + 0xEB, 0x91, 0x70, 0x35, 0x0E, 0x1F, 0xB5, 0x38, + 0x57, 0x17, 0x75, 0x06, 0xBE, 0x3E, 0x76, 0x2C, + 0xC0, 0xF1, 0x4D, 0x8C, 0x3A, 0xFE, 0x90, 0x77 + }, + { + 0xC2, 0x8F, 0x21, 0x50, 0xB4, 0x52, 0xE6, 0xC0, + 0xC4, 0x24, 0xBC, 0xDE, 0x6F, 0x8D, 0x72, 0x00, + 0x7F, 0x93, 0x10, 0xFE, 0xD7, 0xF2, 0xF8, 0x7D, + 0xE0, 0xDB, 0xB6, 0x4F, 0x44, 0x79, 0xD6, 0xC1, + 0x44, 0x1B, 0xA6, 0x6F, 0x44, 0xB2, 0xAC, 0xCE, + 0xE6, 0x16, 0x09, 0x17, 0x7E, 0xD3, 0x40, 0x12, + 0x8B, 0x40, 0x7E, 0xCE, 0xC7, 0xC6, 0x4B, 0xBE, + 0x50, 0xD6, 0x3D, 0x22, 0xD8, 0x62, 0x77, 0x27 + }, + { + 0xF6, 0x3D, 0x88, 0x12, 0x28, 0x77, 0xEC, 0x30, + 0xB8, 0xC8, 0xB0, 0x0D, 0x22, 0xE8, 0x90, 0x00, + 0xA9, 0x66, 0x42, 0x61, 0x12, 0xBD, 0x44, 0x16, + 0x6E, 0x2F, 0x52, 0x5B, 0x76, 0x9C, 0xCB, 0xE9, + 0xB2, 0x86, 0xD4, 0x37, 0xA0, 0x12, 0x91, 0x30, + 0xDD, 0xE1, 0xA8, 0x6C, 0x43, 0xE0, 0x4B, 0xED, + 0xB5, 0x94, 0xE6, 0x71, 0xD9, 0x82, 0x83, 0xAF, + 0xE6, 0x4C, 0xE3, 0x31, 0xDE, 0x98, 0x28, 0xFD + }, + { + 0x34, 0x8B, 0x05, 0x32, 0x88, 0x0B, 0x88, 0xA6, + 0x61, 0x4A, 0x8D, 0x74, 0x08, 0xC3, 0xF9, 0x13, + 0x35, 0x7F, 0xBB, 0x60, 0xE9, 0x95, 0xC6, 0x02, + 0x05, 0xBE, 0x91, 0x39, 0xE7, 0x49, 0x98, 0xAE, + 0xDE, 0x7F, 0x45, 0x81, 0xE4, 0x2F, 0x6B, 0x52, + 0x69, 0x8F, 0x7F, 0xA1, 0x21, 0x97, 0x08, 0xC1, + 0x44, 0x98, 0x06, 0x7F, 0xD1, 0xE0, 0x95, 0x02, + 0xDE, 0x83, 0xA7, 0x7D, 0xD2, 0x81, 0x15, 0x0C + }, + { + 0x51, 0x33, 0xDC, 0x8B, 0xEF, 0x72, 0x53, 0x59, + 0xDF, 0xF5, 0x97, 0x92, 0xD8, 0x5E, 0xAF, 0x75, + 0xB7, 0xE1, 0xDC, 0xD1, 0x97, 0x8B, 0x01, 0xC3, + 0x5B, 0x1B, 0x85, 0xFC, 0xEB, 0xC6, 0x33, 0x88, + 0xAD, 0x99, 0xA1, 0x7B, 0x63, 0x46, 0xA2, 0x17, + 0xDC, 0x1A, 0x96, 0x22, 0xEB, 0xD1, 0x22, 0xEC, + 0xF6, 0x91, 0x3C, 0x4D, 0x31, 0xA6, 0xB5, 0x2A, + 0x69, 0x5B, 0x86, 0xAF, 0x00, 0xD7, 0x41, 0xA0 + }, + { + 0x27, 0x53, 0xC4, 0xC0, 0xE9, 0x8E, 0xCA, 0xD8, + 0x06, 0xE8, 0x87, 0x80, 0xEC, 0x27, 0xFC, 0xCD, + 0x0F, 0x5C, 0x1A, 0xB5, 0x47, 0xF9, 0xE4, 0xBF, + 0x16, 0x59, 0xD1, 0x92, 0xC2, 0x3A, 0xA2, 0xCC, + 0x97, 0x1B, 0x58, 0xB6, 0x80, 0x25, 0x80, 0xBA, + 0xEF, 0x8A, 0xDC, 0x3B, 0x77, 0x6E, 0xF7, 0x08, + 0x6B, 0x25, 0x45, 0xC2, 0x98, 0x7F, 0x34, 0x8E, + 0xE3, 0x71, 0x9C, 0xDE, 0xF2, 0x58, 0xC4, 0x03 + }, + { + 0xB1, 0x66, 0x35, 0x73, 0xCE, 0x4B, 0x9D, 0x8C, + 0xAE, 0xFC, 0x86, 0x50, 0x12, 0xF3, 0xE3, 0x97, + 0x14, 0xB9, 0x89, 0x8A, 0x5D, 0xA6, 0xCE, 0x17, + 0xC2, 0x5A, 0x6A, 0x47, 0x93, 0x1A, 0x9D, 0xDB, + 0x9B, 0xBE, 0x98, 0xAD, 0xAA, 0x55, 0x3B, 0xEE, + 0xD4, 0x36, 0xE8, 0x95, 0x78, 0x45, 0x54, 0x16, + 0xC2, 0xA5, 0x2A, 0x52, 0x5C, 0xF2, 0x86, 0x2B, + 0x8D, 0x1D, 0x49, 0xA2, 0x53, 0x1B, 0x73, 0x91 + }, + { + 0x64, 0xF5, 0x8B, 0xD6, 0xBF, 0xC8, 0x56, 0xF5, + 0xE8, 0x73, 0xB2, 0xA2, 0x95, 0x6E, 0xA0, 0xED, + 0xA0, 0xD6, 0xDB, 0x0D, 0xA3, 0x9C, 0x8C, 0x7F, + 0xC6, 0x7C, 0x9F, 0x9F, 0xEE, 0xFC, 0xFF, 0x30, + 0x72, 0xCD, 0xF9, 0xE6, 0xEA, 0x37, 0xF6, 0x9A, + 0x44, 0xF0, 0xC6, 0x1A, 0xA0, 0xDA, 0x36, 0x93, + 0xC2, 0xDB, 0x5B, 0x54, 0x96, 0x0C, 0x02, 0x81, + 0xA0, 0x88, 0x15, 0x1D, 0xB4, 0x2B, 0x11, 0xE8 + }, + { + 0x07, 0x64, 0xC7, 0xBE, 0x28, 0x12, 0x5D, 0x90, + 0x65, 0xC4, 0xB9, 0x8A, 0x69, 0xD6, 0x0A, 0xED, + 0xE7, 0x03, 0x54, 0x7C, 0x66, 0xA1, 0x2E, 0x17, + 0xE1, 0xC6, 0x18, 0x99, 0x41, 0x32, 0xF5, 0xEF, + 0x82, 0x48, 0x2C, 0x1E, 0x3F, 0xE3, 0x14, 0x6C, + 0xC6, 0x53, 0x76, 0xCC, 0x10, 0x9F, 0x01, 0x38, + 0xED, 0x9A, 0x80, 0xE4, 0x9F, 0x1F, 0x3C, 0x7D, + 0x61, 0x0D, 0x2F, 0x24, 0x32, 0xF2, 0x06, 0x05 + }, + { + 0xF7, 0x48, 0x78, 0x43, 0x98, 0xA2, 0xFF, 0x03, + 0xEB, 0xEB, 0x07, 0xE1, 0x55, 0xE6, 0x61, 0x16, + 0xA8, 0x39, 0x74, 0x1A, 0x33, 0x6E, 0x32, 0xDA, + 0x71, 0xEC, 0x69, 0x60, 0x01, 0xF0, 0xAD, 0x1B, + 0x25, 0xCD, 0x48, 0xC6, 0x9C, 0xFC, 0xA7, 0x26, + 0x5E, 0xCA, 0x1D, 0xD7, 0x19, 0x04, 0xA0, 0xCE, + 0x74, 0x8A, 0xC4, 0x12, 0x4F, 0x35, 0x71, 0x07, + 0x6D, 0xFA, 0x71, 0x16, 0xA9, 0xCF, 0x00, 0xE9 + }, + { + 0x3F, 0x0D, 0xBC, 0x01, 0x86, 0xBC, 0xEB, 0x6B, + 0x78, 0x5B, 0xA7, 0x8D, 0x2A, 0x2A, 0x01, 0x3C, + 0x91, 0x0B, 0xE1, 0x57, 0xBD, 0xAF, 0xFA, 0xE8, + 0x1B, 0xB6, 0x66, 0x3B, 0x1A, 0x73, 0x72, 0x2F, + 0x7F, 0x12, 0x28, 0x79, 0x5F, 0x3E, 0xCA, 0xDA, + 0x87, 0xCF, 0x6E, 0xF0, 0x07, 0x84, 0x74, 0xAF, + 0x73, 0xF3, 0x1E, 0xCA, 0x0C, 0xC2, 0x00, 0xED, + 0x97, 0x5B, 0x68, 0x93, 0xF7, 0x61, 0xCB, 0x6D + }, + { + 0xD4, 0x76, 0x2C, 0xD4, 0x59, 0x98, 0x76, 0xCA, + 0x75, 0xB2, 0xB8, 0xFE, 0x24, 0x99, 0x44, 0xDB, + 0xD2, 0x7A, 0xCE, 0x74, 0x1F, 0xDA, 0xB9, 0x36, + 0x16, 0xCB, 0xC6, 0xE4, 0x25, 0x46, 0x0F, 0xEB, + 0x51, 0xD4, 0xE7, 0xAD, 0xCC, 0x38, 0x18, 0x0E, + 0x7F, 0xC4, 0x7C, 0x89, 0x02, 0x4A, 0x7F, 0x56, + 0x19, 0x1A, 0xDB, 0x87, 0x8D, 0xFD, 0xE4, 0xEA, + 0xD6, 0x22, 0x23, 0xF5, 0xA2, 0x61, 0x0E, 0xFE + }, + { + 0xCD, 0x36, 0xB3, 0xD5, 0xB4, 0xC9, 0x1B, 0x90, + 0xFC, 0xBB, 0xA7, 0x95, 0x13, 0xCF, 0xEE, 0x19, + 0x07, 0xD8, 0x64, 0x5A, 0x16, 0x2A, 0xFD, 0x0C, + 0xD4, 0xCF, 0x41, 0x92, 0xD4, 0xA5, 0xF4, 0xC8, + 0x92, 0x18, 0x3A, 0x8E, 0xAC, 0xDB, 0x2B, 0x6B, + 0x6A, 0x9D, 0x9A, 0xA8, 0xC1, 0x1A, 0xC1, 0xB2, + 0x61, 0xB3, 0x80, 0xDB, 0xEE, 0x24, 0xCA, 0x46, + 0x8F, 0x1B, 0xFD, 0x04, 0x3C, 0x58, 0xEE, 0xFE + }, + { + 0x98, 0x59, 0x34, 0x52, 0x28, 0x16, 0x61, 0xA5, + 0x3C, 0x48, 0xA9, 0xD8, 0xCD, 0x79, 0x08, 0x26, + 0xC1, 0xA1, 0xCE, 0x56, 0x77, 0x38, 0x05, 0x3D, + 0x0B, 0xEE, 0x4A, 0x91, 0xA3, 0xD5, 0xBD, 0x92, + 0xEE, 0xFD, 0xBA, 0xBE, 0xBE, 0x32, 0x04, 0xF2, + 0x03, 0x1C, 0xA5, 0xF7, 0x81, 0xBD, 0xA9, 0x9E, + 0xF5, 0xD8, 0xAE, 0x56, 0xE5, 0xB0, 0x4A, 0x9E, + 0x1E, 0xCD, 0x21, 0xB0, 0xEB, 0x05, 0xD3, 0xE1 + }, + { + 0x77, 0x1F, 0x57, 0xDD, 0x27, 0x75, 0xCC, 0xDA, + 0xB5, 0x59, 0x21, 0xD3, 0xE8, 0xE3, 0x0C, 0xCF, + 0x48, 0x4D, 0x61, 0xFE, 0x1C, 0x1B, 0x9C, 0x2A, + 0xE8, 0x19, 0xD0, 0xFB, 0x2A, 0x12, 0xFA, 0xB9, + 0xBE, 0x70, 0xC4, 0xA7, 0xA1, 0x38, 0xDA, 0x84, + 0xE8, 0x28, 0x04, 0x35, 0xDA, 0xAD, 0xE5, 0xBB, + 0xE6, 0x6A, 0xF0, 0x83, 0x6A, 0x15, 0x4F, 0x81, + 0x7F, 0xB1, 0x7F, 0x33, 0x97, 0xE7, 0x25, 0xA3 + }, + { + 0xC6, 0x08, 0x97, 0xC6, 0xF8, 0x28, 0xE2, 0x1F, + 0x16, 0xFB, 0xB5, 0xF1, 0x5B, 0x32, 0x3F, 0x87, + 0xB6, 0xC8, 0x95, 0x5E, 0xAB, 0xF1, 0xD3, 0x80, + 0x61, 0xF7, 0x07, 0xF6, 0x08, 0xAB, 0xDD, 0x99, + 0x3F, 0xAC, 0x30, 0x70, 0x63, 0x3E, 0x28, 0x6C, + 0xF8, 0x33, 0x9C, 0xE2, 0x95, 0xDD, 0x35, 0x2D, + 0xF4, 0xB4, 0xB4, 0x0B, 0x2F, 0x29, 0xDA, 0x1D, + 0xD5, 0x0B, 0x3A, 0x05, 0xD0, 0x79, 0xE6, 0xBB + }, + { + 0x82, 0x10, 0xCD, 0x2C, 0x2D, 0x3B, 0x13, 0x5C, + 0x2C, 0xF0, 0x7F, 0xA0, 0xD1, 0x43, 0x3C, 0xD7, + 0x71, 0xF3, 0x25, 0xD0, 0x75, 0xC6, 0x46, 0x9D, + 0x9C, 0x7F, 0x1B, 0xA0, 0x94, 0x3C, 0xD4, 0xAB, + 0x09, 0x80, 0x8C, 0xAB, 0xF4, 0xAC, 0xB9, 0xCE, + 0x5B, 0xB8, 0x8B, 0x49, 0x89, 0x29, 0xB4, 0xB8, + 0x47, 0xF6, 0x81, 0xAD, 0x2C, 0x49, 0x0D, 0x04, + 0x2D, 0xB2, 0xAE, 0xC9, 0x42, 0x14, 0xB0, 0x6B + }, + { + 0x1D, 0x4E, 0xDF, 0xFF, 0xD8, 0xFD, 0x80, 0xF7, + 0xE4, 0x10, 0x78, 0x40, 0xFA, 0x3A, 0xA3, 0x1E, + 0x32, 0x59, 0x84, 0x91, 0xE4, 0xAF, 0x70, 0x13, + 0xC1, 0x97, 0xA6, 0x5B, 0x7F, 0x36, 0xDD, 0x3A, + 0xC4, 0xB4, 0x78, 0x45, 0x61, 0x11, 0xCD, 0x43, + 0x09, 0xD9, 0x24, 0x35, 0x10, 0x78, 0x2F, 0xA3, + 0x1B, 0x7C, 0x4C, 0x95, 0xFA, 0x95, 0x15, 0x20, + 0xD0, 0x20, 0xEB, 0x7E, 0x5C, 0x36, 0xE4, 0xEF + }, + { + 0xAF, 0x8E, 0x6E, 0x91, 0xFA, 0xB4, 0x6C, 0xE4, + 0x87, 0x3E, 0x1A, 0x50, 0xA8, 0xEF, 0x44, 0x8C, + 0xC2, 0x91, 0x21, 0xF7, 0xF7, 0x4D, 0xEE, 0xF3, + 0x4A, 0x71, 0xEF, 0x89, 0xCC, 0x00, 0xD9, 0x27, + 0x4B, 0xC6, 0xC2, 0x45, 0x4B, 0xBB, 0x32, 0x30, + 0xD8, 0xB2, 0xEC, 0x94, 0xC6, 0x2B, 0x1D, 0xEC, + 0x85, 0xF3, 0x59, 0x3B, 0xFA, 0x30, 0xEA, 0x6F, + 0x7A, 0x44, 0xD7, 0xC0, 0x94, 0x65, 0xA2, 0x53 + }, + { + 0x29, 0xFD, 0x38, 0x4E, 0xD4, 0x90, 0x6F, 0x2D, + 0x13, 0xAA, 0x9F, 0xE7, 0xAF, 0x90, 0x59, 0x90, + 0x93, 0x8B, 0xED, 0x80, 0x7F, 0x18, 0x32, 0x45, + 0x4A, 0x37, 0x2A, 0xB4, 0x12, 0xEE, 0xA1, 0xF5, + 0x62, 0x5A, 0x1F, 0xCC, 0x9A, 0xC8, 0x34, 0x3B, + 0x7C, 0x67, 0xC5, 0xAB, 0xA6, 0xE0, 0xB1, 0xCC, + 0x46, 0x44, 0x65, 0x49, 0x13, 0x69, 0x2C, 0x6B, + 0x39, 0xEB, 0x91, 0x87, 0xCE, 0xAC, 0xD3, 0xEC + }, + { + 0xA2, 0x68, 0xC7, 0x88, 0x5D, 0x98, 0x74, 0xA5, + 0x1C, 0x44, 0xDF, 0xFE, 0xD8, 0xEA, 0x53, 0xE9, + 0x4F, 0x78, 0x45, 0x6E, 0x0B, 0x2E, 0xD9, 0x9F, + 0xF5, 0xA3, 0x92, 0x47, 0x60, 0x81, 0x38, 0x26, + 0xD9, 0x60, 0xA1, 0x5E, 0xDB, 0xED, 0xBB, 0x5D, + 0xE5, 0x22, 0x6B, 0xA4, 0xB0, 0x74, 0xE7, 0x1B, + 0x05, 0xC5, 0x5B, 0x97, 0x56, 0xBB, 0x79, 0xE5, + 0x5C, 0x02, 0x75, 0x4C, 0x2C, 0x7B, 0x6C, 0x8A + }, + { + 0x0C, 0xF8, 0x54, 0x54, 0x88, 0xD5, 0x6A, 0x86, + 0x81, 0x7C, 0xD7, 0xEC, 0xB1, 0x0F, 0x71, 0x16, + 0xB7, 0xEA, 0x53, 0x0A, 0x45, 0xB6, 0xEA, 0x49, + 0x7B, 0x6C, 0x72, 0xC9, 0x97, 0xE0, 0x9E, 0x3D, + 0x0D, 0xA8, 0x69, 0x8F, 0x46, 0xBB, 0x00, 0x6F, + 0xC9, 0x77, 0xC2, 0xCD, 0x3D, 0x11, 0x77, 0x46, + 0x3A, 0xC9, 0x05, 0x7F, 0xDD, 0x16, 0x62, 0xC8, + 0x5D, 0x0C, 0x12, 0x64, 0x43, 0xC1, 0x04, 0x73 + }, + { + 0xB3, 0x96, 0x14, 0x26, 0x8F, 0xDD, 0x87, 0x81, + 0x51, 0x5E, 0x2C, 0xFE, 0xBF, 0x89, 0xB4, 0xD5, + 0x40, 0x2B, 0xAB, 0x10, 0xC2, 0x26, 0xE6, 0x34, + 0x4E, 0x6B, 0x9A, 0xE0, 0x00, 0xFB, 0x0D, 0x6C, + 0x79, 0xCB, 0x2F, 0x3E, 0xC8, 0x0E, 0x80, 0xEA, + 0xEB, 0x19, 0x80, 0xD2, 0xF8, 0x69, 0x89, 0x16, + 0xBD, 0x2E, 0x9F, 0x74, 0x72, 0x36, 0x65, 0x51, + 0x16, 0x64, 0x9C, 0xD3, 0xCA, 0x23, 0xA8, 0x37 + }, + { + 0x74, 0xBE, 0xF0, 0x92, 0xFC, 0x6F, 0x1E, 0x5D, + 0xBA, 0x36, 0x63, 0xA3, 0xFB, 0x00, 0x3B, 0x2A, + 0x5B, 0xA2, 0x57, 0x49, 0x65, 0x36, 0xD9, 0x9F, + 0x62, 0xB9, 0xD7, 0x3F, 0x8F, 0x9E, 0xB3, 0xCE, + 0x9F, 0xF3, 0xEE, 0xC7, 0x09, 0xEB, 0x88, 0x36, + 0x55, 0xEC, 0x9E, 0xB8, 0x96, 0xB9, 0x12, 0x8F, + 0x2A, 0xFC, 0x89, 0xCF, 0x7D, 0x1A, 0xB5, 0x8A, + 0x72, 0xF4, 0xA3, 0xBF, 0x03, 0x4D, 0x2B, 0x4A + }, + { + 0x3A, 0x98, 0x8D, 0x38, 0xD7, 0x56, 0x11, 0xF3, + 0xEF, 0x38, 0xB8, 0x77, 0x49, 0x80, 0xB3, 0x3E, + 0x57, 0x3B, 0x6C, 0x57, 0xBE, 0xE0, 0x46, 0x9B, + 0xA5, 0xEE, 0xD9, 0xB4, 0x4F, 0x29, 0x94, 0x5E, + 0x73, 0x47, 0x96, 0x7F, 0xBA, 0x2C, 0x16, 0x2E, + 0x1C, 0x3B, 0xE7, 0xF3, 0x10, 0xF2, 0xF7, 0x5E, + 0xE2, 0x38, 0x1E, 0x7B, 0xFD, 0x6B, 0x3F, 0x0B, + 0xAE, 0xA8, 0xD9, 0x5D, 0xFB, 0x1D, 0xAF, 0xB1 + }, + { + 0x58, 0xAE, 0xDF, 0xCE, 0x6F, 0x67, 0xDD, 0xC8, + 0x5A, 0x28, 0xC9, 0x92, 0xF1, 0xC0, 0xBD, 0x09, + 0x69, 0xF0, 0x41, 0xE6, 0x6F, 0x1E, 0xE8, 0x80, + 0x20, 0xA1, 0x25, 0xCB, 0xFC, 0xFE, 0xBC, 0xD6, + 0x17, 0x09, 0xC9, 0xC4, 0xEB, 0xA1, 0x92, 0xC1, + 0x5E, 0x69, 0xF0, 0x20, 0xD4, 0x62, 0x48, 0x60, + 0x19, 0xFA, 0x8D, 0xEA, 0x0C, 0xD7, 0xA4, 0x29, + 0x21, 0xA1, 0x9D, 0x2F, 0xE5, 0x46, 0xD4, 0x3D + }, + { + 0x93, 0x47, 0xBD, 0x29, 0x14, 0x73, 0xE6, 0xB4, + 0xE3, 0x68, 0x43, 0x7B, 0x8E, 0x56, 0x1E, 0x06, + 0x5F, 0x64, 0x9A, 0x6D, 0x8A, 0xDA, 0x47, 0x9A, + 0xD0, 0x9B, 0x19, 0x99, 0xA8, 0xF2, 0x6B, 0x91, + 0xCF, 0x61, 0x20, 0xFD, 0x3B, 0xFE, 0x01, 0x4E, + 0x83, 0xF2, 0x3A, 0xCF, 0xA4, 0xC0, 0xAD, 0x7B, + 0x37, 0x12, 0xB2, 0xC3, 0xC0, 0x73, 0x32, 0x70, + 0x66, 0x31, 0x12, 0xCC, 0xD9, 0x28, 0x5C, 0xD9 + }, + { + 0xB3, 0x21, 0x63, 0xE7, 0xC5, 0xDB, 0xB5, 0xF5, + 0x1F, 0xDC, 0x11, 0xD2, 0xEA, 0xC8, 0x75, 0xEF, + 0xBB, 0xCB, 0x7E, 0x76, 0x99, 0x09, 0x0A, 0x7E, + 0x7F, 0xF8, 0xA8, 0xD5, 0x07, 0x95, 0xAF, 0x5D, + 0x74, 0xD9, 0xFF, 0x98, 0x54, 0x3E, 0xF8, 0xCD, + 0xF8, 0x9A, 0xC1, 0x3D, 0x04, 0x85, 0x27, 0x87, + 0x56, 0xE0, 0xEF, 0x00, 0xC8, 0x17, 0x74, 0x56, + 0x61, 0xE1, 0xD5, 0x9F, 0xE3, 0x8E, 0x75, 0x37 + }, + { + 0x10, 0x85, 0xD7, 0x83, 0x07, 0xB1, 0xC4, 0xB0, + 0x08, 0xC5, 0x7A, 0x2E, 0x7E, 0x5B, 0x23, 0x46, + 0x58, 0xA0, 0xA8, 0x2E, 0x4F, 0xF1, 0xE4, 0xAA, + 0xAC, 0x72, 0xB3, 0x12, 0xFD, 0xA0, 0xFE, 0x27, + 0xD2, 0x33, 0xBC, 0x5B, 0x10, 0xE9, 0xCC, 0x17, + 0xFD, 0xC7, 0x69, 0x7B, 0x54, 0x0C, 0x7D, 0x95, + 0xEB, 0x21, 0x5A, 0x19, 0xA1, 0xA0, 0xE2, 0x0E, + 0x1A, 0xBF, 0xA1, 0x26, 0xEF, 0xD5, 0x68, 0xC7 + }, + { + 0x4E, 0x5C, 0x73, 0x4C, 0x7D, 0xDE, 0x01, 0x1D, + 0x83, 0xEA, 0xC2, 0xB7, 0x34, 0x7B, 0x37, 0x35, + 0x94, 0xF9, 0x2D, 0x70, 0x91, 0xB9, 0xCA, 0x34, + 0xCB, 0x9C, 0x6F, 0x39, 0xBD, 0xF5, 0xA8, 0xD2, + 0xF1, 0x34, 0x37, 0x9E, 0x16, 0xD8, 0x22, 0xF6, + 0x52, 0x21, 0x70, 0xCC, 0xF2, 0xDD, 0xD5, 0x5C, + 0x84, 0xB9, 0xE6, 0xC6, 0x4F, 0xC9, 0x27, 0xAC, + 0x4C, 0xF8, 0xDF, 0xB2, 0xA1, 0x77, 0x01, 0xF2 + }, + { + 0x69, 0x5D, 0x83, 0xBD, 0x99, 0x0A, 0x11, 0x17, + 0xB3, 0xD0, 0xCE, 0x06, 0xCC, 0x88, 0x80, 0x27, + 0xD1, 0x2A, 0x05, 0x4C, 0x26, 0x77, 0xFD, 0x82, + 0xF0, 0xD4, 0xFB, 0xFC, 0x93, 0x57, 0x55, 0x23, + 0xE7, 0x99, 0x1A, 0x5E, 0x35, 0xA3, 0x75, 0x2E, + 0x9B, 0x70, 0xCE, 0x62, 0x99, 0x2E, 0x26, 0x8A, + 0x87, 0x77, 0x44, 0xCD, 0xD4, 0x35, 0xF5, 0xF1, + 0x30, 0x86, 0x9C, 0x9A, 0x20, 0x74, 0xB3, 0x38 + }, + { + 0xA6, 0x21, 0x37, 0x43, 0x56, 0x8E, 0x3B, 0x31, + 0x58, 0xB9, 0x18, 0x43, 0x01, 0xF3, 0x69, 0x08, + 0x47, 0x55, 0x4C, 0x68, 0x45, 0x7C, 0xB4, 0x0F, + 0xC9, 0xA4, 0xB8, 0xCF, 0xD8, 0xD4, 0xA1, 0x18, + 0xC3, 0x01, 0xA0, 0x77, 0x37, 0xAE, 0xDA, 0x0F, + 0x92, 0x9C, 0x68, 0x91, 0x3C, 0x5F, 0x51, 0xC8, + 0x03, 0x94, 0xF5, 0x3B, 0xFF, 0x1C, 0x3E, 0x83, + 0xB2, 0xE4, 0x0C, 0xA9, 0x7E, 0xBA, 0x9E, 0x15 + }, + { + 0xD4, 0x44, 0xBF, 0xA2, 0x36, 0x2A, 0x96, 0xDF, + 0x21, 0x3D, 0x07, 0x0E, 0x33, 0xFA, 0x84, 0x1F, + 0x51, 0x33, 0x4E, 0x4E, 0x76, 0x86, 0x6B, 0x81, + 0x39, 0xE8, 0xAF, 0x3B, 0xB3, 0x39, 0x8B, 0xE2, + 0xDF, 0xAD, 0xDC, 0xBC, 0x56, 0xB9, 0x14, 0x6D, + 0xE9, 0xF6, 0x81, 0x18, 0xDC, 0x58, 0x29, 0xE7, + 0x4B, 0x0C, 0x28, 0xD7, 0x71, 0x19, 0x07, 0xB1, + 0x21, 0xF9, 0x16, 0x1C, 0xB9, 0x2B, 0x69, 0xA9 + }, + { + 0x14, 0x27, 0x09, 0xD6, 0x2E, 0x28, 0xFC, 0xCC, + 0xD0, 0xAF, 0x97, 0xFA, 0xD0, 0xF8, 0x46, 0x5B, + 0x97, 0x1E, 0x82, 0x20, 0x1D, 0xC5, 0x10, 0x70, + 0xFA, 0xA0, 0x37, 0x2A, 0xA4, 0x3E, 0x92, 0x48, + 0x4B, 0xE1, 0xC1, 0xE7, 0x3B, 0xA1, 0x09, 0x06, + 0xD5, 0xD1, 0x85, 0x3D, 0xB6, 0xA4, 0x10, 0x6E, + 0x0A, 0x7B, 0xF9, 0x80, 0x0D, 0x37, 0x3D, 0x6D, + 0xEE, 0x2D, 0x46, 0xD6, 0x2E, 0xF2, 0xA4, 0x61 + }, +}; + + + + +static const uint8_t blake2sp_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] = +{ + { + 0xDD, 0x0E, 0x89, 0x17, 0x76, 0x93, 0x3F, 0x43, + 0xC7, 0xD0, 0x32, 0xB0, 0x8A, 0x91, 0x7E, 0x25, + 0x74, 0x1F, 0x8A, 0xA9, 0xA1, 0x2C, 0x12, 0xE1, + 0xCA, 0xC8, 0x80, 0x15, 0x00, 0xF2, 0xCA, 0x4F + }, + { + 0xA6, 0xB9, 0xEE, 0xCC, 0x25, 0x22, 0x7A, 0xD7, + 0x88, 0xC9, 0x9D, 0x3F, 0x23, 0x6D, 0xEB, 0xC8, + 0xDA, 0x40, 0x88, 0x49, 0xE9, 0xA5, 0x17, 0x89, + 0x78, 0x72, 0x7A, 0x81, 0x45, 0x7F, 0x72, 0x39 + }, + { + 0xDA, 0xCA, 0xDE, 0xCE, 0x7A, 0x8E, 0x6B, 0xF3, + 0xAB, 0xFE, 0x32, 0x4C, 0xA6, 0x95, 0x43, 0x69, + 0x84, 0xB8, 0x19, 0x5D, 0x29, 0xF6, 0xBB, 0xD8, + 0x96, 0xE4, 0x1E, 0x18, 0xE2, 0x1C, 0x91, 0x45 + }, + { + 0xED, 0x14, 0x41, 0x3B, 0x40, 0xDA, 0x68, 0x9F, + 0x1F, 0x7F, 0xED, 0x2B, 0x08, 0xDF, 0xF4, 0x5B, + 0x80, 0x92, 0xDB, 0x5E, 0xC2, 0xC3, 0x61, 0x0E, + 0x02, 0x72, 0x4D, 0x20, 0x2F, 0x42, 0x3C, 0x46 + }, + { + 0x9B, 0x8A, 0x52, 0x7B, 0x52, 0x72, 0x25, 0x0A, + 0x1E, 0xC3, 0x97, 0x38, 0x8F, 0x04, 0x09, 0x14, + 0x95, 0x48, 0x06, 0xE7, 0x94, 0xDB, 0x04, 0xB7, + 0x0A, 0x46, 0x11, 0xBC, 0x59, 0x58, 0x6A, 0x83 + }, + { + 0x2B, 0xB6, 0x33, 0x37, 0x29, 0x00, 0x0B, 0xE3, + 0xD5, 0xA2, 0x1B, 0x98, 0xF8, 0xE7, 0xEA, 0xD0, + 0x77, 0xF1, 0x51, 0xA5, 0x39, 0x39, 0x19, 0xEB, + 0x67, 0xC8, 0x76, 0xEE, 0x00, 0xBB, 0xBB, 0x04 + }, + { + 0x63, 0xC0, 0x14, 0x08, 0x15, 0x4A, 0xD1, 0x9D, + 0x7F, 0xB7, 0x39, 0xF3, 0x11, 0x78, 0x17, 0x80, + 0x46, 0x2C, 0xF2, 0xEE, 0xCC, 0xE6, 0x0F, 0x06, + 0x4E, 0x85, 0x34, 0x87, 0xC2, 0x72, 0xE3, 0xEB + }, + { + 0x3D, 0x05, 0x1A, 0x11, 0x76, 0x01, 0x9C, 0xA3, + 0x7B, 0xF3, 0x3D, 0x60, 0x42, 0x7F, 0x8D, 0x9D, + 0x1C, 0x3A, 0xBD, 0x59, 0x82, 0x97, 0xCF, 0xB4, + 0x23, 0x5F, 0x74, 0x7D, 0x7C, 0x7C, 0x7F, 0xEC + }, + { + 0x39, 0x1E, 0xA9, 0x12, 0xDF, 0x4D, 0x4D, 0x79, + 0xA4, 0x64, 0x6D, 0x9D, 0xA2, 0x54, 0x9A, 0x44, + 0x6D, 0x22, 0x40, 0xF6, 0x24, 0x15, 0xD0, 0x70, + 0xA2, 0xE0, 0x93, 0x99, 0x2B, 0x47, 0x1F, 0xBA + }, + { + 0x32, 0x46, 0x40, 0x44, 0x0E, 0xA5, 0xC3, 0x08, + 0x2D, 0xDC, 0x30, 0x9E, 0x78, 0x09, 0xD7, 0x41, + 0xD6, 0xCC, 0x1B, 0x2D, 0x49, 0x0F, 0xF8, 0xC0, + 0x52, 0x12, 0x8A, 0x6E, 0xEB, 0x40, 0x9D, 0x62 + }, + { + 0xAB, 0x85, 0x5E, 0x6F, 0xA3, 0x9A, 0x5E, 0x8F, + 0xC9, 0x0E, 0xAC, 0xB9, 0x99, 0xC7, 0xF7, 0x8A, + 0xE7, 0x1E, 0x59, 0xC3, 0xD9, 0x7D, 0x60, 0xAF, + 0xE5, 0x17, 0xD5, 0x87, 0x92, 0x3B, 0x77, 0x11 + }, + { + 0x2A, 0x39, 0xDA, 0x45, 0x86, 0xEF, 0xC4, 0x77, + 0x85, 0xA7, 0xA8, 0xDA, 0x85, 0x68, 0x3A, 0x51, + 0x72, 0x4C, 0xDE, 0xF5, 0x41, 0x3B, 0x35, 0x6D, + 0xC4, 0xFB, 0x50, 0x05, 0x13, 0xF8, 0xFA, 0x2E + }, + { + 0x8A, 0x00, 0x57, 0xC1, 0xF7, 0x8A, 0xD6, 0x21, + 0x45, 0x55, 0xC0, 0x67, 0x07, 0x33, 0xE2, 0x9A, + 0x4C, 0x7E, 0x95, 0x62, 0x27, 0x66, 0x0E, 0xFE, + 0xB1, 0xD7, 0xFC, 0x79, 0xF5, 0x8E, 0xC6, 0xF2 + }, + { + 0x07, 0x64, 0xB0, 0x01, 0x7F, 0x5B, 0xD9, 0x51, + 0xF0, 0x1D, 0x9F, 0xDF, 0x95, 0xC0, 0xCB, 0x41, + 0x38, 0x98, 0x5D, 0x84, 0x79, 0x9C, 0xD4, 0x29, + 0x84, 0xE2, 0x5B, 0x51, 0x28, 0x00, 0xE7, 0x3C + }, + { + 0xCC, 0x02, 0x49, 0x56, 0x93, 0xC8, 0xE1, 0x84, + 0xAD, 0x2E, 0xD0, 0x9D, 0x53, 0x3D, 0xC3, 0x3B, + 0x76, 0xA7, 0x78, 0x3D, 0x62, 0x07, 0xFC, 0xAC, + 0xCB, 0x64, 0xF3, 0xED, 0x2C, 0x6D, 0x66, 0xE0 + }, + { + 0xC0, 0xDF, 0x49, 0xC2, 0x06, 0xA3, 0x42, 0x88, + 0x14, 0x32, 0x16, 0x84, 0x7D, 0xF3, 0x34, 0xD4, + 0x56, 0x9D, 0xAD, 0x73, 0xC2, 0xB1, 0xFF, 0x62, + 0x84, 0x88, 0x4F, 0xD3, 0x89, 0x41, 0xFB, 0x95 + }, + { + 0xB9, 0x19, 0x45, 0x19, 0xE4, 0x97, 0x8A, 0x9D, + 0xC8, 0x93, 0xB2, 0x8B, 0xD8, 0x08, 0xCD, 0xFA, + 0xBB, 0x1B, 0xD5, 0x10, 0xD8, 0x62, 0xB3, 0x17, + 0x1F, 0xF6, 0xE0, 0x17, 0xA4, 0x1B, 0x80, 0x4C + }, + { + 0xBB, 0xA9, 0x27, 0xAC, 0xF1, 0x1B, 0xEB, 0xD3, + 0x62, 0xA3, 0xA3, 0xEB, 0x78, 0xC4, 0xBB, 0x65, + 0xE6, 0x02, 0xA8, 0x70, 0x9F, 0xCE, 0xF3, 0x8D, + 0xC6, 0xC8, 0xB7, 0xBD, 0xA6, 0x64, 0xC3, 0x2C + }, + { + 0xEC, 0xB4, 0x90, 0x0A, 0x63, 0x92, 0x4E, 0x72, + 0x0D, 0x40, 0xF2, 0xD2, 0xB1, 0x4D, 0x1B, 0xB3, + 0x9C, 0x37, 0x01, 0xAD, 0x73, 0x46, 0xBD, 0x0B, + 0x67, 0x23, 0x42, 0x70, 0xBF, 0xBE, 0x7E, 0x70 + }, + { + 0xF8, 0x31, 0x5A, 0x21, 0xB2, 0x5E, 0x6B, 0xA8, + 0xBF, 0x59, 0xB1, 0x7B, 0x05, 0x91, 0x3B, 0x8C, + 0xA4, 0x65, 0x9F, 0x1C, 0xD8, 0x38, 0xFC, 0xC7, + 0x73, 0xC9, 0xEB, 0x12, 0xE7, 0x00, 0x4E, 0x09 + }, + { + 0x4B, 0x77, 0xAF, 0x67, 0xA9, 0x23, 0x2B, 0xF1, + 0x18, 0x4E, 0x57, 0x81, 0x82, 0x94, 0x03, 0x1E, + 0x55, 0xF1, 0xF8, 0x53, 0xC9, 0x4D, 0xBA, 0xB5, + 0x57, 0x75, 0x47, 0x33, 0x0D, 0x65, 0xAA, 0x61 + }, + { + 0x76, 0x85, 0x68, 0x39, 0x0F, 0xD2, 0xB8, 0x70, + 0x94, 0x11, 0x4E, 0xD4, 0xCF, 0x72, 0x3E, 0xA3, + 0x20, 0xFE, 0x97, 0x7B, 0x53, 0x18, 0x03, 0x05, + 0xC3, 0x84, 0x33, 0x54, 0x79, 0xF0, 0xB5, 0x9B + }, + { + 0xA4, 0x31, 0xCB, 0x27, 0x0F, 0x3E, 0x2C, 0x9B, + 0x7A, 0x95, 0x93, 0xB1, 0x55, 0xCC, 0xEC, 0xFF, + 0x5B, 0x5C, 0x4A, 0x2D, 0xCD, 0x5D, 0x6B, 0xB1, + 0xC4, 0x85, 0xAA, 0x28, 0x69, 0x97, 0xF9, 0x15 + }, + { + 0xD6, 0x91, 0xFA, 0x6A, 0x79, 0x0B, 0x1A, 0x51, + 0x79, 0x80, 0x08, 0x7F, 0x50, 0xB0, 0x3D, 0xED, + 0x8C, 0x6E, 0xD4, 0x86, 0xD0, 0x84, 0x22, 0x1C, + 0x82, 0x7D, 0x9B, 0xD9, 0x22, 0xBE, 0xB8, 0xC0 + }, + { + 0x8F, 0x97, 0x8A, 0x49, 0x32, 0xF4, 0x45, 0x98, + 0x13, 0xE8, 0xFE, 0x15, 0x68, 0x6E, 0x4E, 0xFA, + 0x25, 0xC2, 0xC5, 0xFF, 0x5A, 0x3A, 0x4F, 0x8C, + 0x9B, 0x14, 0x96, 0x5D, 0x2F, 0x0B, 0xE4, 0x61 + }, + { + 0x1E, 0xFB, 0xD0, 0xC1, 0x31, 0x44, 0x91, 0x42, + 0xF2, 0x29, 0x5F, 0x2D, 0x42, 0x41, 0x1D, 0xFE, + 0x0F, 0x48, 0xD4, 0xAC, 0xAE, 0x76, 0x2D, 0x8D, + 0xF6, 0x7A, 0x57, 0x0B, 0xF7, 0xB1, 0xDC, 0xD5 + }, + { + 0xD5, 0x3B, 0xA9, 0x33, 0x46, 0x14, 0x3A, 0xB8, + 0xE0, 0xD3, 0xD1, 0xBF, 0x27, 0x27, 0x06, 0xD1, + 0x69, 0xE6, 0x6C, 0x69, 0xC7, 0xB8, 0xF4, 0xA5, + 0xE8, 0x2F, 0xEF, 0x44, 0x07, 0x02, 0xBC, 0xF2 + }, + { + 0xF7, 0x1A, 0x3E, 0xC0, 0x1A, 0xA3, 0x82, 0xEA, + 0x76, 0x99, 0x2B, 0x43, 0x0A, 0x7F, 0x42, 0xC7, + 0xAD, 0x2A, 0x86, 0xAE, 0xA9, 0xC1, 0x9E, 0x76, + 0xCD, 0x17, 0x32, 0xEC, 0x68, 0x30, 0xDE, 0x6F + }, + { + 0x80, 0xA6, 0xAB, 0x7B, 0x71, 0x04, 0x64, 0xF9, + 0x3E, 0x6C, 0xBA, 0x96, 0x86, 0x4A, 0xA6, 0x40, + 0x9B, 0xCA, 0xFC, 0x1B, 0xF4, 0xB3, 0x2A, 0x30, + 0x93, 0x72, 0xE8, 0x57, 0xE8, 0x04, 0x06, 0x8C + }, + { + 0xDB, 0xDE, 0x81, 0xE5, 0x1A, 0x52, 0x17, 0x4B, + 0x10, 0x14, 0x90, 0x1B, 0x53, 0xBE, 0xF8, 0x8D, + 0xE9, 0x3B, 0x29, 0xE2, 0x74, 0x34, 0x7E, 0x8E, + 0x9A, 0x7B, 0x03, 0x74, 0x56, 0x62, 0x9F, 0x35 + }, + { + 0x75, 0xF2, 0x74, 0x46, 0x6B, 0x1A, 0x2D, 0x0F, + 0xD8, 0x45, 0xBB, 0xB5, 0x7C, 0x38, 0xC9, 0x89, + 0x51, 0x6E, 0x15, 0x68, 0x32, 0x0A, 0xB5, 0x17, + 0xB1, 0x63, 0xEA, 0xF7, 0x09, 0x23, 0x4C, 0xC7 + }, + { + 0xAF, 0xE1, 0xA0, 0x59, 0x1C, 0x49, 0x1D, 0x41, + 0x6E, 0xB6, 0x4F, 0x62, 0x86, 0xF3, 0xBA, 0x29, + 0xD4, 0xC9, 0x99, 0x82, 0x14, 0xA3, 0x83, 0x1C, + 0x39, 0x01, 0x4A, 0xC0, 0x30, 0x55, 0x79, 0x45 + }, + { + 0x67, 0xFF, 0x6A, 0xCD, 0xBE, 0x8A, 0x99, 0xA1, + 0x66, 0xA5, 0xD9, 0xCF, 0x32, 0x13, 0x65, 0x06, + 0xB5, 0x48, 0xD6, 0xC9, 0x47, 0xC2, 0x4C, 0x69, + 0x9C, 0xEA, 0x3A, 0xFD, 0x92, 0xAD, 0xFA, 0xCA + }, + { + 0xBF, 0xB4, 0xD0, 0xC7, 0x11, 0x20, 0x75, 0x26, + 0x2C, 0x2D, 0xD2, 0x48, 0xF3, 0x34, 0xB2, 0xEF, + 0x15, 0x40, 0x08, 0x7E, 0xCC, 0x73, 0x82, 0xBC, + 0x2A, 0x27, 0x25, 0x75, 0xC5, 0x00, 0x9F, 0x70 + }, + { + 0x17, 0xC9, 0x4B, 0x9C, 0x53, 0x72, 0x43, 0xF2, + 0x33, 0x5B, 0x86, 0x39, 0x49, 0xB2, 0xB9, 0x1C, + 0x98, 0xA6, 0x95, 0x6D, 0x7C, 0x10, 0xAA, 0x98, + 0x99, 0x59, 0xA8, 0x0F, 0x91, 0x0C, 0x25, 0x22 + }, + { + 0xF6, 0x33, 0x8F, 0x43, 0x4D, 0x31, 0x94, 0x10, + 0x19, 0x6D, 0x95, 0x19, 0xAB, 0xCA, 0xEF, 0xF7, + 0xD5, 0x54, 0x39, 0xFD, 0x2A, 0xA5, 0xBA, 0xBF, + 0x7A, 0x7E, 0x79, 0x13, 0xB2, 0x94, 0xED, 0x4D + }, + { + 0x08, 0xEF, 0x7D, 0x65, 0xF9, 0xBB, 0xF3, 0xDA, + 0x1F, 0x78, 0x84, 0xAE, 0x9B, 0x75, 0x90, 0x1F, + 0xD8, 0x52, 0x95, 0x66, 0x2A, 0x6E, 0xA7, 0x1D, + 0xE0, 0x8B, 0xEE, 0x38, 0x34, 0x57, 0x62, 0x78 + }, + { + 0x16, 0x47, 0xEC, 0xC2, 0xBA, 0x13, 0xF8, 0xB9, + 0x3B, 0x2F, 0xBC, 0xDC, 0x4E, 0x8F, 0x1D, 0xFA, + 0x47, 0xFE, 0x3B, 0xE1, 0x2A, 0xAA, 0x0E, 0x45, + 0x9B, 0x0E, 0x5A, 0x87, 0xF3, 0xA6, 0x9B, 0xB0 + }, + { + 0xFF, 0x92, 0x7A, 0x71, 0x78, 0x81, 0xF6, 0xFD, + 0x8E, 0xD8, 0xBF, 0x5D, 0x5E, 0x35, 0xBD, 0x80, + 0x16, 0x15, 0x73, 0xE5, 0x82, 0x94, 0x04, 0xC3, + 0x2D, 0x2A, 0x27, 0x6A, 0x01, 0xF4, 0xB9, 0x06 + }, + { + 0xC8, 0xCA, 0xF1, 0x36, 0xFF, 0x20, 0x9C, 0x82, + 0xE0, 0x24, 0x0C, 0x1E, 0x62, 0xA3, 0xBC, 0x7E, + 0x9C, 0xAC, 0x87, 0x3B, 0x01, 0x1C, 0xF7, 0xC5, + 0xE6, 0x7E, 0xC1, 0x87, 0xA5, 0xFB, 0xCD, 0x96 + }, + { + 0xD9, 0xAC, 0xC7, 0x3E, 0x3F, 0x42, 0x1E, 0x18, + 0x83, 0xB5, 0xED, 0x53, 0xD8, 0x2A, 0x9A, 0xEC, + 0x8F, 0x5D, 0xC9, 0x80, 0xC4, 0x2B, 0xCA, 0xEB, + 0x0E, 0x7D, 0x89, 0x76, 0xA3, 0x38, 0xEF, 0x51 + }, + { + 0x9F, 0x17, 0x3F, 0xCF, 0x08, 0xA5, 0x36, 0x21, + 0x93, 0xF3, 0x52, 0xC8, 0x25, 0x6A, 0xE5, 0x34, + 0xAE, 0x9C, 0xE7, 0xBF, 0xA4, 0xBC, 0x09, 0xFA, + 0xC9, 0x00, 0x98, 0xF9, 0x8A, 0x71, 0x62, 0x94 + }, + { + 0x0A, 0x72, 0x45, 0x79, 0xDC, 0x80, 0xBC, 0x0C, + 0x90, 0x04, 0xE5, 0x1B, 0xE7, 0xEF, 0xF3, 0xAF, + 0xA5, 0x30, 0x75, 0xAB, 0x4A, 0x32, 0x55, 0x77, + 0x33, 0x58, 0x6E, 0x82, 0x0F, 0xD3, 0x64, 0x23 + }, + { + 0x38, 0xF7, 0xC3, 0x40, 0xF4, 0xB1, 0x59, 0xB1, + 0xE5, 0x94, 0xF6, 0xEB, 0x83, 0x28, 0x49, 0x17, + 0xB7, 0xAA, 0x19, 0xC7, 0x4F, 0x57, 0x11, 0x7A, + 0x4E, 0x08, 0xCF, 0x7C, 0x4E, 0x32, 0xA2, 0x3C + }, + { + 0x1C, 0x67, 0x4B, 0xE2, 0x57, 0xE9, 0xB3, 0x31, + 0x34, 0xD4, 0x16, 0x8F, 0x15, 0x2F, 0x8B, 0x63, + 0xDF, 0xD7, 0x80, 0xC9, 0x7D, 0xC4, 0xDC, 0x37, + 0xAC, 0x26, 0xCC, 0x0A, 0xEF, 0xB7, 0x9C, 0x1A + }, + { + 0x2F, 0x0C, 0x59, 0x76, 0x16, 0xD5, 0x75, 0x17, + 0x14, 0xA5, 0xFB, 0x4E, 0xBF, 0x3C, 0x48, 0x1A, + 0x96, 0xC3, 0xAD, 0x14, 0x5E, 0xBD, 0xE0, 0x65, + 0x09, 0xF3, 0xA2, 0xE5, 0xF2, 0xC1, 0x3F, 0xC8 + }, + { + 0xFD, 0xDC, 0x69, 0xE0, 0xC9, 0x83, 0xCD, 0x82, + 0x83, 0xED, 0x81, 0x88, 0xBE, 0xC4, 0xE5, 0xF4, + 0x1D, 0xEA, 0x3D, 0x01, 0xB9, 0xE7, 0x4C, 0x4B, + 0xAF, 0x73, 0x41, 0xD8, 0xB4, 0xBF, 0x55, 0x3D + }, + { + 0x24, 0xD0, 0x83, 0xCB, 0xA0, 0x38, 0xC8, 0x7E, + 0x9A, 0xCB, 0x86, 0x81, 0x82, 0x02, 0x08, 0xB7, + 0x5C, 0xB3, 0x29, 0x3A, 0x96, 0xC9, 0xEF, 0xA7, + 0x5D, 0x2C, 0x63, 0xF1, 0x6B, 0x85, 0xFE, 0x1E + }, + { + 0x7F, 0x6A, 0x64, 0x9C, 0xCA, 0x89, 0xB2, 0x53, + 0xFF, 0xBD, 0x20, 0xC0, 0x16, 0x98, 0x01, 0x00, + 0xA8, 0x7C, 0x16, 0x81, 0x09, 0x62, 0x8F, 0xCC, + 0x66, 0x52, 0x5D, 0x8B, 0xAA, 0xFE, 0x50, 0x5F + }, + { + 0x6D, 0xA3, 0x73, 0xB4, 0xC1, 0x87, 0x92, 0xB3, + 0x20, 0x9A, 0xDD, 0x15, 0xA5, 0x07, 0x4A, 0x1D, + 0x70, 0xC1, 0x0B, 0xB3, 0x94, 0x80, 0xCA, 0x3F, + 0xE5, 0xC4, 0x39, 0xD9, 0x5F, 0xC2, 0x86, 0xCA + }, + { + 0x27, 0x0A, 0xFF, 0xA6, 0x42, 0x6F, 0x1A, 0x51, + 0x5C, 0x9B, 0x76, 0xDF, 0xC2, 0x7D, 0x18, 0x1F, + 0xC2, 0xFD, 0x57, 0xD0, 0x82, 0xA3, 0xBA, 0x2C, + 0x1E, 0xEF, 0x07, 0x15, 0x33, 0xA6, 0xDF, 0xB7 + }, + { + 0xC2, 0x2E, 0x15, 0xCF, 0xC5, 0xA3, 0xD1, 0x4B, + 0x64, 0xD1, 0x31, 0xF3, 0x5F, 0xB3, 0x5D, 0xD5, + 0xE6, 0xC5, 0x7D, 0xC4, 0xAF, 0xC5, 0x52, 0x27, + 0x75, 0x01, 0xEC, 0xA7, 0x64, 0xDA, 0x74, 0xBF + }, + { + 0xAD, 0x68, 0x3E, 0x96, 0xB8, 0xAC, 0x65, 0x8C, + 0x4F, 0x3F, 0x10, 0xAD, 0x22, 0xD9, 0x9B, 0x07, + 0xCB, 0x5E, 0xF9, 0xE3, 0x1C, 0xBE, 0x11, 0xE7, + 0xF7, 0xDC, 0x29, 0xF2, 0xAE, 0xE5, 0x02, 0x4C + }, + { + 0x78, 0xD3, 0xCE, 0xDA, 0x1C, 0xE0, 0x52, 0x93, + 0xF4, 0x30, 0xF6, 0x16, 0x7B, 0x33, 0xC9, 0x9F, + 0x0B, 0x1D, 0x6D, 0xAD, 0xE5, 0x21, 0x43, 0xC2, + 0x92, 0x55, 0x77, 0xC0, 0xBA, 0x82, 0x53, 0xEB + }, + { + 0xE0, 0x06, 0x45, 0x63, 0x44, 0xF9, 0x0F, 0x50, + 0x1C, 0x25, 0x81, 0x3F, 0x9B, 0xE2, 0xA3, 0xF4, + 0x0B, 0x98, 0x74, 0xFA, 0x05, 0x63, 0x98, 0x1C, + 0xD4, 0x56, 0xEE, 0x8D, 0x44, 0x80, 0x7C, 0x93 + }, + { + 0x39, 0x08, 0xE8, 0xD5, 0x47, 0xC0, 0xAF, 0xB1, + 0x13, 0x49, 0x49, 0x46, 0x63, 0x04, 0xA1, 0x45, + 0x02, 0x7E, 0x6B, 0xB7, 0xA7, 0x4D, 0xD1, 0xC1, + 0x62, 0xCD, 0xF0, 0xBC, 0xF7, 0x72, 0x37, 0xE8 + }, + { + 0x1B, 0x6C, 0x87, 0xA3, 0x48, 0x38, 0xC7, 0xCD, + 0x5F, 0xD0, 0x89, 0x14, 0x22, 0x4E, 0x90, 0xC2, + 0x2A, 0xBF, 0x5A, 0x97, 0xB1, 0x06, 0x46, 0xD9, + 0x8C, 0x49, 0x16, 0xD3, 0xA8, 0x93, 0x9E, 0x62 + }, + { + 0xB0, 0xD3, 0x8F, 0x82, 0xF2, 0x48, 0x91, 0x69, + 0x52, 0xB3, 0x16, 0xB6, 0xD3, 0x6D, 0x9E, 0x02, + 0x2D, 0xF6, 0xEE, 0xCC, 0x26, 0xC7, 0x62, 0xA6, + 0x55, 0xCF, 0x5F, 0x0A, 0xE6, 0x49, 0xE2, 0xBD + }, + { + 0x8D, 0x66, 0xFC, 0x9C, 0xED, 0xA5, 0xED, 0xDF, + 0xB1, 0xE0, 0x4D, 0x09, 0x6C, 0xA7, 0x0E, 0xF5, + 0x06, 0x50, 0xFB, 0x87, 0xCC, 0x6A, 0x9F, 0xFB, + 0xB3, 0xD2, 0x0B, 0xCE, 0x7B, 0x5A, 0x60, 0x74 + }, + { + 0x06, 0x43, 0x54, 0xE8, 0xE1, 0x1C, 0xF7, 0x13, + 0xB2, 0xC7, 0x2B, 0xA6, 0x7A, 0xC7, 0xD7, 0x6E, + 0x41, 0xBA, 0x61, 0xDB, 0x9C, 0x2D, 0xEA, 0x52, + 0x2E, 0x0B, 0xDA, 0x17, 0xCB, 0xA5, 0xE3, 0x92 + }, + { + 0xC8, 0xEF, 0x5F, 0x49, 0x8B, 0xD1, 0xBC, 0x70, + 0x7F, 0xBC, 0x7B, 0x5C, 0xBC, 0x2D, 0xFF, 0x04, + 0x93, 0x14, 0x4A, 0xC5, 0x27, 0x86, 0xDB, 0x3C, + 0x79, 0x3E, 0xF4, 0xAE, 0x8A, 0x83, 0x88, 0x47 + }, + { + 0x8A, 0x23, 0x97, 0xDF, 0x31, 0xE7, 0xF0, 0xCC, + 0x29, 0x0D, 0xA9, 0xA8, 0xBB, 0xE4, 0xF5, 0xF7, + 0xA3, 0xA1, 0x37, 0x50, 0x73, 0x0D, 0xB6, 0x2D, + 0xC2, 0x54, 0x0F, 0xDB, 0xD6, 0x18, 0x85, 0x89 + }, + { + 0xF1, 0x2D, 0x0B, 0x13, 0xC6, 0xAD, 0xFB, 0x3B, + 0xE5, 0x0A, 0x51, 0xEB, 0x6B, 0xAF, 0x65, 0xAB, + 0xFB, 0x17, 0x00, 0xBA, 0xA8, 0x7E, 0x52, 0x7D, + 0xBE, 0x3E, 0x67, 0x5A, 0x7A, 0x99, 0x46, 0x61 + }, + { + 0x10, 0x24, 0xC9, 0x40, 0xBE, 0x73, 0x41, 0x44, + 0x9B, 0x50, 0x10, 0x52, 0x2B, 0x50, 0x9F, 0x65, + 0xBB, 0xDC, 0x12, 0x87, 0xB4, 0x55, 0xC2, 0xBB, + 0x7F, 0x72, 0xB2, 0xC9, 0x2F, 0xD0, 0xD1, 0x89 + }, + { + 0x52, 0x60, 0x3B, 0x6C, 0xBF, 0xAD, 0x49, 0x66, + 0xCB, 0x04, 0x4C, 0xB2, 0x67, 0x56, 0x83, 0x85, + 0xCF, 0x35, 0xF2, 0x1E, 0x6C, 0x45, 0xCF, 0x30, + 0xAE, 0xD1, 0x98, 0x32, 0xCB, 0x51, 0xE9, 0xF5 + }, + { + 0xFF, 0xF2, 0x4D, 0x3C, 0xC7, 0x29, 0xD3, 0x95, + 0xDA, 0xF9, 0x78, 0xB0, 0x15, 0x73, 0x06, 0xCB, + 0x49, 0x57, 0x97, 0xE6, 0xC8, 0xDC, 0xA1, 0x73, + 0x1D, 0x2F, 0x6F, 0x81, 0xB8, 0x49, 0xBA, 0xAE + }, + { + 0x41, 0xEE, 0xE9, 0x0D, 0x47, 0xEC, 0x27, 0x72, + 0xCD, 0x35, 0x2D, 0xFD, 0x67, 0xE0, 0x60, 0x5F, + 0xBD, 0xFC, 0x5F, 0xD6, 0xD8, 0x26, 0x45, 0x1E, + 0x3D, 0x06, 0x4D, 0x38, 0x28, 0xBD, 0x3B, 0xAE + }, + { + 0x30, 0x0B, 0x6B, 0x36, 0xE5, 0x9F, 0x85, 0x1D, + 0xDD, 0xC2, 0x9B, 0xFA, 0x93, 0x08, 0x25, 0x20, + 0xCD, 0x77, 0xC5, 0x1E, 0x00, 0x7E, 0x00, 0xD2, + 0xD7, 0x8B, 0x26, 0xF4, 0xAF, 0x96, 0x15, 0x32 + }, + { + 0x9E, 0xF3, 0x03, 0x14, 0x83, 0x4E, 0x40, 0x1C, + 0x87, 0x1A, 0x20, 0x04, 0xE3, 0x8D, 0x5C, 0xE3, + 0x2E, 0xD2, 0x8E, 0x11, 0x37, 0xF1, 0x97, 0x0F, + 0x4F, 0x43, 0x78, 0xC7, 0x37, 0x06, 0x76, 0x3D + }, + { + 0x3F, 0xBD, 0xCD, 0xE7, 0xB6, 0x43, 0x04, 0x02, + 0x5E, 0xC0, 0x58, 0x26, 0x09, 0x03, 0x1E, 0xC2, + 0x66, 0xD5, 0x0F, 0x56, 0x83, 0x5A, 0xE0, 0xCB, + 0x72, 0xD8, 0xCD, 0xB4, 0xCF, 0xAF, 0x44, 0x19 + }, + { + 0xE9, 0x0E, 0xAD, 0x3B, 0x98, 0x2B, 0x43, 0x5B, + 0x66, 0x36, 0x6A, 0x49, 0x6C, 0x3F, 0x8A, 0xE6, + 0x5B, 0x17, 0x61, 0x37, 0x00, 0xF5, 0x47, 0x67, + 0x3F, 0x62, 0x15, 0x35, 0x41, 0x91, 0x28, 0x64 + }, + { + 0xAB, 0xE3, 0x54, 0x7B, 0x33, 0x6D, 0x6E, 0x24, + 0x0D, 0x7F, 0xE6, 0x82, 0xD7, 0x4B, 0x9C, 0xC7, + 0xE8, 0xD7, 0xF9, 0xB5, 0x66, 0x48, 0x58, 0xB9, + 0x4D, 0xF5, 0x9E, 0x9F, 0xC3, 0x30, 0xD9, 0xE5 + }, + { + 0xB2, 0x99, 0x64, 0x20, 0x95, 0xB8, 0x28, 0x6C, + 0x52, 0x1C, 0xDB, 0x21, 0xED, 0x0F, 0xE0, 0x57, + 0x27, 0x80, 0x21, 0xBB, 0x40, 0x38, 0xEB, 0x5A, + 0x3D, 0x79, 0x54, 0x2F, 0x5D, 0x75, 0x1F, 0x54 + }, + { + 0xE4, 0xD7, 0x58, 0x35, 0x9F, 0x08, 0x67, 0x93, + 0xA8, 0x37, 0x54, 0xAC, 0xA6, 0x96, 0x8C, 0x3E, + 0x9F, 0xD9, 0x4B, 0x40, 0x49, 0x7F, 0x2E, 0xC2, + 0x24, 0xA2, 0x91, 0x60, 0x63, 0xA2, 0x14, 0xA3 + }, + { + 0x59, 0xA3, 0x04, 0xFC, 0x03, 0xAB, 0x75, 0xD5, + 0x57, 0xDB, 0x04, 0xEB, 0xD0, 0x2D, 0xD4, 0xC6, + 0xB8, 0x10, 0xA1, 0x38, 0xBB, 0xFE, 0xEA, 0x5D, + 0xFC, 0xEE, 0xAA, 0x2B, 0x75, 0xB0, 0x64, 0x91 + }, + { + 0x39, 0x95, 0x10, 0x22, 0x15, 0xF5, 0xFE, 0x92, + 0x10, 0xEB, 0x30, 0xD9, 0x52, 0xD8, 0xC9, 0x19, + 0x58, 0x9E, 0x71, 0x45, 0xFC, 0xD4, 0x95, 0xEA, + 0x78, 0xD0, 0x2B, 0x9C, 0x14, 0x8F, 0xAF, 0x09 + }, + { + 0x47, 0x2E, 0xE7, 0x11, 0x56, 0x35, 0x06, 0xA5, + 0xF0, 0x08, 0x3F, 0xE8, 0x2B, 0x08, 0xB9, 0x92, + 0x3C, 0xF6, 0xC8, 0x40, 0x4D, 0x0C, 0xBA, 0xCB, + 0xF8, 0x48, 0x64, 0xF6, 0x48, 0x54, 0x2A, 0xC0 + }, + { + 0x68, 0xFD, 0xB8, 0x2A, 0xDA, 0xE7, 0x9B, 0xEF, + 0x59, 0x0A, 0xBA, 0x62, 0xD7, 0xAC, 0x55, 0x32, + 0x12, 0x06, 0x1C, 0x36, 0xE3, 0x6F, 0x12, 0xC0, + 0xEF, 0xA2, 0x9A, 0x17, 0x62, 0xDE, 0x3B, 0x6A + }, + { + 0x75, 0x85, 0xC0, 0x77, 0x33, 0x83, 0xF1, 0x74, + 0xFD, 0x66, 0x65, 0x49, 0xA8, 0x35, 0x2B, 0x30, + 0x5B, 0xF6, 0x85, 0x5B, 0xC9, 0x8B, 0xEA, 0x28, + 0xC3, 0x91, 0xB3, 0xC0, 0x34, 0xDA, 0x5A, 0x5A + }, + { + 0xAC, 0xC5, 0x75, 0xFE, 0x2C, 0xD7, 0xBA, 0x2A, + 0x31, 0xFC, 0x7D, 0x67, 0x0A, 0x92, 0x34, 0xAF, + 0x68, 0x50, 0x33, 0x86, 0xE9, 0x59, 0x07, 0x3D, + 0x16, 0xA8, 0x1B, 0x33, 0xB9, 0x22, 0xB5, 0x0E + }, + { + 0x9E, 0xC7, 0xD2, 0x99, 0x59, 0x43, 0xD3, 0x9D, + 0x6B, 0x97, 0x14, 0x93, 0xB8, 0x97, 0xA0, 0xEE, + 0x2D, 0x33, 0x92, 0xA7, 0x2D, 0xB8, 0x75, 0xC2, + 0x40, 0x5D, 0x35, 0x71, 0x78, 0xFB, 0x69, 0x11 + }, + { + 0x2D, 0x7E, 0xF1, 0x94, 0x01, 0x42, 0x5A, 0xBA, + 0x45, 0x0E, 0x82, 0xD3, 0x6D, 0x0F, 0xE7, 0xB2, + 0x08, 0x5E, 0xA0, 0xAF, 0x60, 0x45, 0xA5, 0x99, + 0x4C, 0xF4, 0x31, 0xEA, 0x59, 0x93, 0x9C, 0xC9 + }, + { + 0xF3, 0x2F, 0xD8, 0x55, 0xF0, 0x11, 0xC7, 0x18, + 0x02, 0x7F, 0x2E, 0xBE, 0x37, 0x7D, 0x69, 0x39, + 0xF1, 0x23, 0x70, 0xCA, 0xFF, 0x15, 0x1C, 0x1E, + 0x5A, 0xCE, 0x43, 0x8D, 0x70, 0x3C, 0x6D, 0x9F + }, + { + 0xB2, 0xBD, 0x83, 0xD2, 0x31, 0x0D, 0x3D, 0x7B, + 0x1D, 0x2D, 0x5A, 0xAF, 0x43, 0x59, 0xFA, 0xE2, + 0x86, 0x12, 0x96, 0x27, 0x19, 0xFD, 0xDE, 0x4D, + 0xDA, 0xF6, 0x9E, 0x78, 0x20, 0xF3, 0x3F, 0x61 + }, + { + 0x1A, 0x7A, 0x9D, 0x0F, 0x44, 0xDD, 0xFA, 0x7F, + 0xC2, 0xF4, 0x77, 0x0C, 0xAD, 0x74, 0x22, 0xFA, + 0x6C, 0x4E, 0x37, 0xE6, 0xCB, 0x03, 0x6D, 0x89, + 0x9E, 0x10, 0x27, 0x50, 0xE5, 0x94, 0xFF, 0xCD + }, + { + 0xDC, 0x69, 0xF6, 0x14, 0x1C, 0x8E, 0x10, 0x3F, + 0xF6, 0x1F, 0x62, 0x98, 0xA2, 0xC4, 0x4F, 0x52, + 0xD1, 0x47, 0x36, 0x6D, 0xDB, 0xD9, 0xC7, 0x9C, + 0xC3, 0x08, 0xFE, 0x84, 0x33, 0x6A, 0x95, 0x64 + }, + { + 0xE3, 0x4E, 0xD4, 0x17, 0xB0, 0x79, 0x1D, 0x9A, + 0x77, 0xEE, 0x1E, 0x50, 0xCC, 0x2C, 0x20, 0x7E, + 0x54, 0x0C, 0x77, 0x14, 0x04, 0x21, 0xC4, 0x6C, + 0xE0, 0x86, 0x28, 0x78, 0xAA, 0xEB, 0x27, 0x09 + }, + { + 0x21, 0x74, 0x42, 0x5C, 0x8C, 0xCA, 0xE3, 0x98, + 0xC4, 0xFF, 0x06, 0xF8, 0x48, 0x99, 0x1C, 0x5E, + 0x9B, 0xC0, 0xF3, 0x46, 0x11, 0x11, 0x70, 0x6F, + 0xB9, 0x5D, 0x0B, 0xE1, 0xC6, 0x8E, 0x47, 0x60 + }, + { + 0x18, 0x94, 0x58, 0x2A, 0x8A, 0x25, 0xFE, 0x8F, + 0x84, 0x7A, 0x4A, 0x03, 0x25, 0x74, 0xB7, 0x7B, + 0x8B, 0x36, 0xBF, 0x19, 0x99, 0x75, 0x26, 0xBB, + 0x4B, 0xC8, 0x5F, 0x38, 0x24, 0x53, 0x7F, 0xEB + }, + { + 0x17, 0xED, 0x18, 0x8A, 0xE3, 0xC9, 0x53, 0xD6, + 0x55, 0x44, 0x59, 0x83, 0xB8, 0x32, 0x5B, 0xAF, + 0xFF, 0x32, 0xE2, 0x22, 0xB2, 0xDF, 0xEB, 0x16, + 0xE8, 0x61, 0x7A, 0xBF, 0x86, 0xEE, 0x7C, 0xC5 + }, + { + 0xF1, 0x48, 0x9A, 0xD1, 0xC3, 0x54, 0xCD, 0xE9, + 0x78, 0x92, 0x37, 0xEA, 0x6D, 0xBF, 0x67, 0xFC, + 0x1E, 0x44, 0xD1, 0xAC, 0xC8, 0xDC, 0x66, 0xAD, + 0x83, 0x87, 0x27, 0xF4, 0x7D, 0x9A, 0x91, 0xFE + }, + { + 0x36, 0x7F, 0x22, 0x16, 0x5B, 0x8B, 0x66, 0xE9, + 0x7F, 0x66, 0x70, 0xF3, 0x4E, 0xBA, 0x27, 0x49, + 0xD2, 0x64, 0x3B, 0x21, 0xBE, 0xAD, 0xAD, 0xFE, + 0xFE, 0xA2, 0x57, 0x4B, 0x7C, 0x9B, 0x21, 0x96 + }, + { + 0x3D, 0x8D, 0xFE, 0xA1, 0x7E, 0xEA, 0x5D, 0x64, + 0x5A, 0xC1, 0xD4, 0x1A, 0x5B, 0x59, 0x22, 0x6C, + 0x48, 0x6C, 0x36, 0xBD, 0x77, 0xED, 0x44, 0xBB, + 0x34, 0x91, 0x70, 0xD0, 0x80, 0xE3, 0x0E, 0x68 + }, + { + 0x41, 0x15, 0xF8, 0x9E, 0x0B, 0x3B, 0x5C, 0x8F, + 0x61, 0x22, 0xC0, 0x25, 0x00, 0x17, 0x1D, 0xCF, + 0xFB, 0xCE, 0xA4, 0x66, 0x2A, 0x8C, 0x5F, 0x8C, + 0x1C, 0x01, 0xA9, 0xCA, 0x7B, 0x10, 0x27, 0xBB + }, + { + 0xED, 0x6E, 0x91, 0x0B, 0x96, 0x02, 0x55, 0xD7, + 0xD7, 0x92, 0xEB, 0xE6, 0x7F, 0x26, 0x0A, 0x14, + 0x3C, 0xFA, 0xC1, 0x05, 0x1D, 0xFC, 0x05, 0x90, + 0x25, 0xEE, 0x0C, 0x1B, 0xFC, 0xBC, 0x56, 0x81 + }, + { + 0x55, 0x8F, 0xA8, 0xAF, 0xA1, 0x2B, 0xBE, 0xE5, + 0x4A, 0xF7, 0x8F, 0x6B, 0x74, 0x45, 0xF9, 0x96, + 0x65, 0xD4, 0xE3, 0x56, 0xBC, 0x07, 0xD3, 0xEF, + 0xFD, 0x8F, 0xD6, 0x5A, 0xB9, 0xC7, 0x47, 0x16 + }, + { + 0x5B, 0x60, 0x12, 0x76, 0x20, 0x53, 0xB8, 0x73, + 0x4A, 0xF0, 0xE5, 0x55, 0xE6, 0xA2, 0xBB, 0x4F, + 0xD4, 0x84, 0x0A, 0xF3, 0xB0, 0x4F, 0xCF, 0x63, + 0x50, 0xA2, 0xB8, 0xA5, 0x1B, 0x67, 0x96, 0xAD + }, + { + 0xAB, 0x7A, 0xCC, 0xA5, 0xD7, 0x77, 0x10, 0xBA, + 0xD3, 0x7B, 0xA0, 0xFF, 0x4C, 0xEA, 0xE2, 0x7E, + 0x84, 0x71, 0x79, 0xF7, 0xFD, 0x7A, 0xEC, 0x88, + 0x69, 0xC6, 0x49, 0xB3, 0x3F, 0x8D, 0x25, 0x77 + }, + { + 0xFF, 0x77, 0x30, 0xB4, 0x74, 0xEC, 0x21, 0x45, + 0xA9, 0x2D, 0xD1, 0xCF, 0xFE, 0x45, 0xC3, 0x42, + 0xC6, 0xFD, 0x6B, 0xAC, 0x58, 0x0F, 0xF9, 0x5A, + 0x75, 0xED, 0xA3, 0xBF, 0x90, 0xEB, 0x4F, 0x01 + }, + { + 0xD1, 0x0F, 0x06, 0x1D, 0x5B, 0x9C, 0xB4, 0x4E, + 0xE0, 0x78, 0xA9, 0x6B, 0x33, 0x18, 0x57, 0x9E, + 0x5E, 0xF5, 0x0A, 0xEF, 0x3E, 0xD9, 0x6E, 0x4F, + 0x62, 0x14, 0x9B, 0x2E, 0x9F, 0x7C, 0x66, 0x0C + }, + { + 0x67, 0xD2, 0x2B, 0x8E, 0xDF, 0x20, 0x01, 0xD8, + 0x64, 0x22, 0x13, 0x6A, 0xC6, 0x51, 0x6C, 0xF3, + 0x9F, 0x7F, 0xC6, 0xA7, 0x02, 0x98, 0x92, 0xFD, + 0x75, 0xC9, 0x87, 0x90, 0x96, 0x4A, 0x72, 0x0B + }, + { + 0x7A, 0x5E, 0xC5, 0xBA, 0x76, 0x25, 0x9B, 0x07, + 0xB4, 0xDA, 0x03, 0xF3, 0x81, 0xFE, 0x7B, 0xEA, + 0x48, 0x65, 0xC8, 0x6C, 0x42, 0x4A, 0xBA, 0xA0, + 0xDD, 0x1E, 0xCF, 0x74, 0xF8, 0x7D, 0x2A, 0xC0 + }, + { + 0xE0, 0xFF, 0x60, 0xD6, 0x90, 0x29, 0xE6, 0xBD, + 0x1C, 0x15, 0x95, 0x3E, 0x91, 0x50, 0x9C, 0x0C, + 0x59, 0xED, 0x5D, 0xA5, 0x00, 0x01, 0x99, 0xF2, + 0x16, 0xD2, 0x9F, 0x96, 0x07, 0x9C, 0x2F, 0xEF + }, + { + 0xFC, 0x13, 0xEA, 0xD8, 0x41, 0x01, 0x8F, 0x59, + 0x90, 0x3B, 0x40, 0xF2, 0x02, 0x0C, 0x66, 0x38, + 0xA6, 0x6A, 0x54, 0xC3, 0xA3, 0x38, 0x41, 0x4D, + 0x97, 0xA5, 0xC3, 0x94, 0xF3, 0x26, 0x6F, 0x33 + }, + { + 0x0C, 0x2F, 0x62, 0xB8, 0x98, 0xFB, 0x2F, 0x63, + 0x61, 0x7E, 0x78, 0x73, 0x45, 0x26, 0x3C, 0xB9, + 0xCF, 0x60, 0x65, 0x4B, 0x55, 0x3B, 0x20, 0x3E, + 0xE4, 0x9D, 0xCB, 0xB8, 0xF2, 0xA6, 0xAF, 0xAC + }, + { + 0xD7, 0xD6, 0xCB, 0x55, 0x2A, 0xEB, 0x36, 0xEB, + 0x96, 0xB1, 0xD5, 0xE0, 0x52, 0xF8, 0xD9, 0x21, + 0xC3, 0x24, 0x5A, 0x97, 0x0D, 0x0B, 0xC8, 0x41, + 0x0C, 0xD6, 0x5E, 0xA1, 0x04, 0xC8, 0xE7, 0x79 + }, + { + 0xB7, 0x14, 0x1F, 0x30, 0x5E, 0xFD, 0xFE, 0xE5, + 0x56, 0xBD, 0x13, 0xE0, 0x40, 0x0D, 0x1E, 0x8C, + 0xFD, 0x65, 0x48, 0xBF, 0x81, 0xEE, 0x5D, 0x15, + 0x32, 0x7E, 0x49, 0x95, 0xCA, 0x8A, 0xD6, 0xFD + }, + { + 0xB6, 0xB6, 0x38, 0xD2, 0x2B, 0x7A, 0x12, 0x82, + 0x53, 0x74, 0xF7, 0x03, 0x48, 0xD7, 0x44, 0x8D, + 0x4E, 0x7D, 0x90, 0x8C, 0xF6, 0xE7, 0xBB, 0xEF, + 0x8C, 0x93, 0xEF, 0x67, 0x9B, 0x2A, 0x54, 0x78 + }, + { + 0x0D, 0xF4, 0x58, 0x56, 0x41, 0xFA, 0x09, 0xF6, + 0xCB, 0xA4, 0xCC, 0x16, 0x5A, 0x10, 0xAD, 0xDE, + 0x34, 0xF8, 0x0D, 0x42, 0x5A, 0x70, 0xDB, 0x67, + 0xE2, 0xFD, 0x23, 0x7B, 0x62, 0x7F, 0x43, 0x8A + }, + { + 0x10, 0x6B, 0x2B, 0x35, 0x4D, 0x95, 0xAC, 0xEC, + 0xD0, 0xD9, 0x58, 0x8F, 0xBC, 0x23, 0x1F, 0x8B, + 0xEA, 0x2E, 0x94, 0xEA, 0x66, 0x2D, 0xDD, 0x3F, + 0x13, 0x9E, 0x1B, 0x67, 0x87, 0x46, 0x1E, 0xED + }, + { + 0xAE, 0x5C, 0x69, 0xEE, 0xFE, 0x90, 0x89, 0xB2, + 0x9C, 0x6C, 0x1A, 0x23, 0x70, 0xD2, 0x05, 0x52, + 0xBA, 0x40, 0xC3, 0xD5, 0xE3, 0x71, 0x3C, 0x12, + 0xDE, 0xFC, 0xAE, 0x99, 0x7F, 0x43, 0x3E, 0xCD + }, + { + 0x1A, 0xAE, 0xF5, 0x5D, 0x4F, 0xA8, 0x92, 0xB6, + 0x35, 0xFB, 0x2A, 0x7A, 0x25, 0xF9, 0xA8, 0xE0, + 0x3B, 0x9F, 0xFB, 0x08, 0x2A, 0xE9, 0xC0, 0x7C, + 0x20, 0x42, 0xA0, 0x49, 0xC6, 0x51, 0x5E, 0x45 + }, + { + 0x29, 0x7D, 0xAA, 0xC4, 0xD5, 0x4D, 0xC4, 0x1C, + 0x83, 0xE3, 0x23, 0x94, 0x59, 0x9F, 0x17, 0x1C, + 0xDA, 0xA9, 0xDD, 0xB7, 0x17, 0x26, 0xDA, 0x4E, + 0xCE, 0x3C, 0xCF, 0x95, 0xC1, 0x1F, 0x56, 0xDF + }, + { + 0x2C, 0x45, 0xAC, 0xF4, 0x91, 0xEC, 0x2F, 0x4B, + 0x7E, 0x30, 0x9E, 0x7E, 0xDD, 0x81, 0x5B, 0xE5, + 0xA5, 0x4C, 0x44, 0x58, 0xD1, 0xA5, 0x7C, 0x4F, + 0x9B, 0x76, 0x3B, 0x0C, 0x67, 0x18, 0xD4, 0x3E + }, + { + 0x2F, 0x92, 0xF9, 0x01, 0x70, 0xD3, 0xAE, 0x95, + 0xAB, 0xFA, 0xC3, 0xA6, 0x98, 0x9A, 0x2A, 0x60, + 0xCB, 0x28, 0xB8, 0x58, 0x78, 0x2B, 0xE7, 0xEA, + 0x17, 0x9B, 0x48, 0xA7, 0x27, 0x6D, 0xD8, 0x60 + }, + { + 0xB4, 0x01, 0xE8, 0x4B, 0x15, 0xAC, 0xC4, 0x70, + 0x93, 0x6D, 0x6E, 0x37, 0xF7, 0x88, 0x83, 0x33, + 0x09, 0x27, 0x31, 0x13, 0x3B, 0x25, 0x1B, 0xEA, + 0x22, 0x16, 0x58, 0xCA, 0x19, 0xA7, 0x56, 0x69 + }, + { + 0xF8, 0xB3, 0x40, 0xD2, 0xB9, 0xB3, 0x3D, 0x43, + 0xA0, 0xA6, 0x6F, 0x34, 0x97, 0x82, 0x0A, 0xFA, + 0xAE, 0xE4, 0x34, 0xC4, 0xE3, 0xC0, 0xC1, 0x7E, + 0x89, 0x8B, 0x83, 0x01, 0xC5, 0x7A, 0x26, 0xBD + }, + { + 0x56, 0x6D, 0xA2, 0x83, 0x99, 0x03, 0x89, 0x13, + 0x8A, 0xA6, 0xF2, 0xAA, 0xA3, 0xB9, 0xE4, 0x0C, + 0xBF, 0x90, 0x84, 0x0E, 0xC7, 0x62, 0xBD, 0x96, + 0xB7, 0xE3, 0x3A, 0x31, 0x13, 0xB1, 0x01, 0x08 + }, + { + 0x34, 0x06, 0x72, 0xB7, 0x04, 0x67, 0x60, 0x42, + 0xC9, 0xBF, 0x3F, 0x33, 0x7B, 0xA7, 0x9F, 0x11, + 0x33, 0x6A, 0xEB, 0xB5, 0xEC, 0x5D, 0x31, 0xDF, + 0x54, 0xEB, 0x6A, 0xD3, 0xB0, 0x43, 0x04, 0x42 + }, + { + 0x50, 0x50, 0xB7, 0x3B, 0x93, 0x16, 0xEE, 0xA2, + 0xF1, 0x49, 0xBF, 0xFD, 0x22, 0xAE, 0xE3, 0x84, + 0xDC, 0x54, 0x03, 0xB1, 0x8E, 0x16, 0xFA, 0x88, + 0x82, 0x5E, 0x18, 0x16, 0x09, 0x49, 0x6F, 0xD2 + }, + { + 0x13, 0x65, 0xCC, 0x6F, 0xB9, 0x26, 0x0E, 0x86, + 0x88, 0x9B, 0x3A, 0xFB, 0xD1, 0xC8, 0xBC, 0x12, + 0x92, 0x31, 0x97, 0x71, 0x5D, 0xB2, 0x66, 0xCC, + 0x7A, 0x01, 0xCA, 0x57, 0x15, 0x9F, 0x75, 0x96 + }, + { + 0x29, 0x46, 0x6F, 0x51, 0xC0, 0x11, 0xFD, 0x10, + 0x18, 0x14, 0x94, 0xA9, 0x37, 0x9B, 0x61, 0x59, + 0xB8, 0x08, 0xAE, 0x0F, 0xCB, 0x01, 0x61, 0xF8, + 0xF0, 0x79, 0x09, 0xFF, 0x04, 0x1B, 0x19, 0x65 + }, + { + 0x65, 0x91, 0xA3, 0xC3, 0xC7, 0x67, 0xB3, 0x8D, + 0x80, 0x5E, 0xD3, 0xF7, 0xEB, 0x67, 0x63, 0xE8, + 0xB3, 0xD2, 0xD6, 0x42, 0xE7, 0x30, 0x77, 0x45, + 0xCD, 0x34, 0x18, 0xEF, 0xF6, 0x9A, 0x19, 0xED + }, + { + 0x1D, 0x84, 0xB0, 0x4B, 0x13, 0x38, 0xB0, 0xD2, + 0xE3, 0xC9, 0x8F, 0x7A, 0xEA, 0x3E, 0x98, 0xEF, + 0xFC, 0x53, 0x0A, 0x50, 0x44, 0xB9, 0x3B, 0x96, + 0xC6, 0x7E, 0xE3, 0x79, 0xD6, 0x2E, 0x81, 0x5F + }, + { + 0x6F, 0xA2, 0x95, 0x27, 0x25, 0x32, 0xE9, 0x83, + 0xE1, 0x66, 0xB1, 0x2E, 0x49, 0x99, 0xC0, 0x52, + 0xF8, 0x9D, 0x9F, 0x30, 0xAE, 0x14, 0x81, 0xF3, + 0xD6, 0x0E, 0xAE, 0x85, 0xF8, 0xEE, 0x17, 0x8A + }, + { + 0x4E, 0xD8, 0xCA, 0xA9, 0x8E, 0xC3, 0x9F, 0x6A, + 0x62, 0x9F, 0x9A, 0x65, 0x4A, 0x44, 0x7E, 0x7E, + 0x3E, 0x4F, 0xAE, 0xEC, 0xF3, 0x4D, 0xCF, 0x65, + 0x8D, 0x2D, 0x4B, 0x98, 0xB7, 0xA2, 0xEC, 0x1A + }, + { + 0xCF, 0xAB, 0x82, 0x99, 0xA0, 0xDA, 0x0C, 0x2A, + 0x7E, 0x8F, 0xF5, 0x4D, 0x0A, 0x67, 0x6D, 0x14, + 0x1A, 0xB2, 0x6B, 0xC0, 0x01, 0x2E, 0x5F, 0x66, + 0x8E, 0x85, 0xD8, 0x14, 0xBC, 0x98, 0x88, 0xB0 + }, + { + 0xA6, 0x26, 0x54, 0x3C, 0x27, 0x1F, 0xCC, 0xC3, + 0xE4, 0x45, 0x0B, 0x48, 0xD6, 0x6B, 0xC9, 0xCB, + 0xDE, 0xB2, 0x5E, 0x5D, 0x07, 0x7A, 0x62, 0x13, + 0xCD, 0x90, 0xCB, 0xBD, 0x0F, 0xD2, 0x20, 0x76 + }, + { + 0x05, 0xCF, 0x3A, 0x90, 0x04, 0x91, 0x16, 0xDC, + 0x60, 0xEF, 0xC3, 0x15, 0x36, 0xAA, 0xA3, 0xD1, + 0x67, 0x76, 0x29, 0x94, 0x89, 0x28, 0x76, 0xDC, + 0xB7, 0xEF, 0x3F, 0xBE, 0xCD, 0x74, 0x49, 0xC0 + }, + { + 0xCC, 0xD6, 0x1C, 0x92, 0x6C, 0xC1, 0xE5, 0xE9, + 0x12, 0x8C, 0x02, 0x1C, 0x0C, 0x6E, 0x92, 0xAE, + 0xFC, 0x4F, 0xFB, 0xDE, 0x39, 0x4D, 0xD6, 0xF3, + 0xB7, 0xD8, 0x7A, 0x8C, 0xED, 0x89, 0x60, 0x14 + }, + { + 0x3F, 0xFA, 0x4F, 0x6D, 0xAF, 0xA5, 0x7F, 0x1C, + 0x50, 0xF1, 0xAF, 0xA4, 0xF8, 0x12, 0x92, 0xAE, + 0x71, 0xA0, 0x6F, 0xE4, 0xF8, 0xFF, 0x46, 0xC5, + 0x1D, 0x32, 0xFF, 0x26, 0x13, 0x48, 0x9F, 0x2B + }, + { + 0x19, 0xD3, 0x92, 0x1C, 0xFC, 0x0F, 0x1A, 0x2B, + 0xB8, 0x13, 0xB3, 0xDF, 0xA9, 0x6D, 0xF9, 0x0E, + 0x2C, 0x6B, 0x87, 0xD7, 0x8E, 0x92, 0x38, 0xF8, + 0x5B, 0xBC, 0x77, 0xAE, 0x9A, 0x73, 0xF9, 0x8F + }, + { + 0xF5, 0xC9, 0x16, 0xFF, 0x2B, 0xAD, 0xDE, 0x3E, + 0x29, 0xA5, 0xF9, 0x40, 0x23, 0x3E, 0xA3, 0x40, + 0x07, 0xD8, 0xF1, 0x82, 0xA4, 0x8A, 0x80, 0x8B, + 0x46, 0xBB, 0x80, 0x58, 0x00, 0x3F, 0x19, 0x03 + }, + { + 0x6B, 0xA0, 0x7A, 0x1A, 0xF7, 0x58, 0xE6, 0x82, + 0xD3, 0xE0, 0x9A, 0xDD, 0x2D, 0x3D, 0xCD, 0xF3, + 0x5D, 0x95, 0x53, 0xF6, 0x79, 0x98, 0x54, 0xA2, + 0x7E, 0x53, 0x60, 0x63, 0xC5, 0x7F, 0x81, 0xA5 + }, + { + 0xB7, 0x83, 0x78, 0xFB, 0x44, 0x6C, 0x54, 0x4B, + 0x04, 0xD4, 0xA1, 0x52, 0xAC, 0x49, 0x57, 0x31, + 0x61, 0xB3, 0xDD, 0xEB, 0xF6, 0x93, 0x86, 0x77, + 0x0A, 0x55, 0xA7, 0xD4, 0x7B, 0x88, 0x0E, 0x5D + }, + { + 0xB5, 0x19, 0x53, 0x8F, 0xE1, 0x62, 0x6F, 0x0C, + 0x59, 0x59, 0x45, 0xAD, 0xA5, 0x8A, 0x34, 0x4F, + 0xAA, 0xC0, 0x06, 0x17, 0x61, 0xCC, 0x9D, 0x4A, + 0x84, 0x14, 0x19, 0xBD, 0x32, 0xEE, 0xC0, 0xD9 + }, + { + 0x96, 0xE4, 0x88, 0xB0, 0x27, 0x89, 0x64, 0x13, + 0xF4, 0x03, 0x4B, 0x03, 0x54, 0xF4, 0x84, 0x84, + 0xF6, 0xCF, 0xC1, 0x0F, 0x8E, 0xC5, 0x7B, 0x02, + 0x6F, 0xD2, 0x1A, 0x3B, 0x88, 0x36, 0x1A, 0x74 + }, + { + 0x77, 0x0C, 0x8A, 0x5F, 0x47, 0xBF, 0xD7, 0x69, + 0xCE, 0xD3, 0x5A, 0x71, 0xAF, 0xC3, 0xCA, 0x1F, + 0xF4, 0xC1, 0xF1, 0xE7, 0xCC, 0x3D, 0x23, 0x56, + 0xDE, 0x94, 0x50, 0x04, 0x36, 0x8D, 0x81, 0x45 + }, + { + 0x6D, 0xF9, 0xD8, 0xD0, 0xD3, 0xA8, 0xD9, 0x8C, + 0x83, 0x50, 0xD7, 0x16, 0x2B, 0xD1, 0x55, 0x79, + 0xD5, 0x70, 0x7A, 0xDD, 0x76, 0x11, 0xA0, 0x0E, + 0xEB, 0x6C, 0xA5, 0x74, 0x3E, 0xD7, 0x8C, 0xB7 + }, + { + 0x4F, 0x0F, 0xE8, 0xFC, 0x17, 0x90, 0x15, 0x91, + 0xCF, 0x34, 0x87, 0x30, 0xE1, 0x87, 0xDE, 0x52, + 0x3D, 0x6D, 0x75, 0x68, 0xC1, 0xFB, 0xD8, 0x24, + 0x85, 0x91, 0x39, 0x85, 0xEB, 0x67, 0x97, 0x1C + }, + { + 0x0E, 0xF3, 0xBB, 0x35, 0xCF, 0x37, 0x2B, 0xD9, + 0x4E, 0x3F, 0x80, 0xEE, 0xCE, 0xBD, 0x50, 0xEF, + 0x0D, 0x03, 0x08, 0xE0, 0x1E, 0x0E, 0xD6, 0xDE, + 0x0F, 0x5A, 0x8A, 0x8C, 0x81, 0x8A, 0x00, 0x74 + }, + { + 0xC0, 0x38, 0xD3, 0xE8, 0x09, 0xA5, 0xE3, 0xA5, + 0x8D, 0xB2, 0xF9, 0x1C, 0x15, 0xAE, 0x12, 0x43, + 0x95, 0x78, 0xF7, 0x54, 0x85, 0xCD, 0x84, 0xF5, + 0x56, 0xC6, 0x97, 0x1E, 0x8E, 0x25, 0x06, 0x20 + }, + { + 0xCE, 0x39, 0x9A, 0x0F, 0x08, 0x27, 0x7D, 0x8D, + 0x48, 0x16, 0x09, 0x50, 0x60, 0xEB, 0xBF, 0x33, + 0xDA, 0x01, 0x6F, 0xB4, 0x3A, 0x6C, 0x35, 0x6D, + 0x5A, 0x3F, 0xE4, 0xBB, 0x57, 0x4C, 0x5E, 0x7B + }, + { + 0x86, 0x9F, 0x7E, 0x31, 0x6B, 0x19, 0x4F, 0x95, + 0x31, 0xBC, 0xAF, 0x33, 0xF7, 0x91, 0x3F, 0x1B, + 0x9C, 0xFC, 0x6B, 0xB5, 0xDC, 0xF8, 0x6B, 0x69, + 0x2B, 0xF8, 0xCA, 0xB2, 0x9B, 0x8A, 0xA9, 0x6F + }, + { + 0x32, 0x7D, 0xFA, 0x46, 0x44, 0x59, 0xD9, 0xE4, + 0x8F, 0x5E, 0x55, 0xC7, 0xF5, 0xBA, 0xA6, 0x8F, + 0xC4, 0xA2, 0x5A, 0xD6, 0x22, 0xBC, 0x7B, 0xF0, + 0x1A, 0xCA, 0x82, 0xFD, 0x5E, 0x72, 0x31, 0x4C + }, + { + 0xE0, 0x0D, 0xAD, 0x31, 0x51, 0xB9, 0x08, 0x5E, + 0xAE, 0x78, 0x69, 0x84, 0xFE, 0x20, 0x73, 0x52, + 0x32, 0xB7, 0xFF, 0x7F, 0x1B, 0x1D, 0xB7, 0x96, + 0x1F, 0xD0, 0xD0, 0xE0, 0xF6, 0x05, 0xDB, 0x9A + }, + { + 0x07, 0x6F, 0x64, 0x45, 0x20, 0xD0, 0xB4, 0x73, + 0x2D, 0x6C, 0x53, 0x1C, 0x93, 0x49, 0x08, 0x90, + 0x26, 0x93, 0x6D, 0x99, 0x82, 0x04, 0x61, 0xDA, + 0x87, 0x74, 0x9A, 0x52, 0x0F, 0xBE, 0x90, 0xCE + }, + { + 0xB4, 0x41, 0x4C, 0xA1, 0x37, 0x3B, 0xE4, 0x6F, + 0x15, 0xCE, 0xA6, 0xB1, 0x25, 0x5A, 0x7D, 0x18, + 0x86, 0xC6, 0xFD, 0xB0, 0x8E, 0xD5, 0xAF, 0x96, + 0x57, 0xD5, 0xAA, 0xC3, 0x17, 0xDE, 0x3A, 0x29 + }, + { + 0x8D, 0x1A, 0xB0, 0x26, 0x3D, 0xAB, 0x7B, 0x86, + 0xEC, 0xEE, 0x21, 0x91, 0x62, 0xD9, 0x99, 0xA0, + 0x12, 0x45, 0x57, 0x22, 0x69, 0xDE, 0x31, 0x10, + 0x0E, 0x5D, 0x88, 0xFC, 0x1B, 0x1E, 0xAA, 0x69 + }, + { + 0xB4, 0x8D, 0x1C, 0x1F, 0x83, 0x92, 0x4A, 0x02, + 0xA2, 0x3E, 0x5E, 0x0F, 0x97, 0x1E, 0x16, 0xE8, + 0x7F, 0xC4, 0x88, 0x48, 0x53, 0x83, 0x34, 0x85, + 0x19, 0x1A, 0x2B, 0x60, 0x72, 0x2F, 0xE2, 0x69 + }, + { + 0xF2, 0xED, 0xD5, 0xF7, 0x50, 0xA2, 0x0A, 0x54, + 0x1D, 0x3F, 0x6B, 0xD5, 0xDF, 0x80, 0x83, 0x8F, + 0x11, 0x82, 0x5B, 0x25, 0xA9, 0x8F, 0x3D, 0xA5, + 0xE1, 0x52, 0x3B, 0xFF, 0x81, 0x3B, 0xB5, 0x60 + }, + { + 0x07, 0x16, 0x60, 0x04, 0xEF, 0x88, 0xE1, 0x61, + 0x4E, 0xBD, 0xC8, 0x87, 0xDF, 0xC7, 0xDA, 0x42, + 0xEB, 0xCD, 0xA0, 0x2D, 0x92, 0xC1, 0x2F, 0x18, + 0xD1, 0x18, 0x6C, 0xE3, 0xC9, 0x87, 0x10, 0xE4 + }, + { + 0x69, 0xF8, 0x3A, 0xA1, 0x01, 0xD6, 0x9B, 0x8F, + 0x12, 0x20, 0xDC, 0x1C, 0x53, 0x8D, 0x89, 0x34, + 0x45, 0x84, 0x20, 0xBE, 0x33, 0x5F, 0xEB, 0x46, + 0xFF, 0xC4, 0x7A, 0x2C, 0x8E, 0x2E, 0x6A, 0x8A + }, + { + 0xE1, 0x46, 0x9F, 0x16, 0xC6, 0xFC, 0xA1, 0x51, + 0x19, 0xA2, 0x72, 0xE5, 0x85, 0xC7, 0xF5, 0x04, + 0x21, 0xBC, 0x8A, 0x41, 0x4C, 0x86, 0x4F, 0xC7, + 0x6B, 0x01, 0x04, 0x8D, 0x4C, 0x6F, 0xC5, 0xD2 + }, + { + 0x67, 0x63, 0x34, 0x3A, 0x1C, 0x80, 0xF1, 0x92, + 0x83, 0xA8, 0x0A, 0xF8, 0x54, 0xE7, 0xE9, 0x06, + 0x5C, 0x2A, 0x83, 0x49, 0xEF, 0x11, 0xF1, 0x1B, + 0xFB, 0x76, 0xBA, 0x9F, 0x97, 0x04, 0x85, 0x39 + }, + { + 0x1A, 0xE3, 0xA0, 0xB8, 0xB2, 0xC7, 0x88, 0x5B, + 0xA3, 0x18, 0xAD, 0x6F, 0xD4, 0x49, 0xFC, 0x4D, + 0x7F, 0x84, 0x04, 0xB5, 0x9C, 0xF3, 0x27, 0x5F, + 0xCD, 0xEA, 0x13, 0x56, 0x34, 0x25, 0x77, 0x2D + }, + { + 0x3A, 0x71, 0x18, 0x4C, 0xBE, 0x8E, 0xB5, 0x8E, + 0x68, 0x12, 0xBA, 0x7A, 0x7A, 0x1D, 0xCA, 0x0C, + 0xA2, 0x8E, 0xEC, 0x63, 0x78, 0x2F, 0x2E, 0x6E, + 0x3C, 0x0B, 0x87, 0x07, 0x3F, 0x53, 0x3F, 0xFD + }, + { + 0x18, 0x4C, 0xCF, 0x2A, 0x52, 0xF3, 0x88, 0xC9, + 0xF8, 0x97, 0xA8, 0x57, 0xFE, 0x7C, 0xCE, 0xC2, + 0x95, 0x99, 0x11, 0xA8, 0xD1, 0xE0, 0x9E, 0xE8, + 0x80, 0x4D, 0x8D, 0x5D, 0x50, 0x8D, 0xD9, 0x18 + }, + { + 0xA6, 0x6D, 0x40, 0x9A, 0xF7, 0xAF, 0xD7, 0x5B, + 0xE8, 0x31, 0xDD, 0x49, 0x8C, 0x19, 0x6E, 0xF1, + 0x2C, 0x73, 0xC3, 0x11, 0x29, 0xEC, 0x02, 0xD5, + 0xF1, 0x2A, 0xB0, 0x2A, 0x2C, 0x63, 0xA2, 0x5E + }, + { + 0x58, 0xB3, 0x74, 0x97, 0xFC, 0xF0, 0xBE, 0x0E, + 0x0C, 0xF1, 0x73, 0x40, 0x45, 0xC2, 0x95, 0xB2, + 0x86, 0xC7, 0x6A, 0x7C, 0x04, 0x8E, 0x87, 0xC5, + 0x40, 0x28, 0xED, 0x36, 0x91, 0x5B, 0x5D, 0xF3 + }, + { + 0x2C, 0x73, 0x33, 0x54, 0x0A, 0x83, 0x2D, 0x64, + 0x45, 0x6E, 0x43, 0x05, 0x8C, 0x50, 0xD9, 0x3C, + 0x93, 0x2A, 0xD9, 0xB1, 0x8B, 0x3F, 0xC3, 0xA0, + 0x59, 0x92, 0x07, 0xCD, 0xA3, 0xB3, 0xC7, 0xA6 + }, + { + 0x3D, 0xC0, 0x62, 0xFF, 0xB5, 0x7D, 0x83, 0x5F, + 0xE3, 0xAA, 0x40, 0x94, 0x66, 0x82, 0x2F, 0x91, + 0x86, 0x91, 0x84, 0x23, 0x94, 0x75, 0x05, 0x16, + 0x5F, 0xDC, 0xDF, 0xB7, 0x30, 0x6F, 0x72, 0x59 + }, + { + 0x89, 0x20, 0x48, 0x44, 0xAC, 0xB9, 0x2F, 0x35, + 0x3B, 0xFC, 0x89, 0xA3, 0xCE, 0x8A, 0x98, 0x17, + 0x21, 0x9C, 0x10, 0x13, 0x85, 0xC5, 0x93, 0xCF, + 0x60, 0xE0, 0xBE, 0xFA, 0x96, 0x38, 0xE1, 0x4E + }, + { + 0x78, 0x2B, 0xA9, 0x02, 0xE9, 0x12, 0x32, 0x94, + 0x1C, 0x78, 0xC4, 0x9C, 0xD9, 0x77, 0x1A, 0x5D, + 0x99, 0x92, 0xF9, 0xB0, 0x7D, 0x9C, 0x0A, 0x2D, + 0xF8, 0x2D, 0x38, 0x5D, 0x15, 0xC4, 0x2B, 0xB3 + }, + { + 0x0D, 0xC3, 0xFF, 0x7D, 0xF0, 0xDF, 0xC0, 0x23, + 0x76, 0x3D, 0x76, 0x34, 0xE1, 0x8D, 0xA2, 0x73, + 0x93, 0xFC, 0x9F, 0xDB, 0x1C, 0x15, 0x46, 0x46, + 0x86, 0x10, 0x75, 0xF0, 0xA8, 0x7D, 0x0E, 0x90 + }, + { + 0xB9, 0x5C, 0x65, 0xFB, 0x6F, 0x25, 0x4E, 0xDB, + 0xDE, 0x8C, 0x03, 0x7D, 0x5C, 0x8B, 0x20, 0x39, + 0x34, 0x0F, 0x4A, 0xC2, 0xB0, 0x23, 0xA6, 0xAA, + 0x28, 0xA8, 0xFC, 0xD2, 0xD2, 0x68, 0x9C, 0xF4 + }, + { + 0x87, 0xE8, 0xF5, 0x15, 0x72, 0xA5, 0xD6, 0xA2, + 0x39, 0xF8, 0x5B, 0xC5, 0x3E, 0x11, 0x74, 0xE1, + 0x5B, 0xE1, 0x2F, 0xCD, 0xF1, 0x51, 0xA0, 0xB9, + 0xA2, 0xB4, 0x36, 0x40, 0xCA, 0xF7, 0x4C, 0x1D + }, + { + 0x2A, 0x6F, 0x3E, 0x46, 0x2C, 0x40, 0x5C, 0x35, + 0x4F, 0xE8, 0x0F, 0xCC, 0xCE, 0xD1, 0xC9, 0xBE, + 0x44, 0x32, 0x5D, 0x29, 0xE0, 0x7D, 0xA3, 0x09, + 0x60, 0xB6, 0x25, 0xA7, 0x6E, 0xA4, 0x2F, 0x83 + }, + { + 0x20, 0xB4, 0x6C, 0x8F, 0xBF, 0xCA, 0x97, 0x45, + 0x32, 0x62, 0x46, 0x0F, 0x84, 0x98, 0xA7, 0xE2, + 0xAF, 0x15, 0xAC, 0x79, 0xB5, 0x9D, 0xDF, 0xB0, + 0x27, 0xBB, 0x52, 0xF2, 0xD6, 0x8E, 0x8F, 0x51 + }, + { + 0x31, 0xB0, 0x76, 0x3C, 0xB9, 0xBA, 0x92, 0x40, + 0x3D, 0xCA, 0x1A, 0xBD, 0xD7, 0x34, 0x2D, 0x7D, + 0xE9, 0x4C, 0x58, 0x1E, 0x76, 0xF7, 0xC9, 0xA6, + 0x1E, 0x51, 0x59, 0x28, 0xE1, 0x0B, 0x4E, 0x77 + }, + { + 0xE1, 0x91, 0xE1, 0x17, 0x06, 0x3C, 0xFA, 0xC9, + 0x64, 0x2C, 0xD9, 0x3C, 0xB4, 0x2B, 0x39, 0xED, + 0xDD, 0x9E, 0x4A, 0xB6, 0x5F, 0x1D, 0x03, 0x97, + 0xE3, 0xE1, 0x7D, 0xD0, 0x4C, 0xAB, 0x11, 0x80 + }, + { + 0x22, 0x5A, 0x20, 0x21, 0x07, 0xA7, 0x47, 0x03, + 0xE0, 0x41, 0xC6, 0xCC, 0xA4, 0xEA, 0xCF, 0x4F, + 0x21, 0xEE, 0xA6, 0xF2, 0x2A, 0x14, 0x6D, 0x8D, + 0xA2, 0xAB, 0x8C, 0xF6, 0x19, 0x72, 0x29, 0xA5 + }, + { + 0xEF, 0xC4, 0x83, 0x6B, 0xE4, 0xAC, 0x3E, 0x97, + 0x91, 0xD2, 0xEC, 0x62, 0x22, 0x6E, 0x7D, 0xF6, + 0x41, 0x18, 0xF4, 0x56, 0x5C, 0x19, 0xE6, 0xC9, + 0xE8, 0x40, 0x63, 0xF5, 0x66, 0x1C, 0x7B, 0x2F + }, + { + 0x3A, 0x76, 0xB0, 0x15, 0x2C, 0x0E, 0x1D, 0x1F, + 0xD7, 0xAC, 0x9D, 0x91, 0xA2, 0x8A, 0x18, 0xE1, + 0xA4, 0xC0, 0x60, 0x80, 0xF2, 0xB7, 0xEC, 0xEF, + 0xB6, 0xEF, 0xFE, 0x28, 0xB8, 0xCF, 0xC7, 0x65 + }, + { + 0x0D, 0x46, 0xAD, 0x03, 0x90, 0x70, 0x11, 0x58, + 0x28, 0xF9, 0x4E, 0xB6, 0xB7, 0x29, 0x63, 0xE6, + 0x0A, 0x7D, 0x2D, 0xB7, 0xCA, 0x89, 0x91, 0xD2, + 0x25, 0xC3, 0x87, 0x7B, 0x14, 0x9B, 0x0A, 0x8A + }, + { + 0xE4, 0x4C, 0xFC, 0x42, 0x11, 0x8F, 0x09, 0x6B, + 0xFC, 0x51, 0x52, 0x1C, 0xB1, 0x8D, 0x5D, 0x65, + 0x25, 0x58, 0x6B, 0x98, 0x9F, 0x4E, 0xE2, 0xB8, + 0x28, 0xC5, 0x19, 0x9F, 0xEA, 0xB9, 0x4B, 0x82 + }, + { + 0x6D, 0x4B, 0xD2, 0xE0, 0x73, 0xEC, 0x49, 0x66, + 0x84, 0x7F, 0x5C, 0xBE, 0x88, 0xDD, 0xFA, 0xBA, + 0x2B, 0xE4, 0xCA, 0xF2, 0xF3, 0x33, 0x55, 0x2B, + 0x85, 0x53, 0xDA, 0x53, 0x34, 0x87, 0xC2, 0x5B + }, + { + 0xBB, 0xC4, 0x6D, 0xB4, 0x37, 0xD1, 0x07, 0xC9, + 0x67, 0xCA, 0x6D, 0x91, 0x45, 0x5B, 0xBD, 0xFE, + 0x05, 0x21, 0x18, 0xAB, 0xD1, 0xD0, 0x69, 0xF0, + 0x43, 0x59, 0x48, 0x7E, 0x13, 0xAE, 0xA0, 0xE1 + }, + { + 0xB9, 0x74, 0xC1, 0x4D, 0xB7, 0xD3, 0x17, 0x4D, + 0xD0, 0x60, 0x84, 0xBB, 0x30, 0x31, 0x08, 0xB2, + 0xF0, 0xDA, 0xF5, 0x0E, 0xCC, 0xC3, 0x29, 0x35, + 0x43, 0x79, 0x5C, 0x96, 0x36, 0xC6, 0x24, 0x82 + }, + { + 0x0E, 0xEE, 0x23, 0x5B, 0x06, 0x93, 0x6A, 0xED, + 0x71, 0x73, 0xC8, 0xC1, 0x9A, 0xA7, 0xC2, 0x17, + 0xB9, 0xEE, 0xDA, 0xEB, 0x1A, 0x88, 0xF3, 0x05, + 0x52, 0xE9, 0x22, 0x51, 0x45, 0x14, 0x9E, 0x82 + }, + { + 0x36, 0xD0, 0x89, 0xE0, 0x25, 0xB5, 0x68, 0x69, + 0x37, 0x74, 0x28, 0x25, 0xE6, 0xEE, 0x3D, 0x83, + 0xE7, 0xD7, 0xA5, 0x0C, 0x82, 0x3C, 0x82, 0x88, + 0x34, 0x60, 0xF3, 0x85, 0x14, 0x7D, 0xC1, 0x7B + }, + { + 0x77, 0xEE, 0x4F, 0xFC, 0x9F, 0x5D, 0xD6, 0x05, + 0x47, 0x0D, 0xC0, 0xE7, 0x4D, 0x6B, 0x17, 0xC5, + 0x13, 0x0D, 0x8B, 0x73, 0x91, 0x3F, 0x36, 0xD5, + 0xF8, 0x78, 0x7E, 0x61, 0x9A, 0x94, 0x7C, 0xA0 + }, + { + 0x0F, 0xE6, 0xC2, 0xAB, 0x75, 0x42, 0x33, 0x36, + 0x0D, 0x68, 0xB9, 0xAC, 0x80, 0xCD, 0x61, 0x18, + 0x4B, 0xFA, 0xA7, 0xD3, 0x56, 0x29, 0x41, 0x80, + 0x02, 0x5F, 0xE4, 0x06, 0x39, 0xC7, 0x6C, 0x36 + }, + { + 0x99, 0x60, 0x88, 0xC7, 0x94, 0x56, 0xEC, 0xDD, + 0xA1, 0xFB, 0xC0, 0x2E, 0xE1, 0xBA, 0x42, 0xD9, + 0x1D, 0x85, 0x8C, 0x31, 0x0A, 0x5A, 0x8B, 0x46, + 0x74, 0xFE, 0x6A, 0x7C, 0x14, 0x44, 0x14, 0xA1 + }, + { + 0x9E, 0x33, 0x8A, 0xED, 0x0B, 0xC7, 0x1C, 0x0C, + 0x97, 0xF1, 0x98, 0x55, 0xBF, 0x49, 0x17, 0x4F, + 0x70, 0xA9, 0xD7, 0x70, 0x14, 0x87, 0x36, 0x63, + 0x21, 0x34, 0x27, 0x50, 0x2B, 0xD8, 0x5D, 0x9F + }, + { + 0x4A, 0x84, 0x3D, 0x26, 0xAD, 0xEC, 0x52, 0x0E, + 0x4B, 0x5D, 0xBF, 0x01, 0x45, 0xCC, 0x4F, 0x50, + 0x24, 0xFA, 0xFC, 0xDC, 0x20, 0x25, 0x82, 0x4A, + 0x8C, 0x64, 0x65, 0x06, 0x17, 0x68, 0x7E, 0xE7 + }, + { + 0xC9, 0x16, 0x78, 0xC4, 0xA6, 0x4E, 0x2F, 0xA4, + 0xB7, 0x4D, 0xE6, 0x1A, 0xD0, 0xC0, 0x6F, 0xF0, + 0x6B, 0x5D, 0x67, 0x2F, 0xA7, 0xC6, 0x87, 0x7A, + 0x40, 0x14, 0xCE, 0x9E, 0x91, 0xBE, 0x38, 0xD7 + }, + { + 0xFF, 0x77, 0x77, 0x40, 0x5D, 0x32, 0x7A, 0xDB, + 0x58, 0x30, 0x1C, 0x71, 0x1E, 0xCD, 0xC2, 0xBC, + 0xE1, 0xBF, 0xA8, 0x29, 0xFF, 0xC9, 0xB1, 0x17, + 0xF2, 0x1A, 0x2B, 0x19, 0x8D, 0x0D, 0x68, 0x84 + }, + { + 0x0A, 0x8D, 0xDA, 0xF1, 0x72, 0x8C, 0x5C, 0xD9, + 0x3A, 0x25, 0x5D, 0x56, 0x23, 0xC3, 0xDA, 0xDA, + 0x2D, 0x3D, 0x05, 0x71, 0xBF, 0x14, 0x38, 0xAD, + 0xC8, 0xC9, 0x64, 0xA9, 0xAA, 0xD1, 0x18, 0xCB + }, + { + 0xC1, 0x33, 0xAB, 0xBD, 0x0D, 0x2D, 0x80, 0x8A, + 0x67, 0xB6, 0x74, 0x5B, 0x4B, 0x36, 0x50, 0xB4, + 0xA6, 0x4D, 0xC2, 0x76, 0xCF, 0x98, 0xE3, 0x03, + 0x57, 0xB6, 0xAB, 0xD5, 0xC1, 0xD2, 0x2A, 0x9B + }, + { + 0xC5, 0x9E, 0xE5, 0xC1, 0x96, 0xBA, 0x3C, 0xFE, + 0xF9, 0x40, 0x87, 0x79, 0x82, 0x07, 0xBD, 0xCE, + 0xF1, 0x39, 0xCE, 0x2C, 0xF7, 0x8D, 0xCE, 0xD6, + 0x19, 0x8F, 0x0F, 0xA3, 0xA4, 0x09, 0x13, 0x1C + }, + { + 0xC7, 0xFD, 0xAD, 0xE5, 0x9C, 0x46, 0x99, 0x38, + 0x5E, 0xBA, 0x59, 0xE7, 0x56, 0xC2, 0xB1, 0x71, + 0xB0, 0x23, 0xDE, 0xAE, 0x08, 0x2E, 0x5A, 0x6E, + 0x3B, 0xFB, 0xDC, 0x10, 0x73, 0xA3, 0x20, 0x03 + }, + { + 0x97, 0x53, 0x27, 0xC5, 0xF4, 0xDE, 0xC6, 0x41, + 0x4B, 0x6E, 0x00, 0xCB, 0x04, 0x23, 0x37, 0xB8, + 0xD2, 0xA6, 0x56, 0x46, 0x37, 0xA7, 0x44, 0x2A, + 0xEC, 0x7B, 0xE8, 0xF8, 0xC8, 0x9A, 0x2F, 0x1C + }, + { + 0xA2, 0xF7, 0x24, 0x6D, 0xF4, 0xA2, 0x4E, 0xFB, + 0xAC, 0xD3, 0xFD, 0x60, 0x68, 0x3A, 0xBC, 0x86, + 0x8B, 0xEF, 0x25, 0x32, 0x70, 0x52, 0xCF, 0x2F, + 0x1D, 0x93, 0xEC, 0xE4, 0xFF, 0xCD, 0x73, 0xC6 + }, + { + 0x49, 0x7F, 0xB2, 0xAC, 0xAC, 0xF1, 0x23, 0xF3, + 0x59, 0x5E, 0x40, 0xFC, 0x51, 0xA7, 0xBD, 0x24, + 0x45, 0x8B, 0xBC, 0xBA, 0x4A, 0x29, 0x40, 0xA5, + 0xCB, 0x03, 0xD6, 0x08, 0xFB, 0xDF, 0x28, 0x25 + }, + { + 0x0E, 0x97, 0xD2, 0x27, 0x93, 0xCE, 0x6F, 0x28, + 0x3D, 0x5C, 0x74, 0x0D, 0x30, 0x8A, 0x27, 0xAD, + 0x7C, 0x3B, 0x0D, 0x9A, 0xFC, 0xD3, 0xD9, 0xE9, + 0xB9, 0xCA, 0xC5, 0x6B, 0x10, 0x29, 0x0C, 0x8F + }, + { + 0x66, 0x30, 0xB3, 0x56, 0x18, 0xE7, 0x00, 0xD9, + 0x10, 0x68, 0x38, 0x93, 0x79, 0x5E, 0xF7, 0x0B, + 0xF0, 0x7E, 0xB1, 0x56, 0xF5, 0x5F, 0xFE, 0x3B, + 0x69, 0xAD, 0x88, 0xA4, 0xB8, 0xB0, 0xBF, 0xA1 + }, + { + 0x02, 0xF7, 0x42, 0xC6, 0xE9, 0x52, 0x78, 0x12, + 0x1A, 0x05, 0xE4, 0x42, 0x05, 0x44, 0x4F, 0xC5, + 0xEA, 0x6A, 0xF5, 0xE7, 0x41, 0xC5, 0x35, 0xBC, + 0x2C, 0xBC, 0x3B, 0x23, 0x5A, 0x2E, 0xA2, 0xB0 + }, + { + 0x46, 0x22, 0xF3, 0x6E, 0xB8, 0x98, 0x38, 0x3F, + 0x60, 0xD5, 0xBE, 0xD8, 0x09, 0xAC, 0x5C, 0x47, + 0x45, 0xC5, 0xD6, 0xAB, 0x84, 0xBC, 0xAD, 0xF7, + 0x9C, 0xF2, 0xA9, 0x6D, 0x4E, 0xC8, 0x88, 0x18 + }, + { + 0xCC, 0xD1, 0x1F, 0xAA, 0xA0, 0x58, 0x1E, 0xC3, + 0x2C, 0x3A, 0x40, 0x3F, 0x92, 0xEF, 0x43, 0xD5, + 0xDC, 0xF1, 0x95, 0xC1, 0xA1, 0x01, 0xDB, 0xFD, + 0x49, 0x5D, 0xBB, 0x4D, 0xCE, 0x80, 0x69, 0xE0 + }, + { + 0x06, 0x02, 0x4D, 0x6B, 0x07, 0xE0, 0x00, 0xBC, + 0xE6, 0x13, 0x47, 0x0A, 0x28, 0x80, 0x51, 0x9B, + 0x8B, 0xE4, 0xA3, 0x6B, 0xF3, 0x3C, 0x99, 0xC9, + 0x17, 0x89, 0x3E, 0xC7, 0x5D, 0xD9, 0x0F, 0xE3 + }, + { + 0xD9, 0x3A, 0xF9, 0x47, 0xB1, 0x46, 0x3A, 0x81, + 0x7D, 0xB4, 0x41, 0xA4, 0x74, 0x58, 0x8D, 0x6F, + 0x99, 0x6D, 0x24, 0x39, 0x83, 0xE8, 0x3C, 0x7E, + 0xEE, 0x90, 0xE1, 0xEF, 0xA4, 0x40, 0xD9, 0xBA + }, + { + 0x94, 0x89, 0x89, 0x45, 0xA7, 0xDB, 0x25, 0x9E, + 0x1B, 0x2E, 0x7C, 0xBE, 0xA4, 0x8A, 0xA0, 0xC6, + 0xD6, 0x57, 0x0D, 0x18, 0x17, 0x9F, 0x06, 0x18, + 0x47, 0x1C, 0x88, 0xF3, 0xEC, 0x3B, 0x0F, 0xC3 + }, + { + 0x4C, 0x2D, 0x93, 0x52, 0x56, 0x39, 0x2A, 0xA2, + 0xBE, 0x6E, 0x10, 0x78, 0xC0, 0x59, 0x38, 0x15, + 0xAB, 0xEF, 0x46, 0x9D, 0xE9, 0x69, 0xB5, 0x7B, + 0x88, 0x1B, 0x93, 0xAF, 0x55, 0x84, 0x65, 0xFA + }, + { + 0xAA, 0xC7, 0xBE, 0x16, 0xE5, 0x2F, 0x79, 0x0E, + 0x4F, 0xF7, 0x0B, 0x24, 0x01, 0x5C, 0xB1, 0x1B, + 0x40, 0x61, 0x6E, 0x94, 0xDB, 0x13, 0x88, 0x2B, + 0x41, 0xD3, 0xDD, 0x8C, 0x8C, 0x19, 0x52, 0xB7 + }, + { + 0x04, 0x34, 0xB4, 0x7C, 0x0E, 0xE7, 0xE6, 0xF5, + 0x39, 0x06, 0x79, 0x9A, 0x43, 0x20, 0x9D, 0x3F, + 0xC3, 0x7D, 0x3F, 0xD1, 0xF7, 0x45, 0x55, 0xDE, + 0x67, 0xAB, 0xAC, 0xB9, 0x51, 0xB0, 0x06, 0xF4 + }, + { + 0x04, 0x42, 0xFB, 0xDD, 0x5B, 0x58, 0x49, 0x6E, + 0xC7, 0x81, 0x59, 0xCC, 0xAA, 0x88, 0x7C, 0x88, + 0xA8, 0x61, 0xFC, 0xCA, 0x70, 0xE7, 0xAB, 0xC9, + 0x76, 0xF2, 0x4C, 0x11, 0x58, 0x8B, 0xE6, 0xEE + }, + { + 0xA7, 0x3E, 0x68, 0xBB, 0x18, 0xB0, 0x07, 0x64, + 0x8E, 0x76, 0xB5, 0x52, 0x8D, 0x1E, 0x50, 0xE7, + 0xFA, 0x65, 0x4D, 0xA3, 0x97, 0x0E, 0xC3, 0x49, + 0xBF, 0x59, 0x1A, 0x30, 0xD9, 0x32, 0xC8, 0xF6 + }, + { + 0x84, 0x9C, 0xF8, 0x73, 0x16, 0x2B, 0xA7, 0x2C, + 0x4B, 0x80, 0x08, 0xE6, 0x8F, 0x93, 0x2F, 0xB3, + 0xA0, 0x15, 0xA7, 0x4F, 0xCF, 0x95, 0x71, 0x98, + 0xD5, 0x6A, 0x0D, 0xC4, 0x62, 0x5A, 0x74, 0xF5 + }, + { + 0xA6, 0xDE, 0xC6, 0xFC, 0x89, 0x49, 0x34, 0x9C, + 0x4E, 0x9A, 0x9C, 0x62, 0x36, 0x87, 0xFB, 0xA4, + 0xC9, 0xB2, 0x75, 0xBD, 0xB2, 0x30, 0x50, 0x9B, + 0x72, 0xE3, 0xD6, 0x71, 0x19, 0x14, 0xE2, 0xD8 + }, + { + 0x58, 0xAF, 0xC2, 0xB2, 0x4A, 0x19, 0xFD, 0xBF, + 0x76, 0xA0, 0x9B, 0x70, 0xB1, 0xE3, 0xB7, 0x7F, + 0xCB, 0xD4, 0x06, 0x50, 0x01, 0xD9, 0x63, 0x66, + 0x40, 0xEB, 0x5A, 0x26, 0x28, 0xF4, 0x42, 0xCC + }, + { + 0x47, 0x3A, 0x43, 0xAA, 0x1D, 0x6A, 0x02, 0x87, + 0x67, 0x43, 0x2A, 0x83, 0x0A, 0xD1, 0x22, 0x1E, + 0x02, 0x9C, 0x58, 0x9A, 0xF9, 0xFD, 0x4D, 0x68, + 0xD5, 0x6C, 0x4F, 0xB8, 0x20, 0x25, 0x93, 0x52 + }, + { + 0xA0, 0xAE, 0xB4, 0xA5, 0xAD, 0x89, 0x9A, 0xF2, + 0xE2, 0x91, 0xB2, 0xE7, 0x9D, 0xBB, 0x6B, 0x0B, + 0xF5, 0x6B, 0x58, 0x44, 0x67, 0x6B, 0x95, 0x5D, + 0x94, 0x5B, 0x6C, 0x4A, 0xE1, 0xC0, 0x1E, 0xED + }, + { + 0xCF, 0xC3, 0x02, 0x9A, 0x9E, 0xEB, 0x15, 0x22, + 0x22, 0xD9, 0x66, 0x53, 0x49, 0x2E, 0x46, 0xCA, + 0x64, 0xCA, 0x4F, 0x0D, 0x64, 0x68, 0x30, 0x28, + 0xD3, 0xAE, 0xE5, 0xA4, 0x9C, 0xB4, 0x71, 0x63 + }, + { + 0x74, 0x67, 0xCF, 0x77, 0x61, 0xCD, 0x9F, 0x55, + 0x61, 0x8D, 0x30, 0xC9, 0xD8, 0xC5, 0xB4, 0x1E, + 0x47, 0x01, 0x51, 0x0C, 0x7D, 0x16, 0xAB, 0x4E, + 0x5D, 0x89, 0xA5, 0xD7, 0x71, 0x46, 0xB0, 0x92 + }, + { + 0xC0, 0x16, 0xD8, 0x42, 0x4E, 0x53, 0x1E, 0xFC, + 0x57, 0x37, 0xC0, 0x3F, 0xC9, 0x0A, 0x5E, 0xFC, + 0x9F, 0x90, 0x22, 0xE4, 0xD5, 0xBA, 0x3B, 0x06, + 0x95, 0xF7, 0xAE, 0x53, 0x82, 0x60, 0xC2, 0xEE + }, + { + 0x5D, 0x38, 0x11, 0x89, 0xE6, 0x00, 0x0F, 0xC1, + 0x17, 0xC7, 0x1F, 0x59, 0xF7, 0x86, 0xFB, 0x4B, + 0x79, 0xFD, 0xD4, 0xEC, 0x5D, 0x4C, 0xD3, 0x0A, + 0xAC, 0x21, 0x57, 0xF7, 0x5D, 0xEA, 0xD7, 0x78 + }, + { + 0x7C, 0x9C, 0xDD, 0x15, 0xC4, 0xC9, 0xAB, 0xCA, + 0xCB, 0xFE, 0x6F, 0x66, 0x4A, 0x7F, 0x5F, 0x8B, + 0x2E, 0x25, 0x91, 0x83, 0x29, 0x1A, 0xE5, 0xCC, + 0x91, 0x30, 0xA0, 0xB2, 0x41, 0xE5, 0x73, 0x7F + }, + { + 0xB8, 0x81, 0x31, 0x72, 0xF5, 0x21, 0x8A, 0xC3, + 0xEB, 0x68, 0x7B, 0xC4, 0xAF, 0xAF, 0xF8, 0x3F, + 0xBC, 0xA4, 0xE9, 0xC1, 0xA4, 0x62, 0x96, 0x33, + 0x01, 0xDD, 0x44, 0x59, 0x85, 0x01, 0x50, 0xA2 + }, + { + 0xE3, 0xD1, 0x30, 0xE3, 0x6A, 0x02, 0x8E, 0xA8, + 0x0C, 0x57, 0xA2, 0xAA, 0x48, 0x19, 0xFD, 0x34, + 0xE4, 0xDB, 0xBE, 0xB1, 0x4A, 0x49, 0x58, 0x94, + 0xB1, 0x5A, 0x87, 0x87, 0xDB, 0x1A, 0x9F, 0x9C + }, + { + 0xFF, 0xF1, 0xB4, 0x40, 0x0F, 0x48, 0x9E, 0x07, + 0xD2, 0x23, 0x51, 0xC1, 0xF0, 0x95, 0x65, 0xE2, + 0x65, 0xB6, 0x8A, 0xD2, 0x9F, 0x63, 0x29, 0x87, + 0x9E, 0x6B, 0x5F, 0x7F, 0x6B, 0x41, 0x93, 0x50 + }, + { + 0x55, 0x9E, 0xD5, 0xBB, 0x3E, 0x5F, 0x39, 0x85, + 0xFB, 0x57, 0x82, 0x28, 0xBF, 0x8C, 0x0F, 0x0B, + 0x17, 0x3F, 0x8D, 0x11, 0x53, 0xFA, 0xEB, 0x9F, + 0xEC, 0x75, 0x6F, 0xFD, 0x18, 0xA8, 0x72, 0x38 + }, + { + 0x88, 0x13, 0x12, 0x53, 0x01, 0x4D, 0x23, 0xC5, + 0xE3, 0x8E, 0x78, 0xBD, 0xA1, 0x94, 0x55, 0xD8, + 0xA0, 0x23, 0xBD, 0x7A, 0x7E, 0x72, 0x74, 0x57, + 0xA1, 0x52, 0xA8, 0x1D, 0x0B, 0x17, 0x18, 0xA7 + }, + { + 0xF4, 0xD3, 0xFA, 0xE7, 0xCD, 0xE6, 0xBB, 0x66, + 0x71, 0x5A, 0x19, 0x8F, 0xA4, 0x8D, 0x21, 0x0C, + 0x10, 0xF8, 0xDF, 0x32, 0x04, 0xAE, 0x5E, 0x33, + 0xA6, 0x02, 0x46, 0x7F, 0x1B, 0x62, 0x26, 0x85 + }, + { + 0xE6, 0x2B, 0x62, 0x2A, 0xC8, 0xA2, 0x13, 0x66, + 0xBF, 0x2D, 0xED, 0x30, 0xF4, 0x08, 0x2A, 0x53, + 0xE7, 0x7A, 0x9A, 0xA6, 0x96, 0xB1, 0xF3, 0xEE, + 0x8C, 0xFE, 0x99, 0xC5, 0x93, 0x12, 0xD9, 0xC7 + }, + { + 0x3D, 0x39, 0xFF, 0xA8, 0x55, 0x12, 0xC3, 0xC8, + 0x89, 0x0D, 0x4B, 0xDF, 0x31, 0x88, 0x9C, 0xA6, + 0x6E, 0x5C, 0xEC, 0xB6, 0x3C, 0xFE, 0xED, 0x57, + 0xB9, 0x26, 0x37, 0x08, 0xE7, 0x4C, 0x55, 0x0B + }, + { + 0xB1, 0x70, 0x3B, 0x8A, 0x00, 0xE2, 0x61, 0x24, + 0x97, 0xD1, 0x1C, 0x64, 0x9D, 0x15, 0x0A, 0x6C, + 0x96, 0x3B, 0xF4, 0xFD, 0x38, 0xFE, 0xB1, 0xC3, + 0x81, 0xFE, 0x0D, 0x9B, 0x04, 0xC0, 0x2B, 0x22 + }, + { + 0x12, 0xFB, 0xAD, 0x9D, 0x37, 0x82, 0x81, 0x2D, + 0x71, 0x17, 0x9A, 0x50, 0xFB, 0xD9, 0xB4, 0x56, + 0x6C, 0x7B, 0x06, 0xF5, 0xD7, 0x7C, 0x6F, 0x32, + 0x97, 0x17, 0xFB, 0x4A, 0xE2, 0xC5, 0xB4, 0xEC + }, + { + 0x76, 0x8B, 0x65, 0x9A, 0x82, 0x4B, 0x43, 0xF9, + 0xCA, 0x56, 0x60, 0xB9, 0xDD, 0xF0, 0x5F, 0x8B, + 0xA2, 0xBC, 0x49, 0x93, 0x86, 0x6B, 0x7C, 0x9B, + 0xE6, 0x87, 0x91, 0xF5, 0xB2, 0x46, 0x44, 0xB3 + }, + { + 0xC0, 0x20, 0x4E, 0x23, 0xCA, 0x86, 0xBE, 0x20, + 0x5E, 0xED, 0x0C, 0xC3, 0xDD, 0x72, 0x25, 0xCE, + 0x5F, 0xFE, 0x1E, 0xE1, 0x2D, 0xAC, 0xB9, 0x3C, + 0x5D, 0x06, 0x29, 0xB7, 0x69, 0x9C, 0xD7, 0x33 + }, + { + 0xF4, 0x32, 0x96, 0x96, 0x1F, 0x8E, 0xAE, 0xCC, + 0xD8, 0x54, 0x41, 0x3D, 0xC5, 0xAD, 0xDA, 0x62, + 0x39, 0x3A, 0x34, 0x46, 0x27, 0xE8, 0x6C, 0x06, + 0x6E, 0x79, 0x07, 0x55, 0x00, 0x40, 0x74, 0x4F + }, + { + 0x82, 0xF4, 0x46, 0x9E, 0x80, 0x78, 0x90, 0x21, + 0xC6, 0x1D, 0xB7, 0xE3, 0x2F, 0x36, 0xAC, 0xBE, + 0x59, 0x1A, 0x64, 0xF2, 0x60, 0x59, 0x26, 0x57, + 0x70, 0xAE, 0x65, 0x8D, 0x62, 0xBD, 0xE7, 0xEF + }, + { + 0x2A, 0x85, 0x67, 0x1A, 0x55, 0xC8, 0x9F, 0xA1, + 0x56, 0xE2, 0x96, 0xF7, 0x5D, 0xF1, 0xC7, 0xDB, + 0xAB, 0x17, 0x8E, 0xBB, 0xA6, 0x52, 0x04, 0xA7, + 0xE8, 0x17, 0x8C, 0x91, 0x6A, 0xD0, 0x87, 0xF8 + }, + { + 0x33, 0xE2, 0x45, 0x00, 0x28, 0x08, 0xF6, 0x93, + 0x4B, 0x9B, 0xE3, 0xA6, 0xFA, 0x8E, 0x86, 0x70, + 0xC9, 0x0B, 0xAA, 0x62, 0x57, 0x17, 0xB9, 0x20, + 0x1E, 0xB9, 0xB9, 0xDD, 0x91, 0x2F, 0x5C, 0xE2 + }, + { + 0x58, 0xEE, 0x5E, 0x79, 0x91, 0x84, 0xAD, 0x9D, + 0xA9, 0xA1, 0x7C, 0x5B, 0x46, 0xA4, 0x81, 0x0E, + 0x28, 0xBD, 0xD0, 0x8C, 0x35, 0x81, 0x63, 0x4C, + 0x83, 0x50, 0x30, 0x53, 0x9B, 0x79, 0x54, 0x4D + }, + { + 0x26, 0xD8, 0xFA, 0x08, 0xDB, 0x30, 0x8E, 0xDF, + 0x2F, 0x96, 0xF8, 0x2A, 0xF6, 0xB6, 0x0C, 0x17, + 0xD8, 0xF1, 0xFF, 0x85, 0x8C, 0x52, 0xF2, 0xD0, + 0xF3, 0x83, 0x10, 0x78, 0x12, 0x75, 0x26, 0xA3 + }, + { + 0x25, 0xA5, 0x8D, 0xF4, 0x03, 0x92, 0x47, 0xA2, + 0x2F, 0x68, 0xFF, 0x2B, 0x71, 0x76, 0x6B, 0x7B, + 0x56, 0x00, 0xDD, 0xF4, 0x01, 0xD9, 0x9F, 0xF2, + 0xC1, 0x95, 0x5A, 0xE7, 0xBB, 0x43, 0xE5, 0x6A + }, + { + 0xBE, 0x43, 0xE8, 0x68, 0x61, 0x60, 0xE9, 0x07, + 0xBA, 0x54, 0x7D, 0x5A, 0x87, 0x9D, 0x10, 0xF7, + 0x88, 0xAF, 0xC8, 0x42, 0xB8, 0xEB, 0xB9, 0xF3, + 0xF7, 0x88, 0x53, 0x25, 0x15, 0x91, 0x2A, 0xE4 + }, + { + 0xAA, 0x4A, 0xCB, 0x95, 0xD8, 0x79, 0x19, 0x2A, + 0x69, 0x08, 0xE8, 0x8A, 0xE3, 0xD6, 0x58, 0x9F, + 0x4E, 0x3E, 0xB3, 0xD4, 0xE0, 0x3A, 0x80, 0x6C, + 0xCD, 0xB9, 0xB5, 0xD6, 0xA9, 0x58, 0x6F, 0xDF + }, + { + 0x84, 0x66, 0xD5, 0xE4, 0x4C, 0xE9, 0x5B, 0x4F, + 0xA1, 0x79, 0x99, 0x24, 0x44, 0xB8, 0xC2, 0x48, + 0x5B, 0x88, 0x64, 0x48, 0xA6, 0xDC, 0xCF, 0xCF, + 0x0B, 0xC3, 0x0B, 0xC5, 0xF0, 0xF5, 0x6B, 0x01 + }, + { + 0x00, 0x56, 0xD7, 0xE0, 0xAC, 0x33, 0x35, 0x57, + 0x83, 0x65, 0x9B, 0x38, 0xEC, 0x8B, 0xEC, 0xCB, + 0xF7, 0x83, 0x93, 0x99, 0x67, 0xFE, 0x37, 0xAE, + 0xAC, 0xF3, 0x69, 0xDD, 0xB6, 0x70, 0xAD, 0xA0 + }, + { + 0x90, 0x4F, 0x42, 0xF3, 0x45, 0x53, 0x0A, 0xC8, + 0xA3, 0x52, 0xD0, 0x9B, 0x68, 0x72, 0xC5, 0xBC, + 0xA3, 0x66, 0x1A, 0xBC, 0xA6, 0xCA, 0x64, 0xC8, + 0x09, 0x9F, 0x2F, 0xB6, 0x86, 0x7C, 0x30, 0xFE + }, + { + 0xA8, 0xC3, 0xBF, 0x46, 0xF0, 0xB8, 0x8B, 0xBD, + 0x16, 0xFD, 0xA4, 0xA8, 0xB5, 0xCA, 0x81, 0xF5, + 0x24, 0x35, 0x20, 0xC3, 0x85, 0xD3, 0x8C, 0x0B, + 0x4D, 0x23, 0x52, 0xAB, 0x34, 0xEA, 0x35, 0xE6 + }, + { + 0x8D, 0x33, 0x17, 0xFC, 0x60, 0x6E, 0x56, 0x6D, + 0x30, 0x2E, 0xDA, 0xB5, 0x5E, 0x80, 0x16, 0x11, + 0xD8, 0xC1, 0x3F, 0x4A, 0x9A, 0x19, 0xD1, 0x85, + 0x97, 0x8D, 0xEF, 0x72, 0x83, 0x9C, 0xDA, 0xA3 + }, + { + 0x97, 0x38, 0x80, 0x11, 0xF5, 0x7A, 0x49, 0x86, + 0x90, 0xEC, 0x79, 0x88, 0xEF, 0xF9, 0x03, 0xFF, + 0x9B, 0x23, 0x58, 0xF5, 0xB6, 0x1B, 0xAA, 0x20, + 0xF7, 0x32, 0x90, 0xD6, 0x29, 0x6C, 0x1C, 0x0B + }, + { + 0xCF, 0xB8, 0x0C, 0xAB, 0x89, 0x90, 0x95, 0x08, + 0x09, 0x12, 0x3F, 0xBF, 0x85, 0xE9, 0x76, 0x45, + 0x47, 0x08, 0xE0, 0xAF, 0xED, 0x69, 0x8E, 0x33, + 0x52, 0xA3, 0x16, 0x35, 0x90, 0x9D, 0xB3, 0xE5 + }, + { + 0x0D, 0xAA, 0xCA, 0x55, 0x13, 0x2A, 0x23, 0x5B, + 0x83, 0x1A, 0x5E, 0xFF, 0x4E, 0xA4, 0x67, 0xCD, + 0x10, 0xAF, 0x44, 0x20, 0x08, 0x47, 0x73, 0x5A, + 0x1F, 0xFD, 0x51, 0xFA, 0x37, 0xEA, 0xA2, 0xA2 + }, + { + 0x69, 0xB2, 0x14, 0x97, 0xEB, 0xB8, 0x24, 0xBA, + 0x66, 0x53, 0x68, 0x18, 0x88, 0x25, 0xE6, 0xF6, + 0xF1, 0x4C, 0xF2, 0xC3, 0xF7, 0xB5, 0x53, 0x0B, + 0xB3, 0x4F, 0xA6, 0x58, 0xEE, 0xD9, 0xA7, 0x39 + }, + { + 0xB9, 0xA1, 0x9F, 0x50, 0x9B, 0xE0, 0x3F, 0xBC, + 0x40, 0xE2, 0x43, 0xA5, 0x8A, 0x3D, 0xED, 0x11, + 0xF0, 0xD5, 0x1F, 0x80, 0xE3, 0xE2, 0x9A, 0x50, + 0x56, 0x44, 0xCC, 0x05, 0x74, 0x38, 0x14, 0xEC + }, + { + 0xC4, 0xBC, 0xB2, 0x00, 0x25, 0x55, 0xD5, 0x44, + 0xFD, 0x0B, 0x02, 0x77, 0x06, 0x23, 0x89, 0x1E, + 0x70, 0xEE, 0xEC, 0x77, 0x44, 0x86, 0x5D, 0xD6, + 0x45, 0x5A, 0xD6, 0x65, 0xCC, 0x82, 0xE8, 0x61 + }, + { + 0x91, 0x2D, 0x24, 0xDC, 0x3D, 0x69, 0x23, 0xA4, + 0x83, 0xC2, 0x63, 0xEB, 0xA8, 0x1B, 0x7A, 0x87, + 0x97, 0xF2, 0x3C, 0xBF, 0x2F, 0x78, 0xB5, 0x1E, + 0x22, 0x26, 0x63, 0x9F, 0x84, 0xA5, 0x90, 0x47 + }, + { + 0x56, 0x82, 0x7A, 0x18, 0x88, 0x3A, 0xFD, 0xF9, + 0xCE, 0xEC, 0x56, 0x2B, 0x20, 0x66, 0xD8, 0xAC, + 0xB2, 0xC1, 0x95, 0x05, 0xEC, 0xE6, 0xF7, 0xA8, + 0x3E, 0x9F, 0x33, 0x46, 0xCB, 0xB8, 0x28, 0xC9 + }, + { + 0x25, 0x1D, 0x8D, 0x09, 0xFC, 0x48, 0xDD, 0x1D, + 0x6A, 0xF8, 0xFF, 0xDF, 0x39, 0x50, 0x91, 0xA4, + 0x6E, 0x05, 0xB8, 0xB7, 0xC5, 0xEC, 0x0C, 0x79, + 0xB6, 0x8A, 0x89, 0x04, 0xC8, 0x27, 0xBD, 0xEA + }, + { + 0xC2, 0xD1, 0x4D, 0x69, 0xFD, 0x0B, 0xBD, 0x1C, + 0x0F, 0xE8, 0xC8, 0x45, 0xD5, 0xFD, 0x6A, 0x8F, + 0x74, 0x01, 0x51, 0xB1, 0xD8, 0xEB, 0x4D, 0x26, + 0x36, 0x4B, 0xB0, 0x2D, 0xAE, 0x0C, 0x13, 0xBC + }, + { + 0x2E, 0x5F, 0xE2, 0x1F, 0x8F, 0x1B, 0x63, 0x97, + 0xA3, 0x8A, 0x60, 0x3D, 0x60, 0xB6, 0xF5, 0x3C, + 0x3B, 0x5D, 0xB2, 0x0A, 0xA5, 0x6C, 0x6D, 0x44, + 0xBE, 0xBD, 0x48, 0x28, 0xCE, 0x28, 0xF9, 0x0F + }, + { + 0x25, 0x05, 0x9F, 0x10, 0x60, 0x5E, 0x67, 0xAD, + 0xFE, 0x68, 0x13, 0x50, 0x66, 0x6E, 0x15, 0xAE, + 0x97, 0x6A, 0x5A, 0x57, 0x1C, 0x13, 0xCF, 0x5B, + 0xC8, 0x05, 0x3F, 0x43, 0x0E, 0x12, 0x0A, 0x52 + }, +}; + + + + +static const uint8_t blake2sp_keyed_kat[KAT_LENGTH][BLAKE2S_OUTBYTES] = +{ + { + 0x71, 0x5C, 0xB1, 0x38, 0x95, 0xAE, 0xB6, 0x78, + 0xF6, 0x12, 0x41, 0x60, 0xBF, 0xF2, 0x14, 0x65, + 0xB3, 0x0F, 0x4F, 0x68, 0x74, 0x19, 0x3F, 0xC8, + 0x51, 0xB4, 0x62, 0x10, 0x43, 0xF0, 0x9C, 0xC6 + }, + { + 0x40, 0x57, 0x8F, 0xFA, 0x52, 0xBF, 0x51, 0xAE, + 0x18, 0x66, 0xF4, 0x28, 0x4D, 0x3A, 0x15, 0x7F, + 0xC1, 0xBC, 0xD3, 0x6A, 0xC1, 0x3C, 0xBD, 0xCB, + 0x03, 0x77, 0xE4, 0xD0, 0xCD, 0x0B, 0x66, 0x03 + }, + { + 0x67, 0xE3, 0x09, 0x75, 0x45, 0xBA, 0xD7, 0xE8, + 0x52, 0xD7, 0x4D, 0x4E, 0xB5, 0x48, 0xEC, 0xA7, + 0xC2, 0x19, 0xC2, 0x02, 0xA7, 0xD0, 0x88, 0xDB, + 0x0E, 0xFE, 0xAC, 0x0E, 0xAC, 0x30, 0x42, 0x49 + }, + { + 0x8D, 0xBC, 0xC0, 0x58, 0x9A, 0x3D, 0x17, 0x29, + 0x6A, 0x7A, 0x58, 0xE2, 0xF1, 0xEF, 0xF0, 0xE2, + 0xAA, 0x42, 0x10, 0xB5, 0x8D, 0x1F, 0x88, 0xB8, + 0x6D, 0x7B, 0xA5, 0xF2, 0x9D, 0xD3, 0xB5, 0x83 + }, + { + 0xA9, 0xA9, 0x65, 0x2C, 0x8C, 0x67, 0x75, 0x94, + 0xC8, 0x72, 0x12, 0xD8, 0x9D, 0x5A, 0x75, 0xFB, + 0x31, 0xEF, 0x4F, 0x47, 0xC6, 0x58, 0x2C, 0xDE, + 0x5F, 0x1E, 0xF6, 0x6B, 0xD4, 0x94, 0x53, 0x3A + }, + { + 0x05, 0xA7, 0x18, 0x0E, 0x59, 0x50, 0x54, 0x73, + 0x99, 0x48, 0xC5, 0xE3, 0x38, 0xC9, 0x5F, 0xE0, + 0xB7, 0xFC, 0x61, 0xAC, 0x58, 0xA7, 0x35, 0x74, + 0x74, 0x56, 0x33, 0xBB, 0xC1, 0xF7, 0x70, 0x31 + }, + { + 0x81, 0x4D, 0xE8, 0x31, 0x53, 0xB8, 0xD7, 0x5D, + 0xFA, 0xDE, 0x29, 0xFD, 0x39, 0xAC, 0x72, 0xDD, + 0x09, 0xCA, 0x0F, 0x9B, 0xC8, 0xB7, 0xAB, 0x6A, + 0x06, 0xBA, 0xEE, 0x7D, 0xD0, 0xF9, 0xF0, 0x83 + }, + { + 0xDF, 0xD4, 0x19, 0x44, 0x91, 0x29, 0xFF, 0x60, + 0x4F, 0x0A, 0x14, 0x8B, 0x4C, 0x7D, 0x68, 0xF1, + 0x17, 0x4F, 0x7D, 0x0F, 0x8C, 0x8D, 0x2C, 0xE7, + 0x7F, 0x44, 0x8F, 0xD3, 0x41, 0x9C, 0x6F, 0xB0 + }, + { + 0xB9, 0xED, 0x22, 0xE7, 0xDD, 0x8D, 0xD1, 0x4E, + 0xE8, 0xC9, 0x5B, 0x20, 0xE7, 0x63, 0x2E, 0x85, + 0x53, 0xA2, 0x68, 0xD9, 0xFF, 0x86, 0x33, 0xED, + 0x3C, 0x21, 0xD1, 0xB8, 0xC9, 0xA7, 0x0B, 0xE1 + }, + { + 0x95, 0xF0, 0x31, 0x67, 0x1A, 0x4E, 0x3C, 0x54, + 0x44, 0x1C, 0xEE, 0x9D, 0xBE, 0xF4, 0xB7, 0xAC, + 0xA4, 0x46, 0x18, 0xA3, 0xA3, 0x33, 0xAD, 0x74, + 0x06, 0xD1, 0x97, 0xAC, 0x5B, 0xA0, 0x79, 0x1A + }, + { + 0xE2, 0x92, 0x5B, 0x9D, 0x5C, 0xA0, 0xFF, 0x62, + 0x88, 0xC5, 0xEA, 0x1A, 0xF2, 0xD2, 0x2B, 0x0A, + 0x6B, 0x79, 0xE2, 0xDA, 0xE0, 0x8B, 0xFD, 0x36, + 0xC3, 0xBE, 0x10, 0xBB, 0x8D, 0x71, 0xD8, 0x39 + }, + { + 0x16, 0x24, 0x9C, 0x74, 0x4E, 0x49, 0x51, 0x45, + 0x1D, 0x4C, 0x89, 0x4F, 0xB5, 0x9A, 0x3E, 0xCB, + 0x3F, 0xBF, 0xB7, 0xA4, 0x5F, 0x96, 0xF8, 0x5D, + 0x15, 0x80, 0xAC, 0x0B, 0x84, 0x2D, 0x96, 0xDA + }, + { + 0x43, 0x2B, 0xC9, 0x1C, 0x52, 0xAC, 0xEB, 0x9D, + 0xAE, 0xD8, 0x83, 0x28, 0x81, 0x64, 0x86, 0x50, + 0xC1, 0xB8, 0x1D, 0x11, 0x7A, 0xBD, 0x68, 0xE0, + 0x84, 0x51, 0x50, 0x8A, 0x63, 0xBE, 0x00, 0x81 + }, + { + 0xCD, 0xE8, 0x20, 0x2B, 0xCF, 0xA3, 0xF3, 0xE9, + 0x5D, 0x79, 0xBA, 0xCC, 0x16, 0x5D, 0x52, 0x70, + 0x0E, 0xF7, 0x1D, 0x87, 0x4A, 0x3C, 0x63, 0x7E, + 0x63, 0x4F, 0x64, 0x44, 0x73, 0x72, 0x0D, 0x6B + }, + { + 0x16, 0x21, 0x62, 0x1F, 0x5C, 0x3E, 0xE4, 0x46, + 0x89, 0x9D, 0x3C, 0x8A, 0xAE, 0x49, 0x17, 0xB1, + 0xE6, 0xDB, 0x4A, 0x0E, 0xD0, 0x42, 0x31, 0x5F, + 0xB2, 0xC1, 0x74, 0x82, 0x5E, 0x0A, 0x18, 0x19 + }, + { + 0x33, 0x6E, 0x8E, 0xBC, 0x71, 0xE2, 0x09, 0x5C, + 0x27, 0xF8, 0x64, 0xA3, 0x12, 0x1E, 0xFD, 0x0F, + 0xAA, 0x7A, 0x41, 0x28, 0x57, 0x25, 0xA5, 0x92, + 0xF6, 0x1B, 0xED, 0xED, 0x9D, 0xDE, 0x86, 0xED + }, + { + 0x07, 0x9B, 0xE0, 0x41, 0x0E, 0x78, 0x9B, 0x36, + 0xEE, 0x7F, 0x55, 0xC1, 0x9F, 0xAA, 0xC6, 0x91, + 0x65, 0x6E, 0xB0, 0x52, 0x1F, 0x42, 0x94, 0x9B, + 0x84, 0xEE, 0x29, 0xFE, 0x2A, 0x0E, 0x7F, 0x36 + }, + { + 0x17, 0x27, 0x0C, 0x4F, 0x34, 0x88, 0x08, 0x2D, + 0x9F, 0xF9, 0x93, 0x7E, 0xAB, 0x3C, 0xA9, 0x9C, + 0x97, 0xC5, 0xB4, 0x59, 0x61, 0x47, 0x37, 0x2D, + 0xD4, 0xE9, 0x8A, 0xCF, 0x13, 0xDB, 0x28, 0x10 + }, + { + 0x18, 0x3C, 0x38, 0x75, 0x4D, 0x03, 0x41, 0xCE, + 0x07, 0xC1, 0x7A, 0x6C, 0xB6, 0xC2, 0xFD, 0x8B, + 0xBC, 0xC1, 0x40, 0x4F, 0xDD, 0x01, 0x41, 0x99, + 0xC7, 0x8B, 0xE1, 0xA9, 0x75, 0x59, 0xA9, 0x28 + }, + { + 0x6E, 0x52, 0xD7, 0x28, 0xA4, 0x05, 0xA6, 0xE1, + 0xF8, 0x75, 0x87, 0xBB, 0xC2, 0xAC, 0x91, 0xC5, + 0xC0, 0x9B, 0x2D, 0x82, 0x8A, 0xC8, 0x1E, 0x5C, + 0x4A, 0x81, 0xD0, 0x3D, 0xD4, 0xAA, 0x8D, 0x5C + }, + { + 0xF4, 0xE0, 0x8E, 0x05, 0x9B, 0x74, 0x14, 0x4B, + 0xF9, 0x48, 0x14, 0x6D, 0x14, 0xA2, 0xC8, 0x1E, + 0x46, 0xDC, 0x15, 0xFF, 0x26, 0xEB, 0x52, 0x34, + 0x4C, 0xDD, 0x47, 0x4A, 0xBE, 0xA1, 0x4B, 0xC0 + }, + { + 0x0F, 0x2E, 0x0A, 0x10, 0x0E, 0xD8, 0xA1, 0x17, + 0x85, 0x96, 0x2A, 0xD4, 0x59, 0x6A, 0xF9, 0x55, + 0xE3, 0x0B, 0x9A, 0xEF, 0x93, 0x0A, 0x24, 0x8D, + 0xA9, 0x32, 0x2B, 0x70, 0x2D, 0x4B, 0x68, 0x72 + }, + { + 0x51, 0x90, 0xFC, 0xC7, 0x32, 0xF4, 0x04, 0xAA, + 0xD4, 0x36, 0x4A, 0xC7, 0x96, 0x0C, 0xFD, 0x5B, + 0x4E, 0x34, 0x86, 0x29, 0xC3, 0x72, 0xEE, 0xB3, + 0x25, 0xB5, 0xC6, 0xC7, 0xCB, 0xCE, 0x59, 0xAB + }, + { + 0xC0, 0xC4, 0xCB, 0x86, 0xEA, 0x25, 0xEA, 0x95, + 0x7E, 0xEC, 0x5B, 0x22, 0xD2, 0x55, 0x0A, 0x16, + 0x49, 0xE6, 0xDF, 0xFA, 0x31, 0x6B, 0xB8, 0xF4, + 0xC9, 0x1B, 0x8F, 0xF7, 0xA2, 0x4B, 0x25, 0x31 + }, + { + 0x2C, 0x9E, 0xDA, 0x13, 0x5A, 0x30, 0xAE, 0xCA, + 0xF3, 0xAC, 0xB3, 0xD2, 0x3A, 0x30, 0x35, 0xFB, + 0xAB, 0xBA, 0x98, 0x33, 0x31, 0x65, 0xD8, 0x7F, + 0xCB, 0xF8, 0xFE, 0x10, 0x33, 0x6E, 0xCF, 0x20 + }, + { + 0x3C, 0xD6, 0x69, 0xE8, 0xD5, 0x62, 0x62, 0xA2, + 0x37, 0x13, 0x67, 0x22, 0x4D, 0xAE, 0x6D, 0x75, + 0x9E, 0xE1, 0x52, 0xC3, 0x15, 0x33, 0xB2, 0x63, + 0xFA, 0x2E, 0x64, 0x92, 0x08, 0x77, 0xB2, 0xA7 + }, + { + 0x18, 0xA9, 0xA0, 0xC2, 0xD0, 0xEA, 0x6C, 0x3B, + 0xB3, 0x32, 0x83, 0x0F, 0x89, 0x18, 0xB0, 0x68, + 0x4F, 0x5D, 0x39, 0x94, 0xDF, 0x48, 0x67, 0x46, + 0x2D, 0xD0, 0x6E, 0xF0, 0x86, 0x24, 0x24, 0xCC + }, + { + 0x73, 0x90, 0xEA, 0x41, 0x04, 0xA9, 0xF4, 0xEE, + 0xA9, 0x0F, 0x81, 0xE2, 0x6A, 0x12, 0x9D, 0xCF, + 0x9F, 0x4A, 0xF3, 0x83, 0x52, 0xD9, 0xCB, 0x6A, + 0x81, 0x2C, 0xC8, 0x05, 0x69, 0x09, 0x05, 0x0E + }, + { + 0xE4, 0x9E, 0x01, 0x14, 0xC6, 0x29, 0xB4, 0x94, + 0xB1, 0x1E, 0xA9, 0x8E, 0xCD, 0x40, 0x32, 0x73, + 0x1F, 0x15, 0x3B, 0x46, 0x50, 0xAC, 0xAC, 0xD7, + 0xE0, 0xF6, 0xE7, 0xDE, 0x3D, 0xF0, 0x19, 0x77 + }, + { + 0x27, 0xC5, 0x70, 0x2B, 0xE1, 0x04, 0xB3, 0xA9, + 0x4F, 0xC4, 0x34, 0x23, 0xAE, 0xEE, 0x83, 0xAC, + 0x3C, 0xA7, 0x3B, 0x7F, 0x87, 0x83, 0x9A, 0x6B, + 0x2E, 0x29, 0x60, 0x79, 0x03, 0xB7, 0xF2, 0x87 + }, + { + 0x81, 0xD2, 0xE1, 0x2E, 0xB2, 0xF4, 0x27, 0x60, + 0xC6, 0xE3, 0xBA, 0xA7, 0x8F, 0x84, 0x07, 0x3A, + 0xE6, 0xF5, 0x61, 0x60, 0x70, 0xFE, 0x25, 0xBE, + 0xDE, 0x7C, 0x7C, 0x82, 0x48, 0xAB, 0x1F, 0xBA + }, + { + 0xFA, 0xB2, 0x35, 0xD5, 0x93, 0x48, 0xAB, 0x8C, + 0xE4, 0x9B, 0xEC, 0x77, 0xC0, 0xF1, 0x93, 0x28, + 0xFD, 0x04, 0x5D, 0xFD, 0x60, 0x8A, 0x53, 0x03, + 0x36, 0xDF, 0x4F, 0x94, 0xE1, 0x72, 0xA5, 0xC8 + }, + { + 0x8A, 0xAA, 0x8D, 0x80, 0x5C, 0x58, 0x88, 0x1F, + 0xF3, 0x79, 0xFB, 0xD4, 0x2C, 0x6B, 0xF6, 0xF1, + 0x4C, 0x6C, 0x73, 0xDF, 0x80, 0x71, 0xB3, 0xB2, + 0x28, 0x98, 0x11, 0x09, 0xCC, 0xC0, 0x15, 0xF9 + }, + { + 0x91, 0xFD, 0xD2, 0x62, 0x20, 0x39, 0x16, 0x39, + 0x47, 0x40, 0x95, 0x2B, 0xCE, 0x72, 0xB6, 0x4B, + 0xAB, 0xB6, 0xF7, 0x21, 0x34, 0x4D, 0xEE, 0x82, + 0x50, 0xBF, 0x0E, 0x46, 0xF1, 0xBA, 0x18, 0x8F + }, + { + 0xF7, 0xE5, 0x7B, 0x8F, 0x85, 0xF4, 0x7D, 0x59, + 0x03, 0xAD, 0x4C, 0xCB, 0x8A, 0xF6, 0x2A, 0x3E, + 0x85, 0x8A, 0xAB, 0x2B, 0x8C, 0xC2, 0x26, 0x49, + 0x4F, 0x7B, 0x00, 0xBE, 0xDB, 0xF5, 0xB0, 0xD0 + }, + { + 0xF7, 0x6F, 0x21, 0xAD, 0xDA, 0xE9, 0x6A, 0x96, + 0x46, 0xFC, 0x06, 0xF9, 0xBF, 0x52, 0xAE, 0x08, + 0x48, 0xF1, 0x8C, 0x35, 0x26, 0xB1, 0x29, 0xE1, + 0x5B, 0x2C, 0x35, 0x5E, 0x2E, 0x79, 0xE5, 0xDA + }, + { + 0x8A, 0xEB, 0x1C, 0x79, 0x5F, 0x34, 0x90, 0x01, + 0x5E, 0xF4, 0xCD, 0x61, 0xA2, 0x80, 0x7B, 0x23, + 0x0E, 0xFD, 0xC8, 0x46, 0x01, 0x73, 0xDA, 0xD0, + 0x26, 0xA4, 0xA0, 0xFC, 0xC2, 0xFB, 0xF2, 0x2A + }, + { + 0xC5, 0x64, 0xFF, 0xC6, 0x23, 0x07, 0x77, 0x65, + 0xBB, 0x97, 0x87, 0x58, 0x56, 0x54, 0xCE, 0x74, + 0x5D, 0xBD, 0x10, 0x8C, 0xEF, 0x24, 0x8A, 0xB0, + 0x0A, 0xD1, 0xA2, 0x64, 0x7D, 0x99, 0x03, 0x87 + }, + { + 0xFE, 0x89, 0x42, 0xA3, 0xE5, 0xF5, 0xE8, 0xCD, + 0x70, 0x51, 0x04, 0xF8, 0x82, 0x10, 0x72, 0x6E, + 0x53, 0xDD, 0x7E, 0xB3, 0xF9, 0xA2, 0x02, 0xBF, + 0x93, 0x14, 0xB3, 0xB9, 0x06, 0x5E, 0xB7, 0x12 + }, + { + 0xDC, 0x29, 0x53, 0x59, 0xD4, 0x36, 0xEE, 0xA7, + 0x80, 0x84, 0xE7, 0xB0, 0x77, 0xFE, 0x09, 0xB1, + 0x9C, 0x5B, 0xF3, 0xD2, 0xA7, 0x96, 0xDA, 0xB0, + 0x19, 0xE4, 0x20, 0x05, 0x99, 0xFD, 0x82, 0x02 + }, + { + 0x70, 0xB3, 0xF7, 0x2F, 0x74, 0x90, 0x32, 0xE2, + 0x5E, 0x38, 0x3B, 0x96, 0x43, 0x78, 0xEA, 0x1C, + 0x54, 0x3E, 0x9C, 0x15, 0xDE, 0x3A, 0x27, 0xD8, + 0x6D, 0x2A, 0x9D, 0x22, 0x31, 0xEF, 0xF4, 0x8A + }, + { + 0x79, 0x82, 0xB5, 0x4C, 0x08, 0xDB, 0x2B, 0xFB, + 0x6F, 0x45, 0xF3, 0x5B, 0xC3, 0x23, 0xBC, 0x09, + 0x37, 0x79, 0xB6, 0xBB, 0x0E, 0x3E, 0xEA, 0x3E, + 0x8C, 0x98, 0xB1, 0xDE, 0x99, 0xD3, 0xC5, 0x5E + }, + { + 0x75, 0xE4, 0x16, 0x22, 0x57, 0x01, 0x4B, 0xED, + 0xCC, 0x05, 0xC2, 0x94, 0x4D, 0xCE, 0x0D, 0xF0, + 0xC3, 0x5E, 0xBA, 0x13, 0x19, 0x54, 0x06, 0x4F, + 0x6E, 0x4E, 0x09, 0x5F, 0xD0, 0x84, 0x45, 0xEE + }, + { + 0x4A, 0x12, 0x9E, 0xA6, 0xCD, 0xBA, 0xBC, 0x2D, + 0x39, 0x24, 0x79, 0x37, 0x2F, 0x97, 0x5B, 0x9C, + 0xF5, 0xA1, 0xB7, 0xDE, 0xB6, 0x9A, 0x32, 0x66, + 0xF0, 0x3E, 0xBC, 0x6D, 0x11, 0x13, 0x93, 0xC4 + }, + { + 0x8F, 0xED, 0x70, 0xF2, 0x79, 0x55, 0xDC, 0x8A, + 0xD9, 0xF1, 0xB7, 0xB3, 0xF6, 0xF5, 0xDF, 0xBD, + 0x96, 0x2A, 0x33, 0x59, 0x2B, 0x42, 0xDE, 0x85, + 0x6D, 0x42, 0x1E, 0x29, 0x12, 0xBA, 0xB8, 0x6B + }, + { + 0xE2, 0xF2, 0x06, 0x60, 0x37, 0x6F, 0x2B, 0x18, + 0x39, 0x66, 0x7C, 0xBF, 0xE5, 0xE1, 0x6E, 0xF0, + 0x75, 0xAC, 0x39, 0x43, 0x64, 0x4F, 0x35, 0x32, + 0x28, 0x2F, 0x8B, 0xB0, 0x72, 0x3B, 0x99, 0x86 + }, + { + 0xAB, 0xF8, 0x4C, 0x91, 0x3A, 0x83, 0xDF, 0x98, + 0xC7, 0x00, 0x29, 0x81, 0x9C, 0x06, 0x5F, 0x6D, + 0x6D, 0xE4, 0xF6, 0xD4, 0x3A, 0xBF, 0x60, 0x0D, + 0xAD, 0xE0, 0x35, 0xB2, 0x3B, 0xED, 0x7B, 0xAA + }, + { + 0x45, 0x9C, 0x15, 0xD4, 0x85, 0x6C, 0x7E, 0xCF, + 0x82, 0x62, 0x03, 0x51, 0xC3, 0xC1, 0xC7, 0x6C, + 0x40, 0x3F, 0x3E, 0x97, 0x07, 0x74, 0x13, 0x87, + 0xE2, 0x99, 0x07, 0x3F, 0xB1, 0x70, 0x4B, 0x2B + }, + { + 0x9A, 0xB9, 0x12, 0xED, 0xA0, 0x76, 0x8A, 0xBD, + 0xF8, 0x26, 0xB6, 0xE0, 0x5D, 0x0D, 0x73, 0x58, + 0x39, 0xE6, 0xA5, 0xF0, 0x2E, 0x04, 0xC4, 0xCC, + 0x75, 0x65, 0x0B, 0x2C, 0x8C, 0xAB, 0x67, 0x49 + }, + { + 0x47, 0x40, 0xEB, 0xEC, 0xAC, 0x90, 0x03, 0x1B, + 0xB7, 0xE6, 0x8E, 0x51, 0xC5, 0x53, 0x91, 0xAF, + 0xB1, 0x89, 0xB3, 0x17, 0xF2, 0xDE, 0x55, 0x87, + 0x66, 0xF7, 0x8F, 0x5C, 0xB7, 0x1F, 0x81, 0xB6 + }, + { + 0x3C, 0xC4, 0x7F, 0x0E, 0xF6, 0x48, 0x21, 0x58, + 0x7C, 0x93, 0x7C, 0xDD, 0xBA, 0x85, 0xC9, 0x93, + 0xD3, 0xCE, 0x2D, 0xD0, 0xCE, 0xD4, 0x0D, 0x3B, + 0xE3, 0x3C, 0xB7, 0xDC, 0x7E, 0xDA, 0xBC, 0xF1 + }, + { + 0x9F, 0x47, 0x6A, 0x22, 0xDB, 0x54, 0xD6, 0xBB, + 0x9B, 0xEF, 0xDB, 0x26, 0x0C, 0x66, 0x57, 0x8A, + 0xE1, 0xD8, 0xA5, 0xF8, 0x7D, 0x3D, 0x8C, 0x01, + 0x7F, 0xDB, 0x74, 0x75, 0x08, 0x0F, 0xA8, 0xE1 + }, + { + 0x8B, 0x68, 0xC6, 0xFB, 0x07, 0x06, 0xA7, 0x95, + 0xF3, 0xA8, 0x39, 0xD6, 0xFE, 0x25, 0xFD, 0x4A, + 0xA7, 0xF9, 0x2E, 0x66, 0x4F, 0x76, 0x2D, 0x61, + 0x53, 0x81, 0xBC, 0x85, 0x9A, 0xFA, 0x29, 0x2C + }, + { + 0xF6, 0x40, 0xD2, 0x25, 0xA6, 0xBC, 0xD2, 0xFC, + 0x8A, 0xCC, 0xAF, 0xBE, 0xD5, 0xA8, 0x4B, 0x5B, + 0xBB, 0x5D, 0x8A, 0xE5, 0xDB, 0x06, 0xA1, 0x0B, + 0x6D, 0x9D, 0x93, 0x16, 0x0B, 0x39, 0x2E, 0xE0 + }, + { + 0x70, 0x48, 0x60, 0xA7, 0xF5, 0xBA, 0x68, 0xDB, + 0x27, 0x03, 0x1C, 0x15, 0xF2, 0x25, 0x50, 0x0D, + 0x69, 0x2A, 0xB2, 0x47, 0x53, 0x42, 0x81, 0xC4, + 0xF6, 0x84, 0xF6, 0xC6, 0xC8, 0xCD, 0x88, 0xC7 + }, + { + 0xC1, 0xA7, 0x5B, 0xDD, 0xA1, 0x2B, 0x8B, 0x2A, + 0xB1, 0xB9, 0x24, 0x84, 0x38, 0x58, 0x18, 0x3A, + 0x09, 0xD2, 0x02, 0x42, 0x1F, 0xDB, 0xCD, 0xF0, + 0xE6, 0x3E, 0xAE, 0x46, 0xF3, 0x7D, 0x91, 0xED + }, + { + 0x9A, 0x8C, 0xAB, 0x7A, 0x5F, 0x2E, 0x57, 0x62, + 0x21, 0xA6, 0xA8, 0x5E, 0x5F, 0xDD, 0xEE, 0x75, + 0x67, 0x8E, 0x06, 0x53, 0x24, 0xA6, 0x1D, 0xB0, + 0x3A, 0x39, 0x26, 0x1D, 0xDF, 0x75, 0xE3, 0xF4 + }, + { + 0x05, 0xC2, 0xB2, 0x6B, 0x03, 0xCE, 0x6C, 0xA5, + 0x87, 0x1B, 0xE0, 0xDE, 0x84, 0xEE, 0x27, 0x86, + 0xA7, 0x9B, 0xCD, 0x9F, 0x30, 0x03, 0x3E, 0x81, + 0x9B, 0x4A, 0x87, 0xCC, 0xA2, 0x7A, 0xFC, 0x6A + }, + { + 0xB0, 0xB0, 0x99, 0x3C, 0x6D, 0x0C, 0x6E, 0xD5, + 0xC3, 0x59, 0x04, 0x80, 0xF8, 0x65, 0xF4, 0x67, + 0xF4, 0x33, 0x1A, 0x58, 0xDD, 0x8E, 0x47, 0xBD, + 0x98, 0xEB, 0xBC, 0xDB, 0x8E, 0xB4, 0xF9, 0x4D + }, + { + 0xE5, 0x7C, 0x10, 0x3C, 0xF7, 0xB6, 0xBB, 0xEB, + 0x8A, 0x0D, 0xC8, 0xF0, 0x48, 0x62, 0x5C, 0x3F, + 0x4C, 0xE4, 0xF1, 0xA5, 0xAD, 0x4D, 0x07, 0x9C, + 0x11, 0x87, 0xBF, 0xE9, 0xEE, 0x3B, 0x8A, 0x5F + }, + { + 0xF1, 0x00, 0x23, 0xE1, 0x5F, 0x3B, 0x72, 0xB7, + 0x38, 0xAD, 0x61, 0xAE, 0x65, 0xAB, 0x9A, 0x07, + 0xE7, 0x77, 0x4E, 0x2D, 0x7A, 0xB0, 0x2D, 0xBA, + 0x4E, 0x0C, 0xAF, 0x56, 0x02, 0xC8, 0x01, 0x78 + }, + { + 0x9A, 0x8F, 0xB3, 0xB5, 0x38, 0xC1, 0xD6, 0xC4, + 0x50, 0x51, 0xFA, 0x9E, 0xD9, 0xB0, 0x7D, 0x3E, + 0x89, 0xB4, 0x43, 0x03, 0x30, 0x01, 0x4A, 0x1E, + 0xFA, 0x28, 0x23, 0xC0, 0x82, 0x3C, 0xF2, 0x37 + }, + { + 0x30, 0x75, 0xC5, 0xBC, 0x7C, 0x3A, 0xD7, 0xE3, + 0x92, 0x01, 0x01, 0xBC, 0x68, 0x99, 0xC5, 0x8E, + 0xA7, 0x01, 0x67, 0xA7, 0x77, 0x2C, 0xA2, 0x8E, + 0x38, 0xE2, 0xC1, 0xB0, 0xD3, 0x25, 0xE5, 0xA0 + }, + { + 0xE8, 0x55, 0x94, 0x70, 0x0E, 0x39, 0x22, 0xA1, + 0xE8, 0xE4, 0x1E, 0xB8, 0xB0, 0x64, 0xE7, 0xAC, + 0x6D, 0x94, 0x9D, 0x13, 0xB5, 0xA3, 0x45, 0x23, + 0xE5, 0xA6, 0xBE, 0xAC, 0x03, 0xC8, 0xAB, 0x29 + }, + { + 0x1D, 0x37, 0x01, 0xA5, 0x66, 0x1B, 0xD3, 0x1A, + 0xB2, 0x05, 0x62, 0xBD, 0x07, 0xB7, 0x4D, 0xD1, + 0x9A, 0xC8, 0xF3, 0x52, 0x4B, 0x73, 0xCE, 0x7B, + 0xC9, 0x96, 0xB7, 0x88, 0xAF, 0xD2, 0xF3, 0x17 + }, + { + 0x87, 0x4E, 0x19, 0x38, 0x03, 0x3D, 0x7D, 0x38, + 0x35, 0x97, 0xA2, 0xA6, 0x5F, 0x58, 0xB5, 0x54, + 0xE4, 0x11, 0x06, 0xF6, 0xD1, 0xD5, 0x0E, 0x9B, + 0xA0, 0xEB, 0x68, 0x5F, 0x6B, 0x6D, 0xA0, 0x71 + }, + { + 0x93, 0xF2, 0xF3, 0xD6, 0x9B, 0x2D, 0x36, 0x52, + 0x95, 0x56, 0xEC, 0xCA, 0xF9, 0xF9, 0x9A, 0xDB, + 0xE8, 0x95, 0xE1, 0x57, 0x22, 0x31, 0xE6, 0x49, + 0xB5, 0x05, 0x84, 0xB5, 0xD7, 0xD0, 0x8A, 0xF8 + }, + { + 0x06, 0xE0, 0x6D, 0x61, 0x0F, 0x2E, 0xEB, 0xBA, + 0x36, 0x76, 0x82, 0x3E, 0x77, 0x44, 0xD7, 0x51, + 0xAF, 0xF7, 0x30, 0x76, 0xED, 0x65, 0xF3, 0xCF, + 0xF5, 0xE7, 0x2F, 0xD2, 0x27, 0x99, 0x9C, 0x77 + }, + { + 0x8D, 0xF7, 0x57, 0xB3, 0xA1, 0xE0, 0xF4, 0x80, + 0xFA, 0x76, 0xC7, 0xF3, 0x58, 0xED, 0x03, 0x98, + 0xBE, 0x3F, 0x2A, 0x8F, 0x7B, 0x90, 0xEA, 0x8C, + 0x80, 0x75, 0x99, 0xDE, 0xDA, 0x1D, 0x05, 0x34 + }, + { + 0xEE, 0xC9, 0xC5, 0xC6, 0x3C, 0xC5, 0x16, 0x9D, + 0x96, 0x7B, 0xB1, 0x62, 0x4E, 0x9E, 0xE5, 0xCE, + 0xD9, 0x28, 0x97, 0x73, 0x6E, 0xFB, 0xD1, 0x57, + 0x54, 0x8D, 0x82, 0xE8, 0x7C, 0xC7, 0x2F, 0x25 + }, + { + 0xCC, 0x2B, 0x58, 0x32, 0xAD, 0x27, 0x2C, 0xC5, + 0x5C, 0x10, 0xD4, 0xF8, 0xC7, 0xF8, 0xBB, 0x38, + 0xE6, 0xE4, 0xEB, 0x92, 0x2F, 0x93, 0x86, 0x83, + 0x0F, 0x90, 0xB1, 0xE3, 0xDA, 0x39, 0x37, 0xD5 + }, + { + 0x36, 0x89, 0x85, 0xD5, 0x38, 0x7C, 0x0B, 0xFC, + 0x92, 0x8A, 0xC2, 0x54, 0xFA, 0x6D, 0x16, 0x67, + 0x3E, 0x70, 0x94, 0x75, 0x66, 0x96, 0x1B, 0x5F, + 0xB3, 0x32, 0x5A, 0x58, 0x8A, 0xB3, 0x17, 0x3A + }, + { + 0xF1, 0xE4, 0x42, 0xAF, 0xB8, 0x72, 0x15, 0x1F, + 0x81, 0x34, 0x95, 0x6C, 0x54, 0x8A, 0xE3, 0x24, + 0x0D, 0x07, 0xE6, 0xE3, 0x38, 0xD4, 0xA7, 0xA6, + 0xAF, 0x8D, 0xA4, 0x11, 0x9A, 0xB0, 0xE2, 0xB0 + }, + { + 0xB0, 0x12, 0xC7, 0x54, 0x6A, 0x39, 0xC4, 0x0C, + 0xAD, 0xEC, 0xE4, 0xE0, 0x4E, 0x7F, 0x33, 0xC5, + 0x93, 0xAD, 0x18, 0x2E, 0xBC, 0x5A, 0x46, 0xD2, + 0xDB, 0xF4, 0xAD, 0x1A, 0x92, 0xF5, 0x9E, 0x7B + }, + { + 0x6C, 0x60, 0x97, 0xCD, 0x20, 0x33, 0x09, 0x6B, + 0x4D, 0xF3, 0x17, 0xDE, 0x8A, 0x90, 0x8B, 0x7D, + 0x0C, 0x72, 0x94, 0x39, 0x0C, 0x5A, 0x39, 0x9C, + 0x30, 0x1B, 0xF2, 0xA2, 0x65, 0x2E, 0x82, 0x62 + }, + { + 0xBA, 0x83, 0xFE, 0xB5, 0x10, 0xB4, 0x9A, 0xDE, + 0x4F, 0xAE, 0xFB, 0xE9, 0x42, 0x78, 0x1E, 0xAF, + 0xD4, 0x1A, 0xD5, 0xD4, 0x36, 0x88, 0x85, 0x31, + 0xB6, 0x88, 0x59, 0xF2, 0x2C, 0x2D, 0x16, 0x4A + }, + { + 0x5A, 0x06, 0x9E, 0x43, 0x92, 0x19, 0x5A, 0xC9, + 0xD2, 0x84, 0xA4, 0x7F, 0x3B, 0xD8, 0x54, 0xAF, + 0x8F, 0xD0, 0xD7, 0xFD, 0xC3, 0x48, 0x3D, 0x2C, + 0x5F, 0x34, 0x24, 0xCC, 0xFD, 0xA1, 0x5C, 0x8E + }, + { + 0x7E, 0x88, 0xD6, 0x4B, 0xBB, 0xE2, 0x02, 0x4F, + 0x44, 0x54, 0xBA, 0x13, 0x98, 0xB3, 0xD8, 0x65, + 0x2D, 0xCE, 0xC8, 0x20, 0xB1, 0x4C, 0x3B, 0x0A, + 0xBF, 0xBF, 0x0F, 0x4F, 0x33, 0x06, 0xBB, 0x5E + }, + { + 0xF8, 0x74, 0x2F, 0xF4, 0x6D, 0xFD, 0xF3, 0xEC, + 0x82, 0x64, 0xF9, 0x94, 0x5B, 0x20, 0x41, 0x94, + 0x62, 0xF0, 0x69, 0xE8, 0x33, 0xC5, 0x94, 0xEC, + 0x80, 0xFF, 0xAC, 0x5E, 0x7E, 0x51, 0x34, 0xF9 + }, + { + 0xD3, 0xE0, 0xB7, 0x38, 0xD2, 0xE9, 0x2F, 0x3C, + 0x47, 0xC7, 0x94, 0x66, 0x66, 0x09, 0xC0, 0xF5, + 0x50, 0x4F, 0x67, 0xEC, 0x4E, 0x76, 0x0E, 0xEE, + 0xCC, 0xF8, 0x64, 0x4E, 0x68, 0x33, 0x34, 0x11 + }, + { + 0x0C, 0x90, 0xCE, 0x10, 0xED, 0xF0, 0xCE, 0x1D, + 0x47, 0xEE, 0xB5, 0x0B, 0x5B, 0x7A, 0xFF, 0x8E, + 0xE8, 0xA4, 0x3B, 0x64, 0xA8, 0x89, 0xC1, 0xC6, + 0xC6, 0xB8, 0xE3, 0x1A, 0x3C, 0xFC, 0x45, 0xEE + }, + { + 0x83, 0x91, 0x7A, 0xC1, 0xCD, 0xAD, 0xE8, 0xF0, + 0xE3, 0xBF, 0x42, 0x6F, 0xEA, 0xC1, 0x38, 0x8B, + 0x3F, 0xCB, 0xE3, 0xE1, 0xBF, 0x98, 0x79, 0x8C, + 0x81, 0x58, 0xBF, 0x75, 0x8E, 0x8D, 0x5D, 0x4E + }, + { + 0xDC, 0x8E, 0xB0, 0xC0, 0x13, 0xFA, 0x9D, 0x06, + 0x4E, 0xE3, 0x76, 0x23, 0x36, 0x9F, 0xB3, 0x94, + 0xAF, 0x97, 0x4B, 0x1A, 0xAC, 0x82, 0x40, 0x5B, + 0x88, 0x97, 0x6C, 0xD8, 0xFC, 0xA1, 0x25, 0x30 + }, + { + 0x9A, 0xF4, 0xFC, 0x92, 0xEA, 0x8D, 0x6B, 0x5F, + 0xE7, 0x99, 0x0E, 0x3A, 0x02, 0x70, 0x1E, 0xC2, + 0x2B, 0x2D, 0xFD, 0x71, 0x00, 0xB9, 0x0D, 0x05, + 0x51, 0x86, 0x94, 0x17, 0x95, 0x5E, 0x44, 0xC8 + }, + { + 0xC7, 0x22, 0xCE, 0xC1, 0x31, 0xBA, 0xA1, 0x63, + 0xF4, 0x7E, 0x4B, 0x33, 0x9E, 0x1F, 0xB9, 0xB4, + 0xAC, 0xA2, 0x48, 0xC4, 0x75, 0x93, 0x45, 0xEA, + 0xDB, 0xD6, 0xC6, 0xA7, 0xDD, 0xB5, 0x04, 0x77 + }, + { + 0x18, 0x37, 0xB1, 0x20, 0xD4, 0xE4, 0x04, 0x6C, + 0x6D, 0xE8, 0xCC, 0xAF, 0x09, 0xF1, 0xCA, 0xF3, + 0x02, 0xAD, 0x56, 0x23, 0x4E, 0x6B, 0x42, 0x2C, + 0xE9, 0x0A, 0x61, 0xBF, 0x06, 0xAE, 0xE4, 0x3D + }, + { + 0x87, 0xAC, 0x9D, 0x0F, 0x8A, 0x0B, 0x11, 0xBF, + 0xED, 0xD6, 0x99, 0x1A, 0x6D, 0xAF, 0x34, 0xC8, + 0xAA, 0x5D, 0x7E, 0x8A, 0xE1, 0xB9, 0xDF, 0x4A, + 0xF7, 0x38, 0x00, 0x5F, 0xE7, 0x8C, 0xE9, 0x3C + }, + { + 0xE2, 0x1F, 0xB6, 0x68, 0xEB, 0xB8, 0xBF, 0x2D, + 0x82, 0x08, 0x6D, 0xED, 0xCB, 0x3A, 0x53, 0x71, + 0xC2, 0xC4, 0x6F, 0xA1, 0xAC, 0x11, 0xD2, 0xE2, + 0xC5, 0x66, 0xD1, 0x4A, 0xD3, 0xC3, 0x65, 0x3F + }, + { + 0x5A, 0x9A, 0x69, 0x81, 0x5E, 0x4D, 0x3E, 0xB7, + 0x72, 0xED, 0x90, 0x8F, 0xE6, 0x58, 0xCE, 0x50, + 0x87, 0x31, 0x0E, 0xC1, 0xD5, 0x0C, 0xB9, 0x4F, + 0x56, 0x28, 0x33, 0x9A, 0x61, 0xDC, 0xD9, 0xEE + }, + { + 0xAA, 0xC2, 0x85, 0xF1, 0x20, 0x8F, 0x70, 0xA6, + 0x47, 0x97, 0xD0, 0xA9, 0x40, 0x0D, 0xA6, 0x46, + 0x53, 0x30, 0x18, 0x38, 0xFE, 0xF6, 0x69, 0x0B, + 0x87, 0xCD, 0xA9, 0x15, 0x9E, 0xE0, 0x7E, 0xF4 + }, + { + 0x05, 0x64, 0x3C, 0x1C, 0x6F, 0x26, 0x59, 0x25, + 0xA6, 0x50, 0x93, 0xF9, 0xDE, 0x8A, 0x19, 0x1C, + 0x4F, 0x6F, 0xD1, 0x41, 0x8F, 0xBF, 0x66, 0xBE, + 0x80, 0x59, 0xA9, 0x1B, 0xA8, 0xDC, 0xDA, 0x61 + }, + { + 0x1C, 0x6C, 0xDE, 0x5B, 0x78, 0x10, 0x3C, 0x9E, + 0x6F, 0x04, 0x6D, 0xFE, 0x30, 0xF5, 0x12, 0x1C, + 0xF9, 0xD4, 0x03, 0x9E, 0xFE, 0x22, 0x25, 0x40, + 0xA4, 0x1B, 0xBC, 0x06, 0xE4, 0x69, 0xFE, 0xB6 + }, + { + 0xB4, 0x9B, 0xB4, 0x6D, 0x1B, 0x19, 0x3B, 0x04, + 0x5E, 0x74, 0x12, 0x05, 0x9F, 0xE7, 0x2D, 0x55, + 0x25, 0x52, 0xA8, 0xFB, 0x6C, 0x36, 0x41, 0x07, + 0x23, 0xDC, 0x7D, 0x05, 0xFC, 0xCE, 0xDE, 0xD3 + }, + { + 0xB6, 0x12, 0xD3, 0xD2, 0x1F, 0xC4, 0xDE, 0x3C, + 0x79, 0x1A, 0xF7, 0x35, 0xE5, 0x9F, 0xB7, 0x17, + 0xD8, 0x39, 0x72, 0x3B, 0x42, 0x50, 0x8E, 0x9E, + 0xBF, 0x78, 0x06, 0xD9, 0x3E, 0x9C, 0x83, 0x7F + }, + { + 0x7C, 0x33, 0x90, 0xA3, 0xE5, 0xCB, 0x27, 0xD1, + 0x86, 0x8B, 0xA4, 0x55, 0xCF, 0xEB, 0x32, 0x22, + 0xFD, 0xE2, 0x7B, 0xCD, 0xA4, 0xBF, 0x24, 0x8E, + 0x3D, 0x29, 0xCF, 0x1F, 0x34, 0x32, 0x9F, 0x25 + }, + { + 0xBD, 0x42, 0xEE, 0xA7, 0xB3, 0x54, 0x86, 0xCD, + 0xD0, 0x90, 0x7C, 0xB4, 0x71, 0x2E, 0xDE, 0x2F, + 0x4D, 0xEE, 0xCC, 0xBC, 0xA1, 0x91, 0x60, 0x38, + 0x65, 0xA1, 0xCC, 0x80, 0x9F, 0x12, 0xB4, 0x46 + }, + { + 0xD1, 0xDD, 0x62, 0x01, 0x74, 0x0C, 0xFA, 0xAD, + 0x53, 0xCE, 0xCC, 0xB7, 0x56, 0xB1, 0x10, 0xF3, + 0xD5, 0x0F, 0x81, 0x7B, 0x43, 0xD7, 0x55, 0x95, + 0x57, 0xE5, 0x7A, 0xAD, 0x14, 0x3A, 0x85, 0xD9 + }, + { + 0x58, 0x29, 0x64, 0x3C, 0x1B, 0x10, 0xE1, 0xC8, + 0xCC, 0xF2, 0x0C, 0x9B, 0x4A, 0xF8, 0x21, 0xEA, + 0x05, 0x2D, 0x7F, 0x0F, 0x7C, 0x22, 0xF7, 0x38, + 0x0B, 0xBB, 0xCF, 0xAF, 0xB9, 0x77, 0xE2, 0x1F + }, + { + 0xFC, 0x4C, 0xF2, 0xA7, 0xFB, 0xE0, 0xB1, 0xE8, + 0xAE, 0xFB, 0xE4, 0xB4, 0xB7, 0x9E, 0xD8, 0x4E, + 0xC9, 0x7B, 0x03, 0x4F, 0x51, 0xB4, 0xE9, 0x7F, + 0x76, 0x0B, 0x20, 0x63, 0x97, 0x65, 0xB9, 0x33 + }, + { + 0x4D, 0x7C, 0x3B, 0x34, 0x38, 0xA0, 0xBD, 0xA2, + 0x8E, 0x7A, 0x96, 0xE4, 0x20, 0x27, 0xD8, 0x13, + 0xE8, 0x8A, 0xE6, 0x28, 0x85, 0x49, 0x98, 0x33, + 0xD3, 0xC5, 0xF6, 0x35, 0x9E, 0xF7, 0xED, 0xBC + }, + { + 0x34, 0xCB, 0xD3, 0x20, 0x68, 0xEF, 0x7E, 0x82, + 0x09, 0x9E, 0x58, 0x0B, 0xF9, 0xE2, 0x64, 0x23, + 0xE9, 0x81, 0xE3, 0x1B, 0x1B, 0xBC, 0xE6, 0x1A, + 0xEA, 0xB1, 0x4C, 0x32, 0xA2, 0x73, 0xE4, 0xCB + }, + { + 0xA0, 0x5D, 0xDA, 0x7D, 0x0D, 0xA9, 0xE0, 0x94, + 0xAE, 0x22, 0x53, 0x3F, 0x79, 0xE7, 0xDC, 0xCD, + 0x26, 0xB1, 0x75, 0x7C, 0xEF, 0xB9, 0x5B, 0xCF, + 0x62, 0xC4, 0xFF, 0x9C, 0x26, 0x92, 0xE1, 0xC0 + }, + { + 0x22, 0x4C, 0xCF, 0xFA, 0x7C, 0xCA, 0x4C, 0xE3, + 0x4A, 0xFD, 0x47, 0xF6, 0x2A, 0xDE, 0x53, 0xC5, + 0xE8, 0x48, 0x9B, 0x04, 0xAC, 0x9C, 0x41, 0xF7, + 0xFA, 0xD0, 0xC8, 0xED, 0xEB, 0x89, 0xE9, 0x41 + }, + { + 0x6B, 0xC6, 0x07, 0x64, 0x83, 0xAA, 0x11, 0xC0, + 0x7F, 0xBA, 0x55, 0xC0, 0xF9, 0xA1, 0xB5, 0xDA, + 0x87, 0xEC, 0xBF, 0xFE, 0xA7, 0x55, 0x98, 0xCC, + 0x31, 0x8A, 0x51, 0x4C, 0xEC, 0x7B, 0x3B, 0x6A + }, + { + 0x9A, 0x03, 0x60, 0xE2, 0x3A, 0x22, 0xF4, 0xF7, + 0x6C, 0x0E, 0x95, 0x28, 0xDA, 0xFD, 0x12, 0x9B, + 0xB4, 0x67, 0x5F, 0xB8, 0x8D, 0x44, 0xEA, 0xF8, + 0x57, 0x77, 0x30, 0x0C, 0xEC, 0x9B, 0xCC, 0x79 + }, + { + 0x79, 0x01, 0x99, 0xB4, 0xCA, 0x90, 0xDE, 0xDC, + 0xCF, 0xE3, 0x24, 0x74, 0xE8, 0x5B, 0x17, 0x4F, + 0x06, 0x9E, 0x35, 0x42, 0xBE, 0x31, 0x04, 0xC1, + 0x12, 0x5C, 0x2F, 0xDB, 0xD6, 0x9D, 0x32, 0xC7 + }, + { + 0x55, 0x83, 0x99, 0x25, 0x83, 0x4C, 0xA3, 0xE8, + 0x25, 0xE9, 0x92, 0x41, 0x87, 0x4D, 0x16, 0xD6, + 0xC2, 0x62, 0x36, 0x29, 0xC4, 0xC2, 0xAD, 0xDD, + 0xF0, 0xDB, 0xA0, 0x1E, 0x6C, 0xE8, 0xA0, 0xDC + }, + { + 0x61, 0x5F, 0xF8, 0x46, 0xD9, 0x93, 0x00, 0x7D, + 0x38, 0xDE, 0x1A, 0xEC, 0xB3, 0x17, 0x82, 0x89, + 0xDE, 0xD0, 0x9E, 0x6B, 0xB5, 0xCB, 0xD6, 0x0F, + 0x69, 0xC6, 0xAA, 0x36, 0x38, 0x30, 0x20, 0xF7 + }, + { + 0xF0, 0xE4, 0x0B, 0x4E, 0xD4, 0x0D, 0x34, 0x85, + 0x1E, 0x72, 0xB4, 0xEE, 0x4D, 0x00, 0xEA, 0x6A, + 0x40, 0xEA, 0x1C, 0x1B, 0xF9, 0xE5, 0xC2, 0x69, + 0x71, 0x0C, 0x9D, 0x51, 0xCB, 0xB8, 0xA3, 0xC9 + }, + { + 0x0B, 0x07, 0xB2, 0x33, 0x3B, 0x08, 0xD0, 0x8C, + 0x11, 0xCA, 0x34, 0xAB, 0x44, 0x9B, 0x71, 0xD2, + 0x9A, 0x0F, 0x43, 0xE1, 0xF7, 0x78, 0xE0, 0x73, + 0xE7, 0x90, 0x06, 0xCC, 0xB7, 0x30, 0xED, 0x62 + }, + { + 0xD1, 0xF4, 0xC2, 0x9D, 0x9F, 0x23, 0xEA, 0x35, + 0xEC, 0x40, 0x35, 0xB3, 0x77, 0xD5, 0x06, 0x53, + 0x8E, 0x72, 0x8B, 0xC7, 0x39, 0xC1, 0x45, 0x96, + 0x80, 0xCF, 0x1C, 0xC6, 0x94, 0x24, 0x92, 0x4D + }, + { + 0x12, 0x79, 0xCF, 0x6F, 0x66, 0x9F, 0x92, 0xF6, + 0xBF, 0xC2, 0x5D, 0x60, 0x5B, 0x94, 0x40, 0xC7, + 0xDC, 0xCB, 0xD2, 0x5D, 0xF2, 0x8D, 0xC7, 0x35, + 0x3A, 0xBC, 0x1C, 0x05, 0x30, 0x40, 0x5D, 0xC4 + }, + { + 0x1F, 0xA0, 0xAF, 0x00, 0x77, 0x5D, 0xC2, 0xCE, + 0x76, 0x50, 0x6D, 0x32, 0x80, 0xF4, 0x72, 0xD2, + 0xF6, 0xFF, 0x97, 0xA2, 0x15, 0x1F, 0xAA, 0x82, + 0x79, 0x42, 0xFE, 0xA4, 0x4A, 0xD0, 0xBA, 0x1F + }, + { + 0x3E, 0x1A, 0xD5, 0x4A, 0x5F, 0x83, 0x5B, 0x98, + 0x3B, 0xD2, 0xAA, 0xB0, 0xED, 0x2A, 0x4C, 0x0B, + 0xDD, 0x72, 0x16, 0x20, 0x9C, 0x36, 0xA7, 0x9E, + 0x9E, 0x2A, 0xAB, 0xB9, 0x9F, 0xAF, 0x35, 0x12 + }, + { + 0xC6, 0xED, 0x39, 0xE2, 0xD8, 0xB6, 0x36, 0xEC, + 0xCB, 0xA2, 0x45, 0xEF, 0x4E, 0x88, 0x64, 0xF4, + 0xCD, 0x94, 0x6B, 0xE2, 0x16, 0xB9, 0xBE, 0x48, + 0x30, 0x3E, 0x08, 0xB9, 0x2D, 0xD0, 0x94, 0x34 + }, + { + 0xE2, 0x47, 0x36, 0xC1, 0x3E, 0xCB, 0x9F, 0x36, + 0xA0, 0xD8, 0x29, 0xD4, 0x79, 0x8D, 0x76, 0x99, + 0xC1, 0x4C, 0xC6, 0x5B, 0x6D, 0xC4, 0x4E, 0xD6, + 0xF1, 0x0C, 0xD4, 0x85, 0x3D, 0x6E, 0x07, 0x57 + }, + { + 0x38, 0x9B, 0xE8, 0x80, 0x52, 0xA3, 0x81, 0x27, + 0x2C, 0x6D, 0xF7, 0x41, 0xA8, 0x8A, 0xD3, 0x49, + 0xB7, 0x12, 0x71, 0x84, 0x35, 0x48, 0x0A, 0x81, + 0x90, 0xB7, 0x04, 0x77, 0x1D, 0x2D, 0xE6, 0x37 + }, + { + 0x88, 0x9F, 0x2D, 0x57, 0x8A, 0x5D, 0xAE, 0xFD, + 0x34, 0x1C, 0x21, 0x09, 0x84, 0xE1, 0x26, 0xD1, + 0xD9, 0x6D, 0xA2, 0xDE, 0xE3, 0xC8, 0x1F, 0x7A, + 0x60, 0x80, 0xBF, 0x84, 0x56, 0x9B, 0x31, 0x14 + }, + { + 0xE9, 0x36, 0x09, 0x5B, 0x9B, 0x98, 0x2F, 0xFC, + 0x85, 0x6D, 0x2F, 0x52, 0x76, 0xA4, 0xE5, 0x29, + 0xEC, 0x73, 0x95, 0xDA, 0x31, 0x6D, 0x62, 0x87, + 0x02, 0xFB, 0x28, 0x1A, 0xDA, 0x6F, 0x38, 0x99 + }, + { + 0xEF, 0x89, 0xCE, 0x1D, 0x6F, 0x8B, 0x48, 0xEA, + 0x5C, 0xD6, 0xAE, 0xAB, 0x6A, 0x83, 0xD0, 0xCC, + 0x98, 0xC9, 0xA3, 0xA2, 0x07, 0xA1, 0x08, 0x57, + 0x32, 0xF0, 0x47, 0xD9, 0x40, 0x38, 0xC2, 0x88 + }, + { + 0xF9, 0x25, 0x01, 0x6D, 0x79, 0xF2, 0xAC, 0xA8, + 0xC4, 0x9E, 0xDF, 0xCD, 0x66, 0x21, 0xD5, 0xBE, + 0x3C, 0x8C, 0xEC, 0x61, 0xBD, 0x58, 0x71, 0xD8, + 0xC1, 0xD3, 0xA5, 0x65, 0xF3, 0x5E, 0x0C, 0x9F + }, + { + 0x63, 0xE8, 0x63, 0x4B, 0x75, 0x7A, 0x38, 0xF9, + 0x2B, 0x92, 0xFD, 0x23, 0x89, 0x3B, 0xA2, 0x99, + 0x85, 0x3A, 0x86, 0x13, 0x67, 0x9F, 0xDF, 0x7E, + 0x05, 0x11, 0x09, 0x5C, 0x0F, 0x04, 0x7B, 0xCA + }, + { + 0xCF, 0x2C, 0xCA, 0x07, 0x72, 0xB7, 0x05, 0xEB, + 0x57, 0xD2, 0x89, 0x43, 0xF8, 0x3D, 0x35, 0x3F, + 0xE2, 0x91, 0xE5, 0xB3, 0x77, 0x78, 0x0B, 0x37, + 0x4C, 0x8B, 0xA4, 0x66, 0x58, 0x30, 0xBE, 0x87 + }, + { + 0x46, 0xDF, 0x5B, 0x87, 0xC8, 0x0E, 0x7E, 0x40, + 0x74, 0xAE, 0xE6, 0x85, 0x59, 0x42, 0x47, 0x42, + 0x84, 0x5B, 0x9B, 0x35, 0x0F, 0x51, 0xBA, 0x55, + 0xB0, 0x74, 0xBB, 0xAE, 0x4C, 0x62, 0x6A, 0xAB + }, + { + 0x65, 0x8A, 0xA4, 0xF9, 0xD2, 0xBC, 0xBD, 0x4F, + 0x7F, 0x8E, 0xB6, 0x3E, 0x68, 0xF5, 0x36, 0x7E, + 0xDB, 0xC5, 0x00, 0xA0, 0xB1, 0xFB, 0xB4, 0x1E, + 0x9D, 0xF1, 0x41, 0xBC, 0xBA, 0x8F, 0xCD, 0x53 + }, + { + 0xEE, 0x80, 0x55, 0x50, 0x08, 0xA7, 0x16, 0x55, + 0xE0, 0x81, 0x09, 0x2B, 0xBA, 0x6F, 0x67, 0x0E, + 0xD9, 0x8A, 0xF9, 0xA0, 0x9F, 0xB5, 0xAF, 0xB9, + 0x4C, 0xBC, 0x5C, 0x75, 0x48, 0x14, 0xDB, 0x4F + }, + { + 0x2C, 0x5F, 0x9D, 0x04, 0x82, 0x20, 0xB0, 0x41, + 0xB6, 0xD4, 0x52, 0x4B, 0x44, 0x90, 0xCF, 0x8C, + 0x66, 0xFC, 0xB8, 0xE1, 0x4B, 0x0D, 0x64, 0x88, + 0x7A, 0xA1, 0xE4, 0x76, 0x1A, 0x60, 0x2B, 0x39 + }, + { + 0x44, 0xCB, 0x63, 0x11, 0xD0, 0x75, 0x0B, 0x7E, + 0x33, 0xF7, 0x33, 0x3A, 0xA7, 0x8A, 0xAC, 0xA9, + 0xC3, 0x4A, 0xD5, 0xF7, 0x9C, 0x1B, 0x15, 0x91, + 0xEC, 0x33, 0x95, 0x1E, 0x69, 0xC4, 0xC4, 0x61 + }, + { + 0x0C, 0x6C, 0xE3, 0x2A, 0x3E, 0xA0, 0x56, 0x12, + 0xC5, 0xF8, 0x09, 0x0F, 0x6A, 0x7E, 0x87, 0xF5, + 0xAB, 0x30, 0xE4, 0x1B, 0x70, 0x7D, 0xCB, 0xE5, + 0x41, 0x55, 0x62, 0x0A, 0xD7, 0x70, 0xA3, 0x40 + }, + { + 0xC6, 0x59, 0x38, 0xDD, 0x3A, 0x05, 0x3C, 0x72, + 0x9C, 0xF5, 0xB7, 0xC8, 0x9F, 0x39, 0x0B, 0xFE, + 0xBB, 0x51, 0x12, 0x76, 0x6B, 0xB0, 0x0A, 0xA5, + 0xFA, 0x31, 0x64, 0xDF, 0xDF, 0x3B, 0x56, 0x47 + }, + { + 0x7D, 0xE7, 0xF0, 0xD5, 0x9A, 0x90, 0x39, 0xAF, + 0xF3, 0xAA, 0xF3, 0x2C, 0x3E, 0xE5, 0x2E, 0x79, + 0x17, 0x53, 0x57, 0x29, 0x06, 0x21, 0x68, 0xD2, + 0x49, 0x0B, 0x6B, 0x6C, 0xE2, 0x44, 0xB3, 0x80 + }, + { + 0x89, 0x58, 0x98, 0xF5, 0x3A, 0x8F, 0x39, 0xE4, + 0x24, 0x10, 0xDA, 0x77, 0xB6, 0xC4, 0x81, 0x5B, + 0x0B, 0xB2, 0x39, 0x5E, 0x39, 0x22, 0xF5, 0xBE, + 0xD0, 0xE1, 0xFB, 0xF2, 0xA4, 0xC6, 0xDF, 0xEB + }, + { + 0xC9, 0x05, 0xA8, 0x49, 0x84, 0x34, 0x8A, 0x64, + 0xDB, 0x1F, 0x54, 0x20, 0x83, 0x74, 0x8A, 0xD9, + 0x0A, 0x4B, 0xAD, 0x98, 0x33, 0xCB, 0x6D, 0xA3, + 0x87, 0x29, 0x34, 0x31, 0xF1, 0x9E, 0x7C, 0x9C + }, + { + 0xED, 0x37, 0xD1, 0xA4, 0xD0, 0x6C, 0x90, 0xD1, + 0x95, 0x78, 0x48, 0x66, 0x7E, 0x95, 0x48, 0xFE, + 0xBB, 0x5D, 0x42, 0x3E, 0xAB, 0x4F, 0x56, 0x78, + 0x5C, 0xC4, 0xB5, 0x41, 0x6B, 0x78, 0x00, 0x08 + }, + { + 0x0B, 0xC6, 0x5D, 0x99, 0x97, 0xFB, 0x73, 0x4A, + 0x56, 0x1F, 0xB1, 0xE9, 0xF8, 0xC0, 0x95, 0x8A, + 0x02, 0xC7, 0xA4, 0xDB, 0xD0, 0x96, 0xEB, 0xEF, + 0x1A, 0x17, 0x51, 0xAE, 0xD9, 0x59, 0xEE, 0xD7 + }, + { + 0x7C, 0x5F, 0x43, 0x2E, 0xB8, 0xB7, 0x35, 0x2A, + 0x94, 0x94, 0xDE, 0xA4, 0xD5, 0x3C, 0x21, 0x38, + 0x70, 0x31, 0xCE, 0x70, 0xE8, 0x5D, 0x94, 0x08, + 0xFC, 0x6F, 0x8C, 0xD9, 0x8A, 0x6A, 0xAA, 0x1E + }, + { + 0xB8, 0xBF, 0x8E, 0x2C, 0x34, 0xE0, 0x33, 0x98, + 0x36, 0x39, 0x90, 0x9E, 0xAA, 0x37, 0x64, 0x0D, + 0x87, 0x7B, 0x04, 0x8F, 0xE2, 0x99, 0xB4, 0x70, + 0xAF, 0x2D, 0x0B, 0xA8, 0x2A, 0x5F, 0x14, 0xC0 + }, + { + 0x88, 0xA9, 0xDD, 0x13, 0xD5, 0xDA, 0xDB, 0xDE, + 0xE6, 0xBF, 0xF7, 0xEE, 0x1E, 0xF8, 0xC7, 0x1C, + 0xC1, 0x93, 0xAA, 0x4B, 0xF3, 0xE8, 0x4F, 0x8F, + 0xE8, 0x0C, 0xB0, 0x75, 0x68, 0x3C, 0x07, 0x79 + }, + { + 0x9A, 0xED, 0xB8, 0x87, 0x6D, 0xD2, 0x1C, 0x8C, + 0x84, 0xD2, 0xE7, 0x02, 0xA1, 0x36, 0x25, 0x98, + 0x04, 0x62, 0xF6, 0x8B, 0xF0, 0xA1, 0xB7, 0x25, + 0x4A, 0xD8, 0x06, 0xC3, 0x84, 0x03, 0xC9, 0xDE + }, + { + 0xD0, 0x97, 0x57, 0x3D, 0xF2, 0xD6, 0xB2, 0x48, + 0x9A, 0x47, 0x94, 0x84, 0x86, 0x98, 0x00, 0xA1, + 0xF8, 0x33, 0xEA, 0x16, 0x9E, 0xFF, 0x32, 0xAE, + 0x3C, 0xE6, 0x3A, 0x20, 0x79, 0x54, 0x8D, 0x78 + }, + { + 0xD1, 0x8F, 0x27, 0xA3, 0xE5, 0x55, 0xD7, 0xF9, + 0x1A, 0x00, 0x7C, 0x67, 0xAC, 0xEE, 0xDE, 0x39, + 0x1F, 0x75, 0xA6, 0x1F, 0xA4, 0x2A, 0x0B, 0x45, + 0x66, 0xEB, 0x58, 0x2C, 0xA0, 0x5E, 0xBC, 0xE7 + }, + { + 0xDF, 0x1D, 0xAA, 0x90, 0xB1, 0x70, 0x23, 0x13, + 0xE6, 0xA5, 0x90, 0x1C, 0x7A, 0xFC, 0x5E, 0xD9, + 0x65, 0x77, 0x17, 0xA7, 0x15, 0xFA, 0x53, 0xA4, + 0x18, 0x9E, 0xC1, 0xE5, 0xDF, 0x29, 0x3A, 0x68 + }, + { + 0x04, 0xE3, 0xA4, 0x96, 0xB6, 0x69, 0x96, 0xC6, + 0x6E, 0x32, 0x91, 0x9E, 0xD1, 0xF9, 0x4C, 0x36, + 0xEE, 0xBB, 0xF2, 0x40, 0x63, 0x3A, 0x2F, 0x73, + 0x98, 0x45, 0xF0, 0x29, 0x5D, 0x34, 0xAF, 0xBA + }, + { + 0x8C, 0x45, 0xD8, 0x8C, 0x4E, 0x9C, 0x9D, 0x0C, + 0x8C, 0x67, 0x7F, 0xE4, 0x8F, 0xA5, 0x44, 0x9B, + 0xA3, 0x01, 0x78, 0xD4, 0x0A, 0xF0, 0xF0, 0x21, + 0x79, 0x21, 0xC6, 0x2E, 0x4B, 0x60, 0xCD, 0xD3 + }, + { + 0xE1, 0x49, 0xA6, 0xB1, 0x3B, 0xDE, 0xDE, 0xA2, + 0xEE, 0xEE, 0x00, 0x9C, 0xE9, 0x44, 0x5E, 0x8D, + 0xCF, 0x76, 0xB7, 0x6E, 0x55, 0xA5, 0x01, 0xD8, + 0xF5, 0xB4, 0x3F, 0xF8, 0x96, 0x79, 0x6A, 0xD1 + }, + { + 0xA8, 0x37, 0xC4, 0xC7, 0xC6, 0xF5, 0xCF, 0xB9, + 0x9E, 0x10, 0x85, 0xFD, 0x43, 0x28, 0x7A, 0x41, + 0x05, 0xCB, 0x28, 0xB7, 0x6F, 0xC3, 0x8B, 0x60, + 0x55, 0xC5, 0xDC, 0xFF, 0x78, 0xB8, 0x25, 0x65 + }, + { + 0x42, 0x41, 0x1F, 0x28, 0x78, 0x0B, 0x4F, 0x16, + 0x38, 0x54, 0x0B, 0x87, 0x05, 0x21, 0xEC, 0x45, + 0xBC, 0xEB, 0x1E, 0x0C, 0x71, 0x31, 0xF7, 0xE1, + 0xC4, 0x67, 0x2E, 0x43, 0x6C, 0x88, 0xC8, 0xE9 + }, + { + 0x34, 0xB4, 0xE8, 0x76, 0x76, 0x94, 0x71, 0xDF, + 0x55, 0x2E, 0x55, 0x22, 0xCE, 0xA7, 0x84, 0xFA, + 0x53, 0xAC, 0x61, 0xBE, 0xDE, 0x8C, 0xFE, 0x29, + 0x14, 0x09, 0xE6, 0x8B, 0x69, 0xE8, 0x77, 0x6F + }, + { + 0x8F, 0x31, 0xD6, 0x37, 0xA9, 0x1D, 0xBD, 0x0E, + 0xCB, 0x0B, 0xA0, 0xE6, 0x94, 0xBE, 0xC1, 0x44, + 0x76, 0x58, 0xCE, 0x6C, 0x27, 0xEA, 0x9B, 0x95, + 0xFF, 0x36, 0x70, 0x1C, 0xAF, 0x36, 0xF0, 0x01 + }, + { + 0xB5, 0xC8, 0x95, 0xEB, 0x07, 0x1E, 0x3D, 0x38, + 0x52, 0x8D, 0x47, 0x5D, 0x3B, 0xB0, 0xBA, 0x88, + 0xB7, 0x17, 0x95, 0xE4, 0x0A, 0x98, 0x2E, 0x2A, + 0xC2, 0xD8, 0x44, 0x22, 0xA0, 0xF2, 0x68, 0x5D + }, + { + 0xE9, 0x06, 0x25, 0x7C, 0x41, 0x9D, 0x94, 0x1E, + 0xD2, 0xB8, 0xA9, 0xC1, 0x27, 0x81, 0xDB, 0x97, + 0x59, 0xA3, 0xFC, 0xF3, 0xDC, 0x7C, 0xDB, 0x03, + 0x15, 0x99, 0xE1, 0x08, 0x6B, 0x67, 0x2F, 0x10 + }, + { + 0x98, 0xAD, 0x24, 0x39, 0x7C, 0x6E, 0xAE, 0x4C, + 0xF7, 0x3E, 0xA8, 0xBB, 0xEF, 0x5A, 0x0B, 0x74, + 0xD2, 0x1A, 0xD1, 0x5F, 0x33, 0x92, 0x0F, 0x44, + 0x07, 0x0A, 0x98, 0xBD, 0xF5, 0x3D, 0x0B, 0x3A + }, + { + 0xDD, 0x51, 0x0C, 0xA5, 0x5B, 0x11, 0x70, 0xF9, + 0xCE, 0xFD, 0xBB, 0x16, 0xFC, 0x14, 0x52, 0x62, + 0xAA, 0x36, 0x3A, 0x87, 0x0A, 0x01, 0xE1, 0xBC, + 0x4F, 0xBE, 0x40, 0x23, 0x4B, 0x4B, 0x6F, 0x2F + }, + { + 0xF2, 0xD8, 0xD9, 0x31, 0xB9, 0x2E, 0x1C, 0xB6, + 0x98, 0xE5, 0x6E, 0xD0, 0x28, 0x19, 0xEA, 0x11, + 0xD2, 0x66, 0x19, 0xB8, 0x3A, 0x62, 0x09, 0xAD, + 0x67, 0x22, 0x53, 0x68, 0xFE, 0x11, 0x95, 0x71 + }, + { + 0xE4, 0x63, 0x70, 0x55, 0xDB, 0x91, 0xF9, 0x43, + 0x7C, 0xF4, 0x60, 0xEF, 0x40, 0xB5, 0x14, 0x5F, + 0x69, 0x98, 0x26, 0x6A, 0x5E, 0x74, 0xE9, 0x6A, + 0x00, 0x78, 0x2C, 0x62, 0xCF, 0x30, 0xCF, 0x1C + }, + { + 0x35, 0x63, 0x53, 0x0A, 0x89, 0xD3, 0x2B, 0x75, + 0xF7, 0x8D, 0x83, 0xE9, 0x87, 0x2A, 0xD4, 0xC5, + 0x75, 0xF5, 0x20, 0x39, 0x9D, 0x65, 0x03, 0x5D, + 0xED, 0x99, 0xE5, 0xEE, 0xC5, 0x80, 0x71, 0x50 + }, + { + 0x8E, 0x79, 0xF9, 0x2C, 0x86, 0x5B, 0xEB, 0x3E, + 0x1C, 0xDB, 0xF0, 0x8F, 0x75, 0x4A, 0x26, 0x06, + 0xE8, 0x53, 0x49, 0x05, 0x3D, 0x66, 0xD6, 0x16, + 0x02, 0x4A, 0x81, 0x3F, 0xCA, 0x54, 0x1A, 0x4D + }, + { + 0x86, 0x42, 0x26, 0xF2, 0x83, 0x9C, 0x76, 0xB1, + 0xD5, 0xF7, 0xC1, 0x3D, 0x98, 0xC2, 0xA5, 0x15, + 0x8C, 0x2A, 0xBB, 0x71, 0xD9, 0xD8, 0xF0, 0xFA, + 0x1F, 0x7C, 0x3F, 0x74, 0x68, 0x00, 0x16, 0x03 + }, + { + 0xD3, 0xE3, 0xF5, 0xB8, 0xCE, 0xEB, 0xB1, 0x11, + 0x84, 0x80, 0x35, 0x35, 0x90, 0x0B, 0x6E, 0xED, + 0xDA, 0x60, 0x6E, 0xEB, 0x36, 0x97, 0x51, 0xA7, + 0xCD, 0xA3, 0x6C, 0xA3, 0x02, 0x29, 0xFB, 0x02 + }, + { + 0x8C, 0x7D, 0x6B, 0x98, 0x72, 0x69, 0x16, 0x90, + 0x31, 0xF7, 0x1F, 0xD7, 0xE4, 0xC4, 0x45, 0x01, + 0x2D, 0x3E, 0x6A, 0x3C, 0x88, 0x09, 0xF6, 0x47, + 0x9B, 0xD6, 0x67, 0xCF, 0x31, 0x1E, 0x27, 0x6E + }, + { + 0xB9, 0x04, 0xB5, 0x71, 0x1B, 0xF1, 0x9E, 0x85, + 0x32, 0xF7, 0xAD, 0x64, 0x27, 0x41, 0x0A, 0x62, + 0xA1, 0xF7, 0x7F, 0x77, 0xB9, 0xB6, 0xD7, 0x1D, + 0x2F, 0xC4, 0x3B, 0xC9, 0x0F, 0x73, 0x23, 0x5A + }, + { + 0x45, 0x36, 0x63, 0x43, 0x15, 0xC8, 0x67, 0x28, + 0xF5, 0xAB, 0x74, 0x49, 0xEB, 0x2D, 0x04, 0x02, + 0x0E, 0x9E, 0xAE, 0x8D, 0xD6, 0x79, 0x55, 0x00, + 0xE9, 0xEC, 0x9A, 0x00, 0x66, 0x38, 0x6E, 0x69 + }, + { + 0xFD, 0x5E, 0x49, 0xFE, 0xD4, 0x9D, 0xC4, 0x4B, + 0xDE, 0x89, 0xF4, 0x60, 0xA9, 0x50, 0x19, 0x1E, + 0xBB, 0x06, 0x7C, 0x69, 0x8A, 0x3F, 0x21, 0xEA, + 0x14, 0x30, 0x8C, 0x74, 0x13, 0xB9, 0x16, 0x81 + }, + { + 0x31, 0xF0, 0x1D, 0x03, 0x0B, 0x9B, 0x22, 0xD0, + 0x0A, 0x0F, 0x71, 0xED, 0x2C, 0xEB, 0x5D, 0x2D, + 0xC8, 0x1A, 0xF2, 0xC2, 0x4B, 0xF5, 0x67, 0x0F, + 0xDE, 0x19, 0xA6, 0x85, 0xE8, 0xD1, 0x39, 0x2E + }, + { + 0x5F, 0x84, 0xD9, 0xDE, 0x28, 0x4B, 0x1E, 0x4F, + 0x67, 0x8E, 0x31, 0xAB, 0x6A, 0x76, 0xF5, 0x66, + 0x1B, 0x5A, 0xEA, 0xA7, 0x68, 0x53, 0x93, 0x84, + 0xAA, 0x38, 0xF9, 0xE4, 0x9C, 0xCE, 0x6E, 0x6E + }, + { + 0xB2, 0x07, 0x9E, 0x59, 0x97, 0xA4, 0xEA, 0xD3, + 0xA7, 0x1F, 0xEF, 0xC0, 0x2F, 0x90, 0xA7, 0x48, + 0x3A, 0x10, 0xFD, 0x2E, 0x6F, 0x31, 0xBD, 0xA9, + 0xD2, 0x08, 0x44, 0x85, 0xCC, 0x01, 0x6B, 0xBD + }, + { + 0xE0, 0xF8, 0x4D, 0x7F, 0x52, 0x5B, 0x6F, 0xED, + 0x79, 0x1F, 0x77, 0x28, 0x9A, 0xE5, 0x8F, 0x7D, + 0x50, 0xA2, 0x94, 0x32, 0xD4, 0x2C, 0x25, 0xC1, + 0xE8, 0x39, 0x29, 0xB8, 0x38, 0x89, 0x1D, 0x79 + }, + { + 0x70, 0x46, 0x96, 0x90, 0x95, 0x6D, 0x79, 0x18, + 0xAC, 0xE7, 0xBA, 0x5F, 0x41, 0x30, 0x2D, 0xA1, + 0x38, 0xC9, 0xB5, 0x6E, 0xCD, 0x41, 0x55, 0x44, + 0xFA, 0xCE, 0x8D, 0x99, 0x8C, 0x21, 0xAB, 0xEB + }, + { + 0x45, 0xC9, 0x1A, 0x62, 0x24, 0x9B, 0x39, 0xCD, + 0xA9, 0x4E, 0x50, 0x82, 0x95, 0xBE, 0xC7, 0x66, + 0x71, 0x19, 0x44, 0x77, 0x65, 0xEF, 0x80, 0xEF, + 0xA8, 0x2D, 0x1E, 0x92, 0xD5, 0x70, 0x67, 0xD8 + }, + { + 0x1D, 0x9E, 0x00, 0x73, 0xEE, 0xD0, 0x73, 0x15, + 0x54, 0xC3, 0xBE, 0xAA, 0x47, 0x46, 0x0D, 0x51, + 0x1A, 0xD2, 0x61, 0xDD, 0x4D, 0x4A, 0x3B, 0xED, + 0x9D, 0x8D, 0x20, 0x2F, 0x22, 0xF2, 0x15, 0x89 + }, + { + 0x40, 0x82, 0x62, 0x73, 0x6D, 0x8A, 0xEC, 0x0B, + 0x84, 0x7D, 0xBA, 0x25, 0x02, 0x58, 0x60, 0x8A, + 0x43, 0x45, 0xA6, 0x3A, 0x1E, 0xB1, 0x95, 0xE5, + 0xC7, 0xAE, 0x2E, 0xE8, 0x74, 0xC3, 0x4D, 0xA8 + }, + { + 0x23, 0xD2, 0xB7, 0x04, 0x39, 0x46, 0x99, 0x49, + 0x98, 0x23, 0x90, 0x53, 0x8D, 0x7E, 0x5A, 0xDE, + 0x9F, 0x18, 0xC8, 0xE3, 0xBB, 0xF6, 0x60, 0x5A, + 0xFC, 0xF4, 0x9B, 0x00, 0xC0, 0x61, 0xE8, 0x37 + }, + { + 0x23, 0x2F, 0xB1, 0x87, 0xD2, 0x71, 0xBE, 0xA9, + 0x12, 0xEF, 0xD4, 0x07, 0xFF, 0xE0, 0x80, 0x56, + 0xD6, 0xA4, 0x2E, 0x53, 0x21, 0xEC, 0x79, 0x2D, + 0xF3, 0xD5, 0x84, 0xA9, 0x4F, 0x63, 0x0A, 0xB2 + }, + { + 0x13, 0x8E, 0x19, 0x44, 0xE4, 0xB5, 0x4D, 0xE8, + 0x68, 0x1D, 0x7E, 0x48, 0xC4, 0xF0, 0x81, 0x48, + 0xE4, 0x0A, 0x56, 0x7E, 0x5C, 0xAD, 0x94, 0x6A, + 0x6A, 0xF4, 0xE8, 0xD5, 0xD2, 0x6F, 0x75, 0xC7 + }, + { + 0x80, 0xC1, 0x51, 0x32, 0x5F, 0xBF, 0xC6, 0x78, + 0xB7, 0xBE, 0x4E, 0x40, 0xB3, 0x0F, 0x29, 0xFE, + 0x31, 0xCD, 0xBE, 0x1C, 0x84, 0x12, 0x6E, 0x00, + 0x6D, 0xF3, 0xC1, 0x85, 0x24, 0xBD, 0x2D, 0x6C + }, + { + 0xA6, 0x42, 0x26, 0x73, 0x01, 0x66, 0x9D, 0xF2, + 0x61, 0xB8, 0x39, 0xF8, 0x73, 0x65, 0x76, 0x29, + 0x05, 0xFF, 0x32, 0x0A, 0x0A, 0x2F, 0xC4, 0xBD, + 0xC4, 0x8E, 0x5A, 0x8E, 0x15, 0xD1, 0x32, 0x33 + }, + { + 0x0F, 0x8B, 0x10, 0x99, 0x38, 0x60, 0x93, 0x7A, + 0x74, 0xCC, 0x2D, 0xE4, 0x0A, 0x27, 0x31, 0xDD, + 0x99, 0x54, 0xB6, 0x54, 0xBB, 0x94, 0xC3, 0x4E, + 0x87, 0x66, 0x52, 0xE9, 0x8D, 0x4B, 0xBD, 0x16 + }, + { + 0xE6, 0x34, 0xA5, 0x85, 0x12, 0x49, 0x32, 0x73, + 0x26, 0x0F, 0x10, 0xD4, 0x49, 0x53, 0xCD, 0x99, + 0x8E, 0x34, 0xCB, 0x82, 0x81, 0xC4, 0x1B, 0xF4, + 0x2E, 0x0A, 0xE2, 0xF2, 0x5C, 0xBD, 0x1F, 0x75 + }, + { + 0xBD, 0xE6, 0xAF, 0x9B, 0xAF, 0x3C, 0x07, 0xE9, + 0x54, 0x23, 0xCA, 0xB5, 0x04, 0xDE, 0xE7, 0x0E, + 0xDC, 0xC3, 0x31, 0x8B, 0x22, 0xDD, 0x1E, 0xB6, + 0xFD, 0x85, 0xBE, 0x44, 0x7A, 0xC9, 0xF2, 0x09 + }, + { + 0x91, 0x4B, 0x37, 0xAB, 0x5B, 0x8C, 0xFD, 0xE6, + 0xA4, 0x80, 0x46, 0x6A, 0x0D, 0x82, 0x43, 0x2C, + 0x7D, 0x76, 0x32, 0x8E, 0x9A, 0x88, 0xEF, 0x5B, + 0x4F, 0x52, 0x42, 0x9F, 0x7A, 0x3F, 0xFC, 0x7D + }, + { + 0x55, 0xBE, 0x66, 0xE9, 0xA5, 0xAA, 0x67, 0x1A, + 0x23, 0x88, 0x2E, 0xF3, 0xE7, 0xD9, 0xD3, 0x6E, + 0xA9, 0x54, 0x87, 0xDC, 0x71, 0xB7, 0x25, 0xA5, + 0xAD, 0x4B, 0x79, 0x8A, 0x87, 0x91, 0x43, 0xD0 + }, + { + 0x3F, 0xD0, 0x45, 0x89, 0x4B, 0x83, 0x6E, 0x44, + 0xE9, 0xCA, 0x75, 0xFB, 0xE3, 0xEA, 0xDC, 0x48, + 0x6C, 0xBB, 0xD0, 0xD8, 0xCE, 0xE1, 0xB3, 0xCF, + 0x14, 0xF7, 0x6E, 0x7F, 0x1E, 0x77, 0xAE, 0xF3 + }, + { + 0xCE, 0x60, 0x34, 0x3D, 0xC4, 0x87, 0x4B, 0x66, + 0x04, 0xE1, 0xFB, 0x23, 0x1E, 0x37, 0xEC, 0x1E, + 0xEC, 0x3F, 0x06, 0x56, 0x6E, 0x42, 0x8A, 0xE7, + 0x64, 0xEF, 0xFF, 0xA2, 0x30, 0xAD, 0xD4, 0x85 + }, + { + 0xE3, 0x8C, 0x9D, 0xF0, 0x24, 0xDE, 0x21, 0x53, + 0xD2, 0x26, 0x73, 0x8A, 0x0E, 0x5B, 0xA9, 0xB8, + 0xC6, 0x78, 0x4D, 0xAC, 0xA6, 0x5C, 0x22, 0xA7, + 0x62, 0x8E, 0xB5, 0x8E, 0xA0, 0xD4, 0x95, 0xA7 + }, + { + 0x8D, 0xFE, 0xC0, 0xD4, 0xF3, 0x65, 0x8A, 0x20, + 0xA0, 0xBA, 0xD6, 0x6F, 0x21, 0x60, 0x83, 0x2B, + 0x16, 0x4E, 0x70, 0x0A, 0x21, 0xEC, 0x5A, 0x01, + 0x65, 0xC3, 0x67, 0x72, 0xB2, 0x08, 0x61, 0x11 + }, + { + 0x44, 0x01, 0xB5, 0x0E, 0x09, 0x86, 0x5F, 0x42, + 0x38, 0x24, 0x3B, 0x82, 0x25, 0xCA, 0x40, 0xA0, + 0x8D, 0xBB, 0x46, 0x85, 0xF5, 0xF8, 0x62, 0xFB, + 0xDD, 0x72, 0x98, 0x04, 0x31, 0xA8, 0x5D, 0x3F + }, + { + 0x86, 0x68, 0x94, 0x27, 0x88, 0xC4, 0xCE, 0x8A, + 0x33, 0x19, 0x0F, 0xFC, 0xFA, 0xD1, 0xC6, 0x78, + 0xC4, 0xFA, 0x41, 0xE9, 0x94, 0x17, 0x09, 0x4E, + 0x24, 0x0F, 0x4A, 0x43, 0xF3, 0x87, 0xA3, 0xB6 + }, + { + 0xA7, 0x28, 0x8D, 0x5E, 0x09, 0x80, 0x9B, 0x69, + 0x69, 0x84, 0xEC, 0xD5, 0x32, 0x6C, 0xDD, 0x84, + 0xFB, 0xE3, 0x5F, 0xCF, 0x67, 0x23, 0x5D, 0x81, + 0x1C, 0x82, 0x00, 0x25, 0x36, 0xA3, 0xC5, 0xE1 + }, + { + 0x8E, 0x92, 0x5C, 0x3C, 0x14, 0x6B, 0xAC, 0xF3, + 0x35, 0x1E, 0xC5, 0x32, 0x41, 0xAC, 0xE5, 0xF7, + 0x3E, 0x8F, 0xC9, 0xBD, 0x8C, 0x61, 0xCA, 0xD9, + 0x7F, 0xD7, 0x72, 0xB0, 0x7E, 0x1B, 0x83, 0x73 + }, + { + 0xC7, 0xEB, 0x9E, 0x6D, 0xED, 0x2F, 0x99, 0x3D, + 0x48, 0xB0, 0x17, 0x0D, 0xA2, 0x7C, 0x5B, 0x75, + 0x3B, 0x12, 0x17, 0x6B, 0xE1, 0x26, 0xC7, 0xBA, + 0x2D, 0x6A, 0xF8, 0x5F, 0x85, 0x93, 0xB7, 0x52 + }, + { + 0xCA, 0x27, 0xF1, 0x6F, 0x94, 0xE4, 0xEC, 0x0E, + 0x62, 0x8E, 0x7F, 0x8A, 0xEF, 0xC6, 0x65, 0x7B, + 0xED, 0xC9, 0x37, 0x42, 0x96, 0x59, 0x40, 0xAE, + 0x78, 0x6A, 0x73, 0xB5, 0xFD, 0x59, 0x3B, 0x97 + }, + { + 0x8C, 0x21, 0xE6, 0x56, 0x8B, 0xC6, 0xDC, 0x00, + 0xE3, 0xD6, 0xEB, 0xC0, 0x9E, 0xA9, 0xC2, 0xCE, + 0x00, 0x6C, 0xD3, 0x11, 0xD3, 0xB3, 0xE9, 0xCC, + 0x9D, 0x8D, 0xDB, 0xFB, 0x3C, 0x5A, 0x77, 0x76 + }, + { + 0x52, 0x56, 0x66, 0x96, 0x8B, 0x3B, 0x7D, 0x00, + 0x7B, 0xB9, 0x26, 0xB6, 0xEF, 0xDC, 0x7E, 0x21, + 0x2A, 0x31, 0x15, 0x4C, 0x9A, 0xE1, 0x8D, 0x43, + 0xEE, 0x0E, 0xB7, 0xE6, 0xB1, 0xA9, 0x38, 0xD3 + }, + { + 0xE0, 0x9A, 0x4F, 0xA5, 0xC2, 0x8B, 0xDC, 0xD7, + 0xC8, 0x39, 0x84, 0x0E, 0x0A, 0x38, 0x3E, 0x4F, + 0x7A, 0x10, 0x2D, 0x0B, 0x1B, 0xC8, 0x49, 0xC9, + 0x49, 0x62, 0x7C, 0x41, 0x00, 0xC1, 0x7D, 0xD3 + }, + { + 0xC1, 0x9F, 0x3E, 0x29, 0x5D, 0xB2, 0xFC, 0x0E, + 0x74, 0x81, 0xC4, 0xF1, 0x6A, 0xF0, 0x11, 0x55, + 0xDD, 0xB0, 0xD7, 0xD1, 0x38, 0x3D, 0x4A, 0x1F, + 0xF1, 0x69, 0x9D, 0xB7, 0x11, 0x77, 0x34, 0x0C + }, + { + 0x76, 0x9E, 0x67, 0x8C, 0x0A, 0x09, 0x09, 0xA2, + 0x02, 0x1C, 0x4D, 0xC2, 0x6B, 0x1A, 0x3C, 0x9B, + 0xC5, 0x57, 0xAD, 0xB2, 0x1A, 0x50, 0x83, 0x4C, + 0xDC, 0x5C, 0x92, 0x93, 0xF7, 0x53, 0x65, 0xF8 + }, + { + 0xB6, 0x48, 0x74, 0xAD, 0xAB, 0x6B, 0xCB, 0x85, + 0xB9, 0x4B, 0xD9, 0xA6, 0xC5, 0x65, 0xD0, 0xD2, + 0xBC, 0x35, 0x44, 0x5D, 0x75, 0x28, 0xBC, 0x85, + 0xB4, 0x1F, 0xDC, 0x79, 0xDC, 0x76, 0xE3, 0x4F + }, + { + 0xFA, 0xF2, 0x50, 0xDE, 0x15, 0x82, 0x0F, 0x7F, + 0xC6, 0x10, 0xDD, 0x53, 0xEE, 0xAE, 0x44, 0x60, + 0x1C, 0x3E, 0xFF, 0xA3, 0xAC, 0xCD, 0x08, 0x8E, + 0xB6, 0x69, 0x05, 0xBB, 0x26, 0x53, 0xBE, 0x8C + }, + { + 0x1E, 0x20, 0x38, 0x73, 0x9B, 0x2C, 0x01, 0x8B, + 0x0E, 0x9E, 0x0E, 0x1E, 0x52, 0x2F, 0xD9, 0x65, + 0x12, 0x87, 0xEE, 0x6E, 0x36, 0x65, 0x91, 0x9B, + 0x24, 0xC2, 0x12, 0x4F, 0x0C, 0x1A, 0x3F, 0x3A + }, + { + 0x5F, 0xEC, 0x3A, 0xA0, 0x08, 0x61, 0xDE, 0x1A, + 0xC5, 0xDA, 0xB3, 0xC1, 0x37, 0x06, 0x5D, 0x1E, + 0x01, 0xBB, 0x03, 0xF6, 0x9D, 0xCC, 0x7D, 0x1C, + 0xF7, 0xCA, 0x4F, 0x43, 0x56, 0xAE, 0xC9, 0xA3 + }, + { + 0x44, 0x51, 0xFE, 0x6B, 0xBE, 0xF3, 0x93, 0x43, + 0x91, 0x92, 0x44, 0xC5, 0x1D, 0xAE, 0x1E, 0xA9, + 0xA9, 0x54, 0xCF, 0x2C, 0x09, 0x66, 0xAB, 0x04, + 0x5B, 0x15, 0x52, 0x1E, 0xCF, 0x35, 0x00, 0x81 + }, + { + 0x8C, 0x62, 0x2F, 0xA2, 0x16, 0x0E, 0x8E, 0x99, + 0x18, 0x13, 0xF1, 0x80, 0xBF, 0xEC, 0x0B, 0x43, + 0x1C, 0x6D, 0xBF, 0xA2, 0x95, 0x6D, 0x91, 0x75, + 0x81, 0x6A, 0x23, 0xC3, 0x82, 0xC4, 0xF2, 0x00 + }, + { + 0x81, 0x7D, 0x5C, 0x8F, 0x92, 0xE7, 0xB5, 0xCA, + 0x57, 0xF5, 0xE1, 0x63, 0x90, 0x16, 0xAD, 0x57, + 0x60, 0xE4, 0x46, 0xD6, 0xE9, 0xCA, 0xA7, 0x49, + 0x84, 0x14, 0xAC, 0xE8, 0x22, 0x80, 0xB5, 0xCD + }, + { + 0xA6, 0xA1, 0xAD, 0x58, 0xCE, 0xE5, 0x4E, 0x69, + 0xCB, 0xBC, 0xAA, 0x87, 0xDF, 0x07, 0xA6, 0x70, + 0x7E, 0xB2, 0x24, 0x73, 0x9C, 0x21, 0x76, 0x13, + 0x46, 0x0A, 0xB4, 0x54, 0xB4, 0x59, 0xCA, 0x9C + }, + { + 0x63, 0xB8, 0x47, 0x27, 0x52, 0x26, 0x60, 0x5B, + 0xE6, 0x76, 0x81, 0x25, 0x8F, 0x7D, 0x00, 0xBB, + 0xB3, 0x07, 0xC6, 0x6F, 0x19, 0x59, 0xBF, 0x2E, + 0x46, 0x7A, 0x41, 0xAE, 0xE7, 0x14, 0xE5, 0x5C + }, + { + 0xFE, 0x52, 0xEB, 0xE5, 0xCF, 0xCF, 0xE6, 0xA2, + 0x29, 0x7B, 0x53, 0x9F, 0xA3, 0xDA, 0xDB, 0xD6, + 0xEB, 0xD2, 0x01, 0xAA, 0x2C, 0xA1, 0x35, 0x63, + 0xE3, 0xD7, 0xF1, 0x4D, 0x15, 0xAB, 0xFF, 0x63 + }, + { + 0xB7, 0xBE, 0xF9, 0xFA, 0x5A, 0x3D, 0x10, 0x42, + 0x62, 0x46, 0xB5, 0xF6, 0x58, 0xC0, 0x8F, 0xDF, + 0x80, 0x66, 0xEA, 0xA3, 0xE5, 0x5A, 0x2F, 0x7D, + 0xA1, 0x59, 0x1E, 0x05, 0xC8, 0x7D, 0xF8, 0xC7 + }, + { + 0xDE, 0xD1, 0xD6, 0xCA, 0xA9, 0xF8, 0xF3, 0xBD, + 0xA9, 0x2C, 0xEA, 0x7F, 0x65, 0x49, 0xB1, 0xFB, + 0x86, 0xA2, 0x21, 0x14, 0x78, 0xC4, 0xEC, 0x28, + 0x9B, 0x83, 0x7E, 0xFC, 0x2B, 0x5C, 0x27, 0xD7 + }, + { + 0x9F, 0x30, 0x00, 0x8A, 0x2E, 0xB0, 0x50, 0xF1, + 0x8E, 0x56, 0xA7, 0x6B, 0xE9, 0x20, 0x91, 0xB2, + 0xFD, 0xC1, 0x64, 0xD5, 0x6E, 0x32, 0xC8, 0x7D, + 0xD6, 0x4C, 0x9E, 0x3A, 0x61, 0x10, 0x41, 0xB1 + }, + { + 0x01, 0x0B, 0x6A, 0x3B, 0x11, 0x86, 0x00, 0x88, + 0xF0, 0xAB, 0xC8, 0x0A, 0x89, 0x72, 0xCB, 0xBC, + 0x32, 0x9D, 0x52, 0x75, 0x34, 0x29, 0x50, 0xEB, + 0x9A, 0x04, 0x5A, 0xFD, 0xC8, 0xBB, 0xED, 0x24 + }, + { + 0x0C, 0xD2, 0x10, 0xAA, 0xC1, 0x1F, 0x1C, 0x1C, + 0xED, 0x49, 0x7F, 0x67, 0x3E, 0x53, 0xDB, 0x68, + 0xC3, 0xEC, 0x36, 0x07, 0xF0, 0xC5, 0x78, 0x7D, + 0xDC, 0x60, 0xA3, 0x55, 0xDF, 0xE5, 0x6C, 0x25 + }, + { + 0x0E, 0x56, 0xFD, 0x01, 0xDA, 0x3B, 0x4F, 0x8B, + 0xE2, 0xC9, 0x90, 0x55, 0x2A, 0xAC, 0x8D, 0x1E, + 0x8D, 0xA2, 0x09, 0xBC, 0xF4, 0xAA, 0xD4, 0xFF, + 0xB5, 0x42, 0x7F, 0xD6, 0x31, 0x72, 0x46, 0x3E + }, + { + 0xD6, 0xD5, 0xCD, 0xB1, 0x14, 0x40, 0xE3, 0x4A, + 0xCA, 0x3A, 0x2F, 0xCF, 0x30, 0xF5, 0x9E, 0x08, + 0xB1, 0x1A, 0x2A, 0x3D, 0xE5, 0x39, 0xE3, 0xE6, + 0x51, 0x3E, 0xD7, 0x8A, 0x4F, 0xEE, 0x51, 0x3B + }, + { + 0xAA, 0x35, 0xAC, 0x90, 0x68, 0x06, 0x70, 0xC7, + 0x32, 0xED, 0x1E, 0xF3, 0x7E, 0x8C, 0xBA, 0xAE, + 0x49, 0xA4, 0xD8, 0x8E, 0xCF, 0x4D, 0xF2, 0xB6, + 0x89, 0xA0, 0xF1, 0x01, 0xB7, 0x56, 0xAE, 0x47 + }, + { + 0x27, 0x8E, 0x56, 0x12, 0x88, 0x72, 0x26, 0x30, + 0xE2, 0x6A, 0x5F, 0xC9, 0x54, 0xBF, 0x2D, 0xCD, + 0x6A, 0x65, 0x81, 0x67, 0x39, 0xAB, 0xEE, 0x7B, + 0xE1, 0x43, 0x07, 0xA9, 0x61, 0x74, 0xE5, 0xB0 + }, + { + 0xAB, 0x4B, 0x2C, 0xA1, 0xA2, 0xB3, 0x49, 0x98, + 0x15, 0x24, 0xB6, 0x15, 0x54, 0x62, 0xF0, 0xFF, + 0x10, 0x60, 0xBF, 0x9B, 0xFA, 0x07, 0xFB, 0x9E, + 0xC6, 0x9C, 0xA4, 0x71, 0x64, 0x5B, 0x6A, 0x18 + }, + { + 0x18, 0xA9, 0xBB, 0xEC, 0x3C, 0x8E, 0x1F, 0x8E, + 0xE9, 0x57, 0x12, 0x97, 0xA9, 0x34, 0x36, 0xDE, + 0x42, 0x7C, 0xD2, 0x70, 0xEC, 0x69, 0xDF, 0xE8, + 0x88, 0xDB, 0x7D, 0xBF, 0x10, 0xB6, 0x49, 0x93 + }, + { + 0xBA, 0xFC, 0x7E, 0x43, 0xD2, 0x65, 0xA1, 0x73, + 0x02, 0x1A, 0x9D, 0x9E, 0x58, 0x3D, 0x60, 0xED, + 0x42, 0xA8, 0x03, 0xFA, 0xCD, 0x6B, 0x83, 0x60, + 0xDE, 0x1F, 0x91, 0x68, 0x35, 0x38, 0x9B, 0xF0 + }, + { + 0xA5, 0xB6, 0x7B, 0xE9, 0x50, 0xFB, 0xC2, 0xF0, + 0xDD, 0x32, 0x3A, 0x79, 0xA1, 0x9E, 0x3E, 0xD1, + 0xF4, 0xAE, 0x4B, 0xA7, 0x89, 0x4F, 0x93, 0x0E, + 0xA5, 0xEF, 0x73, 0x4D, 0xE7, 0xDB, 0x83, 0xAE + }, + { + 0xBF, 0x1E, 0x65, 0xF3, 0xCD, 0x84, 0x98, 0x88, + 0x4D, 0x9D, 0x5C, 0x19, 0xEB, 0xF7, 0xB9, 0x16, + 0x06, 0x76, 0x37, 0x60, 0x4E, 0x26, 0xDB, 0xE2, + 0xB7, 0x28, 0x8E, 0xCB, 0x11, 0x42, 0x60, 0x68 + }, + { + 0xC3, 0x34, 0x2C, 0xF9, 0xCB, 0xBF, 0x29, 0xD4, + 0x06, 0xD7, 0x89, 0x5D, 0xD4, 0xD9, 0x54, 0x8D, + 0x4A, 0xC7, 0x8B, 0x4D, 0x00, 0xE9, 0xB6, 0x3E, + 0x20, 0x3E, 0x5E, 0x19, 0xE9, 0x97, 0x46, 0x20 + }, + { + 0x1C, 0x0B, 0xE6, 0x02, 0x77, 0x43, 0x4B, 0x0E, + 0x00, 0x4B, 0x7B, 0x38, 0x8A, 0x37, 0x55, 0x9F, + 0x84, 0xB3, 0x0C, 0x6C, 0xF8, 0x60, 0x0F, 0x52, + 0x8B, 0xFC, 0xD3, 0x3C, 0xAF, 0x52, 0xCB, 0x1E + }, + { + 0x73, 0x95, 0x45, 0x30, 0xD0, 0x3F, 0x10, 0xBE, + 0xF5, 0x2A, 0xD5, 0xBC, 0x7F, 0xB4, 0xC0, 0x76, + 0xF8, 0x3F, 0x63, 0x31, 0xC8, 0xBD, 0x1E, 0xEE, + 0xC3, 0x88, 0x7F, 0x4A, 0xA2, 0x06, 0x92, 0x40 + }, + { + 0x69, 0xC1, 0x1E, 0xE0, 0x49, 0x44, 0xDE, 0xA9, + 0x85, 0xAC, 0x9F, 0x13, 0x96, 0x0E, 0x73, 0x98, + 0x0E, 0x1B, 0xB0, 0xE3, 0x09, 0xF4, 0x38, 0x4A, + 0x16, 0x76, 0xF8, 0xEF, 0xAB, 0x38, 0x42, 0x88 + }, + { + 0x36, 0xFB, 0x8F, 0xDE, 0x0E, 0xC2, 0x8C, 0xE8, + 0x53, 0xFB, 0x71, 0x75, 0xC1, 0xB7, 0x9D, 0xA3, + 0xB5, 0xE8, 0xC3, 0x91, 0x86, 0xE7, 0x8A, 0xAE, + 0xCE, 0x54, 0x64, 0xDB, 0xD9, 0xFE, 0x2A, 0xA2 + }, + { + 0x6B, 0xB2, 0xA0, 0x9D, 0xFC, 0xAF, 0x96, 0x96, + 0x2D, 0xE0, 0x0C, 0x8A, 0x08, 0x2D, 0x6D, 0xF9, + 0x32, 0x2B, 0x49, 0x66, 0xAE, 0x8D, 0x2E, 0xCF, + 0x73, 0x24, 0x11, 0xA7, 0x6A, 0x1A, 0x0E, 0xE6 + }, + { + 0x74, 0x12, 0xE7, 0xDD, 0x1B, 0xF1, 0xAA, 0x93, + 0x97, 0x41, 0x1B, 0xBA, 0x4D, 0x3E, 0x02, 0x76, + 0xD2, 0xE7, 0xA1, 0xA2, 0x9A, 0x24, 0x77, 0x15, + 0x7A, 0xD6, 0x03, 0x60, 0xD3, 0x3D, 0x4E, 0x76 + }, + { + 0xDD, 0xDE, 0xAF, 0xCF, 0xC7, 0x23, 0x21, 0xC8, + 0x49, 0xFB, 0x25, 0x94, 0x7A, 0xB4, 0x2C, 0x1A, + 0xF2, 0xA5, 0xE4, 0x3F, 0xEF, 0x68, 0x1B, 0xE4, + 0x2C, 0x7E, 0xAF, 0x36, 0x60, 0x08, 0x0A, 0xD3 + }, + { + 0x9D, 0xEF, 0xEB, 0xAD, 0xBD, 0xCB, 0x0A, 0x0E, + 0x7F, 0xF9, 0x92, 0xF9, 0x47, 0xCE, 0xD3, 0xD0, + 0xA4, 0xC8, 0x99, 0xE6, 0x4F, 0xE7, 0x73, 0x60, + 0xE8, 0x1E, 0x1F, 0x0E, 0x97, 0xF8, 0xC1, 0xA2 + }, + { + 0x84, 0x4C, 0x59, 0xFB, 0xE6, 0x47, 0x6F, 0xD1, + 0x89, 0x23, 0x99, 0x54, 0xF1, 0x7E, 0x36, 0xE1, + 0xF6, 0x9E, 0x24, 0xAA, 0xED, 0x5D, 0x5C, 0x8B, + 0x84, 0x05, 0xEF, 0x2A, 0x83, 0x0C, 0xC2, 0xA0 + }, + { + 0xFF, 0x3F, 0xAF, 0xB6, 0x77, 0x86, 0xE0, 0x1A, + 0x0C, 0x38, 0xEA, 0xDF, 0x99, 0xC4, 0xCA, 0xE8, + 0x02, 0x9D, 0xA8, 0xCF, 0x29, 0x87, 0x5F, 0xC4, + 0x19, 0xBF, 0x68, 0x00, 0x09, 0xB3, 0xBD, 0xB3 + }, + { + 0xCA, 0x67, 0x60, 0xF3, 0x45, 0x67, 0x8F, 0x30, + 0xA2, 0x8D, 0x62, 0x82, 0x94, 0x27, 0x2A, 0x19, + 0xE3, 0x07, 0x2E, 0xBC, 0x61, 0xB1, 0x9F, 0xF1, + 0x3B, 0x31, 0x89, 0x73, 0xE9, 0x7C, 0x27, 0x38 + }, + { + 0xC0, 0x8E, 0x1A, 0x90, 0x47, 0xC5, 0x05, 0x26, + 0x4A, 0x16, 0x44, 0x7C, 0x9E, 0xD9, 0x81, 0xA7, + 0x19, 0xD3, 0x81, 0xF2, 0x8E, 0x60, 0x5F, 0xD7, + 0xCA, 0xA9, 0xE8, 0xBD, 0xBB, 0x42, 0x99, 0x6A + }, + { + 0xF1, 0x73, 0xBA, 0x9D, 0x45, 0x84, 0xCD, 0x12, + 0x60, 0x50, 0xC6, 0x9F, 0xC2, 0x19, 0xA9, 0x19, + 0x0A, 0x0B, 0xF0, 0xAE, 0xCE, 0xCB, 0xE6, 0x11, + 0xBE, 0xED, 0x19, 0x3D, 0xA6, 0xCA, 0x4D, 0xE7 + }, + { + 0xB1, 0x84, 0x87, 0x65, 0x20, 0xDE, 0xD8, 0xBD, + 0x7D, 0xE2, 0x5E, 0xAE, 0xFB, 0xD3, 0xE0, 0x36, + 0x88, 0xC3, 0xBE, 0x39, 0xC1, 0x9F, 0xB7, 0x3E, + 0x1F, 0x0E, 0xCC, 0xAC, 0x7C, 0xC0, 0xF0, 0x14 + }, + { + 0x90, 0x25, 0xDB, 0x07, 0x58, 0xBD, 0xFB, 0x48, + 0xF0, 0x66, 0x7E, 0xBD, 0x7E, 0x12, 0x02, 0x46, + 0x59, 0x8F, 0xED, 0x01, 0xC2, 0x58, 0x76, 0x4F, + 0xA0, 0xFA, 0xE3, 0x34, 0xA2, 0xA0, 0x0A, 0x97 + }, + { + 0xE8, 0x3D, 0x80, 0x86, 0xFA, 0xBC, 0x46, 0x0D, + 0x5E, 0xFC, 0x45, 0x9F, 0x95, 0xA2, 0x68, 0xF5, + 0xDC, 0x4A, 0xC2, 0x84, 0x09, 0x3C, 0x24, 0x7C, + 0xA6, 0xEC, 0x84, 0x1A, 0xD6, 0x18, 0x3F, 0xE1 + }, + { + 0xCC, 0x9D, 0xF4, 0x1D, 0x35, 0xAA, 0x75, 0x92, + 0x8C, 0x18, 0x5F, 0x73, 0x93, 0x66, 0x61, 0x10, + 0xB8, 0x0F, 0x09, 0x86, 0xA2, 0x21, 0xC3, 0x70, + 0xF4, 0x5C, 0x2E, 0xB9, 0x01, 0x6C, 0x9A, 0x3B + }, + { + 0x92, 0xF9, 0xA5, 0x94, 0x95, 0x45, 0x90, 0xFA, + 0x81, 0x98, 0x17, 0xE5, 0xD1, 0xC2, 0x8A, 0xAB, + 0x2B, 0x1C, 0xC5, 0x04, 0xD8, 0x6D, 0xBA, 0x44, + 0x36, 0x76, 0xBD, 0xF8, 0x66, 0x79, 0x68, 0x11 + }, + { + 0x72, 0x95, 0x62, 0xA1, 0xE0, 0x7B, 0x0E, 0x26, + 0x05, 0x49, 0x48, 0x09, 0xBD, 0x48, 0x0F, 0x15, + 0x37, 0xCE, 0xA1, 0x0D, 0xCA, 0xD4, 0x3E, 0xF9, + 0xF6, 0x8C, 0x66, 0xE8, 0x25, 0xDC, 0x46, 0xB1 + }, + { + 0x26, 0xF1, 0x60, 0xAB, 0x96, 0xF5, 0x58, 0x20, + 0x45, 0x14, 0x6E, 0xAF, 0xF2, 0xE2, 0xA8, 0xD4, + 0xDA, 0xB2, 0x98, 0xB4, 0xC5, 0x7E, 0x11, 0x7C, + 0xDF, 0xC5, 0xD0, 0x25, 0xC9, 0x2A, 0x22, 0x68 + }, + { + 0x87, 0xEB, 0xE7, 0x21, 0x38, 0x38, 0x73, 0xD2, + 0x47, 0xF8, 0x61, 0x82, 0xE3, 0xF5, 0x99, 0xA7, + 0x63, 0x4F, 0xCA, 0xEC, 0x5E, 0x07, 0xB1, 0xE8, + 0x3E, 0xBB, 0x79, 0x62, 0x5B, 0xA3, 0x54, 0xE6 + }, + { + 0xE0, 0x8D, 0x38, 0x9F, 0x75, 0x69, 0x4A, 0xDC, + 0x99, 0x6C, 0x22, 0xF5, 0x5D, 0x4F, 0x85, 0x9F, + 0xFD, 0x0C, 0x13, 0x19, 0xFF, 0x9C, 0xED, 0xF7, + 0x8C, 0x31, 0xBE, 0x84, 0xB6, 0xF2, 0x1A, 0xBC + }, + { + 0x13, 0x63, 0xE2, 0x29, 0x13, 0xC6, 0xE1, 0x8E, + 0x7A, 0xA6, 0x5B, 0x83, 0xE7, 0x51, 0xC8, 0xA2, + 0xC6, 0x1B, 0x0F, 0x30, 0x71, 0x55, 0x86, 0x5A, + 0x57, 0xDB, 0xA5, 0x69, 0xA9, 0x9C, 0x7B, 0x0E + }, + { + 0x88, 0x78, 0x08, 0x8E, 0xB2, 0xD1, 0xF6, 0xD0, + 0xBB, 0x48, 0x1B, 0x4B, 0xB1, 0x87, 0xDA, 0x04, + 0xBC, 0xD8, 0xC2, 0xC6, 0x39, 0xF0, 0x05, 0xB0, + 0x80, 0x54, 0xCC, 0x41, 0x75, 0x39, 0x05, 0xFB + }, + { + 0x04, 0x18, 0xD6, 0x0D, 0x05, 0xB4, 0xE1, 0x24, + 0x64, 0x6E, 0xE5, 0x0E, 0x77, 0x49, 0xA1, 0xD2, + 0x09, 0x45, 0x7B, 0xC5, 0x43, 0xE3, 0xCC, 0x11, + 0x30, 0x27, 0x4A, 0xEA, 0x0F, 0x7B, 0xF3, 0xC1 + }, + { + 0x7A, 0x39, 0x7E, 0x50, 0x3F, 0x29, 0x3B, 0xC4, + 0x2D, 0x5F, 0x7E, 0xF5, 0xEC, 0x37, 0x87, 0x24, + 0x60, 0xA4, 0xF5, 0xB5, 0xCC, 0xDE, 0x77, 0xFB, + 0x4D, 0x47, 0xAC, 0x06, 0x81, 0xE5, 0xA0, 0x49 + }, + { + 0x5C, 0x0D, 0x29, 0x83, 0xE7, 0x2A, 0x6D, 0xD4, + 0xE6, 0x52, 0xD7, 0x23, 0xC1, 0xDF, 0xC1, 0x2B, + 0x41, 0x4C, 0x87, 0x3D, 0x4A, 0xB4, 0xA0, 0xA1, + 0x50, 0x40, 0x8E, 0xB3, 0x43, 0x47, 0xE9, 0x95 + }, + { + 0x56, 0x23, 0x36, 0x54, 0x53, 0xC0, 0x49, 0x89, + 0xC7, 0xCF, 0x33, 0x63, 0x5E, 0x0F, 0xC4, 0xCD, + 0xDD, 0x68, 0x6F, 0xC9, 0x5A, 0x33, 0xDF, 0xED, + 0xCF, 0x33, 0x35, 0x79, 0x4C, 0x7D, 0xC3, 0x44 + }, + { + 0x11, 0xF6, 0xDA, 0xD1, 0x88, 0x02, 0x8F, 0xDF, + 0x13, 0x78, 0xA2, 0x56, 0xE4, 0x57, 0x0E, 0x90, + 0x63, 0x10, 0x7B, 0x8F, 0x79, 0xDC, 0x66, 0x3F, + 0xA5, 0x55, 0x6F, 0x56, 0xFD, 0x44, 0xA0, 0xF0 + }, + { + 0x0E, 0xD8, 0x16, 0x17, 0x97, 0xEC, 0xEE, 0x88, + 0x1E, 0x7D, 0x0E, 0x3F, 0x4C, 0x5F, 0xB8, 0x39, + 0xC8, 0x4E, 0xB7, 0xA9, 0x24, 0x26, 0x57, 0xCC, + 0x48, 0x30, 0x68, 0x07, 0xB3, 0x2B, 0xEF, 0xDE + }, + { + 0x73, 0x66, 0x67, 0xC9, 0x36, 0x4C, 0xE1, 0x2D, + 0xB8, 0xF6, 0xB1, 0x43, 0xC6, 0xC1, 0x78, 0xCD, + 0xEF, 0x1E, 0x14, 0x45, 0xBC, 0x5A, 0x2F, 0x26, + 0x34, 0xF0, 0x8E, 0x99, 0x32, 0x27, 0x3C, 0xAA + }, + { + 0xE1, 0x5F, 0x36, 0x8B, 0x44, 0x06, 0xC1, 0xF6, + 0x55, 0x57, 0xC8, 0x35, 0x5C, 0xBE, 0x69, 0x4B, + 0x63, 0x3E, 0x26, 0xF1, 0x55, 0xF5, 0x2B, 0x7D, + 0xA9, 0x4C, 0xFB, 0x23, 0xFD, 0x4A, 0x5D, 0x96 + }, + { + 0x43, 0x7A, 0xB2, 0xD7, 0x4F, 0x50, 0xCA, 0x86, + 0xCC, 0x3D, 0xE9, 0xBE, 0x70, 0xE4, 0x55, 0x48, + 0x25, 0xE3, 0x3D, 0x82, 0x4B, 0x3A, 0x49, 0x23, + 0x62, 0xE2, 0xE9, 0xD6, 0x11, 0xBC, 0x57, 0x9D + }, + { + 0x2B, 0x91, 0x58, 0xC7, 0x22, 0x89, 0x8E, 0x52, + 0x6D, 0x2C, 0xDD, 0x3F, 0xC0, 0x88, 0xE9, 0xFF, + 0xA7, 0x9A, 0x9B, 0x73, 0xB7, 0xD2, 0xD2, 0x4B, + 0xC4, 0x78, 0xE2, 0x1C, 0xDB, 0x3B, 0x67, 0x63 + }, + { + 0x0C, 0x8A, 0x36, 0x59, 0x7D, 0x74, 0x61, 0xC6, + 0x3A, 0x94, 0x73, 0x28, 0x21, 0xC9, 0x41, 0x85, + 0x6C, 0x66, 0x83, 0x76, 0x60, 0x6C, 0x86, 0xA5, + 0x2D, 0xE0, 0xEE, 0x41, 0x04, 0xC6, 0x15, 0xDB + }, +}; + + + + +static const uint8_t blake2bp_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] = +{ + { + 0xB5, 0xEF, 0x81, 0x1A, 0x80, 0x38, 0xF7, 0x0B, + 0x62, 0x8F, 0xA8, 0xB2, 0x94, 0xDA, 0xAE, 0x74, + 0x92, 0xB1, 0xEB, 0xE3, 0x43, 0xA8, 0x0E, 0xAA, + 0xBB, 0xF1, 0xF6, 0xAE, 0x66, 0x4D, 0xD6, 0x7B, + 0x9D, 0x90, 0xB0, 0x12, 0x07, 0x91, 0xEA, 0xB8, + 0x1D, 0xC9, 0x69, 0x85, 0xF2, 0x88, 0x49, 0xF6, + 0xA3, 0x05, 0x18, 0x6A, 0x85, 0x50, 0x1B, 0x40, + 0x51, 0x14, 0xBF, 0xA6, 0x78, 0xDF, 0x93, 0x80 + }, + { + 0xA1, 0x39, 0x28, 0x0E, 0x72, 0x75, 0x7B, 0x72, + 0x3E, 0x64, 0x73, 0xD5, 0xBE, 0x59, 0xF3, 0x6E, + 0x9D, 0x50, 0xFC, 0x5C, 0xD7, 0xD4, 0x58, 0x5C, + 0xBC, 0x09, 0x80, 0x48, 0x95, 0xA3, 0x6C, 0x52, + 0x12, 0x42, 0xFB, 0x27, 0x89, 0xF8, 0x5C, 0xB9, + 0xE3, 0x54, 0x91, 0xF3, 0x1D, 0x4A, 0x69, 0x52, + 0xF9, 0xD8, 0xE0, 0x97, 0xAE, 0xF9, 0x4F, 0xA1, + 0xCA, 0x0B, 0x12, 0x52, 0x57, 0x21, 0xF0, 0x3D + }, + { + 0xEF, 0x8C, 0xDA, 0x96, 0x35, 0xD5, 0x06, 0x3A, + 0xF8, 0x11, 0x15, 0xDA, 0x3C, 0x52, 0x32, 0x5A, + 0x86, 0xE8, 0x40, 0x74, 0xF9, 0xF7, 0x24, 0xB7, + 0xCB, 0xD0, 0xB0, 0x85, 0x6F, 0xF0, 0x01, 0x77, + 0xCD, 0xD2, 0x83, 0xC2, 0x98, 0x32, 0x6C, 0xD0, + 0x91, 0x77, 0x54, 0xC5, 0x24, 0x1F, 0x14, 0x80, + 0xFB, 0x50, 0x9C, 0xF2, 0xD2, 0xC4, 0x49, 0x81, + 0x80, 0x77, 0xAE, 0x35, 0xFC, 0x33, 0x07, 0x37 + }, + { + 0x8C, 0xF9, 0x33, 0xA2, 0xD3, 0x61, 0xA3, 0xE6, + 0xA1, 0x36, 0xDB, 0xE4, 0xA0, 0x1E, 0x79, 0x03, + 0x79, 0x7A, 0xD6, 0xCE, 0x76, 0x6E, 0x2B, 0x91, + 0xB9, 0xB4, 0xA4, 0x03, 0x51, 0x27, 0xD6, 0x5F, + 0x4B, 0xE8, 0x65, 0x50, 0x11, 0x94, 0x18, 0xE2, + 0x2D, 0xA0, 0x0F, 0xD0, 0x6B, 0xF2, 0xB2, 0x75, + 0x96, 0xB3, 0x7F, 0x06, 0xBE, 0x0A, 0x15, 0x4A, + 0xAF, 0x7E, 0xCA, 0x54, 0xC4, 0x52, 0x0B, 0x97 + }, + { + 0x24, 0xDC, 0x1E, 0x6D, 0xC4, 0xE5, 0x1A, 0x3A, + 0x3C, 0x8D, 0xA6, 0x7A, 0xAC, 0xB4, 0xC5, 0x41, + 0xE4, 0x18, 0x18, 0xD1, 0x80, 0xE5, 0xBB, 0x69, + 0x75, 0x3D, 0xBB, 0xFF, 0x2F, 0x44, 0xD0, 0xE7, + 0xDA, 0x83, 0x03, 0x86, 0xBF, 0xC8, 0x3B, 0x27, + 0xA5, 0x9D, 0xBB, 0x62, 0xB9, 0x64, 0xFC, 0x8E, + 0xA6, 0xCB, 0xDF, 0x30, 0x49, 0xBF, 0xF8, 0x1F, + 0x24, 0xF3, 0x48, 0xDB, 0x4E, 0xFD, 0x0D, 0x07 + }, + { + 0xBC, 0x23, 0xF5, 0xAB, 0xDF, 0xFD, 0x6A, 0x32, + 0xA5, 0xD4, 0x08, 0x11, 0x26, 0x2E, 0xD4, 0x47, + 0x9E, 0xF7, 0x0B, 0x42, 0x33, 0xCA, 0x20, 0x5B, + 0xC5, 0xB9, 0xBF, 0x85, 0x96, 0x73, 0x19, 0x82, + 0xD0, 0x41, 0x69, 0xA9, 0x04, 0xDD, 0x43, 0xB0, + 0xE0, 0xF9, 0x48, 0x99, 0xF7, 0x33, 0x02, 0x2D, + 0x24, 0xD8, 0x4F, 0xAD, 0x0A, 0x99, 0x16, 0x00, + 0xF1, 0x97, 0x9B, 0x27, 0x2A, 0xD6, 0x20, 0x73 + }, + { + 0xEF, 0x10, 0x7F, 0xCD, 0x0D, 0x92, 0xD8, 0x4E, + 0xF5, 0xEF, 0x94, 0x63, 0xE6, 0xE9, 0x62, 0x41, + 0x25, 0x45, 0x29, 0xD2, 0xB9, 0x7F, 0xDB, 0xE5, + 0x64, 0x19, 0x07, 0x0A, 0xDB, 0xC7, 0xD5, 0x70, + 0x6F, 0xEB, 0x8F, 0x44, 0x95, 0x79, 0x81, 0x9E, + 0xD4, 0xBE, 0x61, 0x97, 0x85, 0xFF, 0xFA, 0xAF, + 0x0D, 0x97, 0x89, 0xCF, 0xE7, 0x26, 0x24, 0x9A, + 0xB0, 0x8C, 0x94, 0x68, 0xCB, 0x5F, 0xDE, 0x22 + }, + { + 0x23, 0x1F, 0xBF, 0xB7, 0xA1, 0xDD, 0xC5, 0xB7, + 0x49, 0x33, 0xA2, 0x85, 0xA4, 0x22, 0x4C, 0x04, + 0x9C, 0xBA, 0x14, 0x85, 0xCE, 0x35, 0x64, 0x0D, + 0x9C, 0x51, 0x6E, 0xD7, 0x8E, 0xAA, 0x22, 0x6D, + 0x36, 0xF6, 0x5B, 0x25, 0x89, 0xB8, 0x26, 0xC4, + 0x59, 0xFA, 0x6A, 0x91, 0xC4, 0x26, 0xFD, 0x2A, + 0x8A, 0xB4, 0x61, 0xC9, 0x76, 0x7E, 0x7B, 0xDD, + 0x99, 0x6B, 0xEF, 0x5A, 0x78, 0xF4, 0x81, 0xB7 + }, + { + 0x3A, 0x83, 0x1F, 0x2D, 0xA9, 0x69, 0xB9, 0xB7, + 0x36, 0x0E, 0x74, 0xEE, 0x53, 0xB5, 0x18, 0x98, + 0x0A, 0x5E, 0xBC, 0xDF, 0xD4, 0xEE, 0x23, 0xED, + 0x80, 0x5C, 0x26, 0x39, 0x4D, 0x18, 0x24, 0x20, + 0x8D, 0x7E, 0x8F, 0x63, 0x27, 0xD4, 0xEC, 0x87, + 0x97, 0x9C, 0xE4, 0xAF, 0x8A, 0xB0, 0x97, 0xD6, + 0x9E, 0x26, 0x1C, 0xA3, 0x2D, 0xB0, 0xEE, 0xFD, + 0xBC, 0x18, 0xD1, 0x63, 0x77, 0xA6, 0xBD, 0x20 + }, + { + 0x83, 0x49, 0xA2, 0x0F, 0xDD, 0xBA, 0xE1, 0xD8, + 0x47, 0x2B, 0x67, 0xF0, 0x34, 0x7A, 0xA0, 0xFD, + 0x40, 0x4D, 0x65, 0xC6, 0xFA, 0x14, 0x72, 0xB3, + 0x10, 0x39, 0x0D, 0x75, 0x65, 0xBA, 0x6B, 0xC1, + 0x02, 0x60, 0xD3, 0xDC, 0xE6, 0xA1, 0x4F, 0x4D, + 0xD9, 0xB8, 0xB3, 0xE0, 0xA0, 0xC4, 0x7F, 0x6D, + 0xB7, 0xE7, 0x10, 0x0A, 0x7A, 0x9B, 0x64, 0xA8, + 0x44, 0xF0, 0x10, 0x64, 0xD0, 0x79, 0x05, 0xC5 + }, + { + 0x23, 0x9A, 0xE3, 0xD6, 0x85, 0x9C, 0x7C, 0x97, + 0x2A, 0x5D, 0xC8, 0xB9, 0xC5, 0x5A, 0xEB, 0x93, + 0x85, 0x90, 0xCF, 0xB8, 0x55, 0x2A, 0xA3, 0x05, + 0xA6, 0xF6, 0xF3, 0x1F, 0xFA, 0x95, 0xA8, 0x40, + 0xF4, 0xEC, 0x36, 0xF6, 0xFB, 0x8F, 0x83, 0xB6, + 0x9C, 0x1D, 0xA9, 0x81, 0xFC, 0x9B, 0xA1, 0x63, + 0x60, 0xDB, 0x0F, 0x4F, 0x7C, 0x68, 0xEB, 0x54, + 0x3E, 0xD5, 0x8B, 0x28, 0x75, 0x6A, 0x1E, 0x0D + }, + { + 0x7C, 0x56, 0x73, 0x28, 0x63, 0x08, 0x40, 0x8F, + 0xBC, 0x62, 0x24, 0x0E, 0x07, 0x47, 0x28, 0xB2, + 0x7A, 0x57, 0x5C, 0xAD, 0x2A, 0x15, 0x6E, 0x00, + 0xB5, 0xC0, 0x8B, 0x21, 0x8D, 0x88, 0x87, 0x79, + 0x1E, 0x47, 0xBF, 0x10, 0xB0, 0xBC, 0x61, 0xA5, + 0x82, 0x54, 0x5A, 0x24, 0x69, 0x63, 0x9C, 0xE6, + 0x28, 0xC4, 0x0F, 0x20, 0xEA, 0x8B, 0x84, 0x9C, + 0xD0, 0x05, 0x44, 0x5F, 0x29, 0xA0, 0x8C, 0xCE + }, + { + 0xDD, 0x07, 0x7E, 0x76, 0x9E, 0x0D, 0xEF, 0x78, + 0xDD, 0x7A, 0xAD, 0xD5, 0x7D, 0x58, 0x42, 0x1B, + 0xDA, 0x3A, 0x1A, 0x4E, 0x69, 0x72, 0x05, 0x9F, + 0x8E, 0x64, 0x9C, 0xD6, 0xBC, 0xA4, 0x4A, 0x13, + 0xAB, 0x71, 0xEB, 0x53, 0x5D, 0x24, 0x49, 0x22, + 0x94, 0x84, 0x65, 0xD7, 0x3B, 0xD6, 0x4E, 0xFB, + 0x09, 0x10, 0x46, 0x94, 0x90, 0x66, 0x65, 0x36, + 0x03, 0x57, 0x5A, 0x2E, 0x89, 0x1E, 0xBD, 0x54 + }, + { + 0xB3, 0x6C, 0xEF, 0x28, 0x53, 0x2B, 0x40, 0xD8, + 0x17, 0x86, 0x28, 0xF0, 0xFA, 0xB5, 0xE5, 0xB4, + 0xA1, 0xDE, 0xC0, 0xC0, 0xE9, 0x11, 0xD7, 0x27, + 0xBF, 0x09, 0x49, 0x0F, 0x5E, 0x8D, 0x9F, 0xAC, + 0x57, 0x21, 0x3F, 0xD2, 0xA2, 0xD1, 0x2E, 0xD3, + 0xD7, 0x7A, 0x41, 0xF5, 0xE2, 0xFE, 0xCC, 0x40, + 0xE4, 0xEE, 0xCA, 0x16, 0x12, 0xF5, 0x1C, 0x45, + 0x23, 0x31, 0xAE, 0x93, 0x96, 0x62, 0x35, 0xBC + }, + { + 0xDE, 0x73, 0x7D, 0xBC, 0x61, 0x2E, 0xBD, 0x31, + 0xBC, 0x49, 0xA2, 0xD7, 0xC6, 0x44, 0xD4, 0xB1, + 0x37, 0x81, 0x74, 0x19, 0x42, 0x1C, 0x32, 0xF4, + 0xE7, 0x51, 0x14, 0xD8, 0x99, 0xE3, 0x13, 0x1D, + 0x45, 0xCA, 0x54, 0x51, 0x24, 0x8F, 0x24, 0x16, + 0x9F, 0xBF, 0x17, 0xEE, 0x60, 0xA9, 0xB7, 0x07, + 0x98, 0xA4, 0xB9, 0x37, 0xCE, 0xA6, 0x27, 0x95, + 0x28, 0x96, 0x39, 0xD1, 0x8F, 0xCD, 0x89, 0xE4 + }, + { + 0xB4, 0xC1, 0xBB, 0xCB, 0xBC, 0xCD, 0xFC, 0xE4, + 0xD2, 0xBE, 0x9D, 0xCD, 0xB9, 0x83, 0xC1, 0xB0, + 0x20, 0xC5, 0xF7, 0x20, 0xDA, 0x5B, 0xEC, 0xF4, + 0xCB, 0x2A, 0x9A, 0x3D, 0x1B, 0x8D, 0x23, 0xCE, + 0xA7, 0xA9, 0xF5, 0xFD, 0x70, 0xD3, 0x74, 0x0E, + 0xCD, 0x67, 0xCE, 0x7D, 0x1E, 0x9C, 0x5E, 0x31, + 0xA3, 0x30, 0x2D, 0xF6, 0x6A, 0x9B, 0x5D, 0x54, + 0x30, 0x44, 0x90, 0xFB, 0xE1, 0xC4, 0xA8, 0xB9 + }, + { + 0xB1, 0xD6, 0x5E, 0x70, 0xC6, 0x9B, 0xA7, 0xE3, + 0xA7, 0x28, 0xE8, 0xB6, 0x44, 0x94, 0x93, 0xF2, + 0x37, 0x51, 0x0B, 0x23, 0xB6, 0xE7, 0x7D, 0x95, + 0x84, 0xD0, 0x5F, 0xF4, 0xD3, 0xF0, 0x87, 0x80, + 0x92, 0x9D, 0x74, 0xFA, 0x5B, 0xED, 0x9B, 0x75, + 0xD4, 0xD6, 0xD1, 0xCA, 0x91, 0xAB, 0x8D, 0x26, + 0x37, 0xDC, 0x2E, 0x79, 0xBA, 0x0F, 0xE0, 0x59, + 0x4A, 0xCD, 0x68, 0xFB, 0x3C, 0xC6, 0x60, 0xB9 + }, + { + 0xDA, 0x79, 0xF7, 0x29, 0xEA, 0xB9, 0x8C, 0x04, + 0xF3, 0x7F, 0xCC, 0x85, 0x4B, 0x69, 0xA8, 0x4E, + 0x46, 0x7D, 0xEA, 0x1E, 0x77, 0x82, 0xE7, 0xAF, + 0x02, 0xCB, 0x44, 0xA4, 0x9D, 0x21, 0x0D, 0x25, + 0x23, 0x68, 0x3D, 0x42, 0x0A, 0xC1, 0xDE, 0xC8, + 0xAD, 0x1F, 0xB4, 0x0E, 0x65, 0xAB, 0x3F, 0xE2, + 0x51, 0xA8, 0x51, 0xE2, 0x83, 0xD8, 0x58, 0x38, + 0x08, 0x42, 0x61, 0x30, 0x1E, 0xCD, 0x08, 0x9B + }, + { + 0x71, 0x40, 0x40, 0x40, 0x39, 0x21, 0xAE, 0x55, + 0x48, 0xA2, 0x03, 0x39, 0xD6, 0x9E, 0x09, 0x3F, + 0x60, 0x9A, 0xA9, 0x9C, 0x22, 0xDB, 0x72, 0x59, + 0x1D, 0x1E, 0xF4, 0xFC, 0xB0, 0xAF, 0x01, 0x61, + 0x73, 0xE5, 0x77, 0xD8, 0xC1, 0xA3, 0x06, 0x3B, + 0x44, 0x3A, 0x0E, 0x48, 0xF3, 0x13, 0xCF, 0x2E, + 0x0F, 0x9B, 0x0C, 0x2E, 0xF9, 0x6A, 0x96, 0xC4, + 0x24, 0x32, 0x2C, 0xCC, 0x0C, 0xD5, 0x30, 0x4C + }, + { + 0x8B, 0x2E, 0x8C, 0x3F, 0x0E, 0x3C, 0x31, 0x9B, + 0xA6, 0x7E, 0x86, 0x01, 0x4B, 0xDA, 0x68, 0x3E, + 0x53, 0x57, 0xA0, 0x40, 0x37, 0xB4, 0x56, 0x32, + 0x86, 0xAC, 0x89, 0xCD, 0xDB, 0x7E, 0xE0, 0x4C, + 0xF6, 0x67, 0x5F, 0x9A, 0xB6, 0x1F, 0xC8, 0x33, + 0x2D, 0x21, 0x8D, 0x2B, 0xCA, 0x97, 0x15, 0xE7, + 0xDB, 0xE5, 0x83, 0x72, 0xD1, 0xEE, 0xBF, 0x6B, + 0xC2, 0x94, 0x84, 0x71, 0xCF, 0xCE, 0xBB, 0x77 + }, + { + 0x32, 0xEE, 0x95, 0x49, 0xD4, 0xE3, 0x2F, 0x4B, + 0xE9, 0xC5, 0x00, 0xBD, 0x85, 0x43, 0xAF, 0xD0, + 0xB6, 0x97, 0x82, 0xD0, 0xB3, 0xFF, 0x7E, 0xD4, + 0x7A, 0x88, 0x1A, 0x0E, 0x49, 0x1F, 0x37, 0x65, + 0x0A, 0x21, 0xB2, 0x6C, 0x3F, 0x5D, 0x0A, 0x64, + 0xE0, 0x90, 0x58, 0xB3, 0x00, 0x4A, 0x23, 0x68, + 0xB9, 0x50, 0xE4, 0x72, 0x30, 0xC2, 0x29, 0x66, + 0xD3, 0xF7, 0x9D, 0xA7, 0xBA, 0xA0, 0xB8, 0x7F + }, + { + 0xCA, 0xE7, 0xF2, 0x92, 0x71, 0x37, 0x82, 0xC4, + 0x71, 0xFE, 0x31, 0x78, 0xA9, 0x42, 0x0C, 0xD4, + 0xC1, 0x1F, 0xCD, 0x3F, 0x6D, 0xBE, 0x5D, 0x15, + 0xC8, 0x4A, 0xB7, 0x35, 0x3C, 0x73, 0x9E, 0xF0, + 0x64, 0x16, 0x39, 0xA2, 0xF9, 0x2A, 0xED, 0x31, + 0xC5, 0x6A, 0x20, 0x21, 0xCC, 0x5E, 0x58, 0xCB, + 0xEA, 0xD3, 0x74, 0xE2, 0xDC, 0x8A, 0x0D, 0xBC, + 0xE5, 0x45, 0x0F, 0xE7, 0xA0, 0x18, 0xCF, 0xA4 + }, + { + 0xF1, 0x7F, 0xEF, 0xAE, 0xAE, 0x7D, 0x40, 0xCD, + 0x88, 0x5D, 0xAC, 0x0B, 0xC3, 0x50, 0xC0, 0x27, + 0x36, 0x68, 0xEA, 0x02, 0x22, 0xDF, 0x5C, 0x75, + 0x69, 0x4F, 0x5C, 0xB3, 0xA3, 0x21, 0x51, 0x9F, + 0x6E, 0x0E, 0xC4, 0x3B, 0xA0, 0xC8, 0x59, 0x3D, + 0xC7, 0x34, 0x13, 0x41, 0xE5, 0x19, 0x48, 0x8F, + 0x20, 0xAB, 0xD5, 0xB8, 0x12, 0x4D, 0xFA, 0xCE, + 0xA5, 0xCD, 0xE0, 0x96, 0x5B, 0x69, 0x70, 0xF9 + }, + { + 0xE2, 0xCF, 0x86, 0xDD, 0xC8, 0x42, 0x4E, 0xE5, + 0x47, 0xEB, 0x72, 0x45, 0xB7, 0x32, 0x5E, 0x02, + 0xF2, 0xE3, 0xAC, 0x01, 0x3C, 0x8D, 0x38, 0x6B, + 0x3D, 0x2E, 0x09, 0x20, 0x8A, 0x9B, 0xCC, 0x0B, + 0x44, 0xC4, 0xC4, 0x38, 0xEA, 0xAF, 0x52, 0xD2, + 0x07, 0x7E, 0x91, 0x77, 0xEB, 0x8E, 0xE1, 0xD5, + 0x90, 0x75, 0xB5, 0x25, 0x92, 0x20, 0x20, 0x62, + 0x22, 0x93, 0x54, 0xBF, 0x23, 0xC9, 0x62, 0x39 + }, + { + 0x38, 0xF2, 0x6A, 0x11, 0x02, 0xCB, 0x16, 0x2D, + 0x35, 0x1F, 0x84, 0x3B, 0x3C, 0x49, 0xF6, 0xFF, + 0x85, 0x44, 0x16, 0x33, 0xB6, 0x70, 0x4A, 0x28, + 0x6A, 0xF8, 0x1C, 0xCB, 0xAE, 0x5A, 0x67, 0xD3, + 0x01, 0x5C, 0xC0, 0xEF, 0xAF, 0xB7, 0x05, 0x7D, + 0xC2, 0xB2, 0x8D, 0x67, 0x66, 0xE8, 0x2A, 0x06, + 0x8A, 0x4C, 0x0B, 0x52, 0x4B, 0x66, 0xD0, 0xA6, + 0x32, 0x77, 0x5D, 0x93, 0x06, 0x15, 0x75, 0xF9 + }, + { + 0xA2, 0xC4, 0x30, 0x2D, 0xAC, 0xA7, 0xA7, 0xC6, + 0x32, 0xF6, 0x76, 0x30, 0x4E, 0x62, 0x75, 0xC1, + 0xC1, 0xF0, 0xDB, 0xFE, 0x38, 0xDC, 0x57, 0x1C, + 0xB2, 0x3E, 0x1F, 0x7B, 0xA5, 0xDC, 0x18, 0x18, + 0x0F, 0xC4, 0x8A, 0x01, 0x5F, 0x92, 0x7C, 0x89, + 0x96, 0x7C, 0x1E, 0x10, 0x4E, 0x66, 0xF5, 0xEA, + 0x5B, 0x2D, 0xD3, 0x1D, 0x78, 0x1C, 0x38, 0x49, + 0xBF, 0xC6, 0x49, 0x22, 0x0C, 0x38, 0x5C, 0x82 + }, + { + 0xC1, 0x9C, 0x6B, 0x3F, 0xB5, 0x35, 0x2B, 0xB3, + 0x94, 0xC2, 0x68, 0x46, 0x52, 0x3C, 0x25, 0xE8, + 0x26, 0x5D, 0x50, 0x5F, 0x50, 0x1F, 0x96, 0x03, + 0xA4, 0xF8, 0xBD, 0x55, 0x38, 0x6C, 0xF4, 0xCC, + 0x9F, 0x4D, 0x71, 0xF3, 0x8F, 0xF4, 0x45, 0xF4, + 0xEF, 0xC8, 0x30, 0x98, 0xD4, 0x79, 0x69, 0x33, + 0x4E, 0x79, 0xA2, 0xBC, 0xB4, 0x02, 0x6B, 0xC6, + 0x3B, 0x79, 0x59, 0xDE, 0xDB, 0x62, 0xB7, 0xBD + }, + { + 0x1F, 0x4A, 0xB9, 0x84, 0x0A, 0x1C, 0xFA, 0x8F, + 0xE6, 0xC5, 0x62, 0x2D, 0x9B, 0x53, 0x8B, 0xEC, + 0xB8, 0x80, 0x7A, 0x87, 0x78, 0xB6, 0x9D, 0x93, + 0x05, 0xF9, 0x08, 0x57, 0x65, 0x73, 0xB2, 0x0C, + 0xA3, 0x70, 0x4E, 0x89, 0x12, 0x97, 0x26, 0xD5, + 0x02, 0xE1, 0x98, 0x58, 0x8D, 0x07, 0x26, 0x68, + 0xBF, 0x03, 0x63, 0x0B, 0x5B, 0x5A, 0x92, 0x32, + 0xFF, 0x39, 0x25, 0x27, 0x24, 0x9D, 0xF9, 0x9B + }, + { + 0xFE, 0x03, 0x17, 0x7B, 0x58, 0xB4, 0x88, 0x83, + 0xA8, 0x6D, 0x42, 0x68, 0x33, 0x4B, 0x95, 0x91, + 0xD9, 0xFB, 0xD8, 0xBF, 0x7C, 0xC2, 0xAA, 0xCC, + 0x50, 0x25, 0xEF, 0x47, 0x6B, 0x45, 0x33, 0xBA, + 0x7B, 0xD7, 0x81, 0xDF, 0x01, 0x11, 0x47, 0xB3, + 0xCF, 0x51, 0x1D, 0x8B, 0x3D, 0xCD, 0x8C, 0x78, + 0x0D, 0x30, 0xD7, 0xDA, 0x71, 0x8C, 0x22, 0x44, + 0x23, 0x19, 0x81, 0x7B, 0xE3, 0x18, 0x6B, 0xC5 + }, + { + 0xF4, 0xC3, 0xB0, 0x59, 0x10, 0x5B, 0x6A, 0xA5, + 0xFE, 0x78, 0x84, 0x3A, 0x07, 0xD9, 0x4F, 0x71, + 0x20, 0x62, 0xCB, 0x5A, 0x4D, 0xD6, 0x05, 0x9F, + 0x97, 0x90, 0x4D, 0x0C, 0x57, 0x97, 0x3B, 0xA8, + 0xDF, 0x71, 0xD1, 0x5A, 0x51, 0x1A, 0x06, 0x68, + 0x64, 0xFE, 0x45, 0x5E, 0xDC, 0x9E, 0x5F, 0x16, + 0x52, 0x4C, 0xEC, 0x7E, 0xE2, 0x48, 0xEE, 0x3E, + 0xC9, 0x29, 0x06, 0x3B, 0xD1, 0x07, 0x98, 0xDA + }, + { + 0x57, 0xA1, 0x6F, 0x96, 0x4B, 0x18, 0x1B, 0x12, + 0x03, 0xA5, 0x80, 0x3B, 0x73, 0x81, 0x7D, 0x77, + 0x44, 0x83, 0x82, 0x6C, 0xEA, 0x11, 0x3B, 0x9C, + 0xCF, 0xCF, 0x0E, 0xB8, 0x7C, 0xB2, 0x30, 0x64, + 0x28, 0x49, 0x62, 0xD8, 0x47, 0xBB, 0x1F, 0xAE, + 0x8C, 0xBF, 0x5C, 0xC6, 0x3B, 0x3C, 0xEA, 0xA1, + 0x24, 0x1E, 0xA4, 0x2C, 0x63, 0xF8, 0x98, 0x01, + 0x1F, 0xC4, 0xDB, 0xCA, 0xE6, 0xF5, 0xE8, 0xC5 + }, + { + 0x79, 0x52, 0xFC, 0x83, 0xAC, 0xF1, 0x3A, 0x95, + 0xCA, 0x9C, 0x27, 0xA2, 0x15, 0x6D, 0x9C, 0x1B, + 0x63, 0x00, 0xB0, 0xEF, 0x79, 0x0F, 0x57, 0x2B, + 0xC3, 0x94, 0xC6, 0x77, 0xF7, 0xC1, 0x46, 0x29, + 0xEB, 0xD8, 0xE7, 0xD5, 0xD7, 0xC7, 0xF1, 0xA5, + 0xEB, 0xBD, 0xC3, 0x90, 0xCC, 0x08, 0xCD, 0x58, + 0xC2, 0x00, 0x89, 0x00, 0xCB, 0x55, 0xEB, 0x05, + 0xE4, 0x44, 0xA6, 0x8C, 0x3B, 0x39, 0x3E, 0x60 + }, + { + 0x2C, 0x22, 0x40, 0xD6, 0xB5, 0x41, 0xF4, 0x29, + 0x4F, 0xF9, 0x76, 0x79, 0x1D, 0x35, 0xE6, 0xA2, + 0xD4, 0x92, 0xF5, 0x7A, 0x91, 0x5F, 0xBA, 0xC5, + 0x83, 0x26, 0x60, 0xC1, 0x0E, 0x9C, 0x96, 0x46, + 0x5C, 0x7B, 0xD5, 0xFC, 0xA7, 0x51, 0xBF, 0x68, + 0xE2, 0x67, 0x3A, 0x63, 0x8E, 0x3A, 0xF7, 0x35, + 0xB0, 0x20, 0x91, 0xD7, 0x5D, 0x1A, 0x7F, 0x89, + 0xE3, 0xF7, 0x61, 0xC5, 0xDF, 0x82, 0x1A, 0x6B + }, + { + 0x59, 0xDC, 0x84, 0x6D, 0x34, 0x05, 0xCC, 0xD8, + 0x06, 0xF8, 0xFA, 0x20, 0xC8, 0x96, 0x9E, 0xF6, + 0x8A, 0x43, 0x85, 0xEF, 0x6C, 0x27, 0x4E, 0xEE, + 0x6D, 0xC0, 0x69, 0x2C, 0x3E, 0xCF, 0xB1, 0xA8, + 0x34, 0xCE, 0x64, 0x43, 0x76, 0xC5, 0x2B, 0x80, + 0x42, 0x1B, 0xAE, 0x94, 0xD6, 0xC7, 0xFD, 0xCC, + 0xA5, 0xA8, 0xF1, 0x85, 0x9C, 0x45, 0xA1, 0x0C, + 0x4E, 0xB2, 0x74, 0x82, 0x6F, 0x1F, 0x08, 0x9F + }, + { + 0xB7, 0x52, 0x96, 0x27, 0x07, 0xA1, 0x7B, 0x66, + 0x4F, 0xAE, 0xB3, 0x13, 0xE2, 0xB9, 0x52, 0xDC, + 0x03, 0xE7, 0x4A, 0x7E, 0x94, 0x47, 0x09, 0x8A, + 0xA6, 0xD4, 0xEA, 0x5B, 0xD2, 0x87, 0xD0, 0x7A, + 0x12, 0x25, 0xEC, 0xED, 0xA9, 0x81, 0x15, 0x70, + 0x58, 0x0A, 0x51, 0x2B, 0x2B, 0x20, 0xB3, 0xFC, + 0xFC, 0xA7, 0x0B, 0x44, 0xF6, 0x45, 0x4E, 0xF3, + 0xC3, 0x52, 0x4C, 0xCA, 0x6B, 0x69, 0x47, 0x5B + }, + { + 0xDA, 0x0D, 0x8E, 0x54, 0x61, 0xF8, 0x10, 0x24, + 0xEF, 0xFE, 0xED, 0x5D, 0x70, 0x76, 0xA0, 0x4F, + 0xED, 0xED, 0xAC, 0x57, 0xE7, 0xC9, 0x8A, 0x59, + 0x45, 0xBF, 0xDE, 0x66, 0x75, 0x58, 0x18, 0x85, + 0x1B, 0xE1, 0x13, 0x6B, 0x71, 0xF4, 0x33, 0xA5, + 0x6B, 0xDA, 0x18, 0x41, 0xAE, 0x71, 0x39, 0x2C, + 0x4B, 0x82, 0x90, 0x82, 0x63, 0x59, 0xF5, 0x87, + 0x22, 0x3C, 0x3E, 0xF7, 0x37, 0xFF, 0x73, 0x2A + }, + { + 0xED, 0xB8, 0x6A, 0x23, 0x7C, 0x6F, 0x13, 0x7D, + 0xFB, 0xB3, 0x47, 0x01, 0x1E, 0xDB, 0x4C, 0x6E, + 0x86, 0x1F, 0x4D, 0x58, 0x14, 0x60, 0x85, 0x46, + 0x34, 0x41, 0x04, 0x2F, 0xA3, 0x63, 0x16, 0xF1, + 0xFA, 0xF8, 0x87, 0x11, 0xBB, 0x0F, 0x18, 0x11, + 0xDF, 0xBB, 0xBF, 0xA7, 0xB5, 0x1F, 0x9C, 0xE2, + 0xD4, 0x96, 0x05, 0x24, 0x3E, 0xD0, 0x16, 0xCB, + 0xAD, 0x68, 0x85, 0xEA, 0xE2, 0x03, 0x67, 0x4F + }, + { + 0xE6, 0xD8, 0xE0, 0xFB, 0xAA, 0x29, 0xDB, 0xEB, + 0x60, 0xF3, 0xC7, 0xF9, 0x85, 0xBA, 0xD7, 0x54, + 0xD7, 0x21, 0xAA, 0xC6, 0x3D, 0xA6, 0xF4, 0x49, + 0x0C, 0x9D, 0x7E, 0xA2, 0x31, 0xD2, 0x62, 0x2F, + 0xDF, 0xDE, 0xF1, 0x48, 0xD0, 0xCA, 0x44, 0x2B, + 0x8D, 0x59, 0xCF, 0x3E, 0x4F, 0x98, 0x35, 0xCB, + 0xC2, 0x40, 0xAF, 0x40, 0xFB, 0xA6, 0x3A, 0x2E, + 0xA5, 0xA2, 0x35, 0xD4, 0x6E, 0xEA, 0x6E, 0xAC + }, + { + 0xD4, 0xE4, 0x63, 0xC4, 0x88, 0x29, 0x87, 0xEB, + 0x44, 0xA5, 0xED, 0x0C, 0x82, 0x1D, 0x68, 0xB0, + 0xFE, 0xF9, 0x9D, 0x6F, 0x53, 0xA5, 0x7B, 0xF3, + 0x19, 0xBD, 0xAC, 0x25, 0xAC, 0x38, 0xEB, 0x0B, + 0x23, 0xE1, 0x13, 0x8C, 0x00, 0x12, 0xF5, 0xF3, + 0x83, 0x46, 0xA1, 0xDE, 0x9D, 0x4A, 0x99, 0x2A, + 0x64, 0xB9, 0x42, 0x83, 0x4A, 0x85, 0x6E, 0xFB, + 0xAA, 0x06, 0x20, 0xBD, 0xA2, 0x9F, 0x6A, 0x86 + }, + { + 0x42, 0xD8, 0x10, 0xD0, 0x1C, 0x2D, 0xA2, 0x47, + 0x35, 0xF0, 0x4A, 0x5E, 0x90, 0x13, 0x38, 0xFD, + 0xFC, 0x2D, 0xE1, 0x71, 0x5F, 0xF6, 0x64, 0x3A, + 0x37, 0x2F, 0x88, 0x0E, 0x6C, 0x5C, 0x6C, 0x13, + 0xD2, 0xB3, 0xAD, 0x70, 0x77, 0x46, 0x9D, 0x64, + 0x33, 0x54, 0x05, 0x4D, 0x32, 0xDD, 0x80, 0x49, + 0xEA, 0x63, 0x73, 0x2B, 0x57, 0x45, 0xBD, 0xB2, + 0x3B, 0xE2, 0xB5, 0x8E, 0x48, 0xC1, 0x01, 0x3A + }, + { + 0xCF, 0xBF, 0x54, 0x30, 0x07, 0x6F, 0x82, 0x5A, + 0x3B, 0xBB, 0x88, 0xC1, 0xBC, 0x0A, 0xEF, 0x61, + 0x25, 0x9E, 0x8F, 0x4D, 0x5F, 0xA3, 0x3C, 0x39, + 0x82, 0x50, 0x62, 0xF1, 0x5D, 0x19, 0xFD, 0x4A, + 0x01, 0x82, 0xCD, 0x97, 0x36, 0xD2, 0xAE, 0xC9, + 0x74, 0x9C, 0xCF, 0x83, 0x18, 0x6C, 0x35, 0x74, + 0xAB, 0x94, 0x42, 0x65, 0x40, 0x66, 0x0A, 0x9D, + 0xB8, 0xC3, 0xAA, 0xBB, 0xCB, 0xDD, 0x9D, 0x0F + }, + { + 0x6C, 0x24, 0x34, 0xA1, 0xAF, 0xA1, 0x57, 0xAC, + 0xCC, 0x34, 0xA5, 0xC4, 0x87, 0x2D, 0xFF, 0x69, + 0xFE, 0x7F, 0x31, 0x96, 0xCB, 0x1A, 0x75, 0x0C, + 0x54, 0x1D, 0x8B, 0x73, 0x92, 0x28, 0x88, 0xBA, + 0xBE, 0x89, 0xB1, 0xC3, 0x82, 0x02, 0x21, 0x86, + 0x20, 0xD8, 0x8D, 0x77, 0xDA, 0xD9, 0xDF, 0xBA, + 0xB3, 0xFB, 0xF7, 0x40, 0xB2, 0xD1, 0xD8, 0xF3, + 0x7E, 0xAD, 0x25, 0x8E, 0x2E, 0xF1, 0x06, 0x52 + }, + { + 0x48, 0xB7, 0x26, 0x8A, 0xA4, 0x34, 0x2F, 0xAB, + 0x02, 0x1D, 0x14, 0x72, 0xE9, 0x25, 0x7F, 0x76, + 0x58, 0x5C, 0xC5, 0x68, 0x10, 0xC8, 0xF2, 0xA6, + 0xE1, 0xD4, 0xA8, 0x94, 0x6B, 0x77, 0x71, 0x42, + 0xD4, 0x4A, 0xE5, 0x13, 0xA8, 0x80, 0x9F, 0x2D, + 0x6D, 0xC7, 0x26, 0x30, 0x5F, 0x79, 0x44, 0x60, + 0x4D, 0x95, 0x2D, 0x4A, 0x9F, 0x08, 0x5C, 0x5C, + 0x10, 0x50, 0xBA, 0xFD, 0xD2, 0x1D, 0x1E, 0x60 + }, + { + 0xCE, 0xCF, 0xCE, 0x4B, 0x12, 0xC6, 0xCF, 0x53, + 0xD1, 0xB1, 0xB2, 0xD4, 0x18, 0xA4, 0x93, 0xE3, + 0xF4, 0x29, 0x17, 0x03, 0x21, 0xE8, 0x1A, 0xA2, + 0x52, 0x63, 0xAA, 0xA7, 0x15, 0xD5, 0xCA, 0x38, + 0x9F, 0x65, 0xC3, 0xAC, 0xF9, 0x9B, 0x18, 0x0E, + 0x44, 0x6B, 0x50, 0xE6, 0x01, 0xFC, 0xBF, 0x44, + 0x61, 0xD0, 0x42, 0x6A, 0x85, 0x92, 0xA0, 0x77, + 0x42, 0x20, 0x18, 0x57, 0x12, 0x5F, 0x71, 0xEE + }, + { + 0x38, 0x5A, 0x75, 0x22, 0x42, 0xEB, 0x9E, 0xD5, + 0x6B, 0x07, 0x4B, 0x70, 0x2C, 0x91, 0xE7, 0x5A, + 0xEC, 0x0B, 0xE9, 0x06, 0x4B, 0xD9, 0xCF, 0x88, + 0x03, 0x04, 0xC2, 0x13, 0x27, 0x0C, 0xB2, 0xEA, + 0xE8, 0xE2, 0x1D, 0x9A, 0xE8, 0xC6, 0x08, 0x15, + 0x19, 0xF7, 0x5D, 0xFA, 0xBB, 0x00, 0x3B, 0x24, + 0x32, 0xB0, 0x47, 0x55, 0xB8, 0xC3, 0x2C, 0x97, + 0xAC, 0x29, 0x14, 0xE8, 0xBF, 0x45, 0xB2, 0x34 + }, + { + 0xD8, 0x9A, 0x12, 0x4A, 0x9B, 0x95, 0x8B, 0xA2, + 0x3D, 0x09, 0x20, 0x7A, 0xCF, 0xA6, 0x2A, 0x33, + 0xB8, 0x70, 0x89, 0xB2, 0x86, 0xE8, 0x43, 0x8B, + 0xDC, 0x01, 0xE2, 0x33, 0xAB, 0x2A, 0x86, 0x30, + 0xA1, 0xEE, 0xB6, 0xB2, 0xB9, 0xBA, 0x6B, 0x7D, + 0x21, 0x00, 0x10, 0x77, 0x33, 0xDE, 0xAF, 0x4C, + 0x20, 0x47, 0x8C, 0x26, 0xF2, 0x49, 0xC6, 0x89, + 0xC5, 0x26, 0x84, 0x73, 0xE2, 0xE9, 0xFA, 0x60 + }, + { + 0x43, 0xDE, 0x10, 0x92, 0xFF, 0x9F, 0xF5, 0x28, + 0x20, 0x6C, 0x6F, 0xCF, 0x81, 0x32, 0x2E, 0xAD, + 0x3D, 0x22, 0xEA, 0xA4, 0xC8, 0x54, 0x52, 0x15, + 0x77, 0xDF, 0x33, 0x62, 0x47, 0x49, 0x5C, 0xE1, + 0x72, 0xFC, 0x87, 0x39, 0x95, 0x30, 0x0B, 0x21, + 0xB9, 0x46, 0x10, 0xC9, 0xD2, 0xF6, 0x33, 0xB5, + 0x33, 0xBD, 0xE4, 0x56, 0x8C, 0xA0, 0x9C, 0x38, + 0x0E, 0x84, 0x68, 0xFE, 0x6A, 0xD8, 0xD8, 0x1D + }, + { + 0x86, 0x8B, 0x60, 0x11, 0x99, 0xEF, 0x00, 0x0B, + 0x70, 0x5C, 0xD6, 0x4D, 0x39, 0x30, 0x26, 0x2A, + 0x5A, 0xB9, 0x10, 0xE3, 0x4E, 0x2D, 0x78, 0xE8, + 0x58, 0x7B, 0x4E, 0x01, 0x0D, 0x37, 0x6D, 0xD4, + 0xA0, 0x0D, 0xE4, 0x48, 0x67, 0xD0, 0xE9, 0x33, + 0xEE, 0x39, 0xA1, 0xFA, 0x91, 0x47, 0xD4, 0x99, + 0xD1, 0x84, 0xF3, 0xA9, 0xCF, 0x35, 0x4F, 0x2D, + 0x3C, 0x51, 0x14, 0x6F, 0xF7, 0x15, 0x2D, 0x68 + }, + { + 0x15, 0x17, 0xF8, 0xF0, 0x44, 0x2F, 0x0D, 0x50, + 0xBB, 0xC0, 0xAA, 0xB6, 0x84, 0x6F, 0xDC, 0xE3, + 0xB7, 0x0F, 0xAE, 0xA4, 0xBB, 0x51, 0x13, 0xAC, + 0xB2, 0x3A, 0xBE, 0x10, 0x1D, 0x99, 0xA4, 0x0A, + 0x1B, 0x76, 0xC1, 0xE8, 0xDC, 0x2E, 0xA1, 0x93, + 0x62, 0x94, 0x82, 0x3A, 0xD8, 0x35, 0x4C, 0x11, + 0xE2, 0xE9, 0x6C, 0x67, 0x12, 0xBE, 0x4C, 0xF7, + 0x7C, 0x58, 0x3F, 0xD0, 0x6B, 0x5E, 0x5C, 0x55 + }, + { + 0xAF, 0x4C, 0x6C, 0x67, 0xC5, 0xCA, 0x38, 0x38, + 0x73, 0x48, 0xCA, 0x3E, 0xC2, 0xBE, 0xD7, 0xFB, + 0xA8, 0xC2, 0xB3, 0xD2, 0x2D, 0xE1, 0x48, 0xD0, + 0x8A, 0x61, 0x8C, 0x29, 0x70, 0x23, 0xFB, 0x7B, + 0x6D, 0x2C, 0x15, 0x3D, 0x5E, 0xFC, 0xD1, 0x68, + 0x89, 0x99, 0x91, 0x0B, 0x20, 0xE1, 0xEA, 0xC7, + 0xC1, 0x00, 0xA2, 0xC5, 0xA6, 0xC1, 0xAC, 0xF5, + 0xE9, 0x8F, 0x14, 0x3B, 0x41, 0xDC, 0x8A, 0x12 + }, + { + 0xA2, 0xAD, 0x94, 0x24, 0x3B, 0x8E, 0xEA, 0x68, + 0xF5, 0xFA, 0xDD, 0x69, 0x08, 0xAD, 0xB0, 0xDA, + 0xCD, 0xAA, 0x6A, 0x6D, 0x24, 0xC2, 0x50, 0xD3, + 0x39, 0x40, 0x3D, 0xBA, 0x82, 0x31, 0xBD, 0x51, + 0xE8, 0x87, 0xCB, 0x5B, 0x1B, 0x7B, 0xDE, 0x27, + 0x74, 0xC6, 0xB0, 0x8A, 0xCC, 0xE0, 0xF7, 0x49, + 0x56, 0x48, 0xDA, 0x3B, 0xEB, 0xC7, 0xB1, 0xC2, + 0x82, 0x15, 0x08, 0xC4, 0xD3, 0x82, 0xF7, 0x30 + }, + { + 0x28, 0xF8, 0x8C, 0xDB, 0xE9, 0x03, 0xAD, 0x63, + 0xA0, 0x23, 0x31, 0xDE, 0x1A, 0x32, 0xAF, 0x6D, + 0xBB, 0xA8, 0x2D, 0x7F, 0xC0, 0x79, 0x87, 0x02, + 0x72, 0x49, 0x33, 0xDA, 0x77, 0x38, 0x07, 0xBC, + 0x80, 0x42, 0x78, 0x13, 0x47, 0x81, 0xF1, 0x26, + 0x23, 0x32, 0x20, 0xE3, 0x07, 0x92, 0x81, 0x31, + 0xB2, 0x47, 0x10, 0xB4, 0x67, 0x4E, 0xD7, 0x05, + 0x11, 0x2F, 0x95, 0xD1, 0xAA, 0x37, 0xA2, 0xDC + }, + { + 0x5B, 0xB2, 0x92, 0x65, 0xE2, 0x46, 0xB8, 0x84, + 0xFF, 0x40, 0x91, 0x4F, 0xFA, 0x93, 0xD9, 0xA1, + 0x2E, 0xDC, 0x19, 0xEE, 0xE9, 0xCC, 0x8A, 0x83, + 0x63, 0x1D, 0x68, 0xBD, 0x46, 0xAA, 0xD3, 0x35, + 0x4B, 0xA6, 0x67, 0x4B, 0x91, 0x3F, 0x4F, 0x82, + 0x3E, 0x79, 0x1F, 0x0C, 0xB1, 0x9E, 0xA6, 0xA6, + 0x7C, 0x6E, 0x32, 0xE9, 0xBE, 0x0D, 0x0F, 0xF5, + 0x76, 0x0F, 0x16, 0xDD, 0x75, 0xA8, 0x7B, 0x5D + }, + { + 0xBF, 0x3C, 0x06, 0xDC, 0x6D, 0x94, 0xE3, 0x85, + 0x9A, 0x4D, 0xAA, 0x50, 0xEC, 0xA1, 0xAF, 0x53, + 0x57, 0xE3, 0x45, 0x79, 0xE5, 0x99, 0xF8, 0x20, + 0x49, 0xE1, 0xCC, 0xA7, 0xA7, 0xD4, 0xF3, 0x3F, + 0xEA, 0x44, 0x3B, 0x44, 0x69, 0x1B, 0xD4, 0x36, + 0x88, 0xF5, 0x55, 0x05, 0x31, 0xCF, 0x22, 0xB7, + 0x12, 0x77, 0x89, 0x0B, 0xFF, 0xAE, 0x1E, 0xCE, + 0x78, 0x3F, 0x56, 0x63, 0xA1, 0xC4, 0xD7, 0x1A + }, + { + 0xC9, 0x0D, 0xF5, 0x32, 0xF2, 0xF1, 0x49, 0x3A, + 0x11, 0x55, 0xBE, 0x8C, 0x2A, 0x44, 0x00, 0x92, + 0x20, 0x49, 0x97, 0x4E, 0x7D, 0x4F, 0x4B, 0x54, + 0xF8, 0x20, 0xC2, 0x26, 0x9D, 0x3B, 0x16, 0x1B, + 0x6E, 0x88, 0xEB, 0x77, 0x6B, 0x85, 0x9B, 0x89, + 0xB8, 0x56, 0x7F, 0xBC, 0x55, 0x0C, 0x4F, 0x54, + 0xAA, 0xD2, 0x7A, 0x16, 0x10, 0x65, 0x6D, 0x62, + 0x5C, 0x32, 0x7F, 0x66, 0x5D, 0xCA, 0x70, 0x7C + }, + { + 0x3D, 0x39, 0xEE, 0xCC, 0x9E, 0x90, 0x42, 0x36, + 0xDC, 0x85, 0x7B, 0xA4, 0x9D, 0x55, 0xD3, 0xBA, + 0xD7, 0x65, 0x72, 0xA9, 0x1A, 0x75, 0x95, 0x03, + 0x37, 0x6B, 0x77, 0x08, 0xD6, 0x2D, 0x5A, 0x78, + 0x5C, 0x23, 0x06, 0x80, 0x59, 0xCF, 0x68, 0x89, + 0x7F, 0x23, 0xEE, 0xC5, 0x07, 0x21, 0x9B, 0x0A, + 0x02, 0xED, 0xA2, 0xD8, 0xBC, 0x94, 0xFA, 0x69, + 0x89, 0xA5, 0x14, 0x82, 0x22, 0x03, 0xC8, 0xD1 + }, + { + 0xE0, 0x8C, 0x54, 0xD9, 0x98, 0xF9, 0x2B, 0x7A, + 0x54, 0xA2, 0x4C, 0xA6, 0xAE, 0xB1, 0x53, 0xA6, + 0x4F, 0x9C, 0x9F, 0x1F, 0xC3, 0x36, 0x58, 0xB3, + 0xED, 0xAC, 0x2C, 0x4B, 0xB5, 0x26, 0x31, 0x58, + 0xDA, 0xDF, 0x00, 0xD3, 0x51, 0x9A, 0x11, 0x9A, + 0x56, 0x14, 0xC7, 0xF3, 0x79, 0x40, 0xE5, 0x5D, + 0x13, 0xCC, 0xE4, 0x66, 0xCB, 0x71, 0xA4, 0x07, + 0xC3, 0x9F, 0xC5, 0x1E, 0x1E, 0xFE, 0x18, 0xDA + }, + { + 0x74, 0x76, 0x76, 0x07, 0x04, 0x1D, 0xD4, 0xB7, + 0xC5, 0x6B, 0x18, 0x9E, 0xE8, 0xF2, 0x77, 0x31, + 0xA5, 0x16, 0x72, 0x23, 0xEB, 0x7A, 0xF9, 0xB9, + 0x39, 0xE1, 0x18, 0xF8, 0x7D, 0x80, 0xB4, 0x9E, + 0xA8, 0xD0, 0xD0, 0x1F, 0x74, 0xF3, 0x98, 0xB1, + 0x72, 0xA8, 0xAD, 0x0D, 0xBF, 0x99, 0x41, 0x4F, + 0x08, 0xD2, 0xB7, 0xD8, 0xD7, 0x52, 0x16, 0xA1, + 0x82, 0x25, 0x27, 0x3D, 0x8D, 0x7F, 0xD0, 0x5D + }, + { + 0xFE, 0xE8, 0x9A, 0x92, 0xCC, 0xF9, 0xF1, 0xEB, + 0x08, 0x4A, 0xAB, 0xA9, 0x54, 0x97, 0xEF, 0x0F, + 0x30, 0x13, 0x4C, 0x19, 0x1C, 0xF9, 0x0A, 0x49, + 0xD2, 0x2C, 0x7D, 0x2F, 0x66, 0x14, 0x99, 0x3C, + 0xBE, 0x1A, 0x4B, 0x65, 0x13, 0xED, 0xC1, 0x53, + 0x86, 0x8A, 0x3D, 0x56, 0x2B, 0x5B, 0x02, 0x26, + 0xBA, 0x8E, 0x1B, 0x0D, 0xCB, 0x69, 0xED, 0x45, + 0xAF, 0x47, 0xCE, 0x4F, 0x86, 0xBA, 0x47, 0x4A + }, + { + 0xCD, 0xAE, 0x94, 0xB6, 0xD1, 0xD8, 0x35, 0xF6, + 0xC7, 0x4C, 0x76, 0xEC, 0x3A, 0x2D, 0xB6, 0x5B, + 0xBD, 0xFA, 0xE1, 0x9D, 0x7B, 0x05, 0x0D, 0xC9, + 0x5D, 0x65, 0x87, 0x33, 0xB8, 0xB2, 0x2C, 0x6F, + 0x9E, 0x0B, 0x63, 0xCC, 0x90, 0x5A, 0x29, 0xEA, + 0x88, 0x78, 0xCA, 0x39, 0x45, 0x56, 0xB3, 0x67, + 0x3C, 0x62, 0x79, 0x15, 0x46, 0xA9, 0xA1, 0xF0, + 0xD1, 0x56, 0x5F, 0xAD, 0xC5, 0x35, 0x36, 0xC1 + }, + { + 0xC7, 0x22, 0x8B, 0x6F, 0x00, 0x00, 0x17, 0xD2, + 0xBE, 0x4B, 0xF2, 0xAE, 0x48, 0xAD, 0xDB, 0x78, + 0x5E, 0x27, 0x35, 0xBF, 0x3C, 0x61, 0x4D, 0x3C, + 0x34, 0x23, 0x1F, 0x1D, 0x0C, 0x88, 0x7D, 0x3A, + 0x8E, 0x88, 0x88, 0x0B, 0x67, 0xAD, 0x3B, 0x2F, + 0x65, 0x23, 0xDD, 0x67, 0x19, 0x34, 0x2C, 0xD4, + 0xF0, 0x59, 0x35, 0xD2, 0xE5, 0x26, 0x7F, 0x36, + 0x80, 0xE7, 0x73, 0xBD, 0x5E, 0xAD, 0xFE, 0x1D + }, + { + 0x12, 0x27, 0x44, 0xFE, 0x3F, 0xFF, 0x9A, 0x05, + 0x5F, 0x0F, 0x3B, 0xDE, 0x01, 0xEB, 0x2F, 0x44, + 0x6B, 0x0C, 0xDA, 0xF3, 0xAE, 0xD7, 0x2C, 0xAA, + 0x29, 0x40, 0x74, 0x19, 0x20, 0x12, 0x0A, 0x96, + 0x4F, 0xCF, 0xF8, 0x70, 0x99, 0xB0, 0x8E, 0xF3, + 0x34, 0x96, 0xE3, 0x99, 0x03, 0x2A, 0x82, 0xDA, + 0xAD, 0x4F, 0xED, 0x30, 0x31, 0x17, 0x2F, 0x77, + 0x47, 0x92, 0x58, 0xFA, 0x39, 0xDB, 0x92, 0xFD + }, + { + 0x1F, 0xB4, 0xE3, 0x67, 0xEA, 0xB6, 0x42, 0xB7, + 0x2E, 0x43, 0xAD, 0x4A, 0xBD, 0xFC, 0xAD, 0x74, + 0x62, 0x0C, 0x3F, 0x6C, 0x63, 0xA8, 0x91, 0x31, + 0x28, 0xD2, 0x22, 0x6E, 0xB1, 0x92, 0xF9, 0x99, + 0x2E, 0xB9, 0xC8, 0xF7, 0x6A, 0xE2, 0x06, 0xD3, + 0xF5, 0xDE, 0xC7, 0x26, 0xA5, 0xA6, 0x86, 0xB4, + 0xAE, 0x37, 0xB5, 0x57, 0xAB, 0x57, 0xF9, 0x56, + 0x48, 0x53, 0x34, 0xF7, 0x3D, 0xCE, 0x02, 0xE0 + }, + { + 0x04, 0x25, 0xCA, 0xAA, 0x92, 0x3B, 0x47, 0xB3, + 0x50, 0x45, 0xEB, 0x50, 0x82, 0x9C, 0x04, 0x8B, + 0xC8, 0x90, 0x44, 0x4A, 0xFE, 0xEF, 0xC0, 0xAF, + 0xC9, 0xD1, 0x87, 0x7B, 0x82, 0x1E, 0x04, 0x3C, + 0x9C, 0x7B, 0x9D, 0x6D, 0xC3, 0x3F, 0xBB, 0xDF, + 0xA5, 0x37, 0xC1, 0xEC, 0xE3, 0x11, 0x96, 0x5B, + 0x2F, 0xEE, 0x89, 0x82, 0xBC, 0x46, 0xA2, 0xA7, + 0x50, 0xBF, 0xC7, 0x1D, 0x79, 0xDB, 0xEA, 0x04 + }, + { + 0x6B, 0x9D, 0x86, 0xF1, 0x5C, 0x09, 0x0A, 0x00, + 0xFC, 0x3D, 0x90, 0x7F, 0x90, 0x6C, 0x5E, 0xB7, + 0x92, 0x65, 0xE5, 0x8B, 0x88, 0xEB, 0x64, 0x29, + 0x4B, 0x4C, 0xC4, 0xE2, 0xB8, 0x9B, 0x1A, 0x7C, + 0x5E, 0xE3, 0x12, 0x7E, 0xD2, 0x1B, 0x45, 0x68, + 0x62, 0xDE, 0x6B, 0x2A, 0xBD, 0xA5, 0x9E, 0xAA, + 0xCF, 0x2D, 0xCB, 0xE9, 0x22, 0xCA, 0x75, 0x5E, + 0x40, 0x73, 0x5B, 0xE8, 0x1D, 0x9C, 0x88, 0xA5 + }, + { + 0x14, 0x6A, 0x18, 0x7A, 0x99, 0xE8, 0xA2, 0xD2, + 0x33, 0xE0, 0xEB, 0x37, 0x3D, 0x43, 0x7B, 0x02, + 0xBF, 0xA8, 0xD6, 0x51, 0x5B, 0x3C, 0xA1, 0xDE, + 0x48, 0xA6, 0xB6, 0xAC, 0xF7, 0x43, 0x7E, 0xB7, + 0xE7, 0xAC, 0x3F, 0x2D, 0x19, 0xEF, 0x3B, 0xB9, + 0xB8, 0x33, 0xCC, 0x57, 0x61, 0xDB, 0xA2, 0x2D, + 0x1A, 0xD0, 0x60, 0xBE, 0x76, 0xCD, 0xCB, 0x81, + 0x2D, 0x64, 0xD5, 0x78, 0xE9, 0x89, 0xA5, 0xA4 + }, + { + 0x25, 0x75, 0x4C, 0xA6, 0x66, 0x9C, 0x48, 0x70, + 0x84, 0x03, 0x88, 0xEA, 0x64, 0xE9, 0x5B, 0xD2, + 0xE0, 0x81, 0x0D, 0x36, 0x3C, 0x4C, 0xF6, 0xA1, + 0x6E, 0xA1, 0xBD, 0x06, 0x68, 0x6A, 0x93, 0xC8, + 0xA1, 0x25, 0xF2, 0x30, 0x22, 0x9D, 0x94, 0x84, + 0x85, 0xE1, 0xA8, 0x2D, 0xE4, 0x82, 0x00, 0x35, + 0x8F, 0x3E, 0x02, 0xB5, 0x05, 0xDA, 0xBC, 0x4F, + 0x13, 0x9C, 0x03, 0x79, 0xDC, 0x2B, 0x30, 0x80 + }, + { + 0x0E, 0x26, 0xCB, 0xC7, 0x8D, 0xC7, 0x54, 0xEC, + 0xA0, 0x6C, 0xF8, 0xCB, 0x31, 0xFC, 0xBA, 0xBB, + 0x18, 0x88, 0x92, 0xC1, 0x04, 0x50, 0x89, 0x05, + 0x49, 0xB2, 0xD4, 0x03, 0xA2, 0xA3, 0xC4, 0x57, + 0x70, 0x01, 0xF7, 0x4A, 0x76, 0xBD, 0x38, 0x99, + 0x0D, 0x75, 0x5B, 0xAE, 0x05, 0x26, 0x64, 0x83, + 0x29, 0xF6, 0x35, 0x45, 0xED, 0x16, 0x99, 0x5C, + 0xB1, 0xE6, 0x34, 0x3F, 0x18, 0x9F, 0x8E, 0x6F + }, + { + 0x58, 0xE7, 0x98, 0x0B, 0x8B, 0x1A, 0x0B, 0x88, + 0xDA, 0x9D, 0xA8, 0x64, 0x0F, 0x2B, 0x96, 0xE3, + 0xE0, 0x48, 0x36, 0x61, 0x30, 0xC2, 0x66, 0x21, + 0x7D, 0xDC, 0x79, 0x53, 0x50, 0x8F, 0x4A, 0x40, + 0xD1, 0x67, 0x4D, 0xAB, 0xD3, 0x92, 0x89, 0xE3, + 0xF1, 0x0C, 0x61, 0x19, 0x68, 0xCC, 0xD1, 0xE9, + 0xCC, 0xC1, 0x8C, 0xAD, 0xC7, 0x77, 0x4A, 0x99, + 0x7D, 0xD1, 0xFA, 0x94, 0xE8, 0x35, 0x47, 0x07 + }, + { + 0x69, 0x6F, 0xB8, 0x47, 0x63, 0xE0, 0x23, 0x58, + 0x4B, 0x35, 0x90, 0x7A, 0x8B, 0x8A, 0xAA, 0x9E, + 0x0E, 0x78, 0x6F, 0x2C, 0xA5, 0x91, 0x45, 0x41, + 0x91, 0x58, 0x48, 0xFB, 0x6D, 0xDA, 0xB8, 0xD3, + 0xD2, 0xEA, 0xB6, 0x00, 0xC1, 0x38, 0xCE, 0x67, + 0x17, 0xB0, 0xC7, 0x02, 0x59, 0xD3, 0x19, 0x3E, + 0xA1, 0x56, 0x95, 0xC8, 0x50, 0x53, 0x7F, 0x2C, + 0x70, 0x6C, 0xA4, 0xAF, 0x15, 0x8E, 0x95, 0x7E + }, + { + 0x23, 0xDE, 0x6E, 0x73, 0x07, 0x9C, 0x8C, 0x20, + 0x47, 0xA7, 0x84, 0x6A, 0x83, 0xCC, 0xAC, 0xAB, + 0xD3, 0x71, 0x16, 0x3B, 0x7B, 0x6D, 0x54, 0xEB, + 0x03, 0x2B, 0xC4, 0x9B, 0x66, 0x97, 0x42, 0xBE, + 0x71, 0x7B, 0x99, 0xDA, 0x12, 0xC6, 0x46, 0xAD, + 0x52, 0x57, 0x06, 0xF2, 0x22, 0xE1, 0xDF, 0x4A, + 0x91, 0xDD, 0x0C, 0xC6, 0x4D, 0xF1, 0x82, 0xDA, + 0x00, 0x73, 0x1D, 0x43, 0x9C, 0x46, 0xF8, 0xD2 + }, + { + 0xBB, 0x74, 0xF3, 0x6A, 0x9D, 0xB6, 0x96, 0xC9, + 0x33, 0x35, 0xE6, 0xC4, 0x6A, 0xAB, 0x58, 0xDB, + 0x10, 0xCB, 0x07, 0xEA, 0x4F, 0x1B, 0x71, 0x93, + 0x63, 0x05, 0x22, 0x83, 0x90, 0x95, 0x94, 0x78, + 0xF8, 0x73, 0x4E, 0x21, 0x54, 0x90, 0xE9, 0xAE, + 0x2A, 0x3E, 0xC8, 0xF7, 0xF7, 0x67, 0x33, 0xAE, + 0x3F, 0x8B, 0x9A, 0x3F, 0xD7, 0xC4, 0x06, 0xC6, + 0xCA, 0xC7, 0x09, 0x97, 0x5C, 0x40, 0xF8, 0x56 + }, + { + 0xEC, 0x63, 0x04, 0xD3, 0x8E, 0x23, 0x2C, 0x09, + 0x6A, 0xB5, 0x86, 0xCA, 0xDF, 0x27, 0x02, 0x6D, + 0xC5, 0xE5, 0x32, 0x17, 0xD0, 0xE8, 0xB0, 0xC6, + 0x0A, 0xDA, 0xAE, 0x22, 0xF4, 0xE8, 0xC2, 0x2D, + 0x30, 0xBC, 0x51, 0x77, 0xF1, 0xC8, 0x3A, 0xCD, + 0x92, 0x5E, 0x02, 0xA2, 0xDA, 0x89, 0x59, 0x5F, + 0xC1, 0x06, 0x09, 0x0E, 0x2E, 0x53, 0xED, 0xB3, + 0x1C, 0xDB, 0x76, 0xFF, 0x37, 0xEB, 0x61, 0x80 + }, + { + 0x92, 0xF9, 0xFC, 0x6B, 0xC5, 0x9A, 0x54, 0x3F, + 0x0D, 0xC9, 0xA1, 0x79, 0x8F, 0xB1, 0xE5, 0xD5, + 0x23, 0x47, 0x4E, 0x48, 0xFF, 0x3E, 0x29, 0x49, + 0x7F, 0x72, 0x80, 0xD1, 0xC4, 0x08, 0xC8, 0x66, + 0x33, 0x48, 0xFE, 0x2A, 0xF7, 0x8F, 0x6C, 0x4E, + 0x5E, 0xF5, 0xC0, 0xA0, 0x17, 0xF3, 0xD3, 0xF2, + 0x15, 0xEC, 0xDD, 0x7A, 0x40, 0x0A, 0xC5, 0x77, + 0x3B, 0x9E, 0x25, 0x60, 0x68, 0x84, 0x5A, 0x92 + }, + { + 0x4A, 0x25, 0xB5, 0x62, 0xF2, 0xFA, 0x01, 0xDD, + 0xEE, 0x7E, 0xA2, 0xE9, 0xFB, 0xF5, 0x2F, 0x8C, + 0x75, 0x6D, 0x28, 0xDB, 0x4A, 0x8B, 0xF7, 0x0E, + 0x74, 0x0E, 0x90, 0x27, 0x42, 0x6E, 0x51, 0x63, + 0x9D, 0xF8, 0x78, 0x8D, 0x13, 0x38, 0x56, 0x85, + 0x8D, 0x01, 0xFD, 0xDB, 0xDD, 0x5B, 0x98, 0x79, + 0x44, 0xC3, 0x00, 0xDC, 0x7F, 0x82, 0x41, 0xFB, + 0xCE, 0xFA, 0x4F, 0x12, 0x94, 0x8A, 0xFE, 0xAE + }, + { + 0x34, 0x21, 0x2D, 0xD9, 0xF0, 0x65, 0x1F, 0x81, + 0x80, 0x9A, 0x14, 0xED, 0xBC, 0xF7, 0xF3, 0xAC, + 0xDE, 0xDE, 0x78, 0x72, 0xC7, 0xA4, 0x84, 0x7B, + 0xEA, 0x9F, 0x7A, 0xB7, 0x59, 0x73, 0x82, 0x47, + 0x7A, 0x4C, 0xB8, 0x47, 0x9A, 0x27, 0x63, 0x21, + 0x23, 0x5E, 0x90, 0x21, 0x57, 0x94, 0x46, 0xA4, + 0x38, 0x8A, 0x99, 0xE5, 0x60, 0xA3, 0x90, 0x7A, + 0xEE, 0xF2, 0xB4, 0x38, 0xFE, 0x6B, 0x90, 0xC4 + }, + { + 0xD6, 0x2C, 0xF7, 0xAB, 0xBC, 0x7D, 0x7B, 0xCD, + 0x5B, 0xEB, 0x1E, 0xE4, 0x8C, 0x43, 0xB8, 0x04, + 0xFD, 0x0D, 0xB4, 0x55, 0xE7, 0xF4, 0xFE, 0xBB, + 0xCF, 0xF1, 0x4B, 0x05, 0xBE, 0x90, 0x47, 0xE2, + 0x7E, 0x51, 0x8D, 0x6D, 0x3A, 0x6A, 0xDA, 0x4D, + 0x58, 0x63, 0xB7, 0xEC, 0x7F, 0x84, 0x92, 0x45, + 0x89, 0x40, 0xAC, 0x6B, 0xDD, 0xB5, 0x06, 0x59, + 0x2C, 0xCB, 0xC8, 0x96, 0xAF, 0xBB, 0x77, 0xA3 + }, + { + 0x33, 0xA3, 0xA2, 0x63, 0x6F, 0x91, 0x98, 0xD3, + 0x7A, 0x5F, 0xF1, 0xBF, 0xF9, 0xEB, 0x10, 0x02, + 0x4B, 0x28, 0x46, 0x80, 0x39, 0xF4, 0x91, 0x40, + 0x2D, 0x39, 0xB7, 0x08, 0xC5, 0x5D, 0x27, 0xE5, + 0xE8, 0xDF, 0x5E, 0x3E, 0x19, 0x49, 0x95, 0x82, + 0x35, 0xCA, 0xD9, 0x80, 0x74, 0x20, 0x96, 0xF2, + 0x77, 0x9A, 0x1D, 0x71, 0xDA, 0xD5, 0x8F, 0xAF, + 0xA3, 0xCD, 0x02, 0xCB, 0x5E, 0xAA, 0x98, 0xC5 + }, + { + 0xB7, 0xA3, 0x89, 0x90, 0xE6, 0xF4, 0x56, 0x4A, + 0xA3, 0xD9, 0x3A, 0x79, 0x37, 0x10, 0x0C, 0x29, + 0xF9, 0x40, 0xAF, 0xF7, 0xCB, 0x20, 0x86, 0x5A, + 0x1C, 0x21, 0x89, 0x81, 0xA5, 0x42, 0x04, 0x86, + 0x08, 0x17, 0x81, 0xF8, 0xD5, 0x0C, 0x86, 0x62, + 0x5C, 0xC5, 0xD7, 0x6D, 0x0F, 0x5C, 0xCC, 0x4E, + 0xB6, 0x5D, 0x43, 0x66, 0x09, 0x62, 0x4F, 0x21, + 0xD0, 0x53, 0x39, 0xAB, 0x0C, 0xF7, 0x9F, 0x4C + }, + { + 0x9D, 0x66, 0x5A, 0x3F, 0xDD, 0x10, 0x45, 0x9E, + 0x77, 0xF0, 0x3A, 0xC8, 0xC0, 0xE2, 0x39, 0x01, + 0x94, 0x89, 0x69, 0x3C, 0xC9, 0x31, 0x5A, 0xA3, + 0xFF, 0x11, 0x29, 0x11, 0xD2, 0xAC, 0xF0, 0xB7, + 0xD2, 0x76, 0xAC, 0x76, 0x9B, 0xED, 0xFD, 0x85, + 0x2D, 0x28, 0x89, 0xDD, 0x12, 0xDB, 0x91, 0x39, + 0x8B, 0x01, 0xC4, 0xF4, 0xA5, 0xDA, 0x27, 0x80, + 0xB1, 0xDE, 0xFE, 0x0D, 0x95, 0xB6, 0x32, 0x70 + }, + { + 0x70, 0xFB, 0x9E, 0xFD, 0x5B, 0xCA, 0x7F, 0x19, + 0xB6, 0xE3, 0x1D, 0x64, 0x0D, 0xCF, 0x88, 0xD7, + 0x7E, 0x76, 0x8A, 0xE2, 0x27, 0xEC, 0xB3, 0xFD, + 0x6B, 0x47, 0x13, 0x78, 0x94, 0xF5, 0x49, 0xBF, + 0x1C, 0xF0, 0x6E, 0x5D, 0xB4, 0x54, 0x60, 0x44, + 0xDD, 0x9F, 0x46, 0x5C, 0x9C, 0x85, 0xF7, 0x28, + 0x4F, 0xE5, 0x4D, 0x2B, 0x71, 0x52, 0x69, 0x9B, + 0xE4, 0xBD, 0x55, 0x5A, 0x90, 0x9A, 0x88, 0xA9 + }, + { + 0x7A, 0xFD, 0xB0, 0x19, 0x30, 0x87, 0xE0, 0xC9, + 0xF8, 0xB4, 0xDD, 0x8B, 0x48, 0xD9, 0xF2, 0x0A, + 0xCE, 0x27, 0x13, 0xAF, 0xC7, 0x1B, 0xCC, 0x93, + 0x82, 0xB5, 0x42, 0x90, 0xAE, 0xBF, 0xFE, 0xB2, + 0xD1, 0x38, 0xF4, 0xDC, 0xF0, 0x28, 0xF9, 0xC4, + 0x3C, 0xC1, 0x80, 0x89, 0x84, 0x77, 0xA3, 0x9E, + 0x3F, 0x53, 0xA8, 0xD1, 0xBF, 0x67, 0xCE, 0xB6, + 0x08, 0x26, 0x1F, 0xAE, 0x6D, 0xDB, 0x1A, 0xBC + }, + { + 0x05, 0x99, 0x0D, 0x7D, 0x7D, 0xF1, 0xD4, 0x84, + 0xF5, 0xB1, 0xCA, 0xE9, 0xEE, 0x5D, 0xFC, 0xB4, + 0x3F, 0x2C, 0xBE, 0x18, 0x6C, 0x1A, 0x5B, 0x18, + 0x1A, 0x37, 0x31, 0xD4, 0xB1, 0x54, 0x8E, 0xBF, + 0xF5, 0xBF, 0x61, 0xCB, 0x0F, 0x6D, 0x9F, 0xC2, + 0x30, 0xF2, 0x5E, 0x86, 0x78, 0xB7, 0x99, 0xE0, + 0xE8, 0x30, 0x26, 0xA0, 0x86, 0x6B, 0xF0, 0xAC, + 0xAB, 0x08, 0x9E, 0x10, 0x2E, 0x67, 0xAB, 0x6B + }, + { + 0x1A, 0xF7, 0xA5, 0xCE, 0x58, 0x7C, 0x8D, 0x87, + 0xC7, 0xB7, 0x9F, 0xA3, 0xE7, 0x23, 0xD7, 0x4C, + 0xE0, 0x26, 0xB5, 0x28, 0x67, 0x52, 0xFD, 0x0C, + 0x37, 0x42, 0xC6, 0xF0, 0x41, 0x8E, 0xD7, 0x85, + 0x99, 0x0D, 0x21, 0xF2, 0x8D, 0xA8, 0x39, 0xCE, + 0x82, 0x12, 0xED, 0x55, 0x0C, 0x37, 0x3E, 0x6D, + 0x3A, 0x75, 0xD5, 0x5C, 0x31, 0x77, 0x04, 0x41, + 0xEE, 0xAF, 0xF2, 0xD5, 0x0F, 0x6E, 0x61, 0xB6 + }, + { + 0xDD, 0xEE, 0x0C, 0x76, 0xC9, 0xBD, 0xD3, 0x2D, + 0x70, 0x49, 0x35, 0x4C, 0xFC, 0x85, 0xDC, 0x68, + 0x67, 0xE2, 0x49, 0x2E, 0x47, 0xFE, 0xB0, 0x8E, + 0x39, 0x83, 0xD0, 0xB6, 0x78, 0x84, 0x5D, 0x7E, + 0xC6, 0xC9, 0x79, 0x3C, 0x33, 0x26, 0xBF, 0xDC, + 0x1E, 0x11, 0x32, 0x76, 0xD1, 0x77, 0xFE, 0x38, + 0x82, 0x52, 0x04, 0xDD, 0x00, 0x07, 0x39, 0x89, + 0xC0, 0x81, 0xCC, 0x3B, 0x71, 0xC6, 0x8D, 0x5F + }, + { + 0xDE, 0x07, 0x06, 0x48, 0xB3, 0x7C, 0x47, 0xDC, + 0x9F, 0x2F, 0x6D, 0x2A, 0xB2, 0x07, 0x73, 0xCD, + 0x82, 0xFA, 0x57, 0x25, 0xA6, 0x90, 0x0E, 0xB7, + 0x1C, 0xDD, 0xB0, 0xC9, 0xF3, 0x9B, 0x31, 0xDF, + 0x6D, 0x07, 0x73, 0x24, 0x6E, 0x8E, 0xF9, 0x03, + 0x49, 0x67, 0x75, 0x2D, 0xB7, 0xED, 0x22, 0x73, + 0x3F, 0x43, 0x79, 0x94, 0x8D, 0xC3, 0x96, 0xDC, + 0x35, 0xAD, 0xBB, 0xE9, 0xF6, 0x53, 0x77, 0x40 + }, + { + 0xA6, 0x45, 0x6F, 0xBC, 0xFF, 0x9E, 0x3D, 0x5B, + 0x11, 0x6A, 0x0E, 0x33, 0x1A, 0x1F, 0x97, 0x4F, + 0x07, 0x0E, 0x95, 0x56, 0x09, 0x78, 0x1F, 0xA5, + 0x99, 0xD6, 0x08, 0xA3, 0x1D, 0xA7, 0x6A, 0xD8, + 0xAB, 0xFE, 0x34, 0x66, 0x17, 0xC2, 0x57, 0x86, + 0x51, 0x3B, 0x2C, 0x44, 0xBF, 0xE2, 0xCB, 0x45, + 0x7C, 0x43, 0xFA, 0x6F, 0x45, 0x36, 0x1C, 0xA9, + 0xC6, 0x34, 0x13, 0x11, 0xB7, 0xDD, 0xFB, 0xD5 + }, + { + 0x5C, 0x95, 0xD3, 0x82, 0x02, 0x18, 0x91, 0x04, + 0x8B, 0x5E, 0xC8, 0x1C, 0xC8, 0x8E, 0x66, 0xB1, + 0xB4, 0xD8, 0x0A, 0x00, 0xB5, 0xEE, 0x66, 0xB3, + 0xC0, 0x30, 0x77, 0x49, 0xE6, 0xF2, 0x4D, 0x17, + 0x0D, 0x23, 0xFA, 0xCC, 0x8E, 0xB2, 0x53, 0xB3, + 0x56, 0x2B, 0xF8, 0xA4, 0x5C, 0x37, 0x99, 0x0C, + 0xD2, 0xD3, 0xE4, 0x43, 0xB1, 0x8C, 0x68, 0xBB, + 0xCC, 0x6C, 0x83, 0x1D, 0xFD, 0xE2, 0xF8, 0xE5 + }, + { + 0xE3, 0x74, 0x00, 0xDB, 0xD9, 0x21, 0x0F, 0x31, + 0x37, 0xAC, 0xAF, 0x49, 0x24, 0x2F, 0xA1, 0x23, + 0xA0, 0x52, 0x95, 0x8A, 0x4C, 0x0D, 0x98, 0x90, + 0x62, 0x47, 0xD5, 0x35, 0xA3, 0x51, 0xFD, 0x52, + 0x29, 0x6E, 0x70, 0x10, 0x32, 0x5B, 0xDA, 0x84, + 0x1F, 0xA2, 0xAA, 0xB4, 0x47, 0x63, 0x76, 0x3C, + 0x55, 0x04, 0xD7, 0xB3, 0x0C, 0x6D, 0x79, 0xFC, + 0x1D, 0xC8, 0xCF, 0x10, 0x24, 0x46, 0x6D, 0xB0 + }, + { + 0x52, 0x73, 0xA3, 0xA1, 0x3C, 0xF0, 0xEC, 0x72, + 0x00, 0x44, 0x2C, 0xBD, 0x7B, 0x37, 0x44, 0x66, + 0xA7, 0x19, 0x0D, 0xDC, 0xA1, 0x31, 0xD9, 0x63, + 0xF8, 0xF8, 0x39, 0x65, 0xAE, 0xD3, 0xDD, 0x86, + 0xE9, 0xD4, 0x5A, 0xB4, 0x89, 0xB9, 0xC5, 0x62, + 0x47, 0xC9, 0xF2, 0xAA, 0x69, 0xFD, 0x7E, 0x31, + 0x87, 0xB8, 0xFA, 0x0D, 0xAC, 0x77, 0xC4, 0x7C, + 0xB2, 0x95, 0xBA, 0x62, 0x96, 0x78, 0x43, 0x94 + }, + { + 0x2A, 0xDB, 0x93, 0x49, 0xA9, 0xEC, 0x37, 0xFF, + 0x49, 0x62, 0xF4, 0x21, 0x7E, 0x80, 0xEB, 0xDC, + 0xD3, 0x60, 0x96, 0x7B, 0x51, 0x3D, 0x12, 0x02, + 0xD9, 0x98, 0x28, 0x31, 0x15, 0x5D, 0x2F, 0x43, + 0xEB, 0x9A, 0xDD, 0x63, 0xB5, 0xEC, 0x10, 0xD3, + 0xD0, 0x43, 0x0D, 0xC9, 0xCF, 0x76, 0x48, 0x11, + 0x7F, 0xC6, 0x0B, 0xAB, 0xBF, 0x8E, 0xBF, 0x19, + 0xFA, 0xCE, 0xE5, 0x50, 0x45, 0x5B, 0x60, 0xC9 + }, + { + 0xAC, 0xAA, 0xDA, 0x3E, 0x47, 0x37, 0xC6, 0x63, + 0xEB, 0xF0, 0x3C, 0x02, 0x49, 0xCC, 0xA6, 0xF3, + 0x17, 0x9A, 0x03, 0x84, 0xEA, 0x2A, 0xB1, 0x35, + 0xD4, 0xD7, 0xA2, 0xBB, 0x8A, 0x2F, 0x40, 0x53, + 0x9C, 0xDC, 0xE8, 0xA3, 0x76, 0x0F, 0xD1, 0x3D, + 0xEE, 0xEC, 0xD1, 0x60, 0x61, 0x7F, 0x72, 0xDE, + 0x63, 0x75, 0x4E, 0x21, 0x57, 0xCA, 0xDC, 0xF0, + 0x67, 0x32, 0x9C, 0x2A, 0x51, 0x98, 0xF8, 0xE0 + }, + { + 0xEF, 0x15, 0xE6, 0xDB, 0x96, 0xE6, 0xD0, 0xC1, + 0x8C, 0x70, 0xAD, 0xC3, 0xCD, 0xB3, 0x2B, 0x28, + 0x67, 0x74, 0x02, 0xE8, 0xEA, 0x44, 0x11, 0xEA, + 0x2F, 0x34, 0x68, 0xED, 0x93, 0x82, 0xE1, 0x9B, + 0xFE, 0xCA, 0xF5, 0xAC, 0xB8, 0x28, 0xA5, 0x2B, + 0xE1, 0x6B, 0x98, 0x1E, 0x48, 0x7E, 0x5B, 0xB4, + 0xA1, 0x43, 0x08, 0x65, 0x35, 0x8E, 0x97, 0x9F, + 0xB1, 0x07, 0x1F, 0xB9, 0x51, 0x14, 0xFF, 0xDD + }, + { + 0x05, 0x7E, 0xAB, 0x8F, 0xA6, 0x1C, 0x23, 0x09, + 0x67, 0xD9, 0x5D, 0xFB, 0x75, 0x45, 0x57, 0x0E, + 0x34, 0x1A, 0xE3, 0xC6, 0x73, 0x7C, 0x7D, 0xB2, + 0xA2, 0x27, 0xD9, 0x0F, 0xF3, 0x15, 0xD0, 0x98, + 0xD4, 0x76, 0xF7, 0x15, 0x77, 0x9E, 0x67, 0x72, + 0xB4, 0xED, 0x37, 0x54, 0x82, 0x66, 0xE6, 0x59, + 0x8C, 0x6F, 0x09, 0x69, 0x13, 0xC2, 0xFD, 0xD8, + 0xD6, 0xE4, 0x4F, 0xE2, 0xB5, 0x4D, 0x97, 0x80 + }, + { + 0xED, 0xE6, 0x8D, 0x1B, 0x13, 0xE7, 0xEF, 0x78, + 0xD9, 0xC4, 0xEE, 0x10, 0xEC, 0xEB, 0x1D, 0x2A, + 0xEE, 0xC3, 0xB8, 0x15, 0x7F, 0xDB, 0x91, 0x41, + 0x8C, 0x22, 0x19, 0xF6, 0x41, 0x49, 0x74, 0x70, + 0x17, 0xAC, 0xA7, 0xD4, 0x65, 0xB8, 0xB4, 0x7F, + 0xFA, 0x53, 0x64, 0x4B, 0x8B, 0xC6, 0xDA, 0x12, + 0xDD, 0x45, 0xD1, 0x05, 0x5E, 0x47, 0xB4, 0xD8, + 0x39, 0x0E, 0xB2, 0xBD, 0x60, 0x2B, 0xA0, 0x30 + }, + { + 0x27, 0xF8, 0x56, 0xE6, 0x3E, 0xB9, 0x4D, 0x08, + 0xFB, 0xBE, 0x50, 0x22, 0xB0, 0xED, 0xDB, 0xC7, + 0xD8, 0xDB, 0x86, 0x5E, 0xF4, 0xFE, 0xC2, 0x05, + 0x86, 0xDF, 0x3D, 0xD9, 0x02, 0xA0, 0x5B, 0x26, + 0x35, 0x9E, 0x26, 0x7C, 0x78, 0x8D, 0x7C, 0x88, + 0x03, 0x2E, 0x76, 0x6B, 0x11, 0x87, 0x40, 0x20, + 0x0F, 0x49, 0xCB, 0x4D, 0x6E, 0xDB, 0x15, 0x61, + 0xB2, 0xDE, 0x7D, 0xC6, 0x5E, 0xE6, 0x42, 0x3B + }, + { + 0xE9, 0xE9, 0x8D, 0x6D, 0xE0, 0xEF, 0x53, 0xFD, + 0x24, 0x27, 0x66, 0x1E, 0x1A, 0xCF, 0x10, 0x3D, + 0x4C, 0xAA, 0x4D, 0xC6, 0x10, 0x03, 0x62, 0x09, + 0xEC, 0x99, 0x74, 0x19, 0xC1, 0x20, 0x63, 0x1C, + 0x2C, 0x09, 0x4A, 0x8E, 0xE7, 0x82, 0x2D, 0x43, + 0xF8, 0x77, 0x80, 0x11, 0xC6, 0x03, 0x11, 0x1F, + 0x26, 0x28, 0xF8, 0x97, 0xC9, 0xB4, 0x31, 0x31, + 0x54, 0x77, 0x75, 0x6B, 0x03, 0x2E, 0x1F, 0x8D + }, + { + 0x52, 0xEB, 0x1E, 0x6C, 0x8A, 0x54, 0x49, 0x2C, + 0xA7, 0x60, 0xB5, 0x6C, 0xA8, 0x7D, 0xA3, 0xE1, + 0xA9, 0xA6, 0xD8, 0xA4, 0x21, 0x92, 0x19, 0x35, + 0x1D, 0x18, 0x71, 0x5A, 0x9A, 0x2C, 0x26, 0x70, + 0x8B, 0xB7, 0x12, 0xCD, 0xAC, 0x04, 0x34, 0x48, + 0x2E, 0x55, 0x1C, 0xB0, 0x9E, 0x3F, 0x16, 0x33, + 0x8D, 0xE2, 0x9B, 0xE2, 0xC6, 0x67, 0x40, 0xC3, + 0x44, 0xDF, 0x54, 0x88, 0xC5, 0xC2, 0xBB, 0x26 + }, + { + 0x47, 0x3F, 0xA6, 0xC5, 0x1A, 0x48, 0x10, 0x5F, + 0x72, 0x1C, 0x5C, 0xB8, 0xDB, 0xA6, 0x1C, 0x64, + 0xA1, 0xE3, 0xDD, 0xCC, 0xC3, 0x25, 0x0E, 0x68, + 0x22, 0x62, 0xF2, 0x12, 0xC0, 0x1A, 0xB4, 0x87, + 0x4A, 0xFF, 0x68, 0x8F, 0xEA, 0x96, 0x37, 0x73, + 0x9E, 0x2A, 0x25, 0xD2, 0xEE, 0x88, 0xDB, 0xDC, + 0xC4, 0xF0, 0x4D, 0x01, 0x47, 0x9B, 0x30, 0x17, + 0x17, 0x53, 0x3A, 0x64, 0x32, 0xB8, 0x50, 0xCD + }, + { + 0x6B, 0x76, 0x60, 0xD4, 0x10, 0xEA, 0xE5, 0xF3, + 0x5A, 0xD0, 0xAE, 0x85, 0xE6, 0x3D, 0xA4, 0x53, + 0xEB, 0xB0, 0x57, 0xE4, 0x3F, 0x42, 0xE8, 0x42, + 0xCB, 0xF6, 0x25, 0x0D, 0xA6, 0x78, 0x66, 0xB4, + 0x24, 0x0D, 0x57, 0xC8, 0x3B, 0x77, 0x1B, 0x0F, + 0x70, 0x66, 0x3E, 0x17, 0xFB, 0xD9, 0x08, 0x7F, + 0x76, 0xB4, 0xCE, 0x6B, 0xCD, 0x0B, 0x50, 0x2E, + 0x33, 0x74, 0xB1, 0x50, 0x9B, 0xBA, 0x55, 0xA8 + }, + { + 0xA4, 0xD0, 0x8A, 0xCA, 0x7A, 0x9E, 0xA6, 0x43, + 0x99, 0x99, 0xEA, 0x21, 0xE4, 0xCF, 0xE9, 0x86, + 0x9B, 0xB9, 0x0E, 0x3A, 0x01, 0x48, 0x71, 0xAD, + 0x88, 0xED, 0x3A, 0x97, 0xAA, 0x89, 0x15, 0x95, + 0x1C, 0x3F, 0xD0, 0xB3, 0x93, 0x3A, 0x50, 0x85, + 0x88, 0x93, 0x8A, 0xF7, 0x54, 0x49, 0x44, 0xEF, + 0x43, 0xC4, 0x40, 0xAA, 0x8F, 0xF1, 0xE5, 0xA8, + 0x18, 0xA4, 0x66, 0x43, 0x5D, 0xE7, 0x0F, 0xA8 + }, + { + 0x85, 0xE0, 0xE9, 0xB5, 0x0D, 0x2D, 0xB0, 0x22, + 0xC2, 0x39, 0xD7, 0x23, 0x2A, 0xE4, 0x7C, 0x02, + 0x59, 0x22, 0xE4, 0xF0, 0x7E, 0x2A, 0xFC, 0x65, + 0x6C, 0xDC, 0x55, 0x53, 0xA2, 0x7D, 0x95, 0xBF, + 0xA5, 0x8A, 0x57, 0x4D, 0x4E, 0xC3, 0xA9, 0x73, + 0x28, 0x1A, 0x8F, 0x4E, 0x46, 0xA7, 0x1A, 0xB0, + 0x34, 0x1C, 0x25, 0x77, 0x28, 0x74, 0x63, 0xE2, + 0x51, 0x04, 0x4D, 0xB2, 0x39, 0x8D, 0x55, 0xE2 + }, + { + 0x81, 0xA0, 0xD0, 0x24, 0x42, 0x90, 0x51, 0x91, + 0x16, 0x33, 0x70, 0xAE, 0x29, 0xC7, 0xF8, 0x9C, + 0x0F, 0x48, 0xBC, 0x1A, 0x1E, 0xB2, 0x94, 0x70, + 0x47, 0xDA, 0x1C, 0x62, 0x2B, 0x86, 0x77, 0xE9, + 0xEA, 0x9B, 0xEC, 0xED, 0x55, 0xD3, 0x3A, 0xDB, + 0x15, 0x53, 0xBD, 0x58, 0x4A, 0xD2, 0xF8, 0x6A, + 0x62, 0x07, 0xE8, 0x4E, 0x40, 0xE4, 0x60, 0x7E, + 0x11, 0x65, 0x0E, 0xE2, 0x87, 0x9F, 0x4E, 0x0B + }, + { + 0x87, 0x79, 0x0D, 0xF6, 0xCF, 0x73, 0x94, 0x45, + 0x1B, 0xCC, 0x73, 0x0E, 0x53, 0xFC, 0x57, 0xBE, + 0x56, 0x45, 0x22, 0x77, 0x1E, 0x14, 0x43, 0x2A, + 0x80, 0xAB, 0x0B, 0x06, 0xB7, 0xB1, 0xD2, 0x09, + 0xAD, 0x69, 0x89, 0x95, 0x12, 0x53, 0x85, 0xDB, + 0x8B, 0x3C, 0x09, 0x59, 0xB8, 0xA5, 0x33, 0x9E, + 0xDA, 0x0A, 0xE6, 0x78, 0x59, 0xD8, 0x47, 0xF4, + 0x4C, 0x81, 0x59, 0x72, 0x72, 0xCB, 0xF1, 0x95 + }, + { + 0xCC, 0x06, 0x4E, 0xA8, 0x53, 0xDC, 0x01, 0x52, + 0xCC, 0x03, 0xFE, 0xB5, 0xFB, 0x5D, 0xE7, 0x8B, + 0x9B, 0x88, 0xE9, 0x61, 0x55, 0xD5, 0x35, 0x8B, + 0xCE, 0x84, 0xA5, 0x4C, 0x0E, 0x0C, 0x42, 0xFB, + 0xDA, 0x09, 0x2F, 0x22, 0xD0, 0x56, 0xDF, 0x99, + 0x93, 0x26, 0x2E, 0x2B, 0xA4, 0x4A, 0x5B, 0x2D, + 0x53, 0xC3, 0x75, 0x9D, 0x09, 0x45, 0xFE, 0xBA, + 0xA6, 0xFD, 0x51, 0xB8, 0xFF, 0x38, 0xD8, 0x39 + }, + { + 0x7E, 0x51, 0x7F, 0xC3, 0x83, 0xEE, 0x8C, 0x9F, + 0x0A, 0x01, 0x68, 0x1D, 0x39, 0xE7, 0x3B, 0xEB, + 0xA5, 0x96, 0x95, 0x95, 0xCE, 0x77, 0x92, 0x7F, + 0x91, 0x69, 0x1F, 0x33, 0xBB, 0x3E, 0x13, 0x07, + 0xEE, 0x03, 0x61, 0x6C, 0x27, 0xE6, 0x79, 0x51, + 0x86, 0xF6, 0x94, 0x0F, 0xED, 0xD9, 0xD5, 0xC7, + 0xF2, 0x1B, 0x6D, 0x2A, 0xAF, 0x70, 0x29, 0x9C, + 0xDD, 0x83, 0x51, 0x25, 0x05, 0x0A, 0x8B, 0x3C + }, + { + 0x84, 0x5F, 0xCF, 0xA6, 0x7F, 0x6E, 0x06, 0x55, + 0x10, 0xD2, 0x62, 0xF1, 0xDD, 0x69, 0x39, 0xEA, + 0x4C, 0x0A, 0x4A, 0x59, 0xC8, 0xEE, 0x39, 0x77, + 0xDB, 0x70, 0x05, 0xE1, 0xAE, 0xE4, 0x20, 0xBD, + 0x3F, 0x38, 0x26, 0xEC, 0xFE, 0x59, 0x01, 0x5B, + 0x4D, 0xFA, 0x0B, 0xD5, 0xBB, 0xF8, 0xD8, 0xA4, + 0x34, 0x48, 0x5D, 0xC1, 0x1C, 0xB9, 0xCC, 0x85, + 0x97, 0xCB, 0x8C, 0x95, 0x66, 0x11, 0x5F, 0x31 + }, + { + 0x17, 0xCF, 0x2C, 0x23, 0x21, 0x5B, 0xCD, 0xFC, + 0x24, 0x3D, 0x8A, 0x94, 0x5F, 0x3C, 0x5C, 0x25, + 0x1D, 0x27, 0x18, 0xA3, 0xF7, 0x5F, 0xED, 0x6F, + 0x33, 0x20, 0xBC, 0xC6, 0xFD, 0x92, 0x73, 0x86, + 0xD5, 0x6F, 0x87, 0x19, 0xCC, 0xA0, 0x2E, 0xC5, + 0xE9, 0x9C, 0xDA, 0xC4, 0xEA, 0x10, 0x95, 0xB4, + 0x65, 0xBA, 0x9A, 0x29, 0x8B, 0x1D, 0x23, 0x8E, + 0x38, 0xB3, 0xFA, 0x15, 0xE8, 0xB1, 0x4E, 0xE4 + }, + { + 0xD7, 0x89, 0xCE, 0xC7, 0xD7, 0x52, 0x0F, 0x10, + 0xE8, 0xB8, 0xB6, 0xC8, 0x40, 0x95, 0x89, 0xDF, + 0x57, 0xB8, 0x56, 0xB8, 0x24, 0x55, 0x68, 0xF6, + 0x4E, 0x2D, 0x21, 0x83, 0xE3, 0x59, 0xA7, 0x84, + 0xC8, 0xD2, 0x6C, 0xF9, 0xB7, 0x20, 0xF5, 0xDF, + 0x56, 0x7B, 0x01, 0xF3, 0xF4, 0x8D, 0xE6, 0x4D, + 0x4F, 0x0D, 0xB1, 0x56, 0xBE, 0x52, 0x5D, 0x7C, + 0x7A, 0x66, 0x5A, 0xAD, 0xC5, 0x91, 0xF0, 0xB6 + }, + { + 0xB5, 0xE2, 0x46, 0xA9, 0x02, 0x77, 0x10, 0xC0, + 0xB0, 0x55, 0xC7, 0x1F, 0x11, 0x67, 0xE0, 0xEE, + 0x36, 0xEB, 0xC4, 0x32, 0xCF, 0x5D, 0x14, 0x27, + 0x75, 0xA7, 0xAE, 0xCC, 0xCE, 0xA7, 0x83, 0x25, + 0xED, 0x8C, 0x12, 0xF5, 0x0F, 0xBE, 0x64, 0x8A, + 0xDD, 0xF0, 0x59, 0xB8, 0xC0, 0x2A, 0x61, 0x49, + 0x2F, 0x83, 0x57, 0xBE, 0xE1, 0x42, 0xE7, 0xF7, + 0xDE, 0x04, 0x33, 0x78, 0xDB, 0xCF, 0x2D, 0x33 + }, + { + 0xB5, 0x23, 0xFD, 0x77, 0xAB, 0x9E, 0xEE, 0x42, + 0x48, 0x72, 0xBC, 0x2E, 0x83, 0xFC, 0x0A, 0x77, + 0xFF, 0x8A, 0x90, 0xC9, 0xA0, 0xCE, 0x9E, 0x8C, + 0x87, 0x68, 0x0A, 0x0F, 0x62, 0x86, 0x33, 0x1F, + 0x15, 0xC9, 0x3A, 0x2A, 0xFE, 0xCF, 0x75, 0x66, + 0x65, 0x3F, 0x24, 0xD9, 0x30, 0xC3, 0x23, 0x19, + 0x2D, 0x30, 0x43, 0xB9, 0x05, 0x72, 0x1C, 0xBD, + 0xB6, 0x31, 0x11, 0xCA, 0x42, 0xF2, 0x8F, 0x4E + }, + { + 0x43, 0x59, 0xA4, 0x58, 0x76, 0xBF, 0x6A, 0xCC, + 0x0A, 0xEC, 0xE7, 0xB9, 0xB4, 0xB4, 0xA8, 0x38, + 0xB9, 0xDB, 0xA5, 0x77, 0x6A, 0x3B, 0x14, 0xDA, + 0x2F, 0xBA, 0x91, 0x02, 0xE7, 0x8B, 0xF6, 0x48, + 0xFF, 0xB4, 0xD8, 0x67, 0xBA, 0xE8, 0x5F, 0xD9, + 0xB7, 0x13, 0x12, 0xDC, 0x46, 0x02, 0xD0, 0xD4, + 0x9C, 0x90, 0x7B, 0xB9, 0x28, 0x9B, 0x22, 0x95, + 0x96, 0x1E, 0x54, 0x13, 0x81, 0x23, 0xF5, 0x4A + }, + { + 0xD3, 0xF2, 0xC8, 0xE7, 0x4F, 0x34, 0x3A, 0x4E, + 0x71, 0x90, 0xD4, 0x75, 0xCF, 0x9A, 0xF7, 0x54, + 0xEE, 0xD5, 0x57, 0x72, 0x62, 0xB3, 0x5B, 0xD9, + 0xA9, 0xC4, 0x2B, 0x58, 0xCE, 0x88, 0x26, 0x2E, + 0x31, 0x14, 0x91, 0x7F, 0xB9, 0xE6, 0x83, 0xC6, + 0x2D, 0x9F, 0x89, 0x47, 0xB5, 0x8A, 0x29, 0x4D, + 0xA5, 0x06, 0xFB, 0x86, 0xB3, 0xED, 0xF2, 0x5C, + 0xB9, 0xE2, 0xD2, 0xDF, 0x61, 0x1C, 0xD4, 0x48 + }, + { + 0x41, 0xB8, 0x90, 0xF8, 0xE8, 0x45, 0x0D, 0xAD, + 0xB6, 0x95, 0x9A, 0xCC, 0xBA, 0x19, 0x49, 0x17, + 0xE0, 0x2F, 0x30, 0x67, 0x82, 0x1D, 0x4E, 0x99, + 0x5A, 0x37, 0xAC, 0x18, 0xBA, 0x3E, 0x47, 0xC7, + 0x50, 0x6E, 0x7A, 0x3D, 0xD1, 0xE1, 0x12, 0xE6, + 0xEC, 0x41, 0xBE, 0xF5, 0x30, 0x85, 0x11, 0x20, + 0x89, 0x4A, 0x7B, 0x34, 0xB3, 0xDB, 0xCD, 0xAE, + 0x40, 0x73, 0x27, 0xF0, 0xC5, 0x73, 0x6E, 0xDF + }, + { + 0x19, 0xD7, 0x14, 0x4F, 0x0C, 0x85, 0x1E, 0xB8, + 0xB0, 0x53, 0xA3, 0xA4, 0x35, 0x86, 0x52, 0x6D, + 0xC5, 0xC7, 0x73, 0xE4, 0x97, 0x97, 0x51, 0x64, + 0xD1, 0x11, 0x51, 0x36, 0x43, 0x68, 0xDF, 0x24, + 0xBC, 0x44, 0xD5, 0x36, 0x07, 0x23, 0x04, 0xD7, + 0x06, 0x31, 0xA8, 0x40, 0xB6, 0x36, 0xB9, 0x66, + 0xFD, 0x02, 0x8F, 0x61, 0x06, 0x2B, 0xFC, 0x52, + 0x85, 0x67, 0x01, 0x53, 0xA6, 0x36, 0x3A, 0x0A + }, + { + 0xC2, 0x18, 0x4C, 0x1A, 0x81, 0xE9, 0x83, 0xBE, + 0x2C, 0x96, 0xE4, 0xCF, 0xD6, 0x5A, 0xFB, 0xDA, + 0x1A, 0xC6, 0xEF, 0x35, 0x26, 0x6E, 0xE4, 0xB3, + 0xAB, 0x1F, 0xB0, 0x3A, 0xBA, 0xDD, 0xFD, 0xD4, + 0x03, 0xFF, 0xFC, 0xAF, 0xB4, 0xAD, 0xE0, 0xE9, + 0x2D, 0xA3, 0x82, 0xDA, 0x8C, 0x40, 0x22, 0x2E, + 0x10, 0xE9, 0xFD, 0xE8, 0x56, 0xC5, 0x1B, 0xDA, + 0xCD, 0xE7, 0x41, 0xA6, 0x49, 0xF7, 0x33, 0x5D + }, + { + 0x48, 0x8C, 0x0D, 0x65, 0x2E, 0x42, 0xFD, 0x78, + 0xAB, 0x3A, 0x2D, 0xC2, 0x8C, 0xF3, 0xEB, 0x35, + 0xFC, 0xDD, 0xC8, 0xDE, 0xF7, 0xEA, 0xD4, 0x81, + 0x7B, 0xFF, 0xB6, 0x4C, 0x1A, 0xE0, 0xF2, 0x08, + 0xF7, 0x8C, 0xF4, 0x09, 0x76, 0xF7, 0xE2, 0xA2, + 0xCB, 0x2D, 0xD3, 0x0F, 0x1C, 0x99, 0x13, 0x02, + 0x08, 0xCE, 0xB6, 0x92, 0xC6, 0x68, 0x80, 0xD9, + 0x52, 0x8C, 0xD6, 0xD3, 0x8A, 0xD2, 0x9D, 0xB2 + }, + { + 0x51, 0x5B, 0x65, 0xBF, 0x65, 0x68, 0x83, 0x99, + 0x57, 0x5F, 0x0E, 0x06, 0x77, 0xBB, 0x6A, 0x91, + 0x9B, 0x66, 0x33, 0x55, 0x46, 0xD6, 0xCA, 0xE3, + 0x36, 0xF5, 0xC6, 0xFE, 0xAE, 0x5E, 0x2B, 0xF7, + 0x45, 0xE3, 0xA7, 0xB1, 0x3C, 0x32, 0x05, 0xDD, + 0x8B, 0x5B, 0x92, 0xCF, 0x05, 0x3B, 0xE9, 0x69, + 0xDF, 0x71, 0x20, 0xFC, 0xEF, 0x77, 0xE3, 0x89, + 0x5F, 0x56, 0x0F, 0xD2, 0x32, 0xFB, 0x89, 0x50 + }, + { + 0x3F, 0xDB, 0xC7, 0xD6, 0x9F, 0x4B, 0x53, 0xC2, + 0x25, 0x66, 0x3D, 0xA3, 0x0D, 0x80, 0xF7, 0x2E, + 0x54, 0x28, 0x10, 0x44, 0xA2, 0x2B, 0x98, 0x82, + 0xC6, 0x63, 0x8F, 0x55, 0x26, 0x83, 0x4B, 0xD3, + 0x16, 0x01, 0xCA, 0x5E, 0xB2, 0xCC, 0xA4, 0xF5, + 0xFF, 0xCF, 0x67, 0x5D, 0xCB, 0xCF, 0xCA, 0x60, + 0xC8, 0xA3, 0x61, 0x2D, 0x1A, 0xA9, 0xDA, 0xB6, + 0x93, 0xB2, 0x35, 0x60, 0x69, 0x60, 0x3A, 0x0E + }, + { + 0x4F, 0xF6, 0xC3, 0x1A, 0x8F, 0xC0, 0x01, 0xAC, + 0x3B, 0x7A, 0xE0, 0x20, 0xC5, 0xF7, 0xC4, 0x5E, + 0xFB, 0x62, 0x71, 0xA2, 0xD7, 0xCC, 0xAB, 0x87, + 0x13, 0xE5, 0x48, 0xB7, 0x29, 0xF0, 0xFF, 0xF9, + 0xC8, 0x2F, 0xD4, 0xDB, 0x5C, 0xF6, 0x56, 0x43, + 0xD4, 0x07, 0x6A, 0x3F, 0xB1, 0x7B, 0x3E, 0x89, + 0x3C, 0x30, 0x2D, 0xC7, 0x5B, 0x61, 0x22, 0xFF, + 0x86, 0x81, 0xD0, 0x37, 0x12, 0x0E, 0x27, 0x6A + }, + { + 0x43, 0xDF, 0xF2, 0x60, 0xDF, 0xEF, 0x1C, 0xB2, + 0xD6, 0x16, 0x00, 0xE2, 0x40, 0xAA, 0xD6, 0xB7, + 0x20, 0xE5, 0xF4, 0xF8, 0x30, 0x86, 0xE2, 0x6A, + 0x49, 0xA0, 0xCE, 0x3E, 0x0C, 0xA4, 0x4B, 0x9A, + 0x60, 0xFC, 0xF4, 0x6A, 0x8C, 0x3F, 0x1B, 0xB1, + 0xA6, 0xF5, 0x76, 0x2B, 0x66, 0x51, 0x3F, 0xE3, + 0xF7, 0xC5, 0xB0, 0xBC, 0x15, 0x0C, 0x08, 0x49, + 0x1A, 0xCB, 0xC4, 0x36, 0x1C, 0xAB, 0xCF, 0xDF + }, + { + 0xB4, 0xDE, 0xA9, 0x4C, 0x9D, 0x36, 0x75, 0xBE, + 0x05, 0x12, 0xEF, 0xDE, 0xA8, 0x16, 0x38, 0x70, + 0xFE, 0x34, 0x25, 0xDC, 0xD7, 0x61, 0xF3, 0x63, + 0xC4, 0x3A, 0x0C, 0xA5, 0x71, 0x6B, 0x76, 0x54, + 0x06, 0x63, 0xFB, 0x2B, 0xE4, 0x9E, 0x2D, 0xB1, + 0x06, 0x48, 0x5C, 0x9C, 0xDD, 0x3C, 0x16, 0x48, + 0x98, 0xA9, 0x54, 0xB5, 0x87, 0x48, 0xC4, 0x2F, + 0xEA, 0x16, 0xA4, 0x0F, 0xC4, 0x53, 0xD2, 0x10 + }, + { + 0xE5, 0x27, 0x7B, 0x6F, 0x93, 0xEA, 0x1D, 0xE3, + 0xE2, 0xD9, 0xFC, 0xD8, 0xC6, 0x79, 0x79, 0x3C, + 0x6C, 0xCB, 0x8A, 0x3B, 0xE2, 0x6E, 0x8E, 0x31, + 0x14, 0xF3, 0x5D, 0xA4, 0xF2, 0xAC, 0x01, 0x4F, + 0x55, 0xC2, 0xF1, 0x5E, 0x09, 0xE9, 0x4A, 0xA0, + 0x71, 0x29, 0x81, 0x67, 0xA2, 0xFB, 0x9B, 0xE3, + 0x11, 0x70, 0x1F, 0xFB, 0xA9, 0xD3, 0xEE, 0xFF, + 0x8F, 0xFC, 0x79, 0x93, 0xA3, 0xCE, 0xCE, 0x18 + }, + { + 0xF0, 0x95, 0xA7, 0xC6, 0xE2, 0xB9, 0x16, 0x64, + 0x73, 0x4F, 0x3E, 0x23, 0xF1, 0x8E, 0xB2, 0xBA, + 0x9B, 0x00, 0xE7, 0x1F, 0xBF, 0xCB, 0x99, 0x31, + 0xC0, 0xA6, 0x14, 0x79, 0x2A, 0x9D, 0x86, 0x75, + 0x62, 0x2A, 0x87, 0x4C, 0x1B, 0xF5, 0x24, 0x1A, + 0x2A, 0x87, 0x41, 0xED, 0x1C, 0x89, 0x3B, 0xDF, + 0xA8, 0xE2, 0x8C, 0x2E, 0x20, 0xBB, 0x1C, 0x58, + 0xEB, 0x4D, 0xE7, 0xD8, 0x01, 0x11, 0x6C, 0x78 + }, + { + 0xDF, 0xA1, 0xFD, 0x80, 0x3A, 0x1D, 0x4A, 0x3E, + 0x66, 0x1D, 0xF0, 0x1F, 0x49, 0x43, 0xEA, 0x66, + 0x26, 0x0A, 0x18, 0xFE, 0xCE, 0x13, 0x4D, 0x62, + 0xF9, 0x7D, 0xAC, 0xDB, 0x8B, 0x3B, 0xF9, 0xC8, + 0x00, 0xAF, 0xE5, 0x79, 0xCF, 0xD1, 0x3F, 0xC0, + 0x14, 0x8B, 0xDE, 0xFB, 0xFF, 0x4E, 0x76, 0x83, + 0x56, 0x1C, 0x06, 0xA6, 0xF7, 0x22, 0x5E, 0x47, + 0x81, 0x99, 0x3B, 0x4F, 0x4F, 0x2B, 0xCB, 0xFA + }, + { + 0x2B, 0x86, 0xCE, 0xB2, 0x70, 0xF6, 0x90, 0x8D, + 0x8B, 0x16, 0x00, 0x75, 0xEA, 0x7F, 0x57, 0x16, + 0x3A, 0xF5, 0xD5, 0xC6, 0xF8, 0xAA, 0xC5, 0x20, + 0x40, 0xCC, 0x68, 0x7C, 0x17, 0xAB, 0xF3, 0xC7, + 0x78, 0xC1, 0x39, 0x06, 0xE0, 0xE6, 0xF2, 0x9A, + 0x6A, 0xB1, 0x23, 0xDE, 0xEB, 0xCE, 0x39, 0x1F, + 0x90, 0x7D, 0x75, 0xD3, 0xA2, 0xCE, 0xFA, 0x0E, + 0xFC, 0xB8, 0x80, 0xA0, 0xE7, 0x0D, 0x71, 0x96 + }, + { + 0x32, 0x46, 0x6B, 0xCB, 0xDE, 0xD5, 0x38, 0xE5, + 0x68, 0x79, 0x54, 0x30, 0x35, 0x25, 0x36, 0xFE, + 0xB9, 0x19, 0xBF, 0x4D, 0x97, 0xCC, 0x44, 0xAB, + 0x1D, 0x80, 0x50, 0x40, 0xF4, 0xBC, 0x4C, 0x2E, + 0x79, 0x52, 0x72, 0x10, 0x18, 0x95, 0x8B, 0x4E, + 0xE7, 0x83, 0x03, 0x59, 0x0E, 0xF6, 0xAC, 0x45, + 0x0D, 0xF9, 0x2E, 0xC7, 0x7F, 0x47, 0x70, 0x54, + 0xBF, 0xF8, 0x67, 0xB8, 0x89, 0x71, 0xD4, 0x21 + }, + { + 0xEA, 0x64, 0xB0, 0x03, 0xA1, 0x35, 0x76, 0x61, + 0x21, 0xCF, 0xBC, 0xCB, 0xDC, 0x08, 0xDC, 0xA2, + 0x40, 0x29, 0x26, 0xBE, 0x78, 0xCE, 0xA3, 0xD0, + 0xA7, 0x25, 0x3D, 0x9E, 0xC9, 0xE6, 0x3B, 0x8A, + 0xCD, 0xD9, 0x94, 0x55, 0x99, 0x17, 0xE0, 0xE0, + 0x3B, 0x5E, 0x15, 0x5F, 0x94, 0x4D, 0x71, 0x98, + 0xD9, 0x92, 0x45, 0xA7, 0x94, 0xCE, 0x19, 0xC9, + 0xB4, 0xDF, 0x4D, 0xA4, 0xA3, 0x39, 0x93, 0x34 + }, + { + 0x05, 0xAD, 0x0F, 0x27, 0x1F, 0xAF, 0x7E, 0x36, + 0x13, 0x20, 0x51, 0x84, 0x52, 0x81, 0x3F, 0xF9, + 0xFB, 0x99, 0x76, 0xAC, 0x37, 0x80, 0x50, 0xB6, + 0xEE, 0xFB, 0x05, 0xF7, 0x86, 0x7B, 0x57, 0x7B, + 0x8F, 0x14, 0x47, 0x57, 0x94, 0xCF, 0xF6, 0x1B, + 0x2B, 0xC0, 0x62, 0xD3, 0x46, 0xA7, 0xC6, 0x5C, + 0x6E, 0x00, 0x67, 0xC6, 0x0A, 0x37, 0x4A, 0xF7, + 0x94, 0x0F, 0x10, 0xAA, 0x44, 0x9D, 0x5F, 0xB9 + }, + { + 0xB5, 0x45, 0x88, 0x02, 0x94, 0xAF, 0xA1, 0x53, + 0xF8, 0xB9, 0xF4, 0x9C, 0x73, 0xD9, 0x52, 0xB5, + 0xD1, 0x22, 0x8F, 0x1A, 0x1A, 0xB5, 0xEB, 0xCB, + 0x05, 0xFF, 0x79, 0xE5, 0x60, 0xC0, 0x30, 0xF7, + 0x50, 0x0F, 0xE2, 0x56, 0xA4, 0x0B, 0x6A, 0x0E, + 0x6C, 0xB3, 0xD4, 0x2A, 0xCD, 0x4B, 0x98, 0x59, + 0x5C, 0x5B, 0x51, 0xEA, 0xEC, 0x5A, 0xD6, 0x9C, + 0xD4, 0x0F, 0x1F, 0xC1, 0x6D, 0x2D, 0x5F, 0x50 + }, + { + 0xBB, 0xFB, 0x94, 0x77, 0xEC, 0x6A, 0x9F, 0x0C, + 0x25, 0x40, 0x5A, 0xCD, 0x8A, 0x30, 0xD5, 0xDD, + 0x7C, 0x73, 0x57, 0x1F, 0x1D, 0x1A, 0x6E, 0x8C, + 0xE7, 0x2F, 0x8B, 0x9C, 0x94, 0x1C, 0xF7, 0x79, + 0xB7, 0x64, 0x03, 0xAC, 0x7F, 0x04, 0x50, 0x05, + 0x25, 0x84, 0x39, 0x0A, 0x14, 0xEA, 0xA3, 0x7C, + 0x20, 0xB5, 0xBD, 0xB0, 0x38, 0x10, 0x54, 0xA9, + 0xA4, 0x95, 0x34, 0xF8, 0x14, 0x66, 0xBA, 0x9D + }, + { + 0xC8, 0x28, 0x7E, 0x93, 0x3D, 0x95, 0x04, 0xBF, + 0xFD, 0x7B, 0xE2, 0xAC, 0x02, 0x2B, 0x32, 0xF3, + 0xF4, 0x6D, 0x87, 0xA7, 0xA0, 0xE7, 0x9B, 0xB2, + 0xA1, 0xCB, 0xAA, 0xCC, 0x2E, 0x84, 0xCD, 0x70, + 0x84, 0x5D, 0x0D, 0x42, 0x78, 0x48, 0xA6, 0xD7, + 0x88, 0xD3, 0x96, 0x22, 0xE1, 0x0F, 0x43, 0x42, + 0x23, 0x7E, 0xEF, 0xA6, 0xD3, 0xC0, 0x12, 0xDA, + 0xE9, 0x6C, 0xC8, 0xA6, 0x50, 0xCC, 0x2E, 0x30 + }, + { + 0xC4, 0x59, 0x6F, 0xCB, 0x0A, 0x28, 0xD2, 0x4A, + 0xAD, 0x70, 0xCF, 0x18, 0x53, 0xEC, 0x29, 0xDA, + 0xC0, 0xFB, 0x20, 0x2D, 0x8E, 0xC1, 0x40, 0xDA, + 0x30, 0x00, 0x88, 0xBB, 0x85, 0xB9, 0x2C, 0x30, + 0x29, 0x19, 0x46, 0xAD, 0x30, 0x7C, 0x09, 0x6E, + 0x3B, 0x28, 0x66, 0x33, 0x5C, 0x93, 0x17, 0xAF, + 0xE2, 0x8C, 0xAD, 0xAB, 0x5D, 0x62, 0xC3, 0x54, + 0x32, 0x9C, 0x98, 0xD9, 0x93, 0xC5, 0xBE, 0x1C + }, + { + 0xE8, 0x8C, 0x38, 0xE6, 0x7E, 0x8D, 0x19, 0x83, + 0x58, 0x08, 0x85, 0x46, 0x70, 0x77, 0x9E, 0xCA, + 0x60, 0xBA, 0xD8, 0x54, 0xC5, 0x77, 0x87, 0x90, + 0xA0, 0x72, 0x54, 0xA3, 0x0A, 0x14, 0xAE, 0x82, + 0xB6, 0x1B, 0xB1, 0x69, 0x11, 0xFE, 0x57, 0x77, + 0x1D, 0x19, 0xE9, 0xB7, 0xF5, 0x02, 0x3C, 0x0D, + 0x4E, 0x8A, 0x8D, 0x37, 0x2E, 0x3D, 0x85, 0xE4, + 0x3B, 0x03, 0xE5, 0xE0, 0x0E, 0x6E, 0xBA, 0x4B + }, + { + 0x2D, 0x66, 0x3E, 0x03, 0xE6, 0xF3, 0x55, 0x2C, + 0xCD, 0xFB, 0xA4, 0x96, 0xA1, 0x4C, 0xC6, 0x22, + 0x4C, 0xEB, 0x1E, 0xB6, 0x1A, 0xA2, 0x65, 0xE6, + 0xA7, 0xD4, 0xA2, 0x6E, 0x54, 0x10, 0x61, 0x04, + 0xA9, 0x6E, 0x33, 0x09, 0x59, 0xF9, 0x71, 0x3B, + 0x34, 0x87, 0xC1, 0xB9, 0x49, 0x7C, 0xCF, 0x82, + 0x61, 0x1D, 0xBF, 0xA3, 0x4F, 0xF1, 0x1D, 0x31, + 0x33, 0xB5, 0xB5, 0xD1, 0xF1, 0xE4, 0xF8, 0xD0 + }, + { + 0x70, 0x7D, 0x6A, 0x58, 0x42, 0x1B, 0x8F, 0x7E, + 0x44, 0xFF, 0x1F, 0x83, 0x62, 0xBC, 0x70, 0x0F, + 0x71, 0xEF, 0x7C, 0x39, 0x35, 0xE0, 0x76, 0x4B, + 0xD1, 0x4D, 0x39, 0x0C, 0x1C, 0x72, 0x79, 0x2A, + 0xF9, 0xC2, 0xC0, 0x2F, 0xB7, 0x2A, 0x2B, 0x9D, + 0x9A, 0x07, 0x29, 0xCB, 0x3E, 0x99, 0x62, 0x6C, + 0xF0, 0x34, 0xDF, 0x54, 0xB5, 0x06, 0xB5, 0xB1, + 0x64, 0x64, 0xF4, 0x75, 0x86, 0x4F, 0x25, 0x90 + }, + { + 0x9D, 0x88, 0xF8, 0xBA, 0xA4, 0xEB, 0x0F, 0x9A, + 0xB2, 0x29, 0x2E, 0x49, 0x82, 0xAC, 0x80, 0x44, + 0x53, 0x58, 0x22, 0x7D, 0x7F, 0x9C, 0xE7, 0xA4, + 0xA6, 0x29, 0xF1, 0x80, 0xF7, 0x14, 0x1E, 0x08, + 0xFE, 0x63, 0x55, 0xC6, 0x45, 0x21, 0xA6, 0x9B, + 0xA2, 0xBF, 0xBD, 0x1C, 0x4A, 0x3E, 0xA0, 0x48, + 0xD0, 0xBC, 0x8A, 0xB3, 0x70, 0x1F, 0x30, 0xEA, + 0x83, 0xFB, 0xE0, 0x24, 0x74, 0xD8, 0x92, 0xBF + }, + { + 0x65, 0xEA, 0x4D, 0xB0, 0x4A, 0x75, 0x81, 0xC1, + 0x81, 0x94, 0xA8, 0x92, 0x1A, 0xFD, 0xFA, 0x4F, + 0x8D, 0x9A, 0xF6, 0x29, 0xDE, 0xD2, 0x77, 0x2C, + 0x65, 0x8E, 0x08, 0x48, 0x5F, 0x67, 0xAD, 0x2C, + 0xE2, 0x1A, 0x98, 0xCD, 0x29, 0x3F, 0xF2, 0x8D, + 0x4D, 0xFC, 0xDF, 0x65, 0x8C, 0xDC, 0x7A, 0xE6, + 0x70, 0x27, 0x84, 0x8E, 0x71, 0xCC, 0xC1, 0x15, + 0xA3, 0xFF, 0xBA, 0xC4, 0xFA, 0x61, 0xBB, 0x73 + }, + { + 0x0B, 0x4A, 0x68, 0x92, 0x9E, 0x7F, 0x15, 0xCA, + 0x91, 0xBB, 0x44, 0x39, 0xF2, 0x40, 0x37, 0x02, + 0x03, 0x4C, 0xD4, 0x74, 0x8E, 0x46, 0x92, 0x7A, + 0xBA, 0x95, 0xCB, 0xEF, 0x80, 0x04, 0x8B, 0x25, + 0xA6, 0x75, 0x97, 0x0F, 0xAC, 0x33, 0xC8, 0x74, + 0xAB, 0xD3, 0xD8, 0x3A, 0xA0, 0xF3, 0x7B, 0xE2, + 0x30, 0x83, 0x10, 0xE8, 0xDD, 0x79, 0x4F, 0x81, + 0x92, 0x93, 0x0E, 0xD5, 0x6E, 0x70, 0xA8, 0xE4 + }, + { + 0xC1, 0xC5, 0xD8, 0xAC, 0xFE, 0x3F, 0xDE, 0x67, + 0x4E, 0xDD, 0x36, 0x20, 0x15, 0x7A, 0x8B, 0x6B, + 0x4C, 0x8E, 0x67, 0xC6, 0xA7, 0xA9, 0x72, 0x67, + 0x41, 0xD9, 0xC3, 0x05, 0xE2, 0xA5, 0x2A, 0x87, + 0x97, 0xFD, 0xA0, 0xB2, 0xF1, 0x3A, 0xC7, 0x87, + 0x34, 0xDB, 0x2F, 0x4F, 0xC8, 0x3E, 0xF3, 0x24, + 0x14, 0xD9, 0x31, 0xEB, 0xAE, 0xAE, 0xCD, 0x82, + 0x6D, 0x7C, 0x2B, 0xE2, 0x03, 0xBD, 0xC2, 0xD1 + }, + { + 0x2D, 0xAD, 0xC8, 0xC9, 0xF7, 0x42, 0x5A, 0x01, + 0x14, 0x49, 0x12, 0x87, 0xBD, 0xC6, 0x8E, 0xAE, + 0x4F, 0xB6, 0x19, 0x4D, 0x1A, 0x10, 0x9D, 0xB9, + 0xB6, 0xE8, 0xA2, 0xAC, 0x94, 0xD4, 0xE4, 0x40, + 0x90, 0x99, 0x85, 0xC4, 0x29, 0x1F, 0xE8, 0x9F, + 0xD8, 0x28, 0x1F, 0x8F, 0xCE, 0xF6, 0xF6, 0xBC, + 0x32, 0x55, 0x0E, 0x53, 0xCB, 0x7A, 0x49, 0x42, + 0x89, 0x81, 0xE8, 0xD5, 0x3C, 0xF5, 0xA2, 0x12 + }, + { + 0xE5, 0x55, 0xF2, 0xA5, 0x8A, 0xCA, 0xC5, 0x50, + 0x3F, 0x9E, 0x2D, 0x97, 0xB2, 0x46, 0x87, 0x2B, + 0x4C, 0xA7, 0x8B, 0xD5, 0x6D, 0x47, 0xB7, 0x65, + 0xF0, 0x52, 0xAA, 0xB3, 0xDC, 0x77, 0xDB, 0xE9, + 0x93, 0x93, 0x6F, 0x22, 0x52, 0xF0, 0xAB, 0x2E, + 0x01, 0xFB, 0x08, 0x74, 0x72, 0xCC, 0xB5, 0xA1, + 0x21, 0xDD, 0xFF, 0xDE, 0x53, 0x1D, 0x3D, 0xC4, + 0x02, 0x2A, 0x7D, 0x19, 0x56, 0xCE, 0x0E, 0x20 + }, + { + 0x9B, 0x4E, 0xAE, 0x12, 0x95, 0x00, 0x0A, 0xEA, + 0x79, 0x83, 0xEC, 0x3B, 0xCB, 0x48, 0x57, 0xCC, + 0x71, 0x25, 0xFD, 0x73, 0x06, 0x78, 0x7C, 0x63, + 0x13, 0x24, 0x73, 0xCF, 0xE8, 0xF4, 0xEB, 0x45, + 0x31, 0x8A, 0x60, 0xDA, 0xAD, 0x64, 0x6D, 0x63, + 0xA2, 0x7C, 0x4B, 0x9D, 0x1F, 0x50, 0x73, 0x70, + 0x0A, 0x30, 0x57, 0xDE, 0x22, 0xA7, 0xFD, 0xF0, + 0x9A, 0x87, 0xAA, 0xC6, 0x6E, 0xBE, 0x47, 0x58 + }, + { + 0x96, 0x64, 0xAC, 0xC2, 0xDC, 0x72, 0x98, 0xB9, + 0x86, 0x8D, 0xB4, 0x95, 0xEE, 0xBC, 0x6B, 0x59, + 0x65, 0x7D, 0x13, 0x9A, 0x6A, 0xF0, 0x60, 0xA7, + 0x2F, 0xB6, 0x91, 0x24, 0xBD, 0xD3, 0xA6, 0x59, + 0x18, 0x88, 0xF0, 0x35, 0x4F, 0x70, 0x2B, 0x1B, + 0x88, 0x86, 0x84, 0x41, 0x10, 0x58, 0xA3, 0x75, + 0x9F, 0x7F, 0xD3, 0x7F, 0x06, 0xEA, 0xFB, 0x3B, + 0x58, 0xEC, 0xF2, 0x6F, 0x45, 0x53, 0xBE, 0x27 + }, + { + 0xFC, 0x16, 0xE0, 0x92, 0x5A, 0x35, 0xAA, 0xD4, + 0x7A, 0xD6, 0x95, 0x54, 0xB2, 0x57, 0x96, 0xFC, + 0xF9, 0x26, 0x0C, 0xB5, 0x0E, 0x6C, 0xC3, 0x74, + 0x75, 0x35, 0x55, 0x9E, 0x99, 0xC8, 0x58, 0x81, + 0xC7, 0x58, 0x89, 0xAC, 0x79, 0x3A, 0xB7, 0x8B, + 0x88, 0xB0, 0x5F, 0xB1, 0x60, 0x89, 0x56, 0x55, + 0xE4, 0xD6, 0x63, 0xA2, 0xA0, 0x9B, 0xA9, 0xFA, + 0x61, 0x4A, 0x10, 0xC2, 0x29, 0x47, 0x21, 0x0D + }, + { + 0x22, 0x5E, 0x73, 0x41, 0xF8, 0x57, 0x52, 0x4F, + 0x78, 0x90, 0x37, 0x6C, 0x50, 0xE6, 0x35, 0x4B, + 0x16, 0xC1, 0xCD, 0xFB, 0xF5, 0x8F, 0xE5, 0xF3, + 0xA4, 0x03, 0x94, 0x93, 0xB5, 0xDD, 0x40, 0x8D, + 0x79, 0xD4, 0x8C, 0x56, 0xE1, 0xF8, 0x9B, 0x68, + 0x7F, 0xBE, 0x33, 0x62, 0xA7, 0x7F, 0xA7, 0x5A, + 0x54, 0x37, 0x4B, 0x7A, 0x48, 0x5E, 0x91, 0xB1, + 0x89, 0xAF, 0x2E, 0x2F, 0x74, 0x9E, 0x2A, 0xDB + }, + { + 0xA0, 0x7A, 0x4C, 0x02, 0x3A, 0xC7, 0x04, 0xCE, + 0x7C, 0x09, 0xDD, 0x6C, 0x92, 0xC6, 0xF1, 0x84, + 0xF5, 0x3E, 0x8D, 0xD9, 0x6F, 0xE3, 0xBE, 0x9E, + 0x93, 0xC3, 0x9C, 0x53, 0x44, 0x85, 0xB6, 0x4B, + 0x39, 0xD5, 0xBE, 0x7F, 0x7B, 0x71, 0x70, 0x60, + 0x4D, 0xE7, 0x7C, 0xE5, 0xA4, 0x37, 0xA9, 0x8E, + 0x71, 0x2C, 0xC4, 0x4F, 0x19, 0xE2, 0x1D, 0x41, + 0xF0, 0xE6, 0xE3, 0xEC, 0x1E, 0x00, 0xAC, 0x55 + }, + { + 0x62, 0x85, 0x84, 0x63, 0x58, 0x2D, 0x22, 0xE6, + 0x8E, 0x52, 0x27, 0xBF, 0xBA, 0xB5, 0x40, 0x04, + 0x8F, 0x65, 0xED, 0xD6, 0xA6, 0x75, 0x5F, 0x6F, + 0xAB, 0x53, 0xC0, 0x25, 0xB6, 0x63, 0xCA, 0x37, + 0x7A, 0x0E, 0xD5, 0xEF, 0xD6, 0xAF, 0x16, 0x6C, + 0xA5, 0x5A, 0x9C, 0x73, 0x3F, 0xCA, 0x80, 0x5A, + 0xC4, 0xE4, 0x09, 0xCA, 0x56, 0x17, 0x7A, 0xA7, + 0x49, 0x40, 0xDB, 0x9F, 0x40, 0xC3, 0xB9, 0xFF + }, + { + 0xA1, 0xAC, 0x53, 0x9D, 0x1A, 0xBB, 0xC2, 0xB0, + 0x96, 0xFF, 0xAB, 0x81, 0x3B, 0x64, 0x45, 0x7F, + 0xE6, 0xEB, 0x3B, 0x50, 0xFC, 0xD8, 0x89, 0x53, + 0xD0, 0xCD, 0x9F, 0x65, 0x02, 0xF6, 0x89, 0x62, + 0x0A, 0xD4, 0x42, 0xB5, 0x51, 0x70, 0x90, 0xB5, + 0x0C, 0xFF, 0xB9, 0x58, 0x86, 0x6D, 0x7C, 0x16, + 0x1D, 0x8A, 0x7D, 0x75, 0x60, 0xC8, 0x93, 0xE1, + 0xDE, 0xF6, 0xAE, 0xC4, 0x37, 0xAD, 0x6D, 0x06 + }, + { + 0xB5, 0x86, 0xB7, 0x5D, 0xA7, 0x0F, 0x6C, 0xC0, + 0x62, 0x7E, 0xF3, 0xCF, 0x12, 0x37, 0xC9, 0x4B, + 0x12, 0xD0, 0xF7, 0x4D, 0xCB, 0xA2, 0x6A, 0x9E, + 0x7C, 0x7B, 0xC6, 0xC2, 0x1A, 0x33, 0x53, 0x37, + 0xBF, 0x9F, 0x5B, 0x83, 0x0C, 0x63, 0x24, 0xAF, + 0xA6, 0xEF, 0x64, 0x9E, 0x95, 0xAF, 0x87, 0x90, + 0x87, 0x52, 0x34, 0xC6, 0xE6, 0x61, 0xD3, 0xF5, + 0xE9, 0x8C, 0xA0, 0x12, 0xAE, 0x81, 0x48, 0x8A + }, + { + 0x56, 0x68, 0xA2, 0x98, 0x21, 0x37, 0xCB, 0xC6, + 0x22, 0xEF, 0x8D, 0x06, 0xCF, 0x4E, 0x86, 0x16, + 0x8C, 0xDD, 0x4A, 0x89, 0x9C, 0xD4, 0x46, 0x2A, + 0xF6, 0xC3, 0xD4, 0x15, 0x42, 0x61, 0x56, 0xA5, + 0xD8, 0xDD, 0x67, 0xC9, 0x60, 0x4F, 0x31, 0xB5, + 0x7D, 0x6C, 0x9D, 0x59, 0x72, 0x50, 0x45, 0x7E, + 0x4A, 0xB5, 0x2A, 0x58, 0x11, 0x55, 0x42, 0xAC, + 0xF2, 0x7F, 0x92, 0x59, 0x30, 0xF6, 0xA1, 0x12 + }, + { + 0xF2, 0xB1, 0xBD, 0x16, 0xD8, 0x8E, 0x37, 0xF3, + 0xA5, 0x18, 0xD1, 0x93, 0xED, 0x06, 0x1A, 0x1D, + 0xF7, 0xB4, 0x43, 0xA1, 0x8C, 0xE9, 0xF8, 0x44, + 0x45, 0xEF, 0x86, 0xEF, 0xFB, 0xDF, 0xF1, 0x60, + 0x55, 0x02, 0x3C, 0xD4, 0xE7, 0x8D, 0x03, 0x4D, + 0xE4, 0x03, 0x2A, 0x77, 0xDD, 0xC1, 0xD3, 0x43, + 0x52, 0xFE, 0x61, 0x7F, 0x82, 0x56, 0x24, 0x45, + 0x9B, 0xC3, 0x26, 0x9F, 0x70, 0x4F, 0x34, 0x5B + }, + { + 0xF0, 0x85, 0xF3, 0xD8, 0xBD, 0x13, 0x8E, 0x05, + 0x69, 0x24, 0x3F, 0x74, 0x52, 0x3E, 0x87, 0xFF, + 0x37, 0x6F, 0x04, 0xEA, 0xBD, 0x5A, 0x2F, 0x6E, + 0x53, 0xDF, 0x38, 0x99, 0x00, 0x0E, 0x2E, 0x94, + 0xAF, 0x0D, 0x2B, 0xC7, 0x1C, 0x3F, 0x71, 0x10, + 0x25, 0xC5, 0x38, 0xA6, 0xC8, 0xB1, 0x0B, 0x09, + 0x04, 0xDF, 0xC3, 0x46, 0xAD, 0xAD, 0x7E, 0xF3, + 0x6B, 0x1A, 0xE8, 0x8A, 0x6C, 0xFE, 0xAB, 0xBD + }, + { + 0x82, 0x91, 0xA4, 0xAF, 0xD2, 0xE4, 0xB7, 0x16, + 0x61, 0x77, 0x3A, 0x46, 0xB3, 0xD4, 0x45, 0x5A, + 0x8D, 0x33, 0xA7, 0x26, 0xD9, 0xD3, 0x87, 0x30, + 0x83, 0xAB, 0x33, 0x70, 0x20, 0xC2, 0x7B, 0x4D, + 0xD6, 0x43, 0xE2, 0x8C, 0x2F, 0xE4, 0x7A, 0xB2, + 0xFB, 0xF5, 0xD1, 0x40, 0x81, 0xA3, 0xFC, 0x1C, + 0x83, 0x9B, 0x12, 0xEA, 0x31, 0xD1, 0x3C, 0xF4, + 0x9E, 0xEE, 0x97, 0xEF, 0x2E, 0xD7, 0xFA, 0x3E + }, + { + 0xB1, 0x26, 0xAE, 0x46, 0xA7, 0xA4, 0x59, 0x5E, + 0x31, 0x60, 0x7E, 0xF8, 0x07, 0xA5, 0x60, 0x1F, + 0x4E, 0xCD, 0x9E, 0x7D, 0x66, 0xC8, 0x2D, 0xAE, + 0xB9, 0x71, 0x5F, 0x8D, 0xA1, 0xC1, 0x7D, 0x7D, + 0x71, 0xC3, 0xE6, 0x82, 0x50, 0xC9, 0xDC, 0x01, + 0xAC, 0x40, 0xA3, 0x6D, 0x2E, 0x63, 0x8B, 0xEF, + 0x3D, 0x7B, 0xC7, 0x0E, 0xA2, 0xD0, 0xE3, 0x31, + 0xE3, 0xD3, 0x3E, 0x17, 0x04, 0xEB, 0xA9, 0x2D + }, + { + 0x63, 0xB1, 0x4D, 0x8E, 0xD2, 0x47, 0x9C, 0xAA, + 0x17, 0xC3, 0xE4, 0xCF, 0x20, 0x3B, 0x23, 0x3A, + 0x7E, 0x37, 0x3E, 0xDB, 0x0C, 0x2F, 0x19, 0x71, + 0x29, 0xA9, 0xA3, 0x6C, 0x5B, 0x3E, 0x1F, 0x38, + 0x38, 0xF2, 0xE8, 0x2A, 0xC2, 0xC2, 0xAD, 0x9D, + 0x52, 0xB3, 0x35, 0x79, 0x0B, 0xFF, 0x57, 0x73, + 0x04, 0xA3, 0x78, 0xE3, 0x8E, 0xB6, 0xBB, 0x41, + 0x62, 0x03, 0x0C, 0xE2, 0xA8, 0xBA, 0x29, 0x3C + }, + { + 0x34, 0x42, 0x2A, 0x32, 0x29, 0x66, 0x99, 0x28, + 0xC4, 0x90, 0xF5, 0x7B, 0x8E, 0x76, 0x88, 0x52, + 0xE5, 0xB7, 0xC0, 0x0D, 0xCA, 0xD6, 0x0B, 0x01, + 0x2A, 0x5D, 0xB3, 0x9A, 0x2D, 0x59, 0x7C, 0x3D, + 0x0A, 0x63, 0xBE, 0x6A, 0x26, 0x3E, 0xA5, 0x36, + 0x08, 0xB7, 0x06, 0x92, 0xD7, 0x8E, 0x1B, 0x42, + 0x7E, 0xAC, 0xEC, 0x01, 0xF4, 0xBE, 0xE0, 0xBD, + 0xBB, 0x8F, 0x08, 0x81, 0x48, 0x8E, 0xFC, 0x28 + }, + { + 0xE2, 0x6B, 0x7E, 0xD6, 0xB9, 0x07, 0xB5, 0x4C, + 0xA2, 0x65, 0x67, 0xF1, 0x1E, 0xE5, 0xBB, 0x6D, + 0x73, 0x9A, 0x00, 0x08, 0xA5, 0x34, 0x37, 0xAD, + 0x75, 0x90, 0xA3, 0x13, 0x4C, 0xEB, 0x95, 0x19, + 0x6E, 0x49, 0xB3, 0x44, 0x3F, 0x32, 0x49, 0x22, + 0x51, 0x75, 0x23, 0xC0, 0xCD, 0x5A, 0x00, 0xD7, + 0x7E, 0x4C, 0x4D, 0xE7, 0xA0, 0xDE, 0x96, 0x8A, + 0x84, 0xFB, 0x1B, 0x3B, 0xE7, 0xB3, 0xB9, 0x63 + }, + { + 0x26, 0x01, 0x97, 0xCA, 0xFB, 0xF4, 0x56, 0xB4, + 0x11, 0xFA, 0x26, 0xD3, 0x83, 0xD6, 0x4D, 0x61, + 0xE8, 0x1E, 0x5E, 0x52, 0xF8, 0x4C, 0xD9, 0xD5, + 0x73, 0x86, 0xC7, 0x76, 0x23, 0x0C, 0x65, 0xA2, + 0x68, 0x1C, 0xD2, 0xFD, 0xFD, 0x28, 0x67, 0x9F, + 0x67, 0xFE, 0x1B, 0xD7, 0x46, 0x9C, 0xF7, 0x26, + 0x95, 0x85, 0xFC, 0xCB, 0xAE, 0xCC, 0x22, 0xF5, + 0x03, 0xD6, 0xE3, 0xFC, 0x39, 0x30, 0x14, 0x36 + }, + { + 0xCB, 0xD5, 0xAB, 0xE3, 0x7B, 0xCC, 0x4F, 0x9A, + 0x12, 0x70, 0xAD, 0xD0, 0xA5, 0x27, 0x0F, 0x42, + 0x83, 0x9C, 0x7D, 0x24, 0x93, 0x20, 0xD1, 0xF1, + 0xD8, 0x85, 0x53, 0xD0, 0x5F, 0xAF, 0x9A, 0x26, + 0x79, 0xF4, 0x9B, 0x49, 0xC9, 0xE2, 0x0C, 0x1C, + 0x85, 0xC6, 0x29, 0xAA, 0x0F, 0x09, 0x0C, 0xAE, + 0x8F, 0x6E, 0x32, 0xC6, 0xCA, 0xD7, 0x17, 0x21, + 0xFD, 0x06, 0x23, 0xE4, 0xED, 0x25, 0xB2, 0x56 + }, + { + 0x78, 0x0E, 0x31, 0x4F, 0xD6, 0x97, 0xD2, 0xA9, + 0x7D, 0x22, 0x1A, 0x22, 0xC3, 0x90, 0x11, 0xE2, + 0x50, 0x69, 0x16, 0x3C, 0xD0, 0x8F, 0x00, 0x70, + 0xD0, 0x67, 0xE8, 0xCD, 0xB0, 0xBC, 0x86, 0x73, + 0xFD, 0xB0, 0xEC, 0x4F, 0x46, 0xE3, 0x1D, 0x74, + 0x8C, 0xD3, 0xBB, 0x3D, 0x61, 0xB9, 0x01, 0x0A, + 0x66, 0x12, 0xF3, 0x41, 0xD4, 0x71, 0xD9, 0xC5, + 0xA2, 0xDE, 0x6B, 0x6D, 0xD5, 0x38, 0xA6, 0xB5 + }, + { + 0x40, 0x8F, 0x16, 0xCE, 0x86, 0xF8, 0x01, 0xD0, + 0x8B, 0xD0, 0x51, 0x36, 0x4B, 0x3E, 0xCD, 0x9A, + 0x39, 0x45, 0x71, 0x58, 0x88, 0xDF, 0x46, 0x63, + 0x21, 0x9A, 0x19, 0x0B, 0x35, 0x04, 0xE4, 0x61, + 0x8E, 0x7B, 0xF5, 0x51, 0x71, 0x17, 0x8B, 0x04, + 0x00, 0xFB, 0xEB, 0xFA, 0xA0, 0x1F, 0x6E, 0xEA, + 0xB5, 0x4F, 0xF5, 0xE3, 0x1E, 0x6D, 0x7A, 0x55, + 0xB8, 0x4A, 0xDB, 0x9E, 0x03, 0xDF, 0x48, 0x36 + }, + { + 0x0B, 0xF9, 0x88, 0x69, 0xEC, 0x05, 0x80, 0x19, + 0x9C, 0xA3, 0x70, 0x8E, 0xC9, 0xC4, 0x2C, 0x37, + 0x6C, 0x5C, 0x36, 0xE0, 0xFB, 0x74, 0x92, 0x42, + 0x57, 0x23, 0x98, 0xA0, 0xDA, 0x57, 0xF9, 0x8D, + 0x1C, 0x4C, 0xD2, 0x96, 0x3B, 0x37, 0xC3, 0xC6, + 0x5A, 0x10, 0xF1, 0x06, 0xB5, 0x6D, 0xCB, 0x96, + 0xDC, 0xDD, 0x32, 0x57, 0x96, 0x29, 0x7A, 0xDB, + 0xF6, 0xEE, 0x62, 0x70, 0xED, 0xD4, 0x59, 0x2A + }, + { + 0x05, 0x2C, 0x32, 0x98, 0x43, 0x87, 0xB1, 0x93, + 0x0D, 0x3A, 0x96, 0xBE, 0x72, 0x36, 0x85, 0x35, + 0x44, 0x4F, 0x13, 0x07, 0x57, 0xBF, 0x87, 0xE0, + 0x76, 0x2D, 0x8B, 0x1C, 0x4F, 0x65, 0x70, 0xF4, + 0xDC, 0x67, 0x4C, 0x4E, 0x6F, 0x5E, 0x21, 0xAB, + 0xD0, 0xB3, 0x5E, 0x1C, 0xA1, 0x9D, 0xB8, 0x40, + 0x68, 0x8D, 0x1B, 0x6E, 0x9E, 0xC9, 0x1F, 0x37, + 0x30, 0xE8, 0xB2, 0x88, 0x0E, 0xC2, 0xC3, 0xDF + }, + { + 0x4B, 0xB7, 0x14, 0x09, 0xC1, 0x5A, 0x0D, 0x39, + 0x32, 0xC5, 0x99, 0xEF, 0x0F, 0xF3, 0xEF, 0xF5, + 0xC7, 0x60, 0x2D, 0x70, 0x00, 0xCD, 0xA9, 0x74, + 0x08, 0x2C, 0x4A, 0x46, 0x82, 0x24, 0x9A, 0x19, + 0xD4, 0x3A, 0x5C, 0x14, 0xE0, 0xAE, 0xEF, 0x89, + 0x78, 0x21, 0x05, 0x63, 0x80, 0xAF, 0xF2, 0x75, + 0x20, 0x1D, 0x74, 0x59, 0x14, 0x84, 0x96, 0xEA, + 0xE9, 0x42, 0x0E, 0x71, 0x82, 0x88, 0xB4, 0x14 + }, + { + 0x47, 0x95, 0xB2, 0x51, 0xCC, 0x7B, 0x35, 0xE6, + 0x96, 0x92, 0xDB, 0x7F, 0xB4, 0x0E, 0xFD, 0x34, + 0xF2, 0x94, 0xF5, 0x1A, 0xEC, 0x15, 0xD6, 0xC8, + 0x67, 0x3E, 0x59, 0xF2, 0x04, 0xBE, 0xCF, 0x4C, + 0xF9, 0xDF, 0x84, 0x95, 0x23, 0xF1, 0xDB, 0x73, + 0xBE, 0x2A, 0x66, 0xC8, 0x39, 0xD8, 0x01, 0x97, + 0x4D, 0x43, 0x3B, 0x47, 0x80, 0x67, 0x01, 0xA1, + 0x63, 0xA7, 0x94, 0xB2, 0x6A, 0x84, 0x6B, 0x06 + }, + { + 0xDD, 0x50, 0xF9, 0x65, 0xB6, 0x0B, 0xAF, 0x16, + 0x8F, 0x5E, 0xA0, 0x5A, 0xC2, 0x0B, 0x8A, 0x78, + 0xF4, 0x47, 0x5C, 0x18, 0x61, 0x0B, 0x9D, 0x9F, + 0xC2, 0xB7, 0xC3, 0xAD, 0x5C, 0x6F, 0x97, 0xA4, + 0xCF, 0x5E, 0xA4, 0x8E, 0xE4, 0x0A, 0x3C, 0xA2, + 0x29, 0x3C, 0xC4, 0x21, 0x40, 0x82, 0xCF, 0x0F, + 0x8E, 0xC8, 0x95, 0x55, 0x32, 0x69, 0xE1, 0x4D, + 0xA9, 0xBD, 0x1A, 0x19, 0x65, 0x62, 0xCA, 0x59 + }, + { + 0xE0, 0xB5, 0x4B, 0x61, 0x7F, 0x44, 0x92, 0x2C, + 0x7F, 0x61, 0xC6, 0xA5, 0x4C, 0x98, 0xC6, 0x1E, + 0x93, 0x2D, 0xED, 0x1F, 0xA9, 0x34, 0x02, 0x66, + 0xEE, 0xA2, 0x5F, 0x01, 0xE8, 0x18, 0x0D, 0x1D, + 0xDC, 0x6A, 0xD8, 0xDD, 0x6A, 0x0B, 0x8F, 0xAB, + 0x8C, 0x73, 0xAE, 0xBB, 0x97, 0x73, 0x17, 0x1B, + 0xBA, 0x04, 0xA7, 0x81, 0xB1, 0x13, 0x14, 0xD5, + 0xA3, 0x0A, 0x9D, 0x1C, 0x28, 0x12, 0xCA, 0x7C + }, + { + 0x2D, 0xC4, 0xAD, 0x06, 0x89, 0xA4, 0x46, 0x0B, + 0x5B, 0x39, 0x9E, 0x91, 0x1B, 0xDB, 0x41, 0x58, + 0x6A, 0xC8, 0xAD, 0x36, 0x7B, 0x7A, 0xA3, 0x9E, + 0x3E, 0xAE, 0xC8, 0x89, 0x9A, 0x2D, 0x3C, 0xE3, + 0x8E, 0x34, 0xAB, 0x46, 0x08, 0x23, 0x4D, 0x75, + 0xEB, 0x67, 0x37, 0xFE, 0x21, 0x58, 0x24, 0xC2, + 0xA9, 0x78, 0x83, 0x59, 0x6F, 0x6F, 0x18, 0xDD, + 0xEB, 0xBF, 0x16, 0x27, 0xDE, 0xD9, 0x1D, 0x84 + }, + { + 0xF5, 0x6A, 0x11, 0xCB, 0xBF, 0x8A, 0x99, 0x7E, + 0x14, 0x77, 0xEC, 0x76, 0xE5, 0x3C, 0x89, 0x4B, + 0x14, 0x8D, 0x69, 0x25, 0xA4, 0x33, 0x6F, 0x0C, + 0xB7, 0xAA, 0xB9, 0xD8, 0x02, 0xAC, 0x9B, 0x45, + 0x36, 0xF4, 0x80, 0x10, 0x1F, 0x3F, 0x9A, 0x77, + 0xEE, 0xCD, 0xCB, 0xAE, 0x7A, 0xA6, 0xEA, 0x44, + 0x7A, 0x85, 0xDA, 0x90, 0xB5, 0x01, 0xF7, 0xDB, + 0x2E, 0xF8, 0xDD, 0xF5, 0xDE, 0x17, 0x33, 0x63 + }, + { + 0x6E, 0x17, 0x1D, 0x19, 0x6D, 0x0F, 0xC8, 0x2F, + 0xB4, 0x73, 0xE2, 0x9D, 0xA8, 0xF4, 0x0F, 0x37, + 0xEE, 0x97, 0x41, 0xAC, 0x3E, 0xAF, 0x17, 0x5D, + 0xD4, 0x9F, 0xDB, 0x56, 0x53, 0x0D, 0xB5, 0x98, + 0x98, 0xBA, 0xF3, 0xCE, 0xE7, 0x2E, 0xEF, 0x5E, + 0x77, 0x27, 0x6C, 0xAD, 0xAB, 0xCD, 0x75, 0x2C, + 0xA3, 0xA1, 0xB8, 0x64, 0xC1, 0x0A, 0xD2, 0x8D, + 0x27, 0xEA, 0xAD, 0x86, 0xE3, 0xF2, 0x1D, 0x33 + }, + { + 0x95, 0x20, 0x12, 0x33, 0x0D, 0x92, 0xBB, 0x9C, + 0x18, 0x92, 0xF2, 0x5B, 0x7B, 0x5A, 0xA0, 0xFE, + 0xD3, 0xC0, 0x39, 0x8A, 0x17, 0x08, 0x50, 0x9A, + 0x66, 0x14, 0x74, 0xA3, 0xF5, 0xE5, 0x11, 0xD0, + 0x9F, 0x21, 0xC3, 0x00, 0x08, 0x00, 0x2F, 0x10, + 0x42, 0xD8, 0x3D, 0x2F, 0x7B, 0x11, 0x33, 0x6B, + 0x8C, 0x2F, 0xE1, 0xD9, 0x79, 0xC1, 0xE3, 0x86, + 0xE0, 0x20, 0x97, 0x48, 0x9B, 0x2D, 0xFC, 0xF5 + }, + { + 0x2D, 0xCE, 0x47, 0xC3, 0x3A, 0x7E, 0x7F, 0x21, + 0x5D, 0x34, 0xA5, 0x47, 0x1B, 0xCD, 0x11, 0x10, + 0x60, 0x6C, 0x77, 0x13, 0x8F, 0x19, 0xD4, 0x17, + 0x41, 0xED, 0x5D, 0x1B, 0x89, 0xE8, 0xF7, 0xC7, + 0x74, 0xEE, 0xC4, 0xBB, 0xC1, 0x02, 0x76, 0x6E, + 0xA1, 0x53, 0x2F, 0x2E, 0x43, 0x13, 0x4A, 0xD3, + 0x66, 0xBD, 0xCC, 0x27, 0xD1, 0xA0, 0xCC, 0x95, + 0x9E, 0x16, 0x48, 0x65, 0x9E, 0x44, 0xCB, 0xBE + }, + { + 0x7F, 0x06, 0x59, 0x59, 0x7E, 0x7A, 0xD1, 0x22, + 0xD1, 0xC9, 0xED, 0x91, 0x93, 0x0B, 0x07, 0xDE, + 0x40, 0xE2, 0x55, 0x20, 0x1A, 0x33, 0xEB, 0x2B, + 0x31, 0x81, 0x37, 0x6E, 0x36, 0x8D, 0xF7, 0x76, + 0x4C, 0x0C, 0x14, 0xBF, 0x79, 0x9F, 0x16, 0x1B, + 0x9B, 0x00, 0x79, 0x57, 0x8B, 0x47, 0x09, 0x71, + 0x3E, 0x24, 0xE4, 0x2F, 0xE7, 0xDD, 0x71, 0xB5, + 0x09, 0x43, 0xF4, 0x40, 0xE2, 0x3C, 0xD1, 0xBE + }, + { + 0x1E, 0x66, 0xF7, 0xB3, 0x58, 0x80, 0x5D, 0xDD, + 0xFF, 0xC5, 0x82, 0x68, 0x3E, 0x0B, 0xAD, 0x81, + 0x8C, 0x87, 0x34, 0x03, 0xD4, 0xBA, 0x15, 0x06, + 0xB9, 0x2F, 0xB3, 0x20, 0xCA, 0x8C, 0xF9, 0xCE, + 0xE8, 0x15, 0x47, 0x15, 0xD6, 0xDB, 0x6F, 0x04, + 0x09, 0x3D, 0x4B, 0x3F, 0xD8, 0xA6, 0xFC, 0x8E, + 0x7E, 0xDD, 0xEA, 0xF2, 0x79, 0x5B, 0x3D, 0x22, + 0xDE, 0x7C, 0x75, 0xEC, 0xFF, 0x6F, 0x92, 0xAF + }, + { + 0x1F, 0x60, 0xC1, 0x8D, 0xB1, 0x68, 0xD9, 0x0D, + 0x2B, 0x46, 0x60, 0xE7, 0x58, 0xA3, 0xCD, 0x28, + 0x02, 0x3D, 0x4C, 0x0B, 0x84, 0x8B, 0x5E, 0x33, + 0xEA, 0x5C, 0xC1, 0x56, 0x29, 0xFD, 0x35, 0x2E, + 0xAC, 0xB1, 0x4F, 0x05, 0xFD, 0xEC, 0x07, 0xAC, + 0x23, 0xDA, 0x92, 0x04, 0x74, 0x5F, 0xA9, 0x73, + 0xC3, 0x29, 0x55, 0x13, 0x5F, 0x8E, 0xC7, 0x41, + 0x0A, 0x1C, 0xB5, 0x3B, 0xC7, 0x58, 0x06, 0x84 + }, + { + 0xB9, 0xDF, 0x57, 0xB3, 0x45, 0xEE, 0x6F, 0x87, + 0x0E, 0xE0, 0xE6, 0x3C, 0x55, 0x8B, 0x81, 0xC1, + 0xBC, 0x38, 0x42, 0x97, 0x6F, 0xD3, 0xCF, 0xB1, + 0xB5, 0x3B, 0x76, 0x6B, 0xF4, 0x36, 0xD1, 0xD1, + 0x75, 0xF4, 0xD4, 0xC5, 0xF1, 0xBD, 0x8D, 0x7A, + 0xF6, 0x5B, 0x5D, 0x18, 0xA7, 0x2F, 0x95, 0x71, + 0xF2, 0x34, 0x70, 0x19, 0x32, 0xAF, 0xB7, 0xC3, + 0xC9, 0x4A, 0x8C, 0x8F, 0xA0, 0x23, 0xDB, 0x4F + }, + { + 0xD8, 0xC8, 0x24, 0x95, 0xA2, 0xB5, 0xF6, 0x64, + 0x51, 0xF8, 0xC5, 0xB2, 0xE8, 0xA1, 0x73, 0x33, + 0xC2, 0xBE, 0x32, 0x20, 0xCE, 0x06, 0xA8, 0x14, + 0xC2, 0xCE, 0xA9, 0x5C, 0xC8, 0x65, 0x92, 0xAA, + 0x02, 0x15, 0xBF, 0x29, 0x46, 0x14, 0xA3, 0x28, + 0xCF, 0x07, 0x22, 0x2B, 0x73, 0xF9, 0x3F, 0x24, + 0x2A, 0x94, 0x8B, 0xCA, 0xE9, 0x56, 0x5F, 0xC9, + 0x70, 0x57, 0xB5, 0x2E, 0x02, 0x80, 0xEB, 0x82 + }, + { + 0x81, 0x34, 0xCE, 0x66, 0xD9, 0x5C, 0x40, 0x88, + 0xA5, 0x66, 0xD4, 0xE4, 0x35, 0x99, 0x06, 0x9A, + 0xD0, 0x45, 0x53, 0xB0, 0xFE, 0xA3, 0xD7, 0x48, + 0x19, 0xA6, 0xFD, 0x76, 0x6F, 0x43, 0x67, 0x42, + 0xF6, 0xB6, 0xEC, 0xC8, 0x27, 0x93, 0x98, 0x60, + 0x9F, 0x60, 0xB4, 0xE4, 0xBB, 0x44, 0xFD, 0x72, + 0xCD, 0xFB, 0xFF, 0x18, 0xD8, 0x03, 0x8A, 0xA7, + 0x12, 0x30, 0x83, 0x8B, 0x12, 0x6B, 0xC3, 0x00 + }, + { + 0x3D, 0xA8, 0x9F, 0x5C, 0x52, 0xB0, 0x52, 0xE0, + 0x42, 0xE5, 0x11, 0x7B, 0x96, 0x80, 0x6E, 0xDB, + 0x1C, 0x55, 0x22, 0x7E, 0x85, 0x14, 0xB3, 0x9E, + 0x8B, 0x22, 0xBE, 0xA4, 0xC9, 0x53, 0x30, 0x80, + 0xA4, 0xD7, 0xA9, 0x24, 0x92, 0xB7, 0x51, 0x76, + 0x9B, 0x0E, 0x11, 0x9E, 0xF4, 0xDB, 0x2B, 0xB8, + 0x8D, 0x5C, 0x1E, 0x75, 0xB4, 0x03, 0x10, 0x74, + 0xD7, 0xF2, 0x1A, 0x78, 0x01, 0x4A, 0x1F, 0x96 + }, + { + 0x9B, 0xDC, 0xB4, 0x69, 0xC2, 0x66, 0x5D, 0xD8, + 0x46, 0x83, 0xE5, 0x81, 0x01, 0xFD, 0xAE, 0x5C, + 0x88, 0x29, 0x2A, 0x4E, 0x05, 0xC4, 0x00, 0xCA, + 0x08, 0x26, 0xDA, 0x79, 0x38, 0x2B, 0x8A, 0x28, + 0x26, 0xFF, 0x24, 0xFC, 0xD5, 0x56, 0xC9, 0xD5, + 0xB5, 0xAA, 0x89, 0x2F, 0x02, 0xB1, 0x67, 0x04, + 0x77, 0x27, 0x9B, 0xD7, 0x5F, 0x1B, 0x2B, 0x7B, + 0x67, 0x5E, 0xFA, 0xC3, 0x80, 0x60, 0x70, 0x36 + }, + { + 0x6C, 0x77, 0x85, 0x7B, 0x38, 0x53, 0x3E, 0x41, + 0x4A, 0xF7, 0x38, 0x7C, 0x98, 0x56, 0x8D, 0x71, + 0xC8, 0xF0, 0xE3, 0x5E, 0x22, 0xB0, 0x2E, 0x2A, + 0x1C, 0x0D, 0xC6, 0xD5, 0x7E, 0x37, 0xD8, 0x68, + 0x72, 0x5A, 0xD8, 0x23, 0x58, 0x6A, 0x0B, 0xEE, + 0xF3, 0x98, 0x89, 0xCC, 0x31, 0xF1, 0xF7, 0xFA, + 0xD0, 0x96, 0x0A, 0x12, 0x5E, 0x29, 0xDF, 0xEA, + 0x74, 0x55, 0x12, 0xD1, 0x79, 0xE5, 0xF5, 0x89 + }, + { + 0x88, 0xC9, 0x83, 0x3A, 0x6D, 0x44, 0xFC, 0x25, + 0xBB, 0x64, 0xF3, 0xE9, 0x8E, 0x83, 0x8F, 0xB4, + 0xFF, 0x56, 0x48, 0x96, 0xDC, 0xD3, 0x58, 0x3A, + 0x8B, 0x57, 0xC9, 0x46, 0x6E, 0x74, 0x0C, 0x62, + 0x8B, 0x2D, 0x26, 0xEA, 0x14, 0x7C, 0xB3, 0x11, + 0x10, 0xFB, 0xAD, 0xCF, 0x9D, 0x01, 0x08, 0xAC, + 0xCE, 0xBE, 0x04, 0x31, 0x7D, 0x19, 0xFC, 0x03, + 0x66, 0xDE, 0x0C, 0x28, 0xA1, 0xA4, 0x5E, 0x2A + }, + { + 0x0A, 0xAB, 0xB3, 0xA1, 0x78, 0x46, 0x4A, 0x01, + 0x47, 0x64, 0x5F, 0x05, 0x71, 0x2A, 0x0A, 0x15, + 0x55, 0xC5, 0xB9, 0xA3, 0xE9, 0x99, 0xAB, 0x25, + 0x5A, 0xCA, 0x35, 0xC5, 0x03, 0x81, 0xF4, 0x90, + 0x55, 0x1A, 0x40, 0x89, 0x31, 0xAA, 0x6B, 0xE9, + 0xA4, 0xEF, 0x49, 0x7A, 0x16, 0x5B, 0x36, 0x66, + 0x3B, 0x1E, 0x1F, 0x05, 0x13, 0x48, 0x02, 0xB1, + 0x78, 0xB7, 0xC7, 0x04, 0x68, 0xCB, 0x98, 0xE8 + }, + { + 0x58, 0x50, 0xD8, 0x93, 0x70, 0x6B, 0x3B, 0xC2, + 0xDB, 0xBA, 0x9C, 0xFA, 0xB0, 0x28, 0xBE, 0xD8, + 0x19, 0xA2, 0x83, 0x11, 0xD2, 0xD6, 0xF0, 0xCD, + 0x8E, 0x27, 0x2E, 0xE6, 0x77, 0xBC, 0x87, 0x8A, + 0x0C, 0xED, 0x6C, 0x0D, 0xEA, 0x9E, 0x5C, 0xC9, + 0x4B, 0x2B, 0x4F, 0x59, 0x1A, 0x40, 0xEC, 0x9F, + 0xB1, 0x82, 0x22, 0xD6, 0xDE, 0xAC, 0xE1, 0xF9, + 0xC0, 0x83, 0xDC, 0x05, 0xDE, 0x11, 0x7A, 0x53 + }, + { + 0xBE, 0xE6, 0x96, 0xA4, 0x76, 0x4F, 0x94, 0x25, + 0xD9, 0x1B, 0x14, 0x17, 0x38, 0x62, 0x5A, 0x04, + 0x47, 0xA8, 0x22, 0xBB, 0xA7, 0xA8, 0x47, 0x78, + 0xCC, 0x3A, 0x77, 0xA3, 0x86, 0xCB, 0x18, 0x24, + 0x87, 0xDB, 0x51, 0x3B, 0xB8, 0xF3, 0x6F, 0xC2, + 0xF7, 0xE6, 0xD2, 0x89, 0x6E, 0x44, 0x56, 0xA5, + 0x23, 0x46, 0xC4, 0x94, 0x8E, 0x3E, 0xC6, 0x34, + 0xCB, 0xF1, 0x8F, 0x39, 0xC4, 0x46, 0xCB, 0xAB + }, + { + 0x3D, 0x9F, 0x75, 0xD3, 0xE5, 0x0D, 0x9B, 0xA3, + 0xBC, 0xAC, 0x4A, 0x4E, 0x11, 0x6B, 0x9B, 0x30, + 0x8D, 0xC6, 0x45, 0x99, 0xA3, 0x86, 0x4A, 0x9D, + 0xAF, 0xD7, 0x5C, 0xB7, 0x1F, 0x2D, 0xE3, 0x10, + 0x9F, 0x79, 0x56, 0xA7, 0xD2, 0xDD, 0x37, 0x4F, + 0x84, 0x06, 0xD7, 0x7F, 0x79, 0x63, 0x11, 0xE3, + 0xD3, 0x00, 0x89, 0xE5, 0x4D, 0xD6, 0xCE, 0x8A, + 0xBB, 0x02, 0xA8, 0x5A, 0x85, 0xAE, 0x92, 0xE4 + }, + { + 0xEF, 0x39, 0x51, 0x47, 0x5A, 0x16, 0xDF, 0x64, + 0x98, 0x32, 0x24, 0x04, 0x65, 0x30, 0xDC, 0x7C, + 0xB0, 0x53, 0xD2, 0x93, 0x94, 0x75, 0x39, 0x11, + 0xC4, 0x94, 0x99, 0x50, 0xF2, 0x3E, 0x8A, 0x92, + 0xC7, 0x09, 0xF4, 0x63, 0x69, 0xB2, 0x3A, 0x0D, + 0x70, 0x3A, 0x6F, 0x36, 0x49, 0x0F, 0x75, 0xBE, + 0x1E, 0x3E, 0x81, 0x29, 0xA8, 0x29, 0xF3, 0xDC, + 0xD7, 0x2D, 0x0E, 0x55, 0x49, 0x7B, 0x81, 0x33 + }, + { + 0xD4, 0x19, 0x7D, 0x2A, 0x68, 0x5B, 0xCA, 0x6B, + 0xFB, 0xDD, 0x0E, 0x3D, 0x84, 0xC7, 0x48, 0x01, + 0x35, 0x48, 0xBC, 0x84, 0x9F, 0xE6, 0x49, 0xDA, + 0xE7, 0xC4, 0xA2, 0x77, 0xFC, 0xBD, 0x8F, 0x81, + 0x8A, 0x9E, 0xDF, 0xA6, 0xCA, 0x14, 0xD7, 0xFE, + 0xEA, 0x72, 0x6B, 0x23, 0xB4, 0xA3, 0x3A, 0xA8, + 0xA3, 0xF5, 0xA6, 0x61, 0x67, 0x21, 0x5C, 0x61, + 0x48, 0xC0, 0x6B, 0x94, 0xCD, 0x8B, 0xFE, 0x37 + }, + { + 0x7A, 0x24, 0x40, 0x33, 0x35, 0xB8, 0x64, 0x10, + 0xD8, 0xD6, 0x93, 0xF1, 0x63, 0xD6, 0x19, 0x8A, + 0x68, 0x0F, 0x7E, 0x3A, 0xC0, 0x25, 0xEC, 0x44, + 0x74, 0x24, 0x9B, 0x01, 0x16, 0x77, 0xFE, 0x1C, + 0x86, 0x6A, 0xAF, 0x45, 0x3D, 0xB0, 0xE8, 0xF6, + 0x54, 0x33, 0x51, 0x50, 0x86, 0x3A, 0xCE, 0x57, + 0x66, 0x50, 0x80, 0x31, 0x91, 0x27, 0x8E, 0x9D, + 0x4B, 0x54, 0x7A, 0x43, 0x4C, 0x56, 0x54, 0xE2 + }, + { + 0xAF, 0x07, 0xC6, 0x7D, 0x58, 0x74, 0x3A, 0xEB, + 0x18, 0x50, 0xEB, 0x53, 0xB2, 0xDA, 0x78, 0xEC, + 0xF7, 0x09, 0x58, 0x18, 0x32, 0x5B, 0xEB, 0x86, + 0x6F, 0xF3, 0x13, 0xE3, 0x94, 0xC0, 0x07, 0xE0, + 0xC0, 0xB5, 0xA1, 0xCD, 0x7A, 0xE6, 0xBB, 0x37, + 0xCD, 0x27, 0x81, 0xB5, 0x2D, 0x15, 0x4D, 0x18, + 0x86, 0x5D, 0x5E, 0x37, 0xDB, 0xAA, 0x5F, 0x96, + 0x73, 0x9B, 0xF7, 0x69, 0x59, 0x96, 0xAE, 0x30 + }, + { + 0x28, 0xB3, 0xC2, 0x60, 0xFA, 0x7F, 0x23, 0xB9, + 0xCC, 0xAD, 0xD6, 0x15, 0xA1, 0x14, 0x69, 0x49, + 0x8A, 0xDB, 0x18, 0xD7, 0xA9, 0xF6, 0x84, 0xFD, + 0xE4, 0x35, 0xC0, 0x65, 0x33, 0xF5, 0xF5, 0x08, + 0xB2, 0x9B, 0x5E, 0xCD, 0x0E, 0xCD, 0x57, 0x36, + 0x9F, 0x22, 0xF1, 0xC5, 0x4E, 0x61, 0xBE, 0x6C, + 0xD1, 0x04, 0xC8, 0xF7, 0xD3, 0xE1, 0x84, 0x7A, + 0xAD, 0x67, 0x07, 0x3A, 0x47, 0x86, 0xE1, 0xDB + }, + { + 0xD6, 0x43, 0x23, 0x33, 0x25, 0x23, 0x9E, 0x2E, + 0xBD, 0x41, 0x1F, 0x0E, 0x00, 0x23, 0x30, 0x56, + 0x2E, 0xB1, 0xBB, 0x08, 0xE6, 0x88, 0x24, 0xB7, + 0x1B, 0x98, 0x19, 0x9C, 0x76, 0xD5, 0x31, 0x58, + 0xD9, 0x1D, 0xDD, 0x6F, 0x4F, 0x82, 0x61, 0xEC, + 0x1D, 0x72, 0xFC, 0x77, 0xC2, 0xCC, 0x23, 0x7E, + 0xDA, 0x15, 0xF0, 0x25, 0x7C, 0xF0, 0x7B, 0x84, + 0xCF, 0x1F, 0xBD, 0x1D, 0xBA, 0xFA, 0x1D, 0xFC + }, + { + 0x3D, 0x7B, 0x44, 0xCC, 0x82, 0xEF, 0xCA, 0xFC, + 0xAB, 0xA6, 0xB1, 0x91, 0x05, 0x48, 0x95, 0x8C, + 0x18, 0x0A, 0x0E, 0x8D, 0x84, 0xBC, 0x66, 0x3E, + 0x8E, 0xF9, 0x53, 0x3B, 0xD8, 0x0C, 0x4B, 0xBA, + 0xAA, 0x25, 0x5B, 0x19, 0x81, 0xF7, 0x56, 0xEB, + 0x10, 0x79, 0xAD, 0x0F, 0x34, 0x71, 0xA1, 0xFC, + 0x9D, 0x7A, 0x43, 0x23, 0x39, 0x30, 0x3A, 0x57, + 0x81, 0xA3, 0x45, 0x35, 0x30, 0x9E, 0x5A, 0x24 + }, + { + 0xEB, 0x08, 0x12, 0xC9, 0x67, 0x06, 0x46, 0xD5, + 0x63, 0x19, 0x8B, 0x11, 0x7A, 0xAF, 0xC5, 0x6F, + 0xA1, 0xB6, 0x56, 0x0F, 0x88, 0xB5, 0x75, 0x4E, + 0xBF, 0xC3, 0x1B, 0x35, 0x52, 0x16, 0xD8, 0xD7, + 0x4D, 0x34, 0x1E, 0x35, 0xB2, 0x43, 0xBC, 0x93, + 0x8C, 0xF5, 0x46, 0xAF, 0x1F, 0x73, 0xC1, 0xB0, + 0x04, 0x55, 0xDC, 0x06, 0xB2, 0xC6, 0xC5, 0x35, + 0x27, 0x9E, 0x87, 0x67, 0x49, 0x8F, 0x14, 0xE6 + }, + { + 0x7B, 0xBA, 0x7D, 0x73, 0x04, 0x02, 0x1C, 0x75, + 0xB5, 0xD6, 0xCE, 0x66, 0xB4, 0xEF, 0xA5, 0x50, + 0x19, 0xD9, 0x42, 0xD2, 0x08, 0xAF, 0xAC, 0x82, + 0x11, 0xAA, 0x7E, 0x5E, 0x11, 0x1E, 0x27, 0x69, + 0x76, 0x70, 0xE4, 0xEC, 0x91, 0xBA, 0x30, 0x8E, + 0xBD, 0xFB, 0x19, 0x15, 0x4C, 0x3B, 0xAD, 0x05, + 0x26, 0xA6, 0x25, 0x41, 0xAE, 0x5D, 0x43, 0xD0, + 0xF5, 0x47, 0xB9, 0xD9, 0x8E, 0x07, 0x36, 0x60 + }, + { + 0xA8, 0xE2, 0xA9, 0x46, 0x8D, 0xA3, 0xE3, 0x54, + 0x3A, 0x23, 0xA5, 0x78, 0x78, 0x0E, 0x25, 0x62, + 0xC7, 0xCE, 0x57, 0xFD, 0x11, 0x20, 0xE1, 0xC0, + 0x24, 0xD7, 0xEA, 0x32, 0x90, 0x31, 0x70, 0x46, + 0x61, 0x6E, 0x14, 0xCD, 0x0F, 0x15, 0xA8, 0x6B, + 0x99, 0x39, 0x54, 0x9B, 0x14, 0x76, 0x11, 0xB6, + 0xA5, 0x5D, 0x85, 0xAB, 0xC2, 0x5F, 0x63, 0x95, + 0x46, 0xB8, 0x9D, 0xD2, 0x3D, 0x39, 0xA9, 0x85 + }, + { + 0xCE, 0x87, 0x4C, 0xD6, 0xE1, 0x95, 0x8B, 0x9D, + 0x7F, 0x11, 0xFF, 0x44, 0xAB, 0x08, 0x32, 0xE8, + 0x48, 0x70, 0x2C, 0x8F, 0x26, 0x65, 0x6B, 0xA1, + 0x0B, 0xF5, 0x72, 0x0A, 0x7C, 0xAA, 0x1F, 0x59, + 0x08, 0xC9, 0x9A, 0x96, 0x03, 0xA9, 0x8B, 0x41, + 0x6C, 0x57, 0x22, 0x8C, 0x81, 0x9C, 0xEA, 0xF8, + 0x27, 0x01, 0x3B, 0x2E, 0x6D, 0x6B, 0x2D, 0xAE, + 0x59, 0xDF, 0xF1, 0x04, 0xB9, 0x02, 0xC3, 0x1B + }, + { + 0x30, 0xFF, 0xFE, 0x37, 0x21, 0x8D, 0xB1, 0x94, + 0xB2, 0x32, 0x73, 0x49, 0x8F, 0x45, 0x44, 0xD3, + 0x84, 0x14, 0xBE, 0xE4, 0x1B, 0x17, 0x55, 0xA0, + 0xC6, 0xC2, 0xDB, 0xCB, 0x41, 0x19, 0x42, 0xD5, + 0xEC, 0xB9, 0xD4, 0x52, 0x3F, 0xB4, 0x79, 0x4B, + 0xA3, 0x6E, 0x57, 0x9A, 0xF2, 0xF8, 0xDD, 0x85, + 0x19, 0x99, 0x23, 0x31, 0x83, 0xFA, 0xB2, 0x7B, + 0x47, 0xAD, 0xD8, 0x7D, 0xF3, 0x59, 0x14, 0xBB + }, + { + 0xCE, 0xF4, 0x43, 0x1D, 0xCE, 0x9F, 0xF5, 0x5A, + 0x00, 0x30, 0x0E, 0xC8, 0x64, 0x9E, 0x27, 0x58, + 0x36, 0x18, 0x22, 0x43, 0x69, 0xF6, 0x0A, 0x5C, + 0x89, 0x6B, 0x2A, 0x31, 0x10, 0xB0, 0x32, 0xB8, + 0x7C, 0x9E, 0xE4, 0xF2, 0x6C, 0x5F, 0x0B, 0xDB, + 0x50, 0x3E, 0xA7, 0x44, 0x7A, 0x5D, 0xB3, 0xF7, + 0x07, 0xFE, 0x34, 0x10, 0xDA, 0xCD, 0xD7, 0x57, + 0x22, 0x19, 0xBD, 0xEA, 0x8E, 0x17, 0xDC, 0x04 + }, + { + 0x8F, 0xF0, 0xBC, 0xB7, 0x5F, 0x00, 0x61, 0xB5, + 0xF9, 0x09, 0x29, 0x8F, 0x56, 0x9E, 0x45, 0xC7, + 0x5E, 0xD2, 0xD6, 0x4A, 0x81, 0x89, 0xCE, 0xBD, + 0x4E, 0x02, 0x56, 0x6E, 0x1A, 0x1B, 0x8B, 0xE5, + 0x3A, 0x78, 0x32, 0x28, 0x55, 0x8E, 0x28, 0xB5, + 0xF8, 0x7C, 0xCC, 0x2F, 0x42, 0x8F, 0x7F, 0x87, + 0x97, 0x44, 0xB5, 0x25, 0xB2, 0x49, 0x62, 0xB3, + 0x60, 0x4B, 0x12, 0x0F, 0x06, 0x77, 0x9F, 0x2E + }, + { + 0x7F, 0x8D, 0xDF, 0xFB, 0x4D, 0xC1, 0x51, 0x91, + 0xDE, 0x3D, 0xDB, 0xE4, 0xA0, 0xF8, 0x8B, 0x7A, + 0xB0, 0x2D, 0x48, 0xE2, 0x5C, 0xFC, 0x1F, 0xE9, + 0x1D, 0xA5, 0x57, 0xE8, 0x85, 0xD0, 0x12, 0xB8, + 0xF6, 0x55, 0x26, 0xC5, 0xB7, 0xB1, 0x01, 0x3F, + 0xC8, 0x16, 0x58, 0x50, 0x43, 0xA3, 0x45, 0x60, + 0x5A, 0x39, 0xD8, 0xDA, 0xD7, 0x0D, 0x8A, 0x64, + 0x48, 0x51, 0x32, 0x50, 0xAA, 0xC4, 0xF3, 0xD5 + }, + { + 0xB1, 0xFE, 0x8C, 0x68, 0xAE, 0xF6, 0xB4, 0xD4, + 0xB2, 0x33, 0x54, 0xEB, 0x8C, 0x1D, 0x8F, 0x5A, + 0x56, 0xE3, 0x2E, 0x76, 0xB9, 0x6A, 0xC8, 0x44, + 0x3B, 0x2A, 0xB8, 0x35, 0xE4, 0xC8, 0xB6, 0x74, + 0xB3, 0x3E, 0x4C, 0x6C, 0x6D, 0xC1, 0x21, 0xD7, + 0xC2, 0xD3, 0x4B, 0x59, 0xB3, 0x7A, 0x56, 0x8A, + 0x1C, 0x98, 0xD5, 0x00, 0x32, 0x4E, 0x53, 0x08, + 0x87, 0x85, 0xB6, 0xB0, 0x80, 0x63, 0x47, 0xD1 + }, + { + 0x8E, 0x87, 0x34, 0xFC, 0xF9, 0x25, 0x9E, 0xE3, + 0x7F, 0xE9, 0xC6, 0xCD, 0xA2, 0x82, 0xC2, 0xD5, + 0xEB, 0x83, 0xD0, 0xCF, 0x43, 0x9C, 0x86, 0x19, + 0xD4, 0xB0, 0x42, 0xFF, 0x69, 0x96, 0x6B, 0x03, + 0x56, 0x5B, 0xE4, 0xDF, 0x96, 0x39, 0x3F, 0xE6, + 0xBF, 0x35, 0xAF, 0xA1, 0x6E, 0x02, 0x73, 0xB6, + 0xD3, 0x39, 0xC0, 0x09, 0x95, 0xBF, 0x6F, 0x60, + 0xA7, 0x14, 0xEF, 0x18, 0x0E, 0xBB, 0x93, 0x15 + }, + { + 0xAE, 0x15, 0x6D, 0x43, 0xA7, 0x2C, 0x04, 0x29, + 0x42, 0x59, 0x58, 0x78, 0xA7, 0x83, 0x07, 0x97, + 0x60, 0xF5, 0x21, 0xED, 0xB8, 0xB2, 0xC3, 0xD4, + 0x1A, 0x56, 0x6B, 0x7C, 0xF7, 0x4A, 0x4A, 0x08, + 0xEA, 0x0F, 0x11, 0x9D, 0x24, 0x0A, 0x62, 0xEC, + 0x73, 0xB9, 0x50, 0x97, 0x88, 0xFA, 0x3A, 0xED, + 0xF1, 0x20, 0xEE, 0x88, 0xCB, 0x95, 0x1B, 0x69, + 0x3F, 0x8F, 0x7C, 0xAF, 0x8C, 0xBA, 0x37, 0x7F + }, + { + 0x93, 0x30, 0xAA, 0xCA, 0x8C, 0x08, 0x84, 0x46, + 0x58, 0xC2, 0x95, 0x06, 0xB1, 0xC3, 0x42, 0x72, + 0xE2, 0xB3, 0xC7, 0xB4, 0xE7, 0x5E, 0x6F, 0xE9, + 0x9A, 0x01, 0x07, 0xEC, 0x5D, 0xA4, 0x53, 0x0F, + 0xB1, 0xC8, 0x8C, 0xAA, 0x66, 0xDD, 0x9C, 0x47, + 0x1E, 0x01, 0xCA, 0x21, 0xA1, 0x3A, 0x5D, 0x6F, + 0x82, 0x15, 0xDE, 0xD3, 0x14, 0x7E, 0x94, 0xDE, + 0x20, 0x88, 0x57, 0x1F, 0xD1, 0xBF, 0x23, 0xB6 + }, + { + 0xC1, 0x29, 0xF2, 0x2C, 0x50, 0xF5, 0x99, 0x72, + 0x32, 0xE2, 0xB9, 0xF9, 0x3D, 0xFA, 0xA0, 0x0A, + 0xD8, 0xA5, 0x34, 0x29, 0xF9, 0xD1, 0x5B, 0x98, + 0x42, 0xE3, 0xAE, 0x08, 0xD8, 0x49, 0xEB, 0xDD, + 0x45, 0x23, 0x8C, 0x85, 0xF9, 0x2C, 0x6F, 0x91, + 0x7E, 0x0F, 0x8F, 0x6F, 0x94, 0xE2, 0x34, 0xBE, + 0x07, 0x61, 0x68, 0xE0, 0xDF, 0x43, 0xD0, 0x28, + 0x45, 0x52, 0x79, 0xA6, 0xFF, 0x65, 0xDC, 0x84 + }, + { + 0x0E, 0x2B, 0x4B, 0xC2, 0xF6, 0xA7, 0x5B, 0xE4, + 0xB7, 0xC9, 0xD4, 0xB5, 0x3D, 0x10, 0x4D, 0xA0, + 0x65, 0x85, 0x8D, 0x38, 0x7B, 0x34, 0x0B, 0xC1, + 0x63, 0x4F, 0x3A, 0x83, 0x32, 0xD5, 0x4C, 0xAA, + 0x94, 0x30, 0x24, 0xB2, 0x13, 0xDC, 0x8D, 0x4F, + 0x21, 0x9E, 0xC8, 0xE1, 0xDE, 0xCA, 0xC7, 0xD5, + 0xC6, 0xAE, 0x69, 0xC9, 0xEF, 0xD8, 0x81, 0x49, + 0x36, 0x78, 0x38, 0x20, 0x5D, 0x0D, 0xC7, 0xC0 + }, + { + 0x83, 0xB5, 0x43, 0x85, 0x3B, 0x81, 0x42, 0xA8, + 0x3B, 0xEF, 0xF0, 0x73, 0x5F, 0x20, 0x18, 0x91, + 0xE7, 0xFF, 0xC6, 0x7D, 0xBD, 0xCD, 0x21, 0xA4, + 0x22, 0xBB, 0x33, 0x6D, 0xE3, 0x29, 0x72, 0xAE, + 0x03, 0x92, 0x64, 0x6F, 0x68, 0x27, 0xD8, 0x0C, + 0xDA, 0x65, 0x4F, 0xD3, 0xA0, 0x77, 0x4C, 0xD2, + 0xF9, 0x95, 0x51, 0x7C, 0xF0, 0x64, 0xC6, 0x17, + 0xF2, 0x1A, 0x54, 0x27, 0x5F, 0xE5, 0x0C, 0x8D + }, + { + 0x09, 0xBE, 0x15, 0xEB, 0x6A, 0x5C, 0x22, 0x6F, + 0x6D, 0x95, 0x08, 0xCB, 0xA4, 0xA2, 0x51, 0x9F, + 0xBA, 0x17, 0x2A, 0xF8, 0x37, 0x58, 0x27, 0xD7, + 0x54, 0xA7, 0xA1, 0xBC, 0x19, 0x25, 0xD1, 0x3F, + 0x5E, 0x63, 0x43, 0xF3, 0xE1, 0x4D, 0x08, 0xA0, + 0x6E, 0x8D, 0x37, 0xF8, 0xEC, 0x56, 0xFB, 0x43, + 0x8E, 0x62, 0x36, 0x66, 0xB6, 0xFB, 0x0E, 0x23, + 0xFB, 0x50, 0x47, 0x7D, 0x41, 0x1B, 0x0C, 0x3A + }, + { + 0xC3, 0x57, 0x97, 0xE9, 0x83, 0x2D, 0x3E, 0x23, + 0x23, 0x33, 0x5B, 0x8C, 0x19, 0xC5, 0xFA, 0x74, + 0x91, 0x60, 0x2D, 0xBF, 0x6B, 0xEA, 0x77, 0xFA, + 0xEE, 0xC9, 0x51, 0x0B, 0xC2, 0xE8, 0x91, 0xC8, + 0xC3, 0x46, 0x21, 0x99, 0xF6, 0x04, 0x18, 0xD2, + 0xE0, 0xAB, 0xFF, 0xE3, 0x1B, 0x61, 0x3B, 0xB9, + 0x80, 0xEA, 0x32, 0xB7, 0x6C, 0x82, 0x43, 0x8D, + 0x02, 0x5F, 0x67, 0x8C, 0xAF, 0x48, 0x24, 0xA4 + }, + { + 0xCF, 0xC0, 0x57, 0xFD, 0xA7, 0x8A, 0x50, 0x31, + 0x8F, 0x49, 0x78, 0xFF, 0xFF, 0xAF, 0x77, 0x17, + 0x98, 0xE1, 0x2C, 0x3E, 0xA8, 0xC7, 0x98, 0x19, + 0x5B, 0xC5, 0xB4, 0xE6, 0x89, 0x1E, 0x61, 0xAA, + 0x25, 0xF7, 0xAF, 0x4A, 0xA7, 0x28, 0x6A, 0xC8, + 0x50, 0x76, 0x62, 0xC9, 0x07, 0xED, 0x91, 0x3E, + 0xDA, 0x65, 0x8F, 0x63, 0xFC, 0x47, 0x99, 0x7C, + 0x59, 0xB8, 0x59, 0x70, 0xF8, 0x78, 0xCA, 0x18 + }, + { + 0xD8, 0xEB, 0xE0, 0xE6, 0x38, 0xFC, 0x53, 0x5B, + 0x52, 0xCB, 0x0A, 0xFC, 0xE0, 0xF8, 0x2D, 0xDE, + 0x28, 0x57, 0x01, 0xAF, 0xF3, 0x29, 0xA5, 0x4B, + 0xA0, 0x6D, 0xFD, 0x3D, 0x1B, 0x4B, 0x31, 0xF9, + 0xF4, 0xB2, 0x4D, 0x9D, 0x68, 0x36, 0xF1, 0x22, + 0x3D, 0x6D, 0xE6, 0x6B, 0xAE, 0x78, 0x88, 0xFE, + 0xBC, 0x20, 0x40, 0xCF, 0xE9, 0x30, 0xE6, 0x9C, + 0xED, 0x59, 0xDA, 0x6D, 0xA8, 0xA0, 0xA6, 0xA6 + }, + { + 0x16, 0xB8, 0xC5, 0x5C, 0xF2, 0xF1, 0x35, 0xA4, + 0x32, 0x59, 0x0D, 0x2D, 0x4C, 0xFA, 0x38, 0x59, + 0x2F, 0x59, 0x35, 0xF8, 0xE7, 0x1C, 0xE0, 0x8A, + 0x02, 0x06, 0xA0, 0xE5, 0xAB, 0xEA, 0x90, 0xB2, + 0xE1, 0x07, 0xEB, 0x86, 0xB9, 0x18, 0x82, 0x3B, + 0xDD, 0x3B, 0xD2, 0x66, 0x07, 0x22, 0xC8, 0xDB, + 0xFA, 0x66, 0xAB, 0xB9, 0xF8, 0x63, 0x8E, 0x46, + 0x34, 0x02, 0xF6, 0x57, 0xA1, 0x68, 0x64, 0x0A + }, + { + 0x6A, 0x6E, 0x89, 0x38, 0x4F, 0x53, 0x5F, 0x02, + 0x17, 0x6C, 0x48, 0xA9, 0x93, 0xD3, 0x68, 0x7B, + 0x38, 0x9B, 0xFC, 0x03, 0x05, 0x0C, 0x77, 0x70, + 0x86, 0x35, 0x5C, 0x1A, 0x55, 0x59, 0x77, 0x42, + 0xF0, 0xB7, 0x48, 0x34, 0xA7, 0x1D, 0x05, 0x2A, + 0xE8, 0xA8, 0x3D, 0xC3, 0x4A, 0x8F, 0xD7, 0xBA, + 0x5A, 0xA6, 0x9D, 0xBD, 0x61, 0x2A, 0x4C, 0x22, + 0xDF, 0x4F, 0x74, 0xE2, 0x52, 0x8F, 0xB7, 0xA3 + }, + { + 0x1E, 0x40, 0x38, 0xCF, 0xA5, 0x0D, 0x8B, 0x13, + 0xEF, 0x68, 0xBE, 0xC3, 0xB0, 0xFF, 0xD5, 0x62, + 0xA0, 0x7A, 0xD6, 0x34, 0xB5, 0x82, 0x82, 0x57, + 0xDB, 0xA8, 0x73, 0x04, 0xF8, 0x23, 0xA9, 0x00, + 0x49, 0x2A, 0x31, 0x37, 0x19, 0x8B, 0x60, 0x5C, + 0xC7, 0xF7, 0x7C, 0x33, 0xB8, 0xCA, 0x3D, 0x94, + 0x0F, 0xD9, 0xB3, 0x38, 0xCF, 0x6B, 0x7B, 0x36, + 0xE7, 0xD9, 0xD9, 0x27, 0x20, 0x97, 0x93, 0xD0 + }, + { + 0x5B, 0xA6, 0xCD, 0x98, 0x8F, 0xF9, 0xA4, 0x81, + 0x91, 0x42, 0x21, 0x7E, 0xD6, 0x5D, 0x43, 0x7B, + 0x41, 0x3B, 0xA5, 0x02, 0x6B, 0x55, 0x4D, 0x8D, + 0x94, 0xEA, 0x27, 0x02, 0xC0, 0x96, 0xD1, 0x01, + 0x47, 0x75, 0xDB, 0xA2, 0xCA, 0xE9, 0x6F, 0x1E, + 0x2E, 0x72, 0x29, 0xC3, 0x78, 0xF2, 0x0B, 0x03, + 0x89, 0xE1, 0x19, 0x54, 0x7F, 0xDD, 0x35, 0x22, + 0x4A, 0x61, 0x7F, 0xCD, 0xCD, 0x0C, 0xB3, 0xAF + }, + { + 0x2D, 0x20, 0x96, 0x12, 0x30, 0xE2, 0x50, 0xF8, + 0x1D, 0xDC, 0xD2, 0xD2, 0xAB, 0x3E, 0xF0, 0xDA, + 0xCF, 0x96, 0x85, 0x1E, 0xBA, 0xE5, 0x96, 0x34, + 0x47, 0x19, 0x2C, 0xDB, 0x89, 0xE4, 0x8E, 0x84, + 0xF3, 0x96, 0xEC, 0x9A, 0x09, 0x25, 0x27, 0x84, + 0xE1, 0x73, 0xAD, 0xA5, 0x2A, 0x9C, 0x81, 0xAC, + 0xDA, 0xB3, 0xD8, 0xD6, 0x83, 0x80, 0x24, 0x7A, + 0xE9, 0x75, 0x23, 0x9B, 0x01, 0x7D, 0xC1, 0xCE + }, + { + 0x35, 0x38, 0x3E, 0xA7, 0x76, 0x2B, 0x55, 0x31, + 0x0A, 0x7D, 0x57, 0xFB, 0xD5, 0xA5, 0x49, 0x97, + 0x57, 0x9B, 0x0B, 0xA3, 0x9A, 0x4E, 0xB8, 0x87, + 0x94, 0x2B, 0xD1, 0x4F, 0xD8, 0x48, 0x31, 0x88, + 0xE5, 0x00, 0x48, 0x83, 0x8D, 0x6C, 0x02, 0xDC, + 0x75, 0x89, 0x59, 0xA9, 0xF7, 0x4D, 0x83, 0x37, + 0x27, 0x43, 0xE8, 0x64, 0xC6, 0x01, 0xED, 0x70, + 0x40, 0xA9, 0xE8, 0x71, 0x52, 0xD4, 0xCF, 0xFB + }, + { + 0x0B, 0x22, 0x3B, 0x6A, 0x1C, 0x2D, 0x3A, 0xB3, + 0xF9, 0x07, 0x7A, 0x31, 0x7B, 0x7F, 0xE3, 0x2F, + 0x6F, 0x95, 0x7B, 0x7B, 0x17, 0x41, 0xF2, 0x71, + 0x77, 0x71, 0x83, 0x4D, 0x37, 0x96, 0xA1, 0x9B, + 0xA3, 0x62, 0x73, 0xC9, 0xEE, 0xD6, 0x4C, 0x07, + 0xFA, 0x4E, 0x9A, 0xF7, 0xA9, 0x8A, 0xCE, 0x9C, + 0x78, 0x9A, 0x79, 0xA5, 0xA0, 0xF9, 0x4D, 0x04, + 0x05, 0xAA, 0xF0, 0x4A, 0xF3, 0x1E, 0xD7, 0x97 + }, + { + 0x5A, 0x00, 0x7F, 0x58, 0x95, 0x52, 0x4A, 0x5E, + 0x80, 0x37, 0x03, 0x6E, 0x0F, 0x26, 0x39, 0xFD, + 0xA8, 0xC5, 0xC1, 0x51, 0x2D, 0x76, 0xE9, 0xD1, + 0x9B, 0x3D, 0xD2, 0xD5, 0xBA, 0x43, 0xF5, 0x07, + 0x97, 0x41, 0xA4, 0x58, 0x31, 0x3C, 0x5E, 0x02, + 0x40, 0x0C, 0xE0, 0x2C, 0xB6, 0x56, 0x80, 0xBE, + 0x28, 0x2E, 0xAC, 0xD9, 0xA2, 0x54, 0xEF, 0x1C, + 0xDD, 0xEE, 0xBD, 0xCE, 0xE8, 0x5D, 0x41, 0x87 + }, + { + 0xBE, 0x4D, 0xD1, 0xCC, 0xBD, 0xE1, 0x67, 0x00, + 0x04, 0xD0, 0xEF, 0xAB, 0x65, 0x43, 0xE9, 0x1C, + 0x4E, 0x46, 0x64, 0xE5, 0xA2, 0xA8, 0x8B, 0xAC, + 0x6D, 0xD2, 0x7D, 0x27, 0x64, 0x8D, 0x30, 0x2A, + 0x06, 0x5B, 0xE6, 0x07, 0x8B, 0x22, 0xE4, 0xC4, + 0xAB, 0x4F, 0x7F, 0x7C, 0xBF, 0xAF, 0xC1, 0xAD, + 0x86, 0xEC, 0x2A, 0x50, 0x4F, 0xE5, 0x85, 0x17, + 0x66, 0xF7, 0xA3, 0x24, 0x47, 0x57, 0xCB, 0x6F + }, + { + 0x0F, 0xB4, 0x48, 0x3F, 0x96, 0x59, 0x29, 0x6C, + 0xB9, 0x24, 0x5B, 0x57, 0x79, 0x2A, 0x1E, 0x6A, + 0x99, 0xF2, 0x87, 0x90, 0x07, 0x72, 0x87, 0x96, + 0x8A, 0xB3, 0xEF, 0x35, 0x89, 0xE6, 0x90, 0x24, + 0x06, 0xF1, 0xF3, 0x9D, 0xCC, 0xE0, 0x06, 0x1D, + 0xEA, 0x94, 0x0F, 0xC8, 0xC1, 0xC4, 0x9F, 0x4B, + 0x54, 0x5E, 0xED, 0x59, 0xE9, 0x6D, 0xDA, 0xE9, + 0x6A, 0x6C, 0x35, 0xB5, 0x59, 0x3C, 0x29, 0x77 + }, + { + 0x41, 0xD1, 0xFA, 0xDC, 0x60, 0xA4, 0x6C, 0x9A, + 0xD0, 0x12, 0x0A, 0x3F, 0x54, 0xD0, 0x05, 0xF5, + 0xA1, 0x07, 0x5E, 0x2F, 0x71, 0xEE, 0x0D, 0xA6, + 0x18, 0xBA, 0xC1, 0x46, 0x1E, 0xFA, 0xE9, 0x69, + 0xEC, 0xCD, 0x7A, 0xA5, 0x75, 0xC4, 0xCD, 0xAE, + 0x97, 0x1D, 0xED, 0x13, 0xAE, 0x13, 0xC5, 0x06, + 0x87, 0x2C, 0xEC, 0xB5, 0xB2, 0x08, 0xFA, 0x72, + 0xA9, 0x48, 0x40, 0x02, 0x3E, 0xDB, 0x3E, 0xFE + }, + { + 0x2F, 0x7F, 0xDC, 0x1D, 0xA4, 0x4B, 0x6E, 0x5D, + 0x2D, 0xEC, 0xDE, 0x82, 0x1A, 0xAF, 0x4B, 0x49, + 0x16, 0x8C, 0x02, 0xE8, 0xD5, 0xF2, 0x5D, 0x5C, + 0x69, 0x98, 0x71, 0x08, 0x3A, 0xEB, 0xD9, 0x28, + 0xB7, 0x4D, 0xC2, 0x2D, 0xCB, 0xED, 0xFA, 0xBA, + 0x93, 0x16, 0xAE, 0xFC, 0xA8, 0x48, 0xD1, 0x5F, + 0x05, 0x17, 0x32, 0x99, 0x03, 0xD3, 0x4B, 0x83, + 0x70, 0xDD, 0xF9, 0xBD, 0x58, 0xC6, 0xD0, 0xCD + }, + { + 0x88, 0x55, 0x8A, 0x46, 0x4E, 0xE1, 0xA8, 0x80, + 0x3B, 0x23, 0x95, 0xAF, 0x6A, 0x64, 0x90, 0x84, + 0x2B, 0x5C, 0xD4, 0x3D, 0x41, 0xF6, 0xC0, 0x7C, + 0xD6, 0xC5, 0xF8, 0x5F, 0x82, 0xF5, 0x84, 0x32, + 0xA0, 0xB1, 0x62, 0xB4, 0x38, 0xBF, 0x0C, 0xB7, + 0x08, 0x2A, 0x76, 0x73, 0xE2, 0x87, 0xD6, 0xB9, + 0x0F, 0x8D, 0x0D, 0xC8, 0xAA, 0x5C, 0xEB, 0xA3, + 0x6B, 0xFA, 0x77, 0xB1, 0x5B, 0xA0, 0x69, 0x16 + }, + { + 0xEC, 0xC1, 0x49, 0x91, 0x7B, 0x26, 0x63, 0x98, + 0xB6, 0xF3, 0x29, 0x7E, 0x96, 0x96, 0x73, 0xB1, + 0x4E, 0xAE, 0x69, 0xCE, 0x43, 0x67, 0x1F, 0xD3, + 0xC6, 0xC2, 0x15, 0xC7, 0xCF, 0x42, 0xDE, 0xA1, + 0x02, 0xFC, 0x6B, 0xD9, 0x0C, 0x87, 0xDB, 0xD4, + 0x29, 0x02, 0x51, 0x12, 0x9C, 0xC1, 0x9B, 0x38, + 0xCC, 0xF0, 0x0C, 0xBD, 0xB1, 0x6D, 0xD8, 0xDE, + 0x51, 0x58, 0x60, 0x1A, 0x41, 0x6B, 0x1F, 0x00 + }, + { + 0xED, 0x30, 0x12, 0xF8, 0x9D, 0x71, 0xED, 0x13, + 0xBB, 0x82, 0x72, 0xEC, 0xDC, 0x3D, 0x0F, 0x51, + 0xE1, 0x4A, 0x37, 0xC1, 0xEF, 0x77, 0x57, 0x77, + 0x7A, 0xDA, 0x67, 0x12, 0x78, 0x4B, 0xE1, 0x6E, + 0xCF, 0xD3, 0xE6, 0x40, 0x58, 0x30, 0xF5, 0x1D, + 0xB3, 0x3D, 0xCB, 0x85, 0x52, 0x92, 0x93, 0xE2, + 0x3E, 0x47, 0x3A, 0xBF, 0x8C, 0x5C, 0x76, 0x55, + 0xD0, 0xC4, 0xF1, 0x52, 0xD0, 0x48, 0xBA, 0xB2 + }, + { + 0x09, 0x7A, 0x81, 0x19, 0x1E, 0x10, 0x05, 0x67, + 0x6D, 0x6E, 0x22, 0xA9, 0x63, 0x48, 0xFA, 0x4A, + 0x7C, 0x95, 0x61, 0xFD, 0x4D, 0x22, 0x8E, 0xB2, + 0x5F, 0x29, 0x47, 0x56, 0xBB, 0x87, 0xA2, 0xBA, + 0x88, 0x47, 0x5B, 0x03, 0x6F, 0x79, 0xFE, 0x37, + 0x3D, 0x75, 0x40, 0x87, 0x05, 0x52, 0x00, 0x1D, + 0x54, 0x79, 0x5F, 0x25, 0x92, 0x39, 0xBE, 0x6D, + 0x32, 0xC4, 0x87, 0xD1, 0x94, 0x4F, 0x1F, 0xE7 + }, + { + 0x3F, 0xC7, 0x98, 0xE4, 0x69, 0xD3, 0x90, 0x86, + 0xBA, 0x0B, 0xB4, 0x06, 0x3E, 0x80, 0x5F, 0xDF, + 0xB2, 0x20, 0x8D, 0xE4, 0x99, 0x18, 0x41, 0x73, + 0xF9, 0xA2, 0x36, 0x4D, 0x56, 0xBC, 0xD5, 0x63, + 0xED, 0x61, 0x9B, 0xB6, 0x87, 0x32, 0x24, 0x25, + 0x01, 0x4A, 0x1A, 0xAD, 0x3B, 0xCF, 0x50, 0xD2, + 0x2D, 0x83, 0xA9, 0x9D, 0x09, 0x73, 0x0A, 0x92, + 0xEC, 0x65, 0x46, 0xB3, 0xFC, 0x40, 0xA2, 0xC6 + }, + { + 0x69, 0x12, 0xB4, 0xB3, 0x41, 0xC7, 0xDD, 0x70, + 0x68, 0x37, 0x38, 0xBA, 0x0E, 0x7D, 0xEB, 0xBA, + 0xBF, 0xCA, 0x5F, 0x4F, 0xB0, 0x76, 0x0C, 0x84, + 0x97, 0x76, 0xE9, 0x20, 0x75, 0x0B, 0xF1, 0x37, + 0x89, 0xA6, 0x99, 0x97, 0x96, 0x23, 0x4E, 0x9E, + 0x24, 0x07, 0x15, 0xB2, 0x67, 0x67, 0x78, 0x2B, + 0x85, 0xA6, 0x4D, 0x68, 0x0C, 0x6D, 0x4C, 0xD4, + 0x26, 0xAD, 0x72, 0xB2, 0xFC, 0xE0, 0x81, 0xE8 + }, + { + 0xCE, 0xCD, 0x14, 0x01, 0x50, 0x15, 0x7D, 0xC9, + 0x06, 0xC0, 0xFF, 0x7F, 0x87, 0xC0, 0x08, 0x8F, + 0x31, 0x64, 0x80, 0x78, 0x3B, 0x4F, 0xE0, 0xA5, + 0x94, 0x45, 0x10, 0xC6, 0x4A, 0x87, 0xE3, 0xED, + 0x06, 0x67, 0x97, 0xA2, 0x7C, 0xE9, 0xD0, 0xF2, + 0x84, 0xDC, 0xA5, 0x18, 0x44, 0x18, 0x08, 0xAC, + 0x18, 0x29, 0x0A, 0xFD, 0xC0, 0x31, 0x29, 0x4B, + 0x31, 0xAA, 0x8B, 0x4A, 0x9F, 0xCD, 0x78, 0xF8 + }, + { + 0x2A, 0x2B, 0xED, 0x5D, 0x6A, 0xC0, 0x89, 0x28, + 0x11, 0xA4, 0x09, 0xD9, 0xF1, 0xFF, 0x63, 0x03, + 0xCC, 0xF9, 0x55, 0x44, 0x57, 0x46, 0x99, 0xCD, + 0xA7, 0xF7, 0x35, 0x03, 0x01, 0xF6, 0xD0, 0xC4, + 0xE8, 0x6E, 0x63, 0x5C, 0x80, 0x87, 0x56, 0x66, + 0xE2, 0xBB, 0x39, 0x07, 0x51, 0x0D, 0x0E, 0x72, + 0x12, 0x0F, 0x04, 0x86, 0x5E, 0xDC, 0x4C, 0x6C, + 0xEE, 0xCB, 0x44, 0x62, 0xD6, 0xAF, 0x60, 0xFB + }, + { + 0x03, 0x85, 0xAE, 0x9B, 0x73, 0x5D, 0xC5, 0x9F, + 0x30, 0x4D, 0x41, 0x4C, 0xA0, 0x43, 0x74, 0x9A, + 0xB5, 0x1A, 0xB6, 0x65, 0xEE, 0x01, 0xBE, 0x5E, + 0x52, 0xDC, 0xF7, 0x25, 0xEE, 0x7D, 0xFE, 0xFE, + 0xA6, 0xAD, 0x73, 0xF3, 0x35, 0xEE, 0xCF, 0x2A, + 0x51, 0x02, 0xE8, 0x88, 0x07, 0xFD, 0xC7, 0x5A, + 0xE6, 0xDC, 0x49, 0x0D, 0x7B, 0x8B, 0x5F, 0x11, + 0x63, 0x03, 0xEF, 0x60, 0xA5, 0xF1, 0x7C, 0x06 + }, + { + 0x0C, 0xA3, 0xFF, 0x03, 0x89, 0x65, 0xC0, 0x3B, + 0xC6, 0x5B, 0xBE, 0x2D, 0x86, 0x6C, 0xE9, 0xE0, + 0xE4, 0xE7, 0xD0, 0x3D, 0xC7, 0xF8, 0x6B, 0xA5, + 0x65, 0x0F, 0x82, 0xDD, 0xB3, 0xA9, 0xAA, 0x84, + 0x6B, 0x2B, 0x1F, 0x55, 0x3B, 0xD8, 0x9F, 0xB4, + 0xF9, 0xB6, 0x2E, 0x3C, 0x7F, 0xAF, 0x9E, 0xC3, + 0x10, 0x9F, 0xA9, 0x0E, 0xE5, 0x6C, 0x24, 0x63, + 0xE6, 0xEF, 0xD1, 0xAB, 0xAD, 0x8E, 0x28, 0xE6 + }, + { + 0x6D, 0xFD, 0x4F, 0x22, 0x18, 0x4E, 0xD0, 0x91, + 0xFD, 0x5A, 0xBA, 0x03, 0x9F, 0xCD, 0x3D, 0xB9, + 0x22, 0xF5, 0xE5, 0x9B, 0xF8, 0x38, 0xC0, 0x37, + 0x35, 0x7F, 0xAD, 0x93, 0x4B, 0x45, 0x10, 0x60, + 0x3F, 0x43, 0xA7, 0x31, 0x9F, 0xFF, 0xA6, 0x23, + 0x86, 0xF8, 0x78, 0x8F, 0xDF, 0x9D, 0xED, 0x40, + 0xC6, 0x66, 0xB4, 0xBD, 0xCA, 0x86, 0xD9, 0x32, + 0x8F, 0xE5, 0x5A, 0xD8, 0x6B, 0x37, 0x2F, 0xC8 + }, + { + 0xA3, 0x18, 0x97, 0x61, 0x02, 0x74, 0x7D, 0x80, + 0x0F, 0x58, 0x4D, 0xF6, 0x5B, 0xFB, 0x44, 0x3B, + 0x85, 0x6F, 0x00, 0x9E, 0x74, 0xF7, 0x29, 0x46, + 0xD0, 0x07, 0x6C, 0xED, 0xAC, 0x04, 0x37, 0x6F, + 0xAB, 0x97, 0x34, 0x53, 0xAD, 0xAD, 0xC3, 0x10, + 0xF7, 0x20, 0x81, 0xCB, 0xBA, 0x96, 0x26, 0x4F, + 0xFE, 0x2B, 0x21, 0xA3, 0xB1, 0x8B, 0xE9, 0xD8, + 0x8C, 0x42, 0x46, 0xCB, 0xA6, 0xD3, 0x09, 0x01 + }, + { + 0xB5, 0xE6, 0xE4, 0xFC, 0xA0, 0xCF, 0x98, 0x48, + 0xA0, 0x05, 0x89, 0xC6, 0x54, 0x57, 0xDB, 0x68, + 0xB3, 0x25, 0x3A, 0x6E, 0x17, 0x78, 0x85, 0x41, + 0x47, 0x2E, 0x1F, 0xB9, 0x48, 0x17, 0xF8, 0x04, + 0x05, 0x4D, 0x07, 0xA5, 0xD3, 0x2D, 0xFA, 0x0C, + 0xDB, 0x6F, 0xB4, 0x4E, 0xED, 0x50, 0xD2, 0x0E, + 0x5F, 0x22, 0x64, 0x36, 0x11, 0x32, 0xFA, 0x5F, + 0xCF, 0xD6, 0xE1, 0xB3, 0x67, 0xC1, 0xBE, 0x28 + }, + { + 0x2E, 0xA4, 0x57, 0x38, 0x29, 0x25, 0xE0, 0x3C, + 0xF8, 0x11, 0x10, 0x05, 0x0E, 0x63, 0x6A, 0xD6, + 0x78, 0xE0, 0xAA, 0x3C, 0xBC, 0x69, 0x00, 0xBD, + 0xEF, 0x27, 0x8A, 0xAA, 0x18, 0xF2, 0x35, 0xE2, + 0x51, 0x60, 0xA2, 0x0E, 0x23, 0xFE, 0x0E, 0x62, + 0xA8, 0x51, 0x1B, 0x5D, 0xD0, 0x59, 0x2F, 0x79, + 0xCB, 0xC8, 0xEB, 0x7D, 0xEA, 0x64, 0xAC, 0x86, + 0x67, 0x49, 0x43, 0x45, 0xC6, 0x89, 0x2D, 0xD4 + }, + { + 0x96, 0xB3, 0x49, 0x8B, 0xCC, 0xD7, 0x8B, 0x5A, + 0x40, 0x1B, 0x27, 0x38, 0x78, 0x7D, 0x28, 0xA9, + 0x8A, 0x0E, 0xDF, 0xDC, 0x7C, 0x0B, 0x5F, 0xF9, + 0x43, 0xCF, 0xE1, 0xB1, 0x4E, 0x9C, 0xF5, 0xD9, + 0xED, 0x43, 0x10, 0x7D, 0xFB, 0xDD, 0x9E, 0x97, + 0x28, 0xD5, 0xFD, 0xD6, 0xF7, 0x1F, 0xBC, 0x77, + 0x0E, 0xAD, 0xDC, 0x4F, 0x2E, 0x40, 0x9A, 0xBE, + 0x71, 0x92, 0x7B, 0xAE, 0x1F, 0x8F, 0x73, 0xD1 + }, + { + 0xCE, 0x1B, 0xFB, 0x9A, 0xFE, 0xD2, 0x8A, 0xF4, + 0xDC, 0x75, 0x35, 0xAD, 0xEF, 0x71, 0xB8, 0xF1, + 0xB8, 0x0A, 0x8D, 0x72, 0x94, 0xB4, 0x11, 0xFD, + 0x1E, 0xD3, 0x93, 0xCF, 0x23, 0x2D, 0x3A, 0x5C, + 0x5D, 0xF2, 0x3D, 0xBB, 0x1D, 0xB2, 0x6D, 0xDD, + 0xF6, 0xF7, 0x45, 0xF8, 0xBC, 0x24, 0xC3, 0x78, + 0x1F, 0x2D, 0xBB, 0xC8, 0x18, 0xA0, 0x0A, 0xE1, + 0xFB, 0x9D, 0x64, 0x63, 0xE9, 0x5F, 0x29, 0x86 + }, + { + 0xE6, 0x4D, 0x37, 0x35, 0x6B, 0x29, 0x6B, 0x36, + 0x93, 0x0E, 0xAB, 0xE4, 0x54, 0xDB, 0x11, 0xB2, + 0x09, 0x7B, 0x0C, 0x04, 0x0B, 0xED, 0x57, 0x98, + 0x87, 0x8D, 0x38, 0xA8, 0xC4, 0xD1, 0xC6, 0xF3, + 0x26, 0x1F, 0x36, 0xBF, 0xF7, 0x64, 0xE3, 0xB4, + 0xD6, 0x06, 0xB3, 0x17, 0xE5, 0xFF, 0x50, 0x04, + 0x18, 0x45, 0x92, 0xB0, 0xB7, 0xDD, 0xFB, 0x8C, + 0x2F, 0xD8, 0x35, 0x23, 0x26, 0xCD, 0xDD, 0xB1 + }, + { + 0x85, 0xE6, 0xFE, 0x54, 0xE1, 0xE7, 0x60, 0x46, + 0xAF, 0x68, 0xF5, 0xC6, 0x04, 0x4C, 0x1E, 0x3F, + 0xFF, 0x3B, 0xFC, 0xA0, 0xBA, 0xEC, 0xAE, 0xF6, + 0xA1, 0xDF, 0x90, 0x35, 0x0D, 0xF2, 0xB0, 0xBE, + 0xC6, 0xA4, 0x20, 0xEE, 0x8F, 0x49, 0xAD, 0x44, + 0x64, 0xEC, 0x4C, 0x1E, 0x7D, 0x71, 0xF6, 0x67, + 0x61, 0x4A, 0xCE, 0xBD, 0xAD, 0xA3, 0xDF, 0x32, + 0x07, 0x79, 0x07, 0x83, 0x23, 0xF6, 0xA8, 0xAF + }, + { + 0xB1, 0x2F, 0xF1, 0xEB, 0x3B, 0xAB, 0x32, 0x0D, + 0x78, 0x55, 0xB5, 0x49, 0xD7, 0x2B, 0x72, 0x47, + 0x59, 0x91, 0x68, 0x11, 0xCB, 0xCF, 0x3E, 0x1A, + 0x12, 0x82, 0x3F, 0x98, 0xB6, 0x4A, 0xB5, 0xC4, + 0x59, 0x41, 0x61, 0x0F, 0x6B, 0x47, 0x1E, 0x35, + 0xFF, 0x79, 0x28, 0x29, 0xDD, 0x5A, 0xDE, 0x51, + 0x79, 0x12, 0x57, 0x38, 0xF3, 0xF2, 0x37, 0x28, + 0x63, 0x0F, 0x1E, 0xEC, 0x57, 0x77, 0x5A, 0x19 + }, + { + 0xB4, 0xDB, 0xE7, 0x2A, 0x1E, 0x21, 0x69, 0x7A, + 0x47, 0x44, 0xBE, 0x65, 0x00, 0x0C, 0xB1, 0xBA, + 0xD3, 0x7C, 0xE2, 0x14, 0x16, 0xEE, 0x6F, 0xCE, + 0xA8, 0x4E, 0xBA, 0xF1, 0x2A, 0x59, 0xC1, 0x1D, + 0x7C, 0x08, 0x0D, 0xF9, 0x2F, 0xB2, 0xAA, 0x8F, + 0x1C, 0x4E, 0xE8, 0xE2, 0xA2, 0x2D, 0x30, 0xBE, + 0x49, 0x85, 0x82, 0xD7, 0xC5, 0xFB, 0xBA, 0x16, + 0x5A, 0x47, 0x26, 0x89, 0xAF, 0xF6, 0x01, 0xB6 + }, + { + 0x34, 0x82, 0x18, 0xBE, 0x4D, 0xE0, 0x8D, 0xFB, + 0x24, 0x5B, 0xF2, 0x52, 0x86, 0xE3, 0x66, 0x18, + 0x63, 0x1D, 0x3B, 0xDB, 0x58, 0x27, 0xD9, 0xF7, + 0x4F, 0xA0, 0x43, 0x01, 0x66, 0x11, 0x31, 0xA4, + 0xD5, 0x5C, 0x76, 0x09, 0xB1, 0xA6, 0xA0, 0x3B, + 0x85, 0x3F, 0x07, 0x33, 0xE0, 0xAE, 0xC0, 0x26, + 0x16, 0xA0, 0xA4, 0x0E, 0x84, 0x91, 0xF4, 0x94, + 0xD7, 0x6C, 0x15, 0x43, 0xCF, 0xC6, 0x82, 0x14 + }, + { + 0x42, 0x87, 0xE1, 0x9B, 0xAB, 0x1D, 0x4F, 0x75, + 0xE1, 0xD1, 0x97, 0xCB, 0xB4, 0x3F, 0x11, 0x33, + 0x13, 0x07, 0xF2, 0xF7, 0x5B, 0x8D, 0x0D, 0x50, + 0x27, 0x8E, 0xEC, 0x54, 0x09, 0x99, 0xA0, 0x09, + 0xC0, 0x33, 0x73, 0x52, 0x96, 0x07, 0xFD, 0xA6, + 0x05, 0xAA, 0x0F, 0x07, 0x39, 0xE2, 0x0B, 0xD1, + 0xFD, 0xAA, 0x27, 0xD7, 0xC0, 0xCD, 0xC8, 0x28, + 0x4D, 0x98, 0xE6, 0xC7, 0x55, 0xA7, 0x56, 0x2E + }, + { + 0x08, 0x56, 0x0C, 0x99, 0x88, 0xC8, 0xCE, 0x5A, + 0x88, 0x76, 0xA6, 0x00, 0xB6, 0xE5, 0x12, 0xB4, + 0xE2, 0x43, 0xA4, 0xA4, 0x30, 0x0A, 0xD5, 0xAB, + 0x2F, 0xF0, 0x63, 0x7C, 0xC5, 0x6A, 0x04, 0x41, + 0x64, 0x5B, 0x3D, 0xEB, 0x16, 0x84, 0x06, 0x4E, + 0xA4, 0x3B, 0xAE, 0x1C, 0xB6, 0x2D, 0x3B, 0xC4, + 0x15, 0x37, 0xFE, 0x8D, 0x7D, 0xEC, 0xA7, 0x17, + 0x29, 0x37, 0x77, 0x6B, 0xBE, 0xD7, 0x93, 0xA9 + }, + { + 0xB5, 0x36, 0x16, 0x23, 0x94, 0x77, 0x6F, 0xA7, + 0xDD, 0x5E, 0x9F, 0xDD, 0x01, 0x53, 0x0F, 0xDA, + 0x52, 0xBE, 0x1D, 0x39, 0xBD, 0x60, 0x9B, 0x3F, + 0x3B, 0xD0, 0x47, 0x6B, 0x81, 0x60, 0xAA, 0x18, + 0xAB, 0x2D, 0x37, 0xD2, 0x99, 0x16, 0x28, 0xBE, + 0x2F, 0xCC, 0x12, 0x56, 0xCD, 0x48, 0x55, 0x25, + 0xD1, 0xFA, 0x35, 0x6B, 0x04, 0xD3, 0x0E, 0x4A, + 0x0F, 0x9F, 0xFF, 0xC9, 0x93, 0x5C, 0xF4, 0x32 + }, + { + 0x02, 0xAB, 0xC9, 0x71, 0x75, 0xED, 0xB4, 0x7A, + 0x4C, 0xB4, 0xBD, 0x38, 0xD8, 0x2F, 0x86, 0xAA, + 0x09, 0x9C, 0x8B, 0x8F, 0xA8, 0xAB, 0x3F, 0xE1, + 0xCE, 0x10, 0x5A, 0x22, 0xBD, 0x61, 0x65, 0x78, + 0xC6, 0xDD, 0x15, 0x15, 0xDF, 0xB0, 0x39, 0x7E, + 0x1D, 0x9D, 0x06, 0x71, 0x91, 0x6D, 0xE4, 0xB5, + 0x22, 0xE7, 0x4E, 0x63, 0x75, 0x23, 0x68, 0x93, + 0xC8, 0xFD, 0xA6, 0xD2, 0x36, 0xBC, 0x8D, 0xA1 + }, + { + 0x21, 0xE1, 0xEB, 0x73, 0x12, 0x76, 0xA8, 0x35, + 0xA6, 0xDD, 0xEA, 0x71, 0x78, 0xB2, 0x3E, 0xBC, + 0x9A, 0xEC, 0xAA, 0xBC, 0x7C, 0xCD, 0x70, 0x65, + 0x87, 0xD7, 0x1B, 0x85, 0x44, 0x97, 0x93, 0xB0, + 0x7E, 0x7B, 0x17, 0x9A, 0x3D, 0xA7, 0xA5, 0x71, + 0x98, 0x29, 0x97, 0xE8, 0xF5, 0xA6, 0x7F, 0x8C, + 0x93, 0xDA, 0xF1, 0x1A, 0xAA, 0x23, 0xF0, 0x7E, + 0x4D, 0xF7, 0xA1, 0x31, 0x05, 0xA5, 0x42, 0x09 + }, + { + 0x1C, 0xC5, 0x37, 0xD3, 0xE5, 0x0E, 0xD9, 0xFD, + 0xCD, 0xC4, 0xF3, 0xCC, 0xB4, 0x81, 0x93, 0x75, + 0x41, 0x53, 0x04, 0xD8, 0xE5, 0xA6, 0xC0, 0x58, + 0x05, 0xB6, 0xB5, 0xD9, 0xE1, 0xFC, 0x18, 0x25, + 0x68, 0x64, 0xF1, 0x0C, 0xD8, 0x12, 0xF8, 0x48, + 0x01, 0xB8, 0x61, 0x6A, 0x92, 0xB4, 0x07, 0x95, + 0xA1, 0x55, 0x93, 0x24, 0x64, 0xF6, 0x2D, 0xBF, + 0x6E, 0xBD, 0x2F, 0x9A, 0xC3, 0xEE, 0x28, 0x16 + }, + { + 0x6F, 0x6C, 0xD2, 0x60, 0x05, 0xC8, 0xA5, 0x61, + 0xCF, 0xF5, 0x1E, 0x30, 0x1D, 0x1A, 0x06, 0x8F, + 0xC2, 0x8B, 0x9B, 0x65, 0x0D, 0xDD, 0x27, 0xAE, + 0x97, 0xB5, 0x22, 0xDA, 0xE9, 0x63, 0x91, 0x34, + 0xD5, 0xA1, 0x50, 0x58, 0x7B, 0x0A, 0x90, 0x1F, + 0x3B, 0x9A, 0xAB, 0xC7, 0xE3, 0x97, 0x84, 0x98, + 0x4C, 0xC5, 0x85, 0x23, 0x5D, 0x8E, 0x17, 0xCE, + 0x9E, 0x3B, 0x42, 0x10, 0x5B, 0xF9, 0x03, 0x4C + }, + { + 0x69, 0xC1, 0x7C, 0x28, 0x64, 0xC3, 0x37, 0x9F, + 0xAF, 0xB7, 0x14, 0xC0, 0x47, 0x5E, 0x00, 0xCF, + 0x7C, 0x9B, 0x37, 0x7D, 0x57, 0xA8, 0xBC, 0x96, + 0x98, 0xB4, 0xD3, 0x4A, 0x54, 0x85, 0x41, 0x76, + 0xA2, 0xF8, 0xD1, 0x5A, 0xFB, 0x54, 0x77, 0x56, + 0x04, 0x78, 0x73, 0x90, 0xD6, 0x00, 0x74, 0xCD, + 0x4B, 0xCA, 0x69, 0x02, 0xEA, 0x23, 0xD3, 0xAE, + 0x1A, 0xC0, 0x83, 0x40, 0x9F, 0xE3, 0x8A, 0x4D + }, + { + 0x86, 0x69, 0xB0, 0xAD, 0x35, 0x82, 0x9E, 0xDC, + 0x2A, 0x8A, 0x09, 0x85, 0x2B, 0x0E, 0xE9, 0xB3, + 0x90, 0x3B, 0xF6, 0xC1, 0xF8, 0x2F, 0x90, 0xA3, + 0xF0, 0xED, 0x95, 0x24, 0x19, 0x2F, 0x10, 0x91, + 0xFD, 0x64, 0x84, 0xE0, 0x4C, 0x3F, 0xEA, 0x8B, + 0x02, 0x2F, 0x4A, 0x89, 0x50, 0xDB, 0x17, 0xD4, + 0x73, 0x41, 0x45, 0xC0, 0xCE, 0xC5, 0xDC, 0x38, + 0x74, 0x55, 0xC1, 0x26, 0x90, 0x3F, 0x77, 0x66 + }, + { + 0x3F, 0x35, 0xC4, 0x5D, 0x24, 0xFC, 0xFB, 0x4A, + 0xCC, 0xA6, 0x51, 0x07, 0x6C, 0x08, 0x00, 0x0E, + 0x27, 0x9E, 0xBB, 0xFF, 0x37, 0xA1, 0x33, 0x3C, + 0xE1, 0x9F, 0xD5, 0x77, 0x20, 0x2D, 0xBD, 0x24, + 0xB5, 0x8C, 0x51, 0x4E, 0x36, 0xDD, 0x9B, 0xA6, + 0x4A, 0xF4, 0xD7, 0x8E, 0xEA, 0x4E, 0x2D, 0xD1, + 0x3B, 0xC1, 0x8D, 0x79, 0x88, 0x87, 0xDD, 0x97, + 0x13, 0x76, 0xBC, 0xAE, 0x00, 0x87, 0xE1, 0x7E + }, +}; + + + + +static const uint8_t blake2bp_keyed_kat[KAT_LENGTH][BLAKE2B_OUTBYTES] = +{ + { + 0x9D, 0x94, 0x61, 0x07, 0x3E, 0x4E, 0xB6, 0x40, + 0xA2, 0x55, 0x35, 0x7B, 0x83, 0x9F, 0x39, 0x4B, + 0x83, 0x8C, 0x6F, 0xF5, 0x7C, 0x9B, 0x68, 0x6A, + 0x3F, 0x76, 0x10, 0x7C, 0x10, 0x66, 0x72, 0x8F, + 0x3C, 0x99, 0x56, 0xBD, 0x78, 0x5C, 0xBC, 0x3B, + 0xF7, 0x9D, 0xC2, 0xAB, 0x57, 0x8C, 0x5A, 0x0C, + 0x06, 0x3B, 0x9D, 0x9C, 0x40, 0x58, 0x48, 0xDE, + 0x1D, 0xBE, 0x82, 0x1C, 0xD0, 0x5C, 0x94, 0x0A + }, + { + 0xFF, 0x8E, 0x90, 0xA3, 0x7B, 0x94, 0x62, 0x39, + 0x32, 0xC5, 0x9F, 0x75, 0x59, 0xF2, 0x60, 0x35, + 0x02, 0x9C, 0x37, 0x67, 0x32, 0xCB, 0x14, 0xD4, + 0x16, 0x02, 0x00, 0x1C, 0xBB, 0x73, 0xAD, 0xB7, + 0x92, 0x93, 0xA2, 0xDB, 0xDA, 0x5F, 0x60, 0x70, + 0x30, 0x25, 0x14, 0x4D, 0x15, 0x8E, 0x27, 0x35, + 0x52, 0x95, 0x96, 0x25, 0x1C, 0x73, 0xC0, 0x34, + 0x5C, 0xA6, 0xFC, 0xCB, 0x1F, 0xB1, 0xE9, 0x7E + }, + { + 0xD6, 0x22, 0x0C, 0xA1, 0x95, 0xA0, 0xF3, 0x56, + 0xA4, 0x79, 0x5E, 0x07, 0x1C, 0xEE, 0x1F, 0x54, + 0x12, 0xEC, 0xD9, 0x5D, 0x8A, 0x5E, 0x01, 0xD7, + 0xC2, 0xB8, 0x67, 0x50, 0xCA, 0x53, 0xD7, 0xF6, + 0x4C, 0x29, 0xCB, 0xB3, 0xD2, 0x89, 0xC6, 0xF4, + 0xEC, 0xC6, 0xC0, 0x1E, 0x3C, 0xA9, 0x33, 0x89, + 0x71, 0x17, 0x03, 0x88, 0xE3, 0xE4, 0x02, 0x28, + 0x47, 0x90, 0x06, 0xD1, 0xBB, 0xEB, 0xAD, 0x51 + }, + { + 0x30, 0x30, 0x2C, 0x3F, 0xC9, 0x99, 0x06, 0x5D, + 0x10, 0xDC, 0x98, 0x2C, 0x8F, 0xEE, 0xF4, 0x1B, + 0xBB, 0x66, 0x42, 0x71, 0x8F, 0x62, 0x4A, 0xF6, + 0xE3, 0xEA, 0xBE, 0xA0, 0x83, 0xE7, 0xFE, 0x78, + 0x53, 0x40, 0xDB, 0x4B, 0x08, 0x97, 0xEF, 0xFF, + 0x39, 0xCE, 0xE1, 0xDC, 0x1E, 0xB7, 0x37, 0xCD, + 0x1E, 0xEA, 0x0F, 0xE7, 0x53, 0x84, 0x98, 0x4E, + 0x7D, 0x8F, 0x44, 0x6F, 0xAA, 0x68, 0x3B, 0x80 + }, + { + 0x32, 0xF3, 0x98, 0xA6, 0x0C, 0x1E, 0x53, 0xF1, + 0xF8, 0x1D, 0x6D, 0x8D, 0xA2, 0xEC, 0x11, 0x75, + 0x42, 0x2D, 0x6B, 0x2C, 0xFA, 0x0C, 0x0E, 0x66, + 0xD8, 0xC4, 0xE7, 0x30, 0xB2, 0x96, 0xA4, 0xB5, + 0x3E, 0x39, 0x2E, 0x39, 0x85, 0x98, 0x22, 0xA1, + 0x45, 0xAE, 0x5F, 0x1A, 0x24, 0xC2, 0x7F, 0x55, + 0x33, 0x9E, 0x2B, 0x4B, 0x44, 0x58, 0xE8, 0xC5, + 0xEB, 0x19, 0xAA, 0x14, 0x20, 0x64, 0x27, 0xAA + }, + { + 0x23, 0x6D, 0xB9, 0x33, 0xF1, 0x8A, 0x9D, 0xBD, + 0x4E, 0x50, 0xB7, 0x29, 0x53, 0x90, 0x65, 0xBD, + 0xA4, 0x20, 0xDF, 0x97, 0xAC, 0x78, 0x0B, 0xE4, + 0x3F, 0x59, 0x10, 0x3C, 0x47, 0x2E, 0x0B, 0xCC, + 0xA6, 0xD4, 0x97, 0x38, 0x97, 0x86, 0xAF, 0x22, + 0xBA, 0x94, 0x30, 0xB7, 0x4D, 0x6F, 0x74, 0xB1, + 0x3F, 0x6F, 0x94, 0x9E, 0x25, 0x6A, 0x14, 0x0A, + 0xA3, 0x4B, 0x47, 0x70, 0x0B, 0x10, 0x03, 0x43 + }, + { + 0x23, 0x8C, 0x9D, 0x08, 0x02, 0x85, 0xE3, 0x54, + 0x35, 0xCB, 0x53, 0x15, 0x5D, 0x9F, 0x79, 0x2C, + 0xA1, 0xBB, 0x27, 0xDE, 0x4F, 0x9B, 0x6C, 0x87, + 0x26, 0xE1, 0x1C, 0x02, 0x8E, 0x7B, 0x87, 0x87, + 0x33, 0x54, 0x91, 0x12, 0xA3, 0x28, 0xB5, 0x0E, + 0x8C, 0xD8, 0xBA, 0x27, 0x87, 0x21, 0x7E, 0x46, + 0xB8, 0x16, 0x8D, 0x57, 0x11, 0x3D, 0xD4, 0x04, + 0xD9, 0x14, 0xE2, 0x9A, 0x6A, 0x54, 0x70, 0xE6 + }, + { + 0x9A, 0x02, 0x1E, 0xBD, 0x50, 0x4A, 0x97, 0x59, + 0x6D, 0x0E, 0x85, 0x04, 0x8A, 0xE1, 0xDA, 0x89, + 0x99, 0xE3, 0xA0, 0x47, 0x01, 0x6F, 0x17, 0xC6, + 0xC5, 0x55, 0x6C, 0x27, 0x31, 0xE9, 0xB1, 0x39, + 0x26, 0x1F, 0x84, 0x3F, 0xAD, 0x6B, 0xD4, 0x3F, + 0x7C, 0x7C, 0x58, 0x7F, 0x69, 0x8D, 0x69, 0xB6, + 0x82, 0xE5, 0x68, 0xB4, 0x42, 0xAC, 0x45, 0x88, + 0x98, 0x57, 0xB7, 0x69, 0x07, 0x34, 0xCD, 0xBB + }, + { + 0x3A, 0xBA, 0x07, 0xAE, 0x98, 0x0E, 0x33, 0x86, + 0x37, 0x47, 0x9D, 0xCA, 0x1E, 0x35, 0x28, 0x00, + 0xF4, 0x58, 0x8E, 0x62, 0xD8, 0x23, 0x36, 0x5A, + 0xA6, 0x9C, 0x5B, 0x25, 0xFC, 0xE1, 0x29, 0x68, + 0xD2, 0x6C, 0x9B, 0xDB, 0xEE, 0x9A, 0x32, 0xBF, + 0xFD, 0x42, 0xE6, 0xB2, 0x2C, 0x81, 0x38, 0xA6, + 0x1C, 0x1F, 0xCE, 0x49, 0xFF, 0xBC, 0x19, 0x0E, + 0x1E, 0x15, 0x16, 0x01, 0x53, 0xCC, 0xB6, 0xB4 + }, + { + 0x77, 0x4C, 0xDF, 0x9A, 0xBB, 0x50, 0x81, 0xFE, + 0x07, 0xEB, 0x57, 0x25, 0xE6, 0x06, 0x9B, 0x8D, + 0x6C, 0x7E, 0x60, 0x04, 0xA2, 0x4D, 0x70, 0xF7, + 0xDF, 0xAB, 0xFC, 0x03, 0x82, 0x5B, 0xBC, 0x3B, + 0x30, 0xE6, 0x20, 0xB6, 0x04, 0x1F, 0x3C, 0xC2, + 0x89, 0x6B, 0x14, 0xAB, 0x66, 0x0A, 0xF7, 0x2E, + 0x24, 0x95, 0x10, 0xAC, 0x2F, 0xE8, 0x10, 0xCC, + 0x77, 0x63, 0xA2, 0xE5, 0xC3, 0xFC, 0xA7, 0xFC + }, + { + 0x9E, 0x08, 0x9F, 0x51, 0x65, 0x7B, 0x29, 0xC2, + 0x66, 0x8E, 0x28, 0x50, 0x52, 0x4E, 0x53, 0xAE, + 0xAA, 0xA7, 0x30, 0x6F, 0x2A, 0xD5, 0xA2, 0x32, + 0xB5, 0xF0, 0x7F, 0x68, 0x8D, 0x8A, 0xB2, 0xB4, + 0x25, 0xDF, 0x7E, 0xA5, 0xBD, 0x3E, 0x9F, 0xFD, + 0x61, 0x68, 0x38, 0x90, 0x15, 0x1D, 0x78, 0xBB, + 0x94, 0x03, 0x11, 0x85, 0xAC, 0xA4, 0x81, 0xE2, + 0x14, 0x0F, 0xE3, 0x79, 0x85, 0x36, 0x76, 0x43 + }, + { + 0xB3, 0x5B, 0xD5, 0x4E, 0x4F, 0x81, 0x69, 0x6B, + 0x4F, 0x22, 0x31, 0x6A, 0x1E, 0x33, 0x7D, 0x98, + 0xD1, 0xC6, 0xB0, 0x61, 0x10, 0x99, 0x87, 0x63, + 0xB5, 0x91, 0x33, 0x35, 0x92, 0x3A, 0x40, 0x76, + 0xCB, 0x80, 0xD6, 0xD8, 0xA5, 0x18, 0x62, 0x91, + 0x13, 0x47, 0x7B, 0x30, 0xA1, 0x32, 0xA6, 0xB2, + 0x7F, 0xC1, 0xEE, 0x79, 0xF6, 0xB2, 0xE0, 0xD3, + 0x5D, 0x5B, 0xC2, 0x97, 0x27, 0x46, 0x3D, 0xB5 + }, + { + 0x12, 0x39, 0x30, 0xD5, 0xA4, 0xB7, 0x3B, 0x49, + 0x1F, 0x50, 0xE5, 0x6E, 0x2B, 0x73, 0x97, 0xA4, + 0x3D, 0x2E, 0x47, 0x87, 0x23, 0x76, 0x02, 0xB6, + 0x6F, 0xE0, 0xA8, 0x47, 0xBD, 0x13, 0xCB, 0xE8, + 0xB3, 0x7D, 0xC7, 0x03, 0xD7, 0xB2, 0xB4, 0xEA, + 0xA8, 0xBF, 0xB9, 0xA5, 0x8A, 0x7D, 0x71, 0x9C, + 0x90, 0x8F, 0x19, 0x66, 0xA2, 0xF1, 0x9F, 0xE6, + 0xEB, 0x1A, 0x78, 0x96, 0x2A, 0xFA, 0x5B, 0xF9 + }, + { + 0x08, 0x9C, 0xBC, 0x7E, 0xE1, 0xB1, 0x2C, 0x0C, + 0xC9, 0xC8, 0x3F, 0xF6, 0x66, 0xFE, 0xC8, 0x02, + 0x6B, 0xB7, 0x1B, 0x90, 0x84, 0x97, 0x9B, 0x0E, + 0xA8, 0xB7, 0x23, 0xBB, 0xBE, 0x8B, 0x00, 0xD4, + 0x10, 0x08, 0xB6, 0x04, 0x99, 0xF2, 0x4F, 0x24, + 0x1B, 0x63, 0x28, 0x1F, 0xE5, 0xB4, 0xD8, 0x89, + 0x66, 0x30, 0x9C, 0x0D, 0x7E, 0x64, 0x66, 0x91, + 0x05, 0xE5, 0x1E, 0x69, 0xD7, 0xAF, 0x8C, 0xE5 + }, + { + 0x6B, 0x3C, 0x67, 0x89, 0x47, 0xF6, 0x12, 0x52, + 0x65, 0x7C, 0x35, 0x49, 0x78, 0xC1, 0x01, 0xB2, + 0xFD, 0xD2, 0x72, 0x9E, 0xC3, 0x49, 0x27, 0xDD, + 0x5E, 0xFF, 0x0A, 0x7C, 0x0A, 0x86, 0x58, 0x26, + 0xE8, 0x33, 0xC3, 0x63, 0x23, 0x21, 0x31, 0xB1, + 0x05, 0x93, 0xBE, 0x1C, 0xCF, 0x6B, 0xA5, 0x4E, + 0xCC, 0x14, 0x31, 0x2F, 0x45, 0xBF, 0xFC, 0x24, + 0x04, 0x62, 0x9F, 0xF8, 0x02, 0x67, 0xF0, 0x94 + }, + { + 0xAA, 0x0C, 0x23, 0xEA, 0x1C, 0x6F, 0xE2, 0xE9, + 0x0A, 0x77, 0x18, 0xEF, 0x4A, 0xA4, 0x75, 0x1F, + 0xF6, 0xBE, 0xB9, 0xD4, 0x61, 0x63, 0x59, 0x5B, + 0x5D, 0x4F, 0xB8, 0x96, 0x00, 0x52, 0x5C, 0x5B, + 0x6C, 0xF1, 0x9E, 0xCD, 0xB2, 0x47, 0x78, 0x72, + 0xA7, 0xA1, 0x2D, 0x40, 0xE5, 0x06, 0x36, 0x08, + 0xE5, 0xF0, 0x00, 0x8E, 0x79, 0x72, 0xA9, 0xC0, + 0x1A, 0x4B, 0xE2, 0xAF, 0xE9, 0x53, 0x2F, 0x9C + }, + { + 0x63, 0x34, 0x7A, 0xB4, 0xCB, 0xB6, 0xF2, 0x89, + 0x52, 0x99, 0x2C, 0x07, 0x9D, 0x18, 0xD4, 0x20, + 0x01, 0xB7, 0xF3, 0xA9, 0xD0, 0xFD, 0x90, 0xB0, + 0xA4, 0x77, 0x1F, 0x69, 0x72, 0xF0, 0xC5, 0x32, + 0x89, 0xC8, 0xAE, 0xE1, 0x43, 0x29, 0x4B, 0x50, + 0xC6, 0x34, 0x12, 0x58, 0x5C, 0xDC, 0xE4, 0xFF, + 0x7B, 0xED, 0x11, 0x2C, 0xD0, 0x3C, 0x9B, 0x1D, + 0xF3, 0xDE, 0xF0, 0xCC, 0x32, 0x0D, 0x6B, 0x70 + }, + { + 0x23, 0x96, 0xC0, 0xCB, 0x9E, 0xDA, 0xAC, 0xA9, + 0xD8, 0xB1, 0x04, 0x65, 0x2C, 0xB7, 0xF1, 0x25, + 0xF1, 0x93, 0x55, 0x1A, 0xE5, 0xD7, 0xBC, 0x94, + 0x63, 0x30, 0x7C, 0x9E, 0x69, 0xCA, 0x7D, 0xA2, + 0x3A, 0x9F, 0xBC, 0xBC, 0xB8, 0x66, 0x69, 0xD5, + 0xBA, 0x63, 0x43, 0x85, 0x93, 0xE1, 0x32, 0xF9, + 0x92, 0xB5, 0x7C, 0x00, 0x17, 0xC8, 0x6D, 0xDB, + 0x9B, 0x47, 0x28, 0x6E, 0xF5, 0xB6, 0x87, 0x18 + }, + { + 0xA9, 0x4B, 0x80, 0x22, 0x57, 0xFD, 0x03, 0x1E, + 0xE6, 0x0F, 0x1B, 0xE1, 0x84, 0x38, 0x3A, 0x76, + 0x32, 0x85, 0x39, 0xF9, 0xD8, 0x06, 0x08, 0x72, + 0xEF, 0x35, 0x73, 0xBE, 0xB6, 0xF2, 0x73, 0x68, + 0x08, 0x95, 0x90, 0xED, 0xBB, 0x21, 0xF4, 0xD8, + 0xF1, 0x81, 0xBA, 0x66, 0x20, 0x75, 0xF9, 0x19, + 0x05, 0x97, 0x4B, 0xEE, 0xEF, 0x1F, 0xC5, 0xCB, + 0x9B, 0xCF, 0xB2, 0x8A, 0xAE, 0x1E, 0x4D, 0xE3 + }, + { + 0x52, 0xC7, 0xD3, 0x39, 0x9A, 0x03, 0x80, 0x04, + 0xBE, 0xA5, 0x2D, 0x3E, 0xA9, 0xE9, 0x1E, 0x25, + 0x44, 0xC8, 0x65, 0x2A, 0xB8, 0xF5, 0x28, 0x5C, + 0x9D, 0x32, 0x18, 0x63, 0x7A, 0x6D, 0x9F, 0xCA, + 0xF0, 0xD9, 0x65, 0xB3, 0x58, 0x8E, 0xE6, 0xD7, + 0x3F, 0xA5, 0x99, 0xDE, 0xCA, 0x1F, 0x41, 0xDE, + 0xD8, 0x02, 0x5B, 0xF7, 0x76, 0x8E, 0x0E, 0x20, + 0x0E, 0x8C, 0xD3, 0xFF, 0x86, 0x8C, 0x38, 0x00 + }, + { + 0xB6, 0x29, 0xF5, 0x71, 0x62, 0x87, 0x6A, 0xDB, + 0x8F, 0xA9, 0x57, 0x2E, 0xBA, 0x4E, 0x1E, 0xCD, + 0x75, 0xA6, 0x56, 0x73, 0x08, 0xDE, 0x90, 0xDB, + 0xB8, 0xFF, 0xDE, 0x77, 0xDE, 0x82, 0x13, 0xA4, + 0xD7, 0xF7, 0xCB, 0x85, 0xAE, 0x1B, 0x71, 0xE6, + 0x45, 0x7B, 0xC4, 0xE8, 0x9C, 0x0D, 0x9D, 0xE2, + 0x41, 0xB6, 0xB9, 0xF3, 0x74, 0xB7, 0x34, 0x19, + 0x4D, 0xB2, 0xB2, 0x67, 0x02, 0xD7, 0xCB, 0x7C + }, + { + 0x72, 0x28, 0x46, 0xDD, 0xAC, 0xAA, 0x94, 0xFD, + 0xE6, 0x63, 0x2A, 0x2D, 0xC7, 0xDC, 0x70, 0x8B, + 0xDF, 0x98, 0x31, 0x1C, 0x9F, 0xB6, 0x3C, 0x61, + 0xE5, 0x25, 0xFD, 0x4B, 0x0D, 0x87, 0xB6, 0x38, + 0x8B, 0x5A, 0xF7, 0x04, 0x20, 0x18, 0xDD, 0xCA, + 0x06, 0x5E, 0x8A, 0x55, 0xBB, 0xFD, 0x68, 0xEE, + 0x61, 0xFC, 0xD3, 0xC6, 0x87, 0x8F, 0x5B, 0x09, + 0xBC, 0xC2, 0x7B, 0xED, 0x61, 0xDD, 0x93, 0xED + }, + { + 0x1C, 0xED, 0x6A, 0x0C, 0x78, 0x9D, 0xDB, 0x29, + 0x56, 0x78, 0xAD, 0x43, 0xA3, 0x22, 0xD8, 0x96, + 0x61, 0x7F, 0xDE, 0x27, 0x5F, 0x13, 0x8C, 0xCC, + 0xFB, 0x13, 0x26, 0xCD, 0x3F, 0x76, 0x09, 0xC2, + 0xAA, 0xA5, 0xEC, 0x10, 0x26, 0x97, 0x17, 0x3E, + 0x12, 0x1A, 0xE1, 0x63, 0x02, 0x4F, 0x42, 0x8C, + 0x98, 0x28, 0x35, 0xB4, 0xFA, 0x6D, 0xA6, 0xD6, + 0x78, 0xAE, 0xB9, 0xEE, 0x10, 0x6A, 0x3F, 0x6C + }, + { + 0xE8, 0x69, 0x14, 0x8C, 0x05, 0x45, 0xB3, 0x58, + 0x0E, 0x39, 0x5A, 0xFD, 0xC7, 0x45, 0xCD, 0x24, + 0x3B, 0x6B, 0x5F, 0xE3, 0xB6, 0x7E, 0x29, 0x43, + 0xF6, 0xF8, 0xD9, 0xF2, 0x4F, 0xFA, 0x40, 0xE8, + 0x81, 0x75, 0x6E, 0x1C, 0x18, 0xD9, 0x2F, 0x3E, + 0xBE, 0x84, 0x55, 0x9B, 0x57, 0xE2, 0xEE, 0x3A, + 0x65, 0xD9, 0xEC, 0xE0, 0x49, 0x72, 0xB3, 0x5D, + 0x4C, 0x4E, 0xBE, 0x78, 0x6C, 0x88, 0xDA, 0x62 + }, + { + 0xDA, 0xDA, 0x15, 0x5E, 0x55, 0x42, 0x32, 0xB1, + 0x6E, 0xCA, 0xD9, 0x31, 0xCB, 0x42, 0xE3, 0x25, + 0xB5, 0x86, 0xDB, 0xF1, 0xCB, 0xD0, 0xCE, 0x38, + 0x14, 0x45, 0x16, 0x6B, 0xD1, 0xBF, 0xA3, 0x32, + 0x49, 0x85, 0xE7, 0x7C, 0x6F, 0x0D, 0x51, 0x2A, + 0x02, 0x6E, 0x09, 0xD4, 0x86, 0x1C, 0x3B, 0xB8, + 0x52, 0x9D, 0x72, 0x02, 0xEA, 0xC1, 0xC0, 0x44, + 0x27, 0x44, 0xD3, 0x7C, 0x7F, 0x5A, 0xB8, 0xAF + }, + { + 0x2D, 0x14, 0x8C, 0x8E, 0x8F, 0x76, 0xFA, 0xAC, + 0x6F, 0x7F, 0x01, 0xF2, 0x03, 0x9E, 0xA0, 0x2A, + 0x42, 0xD9, 0x32, 0x57, 0x94, 0xC2, 0xC7, 0xA0, + 0x0F, 0x83, 0xF4, 0xA7, 0x79, 0x8A, 0xFB, 0xA9, + 0x93, 0xFF, 0x94, 0x91, 0x1E, 0x09, 0x8B, 0x00, + 0x1A, 0x0B, 0xDF, 0xF4, 0xC8, 0x5A, 0x2A, 0x61, + 0x31, 0xE0, 0xCF, 0xE7, 0x0F, 0x1D, 0x2E, 0x07, + 0xAF, 0x02, 0x09, 0xDA, 0x77, 0x96, 0x09, 0x1F + }, + { + 0x99, 0x98, 0x3A, 0x75, 0x9C, 0xCF, 0x9C, 0xAC, + 0xAE, 0x70, 0x2D, 0xCB, 0xFC, 0xDF, 0x72, 0x04, + 0xDD, 0xF0, 0x33, 0x4B, 0xC6, 0x5D, 0xAD, 0x84, + 0x6F, 0x83, 0x1F, 0x9F, 0x9D, 0x8A, 0x45, 0x3F, + 0x0D, 0x24, 0x93, 0x5C, 0x4C, 0x65, 0x7F, 0xFF, + 0x2E, 0xBB, 0xDB, 0xAF, 0x7B, 0xCE, 0x6A, 0xAC, + 0xDB, 0xB8, 0x87, 0x6F, 0x16, 0x04, 0x59, 0xB1, + 0xA4, 0xAA, 0xC9, 0x56, 0x97, 0xE0, 0x0D, 0x98 + }, + { + 0x7E, 0x4A, 0x02, 0x12, 0x6D, 0x75, 0x52, 0xF4, + 0xC9, 0xB9, 0x4D, 0x80, 0xE3, 0xCF, 0x7B, 0x89, + 0x7E, 0x09, 0x84, 0xE4, 0x06, 0xF0, 0x78, 0x13, + 0x5C, 0xF4, 0x56, 0xC0, 0xD5, 0x1E, 0x13, 0x91, + 0xFF, 0x18, 0xA8, 0x8F, 0x93, 0x12, 0x2C, 0x83, + 0x2C, 0xAC, 0x7D, 0x79, 0x6A, 0x6B, 0x42, 0x51, + 0x9B, 0x1D, 0xB4, 0xEA, 0xD8, 0xF4, 0x98, 0x40, + 0xCE, 0xB5, 0x52, 0x33, 0x6B, 0x29, 0xDE, 0x44 + }, + { + 0xD7, 0xE1, 0x6F, 0xD1, 0x59, 0x65, 0x8A, 0xD7, + 0xEE, 0x25, 0x1E, 0x51, 0x7D, 0xCE, 0x5A, 0x29, + 0xF4, 0x6F, 0xD4, 0xB8, 0xD3, 0x19, 0xDB, 0x80, + 0x5F, 0xC2, 0x5A, 0xA6, 0x20, 0x35, 0x0F, 0xF4, + 0x23, 0xAD, 0x8D, 0x05, 0x37, 0xCD, 0x20, 0x69, + 0x43, 0x2E, 0xBF, 0xF2, 0x92, 0x36, 0xF8, 0xC2, + 0xA8, 0xA0, 0x4D, 0x04, 0xB3, 0xB4, 0x8C, 0x59, + 0xA3, 0x55, 0xFC, 0xC6, 0x2D, 0x27, 0xF8, 0xEE + }, + { + 0x0D, 0x45, 0x17, 0xD4, 0xF1, 0xD0, 0x47, 0x30, + 0xC6, 0x91, 0x69, 0x18, 0xA0, 0x4C, 0x9E, 0x90, + 0xCC, 0xA3, 0xAC, 0x1C, 0x63, 0xD6, 0x45, 0x97, + 0x8A, 0x7F, 0x07, 0x03, 0x9F, 0x92, 0x20, 0x64, + 0x7C, 0x25, 0xC0, 0x4E, 0x85, 0xF6, 0xE2, 0x28, + 0x6D, 0x2E, 0x35, 0x46, 0x0D, 0x0B, 0x2C, 0x1E, + 0x25, 0xAF, 0x9D, 0x35, 0x37, 0xEF, 0x33, 0xFD, + 0x7F, 0xE5, 0x1E, 0x2B, 0xA8, 0x76, 0x4B, 0x36 + }, + { + 0x56, 0xB7, 0x2E, 0x51, 0x37, 0xC6, 0x89, 0xB2, + 0x73, 0x66, 0xFB, 0x22, 0xC7, 0xC6, 0x75, 0x44, + 0xF6, 0xBC, 0xE5, 0x76, 0x19, 0x41, 0x31, 0xC5, + 0xBF, 0xAB, 0x1C, 0xF9, 0x3C, 0x2B, 0x51, 0xAA, + 0xA3, 0x03, 0x36, 0x8A, 0xA8, 0x44, 0xD5, 0x8D, + 0xF0, 0xEE, 0x5D, 0x4E, 0x31, 0x9F, 0xCD, 0x8E, + 0xFF, 0xC6, 0x02, 0xCE, 0xE4, 0x35, 0x1B, 0xD2, + 0xF5, 0x51, 0x43, 0x0B, 0x92, 0x11, 0xE7, 0x3C + }, + { + 0xF3, 0x35, 0xCC, 0x22, 0xFF, 0xEA, 0x5A, 0xA5, + 0x9C, 0xDF, 0xC8, 0xF5, 0x02, 0x89, 0xCC, 0x92, + 0x31, 0x9B, 0x8B, 0x14, 0x40, 0x8D, 0x7A, 0x5A, + 0xA1, 0x23, 0x2A, 0xE2, 0x3A, 0xA1, 0xEA, 0x7F, + 0x77, 0x48, 0xCF, 0xEF, 0x03, 0x20, 0x10, 0xF8, + 0x62, 0x6D, 0x93, 0x18, 0xED, 0xBA, 0x98, 0xD4, + 0x16, 0x62, 0x03, 0x35, 0xC9, 0x01, 0xED, 0x02, + 0xEA, 0xBD, 0x27, 0x6A, 0x1B, 0x82, 0x9C, 0x9D + }, + { + 0xA9, 0x9A, 0x3D, 0x10, 0xF9, 0x5B, 0x44, 0x2F, + 0xFF, 0xF7, 0xC4, 0x18, 0xFA, 0x94, 0x9D, 0x48, + 0x30, 0x86, 0x9B, 0x0E, 0x60, 0xEC, 0x8B, 0x97, + 0x2C, 0x30, 0xA3, 0x16, 0x9C, 0x27, 0xBE, 0xB5, + 0xCF, 0x33, 0x05, 0x94, 0xF0, 0x14, 0xB6, 0x6B, + 0x22, 0x00, 0xA7, 0xF0, 0x86, 0xD2, 0xC2, 0xF3, + 0xF9, 0xFD, 0x85, 0x32, 0xA5, 0x71, 0x88, 0x76, + 0xDF, 0xCA, 0x66, 0x1B, 0xA0, 0xF7, 0xB3, 0x6D + }, + { + 0x15, 0x8E, 0x25, 0x70, 0xD0, 0x84, 0xA4, 0x86, + 0x9D, 0x96, 0x93, 0x43, 0xC0, 0x10, 0x86, 0x07, + 0x17, 0xFF, 0x74, 0x11, 0x61, 0x88, 0x17, 0x5F, + 0x2E, 0xD7, 0x4C, 0xD5, 0x78, 0xFA, 0x0D, 0x80, + 0x91, 0xB0, 0x3F, 0xAD, 0x0C, 0x65, 0xCF, 0x59, + 0xAB, 0x91, 0xDD, 0x73, 0xB3, 0x7F, 0xE3, 0xF5, + 0x8A, 0x58, 0xE7, 0xB4, 0x47, 0x9C, 0x87, 0x5A, + 0xCD, 0x63, 0xEC, 0x52, 0x58, 0x12, 0x35, 0x3F + }, + { + 0x7C, 0x49, 0x50, 0x1C, 0x58, 0x08, 0xB1, 0x5C, + 0x0D, 0x31, 0xBD, 0xD5, 0xBB, 0x56, 0x31, 0xD5, + 0x3A, 0xE0, 0x0D, 0xF4, 0x31, 0x02, 0x5F, 0xEA, + 0x51, 0xEB, 0x47, 0x62, 0x54, 0x4E, 0xFD, 0xEE, + 0x97, 0x8A, 0x83, 0x50, 0x8D, 0xEA, 0x6B, 0xFD, + 0x3B, 0x93, 0x1A, 0x0E, 0x95, 0x83, 0xCC, 0xFC, + 0x04, 0x9E, 0xA8, 0x46, 0x44, 0x70, 0x5D, 0x31, + 0x9F, 0xDC, 0x5C, 0x16, 0x3B, 0xF4, 0x82, 0x24 + }, + { + 0xFE, 0xF4, 0x36, 0xB3, 0x5F, 0x71, 0x7D, 0x59, + 0xAC, 0xA1, 0x7E, 0x9B, 0xF5, 0xFF, 0xDA, 0x28, + 0xF5, 0xF4, 0x01, 0x94, 0x3E, 0xFE, 0x93, 0xEB, + 0x58, 0x0F, 0xFB, 0x98, 0xF1, 0x3B, 0xEA, 0x80, + 0x94, 0x69, 0xA3, 0x44, 0xE7, 0x82, 0xA4, 0x43, + 0xC6, 0x4E, 0xB2, 0x5A, 0xD0, 0x9D, 0x8D, 0xE2, + 0x05, 0xFE, 0xE7, 0xD5, 0x63, 0x96, 0x86, 0xA1, + 0x9E, 0x7C, 0x42, 0xB4, 0x0F, 0x70, 0x6A, 0x08 + }, + { + 0x4D, 0x47, 0xA6, 0x7A, 0x5F, 0x8E, 0x17, 0xB7, + 0x22, 0xDF, 0x98, 0x58, 0xAE, 0xB6, 0x7B, 0x99, + 0x56, 0xB4, 0x59, 0x62, 0xEC, 0x35, 0x3D, 0xC2, + 0xE2, 0x7F, 0x0F, 0x50, 0x1C, 0x39, 0x8E, 0x34, + 0x39, 0x7B, 0xEB, 0xE0, 0x2B, 0x54, 0x92, 0x7E, + 0x2D, 0x31, 0xF1, 0x2E, 0xCF, 0x55, 0xE8, 0x82, + 0x69, 0xFA, 0xB5, 0x37, 0x0E, 0x7F, 0xA5, 0x70, + 0x35, 0x26, 0x6F, 0x89, 0xD5, 0xC2, 0x64, 0x41 + }, + { + 0x1B, 0x58, 0xDC, 0x7A, 0xAC, 0x36, 0x3B, 0x00, + 0x44, 0x6E, 0xA8, 0x03, 0xBC, 0xD7, 0x49, 0xC3, + 0xF5, 0xCA, 0xBE, 0xAA, 0xF2, 0x23, 0x99, 0x4C, + 0x0C, 0x3E, 0xCC, 0x1B, 0x28, 0x47, 0x73, 0x44, + 0xD7, 0xBF, 0x97, 0xC0, 0x8A, 0x95, 0x9D, 0x1A, + 0xC2, 0x06, 0x0B, 0x47, 0x27, 0x89, 0x86, 0x92, + 0x91, 0x88, 0xAD, 0x73, 0xDE, 0x67, 0x07, 0x8B, + 0xA6, 0x80, 0x96, 0x3B, 0x9D, 0x3B, 0x12, 0xA4 + }, + { + 0x3C, 0x52, 0x2C, 0x84, 0x3E, 0x69, 0x74, 0xEC, + 0x75, 0x0D, 0xF2, 0x20, 0xD4, 0x1A, 0x00, 0x4A, + 0xC2, 0xAD, 0xF0, 0x94, 0x56, 0xFA, 0x78, 0x7F, + 0x7C, 0x65, 0x43, 0xAB, 0x17, 0x97, 0x9C, 0x77, + 0x7B, 0x3E, 0x79, 0xD1, 0x78, 0x7D, 0xA5, 0xA8, + 0x3F, 0x17, 0x8D, 0xA9, 0xF0, 0x4C, 0xF6, 0xF5, + 0xB2, 0x55, 0xDD, 0xCB, 0x18, 0x74, 0x84, 0x1B, + 0xBF, 0x70, 0x16, 0xE6, 0x13, 0x2B, 0x99, 0x8A + }, + { + 0x5A, 0x4F, 0xEB, 0x8F, 0x70, 0x75, 0xB4, 0xDC, + 0x9C, 0xA1, 0x6C, 0x6F, 0x05, 0xCD, 0x6B, 0x70, + 0x27, 0x48, 0x5F, 0xFE, 0xD9, 0x15, 0x7D, 0x82, + 0x4D, 0x9D, 0x1A, 0x17, 0x20, 0xEE, 0xEE, 0xEA, + 0x3F, 0x6C, 0x12, 0x5F, 0xDA, 0x4B, 0xA4, 0x40, + 0x9D, 0x79, 0x80, 0x49, 0xFD, 0x18, 0x82, 0xC6, + 0x90, 0x28, 0x8F, 0x33, 0x54, 0x7A, 0x3D, 0x8D, + 0x62, 0x60, 0xB6, 0x54, 0x54, 0x88, 0x53, 0xD7 + }, + { + 0xBC, 0xAA, 0x79, 0x36, 0x32, 0x56, 0x9E, 0x2F, + 0x84, 0x17, 0xCC, 0x60, 0x32, 0x53, 0x53, 0x5B, + 0xD7, 0xD8, 0x5F, 0x38, 0x53, 0x19, 0x92, 0x59, + 0x1E, 0x56, 0xC1, 0xA4, 0xB6, 0xF5, 0x8E, 0xE7, + 0xF8, 0x18, 0xFA, 0xE0, 0x27, 0x88, 0x8A, 0x86, + 0x28, 0x43, 0x05, 0x10, 0x1E, 0xC0, 0x46, 0x61, + 0xF5, 0x99, 0x53, 0x47, 0xA4, 0x67, 0xED, 0x8B, + 0x92, 0x79, 0xF1, 0xAC, 0xC2, 0xB4, 0xBB, 0x1F + }, + { + 0x34, 0xAF, 0x91, 0xCC, 0x22, 0xA6, 0x9B, 0xCB, + 0x55, 0xDD, 0xBF, 0x7F, 0x0F, 0x43, 0xEC, 0x56, + 0x48, 0x40, 0x43, 0x32, 0x13, 0xEA, 0x55, 0xD9, + 0xF8, 0x1A, 0xC4, 0x75, 0x20, 0x8D, 0x74, 0x85, + 0x1D, 0xB7, 0x0F, 0xE4, 0x96, 0xAF, 0x9D, 0xA1, + 0xD3, 0x93, 0xEC, 0xF8, 0x78, 0x69, 0x5D, 0xD3, + 0x3F, 0xD5, 0x43, 0x49, 0xA6, 0xF8, 0x24, 0xAE, + 0xED, 0x18, 0x3C, 0xB1, 0xB0, 0x8C, 0x54, 0x85 + }, + { + 0xB8, 0xB7, 0xAD, 0x2E, 0xA2, 0xB6, 0xFA, 0x06, + 0xD0, 0x0B, 0xCD, 0x59, 0x9C, 0x99, 0x71, 0xC5, + 0xB4, 0xE1, 0x65, 0x58, 0xE1, 0x52, 0x12, 0xC9, + 0xBF, 0xD3, 0x73, 0xE4, 0xBC, 0x79, 0x17, 0x05, + 0x26, 0x01, 0xFF, 0xDB, 0x68, 0x01, 0xBE, 0x80, + 0xBA, 0x50, 0x9D, 0xB8, 0x2A, 0x0B, 0x71, 0x95, + 0x92, 0x91, 0x33, 0xAD, 0x53, 0x99, 0x56, 0x06, + 0x52, 0x33, 0xF4, 0x9D, 0x07, 0x1C, 0x84, 0xE4 + }, + { + 0xDC, 0xEE, 0x9C, 0x45, 0xBC, 0x5D, 0x1F, 0xE6, + 0x30, 0xB1, 0x8B, 0x06, 0x3C, 0xE8, 0x2C, 0x38, + 0x57, 0xE3, 0x0D, 0x20, 0xC6, 0x4B, 0x5C, 0xC2, + 0x58, 0x84, 0x94, 0x3E, 0x7A, 0xE9, 0x4E, 0xDF, + 0xF8, 0x50, 0xEB, 0x0E, 0x82, 0x44, 0x02, 0x3D, + 0x3D, 0x07, 0xA8, 0xA0, 0x07, 0x06, 0xF0, 0x58, + 0x2C, 0xC1, 0x02, 0xB6, 0x6C, 0x6D, 0xDA, 0x86, + 0xE8, 0xF2, 0xDF, 0x32, 0x56, 0x59, 0x88, 0x6F + }, + { + 0x04, 0xF6, 0xE8, 0x22, 0xF1, 0x7C, 0xC7, 0xA5, + 0x94, 0x6D, 0xF8, 0x0D, 0x95, 0x8A, 0xEF, 0x06, + 0x5D, 0x87, 0x49, 0x16, 0xE1, 0x03, 0xA6, 0x83, + 0x0C, 0x6E, 0x46, 0xB6, 0x05, 0x59, 0x18, 0x18, + 0x0D, 0x14, 0x52, 0x29, 0x3C, 0x58, 0xA9, 0x74, + 0x9C, 0xBC, 0x8F, 0x0A, 0xC4, 0x08, 0xA9, 0xCA, + 0x89, 0x57, 0x61, 0xCF, 0xC4, 0x51, 0x16, 0x46, + 0x41, 0xA1, 0x79, 0xFB, 0x5C, 0xD8, 0xFE, 0xBC + }, + { + 0x51, 0x1F, 0xDB, 0x7C, 0x88, 0x26, 0x85, 0x35, + 0xE9, 0x7E, 0x4E, 0xD8, 0x92, 0xF3, 0xC0, 0x65, + 0x83, 0x2B, 0x26, 0x59, 0x14, 0xFC, 0x61, 0x07, + 0xA1, 0xD2, 0x7D, 0xBB, 0x7D, 0x51, 0xC3, 0x7E, + 0x95, 0x98, 0x15, 0x06, 0xC1, 0x14, 0x72, 0x44, + 0xD5, 0xBA, 0xE9, 0x0E, 0xE9, 0x0D, 0x08, 0x49, + 0x84, 0xBA, 0xA7, 0x58, 0x7F, 0x41, 0xFF, 0x6F, + 0x4B, 0xA7, 0x22, 0xC8, 0xB9, 0x2A, 0xEB, 0x99 + }, + { + 0x2B, 0xA2, 0xBD, 0x17, 0xE9, 0x26, 0x27, 0x5B, + 0x06, 0x83, 0xB2, 0x36, 0xBF, 0xE3, 0x76, 0x30, + 0x26, 0x6E, 0x37, 0xF4, 0x18, 0x2F, 0x53, 0xA9, + 0x82, 0x34, 0xE9, 0x15, 0xAB, 0x64, 0xC9, 0x59, + 0x96, 0xC6, 0xCB, 0x7A, 0xE8, 0x80, 0xC3, 0xDF, + 0xCB, 0x47, 0xD0, 0x5A, 0xAD, 0xD2, 0x1A, 0xBF, + 0x8E, 0x40, 0xB7, 0x3F, 0x40, 0xF3, 0x98, 0xDC, + 0x5B, 0x02, 0x14, 0x14, 0x57, 0x45, 0x6A, 0x09 + }, + { + 0x9B, 0x66, 0x8D, 0x9B, 0x44, 0x47, 0xE3, 0x76, + 0xF6, 0xC6, 0xCF, 0xA6, 0x8D, 0xBC, 0x79, 0x19, + 0x83, 0x81, 0xAB, 0x60, 0x5F, 0x55, 0xD5, 0xA7, + 0xEF, 0x68, 0x3B, 0xCE, 0xD4, 0x6F, 0x9A, 0xFD, + 0x36, 0x85, 0x41, 0x1A, 0x66, 0xE2, 0x34, 0x6F, + 0x96, 0x07, 0x77, 0xD0, 0xC9, 0x22, 0x71, 0x24, + 0x30, 0xE0, 0x18, 0xBF, 0xAE, 0x86, 0x53, 0x01, + 0x7E, 0xA2, 0x0E, 0xCD, 0x5F, 0x1F, 0x95, 0x6C + }, + { + 0x56, 0x81, 0x02, 0x4F, 0x53, 0x85, 0x88, 0xA0, + 0x1B, 0x2C, 0x83, 0x94, 0xCA, 0xE8, 0x73, 0xC6, + 0xD8, 0x5D, 0x6A, 0xA0, 0x6E, 0xDD, 0xB3, 0xA5, + 0x02, 0x09, 0x6F, 0xC0, 0x82, 0xBB, 0x89, 0xCB, + 0x24, 0x15, 0x31, 0xB3, 0x15, 0x75, 0x0D, 0x31, + 0xBB, 0x0B, 0x63, 0x01, 0x28, 0xD1, 0x9D, 0x11, + 0x39, 0x2B, 0xCF, 0x4B, 0x34, 0x78, 0xD5, 0x23, + 0xD7, 0xD2, 0x13, 0xE4, 0x75, 0x0F, 0x55, 0x92 + }, + { + 0x2A, 0xA9, 0x1B, 0xA6, 0xDE, 0x60, 0x17, 0xF1, + 0x93, 0x0F, 0xC7, 0xD9, 0x6D, 0xCC, 0xD6, 0x70, + 0x74, 0x8B, 0x7E, 0xB1, 0xD0, 0x94, 0xDF, 0xB4, + 0xB3, 0xB1, 0x47, 0x8A, 0x61, 0x2E, 0xBF, 0x03, + 0xDD, 0xD7, 0x21, 0x27, 0x9A, 0x26, 0x6D, 0xE3, + 0x88, 0x45, 0xE6, 0x12, 0xC9, 0x30, 0x98, 0xC2, + 0xEF, 0xFF, 0x34, 0xFE, 0x50, 0x06, 0x17, 0x20, + 0x5B, 0x1D, 0xE2, 0xFE, 0xA1, 0xD8, 0x02, 0x46 + }, + { + 0x82, 0x4D, 0x89, 0xC0, 0x63, 0x7C, 0xE1, 0x78, + 0xB6, 0x30, 0x68, 0x4C, 0x72, 0x9E, 0x26, 0x65, + 0x3F, 0x34, 0xEA, 0xC7, 0xE9, 0x04, 0x12, 0xE9, + 0x63, 0xD3, 0xF1, 0x9D, 0x64, 0x51, 0xE8, 0x25, + 0x85, 0x21, 0x67, 0xC4, 0x8D, 0xF7, 0xCC, 0x55, + 0xB2, 0x57, 0xB2, 0x50, 0xA7, 0x0C, 0x7B, 0xCC, + 0xFA, 0x9A, 0xA1, 0x5C, 0x18, 0x8A, 0xC4, 0x63, + 0x7A, 0x52, 0x22, 0x89, 0xC0, 0x87, 0x6A, 0xD4 + }, + { + 0x87, 0xE4, 0xAE, 0x11, 0xDA, 0x1A, 0x2C, 0xA8, + 0x82, 0x2A, 0xE3, 0x30, 0xDC, 0x97, 0xAB, 0x2E, + 0x47, 0xFF, 0x62, 0x32, 0x30, 0x93, 0xC2, 0xB7, + 0xA6, 0xC0, 0xE2, 0xC1, 0x68, 0x21, 0xCD, 0x7C, + 0xEC, 0x92, 0x18, 0x4D, 0xF4, 0xBB, 0x6E, 0x2B, + 0x62, 0x6A, 0x44, 0x78, 0x03, 0x90, 0x63, 0xAF, + 0xEE, 0xB0, 0xD2, 0x87, 0xF2, 0x42, 0x19, 0x20, + 0x78, 0x98, 0xCC, 0xE7, 0xAD, 0xE0, 0x63, 0x9C + }, + { + 0xDD, 0x7F, 0x2F, 0x44, 0xA4, 0x02, 0xA0, 0x1E, + 0x82, 0x16, 0xB1, 0x03, 0xA4, 0xE7, 0x23, 0x5C, + 0x28, 0x30, 0x31, 0x9D, 0x56, 0xAF, 0x63, 0x9F, + 0x23, 0xC4, 0x8C, 0x27, 0x59, 0xAB, 0xA6, 0xEB, + 0x5E, 0xEE, 0xE3, 0x8C, 0x29, 0x8E, 0xBE, 0x41, + 0x98, 0x26, 0x7A, 0x00, 0xEB, 0x2A, 0x08, 0xD9, + 0x3A, 0x50, 0x37, 0x03, 0x17, 0x1C, 0x77, 0x33, + 0x38, 0x62, 0x10, 0x10, 0x55, 0xBD, 0x7A, 0xD2 + }, + { + 0x4C, 0xB8, 0x46, 0x59, 0x61, 0x93, 0xF7, 0xF2, + 0x78, 0xAA, 0xAA, 0xC5, 0xCC, 0xFF, 0xD5, 0x35, + 0x7A, 0xB0, 0xD1, 0x24, 0x5F, 0x69, 0x79, 0xD1, + 0x41, 0xA4, 0x71, 0xBD, 0xAB, 0x55, 0xE2, 0x38, + 0xB1, 0xAE, 0xD6, 0x7B, 0x73, 0x39, 0x95, 0x04, + 0xB9, 0x7D, 0xF1, 0xA2, 0x5E, 0xB6, 0xFE, 0x27, + 0x2B, 0x5C, 0xD4, 0x96, 0xA7, 0xC8, 0xA0, 0x60, + 0x92, 0x6E, 0x74, 0x04, 0xFD, 0xA0, 0x79, 0x0D + }, + { + 0x6F, 0x44, 0xEC, 0xDA, 0xE1, 0x4E, 0x3B, 0x81, + 0xA1, 0x91, 0x22, 0x03, 0x01, 0x5F, 0x59, 0x18, + 0xEA, 0xC6, 0xFB, 0xF4, 0x96, 0x60, 0x10, 0xF4, + 0x9D, 0x2B, 0xC2, 0xBC, 0xEF, 0xE7, 0xB1, 0xDF, + 0xEC, 0x5C, 0x83, 0x5D, 0x7D, 0x87, 0xA4, 0x43, + 0x71, 0xF1, 0x5A, 0x6C, 0x08, 0x42, 0x52, 0xB9, + 0x34, 0x65, 0x26, 0x42, 0x72, 0xA4, 0x10, 0xD5, + 0x0F, 0x89, 0xA1, 0x17, 0xF3, 0x1A, 0xF4, 0x63 + }, + { + 0x1F, 0x70, 0x5F, 0x6E, 0x9F, 0x07, 0x0D, 0x87, + 0xFD, 0xE8, 0xE2, 0x77, 0x46, 0x74, 0xFA, 0x9B, + 0xF1, 0x20, 0xD2, 0x88, 0xEB, 0x0B, 0xE7, 0xAA, + 0x12, 0x8D, 0xFB, 0x5D, 0x10, 0x11, 0xCE, 0x1F, + 0xDA, 0x99, 0xB2, 0x55, 0x22, 0x66, 0x65, 0xD8, + 0x3F, 0x63, 0x4E, 0x8F, 0xCA, 0xBD, 0xA9, 0xA2, + 0x3C, 0x03, 0x51, 0x5E, 0x9C, 0xFE, 0xCE, 0x6E, + 0x94, 0xA8, 0xEC, 0x92, 0xE4, 0xED, 0xEC, 0xB7 + }, + { + 0x2D, 0x96, 0xC5, 0xB0, 0x15, 0x74, 0x72, 0x2B, + 0x81, 0x7F, 0xEB, 0x48, 0x6C, 0x5F, 0xC9, 0x8F, + 0x5F, 0x84, 0x61, 0xF4, 0xCE, 0xE9, 0x90, 0x5A, + 0xF2, 0x06, 0xD4, 0x72, 0x33, 0x86, 0xD1, 0xC4, + 0xC7, 0xCA, 0xC5, 0x84, 0x00, 0x28, 0xD7, 0xAF, + 0xED, 0x0E, 0x38, 0xAD, 0x13, 0x96, 0x28, 0xEB, + 0x6A, 0xF9, 0x2B, 0x4B, 0x88, 0xEB, 0xF0, 0x9B, + 0x1F, 0xA0, 0x47, 0xFB, 0xE1, 0x0B, 0xC3, 0x1D + }, + { + 0x65, 0xDA, 0x78, 0x0A, 0x0A, 0x37, 0x47, 0x9D, + 0xD8, 0xF4, 0xD6, 0x55, 0x64, 0xF9, 0xA7, 0x08, + 0x9E, 0x42, 0x07, 0xEB, 0x16, 0xAC, 0xA3, 0xF6, + 0x55, 0x31, 0xCF, 0xEE, 0x76, 0x25, 0xBA, 0x13, + 0x80, 0xA4, 0x97, 0xB6, 0x24, 0x72, 0xFC, 0x7E, + 0x00, 0x07, 0xA6, 0xB0, 0x35, 0x61, 0x04, 0x16, + 0xA5, 0xF8, 0x2C, 0x10, 0x82, 0xFA, 0x06, 0x5C, + 0x46, 0xDD, 0xEE, 0x49, 0x40, 0xD1, 0xFC, 0x46 + }, + { + 0x1C, 0x09, 0xA3, 0xB3, 0x80, 0xB8, 0xA7, 0xFC, + 0x33, 0x3F, 0xD2, 0x71, 0x4D, 0xF7, 0x12, 0x9B, + 0x44, 0xA4, 0x67, 0x68, 0xBA, 0xCF, 0x0A, 0x67, + 0xA3, 0x8A, 0x47, 0xB3, 0xAB, 0x31, 0xF5, 0x1B, + 0x05, 0x33, 0xC2, 0xAA, 0x2B, 0x4B, 0x7B, 0xBB, + 0x6A, 0xE5, 0xED, 0xF3, 0xDC, 0xB0, 0xEC, 0xC1, + 0xA2, 0x83, 0xE8, 0x43, 0xF2, 0x90, 0x7B, 0x34, + 0x1F, 0x17, 0x9A, 0xFD, 0x8B, 0x67, 0xDA, 0x90 + }, + { + 0x67, 0x88, 0x8B, 0x83, 0xFA, 0xAF, 0xBB, 0x62, + 0x29, 0x34, 0xB8, 0xD5, 0x59, 0x63, 0xE1, 0x86, + 0x15, 0x3E, 0x59, 0x51, 0x88, 0x7C, 0x7F, 0x4A, + 0x76, 0x35, 0xC7, 0x98, 0xD9, 0xA5, 0x82, 0x94, + 0xBE, 0x26, 0xA3, 0xC5, 0x49, 0xC9, 0xFD, 0x59, + 0x86, 0xAB, 0xD1, 0x9F, 0x40, 0x1E, 0xE2, 0x4E, + 0xDA, 0x36, 0x02, 0x04, 0x2A, 0xD3, 0x83, 0x35, + 0x7A, 0x31, 0x7D, 0x38, 0x07, 0x3B, 0x38, 0xCE + }, + { + 0xB4, 0xF7, 0x99, 0x63, 0xCA, 0x31, 0xBB, 0x62, + 0x26, 0x5D, 0xD9, 0x29, 0xAF, 0x7D, 0x51, 0x27, + 0x2F, 0xA6, 0x63, 0x1D, 0xE7, 0xFA, 0x35, 0xF7, + 0xA6, 0xB0, 0x3F, 0x9F, 0xCF, 0xDB, 0x8E, 0x3B, + 0x5B, 0xAC, 0xE3, 0x35, 0x91, 0xB7, 0xEC, 0x2C, + 0xFA, 0xB4, 0x9C, 0x91, 0xA6, 0xDB, 0x1F, 0xF8, + 0xF6, 0x78, 0x6D, 0x08, 0xF4, 0x4E, 0x80, 0x62, + 0xD2, 0xFF, 0x69, 0x6A, 0x7D, 0x98, 0x41, 0x42 + }, + { + 0x40, 0x84, 0x83, 0x69, 0x7B, 0xB6, 0xF9, 0xD0, + 0x11, 0xA1, 0xF2, 0x9A, 0x23, 0xC2, 0x78, 0xA8, + 0x1D, 0x37, 0x57, 0x8D, 0xCC, 0xCF, 0x42, 0x3B, + 0xDF, 0x48, 0x93, 0x37, 0xF1, 0x82, 0xEA, 0xB7, + 0x9A, 0x50, 0xB0, 0x5F, 0x3D, 0x2C, 0xCC, 0x49, + 0x13, 0x37, 0xC7, 0xE4, 0x1F, 0x30, 0x79, 0x3B, + 0xD2, 0x7D, 0x76, 0x61, 0xC2, 0xE3, 0x04, 0xC9, + 0x46, 0xA5, 0xA4, 0x01, 0xAF, 0x8D, 0x94, 0x6F + }, + { + 0xEE, 0xB5, 0xAD, 0xE1, 0xAB, 0x97, 0xE7, 0x15, + 0x43, 0x43, 0xA4, 0x6E, 0xB4, 0xCD, 0xD2, 0xA7, + 0x73, 0xF3, 0x63, 0x01, 0xED, 0xC6, 0xA1, 0xBC, + 0x1D, 0xD6, 0x48, 0x0E, 0x08, 0xF5, 0x87, 0x65, + 0xCB, 0x93, 0x87, 0x82, 0x92, 0x3B, 0xC0, 0x1F, + 0x8E, 0x0C, 0x61, 0xC6, 0xBE, 0x0D, 0xD1, 0xAB, + 0x4C, 0x18, 0xCB, 0x15, 0xED, 0x52, 0x10, 0x11, + 0x24, 0x05, 0xF1, 0xEA, 0x8F, 0x2E, 0x8C, 0x4E + }, + { + 0x71, 0x4A, 0xD1, 0x85, 0xF1, 0xEE, 0xC4, 0x3F, + 0x46, 0xB6, 0x7E, 0x99, 0x2D, 0x2D, 0x38, 0xBC, + 0x31, 0x49, 0xE3, 0x7D, 0xA7, 0xB4, 0x47, 0x48, + 0xD4, 0xD1, 0x4C, 0x16, 0x1E, 0x08, 0x78, 0x02, + 0x04, 0x42, 0x14, 0x95, 0x79, 0xA8, 0x65, 0xD8, + 0x04, 0xB0, 0x49, 0xCD, 0x01, 0x55, 0xBA, 0x98, + 0x33, 0x78, 0x75, 0x7A, 0x13, 0x88, 0x30, 0x1B, + 0xDC, 0x0F, 0xAE, 0x2C, 0xEA, 0xEA, 0x07, 0xDD + }, + { + 0x22, 0xB8, 0x24, 0x9E, 0xAF, 0x72, 0x29, 0x64, + 0xCE, 0x42, 0x4F, 0x71, 0xA7, 0x4D, 0x03, 0x8F, + 0xF9, 0xB6, 0x15, 0xFB, 0xA5, 0xC7, 0xC2, 0x2C, + 0xB6, 0x27, 0x97, 0xF5, 0x39, 0x82, 0x24, 0xC3, + 0xF0, 0x72, 0xEB, 0xC1, 0xDA, 0xCB, 0xA3, 0x2F, + 0xC6, 0xF6, 0x63, 0x60, 0xB3, 0xE1, 0x65, 0x8D, + 0x0F, 0xA0, 0xDA, 0x1E, 0xD1, 0xC1, 0xDA, 0x66, + 0x2A, 0x20, 0x37, 0xDA, 0x82, 0x3A, 0x33, 0x83 + }, + { + 0xB8, 0xE9, 0x03, 0xE6, 0x91, 0xB9, 0x92, 0x78, + 0x25, 0x28, 0xF8, 0xDB, 0x96, 0x4D, 0x08, 0xE3, + 0xBA, 0xAF, 0xBD, 0x08, 0xBA, 0x60, 0xC7, 0x2A, + 0xEC, 0x0C, 0x28, 0xEC, 0x6B, 0xFE, 0xCA, 0x4B, + 0x2E, 0xC4, 0xC4, 0x6F, 0x22, 0xBF, 0x62, 0x1A, + 0x5D, 0x74, 0xF7, 0x5C, 0x0D, 0x29, 0x69, 0x3E, + 0x56, 0xC5, 0xC5, 0x84, 0xF4, 0x39, 0x9E, 0x94, + 0x2F, 0x3B, 0xD8, 0xD3, 0x86, 0x13, 0xE6, 0x39 + }, + { + 0xD5, 0xB4, 0x66, 0xFF, 0x1F, 0xD6, 0x8C, 0xFA, + 0x8E, 0xDF, 0x0B, 0x68, 0x02, 0x44, 0x8F, 0x30, + 0x2D, 0xCC, 0xDA, 0xF5, 0x66, 0x28, 0x78, 0x6B, + 0x9D, 0xA0, 0xF6, 0x62, 0xFD, 0xA6, 0x90, 0x26, + 0x6B, 0xD4, 0x0A, 0xB6, 0xF0, 0xBE, 0xC0, 0x43, + 0xF1, 0x01, 0x28, 0xB3, 0x3D, 0x05, 0xDB, 0x82, + 0xD4, 0xAB, 0x26, 0x8A, 0x4F, 0x91, 0xAC, 0x42, + 0x86, 0x79, 0x5F, 0xC0, 0xF7, 0xCB, 0x48, 0x5C + }, + { + 0x0A, 0x1E, 0x8C, 0x0A, 0x8C, 0x48, 0xB8, 0x4B, + 0x71, 0xBA, 0x0F, 0xE5, 0x6F, 0xA0, 0x56, 0x09, + 0x8C, 0xA6, 0x92, 0xE9, 0x2F, 0x27, 0x6E, 0x85, + 0xB3, 0x38, 0x26, 0xCD, 0x78, 0x75, 0xFC, 0xF8, + 0x83, 0x85, 0x13, 0x1B, 0x43, 0xDF, 0x74, 0x53, + 0x2E, 0xAA, 0x86, 0xCF, 0x17, 0x1F, 0x50, 0x76, + 0xE6, 0xD1, 0x7B, 0x1C, 0x75, 0xFB, 0xA1, 0xDB, + 0x00, 0x1B, 0x6E, 0x66, 0x97, 0x7C, 0xB8, 0xD7 + }, + { + 0x65, 0xAA, 0x17, 0x99, 0x14, 0x36, 0x93, 0xAB, + 0xD9, 0xCB, 0x21, 0x8D, 0x9B, 0x5E, 0xC6, 0x0C, + 0x0E, 0xDD, 0xB0, 0x67, 0xE6, 0xA3, 0x2F, 0x76, + 0x79, 0x60, 0x10, 0xAC, 0xB1, 0x1A, 0xD0, 0x13, + 0x6C, 0xE4, 0x9F, 0x97, 0x6E, 0x74, 0xF8, 0x95, + 0x04, 0x2F, 0x7C, 0xBF, 0x13, 0xFB, 0x73, 0xD1, + 0x9D, 0xC8, 0x89, 0xD7, 0xE9, 0x03, 0x46, 0x9D, + 0xEB, 0x33, 0x73, 0x1F, 0x24, 0x06, 0xB6, 0x63 + }, + { + 0xDE, 0xB7, 0x12, 0xB9, 0xCC, 0x64, 0xF5, 0x88, + 0x14, 0x86, 0x0B, 0x51, 0xFA, 0x89, 0xAD, 0x8A, + 0x92, 0x6A, 0x69, 0x08, 0xC7, 0x96, 0xDE, 0x55, + 0x7F, 0x90, 0xCF, 0xAD, 0xB0, 0xC6, 0x2C, 0x07, + 0x87, 0x2F, 0x33, 0xFE, 0x18, 0x4E, 0x5E, 0x21, + 0x2A, 0x3C, 0x5C, 0x37, 0x31, 0x74, 0x18, 0x44, + 0x6E, 0xFD, 0x95, 0x61, 0x3F, 0x61, 0x8A, 0x35, + 0xF7, 0xD2, 0x78, 0x9E, 0xFE, 0x0D, 0x96, 0x60 + }, + { + 0xB4, 0x2F, 0x4A, 0x40, 0xB3, 0xC8, 0x8B, 0xCE, + 0xCF, 0xE3, 0x28, 0xC8, 0x46, 0xBF, 0x06, 0x48, + 0xA1, 0x69, 0x90, 0xCA, 0x53, 0x91, 0x95, 0xC0, + 0xC1, 0xDC, 0x8D, 0x70, 0x30, 0x80, 0x67, 0x68, + 0x5A, 0xF6, 0x77, 0xAD, 0x65, 0xAC, 0x0C, 0x7A, + 0x9B, 0xCF, 0xA8, 0xF7, 0xAC, 0xC0, 0xAA, 0xCF, + 0x45, 0xCA, 0x18, 0xAC, 0x83, 0x1F, 0xED, 0x64, + 0x4E, 0xC3, 0xD9, 0x28, 0x31, 0x01, 0xFF, 0xEF + }, + { + 0xED, 0xCF, 0x6C, 0x81, 0xCC, 0xF1, 0x6E, 0x11, + 0xDD, 0xF7, 0x19, 0xA3, 0x3D, 0xD0, 0xE5, 0x34, + 0x9C, 0xAB, 0xAC, 0x5C, 0xFA, 0xE5, 0x97, 0x00, + 0x98, 0x40, 0xE1, 0xC3, 0x93, 0x62, 0xC0, 0xF1, + 0x19, 0x82, 0xFE, 0x2C, 0x27, 0x65, 0x85, 0x9A, + 0x94, 0x26, 0x2D, 0xA2, 0x8D, 0xD3, 0x37, 0x3D, + 0x52, 0x26, 0x93, 0x89, 0x75, 0x11, 0xEB, 0xA5, + 0xE0, 0x7B, 0x8B, 0xC6, 0xB6, 0x06, 0x4D, 0xC0 + }, + { + 0x46, 0xB9, 0x62, 0xD2, 0x28, 0x36, 0x94, 0xD2, + 0x79, 0x75, 0xDC, 0xBF, 0x32, 0x56, 0x4C, 0x9B, + 0x04, 0x03, 0x2B, 0x30, 0xA9, 0x3E, 0x05, 0x8F, + 0xB7, 0x7B, 0x2B, 0x71, 0x8B, 0x4A, 0xD5, 0xFB, + 0x78, 0x9A, 0xB7, 0xD7, 0xAA, 0x90, 0x85, 0x2D, + 0xA2, 0xBF, 0xB6, 0xB3, 0x93, 0xB0, 0x9F, 0x98, + 0xE8, 0x69, 0xB1, 0x6E, 0x41, 0x0E, 0x7D, 0xE2, + 0x30, 0xB1, 0x79, 0xF6, 0x2E, 0xB5, 0x74, 0x71 + }, + { + 0x29, 0x03, 0x6C, 0x3F, 0x53, 0x82, 0xE3, 0x5D, + 0xE7, 0xA6, 0x9F, 0xA7, 0xA6, 0x3E, 0xC7, 0xBD, + 0xCB, 0xC4, 0xE0, 0xCC, 0x5A, 0x7B, 0x64, 0x14, + 0xCF, 0x44, 0xBF, 0x9A, 0x83, 0x83, 0xEF, 0xB5, + 0x97, 0x23, 0x50, 0x6F, 0x0D, 0x51, 0xAD, 0x50, + 0xAC, 0x1E, 0xAC, 0xF7, 0x04, 0x30, 0x8E, 0x8A, + 0xEC, 0xB9, 0x66, 0xF6, 0xAC, 0x94, 0x1D, 0xB1, + 0xCD, 0xE4, 0xB5, 0x9E, 0x84, 0xC1, 0xEB, 0xBA + }, + { + 0x17, 0x3F, 0x8A, 0xB8, 0x93, 0x3E, 0xB0, 0x7C, + 0xC5, 0xFD, 0x6E, 0x4B, 0xCE, 0xBA, 0xE1, 0xFF, + 0x35, 0xC7, 0x87, 0x9B, 0x93, 0x8A, 0x5A, 0x15, + 0x79, 0xEA, 0x02, 0xF3, 0x83, 0x32, 0x48, 0x86, + 0xC7, 0x0E, 0xD9, 0x10, 0x9D, 0xE1, 0x69, 0x0B, + 0x8E, 0xE8, 0x01, 0xBC, 0x95, 0x9B, 0x21, 0xD3, + 0x81, 0x17, 0xEB, 0xB8, 0x4A, 0xB5, 0x6F, 0x88, + 0xF8, 0xA3, 0x72, 0x62, 0x00, 0x2D, 0xD9, 0x8E + }, + { + 0xC6, 0xAF, 0xA6, 0xA1, 0x91, 0x93, 0x1F, 0xD4, + 0x5C, 0x3B, 0xAD, 0xBA, 0x72, 0x6E, 0x68, 0xA9, + 0xBC, 0x73, 0x88, 0xC8, 0xCF, 0x37, 0xAD, 0xEC, + 0x7C, 0x64, 0x56, 0x1C, 0xF4, 0x81, 0xFD, 0x25, + 0x9A, 0x64, 0x6C, 0x8B, 0xD8, 0x43, 0xE7, 0x70, + 0x9E, 0x11, 0xE6, 0x4D, 0xCF, 0xD5, 0xDF, 0xFF, + 0xED, 0x79, 0x23, 0x5C, 0x68, 0x9B, 0x42, 0x00, + 0xFE, 0x7A, 0xC8, 0xDF, 0xDA, 0xDD, 0xEC, 0xE0 + }, + { + 0xA6, 0xDC, 0xCD, 0x8C, 0x19, 0x26, 0x64, 0x88, + 0xBF, 0x77, 0xB9, 0xF2, 0x4B, 0x91, 0x43, 0xDE, + 0xF1, 0xFE, 0xD6, 0x1D, 0x0C, 0x60, 0xB5, 0x00, + 0x0A, 0x52, 0x3F, 0x45, 0x0D, 0xA2, 0x3D, 0x74, + 0xE4, 0xE3, 0xF6, 0xEF, 0x04, 0x09, 0x0D, 0x10, + 0x66, 0xB6, 0xAC, 0xE8, 0x5A, 0xBC, 0x0F, 0x03, + 0x01, 0x73, 0xF5, 0x28, 0x17, 0x72, 0x7C, 0x4E, + 0x40, 0x43, 0x2D, 0xD3, 0x4C, 0x6E, 0xF9, 0xF0 + }, + { + 0xAA, 0xF8, 0x90, 0x8D, 0x54, 0x6E, 0x4F, 0x1E, + 0x31, 0x4C, 0x00, 0xE9, 0xD2, 0xE8, 0x85, 0x5C, + 0xB2, 0x56, 0x44, 0x5A, 0xAE, 0x3E, 0xCA, 0x44, + 0x23, 0x83, 0x22, 0xAE, 0xC7, 0x40, 0x34, 0xA1, + 0x45, 0x8A, 0x29, 0x36, 0x75, 0xDA, 0xD9, 0x49, + 0x40, 0x8D, 0xE5, 0x55, 0x4F, 0x22, 0xD7, 0x34, + 0x54, 0xF3, 0xF0, 0x70, 0x9C, 0xBC, 0xCC, 0x85, + 0xCB, 0x05, 0x3A, 0x6F, 0x50, 0x38, 0x91, 0xA1 + }, + { + 0x52, 0x5F, 0x4A, 0xAB, 0x9C, 0x32, 0x7D, 0x2A, + 0x6A, 0x3C, 0x9D, 0xF8, 0x1F, 0xB7, 0xBE, 0x97, + 0xEE, 0x03, 0xE3, 0xF7, 0xCE, 0x33, 0x21, 0x1C, + 0x47, 0x78, 0x8A, 0xCD, 0x13, 0x46, 0x40, 0xDD, + 0x90, 0xAD, 0x74, 0x99, 0x2D, 0x3D, 0xD6, 0xAC, + 0x80, 0x63, 0x50, 0xF3, 0xBA, 0xBC, 0x7F, 0xE1, + 0x98, 0xA6, 0x1D, 0xB3, 0x2D, 0x4A, 0xD1, 0xD6, + 0x56, 0x9A, 0xE8, 0x41, 0x31, 0x04, 0xDE, 0xA4 + }, + { + 0x2D, 0xAC, 0xCD, 0x88, 0x71, 0x9D, 0x0A, 0x00, + 0xB5, 0x2C, 0x6E, 0xB7, 0x9E, 0x1C, 0xA8, 0xB4, + 0xA1, 0xB4, 0xB4, 0x4F, 0xFA, 0x20, 0x88, 0x9F, + 0x23, 0x63, 0xEF, 0x5C, 0x0D, 0x73, 0x7F, 0x1F, + 0x81, 0xF5, 0x0D, 0xA1, 0xCA, 0xAC, 0x23, 0x1D, + 0x6F, 0xCB, 0x48, 0x89, 0x5E, 0x72, 0x99, 0xB7, + 0x7A, 0xF8, 0x1F, 0x0A, 0xA4, 0xA7, 0x61, 0x8A, + 0xD2, 0x4B, 0x7A, 0xAF, 0xC8, 0xE3, 0xA2, 0xBE + }, + { + 0x7D, 0x28, 0x6F, 0x1F, 0x72, 0x1E, 0xC2, 0xD2, + 0x11, 0x5E, 0xF4, 0xCC, 0xD8, 0x28, 0x58, 0xA4, + 0xD5, 0x12, 0x21, 0x13, 0x55, 0xD4, 0xFC, 0x58, + 0xE5, 0x34, 0xBF, 0xA5, 0x9C, 0x2E, 0x1B, 0xF5, + 0x52, 0xA9, 0x6D, 0xC4, 0xB3, 0xE4, 0x6B, 0x01, + 0x28, 0x65, 0xDA, 0x88, 0x13, 0x4C, 0xF0, 0x4E, + 0x73, 0x1B, 0x19, 0x30, 0x75, 0x9E, 0x15, 0x8F, + 0xF6, 0x20, 0xB6, 0xEC, 0x5A, 0xAF, 0xD0, 0x12 + }, + { + 0x21, 0x82, 0x6B, 0x95, 0x29, 0xC4, 0xBC, 0x51, + 0x91, 0x47, 0xF5, 0xF9, 0xFE, 0x6D, 0xB8, 0x78, + 0x34, 0x52, 0x15, 0xE5, 0x09, 0x4F, 0x4E, 0x99, + 0xB1, 0x31, 0xED, 0x54, 0xE2, 0x49, 0x53, 0xCE, + 0xE9, 0xAD, 0xB7, 0x18, 0xD1, 0x74, 0x3E, 0x6C, + 0x27, 0xFC, 0x94, 0x51, 0x6A, 0x99, 0x22, 0xFB, + 0x97, 0x5A, 0x78, 0x16, 0xB8, 0xAA, 0xB0, 0x21, + 0x12, 0x60, 0x8C, 0x03, 0x2B, 0xF1, 0x38, 0xE3 + }, + { + 0xC1, 0x68, 0x9C, 0x69, 0x8A, 0xB0, 0x65, 0xF6, + 0x2E, 0xEE, 0x65, 0xDD, 0xCA, 0x67, 0x6B, 0xAA, + 0x45, 0xB5, 0x2F, 0x30, 0x8A, 0xFA, 0x80, 0x4A, + 0xB4, 0xAA, 0x6A, 0xB8, 0x4B, 0x7A, 0xC1, 0xAA, + 0x1D, 0xFF, 0x07, 0x17, 0x56, 0x10, 0xB1, 0x2A, + 0xE1, 0x1F, 0x27, 0xB7, 0xC4, 0x30, 0xAF, 0xD5, + 0x75, 0x56, 0xBD, 0x18, 0x1D, 0x02, 0x83, 0x2C, + 0xD8, 0xD0, 0xA5, 0xFD, 0xC3, 0x02, 0x01, 0x24 + }, + { + 0xA1, 0xA6, 0x28, 0x17, 0x47, 0xE3, 0x4D, 0x3E, + 0xDE, 0x5E, 0x93, 0x34, 0x01, 0x74, 0x7C, 0xA7, + 0xF7, 0x66, 0x28, 0xB6, 0x14, 0xC8, 0xA3, 0x94, + 0xF5, 0x02, 0x56, 0x2B, 0xFE, 0xE0, 0xB9, 0x94, + 0xEC, 0xB6, 0x5F, 0xBF, 0xE1, 0xFF, 0x70, 0x67, + 0xDC, 0xB0, 0x1D, 0x02, 0xA9, 0x2B, 0xA4, 0x62, + 0x20, 0x75, 0x87, 0xCE, 0xF7, 0xDC, 0x2C, 0xFD, + 0xB4, 0x58, 0x48, 0x48, 0xAD, 0x55, 0x91, 0x4A + }, + { + 0x00, 0x70, 0xA0, 0x19, 0x0A, 0xA6, 0x96, 0x57, + 0x2D, 0x85, 0x3F, 0x1D, 0x24, 0xAB, 0x63, 0x08, + 0x48, 0xAC, 0x56, 0xAD, 0x5C, 0x2E, 0xBF, 0xCF, + 0xDE, 0x27, 0xD1, 0x11, 0xCD, 0x55, 0x93, 0x9C, + 0x1E, 0x4D, 0x07, 0x87, 0x2D, 0xDE, 0x7C, 0xE7, + 0x8B, 0x53, 0x4B, 0x53, 0x0F, 0x0A, 0x39, 0x6E, + 0x86, 0xAF, 0x9D, 0x57, 0x53, 0x54, 0xB5, 0xD7, + 0xE3, 0x4A, 0xCD, 0xE1, 0x8C, 0xC7, 0x67, 0xAE + }, + { + 0x51, 0xB9, 0xB5, 0xED, 0x19, 0x3F, 0xD4, 0xB1, + 0xA3, 0xA9, 0x2B, 0x46, 0xBD, 0x4B, 0xD1, 0xF6, + 0xEC, 0x6B, 0x38, 0xA6, 0x0F, 0x2D, 0x02, 0x61, + 0xD7, 0x2A, 0xBF, 0xD1, 0x64, 0x36, 0x12, 0x8D, + 0xCB, 0xF2, 0x2C, 0x25, 0xE3, 0xE3, 0xC4, 0x3F, + 0xE4, 0xD2, 0x9D, 0xB9, 0x12, 0x4D, 0x03, 0x33, + 0x30, 0x18, 0x45, 0x92, 0xD2, 0x0C, 0x5B, 0x08, + 0x2C, 0x23, 0x20, 0x64, 0x54, 0xCB, 0x3D, 0xD7 + }, + { + 0x57, 0x8F, 0x24, 0x27, 0x46, 0x91, 0x4E, 0x36, + 0xD0, 0xD9, 0xD4, 0x80, 0x96, 0x89, 0x57, 0x12, + 0x16, 0xA4, 0x3E, 0x47, 0x33, 0x32, 0x39, 0x51, + 0x62, 0x0F, 0x5E, 0xE7, 0x8C, 0xCF, 0xEE, 0x91, + 0x9B, 0xF5, 0x5F, 0x28, 0x7B, 0x45, 0xA7, 0x3D, + 0x44, 0x85, 0xAC, 0x74, 0x22, 0x87, 0x92, 0x39, + 0x65, 0x3B, 0x05, 0x91, 0xC3, 0x6C, 0x86, 0x69, + 0x41, 0xF8, 0xAF, 0xFE, 0x4A, 0xE5, 0x6E, 0x9E + }, + { + 0x94, 0x71, 0x30, 0xEF, 0x0B, 0x94, 0x8E, 0xE0, + 0x45, 0x81, 0xAB, 0xA3, 0xE2, 0xCC, 0x4C, 0xEF, + 0xC3, 0x8C, 0xCE, 0xDC, 0x86, 0x17, 0x92, 0xB7, + 0xB5, 0xDC, 0xD9, 0xD9, 0x36, 0x1C, 0x72, 0x4A, + 0x12, 0x20, 0x03, 0xBF, 0x79, 0x6C, 0xE0, 0x97, + 0x98, 0x00, 0xAD, 0xAB, 0xC7, 0x45, 0x6F, 0x17, + 0x3A, 0xE5, 0x26, 0x93, 0x15, 0xAF, 0xC0, 0x1B, + 0x60, 0x6D, 0xB2, 0x9C, 0x75, 0x50, 0xE8, 0xCA + }, + { + 0xC8, 0x52, 0xE6, 0x77, 0xF7, 0x7B, 0x14, 0xB5, + 0x85, 0xBD, 0x10, 0x2A, 0x0F, 0x14, 0x42, 0x43, + 0x05, 0x9D, 0xAB, 0xEC, 0x7C, 0xB0, 0x1F, 0xFA, + 0x61, 0xDF, 0x19, 0xFC, 0xE8, 0xAB, 0x43, 0x6B, + 0xF5, 0xE2, 0xD5, 0xC7, 0x9A, 0xA2, 0xD7, 0xB6, + 0x77, 0xF6, 0xC3, 0x75, 0xE9, 0x34, 0x3D, 0x34, + 0x2E, 0x4F, 0xF4, 0xE3, 0xAB, 0x00, 0x1B, 0xC7, + 0x98, 0x8C, 0x3C, 0x7A, 0x83, 0xCC, 0xB6, 0x9F + }, + { + 0x01, 0x19, 0x75, 0x26, 0x91, 0x7A, 0xC2, 0xC7, + 0xBC, 0x53, 0x95, 0x19, 0xE6, 0x8B, 0xB2, 0x79, + 0x81, 0x35, 0xF6, 0x03, 0x3E, 0xD5, 0x8F, 0x5C, + 0x45, 0x1E, 0x0C, 0xE9, 0x46, 0xAF, 0xF0, 0xF9, + 0x8D, 0xFD, 0xD1, 0x51, 0x01, 0x73, 0x1A, 0xC1, + 0x66, 0x12, 0x6E, 0xAF, 0xB5, 0xE7, 0xCB, 0xE2, + 0xE2, 0x72, 0xEE, 0x23, 0x3F, 0x34, 0xE5, 0xF3, + 0xF8, 0xEA, 0x3D, 0x2D, 0x12, 0x24, 0x82, 0xFB + }, + { + 0x05, 0x9C, 0x90, 0x85, 0x89, 0x5E, 0xB7, 0x18, + 0x30, 0x4E, 0x2D, 0xDA, 0x78, 0x68, 0x6B, 0xD9, + 0x57, 0x49, 0x81, 0x5A, 0x5E, 0xE9, 0x02, 0x51, + 0x0B, 0x00, 0x9A, 0xF6, 0x92, 0x48, 0xB6, 0xA7, + 0xA7, 0x2F, 0xF8, 0xA6, 0x28, 0xD8, 0x17, 0x73, + 0xE1, 0x1D, 0x5A, 0x1E, 0x7F, 0x69, 0x7A, 0x44, + 0x9B, 0x7A, 0x1E, 0x27, 0x12, 0xD5, 0xCF, 0xAE, + 0x7A, 0xB2, 0x65, 0x07, 0xD1, 0x11, 0x29, 0x18 + }, + { + 0x29, 0x52, 0x43, 0xBD, 0x75, 0x8C, 0xF2, 0x1C, + 0x80, 0x31, 0x25, 0xFC, 0xF3, 0x21, 0xDE, 0x5F, + 0x97, 0x98, 0x7C, 0x8D, 0xB3, 0xBB, 0x3C, 0xB5, + 0x1F, 0xF9, 0x7C, 0x4C, 0xDA, 0xC9, 0xD3, 0xBF, + 0x0A, 0x67, 0xCE, 0xE7, 0xED, 0x35, 0x0A, 0x41, + 0xFD, 0xE6, 0xAB, 0xCC, 0x25, 0x4F, 0xBC, 0x9F, + 0x8E, 0x6B, 0x3E, 0x3C, 0xCE, 0xCB, 0xD0, 0xE4, + 0xA6, 0x40, 0xA2, 0x0F, 0x36, 0x2B, 0xA3, 0xA0 + }, + { + 0xDD, 0x82, 0x32, 0xD2, 0x41, 0x2C, 0xCE, 0xEC, + 0xB5, 0x12, 0x31, 0x91, 0xF6, 0xE9, 0x22, 0x1E, + 0x85, 0x1E, 0xCC, 0xE0, 0xFA, 0xEB, 0xF0, 0x50, + 0x5F, 0x2A, 0xEE, 0xFF, 0x8A, 0x8C, 0x92, 0xD4, + 0x1D, 0xAC, 0xF1, 0x77, 0xBD, 0xAE, 0x27, 0x76, + 0x3E, 0xA4, 0xA8, 0x62, 0x05, 0xEF, 0x76, 0x34, + 0xF7, 0xA6, 0x87, 0xCC, 0x44, 0xBB, 0xBB, 0xDE, + 0xEE, 0x5E, 0x11, 0xE6, 0x5F, 0x9F, 0xBD, 0x69 + }, + { + 0xB0, 0x46, 0xB6, 0x83, 0x71, 0x6D, 0x31, 0xC9, + 0x14, 0xC7, 0x0B, 0x10, 0xF7, 0x64, 0x6D, 0xA3, + 0x1E, 0xFA, 0xB2, 0x23, 0x63, 0x47, 0x45, 0x9C, + 0xF8, 0xFA, 0x2C, 0x09, 0x12, 0x34, 0x31, 0xF7, + 0x28, 0x07, 0xF1, 0x1D, 0x86, 0x7C, 0x37, 0x70, + 0xB1, 0xF0, 0x61, 0xD5, 0x6C, 0xA0, 0xE5, 0xB1, + 0xE8, 0x8A, 0x6B, 0x44, 0xA3, 0x3C, 0xF9, 0x3E, + 0x18, 0xBC, 0xC9, 0xCE, 0xBB, 0xA5, 0xAD, 0xE7 + }, + { + 0x20, 0xE5, 0xA2, 0x55, 0x05, 0x8B, 0xE5, 0x1E, + 0x1A, 0x62, 0x9B, 0x4E, 0xBF, 0x81, 0xE5, 0xCB, + 0xE0, 0x78, 0x1C, 0xB6, 0x7C, 0xA4, 0xE5, 0x7B, + 0xA8, 0x6B, 0x30, 0x88, 0x96, 0xBC, 0xE7, 0x38, + 0x20, 0xEB, 0x08, 0x43, 0x1C, 0xE8, 0xC9, 0xBC, + 0x58, 0x10, 0xCC, 0x8D, 0x8B, 0x9C, 0x9D, 0x6F, + 0xCF, 0x83, 0x4E, 0x42, 0xEA, 0x33, 0xEF, 0x73, + 0xCE, 0xC4, 0x7D, 0x71, 0x3B, 0x6D, 0x8D, 0xFD + }, + { + 0x1E, 0x48, 0x04, 0xF9, 0xC0, 0xB1, 0xE8, 0x2B, + 0x9E, 0xD3, 0x63, 0xBD, 0xE4, 0x47, 0x28, 0xAC, + 0xF7, 0xD0, 0x90, 0xA1, 0xBF, 0xE2, 0xDD, 0xF8, + 0x81, 0x9D, 0x65, 0x92, 0xEF, 0x45, 0x3B, 0x83, + 0x5B, 0xD2, 0xEF, 0xE8, 0xB0, 0x20, 0x6E, 0x29, + 0x25, 0x5B, 0x07, 0xFB, 0x90, 0xC7, 0xD3, 0x0D, + 0x2C, 0x11, 0x48, 0x00, 0xB8, 0x6C, 0xB0, 0xE3, + 0xE0, 0x7D, 0x38, 0x7E, 0x98, 0xCE, 0x95, 0x37 + }, + { + 0x41, 0xC9, 0x53, 0xD8, 0xD2, 0x2A, 0x86, 0xC3, + 0x63, 0x4D, 0xF4, 0x22, 0xB6, 0xDE, 0x4A, 0x4F, + 0x14, 0x96, 0x66, 0xBE, 0x8C, 0x4F, 0x58, 0x1B, + 0x26, 0x23, 0xEE, 0x65, 0xC3, 0x92, 0xA5, 0xC3, + 0x28, 0x36, 0x63, 0x9E, 0xF5, 0x6B, 0x93, 0x68, + 0x62, 0x20, 0xF4, 0x5C, 0xE6, 0x5B, 0x4F, 0xA8, + 0x58, 0x9C, 0x91, 0x25, 0x64, 0x17, 0x90, 0xB6, + 0x92, 0x5F, 0xAA, 0xD9, 0x48, 0xB8, 0xBE, 0x04 + }, + { + 0x8B, 0xFC, 0xA4, 0xC8, 0xDF, 0xE3, 0xFD, 0xE4, + 0x25, 0x7B, 0x75, 0xC3, 0xDB, 0x01, 0x86, 0x2E, + 0xD3, 0x11, 0x67, 0xDE, 0x66, 0xC2, 0xE0, 0x3A, + 0x25, 0x56, 0xC4, 0xF4, 0x6C, 0x9D, 0xFF, 0xC1, + 0xAC, 0x45, 0xF7, 0xBC, 0x59, 0xA6, 0x7A, 0xB9, + 0x36, 0x24, 0xBE, 0xB8, 0x6D, 0xDD, 0x0D, 0x02, + 0x60, 0x3F, 0x0D, 0xCD, 0x03, 0x64, 0xF0, 0xF8, + 0x08, 0x81, 0x9B, 0xE9, 0x6C, 0xD8, 0xD3, 0xB6 + }, + { + 0xF6, 0xBF, 0x59, 0xD8, 0xD4, 0x5A, 0x55, 0x71, + 0x11, 0xA2, 0x36, 0xCB, 0xBA, 0x52, 0x61, 0x9A, + 0xE3, 0xDF, 0xCC, 0x43, 0x16, 0x94, 0x38, 0x43, + 0xAF, 0xD1, 0x28, 0x1B, 0x28, 0x21, 0x4A, 0x4A, + 0x5E, 0x85, 0x1E, 0xF8, 0xC5, 0x4F, 0x50, 0x5E, + 0x3C, 0x4B, 0x60, 0x0E, 0xFF, 0xBE, 0xBB, 0x3E, + 0xAC, 0x17, 0x08, 0x7F, 0x22, 0x27, 0x58, 0x12, + 0x63, 0xF1, 0x7D, 0x7E, 0x5F, 0x68, 0xEA, 0x83 + }, + { + 0x1B, 0xC9, 0xED, 0xE4, 0xD4, 0x1A, 0x4D, 0xF6, + 0xE8, 0xE6, 0xF4, 0x7C, 0x2F, 0x4A, 0xD8, 0x73, + 0x37, 0xB6, 0x9B, 0x19, 0xF7, 0x10, 0xF7, 0x66, + 0xE1, 0xFA, 0xF5, 0xAA, 0x05, 0xA4, 0x3B, 0x66, + 0x45, 0x39, 0x6E, 0x7F, 0xBE, 0xF4, 0x3B, 0xB7, + 0x79, 0x5D, 0x39, 0x40, 0x7B, 0x58, 0x15, 0xB9, + 0x2E, 0xCC, 0x23, 0xA6, 0xC1, 0x24, 0x14, 0x21, + 0x15, 0x3A, 0x55, 0xD5, 0x1F, 0x12, 0xBF, 0xD8 + }, + { + 0x76, 0xB3, 0x8B, 0x36, 0x31, 0x55, 0x5D, 0xBC, + 0xFB, 0x21, 0x21, 0x8F, 0xF9, 0xE4, 0x12, 0xA2, + 0x29, 0x88, 0x9E, 0xF2, 0xCE, 0x8A, 0xD7, 0x05, + 0xE9, 0x0F, 0x96, 0xAA, 0xBB, 0xD5, 0xBE, 0x7E, + 0x53, 0x29, 0xA4, 0x26, 0x53, 0x4C, 0x81, 0x5A, + 0x56, 0x53, 0x77, 0x13, 0x18, 0x72, 0x66, 0x41, + 0x42, 0x4E, 0x3B, 0x88, 0x29, 0x2F, 0xB1, 0xD8, + 0x95, 0x44, 0x40, 0x6A, 0xDE, 0x9B, 0xCC, 0xB5 + }, + { + 0xE5, 0x3F, 0x60, 0x07, 0x40, 0x22, 0x4E, 0x4D, + 0x10, 0xD3, 0x1D, 0x24, 0x38, 0x00, 0x31, 0x43, + 0xAF, 0xDB, 0x43, 0x6E, 0xB1, 0x79, 0x1B, 0x15, + 0x0D, 0xE3, 0x56, 0x76, 0xF0, 0xE3, 0x2F, 0x80, + 0xB0, 0xB6, 0x5F, 0x0A, 0xCF, 0x48, 0x1A, 0x5F, + 0xBF, 0x95, 0x96, 0xC0, 0xCB, 0x0A, 0x27, 0xC7, + 0xAF, 0xC1, 0x1D, 0x1E, 0x2C, 0x4D, 0x54, 0x02, + 0x47, 0x5E, 0x4F, 0xFC, 0xC1, 0xCD, 0xA8, 0x11 + }, + { + 0x62, 0x06, 0xB9, 0x1F, 0xC0, 0xB6, 0xF1, 0x21, + 0x1E, 0x9F, 0xDE, 0xCD, 0xC9, 0xD5, 0x1A, 0x6F, + 0x1E, 0xEE, 0x65, 0x54, 0xB1, 0x38, 0xAD, 0xCD, + 0x4A, 0x82, 0x3D, 0xF0, 0x0D, 0xDE, 0xF6, 0x75, + 0x9A, 0x9B, 0xFD, 0x7A, 0x4E, 0x98, 0x1E, 0x04, + 0x52, 0x36, 0x83, 0x8F, 0x4A, 0xF6, 0x93, 0xF6, + 0x93, 0x77, 0x93, 0x14, 0x84, 0xB3, 0xE8, 0x1E, + 0x3E, 0x3B, 0xC2, 0xCB, 0x7E, 0xF7, 0x9F, 0xE9 + }, + { + 0x76, 0xFD, 0x02, 0xDA, 0xDD, 0x96, 0x3B, 0xC0, + 0x35, 0x39, 0x91, 0x46, 0xCE, 0x42, 0x98, 0x8C, + 0xC0, 0x99, 0xD3, 0xCF, 0x4D, 0x32, 0xDF, 0x5C, + 0x0B, 0xBF, 0x64, 0x10, 0x12, 0x46, 0xB1, 0xC7, + 0x08, 0xD1, 0x67, 0xE2, 0x95, 0x95, 0xD1, 0x1D, + 0x09, 0xB3, 0xF6, 0x34, 0x86, 0xB4, 0x05, 0x26, + 0xAC, 0x1D, 0xFE, 0x31, 0xBC, 0x22, 0xDE, 0xC7, + 0x0B, 0x74, 0x5E, 0x90, 0xE2, 0xEA, 0xAF, 0x5A + }, + { + 0xF0, 0xA1, 0xFB, 0xE3, 0x11, 0x63, 0xE4, 0x21, + 0x01, 0x50, 0x72, 0x18, 0x3D, 0x68, 0xEE, 0x51, + 0x91, 0xA9, 0x9C, 0xFD, 0xA1, 0x69, 0xBA, 0x5A, + 0x19, 0x54, 0xC9, 0xF3, 0x10, 0x7D, 0x4E, 0xCA, + 0x06, 0x3E, 0x13, 0x7A, 0x71, 0x14, 0xD3, 0x97, + 0xC9, 0xDB, 0x67, 0x2B, 0x9F, 0x47, 0x8D, 0x41, + 0xC3, 0x4E, 0x99, 0x1B, 0x06, 0x69, 0xA9, 0x51, + 0x53, 0x92, 0x90, 0xC8, 0xED, 0x65, 0xE4, 0x6A + }, + { + 0x13, 0xC7, 0x2A, 0x6A, 0xA5, 0x71, 0xB1, 0x43, + 0xDC, 0xCF, 0x45, 0xAD, 0xCD, 0x98, 0xEA, 0xE6, + 0x99, 0xA1, 0x54, 0xB1, 0x10, 0xF2, 0x5E, 0x7E, + 0x9E, 0x82, 0xB7, 0x65, 0xB9, 0xA0, 0x89, 0x23, + 0x68, 0x8E, 0x8E, 0x0F, 0xF3, 0x11, 0xA6, 0x8A, + 0x77, 0x1E, 0x14, 0x50, 0x96, 0xD6, 0x07, 0x76, + 0xC6, 0xD6, 0xEE, 0x70, 0xAD, 0x6F, 0x69, 0xFA, + 0x2B, 0x76, 0x77, 0x63, 0x40, 0x55, 0xA0, 0x0E + }, + { + 0x0E, 0x06, 0x2B, 0xFE, 0x81, 0x8E, 0xE1, 0x0F, + 0x33, 0x48, 0x1D, 0xEA, 0x43, 0x02, 0x8B, 0x2C, + 0xFB, 0xB4, 0x9E, 0xC9, 0x5E, 0x0F, 0x75, 0xA9, + 0xE1, 0x6D, 0x40, 0x4B, 0xC5, 0x19, 0xB9, 0xAD, + 0x50, 0xB4, 0xA7, 0x33, 0x69, 0x2C, 0xA5, 0x4E, + 0xFB, 0x68, 0x04, 0x69, 0xED, 0x83, 0xDD, 0xEF, + 0xBD, 0xDD, 0xB1, 0x39, 0x04, 0x2E, 0x0E, 0x1C, + 0x09, 0xC3, 0xEB, 0x79, 0x03, 0xFA, 0x08, 0xDF + }, + { + 0x45, 0x3B, 0xE4, 0xAA, 0xB9, 0xF4, 0x23, 0xB3, + 0x36, 0x52, 0xA0, 0xB5, 0xD0, 0x2A, 0x9A, 0xF8, + 0x55, 0xDD, 0x0D, 0x42, 0xDD, 0x83, 0x11, 0x0B, + 0xA3, 0xBC, 0x4B, 0x39, 0x94, 0xEA, 0x3F, 0x88, + 0x5A, 0x71, 0x30, 0x89, 0x75, 0x08, 0x9B, 0x49, + 0x03, 0xE2, 0xE4, 0xD6, 0xBA, 0x6D, 0xC2, 0xE8, + 0x40, 0x31, 0xFF, 0xE9, 0xC8, 0x56, 0x39, 0x75, + 0xC8, 0x61, 0x6A, 0xCA, 0x07, 0x42, 0xE8, 0x29 + }, + { + 0x53, 0x61, 0xE3, 0xE8, 0x93, 0xDD, 0x36, 0x0B, + 0xCB, 0xF5, 0x1C, 0x79, 0x3E, 0xC0, 0x92, 0xA6, + 0xB0, 0x52, 0x05, 0x4F, 0x5F, 0x00, 0x0B, 0x9F, + 0xCE, 0x50, 0x7B, 0x66, 0x45, 0xF8, 0xD4, 0x70, + 0x13, 0xA8, 0x70, 0x6A, 0x58, 0xD4, 0xB1, 0x06, + 0x29, 0xCC, 0x82, 0xB8, 0xD2, 0xD7, 0x96, 0xFD, + 0xD3, 0x7B, 0x60, 0x8A, 0x58, 0x79, 0x52, 0xD6, + 0x55, 0x3E, 0x01, 0xD1, 0xAF, 0x0E, 0x04, 0xB8 + }, + { + 0x74, 0xB5, 0x67, 0x39, 0xF0, 0x1F, 0x82, 0x09, + 0xA4, 0x04, 0x44, 0xDF, 0x4C, 0xCD, 0xEE, 0xEA, + 0x8F, 0x97, 0xE8, 0xE7, 0x6E, 0xFA, 0x3C, 0x04, + 0x33, 0x7F, 0x69, 0x94, 0x5C, 0x4D, 0x44, 0xC0, + 0x85, 0xF1, 0xF4, 0x78, 0x96, 0x96, 0x36, 0x1E, + 0x3C, 0x97, 0x77, 0x4A, 0x93, 0x5F, 0x86, 0x0D, + 0x67, 0x46, 0x86, 0xDC, 0xBA, 0x3D, 0x45, 0xEC, + 0xD8, 0x63, 0x9A, 0x64, 0xAE, 0xA0, 0x62, 0x1B + }, + { + 0xB4, 0xD3, 0x15, 0x87, 0xB9, 0x2B, 0x53, 0x61, + 0xCD, 0xC2, 0xD3, 0xC4, 0x10, 0x86, 0xC1, 0x55, + 0x3E, 0x7B, 0x55, 0xA1, 0xF6, 0x1E, 0x94, 0xD2, + 0xBC, 0x30, 0xBC, 0x25, 0x1D, 0xAF, 0x8A, 0x5E, + 0xBF, 0xC5, 0x07, 0x09, 0xCC, 0x04, 0xCB, 0xAF, + 0x4B, 0x3B, 0x4D, 0xA2, 0xD2, 0x6B, 0x81, 0x23, + 0x8F, 0xBA, 0x71, 0x8F, 0xA9, 0x17, 0x59, 0xB8, + 0x0B, 0xD3, 0x10, 0x3A, 0xEC, 0x11, 0xE0, 0x6F + }, + { + 0xAA, 0xF6, 0x12, 0x7F, 0x00, 0xA0, 0x3D, 0x96, + 0x40, 0x6B, 0x9F, 0xB4, 0xAC, 0x70, 0x16, 0x0D, + 0xB5, 0x22, 0x42, 0x9B, 0x5C, 0xD9, 0x4E, 0x7F, + 0xA0, 0x30, 0x3A, 0x74, 0x94, 0x78, 0xFE, 0x31, + 0x89, 0xC8, 0xEA, 0x23, 0x93, 0x0A, 0x66, 0x25, + 0x2A, 0x80, 0x26, 0x74, 0xDC, 0xAF, 0x77, 0x00, + 0x46, 0x82, 0x0D, 0xD9, 0x64, 0xC6, 0x6F, 0x0F, + 0x54, 0x75, 0x1A, 0x72, 0xF9, 0x7D, 0x9C, 0x35 + }, + { + 0x2C, 0x30, 0xD4, 0x8D, 0xF9, 0x98, 0x4E, 0x02, + 0xF7, 0x5A, 0x94, 0x54, 0x92, 0x17, 0x18, 0x4D, + 0xD0, 0x2A, 0xAD, 0x3B, 0x57, 0x68, 0x3D, 0x09, + 0xB5, 0xA8, 0xC2, 0xEF, 0x53, 0xA9, 0x6A, 0xFB, + 0x73, 0xFE, 0xB6, 0xF9, 0x14, 0xE2, 0xD8, 0x15, + 0xBB, 0x3B, 0x08, 0x65, 0x43, 0x32, 0xFC, 0xFE, + 0x79, 0xF8, 0x0E, 0xC5, 0xF0, 0x51, 0xDA, 0x10, + 0xD7, 0x21, 0x41, 0x3D, 0xDD, 0xE8, 0xFA, 0x60 + }, + { + 0x92, 0xE2, 0xC5, 0xF7, 0x5D, 0x0C, 0xEA, 0xFC, + 0x81, 0x8F, 0xA7, 0x93, 0x59, 0x39, 0xE4, 0x8B, + 0x91, 0x59, 0x41, 0xEF, 0x73, 0x4D, 0x75, 0x27, + 0x0E, 0xB3, 0x21, 0xBA, 0x20, 0x80, 0xEF, 0x6D, + 0x25, 0x5E, 0x90, 0xEF, 0x96, 0xC6, 0x4C, 0xFF, + 0x1D, 0x8C, 0x18, 0xF3, 0x3C, 0x2E, 0xAB, 0x10, + 0x7F, 0xEF, 0x53, 0xE0, 0xD8, 0xBB, 0x16, 0x05, + 0x16, 0x80, 0x74, 0x80, 0xFC, 0xBA, 0x53, 0x73 + }, + { + 0x6E, 0x03, 0xA9, 0x1E, 0x20, 0x44, 0x46, 0x27, + 0xE3, 0xD2, 0xE2, 0x22, 0x26, 0xCF, 0x47, 0x00, + 0x26, 0x69, 0x44, 0x34, 0xED, 0x64, 0x79, 0x82, + 0x8C, 0xB6, 0xDC, 0x8F, 0x27, 0x96, 0x0A, 0xEE, + 0xE2, 0xF4, 0xAB, 0x87, 0x2A, 0x5C, 0xA2, 0xF7, + 0xF6, 0x52, 0xF7, 0xDC, 0x77, 0xD5, 0xF9, 0x6D, + 0x85, 0x82, 0x8B, 0x8F, 0x9C, 0x2D, 0x6C, 0x23, + 0x9E, 0x79, 0x77, 0x24, 0xA1, 0x31, 0x31, 0xB1 + }, + { + 0xBA, 0x43, 0x2D, 0xB0, 0xA3, 0x31, 0xBB, 0x8C, + 0x39, 0xB1, 0x7B, 0xEE, 0x34, 0x46, 0x2B, 0x26, + 0xDD, 0xB7, 0xAD, 0x91, 0xB6, 0xC7, 0x5A, 0xEC, + 0x27, 0x65, 0xFB, 0xAE, 0x3A, 0x0E, 0x60, 0xEC, + 0x54, 0x6D, 0x45, 0xF8, 0xE5, 0x84, 0x37, 0xB9, + 0xD7, 0x7C, 0x3D, 0x2E, 0x8D, 0x7C, 0xE0, 0x69, + 0x73, 0x15, 0x66, 0x51, 0xD4, 0x08, 0x22, 0x2A, + 0xA2, 0x90, 0xCB, 0x58, 0xCA, 0xBC, 0x0A, 0xE5 + }, + { + 0x83, 0xA0, 0x1E, 0x23, 0xAB, 0x27, 0x7B, 0x1F, + 0xC2, 0x8C, 0xD8, 0xBB, 0x8D, 0xA7, 0xE9, 0x4C, + 0x70, 0xF1, 0xDE, 0xE3, 0x2D, 0x19, 0x55, 0xCE, + 0xE2, 0x50, 0xEE, 0x58, 0x41, 0x9A, 0x1F, 0xEE, + 0x10, 0xA8, 0x99, 0x17, 0x97, 0xCE, 0x3D, 0x20, + 0x93, 0x80, 0xCA, 0x9F, 0x98, 0x93, 0x39, 0xE2, + 0xD8, 0xA8, 0x1C, 0x67, 0xD7, 0x37, 0xD8, 0x28, + 0x8C, 0x7F, 0xAE, 0x46, 0x02, 0x83, 0x4A, 0x8B + }, + { + 0x0E, 0xA3, 0x21, 0x72, 0xCC, 0x19, 0x1D, 0xFC, + 0x13, 0x1C, 0xD8, 0x8A, 0xA0, 0x3F, 0xF4, 0x18, + 0x5C, 0x0B, 0xFA, 0x7B, 0x19, 0x11, 0x12, 0x19, + 0xEE, 0xCB, 0x45, 0xB0, 0xFF, 0x60, 0x4D, 0x3E, + 0xDB, 0x00, 0x55, 0x0A, 0xBB, 0xA1, 0x11, 0x52, + 0x2B, 0x77, 0xAE, 0x61, 0xC9, 0xA8, 0xD6, 0xE9, + 0x4F, 0xCA, 0x9D, 0x96, 0xC3, 0x8D, 0x6B, 0x7C, + 0xCE, 0x27, 0x52, 0xF0, 0xD0, 0xC3, 0x7E, 0x78 + }, + { + 0x54, 0xAD, 0xD6, 0x55, 0x2B, 0x08, 0x85, 0x8B, + 0x23, 0xD6, 0x64, 0x5F, 0x6C, 0xE7, 0x9E, 0x92, + 0xF3, 0x8B, 0x66, 0xAE, 0x91, 0x86, 0x77, 0xE6, + 0xD9, 0x1F, 0x71, 0x87, 0xC4, 0x16, 0x05, 0x24, + 0xDF, 0xA8, 0xD0, 0x1F, 0x00, 0xEA, 0x93, 0xDD, + 0x29, 0x9F, 0x3C, 0xC4, 0x09, 0x01, 0xBD, 0x33, + 0x27, 0xA0, 0xF1, 0x8C, 0xCD, 0x7B, 0x6B, 0x8E, + 0x4E, 0x47, 0xCD, 0x28, 0xCF, 0x83, 0x8F, 0xAB + }, + { + 0xEF, 0x84, 0x74, 0x6D, 0xC2, 0x01, 0x56, 0xB6, + 0x6B, 0xA5, 0xC7, 0x8A, 0x50, 0x83, 0x0A, 0xBD, + 0x2A, 0xEF, 0x90, 0xE6, 0x67, 0xB9, 0x7E, 0xB5, + 0x22, 0x91, 0xBC, 0x86, 0x9D, 0x8A, 0xA2, 0x45, + 0x59, 0xA1, 0x42, 0xC6, 0x8F, 0xEA, 0x2E, 0xF3, + 0x2A, 0xF2, 0x2D, 0xFC, 0xEA, 0x4C, 0x90, 0xB3, + 0xD4, 0x90, 0x8C, 0xC9, 0xEA, 0x5C, 0xFC, 0x4E, + 0x91, 0xBF, 0x11, 0xCE, 0x6A, 0x7E, 0x57, 0x61 + }, + { + 0x5A, 0x1B, 0xF3, 0x81, 0xA0, 0x41, 0x19, 0xF9, + 0x42, 0xE4, 0x63, 0xAB, 0xA2, 0xB1, 0x64, 0x38, + 0x82, 0x46, 0x8A, 0xEC, 0xC1, 0xB1, 0xAA, 0x1E, + 0x7B, 0xCA, 0xAB, 0x3B, 0x47, 0x8F, 0xC5, 0xF0, + 0x56, 0xF1, 0x0D, 0xA9, 0x03, 0x7D, 0x40, 0xFA, + 0x7F, 0x55, 0x70, 0x8E, 0x10, 0x3B, 0xDA, 0x96, + 0x5E, 0x92, 0x0C, 0xF6, 0x7C, 0xE3, 0xAD, 0xF7, + 0xE2, 0x00, 0xE8, 0x61, 0x01, 0x4D, 0xEC, 0xC6 + }, + { + 0xAC, 0xF7, 0x8A, 0xA3, 0x28, 0x45, 0x96, 0xF3, + 0x30, 0xB7, 0xE8, 0x47, 0x51, 0xB9, 0x4C, 0x31, + 0x4C, 0xD8, 0x36, 0x36, 0x27, 0xBA, 0x99, 0x78, + 0x81, 0x30, 0x85, 0x78, 0x87, 0x37, 0x59, 0x89, + 0x5D, 0x13, 0xDF, 0xFF, 0xA5, 0xE5, 0x74, 0x50, + 0x13, 0x61, 0xF0, 0x43, 0xC7, 0x4F, 0x57, 0xD2, + 0xD0, 0xF1, 0x5C, 0x7A, 0x41, 0xC7, 0xC4, 0x5E, + 0x3C, 0x09, 0xAD, 0x89, 0xD6, 0x99, 0xA9, 0x77 + }, + { + 0x18, 0xB3, 0xE9, 0x04, 0x38, 0x44, 0xD4, 0xF3, + 0xA2, 0xD0, 0x21, 0xF5, 0x4C, 0x38, 0xFA, 0xCC, + 0x36, 0x4F, 0x84, 0xBA, 0x10, 0x58, 0xF2, 0x10, + 0x09, 0xFC, 0x37, 0x1D, 0x2E, 0x4F, 0x38, 0xC7, + 0x27, 0x51, 0x8A, 0xAB, 0xA6, 0xA2, 0x9E, 0x0F, + 0xDA, 0xE6, 0xE7, 0x60, 0xA4, 0xF1, 0xA6, 0xD7, + 0x58, 0xEB, 0xE4, 0x2C, 0x2A, 0xFC, 0x9D, 0x2C, + 0xDC, 0x6D, 0xD5, 0x80, 0x77, 0x8C, 0x4B, 0x32 + }, + { + 0x18, 0x96, 0xB2, 0x31, 0x70, 0x33, 0xCF, 0x31, + 0x04, 0x68, 0x73, 0xD8, 0x7F, 0x26, 0xE6, 0xA4, + 0x2A, 0x9D, 0x77, 0x0B, 0xBA, 0xF6, 0xE0, 0x62, + 0xDF, 0x11, 0xF9, 0xB4, 0xA0, 0xEA, 0xB2, 0x75, + 0xAA, 0xB1, 0x2C, 0xAA, 0xC2, 0xD3, 0xF5, 0x29, + 0xEB, 0x20, 0xD0, 0x70, 0xFD, 0x84, 0x4D, 0x86, + 0xD0, 0xA5, 0x71, 0xCD, 0xF6, 0x28, 0x5F, 0x80, + 0xE2, 0x30, 0x8B, 0xB8, 0x2C, 0x6C, 0x5B, 0x3B + }, + { + 0x8C, 0x3D, 0xC4, 0x01, 0x94, 0xAA, 0x02, 0x1F, + 0x3C, 0x4A, 0x1F, 0x9A, 0x05, 0x5E, 0x4D, 0x41, + 0x9E, 0xB3, 0xA2, 0x6D, 0x4C, 0x2F, 0x1A, 0x8C, + 0x7E, 0x18, 0x8B, 0x73, 0x48, 0x13, 0x40, 0x80, + 0xB6, 0x3F, 0x6E, 0x57, 0x0A, 0xD1, 0x1C, 0x28, + 0x78, 0x66, 0x53, 0x55, 0x41, 0x9C, 0x10, 0x20, + 0xDE, 0x4B, 0x65, 0x5E, 0x7A, 0x6C, 0x2C, 0xCD, + 0xE9, 0x07, 0x2C, 0xD4, 0x27, 0xFE, 0x8C, 0x4E + }, + { + 0x70, 0xAE, 0x04, 0x30, 0xD5, 0x45, 0xEC, 0x42, + 0x7F, 0x85, 0x41, 0x21, 0x1D, 0x4F, 0xE0, 0x42, + 0xB9, 0x82, 0x3A, 0xCE, 0xC0, 0x4B, 0x15, 0xC9, + 0x0B, 0x7F, 0x4B, 0x8B, 0xDD, 0x3D, 0xC7, 0x85, + 0x19, 0x90, 0xF3, 0x70, 0xE7, 0x14, 0x16, 0x75, + 0x10, 0x66, 0x49, 0xD3, 0x91, 0x51, 0x09, 0x03, + 0x18, 0x23, 0x1E, 0x4D, 0xED, 0x51, 0x22, 0x5D, + 0x9A, 0x6F, 0xA6, 0xC4, 0x24, 0x69, 0x5D, 0xE2 + }, + { + 0x07, 0x33, 0x6C, 0x42, 0xBD, 0x51, 0x49, 0x0E, + 0xF8, 0x4D, 0xFB, 0xDF, 0xAB, 0x74, 0x66, 0xF6, + 0xB6, 0x39, 0x99, 0xA5, 0xC0, 0x88, 0x72, 0xDF, + 0xED, 0xA0, 0x20, 0x6F, 0xDA, 0x80, 0xB9, 0xA6, + 0x2D, 0xE7, 0x28, 0xE3, 0xE3, 0xC3, 0xFD, 0x6B, + 0x7D, 0x21, 0xA4, 0x38, 0xAA, 0xD1, 0xB8, 0xDD, + 0x22, 0x38, 0x63, 0xC0, 0xD2, 0x6A, 0xCA, 0x27, + 0x79, 0x01, 0x74, 0xD9, 0xD4, 0x42, 0xA6, 0x4C + }, + { + 0x79, 0x26, 0x70, 0x88, 0x59, 0xE6, 0xE2, 0xAB, + 0x68, 0xF6, 0x04, 0xDA, 0x69, 0xA9, 0xFB, 0x50, + 0x87, 0xBB, 0x33, 0xF4, 0xE8, 0xD8, 0x95, 0x73, + 0x0E, 0x30, 0x1A, 0xB2, 0xD7, 0xDF, 0x74, 0x8B, + 0x67, 0xDF, 0x0B, 0x6B, 0x86, 0x22, 0xE5, 0x2D, + 0xD5, 0x7D, 0x8D, 0x3A, 0xD8, 0x7D, 0x58, 0x20, + 0xD4, 0xEC, 0xFD, 0x24, 0x17, 0x8B, 0x2D, 0x2B, + 0x78, 0xD6, 0x4F, 0x4F, 0xBD, 0x38, 0x75, 0x82 + }, + { + 0x92, 0x80, 0xF4, 0xD1, 0x15, 0x70, 0x32, 0xAB, + 0x31, 0x5C, 0x10, 0x0D, 0x63, 0x62, 0x83, 0xFB, + 0xF4, 0xFB, 0xA2, 0xFB, 0xAD, 0x0F, 0x8B, 0xC0, + 0x20, 0x72, 0x1D, 0x76, 0xBC, 0x1C, 0x89, 0x73, + 0xCE, 0xD2, 0x88, 0x71, 0xCC, 0x90, 0x7D, 0xAB, + 0x60, 0xE5, 0x97, 0x56, 0x98, 0x7B, 0x0E, 0x0F, + 0x86, 0x7F, 0xA2, 0xFE, 0x9D, 0x90, 0x41, 0xF2, + 0xC9, 0x61, 0x80, 0x74, 0xE4, 0x4F, 0xE5, 0xE9 + }, + { + 0x55, 0x30, 0xC2, 0xD5, 0x9F, 0x14, 0x48, 0x72, + 0xE9, 0x87, 0xE4, 0xE2, 0x58, 0xA7, 0xD8, 0xC3, + 0x8C, 0xE8, 0x44, 0xE2, 0xCC, 0x2E, 0xED, 0x94, + 0x0F, 0xFC, 0x68, 0x3B, 0x49, 0x88, 0x15, 0xE5, + 0x3A, 0xDB, 0x1F, 0xAA, 0xF5, 0x68, 0x94, 0x61, + 0x22, 0x80, 0x5A, 0xC3, 0xB8, 0xE2, 0xFE, 0xD4, + 0x35, 0xFE, 0xD6, 0x16, 0x2E, 0x76, 0xF5, 0x64, + 0xE5, 0x86, 0xBA, 0x46, 0x44, 0x24, 0xE8, 0x85 + }, + { + 0xDA, 0x85, 0x0A, 0x2F, 0x54, 0xE9, 0x44, 0x89, + 0x17, 0xD0, 0xDC, 0xAA, 0x63, 0x93, 0x7B, 0x95, + 0xA4, 0xDA, 0x1E, 0xAC, 0x8A, 0xF4, 0xDD, 0xF2, + 0x11, 0x3E, 0x5C, 0x8B, 0x0D, 0x4D, 0xB2, 0x66, + 0x9A, 0xF3, 0xC2, 0xAC, 0xB0, 0x80, 0x3D, 0x05, + 0x32, 0x3F, 0x3E, 0xC5, 0x5A, 0xBD, 0x33, 0xBD, + 0xF9, 0xB2, 0xBE, 0x89, 0x0E, 0xE7, 0x9E, 0x7F, + 0x3F, 0xCE, 0x4E, 0x19, 0x86, 0x96, 0xA7, 0xA3 + }, + { + 0xF1, 0x60, 0x95, 0xDD, 0x9F, 0x1E, 0xEB, 0x77, + 0xD5, 0xB9, 0x2F, 0x4B, 0x1F, 0xAC, 0x3A, 0x2C, + 0x5D, 0xA6, 0xAE, 0x5D, 0x0A, 0xB3, 0xF2, 0x54, + 0xE2, 0xA7, 0xFE, 0x52, 0x67, 0x24, 0x11, 0xD0, + 0x1C, 0xFA, 0x6A, 0xC0, 0x5B, 0xF3, 0x9E, 0xF6, + 0x5F, 0x4B, 0x22, 0x26, 0x4B, 0x41, 0xC3, 0xF3, + 0x63, 0x56, 0x3A, 0xBF, 0x0E, 0x92, 0x42, 0x90, + 0xC1, 0xC6, 0x80, 0xB1, 0x8A, 0xA6, 0x5B, 0x44 + }, + { + 0x76, 0xD0, 0x0A, 0x09, 0xC5, 0xBD, 0xD3, 0x9E, + 0xD3, 0x28, 0x71, 0x72, 0x2C, 0xFA, 0x00, 0x47, + 0x67, 0x4B, 0xEC, 0x8D, 0x35, 0x17, 0x5A, 0xF9, + 0x0D, 0x7A, 0xE9, 0x10, 0x74, 0x40, 0xA2, 0xA0, + 0x63, 0x88, 0x56, 0xD8, 0x38, 0x4C, 0x81, 0x7D, + 0x77, 0x2A, 0x4A, 0x59, 0x7A, 0x89, 0x55, 0x49, + 0xC8, 0x48, 0x66, 0x37, 0x56, 0x31, 0xCB, 0xA0, + 0x42, 0xF0, 0xEF, 0x6F, 0xFE, 0xB8, 0x9D, 0x44 + }, + { + 0xA6, 0x51, 0x13, 0x7B, 0x2C, 0x47, 0xFB, 0x79, + 0x51, 0xE7, 0xBD, 0xA7, 0x15, 0x43, 0xA6, 0xEB, + 0xC6, 0x24, 0x2A, 0xCA, 0xB4, 0x34, 0x7D, 0x38, + 0x8B, 0xE8, 0x35, 0x0F, 0x0C, 0x3F, 0xA3, 0xDF, + 0x8D, 0x95, 0x2C, 0x7C, 0x8A, 0x3D, 0xAF, 0x01, + 0xE0, 0x6C, 0x1D, 0xA6, 0x94, 0x96, 0xBB, 0xA8, + 0xDE, 0x62, 0xD8, 0x6B, 0x50, 0x93, 0x25, 0x6F, + 0x77, 0xA1, 0x87, 0xB5, 0x3D, 0xB0, 0x39, 0x88 + }, + { + 0xF3, 0x2F, 0x15, 0x0C, 0x2D, 0x67, 0xC0, 0xC4, + 0x37, 0x40, 0x1B, 0x70, 0xF6, 0x0B, 0x38, 0xF0, + 0xA3, 0xA4, 0x70, 0x59, 0x03, 0x3E, 0x75, 0x05, + 0xE6, 0x9A, 0x1D, 0x30, 0x12, 0x96, 0x03, 0x0B, + 0xC9, 0xB2, 0x95, 0x19, 0xC7, 0xF8, 0xB7, 0xD5, + 0x9A, 0x71, 0xFA, 0xB9, 0x05, 0x57, 0xDC, 0x3D, + 0xC8, 0x23, 0xFA, 0xC9, 0x5B, 0x9E, 0x85, 0xE6, + 0x52, 0x52, 0x8C, 0xBF, 0xB0, 0x1B, 0x11, 0x78 + }, + { + 0x27, 0x02, 0x56, 0x61, 0x36, 0xC4, 0x92, 0xF4, + 0x10, 0x89, 0xB0, 0x60, 0x10, 0x84, 0x60, 0xFA, + 0x30, 0x22, 0xC9, 0xC2, 0x5D, 0x34, 0x3B, 0xCB, + 0xD8, 0xAF, 0x2A, 0xF1, 0x9C, 0x17, 0xEF, 0x4C, + 0xA9, 0xF2, 0x22, 0x4F, 0xE7, 0xC4, 0x70, 0x0A, + 0x10, 0x19, 0x8E, 0xE5, 0x24, 0x8F, 0x30, 0x0B, + 0x54, 0x8E, 0xBF, 0x5C, 0x8E, 0x71, 0x16, 0x32, + 0x0C, 0xC8, 0x93, 0xFF, 0x7E, 0x23, 0x1F, 0xFB + }, + { + 0xFF, 0xE6, 0x87, 0x9F, 0x46, 0xB6, 0x29, 0x2B, + 0x21, 0x96, 0x97, 0x2E, 0x3F, 0xDF, 0x4F, 0xE9, + 0xEA, 0x4A, 0x81, 0x6D, 0x18, 0x07, 0xA3, 0x1C, + 0xAE, 0xAD, 0x6A, 0xAC, 0x5F, 0x06, 0x3C, 0x8F, + 0xE8, 0x77, 0x79, 0x75, 0x59, 0xA7, 0x59, 0xA0, + 0x0F, 0x8B, 0xA8, 0xF6, 0x68, 0xD8, 0x96, 0x8F, + 0xB3, 0x1D, 0x8A, 0x3B, 0x84, 0x57, 0x35, 0x90, + 0x2C, 0x5E, 0x42, 0xE2, 0x89, 0xEE, 0x0B, 0x62 + }, + { + 0x14, 0x48, 0x84, 0x28, 0x68, 0x22, 0xC2, 0x51, + 0x2D, 0x61, 0xB0, 0x46, 0xE6, 0x74, 0xD8, 0x6B, + 0x26, 0x4E, 0x9C, 0xC6, 0x89, 0x3E, 0xFF, 0x36, + 0x73, 0x11, 0x24, 0xF5, 0x9D, 0x1A, 0x82, 0x00, + 0x1E, 0x63, 0xF3, 0xE8, 0x05, 0x1C, 0xFE, 0x52, + 0xE7, 0x59, 0x7E, 0x28, 0x73, 0x8E, 0x3C, 0x3A, + 0x70, 0xF1, 0xBE, 0xD9, 0x68, 0x0E, 0x2C, 0x0E, + 0xF3, 0x72, 0x8B, 0x10, 0xA5, 0x6E, 0xD9, 0x87 + }, + { + 0x17, 0xC3, 0xF1, 0x46, 0xEE, 0x8D, 0xEC, 0x3B, + 0xAF, 0xCB, 0x51, 0xC0, 0xDA, 0x37, 0xF1, 0x78, + 0x71, 0xF2, 0x34, 0xC4, 0xA0, 0xFB, 0x7F, 0xA6, + 0xD0, 0x70, 0x7A, 0x54, 0x3E, 0x3C, 0xBF, 0x3A, + 0xDB, 0x81, 0xE3, 0x0C, 0x1E, 0x0A, 0xE9, 0xE1, + 0xAC, 0xE7, 0x22, 0x3B, 0xDA, 0x99, 0xBD, 0x59, + 0x19, 0xA3, 0xCF, 0xCC, 0x92, 0xC6, 0xA7, 0x55, + 0xE4, 0x56, 0xF0, 0x93, 0x82, 0x3B, 0xD3, 0x3E + }, + { + 0x1B, 0x83, 0x7A, 0xF2, 0x33, 0xA8, 0xA6, 0x8B, + 0xE7, 0x09, 0x52, 0xF7, 0x83, 0xC4, 0x96, 0x1A, + 0x81, 0x52, 0xD1, 0xE0, 0xB0, 0xFA, 0x32, 0x5F, + 0xF0, 0x86, 0xEA, 0x5B, 0x5F, 0x13, 0x12, 0xB8, + 0x9C, 0x42, 0xE0, 0x1B, 0x8C, 0x3A, 0x47, 0x7C, + 0xB5, 0x40, 0xC0, 0x6B, 0x2F, 0x37, 0xEE, 0x0E, + 0x39, 0x24, 0xD7, 0x45, 0xB4, 0xFF, 0x5C, 0x6A, + 0xF7, 0xD6, 0x1E, 0x0E, 0x37, 0xAC, 0x19, 0x31 + }, + { + 0x78, 0x97, 0x88, 0x0C, 0x1E, 0xB0, 0x0F, 0xD2, + 0x56, 0x7A, 0xE8, 0xA5, 0x9E, 0x64, 0x82, 0xAF, + 0xE1, 0x73, 0x49, 0xCF, 0x93, 0x92, 0x4A, 0x91, + 0x5F, 0x8C, 0x59, 0x26, 0x93, 0xD4, 0x52, 0x07, + 0x55, 0x19, 0x68, 0x9D, 0xFC, 0xD2, 0x93, 0xE3, + 0x76, 0x89, 0x7B, 0x3B, 0x0E, 0x03, 0x6F, 0x11, + 0x4F, 0xE8, 0x1E, 0xBC, 0xB3, 0x15, 0x36, 0x71, + 0xBD, 0x23, 0xBC, 0x2B, 0xED, 0x46, 0xF9, 0xC2 + }, + { + 0xCA, 0x7B, 0x6C, 0x77, 0x5D, 0x20, 0x1E, 0x5B, + 0x5A, 0x77, 0x22, 0x61, 0xDE, 0x52, 0x8E, 0x47, + 0x5F, 0x4B, 0xDE, 0x51, 0x76, 0x60, 0x52, 0x9F, + 0x41, 0xBE, 0xEB, 0x15, 0x78, 0xB2, 0x4B, 0xCB, + 0x94, 0xB9, 0x41, 0x0F, 0x9B, 0xF3, 0x36, 0xC1, + 0x09, 0xF9, 0xD4, 0x70, 0x93, 0xA1, 0x0B, 0xA6, + 0xDE, 0xBE, 0x50, 0x43, 0x80, 0xD9, 0xD1, 0x50, + 0x73, 0xBD, 0xD1, 0x11, 0xC8, 0xD1, 0x29, 0xFA + }, + { + 0x57, 0x18, 0xE0, 0xD4, 0x5D, 0xEB, 0xC3, 0x00, + 0x2D, 0x52, 0xB2, 0x2C, 0x52, 0x73, 0x29, 0xAE, + 0x5E, 0xBF, 0x27, 0xE8, 0xFA, 0x9C, 0x8F, 0xEA, + 0xB4, 0x6C, 0x40, 0xBC, 0x64, 0x22, 0xCA, 0x03, + 0x35, 0x30, 0x4C, 0xF9, 0xE7, 0xF1, 0x41, 0xDE, + 0x7F, 0xA6, 0xAD, 0xB6, 0x78, 0x9B, 0xDB, 0xF3, + 0x8D, 0x14, 0xDA, 0xBA, 0x3E, 0x62, 0x97, 0xD2, + 0x5B, 0xF1, 0x7D, 0xE1, 0x70, 0xD6, 0xE3, 0xC8 + }, + { + 0x48, 0xD0, 0xED, 0x24, 0x9F, 0x90, 0x28, 0x41, + 0x99, 0x7C, 0x25, 0x5D, 0xAF, 0x99, 0x08, 0x9C, + 0x9A, 0x31, 0x24, 0x69, 0x8B, 0x16, 0x4A, 0x30, + 0x28, 0x33, 0x0F, 0xDD, 0x4C, 0xEE, 0x41, 0xE1, + 0x68, 0x3F, 0xA4, 0xD9, 0xDC, 0x66, 0xB2, 0xA7, + 0x9C, 0x8A, 0xA4, 0xC8, 0x28, 0x4E, 0x27, 0xBE, + 0xE2, 0xA4, 0x28, 0xA6, 0x71, 0x9D, 0x6E, 0xC6, + 0x55, 0xED, 0x76, 0x9D, 0xCB, 0x62, 0x4E, 0x24 + }, + { + 0x79, 0x4E, 0x0B, 0x64, 0xAC, 0xE1, 0xFE, 0x5A, + 0xE3, 0x79, 0x93, 0x70, 0x68, 0xD8, 0x2D, 0xF0, + 0x48, 0x68, 0x61, 0x6C, 0xAE, 0x0C, 0x17, 0xD3, + 0x05, 0x72, 0xC2, 0x02, 0x4E, 0x77, 0x48, 0x94, + 0xE0, 0x66, 0x8C, 0x47, 0x2D, 0x62, 0x3C, 0x90, + 0x3C, 0xC5, 0x88, 0x5F, 0x17, 0x84, 0x94, 0x51, + 0x10, 0x32, 0x9E, 0xB4, 0x98, 0xA8, 0x95, 0xA9, + 0xE5, 0x9A, 0x75, 0xE5, 0x27, 0x15, 0x8A, 0x5C + }, + { + 0x21, 0x79, 0xAA, 0x82, 0x0E, 0x03, 0xFA, 0x33, + 0xD9, 0xBD, 0xE5, 0x56, 0x8C, 0x26, 0x2E, 0x2D, + 0x34, 0x17, 0xA4, 0x02, 0xE0, 0x7A, 0x59, 0x1F, + 0x9D, 0x55, 0x70, 0x68, 0x2D, 0xB5, 0xF9, 0xBB, + 0xA4, 0xBB, 0x9D, 0x5A, 0x82, 0xEE, 0x5E, 0xFD, + 0xB4, 0xF6, 0x5B, 0xBB, 0xFE, 0xEE, 0x2F, 0x4A, + 0xB9, 0xE4, 0x6C, 0xF2, 0xCE, 0x7E, 0x3B, 0x05, + 0x43, 0x27, 0xA7, 0x18, 0xD3, 0xF1, 0x08, 0x06 + }, + { + 0xB0, 0xA4, 0x8C, 0x6A, 0xDA, 0x54, 0x87, 0x25, + 0x79, 0x9B, 0x59, 0x86, 0xBA, 0xB4, 0x32, 0x69, + 0x79, 0x60, 0x92, 0x24, 0xD8, 0x97, 0x18, 0x4B, + 0x89, 0x97, 0x10, 0x4E, 0x0C, 0x6A, 0x24, 0xB3, + 0xAB, 0xE5, 0x62, 0x16, 0x54, 0x22, 0xA4, 0x5D, + 0x8A, 0xC8, 0x19, 0xB9, 0x9D, 0x37, 0x56, 0xEB, + 0xBB, 0x64, 0xF8, 0x43, 0xE3, 0xE0, 0x93, 0x4D, + 0xEC, 0x48, 0x7A, 0xED, 0x12, 0x13, 0x72, 0x79 + }, + { + 0x84, 0x8D, 0x7F, 0x2E, 0xAD, 0x41, 0x29, 0x1D, + 0x05, 0x38, 0x68, 0x0C, 0x64, 0x9D, 0x07, 0x89, + 0x7E, 0x45, 0xC7, 0x0A, 0x0A, 0xA4, 0xF9, 0x35, + 0x3F, 0x82, 0xC3, 0xF6, 0xFB, 0xB8, 0xE8, 0x48, + 0x9C, 0x75, 0x3E, 0x90, 0xDB, 0xE8, 0x89, 0x00, + 0x41, 0xA1, 0xAE, 0xEF, 0x84, 0xCD, 0x31, 0x36, + 0x43, 0x4F, 0x53, 0x0E, 0x9D, 0xD9, 0xC2, 0x3F, + 0xA5, 0x4F, 0xE1, 0x24, 0xEA, 0xFB, 0x72, 0xAD + }, + { + 0x0E, 0xD1, 0x46, 0x26, 0xEE, 0x6D, 0x0C, 0x8E, + 0xD3, 0xF0, 0xC2, 0x00, 0xC1, 0x29, 0x85, 0x0F, + 0xFF, 0x76, 0x31, 0x8F, 0xFF, 0xA1, 0xDD, 0xD7, + 0xDD, 0x56, 0x3A, 0x01, 0xB7, 0x77, 0x97, 0x06, + 0x86, 0x2B, 0x23, 0x99, 0x59, 0xB6, 0x15, 0xAE, + 0x2E, 0xBE, 0x27, 0xC4, 0x50, 0x37, 0xE6, 0xFF, + 0xAF, 0x99, 0x14, 0xDA, 0x8F, 0xF2, 0x77, 0x2B, + 0xA5, 0xEE, 0x08, 0x11, 0xCD, 0x9E, 0xD5, 0x32 + }, + { + 0x52, 0x03, 0xC0, 0x76, 0x38, 0xC4, 0xB6, 0x5F, + 0x78, 0x43, 0x1E, 0x8B, 0x02, 0xE2, 0x0F, 0x6D, + 0x68, 0x3F, 0x19, 0xFA, 0x8F, 0x83, 0xB5, 0x13, + 0x4C, 0xD0, 0xF4, 0xE4, 0x68, 0xC9, 0x7E, 0xAC, + 0xB5, 0x26, 0x7C, 0x7D, 0x3E, 0xAB, 0x58, 0x3C, + 0xCA, 0xAC, 0xD0, 0xDB, 0xA4, 0xD5, 0x8A, 0xCE, + 0x52, 0x19, 0x3A, 0x51, 0x78, 0xA7, 0xB1, 0x2D, + 0x27, 0x95, 0xF5, 0xFD, 0xE8, 0xA3, 0x7B, 0xB9 + }, + { + 0x48, 0xBE, 0x43, 0xD5, 0xE0, 0x04, 0x36, 0x88, + 0xDF, 0x35, 0x32, 0xF7, 0x12, 0x1A, 0xFF, 0xFA, + 0x16, 0x7D, 0xAB, 0xE4, 0xA4, 0x84, 0xFB, 0x75, + 0xA0, 0x3A, 0xF3, 0x04, 0xA5, 0xC6, 0xF8, 0x25, + 0xF3, 0x6C, 0xEC, 0xCB, 0xBB, 0xC0, 0x75, 0xEE, + 0xF3, 0x20, 0xC4, 0xCD, 0x8D, 0x7E, 0xF8, 0xCB, + 0x49, 0xE6, 0xDD, 0x59, 0x73, 0x37, 0x9E, 0xEC, + 0x4C, 0x23, 0x3C, 0x45, 0x43, 0xD1, 0x32, 0xCE + }, + { + 0xB5, 0x46, 0x4E, 0x6A, 0xBA, 0xF5, 0xD3, 0xD4, + 0x08, 0x3D, 0x1D, 0x7D, 0x2A, 0x8B, 0x0B, 0xAB, + 0x78, 0xB6, 0x17, 0x09, 0x50, 0x0B, 0xBF, 0x77, + 0x82, 0x3F, 0x60, 0x2D, 0x57, 0xD5, 0x13, 0xCA, + 0x9E, 0x9F, 0xFF, 0x65, 0xEF, 0xAA, 0x89, 0x9C, + 0xFE, 0x7B, 0xF8, 0x8A, 0x01, 0x88, 0x82, 0x9C, + 0x24, 0xE4, 0x98, 0xAD, 0x00, 0x23, 0x5A, 0xBE, + 0x8E, 0xEF, 0xA7, 0x19, 0xFA, 0x6A, 0xE6, 0xF6 + }, + { + 0xAF, 0xE5, 0xE5, 0xE8, 0x3F, 0x19, 0xAD, 0xAD, + 0x9E, 0x95, 0x90, 0x3E, 0xA9, 0xB2, 0x98, 0x10, + 0x7D, 0x37, 0xDD, 0x38, 0x63, 0x2C, 0x95, 0x90, + 0xBB, 0xFF, 0xC6, 0x24, 0xD4, 0xDE, 0x95, 0x8C, + 0xB6, 0xB6, 0x1A, 0xF0, 0x80, 0xF0, 0x37, 0xAD, + 0x17, 0xD0, 0x35, 0xB6, 0xBF, 0x58, 0xF7, 0x80, + 0xFA, 0xDF, 0x70, 0xF3, 0xC9, 0x59, 0x66, 0x8A, + 0x1B, 0x47, 0x21, 0x98, 0xA5, 0x9A, 0x8A, 0x00 + }, + { + 0xEF, 0xA2, 0xC7, 0xC8, 0x02, 0xE2, 0x10, 0xD2, + 0xD8, 0x0F, 0xB3, 0x50, 0xB3, 0xC2, 0xCB, 0x31, + 0x56, 0x13, 0x18, 0x11, 0xE7, 0x18, 0xEE, 0xE5, + 0xC9, 0xC6, 0x64, 0x0F, 0x87, 0x68, 0x2A, 0x55, + 0x81, 0x2B, 0x10, 0xF4, 0x03, 0x10, 0xBA, 0xA7, + 0xB8, 0x2B, 0x27, 0x3E, 0xF3, 0xAC, 0xC5, 0x5F, + 0xED, 0xE0, 0xB5, 0xF1, 0x94, 0x9D, 0xE4, 0x29, + 0x3D, 0x91, 0xB5, 0x89, 0xA2, 0x17, 0x5F, 0xF7 + }, + { + 0xD6, 0xC6, 0x2A, 0x61, 0x82, 0x71, 0xF3, 0xBC, + 0xBE, 0x00, 0x79, 0x24, 0xA0, 0xC9, 0x81, 0x2F, + 0x83, 0x17, 0x44, 0x5F, 0xB6, 0xFB, 0x19, 0xEB, + 0x58, 0x9A, 0x62, 0x9F, 0x51, 0x2F, 0xB3, 0x8A, + 0x0B, 0x4E, 0x24, 0x7D, 0xEA, 0x88, 0xC5, 0x6A, + 0x1B, 0xAF, 0x17, 0x88, 0x33, 0x65, 0xB4, 0x36, + 0xF2, 0x84, 0x46, 0xFF, 0x66, 0xEA, 0x43, 0x18, + 0x0B, 0xD0, 0x1E, 0xB5, 0xA6, 0x50, 0x9B, 0xD5 + }, + { + 0x0B, 0x41, 0x16, 0x6B, 0xE6, 0x2F, 0x65, 0xE1, + 0x93, 0xB3, 0xB8, 0x65, 0xE6, 0xC4, 0x7A, 0xAD, + 0x26, 0x0A, 0xF5, 0xFC, 0xEE, 0xC9, 0xAB, 0x44, + 0xAB, 0xAA, 0x46, 0x0A, 0x0C, 0x02, 0x46, 0xB6, + 0xC6, 0x9B, 0x67, 0xD7, 0x1D, 0x3A, 0xDF, 0xEC, + 0x60, 0xDC, 0x8E, 0x77, 0x37, 0x2F, 0x09, 0x49, + 0x52, 0x34, 0x4F, 0xE1, 0x0C, 0x0D, 0x59, 0xEF, + 0xEC, 0x0E, 0x11, 0xC4, 0xA5, 0x16, 0x93, 0x6D + }, + { + 0x79, 0xD5, 0xF9, 0xFF, 0xC0, 0x5E, 0xCF, 0x33, + 0x7D, 0xE9, 0xF1, 0xE0, 0xF1, 0xD8, 0x9B, 0x30, + 0xAC, 0xFE, 0xBB, 0xB8, 0x8A, 0x69, 0x35, 0x86, + 0x78, 0x18, 0xCD, 0x8D, 0x45, 0xDA, 0x3D, 0x25, + 0x18, 0xDE, 0x61, 0xA7, 0xFE, 0x28, 0x75, 0x1B, + 0x61, 0x8F, 0x7A, 0x87, 0x5E, 0x11, 0x89, 0x8F, + 0xFF, 0x74, 0x15, 0x7A, 0xB9, 0x06, 0x81, 0xBD, + 0x53, 0xFA, 0x69, 0x62, 0x67, 0x1E, 0xD9, 0x9D + }, + { + 0xBE, 0xA9, 0x83, 0xD7, 0x6F, 0x24, 0xB1, 0xEE, + 0xDE, 0x1D, 0x06, 0x71, 0x48, 0x05, 0x76, 0x8F, + 0xAA, 0xAD, 0x47, 0x08, 0xC9, 0xA4, 0xFF, 0x9C, + 0xD2, 0x42, 0x2F, 0x70, 0x6B, 0x6F, 0x0C, 0x30, + 0x6D, 0x8B, 0x67, 0xF3, 0x40, 0x89, 0xC6, 0x5E, + 0xD3, 0x88, 0x0C, 0x75, 0xF6, 0x7B, 0xBC, 0x4D, + 0x89, 0xAD, 0x87, 0x12, 0x0A, 0x77, 0xD0, 0xFF, + 0xE4, 0x36, 0xFB, 0x7B, 0x58, 0xB2, 0xCA, 0x41 + }, + { + 0x46, 0x6F, 0xD9, 0x15, 0xEF, 0xD9, 0x50, 0xBC, + 0x96, 0x65, 0x78, 0xCD, 0x92, 0xC6, 0x85, 0x92, + 0x9D, 0x7B, 0x51, 0xA6, 0x3D, 0xB1, 0x42, 0xC7, + 0xB9, 0xA9, 0x3D, 0x16, 0x52, 0x04, 0x95, 0x31, + 0x9B, 0x87, 0xF6, 0x58, 0xE6, 0xAF, 0xDA, 0x1B, + 0x42, 0x77, 0x3E, 0x2D, 0x49, 0xDA, 0x81, 0x45, + 0x94, 0xA5, 0x54, 0x90, 0x89, 0xEF, 0xB1, 0xF3, + 0xAB, 0x5F, 0x15, 0x90, 0xCA, 0x0A, 0x02, 0xAF + }, + { + 0xF6, 0x46, 0x11, 0x13, 0x7A, 0xD2, 0x95, 0x46, + 0x70, 0xEA, 0xEC, 0xD6, 0x26, 0xD2, 0x12, 0xCF, + 0xC5, 0xB9, 0xF6, 0xBB, 0x41, 0xAA, 0xEB, 0xB1, + 0xD7, 0x1E, 0x89, 0x79, 0x2E, 0xB1, 0x31, 0x7A, + 0xED, 0xC6, 0x38, 0x13, 0xFE, 0x63, 0xDE, 0x40, + 0x17, 0x98, 0xDF, 0x75, 0x6C, 0xA1, 0xF2, 0x20, + 0x35, 0xA0, 0xFA, 0xBD, 0x37, 0xFB, 0x11, 0x03, + 0x43, 0x7F, 0x89, 0x1E, 0xAD, 0x5E, 0x64, 0x29 + }, + { + 0x32, 0xE1, 0xF9, 0x38, 0xA2, 0x7F, 0xAA, 0xD8, + 0xAC, 0x4A, 0x13, 0xFD, 0x4F, 0x6A, 0x8B, 0xF3, + 0xDA, 0xBE, 0x4B, 0xC7, 0x2A, 0xF1, 0x1C, 0x8F, + 0x0E, 0x1A, 0x06, 0x56, 0x7E, 0xD7, 0x04, 0xB8, + 0xE7, 0x8E, 0x11, 0x40, 0xA0, 0xC7, 0x72, 0x4E, + 0x3E, 0xFB, 0x70, 0xD2, 0x38, 0x07, 0xCF, 0x38, + 0xE6, 0x27, 0xE3, 0x26, 0xAF, 0xC1, 0x64, 0xCD, + 0xED, 0x52, 0xB4, 0x41, 0x39, 0xFF, 0xB3, 0xF3 + }, + { + 0x48, 0x33, 0xAC, 0x92, 0xE3, 0x02, 0xAC, 0x2B, + 0x67, 0xB0, 0x2B, 0x88, 0x27, 0x14, 0x3B, 0xAD, + 0xA1, 0x5C, 0xED, 0x22, 0x0E, 0x1D, 0x1F, 0x5B, + 0x71, 0x12, 0x0C, 0x51, 0xEE, 0x54, 0xC1, 0x9D, + 0x30, 0x1F, 0x29, 0x60, 0xBD, 0xB5, 0xA2, 0xCE, + 0x27, 0xD4, 0x41, 0xD1, 0x4A, 0xF0, 0x80, 0xCB, + 0x01, 0x0A, 0x8A, 0x23, 0xEE, 0xFF, 0x58, 0x11, + 0xDF, 0xA4, 0x4D, 0x1D, 0x7B, 0x35, 0x8B, 0x48 + }, + { + 0x9A, 0x03, 0x88, 0xCE, 0xE1, 0xAD, 0x01, 0x46, + 0x17, 0x7C, 0x48, 0xB5, 0xA0, 0x8A, 0x2D, 0xB3, + 0xC4, 0x89, 0xE8, 0x4C, 0xE2, 0xAB, 0xA8, 0xC6, + 0x45, 0x11, 0x2A, 0x02, 0x1E, 0x41, 0x1C, 0xF8, + 0x29, 0x12, 0x7F, 0xA2, 0xF1, 0xD1, 0xAE, 0x1B, + 0xAF, 0x3A, 0x33, 0xEA, 0x53, 0x09, 0x84, 0x77, + 0xA7, 0xD1, 0x2B, 0xA7, 0x48, 0xD2, 0xAF, 0x24, + 0xD1, 0x66, 0x02, 0xE9, 0x19, 0x07, 0x76, 0x23 + }, + { + 0xE3, 0xDF, 0x00, 0x74, 0xA9, 0x37, 0x35, 0x13, + 0x0D, 0x99, 0x22, 0xD2, 0xBE, 0x91, 0x6F, 0x35, + 0x34, 0x3D, 0x98, 0x8C, 0xE5, 0x9D, 0x76, 0x97, + 0x15, 0xA9, 0x83, 0xB4, 0xBA, 0x80, 0x7C, 0xE1, + 0xEE, 0x70, 0xA3, 0x13, 0xE5, 0x92, 0x31, 0x58, + 0x4F, 0x55, 0x6E, 0xBB, 0xA1, 0xB9, 0x0B, 0x1B, + 0xB6, 0xA6, 0xC5, 0x81, 0xA4, 0xB4, 0x7C, 0x3F, + 0xF5, 0x21, 0x89, 0x65, 0x2A, 0xAB, 0x36, 0xF5 + }, + { + 0x91, 0x91, 0xCF, 0x46, 0x1B, 0x69, 0x59, 0xBE, + 0xC9, 0x3E, 0xAE, 0x7F, 0xB1, 0xC6, 0xE3, 0x70, + 0x73, 0xD1, 0xA6, 0x15, 0x27, 0xAD, 0x75, 0xD1, + 0x0B, 0x7F, 0x89, 0x49, 0xD9, 0xB8, 0xAF, 0x70, + 0xA2, 0x3A, 0xD1, 0x31, 0x2E, 0xD5, 0x1F, 0x70, + 0xF0, 0xE9, 0xDF, 0x60, 0x1D, 0xDA, 0xE2, 0x38, + 0x90, 0x6C, 0x0F, 0xE3, 0xF7, 0x66, 0xB1, 0x4F, + 0x11, 0x3B, 0x26, 0xBC, 0x85, 0x42, 0xD1, 0xD2 + }, + { + 0x2A, 0x8B, 0xAD, 0xE2, 0x72, 0xEE, 0x7A, 0xC6, + 0x43, 0xC5, 0xE3, 0x71, 0x47, 0xFA, 0xAC, 0x92, + 0xC3, 0x97, 0x0B, 0xD3, 0x86, 0x2F, 0x53, 0x1E, + 0x5D, 0xCE, 0xA5, 0xCE, 0xAC, 0xD1, 0x83, 0x74, + 0x53, 0xAA, 0x49, 0x8D, 0x78, 0x5B, 0x4D, 0x1F, + 0x89, 0xE1, 0xB2, 0xA7, 0x39, 0xCA, 0x4A, 0x38, + 0x49, 0x87, 0x30, 0x27, 0x46, 0xB4, 0xF1, 0x13, + 0x42, 0x43, 0x02, 0xC4, 0xA1, 0xE0, 0xF9, 0xDF + }, + { + 0x32, 0x3E, 0x67, 0x93, 0xC7, 0xDD, 0x9B, 0x4D, + 0x7B, 0xB7, 0xFB, 0xF2, 0x15, 0x31, 0xD3, 0x7F, + 0x72, 0x64, 0x53, 0x2C, 0x58, 0xF1, 0x22, 0x55, + 0x48, 0xD0, 0x6E, 0x69, 0x40, 0xC6, 0x3E, 0x91, + 0x27, 0x09, 0x90, 0xE7, 0xF5, 0x64, 0x32, 0x03, + 0xC9, 0x87, 0x64, 0x7E, 0x5C, 0xF6, 0x61, 0x03, + 0xE7, 0x9B, 0x71, 0x4C, 0x58, 0x1B, 0xD8, 0x77, + 0x2E, 0x19, 0xD0, 0xF0, 0x05, 0xDC, 0x86, 0x33 + }, + { + 0xF9, 0x22, 0x07, 0x6D, 0x29, 0x5D, 0x23, 0xE2, + 0x98, 0x58, 0x30, 0xAA, 0xD2, 0xF2, 0x3F, 0x65, + 0x2F, 0x7F, 0x4D, 0xB4, 0x2C, 0x11, 0x9E, 0xD2, + 0x20, 0xA5, 0x45, 0x14, 0x88, 0xA4, 0x53, 0xF5, + 0x9F, 0xA8, 0xA2, 0xDE, 0x23, 0x03, 0x00, 0x0D, + 0x6B, 0xFD, 0x8C, 0x48, 0x23, 0xA8, 0x5F, 0xAD, + 0xB4, 0xFB, 0x8E, 0x7E, 0xAC, 0x12, 0x2B, 0xF0, + 0x12, 0x47, 0xD7, 0x6F, 0x65, 0x24, 0x7D, 0x45 + }, + { + 0xDC, 0x40, 0x00, 0x95, 0x60, 0x95, 0x92, 0x91, + 0x55, 0x8E, 0xBE, 0x07, 0x20, 0x64, 0xCE, 0x67, + 0x12, 0xC9, 0x21, 0xB5, 0x40, 0x9B, 0x44, 0xE0, + 0x4F, 0x9A, 0x56, 0x5E, 0xEA, 0xDD, 0x39, 0xA7, + 0x71, 0x6E, 0x21, 0xB4, 0x6D, 0xD8, 0x61, 0x65, + 0x17, 0xA2, 0x1A, 0x0C, 0x03, 0x41, 0x9E, 0x94, + 0xDB, 0x82, 0x0A, 0x35, 0x3F, 0x15, 0x2D, 0x10, + 0x83, 0x84, 0xBE, 0x94, 0x70, 0x09, 0x3F, 0x89 + }, + { + 0x7F, 0xA4, 0xBE, 0x91, 0xCA, 0x52, 0x07, 0xFF, + 0x08, 0x7D, 0xE9, 0x2F, 0x1D, 0xB0, 0x9B, 0xF7, + 0x1A, 0x67, 0x87, 0x8B, 0xED, 0x19, 0x3A, 0x5C, + 0x2C, 0xC4, 0xE3, 0x53, 0x23, 0xB8, 0xDF, 0x99, + 0xA2, 0x6E, 0xCB, 0x98, 0x88, 0xD7, 0xB3, 0x4A, + 0x73, 0x9D, 0x64, 0x1A, 0x0E, 0xCD, 0x0A, 0x66, + 0x47, 0xA6, 0xA0, 0x64, 0x26, 0xF3, 0xCC, 0x1F, + 0xEF, 0xDF, 0x90, 0x69, 0x92, 0x2F, 0xAE, 0x4C + }, + { + 0xBA, 0xD3, 0xCD, 0x75, 0x90, 0x5D, 0x7B, 0xFD, + 0xA3, 0x32, 0x2B, 0x44, 0xA7, 0xD3, 0x58, 0x87, + 0x14, 0xD3, 0x33, 0xEE, 0x86, 0x85, 0x5A, 0x87, + 0x27, 0x47, 0xE7, 0x04, 0xF6, 0x11, 0x94, 0x84, + 0xBD, 0xB7, 0xD0, 0x77, 0xFA, 0x08, 0xED, 0xC4, + 0xA7, 0x9D, 0xE0, 0xF4, 0x3F, 0xCA, 0x8D, 0x43, + 0x6E, 0x8A, 0x10, 0x08, 0x57, 0xF5, 0x9B, 0xC7, + 0xB0, 0x55, 0xB9, 0x87, 0xF9, 0x7A, 0xC6, 0xB9 + }, + { + 0xB7, 0xDE, 0xE8, 0xE8, 0x33, 0x9D, 0xB2, 0x97, + 0xFD, 0xAA, 0x3C, 0xA5, 0xC1, 0xDC, 0x19, 0x88, + 0xD9, 0x7F, 0x5F, 0xB6, 0x20, 0x8C, 0x64, 0xDE, + 0xA9, 0x5E, 0x1C, 0x78, 0xF3, 0x37, 0xCE, 0x20, + 0xA2, 0xB4, 0xDF, 0x17, 0xA7, 0xB8, 0x23, 0x6A, + 0x90, 0xD6, 0x28, 0x67, 0x33, 0x16, 0x35, 0x72, + 0xC8, 0x67, 0xD9, 0x3D, 0xE8, 0x9E, 0xF6, 0x2F, + 0xA0, 0x5D, 0xAB, 0x70, 0x7E, 0xC3, 0xA7, 0x70 + }, + { + 0xA0, 0xF7, 0xE9, 0x3C, 0xF3, 0x25, 0x02, 0xB9, + 0xFD, 0x79, 0xEC, 0x20, 0x54, 0x62, 0x07, 0xF3, + 0x31, 0xC5, 0x29, 0x9E, 0xCE, 0xF3, 0x50, 0xD6, + 0x6E, 0xA8, 0x55, 0xC8, 0x7F, 0xBD, 0xDF, 0x18, + 0xE6, 0x91, 0xC2, 0x0D, 0x04, 0x5A, 0x30, 0x8F, + 0x83, 0xF6, 0xCB, 0x8F, 0xCA, 0x69, 0xD7, 0xE2, + 0xB3, 0x9B, 0x34, 0xD2, 0xF8, 0x77, 0x27, 0x6C, + 0x19, 0x6B, 0xF5, 0x14, 0xBA, 0xC6, 0x02, 0x70 + }, + { + 0x6F, 0x50, 0x93, 0xCF, 0xC8, 0x83, 0x00, 0xBF, + 0x68, 0x8E, 0x88, 0x4B, 0x4C, 0x5E, 0xC2, 0xC3, + 0x1A, 0x8C, 0xC2, 0x8D, 0x63, 0x31, 0xAD, 0x7C, + 0xA7, 0x1D, 0x97, 0x60, 0x21, 0x64, 0x82, 0x05, + 0x28, 0x15, 0xD4, 0x4F, 0xC6, 0x9E, 0x18, 0xA8, + 0xDC, 0x8B, 0xD7, 0x1B, 0x31, 0xF2, 0xB5, 0x89, + 0xA7, 0xC0, 0x78, 0x0B, 0x61, 0x99, 0x38, 0x5F, + 0x8D, 0xAE, 0x6C, 0x9B, 0x79, 0x74, 0xC4, 0xCB + }, + { + 0x3C, 0xFF, 0x46, 0xAC, 0x35, 0x46, 0xF6, 0x5A, + 0xD7, 0xA7, 0x20, 0x87, 0x1A, 0xFA, 0x20, 0xA9, + 0x21, 0x6D, 0xDA, 0x5C, 0x45, 0x18, 0x81, 0x56, + 0xA5, 0xBB, 0xED, 0xF2, 0x15, 0x46, 0xD4, 0xBB, + 0x39, 0x40, 0xB2, 0x1A, 0x41, 0xA3, 0x94, 0x03, + 0xE3, 0xCF, 0xD5, 0xE7, 0xA0, 0xE7, 0x90, 0x4D, + 0xA9, 0x5F, 0x4D, 0x8E, 0x0C, 0x5B, 0xF5, 0xB7, + 0x0E, 0xB0, 0x29, 0x55, 0x6E, 0xFD, 0x49, 0x7E + }, + { + 0xAF, 0x66, 0x8A, 0x80, 0x5E, 0x6D, 0x70, 0x4B, + 0x1E, 0x58, 0x1F, 0x1E, 0x8E, 0x3C, 0x00, 0xCF, + 0x4C, 0xF3, 0xE5, 0x46, 0x14, 0x7C, 0x40, 0x6D, + 0x17, 0xCA, 0x97, 0x4D, 0x19, 0xA0, 0x14, 0xC7, + 0x8B, 0x44, 0xE7, 0x2D, 0xDE, 0xEB, 0x65, 0x26, + 0x07, 0xE8, 0x6D, 0x69, 0x02, 0x59, 0xDC, 0xAB, + 0x0D, 0xDA, 0x81, 0xC7, 0x7C, 0x7E, 0xE2, 0x72, + 0x1E, 0x82, 0xBB, 0xB1, 0x39, 0x43, 0x07, 0x1D + }, + { + 0x79, 0xDD, 0xEB, 0x5C, 0x54, 0xDE, 0xD1, 0xE4, + 0x48, 0x40, 0x71, 0xC4, 0x6B, 0xB4, 0x28, 0x02, + 0xD2, 0x3B, 0x3A, 0x08, 0xC1, 0x23, 0x11, 0xBE, + 0x36, 0x3C, 0x7C, 0x7A, 0x02, 0x5A, 0x17, 0x64, + 0xC8, 0xD8, 0x50, 0x69, 0xFD, 0xA8, 0xD5, 0x17, + 0x77, 0x7D, 0x8D, 0xD8, 0x09, 0xE3, 0xD4, 0xA9, + 0x56, 0x04, 0x1A, 0x70, 0x79, 0xF9, 0x16, 0x7B, + 0x0F, 0xE9, 0x71, 0x2E, 0x5F, 0x12, 0x29, 0xF5 + }, + { + 0x99, 0x8E, 0x82, 0xF4, 0x26, 0x3D, 0x53, 0xAE, + 0xDA, 0xC9, 0x39, 0xEB, 0xB6, 0xEB, 0x8B, 0x19, + 0x69, 0x74, 0x6C, 0xB8, 0x15, 0xBD, 0x72, 0x1F, + 0x17, 0xA4, 0x8B, 0xEE, 0x9E, 0xCF, 0xF2, 0xFE, + 0x59, 0x8C, 0x53, 0x9C, 0x41, 0x9A, 0x60, 0xE0, + 0xD5, 0xA0, 0x4F, 0x1C, 0xB5, 0x23, 0xA2, 0xFD, + 0x05, 0x38, 0xBB, 0x17, 0x8E, 0x44, 0x75, 0x8D, + 0x31, 0x59, 0xAB, 0x9E, 0x02, 0x84, 0x01, 0xA3 + }, + { + 0x33, 0x96, 0xCF, 0xD5, 0xCD, 0xE1, 0x4A, 0xEC, + 0x1A, 0xAE, 0xD3, 0xE1, 0x22, 0x52, 0xCF, 0xD6, + 0xE3, 0x42, 0xED, 0x25, 0x5E, 0x8E, 0x9E, 0x1B, + 0xE1, 0x0F, 0x1F, 0x27, 0x38, 0x77, 0xF3, 0x63, + 0x33, 0x81, 0xE3, 0xC9, 0x61, 0xE6, 0x7E, 0xC4, + 0x1E, 0x8F, 0x9E, 0x16, 0x11, 0x0F, 0xC0, 0x3D, + 0xDE, 0x88, 0xBF, 0xC0, 0x96, 0xFC, 0x15, 0x14, + 0x46, 0x1D, 0x70, 0xD0, 0xBE, 0xCE, 0x0A, 0xF6 + }, + { + 0x77, 0x7D, 0x9D, 0xC5, 0x5A, 0x2F, 0x57, 0xA4, + 0x6E, 0xA0, 0x6A, 0x2F, 0x4C, 0xB9, 0x76, 0x0D, + 0x00, 0xD7, 0xA8, 0x62, 0xD0, 0xA2, 0xAA, 0x19, + 0x46, 0x7B, 0x57, 0x0F, 0x7C, 0x7D, 0x5E, 0xA7, + 0x62, 0x9A, 0x95, 0xEB, 0x20, 0x0E, 0x1F, 0x9D, + 0xB0, 0x66, 0x10, 0xCF, 0x8E, 0x30, 0xD5, 0xE6, + 0xAD, 0x0A, 0x7B, 0x63, 0x29, 0x77, 0xFC, 0x21, + 0xBB, 0x17, 0x89, 0x67, 0xF3, 0xB0, 0xE0, 0x9B + }, + { + 0x32, 0xEE, 0x35, 0x7F, 0xC9, 0x16, 0x36, 0xA8, + 0x55, 0xBA, 0x01, 0xA0, 0xB8, 0xDA, 0x6F, 0x35, + 0x53, 0xB1, 0xD5, 0x20, 0xAD, 0xCF, 0xE8, 0xFE, + 0x9D, 0xEB, 0xCC, 0xB2, 0x6C, 0x5C, 0x4C, 0xE8, + 0x50, 0x5B, 0xB1, 0xEF, 0xB5, 0xED, 0x5B, 0xAA, + 0x4C, 0x52, 0x45, 0xB5, 0x0D, 0x74, 0x46, 0x3F, + 0x07, 0x67, 0xB2, 0xC7, 0x83, 0xC4, 0x7A, 0x93, + 0xB0, 0xFD, 0xA6, 0x68, 0x95, 0x69, 0x3C, 0xE6 + }, + { + 0x34, 0x0C, 0x0A, 0x7C, 0xE4, 0x96, 0xFE, 0xBD, + 0xA1, 0x3F, 0xA2, 0x40, 0x7A, 0x21, 0xDC, 0x19, + 0x83, 0x9B, 0xED, 0xAE, 0x1A, 0x08, 0x6A, 0xD0, + 0xFE, 0xD3, 0x91, 0x7D, 0xF9, 0xBF, 0x40, 0x94, + 0x4A, 0x78, 0x7F, 0x64, 0x1E, 0x90, 0xDD, 0xBA, + 0xE0, 0x3A, 0x93, 0x37, 0x72, 0x3E, 0x51, 0x66, + 0x8F, 0xB8, 0x93, 0x77, 0x2C, 0x0F, 0xBD, 0xB3, + 0xEB, 0x7E, 0xF7, 0x90, 0xDF, 0xCB, 0xB9, 0xAB + }, + { + 0xD8, 0x6A, 0x5B, 0xAA, 0x33, 0x65, 0xAB, 0xD8, + 0xF4, 0x42, 0xCD, 0x6E, 0xBB, 0x93, 0x11, 0x38, + 0x19, 0xF0, 0xB4, 0x60, 0x61, 0xE1, 0x34, 0x04, + 0xEF, 0xAA, 0x1A, 0x58, 0xE1, 0xFF, 0x27, 0x2A, + 0xD4, 0xBF, 0xD3, 0x08, 0x15, 0xAD, 0xD8, 0x8A, + 0xD9, 0x8F, 0xCE, 0x9A, 0xF0, 0x18, 0x37, 0x4C, + 0xA6, 0x0D, 0x89, 0x79, 0x0F, 0x71, 0xA6, 0x07, + 0x5F, 0x3D, 0x68, 0xD3, 0x20, 0x21, 0xA9, 0xEB + }, + { + 0xA6, 0x7E, 0x6E, 0xC6, 0x57, 0xC9, 0x5E, 0xAB, + 0x3C, 0x3C, 0x32, 0xE4, 0x1F, 0xBF, 0x39, 0xCF, + 0x20, 0x33, 0xAB, 0x4B, 0xE2, 0xE2, 0xB8, 0x21, + 0x10, 0x4A, 0xDB, 0xE6, 0x9D, 0x16, 0xE9, 0x48, + 0xDC, 0xE4, 0xC4, 0xC6, 0xA3, 0xCF, 0x22, 0x76, + 0x90, 0x1F, 0x7D, 0x4F, 0xFD, 0x69, 0x65, 0x46, + 0x49, 0x88, 0x2C, 0x01, 0x4D, 0x2C, 0x10, 0xA1, + 0x30, 0x2B, 0x79, 0xC6, 0x15, 0x69, 0xCD, 0x36 + }, + { + 0x55, 0xCE, 0x19, 0x2A, 0xE4, 0xB3, 0xEA, 0xF8, + 0x55, 0x59, 0x0E, 0x2D, 0x44, 0xE6, 0x25, 0xD9, + 0xBA, 0x14, 0x6E, 0xB7, 0x50, 0x48, 0xE6, 0xB5, + 0x6E, 0x02, 0x50, 0x31, 0xEF, 0xBA, 0x0B, 0xDA, + 0x8A, 0xAA, 0xFA, 0x04, 0x70, 0xB7, 0xAC, 0x3D, + 0x40, 0x6E, 0x5A, 0xBA, 0x3E, 0x83, 0x2F, 0x27, + 0xA5, 0x07, 0x24, 0x6D, 0x1B, 0x5F, 0x33, 0xDE, + 0xA1, 0xF7, 0x24, 0xE2, 0xB8, 0x1B, 0x0C, 0x98 + }, + { + 0xB3, 0xA2, 0x0C, 0x1F, 0xB0, 0xB4, 0xF0, 0xD3, + 0x77, 0x26, 0xC2, 0x3B, 0x58, 0x77, 0xDD, 0x8E, + 0x72, 0xF6, 0x98, 0x86, 0xE0, 0x9A, 0x8C, 0x68, + 0xCF, 0xC3, 0x01, 0xD2, 0xA3, 0xF2, 0xF9, 0x5C, + 0xEF, 0xCF, 0xAB, 0xB8, 0x88, 0x99, 0x03, 0xC7, + 0x32, 0xF4, 0xE8, 0x14, 0x32, 0xD3, 0xF6, 0x78, + 0xCC, 0xDF, 0xC3, 0x98, 0xAC, 0xD8, 0xA2, 0xF0, + 0x66, 0x41, 0x10, 0x04, 0x50, 0xD8, 0x9F, 0x32 + }, + { + 0xF7, 0x27, 0x2D, 0x93, 0xC7, 0x01, 0x2D, 0x38, + 0xB2, 0x7F, 0x0C, 0x9A, 0xE2, 0x01, 0x79, 0x58, + 0xBB, 0xA6, 0x66, 0xA9, 0xDE, 0x1E, 0x88, 0x12, + 0xE9, 0x74, 0x37, 0xAE, 0xB2, 0xE0, 0x3C, 0x99, + 0x94, 0x38, 0xF0, 0xBE, 0x33, 0x3D, 0x09, 0xAD, + 0xDB, 0xCF, 0xAA, 0xC7, 0xAA, 0x73, 0xF7, 0xB6, + 0xCC, 0xEC, 0x67, 0xDC, 0x07, 0x79, 0x98, 0xDE, + 0xDB, 0x8C, 0x13, 0x32, 0xBA, 0xC0, 0xFB, 0xA8 + }, + { + 0x1F, 0xE7, 0xB3, 0xDE, 0x34, 0xC0, 0x47, 0x9C, + 0xA8, 0x40, 0x5F, 0x3C, 0xBC, 0xD2, 0xDB, 0x64, + 0xBB, 0x18, 0xDB, 0xB2, 0x91, 0xA5, 0xFE, 0xAA, + 0x16, 0xC5, 0x22, 0x8C, 0x93, 0xEE, 0x21, 0xC7, + 0x11, 0xD6, 0x8A, 0x01, 0x0C, 0x2A, 0xE8, 0x80, + 0x05, 0xEB, 0xAC, 0x95, 0x9E, 0x3A, 0x32, 0x24, + 0x52, 0xF8, 0x62, 0xDD, 0xE9, 0x4B, 0xB9, 0x41, + 0x81, 0x3E, 0x52, 0x4D, 0x23, 0x47, 0xFE, 0xEE + }, + { + 0x4E, 0xE1, 0xD3, 0x88, 0x05, 0xC3, 0x22, 0x84, + 0xEC, 0xEB, 0xE9, 0x2E, 0x3D, 0xF6, 0xCD, 0x98, + 0xC7, 0xD6, 0x68, 0x0E, 0xAB, 0x0D, 0x68, 0x66, + 0x4F, 0x96, 0x70, 0x6C, 0x45, 0x63, 0x3B, 0x1E, + 0x26, 0x82, 0x22, 0xAA, 0x5A, 0x52, 0x79, 0xEF, + 0x01, 0xFC, 0x28, 0x54, 0x32, 0xAB, 0xEE, 0xD7, + 0x4B, 0xA3, 0xDF, 0x18, 0x9F, 0x50, 0xA9, 0x89, + 0xD5, 0x8E, 0x71, 0x30, 0x62, 0x2D, 0xAA, 0x59 + }, + { + 0x0E, 0x14, 0x05, 0x87, 0x1C, 0x87, 0xA5, 0xEA, + 0x40, 0x83, 0x42, 0xF3, 0x9D, 0x34, 0x94, 0xF9, + 0x39, 0xF7, 0x3C, 0x22, 0x60, 0xC2, 0xA4, 0x3A, + 0x5C, 0x9F, 0x1B, 0x57, 0x33, 0x0C, 0xCA, 0x40, + 0x93, 0xFC, 0x1F, 0x42, 0xF9, 0x6D, 0x83, 0x00, + 0x56, 0x77, 0x03, 0x7D, 0xB5, 0x1A, 0xEF, 0x26, + 0xF0, 0x54, 0x38, 0x05, 0x7A, 0xE7, 0x9E, 0xD1, + 0x44, 0x64, 0xFD, 0x8E, 0x57, 0xD1, 0x55, 0x86 + }, + { + 0x17, 0xC5, 0xCA, 0xB4, 0x09, 0x10, 0x73, 0x62, + 0x1B, 0x5C, 0x24, 0xC3, 0x36, 0x31, 0x6D, 0x0C, + 0xF6, 0x49, 0xBA, 0x1E, 0xFF, 0xEB, 0xFC, 0x87, + 0xE0, 0x43, 0x9C, 0xDF, 0x57, 0x88, 0x87, 0xB2, + 0x21, 0x65, 0x6D, 0x33, 0x9A, 0x6F, 0xD1, 0x98, + 0xAB, 0xAE, 0xE6, 0x7E, 0xA1, 0x88, 0xDD, 0x66, + 0x56, 0x78, 0x23, 0xFC, 0x22, 0x0C, 0x52, 0xB5, + 0x74, 0x90, 0x25, 0x14, 0x69, 0xD2, 0x5D, 0x8C + }, + { + 0x57, 0xDC, 0x27, 0x97, 0xD1, 0x42, 0x68, 0x1C, + 0x94, 0xFE, 0x48, 0x86, 0x26, 0x98, 0x6E, 0xD4, + 0xB2, 0x67, 0x03, 0xCB, 0xF6, 0xBF, 0xE5, 0x93, + 0x91, 0x64, 0x36, 0x57, 0x06, 0x5B, 0x2D, 0x46, + 0xE4, 0xB1, 0xDD, 0xB3, 0xAA, 0x83, 0x2C, 0x9B, + 0xD4, 0x49, 0x75, 0x5A, 0xC8, 0xB1, 0xBF, 0x93, + 0x68, 0x97, 0xFB, 0xC6, 0xAD, 0xE3, 0x78, 0xF2, + 0xBD, 0x64, 0x93, 0xE4, 0x86, 0xF4, 0x20, 0x29 + }, + { + 0x44, 0x12, 0xDD, 0x6B, 0xED, 0x6D, 0xB2, 0xA8, + 0x03, 0xC2, 0xE0, 0xDF, 0x8F, 0x58, 0x29, 0xE7, + 0xA4, 0xB0, 0x41, 0x78, 0x89, 0x51, 0x0D, 0xF7, + 0xDF, 0xEE, 0x49, 0x57, 0x4A, 0x71, 0xEC, 0x0D, + 0x9E, 0x0D, 0x46, 0x06, 0x50, 0x17, 0xC7, 0x2D, + 0xD9, 0x74, 0x39, 0x33, 0xCA, 0x83, 0x9A, 0x76, + 0x8D, 0xD1, 0x5A, 0xB0, 0xB7, 0xC1, 0x4C, 0x62, + 0x6A, 0x35, 0x41, 0x09, 0x69, 0x01, 0x96, 0xAE + }, + { + 0xD0, 0xEB, 0xC7, 0x71, 0x03, 0x1B, 0x7C, 0x16, + 0x00, 0x21, 0xC9, 0xB6, 0xFB, 0xB2, 0xB6, 0x70, + 0xE3, 0xB4, 0x02, 0x70, 0x02, 0x69, 0x07, 0xA3, + 0x91, 0x63, 0xDB, 0x18, 0x73, 0xEC, 0xC3, 0xB8, + 0x00, 0x11, 0x1D, 0xD7, 0xBF, 0x13, 0x8F, 0x83, + 0xA6, 0x10, 0xDC, 0x04, 0x6D, 0xA2, 0x68, 0xB7, + 0x2B, 0x8C, 0x90, 0x86, 0x92, 0x23, 0x77, 0xDB, + 0xED, 0x73, 0x94, 0x82, 0x43, 0xCA, 0x1E, 0x14 + }, + { + 0x10, 0xC4, 0xBA, 0x31, 0x55, 0x91, 0x69, 0x8D, + 0xFB, 0x91, 0xA5, 0x73, 0x37, 0x63, 0x18, 0x84, + 0xB4, 0x73, 0x8D, 0x9F, 0x59, 0x80, 0x78, 0x51, + 0xA6, 0x79, 0x84, 0x0C, 0xC2, 0x87, 0xAC, 0xE3, + 0x01, 0x1C, 0xCD, 0xC8, 0xF4, 0xA4, 0x85, 0xBB, + 0x19, 0x73, 0x40, 0x4E, 0xF9, 0xEE, 0x9B, 0x9C, + 0xF1, 0xEA, 0xDB, 0xC5, 0x40, 0x74, 0xC6, 0xD1, + 0x13, 0xDE, 0x8F, 0xC9, 0x1D, 0x07, 0x97, 0xEB + }, + { + 0x14, 0x64, 0x34, 0x7B, 0xE3, 0x2C, 0x79, 0x59, + 0x17, 0x2B, 0x74, 0x72, 0xD1, 0x1F, 0xE0, 0x78, + 0x44, 0xA5, 0x2E, 0x2D, 0x3B, 0x2D, 0x05, 0x8C, + 0xC6, 0xBC, 0xC0, 0xA8, 0xA2, 0x75, 0xD6, 0xB8, + 0x2B, 0x2D, 0x62, 0x63, 0x75, 0x5E, 0xAF, 0x2A, + 0x65, 0x88, 0xB6, 0xA1, 0xEB, 0x79, 0x9A, 0xF8, + 0x3A, 0x4C, 0xE7, 0x53, 0xF8, 0xC7, 0x5A, 0x22, + 0x84, 0xD0, 0x28, 0x5B, 0xAB, 0x5F, 0x7C, 0x1C + }, + { + 0xF4, 0x09, 0x23, 0x1E, 0xD1, 0x87, 0xF5, 0xC4, + 0xE8, 0x33, 0xFA, 0x9E, 0x30, 0x42, 0xAC, 0xA6, + 0xC8, 0x58, 0xB0, 0x8B, 0x49, 0x6B, 0x25, 0x31, + 0xF8, 0x4F, 0xD5, 0xCE, 0xA9, 0x3E, 0xCD, 0x06, + 0xDA, 0xFE, 0x0A, 0x10, 0xC3, 0xFF, 0x23, 0x76, + 0xC7, 0x4D, 0xC8, 0x0D, 0xA0, 0x7D, 0xA0, 0x18, + 0x64, 0xFB, 0xF2, 0x68, 0x59, 0x60, 0xB5, 0x40, + 0xB3, 0xA2, 0xE9, 0x42, 0xCB, 0x8D, 0x90, 0x9F + }, + { + 0x39, 0x51, 0x32, 0xC5, 0x80, 0xC3, 0x55, 0xB5, + 0xB0, 0xE2, 0x35, 0x33, 0x6C, 0x8D, 0xC1, 0x08, + 0x5E, 0x59, 0x59, 0x64, 0x04, 0x3D, 0x38, 0x9E, + 0x08, 0x1E, 0xFE, 0x48, 0x5B, 0xA4, 0xC6, 0x37, + 0x72, 0xDB, 0x8D, 0x7E, 0x0F, 0x18, 0x6C, 0x50, + 0x98, 0x2E, 0x12, 0x23, 0xEA, 0x78, 0x5A, 0xDC, + 0x74, 0x0B, 0x0C, 0xF2, 0x18, 0x70, 0x74, 0x58, + 0xB8, 0xB8, 0x03, 0x40, 0x42, 0xF9, 0x23, 0xC2 + }, + { + 0xF9, 0x2A, 0xBA, 0xCA, 0x21, 0x32, 0x29, 0x66, + 0x06, 0x49, 0xEF, 0x2D, 0x8F, 0x88, 0x11, 0x5B, + 0x5B, 0xED, 0x8A, 0xB5, 0xB9, 0xBC, 0xA9, 0xA1, + 0xB4, 0xC5, 0x24, 0x57, 0x03, 0x53, 0x10, 0xC4, + 0x1A, 0x6B, 0xEA, 0x2B, 0x23, 0xB7, 0x91, 0x8B, + 0x5B, 0x8B, 0xF3, 0x8B, 0x52, 0xEA, 0xC6, 0xFF, + 0x3B, 0x62, 0x13, 0xA5, 0x22, 0xF3, 0x81, 0xBE, + 0x7F, 0xF0, 0x90, 0x6D, 0xBA, 0x7B, 0xD0, 0x0C + }, + { + 0xCB, 0xAD, 0xE7, 0xAD, 0x3B, 0x5D, 0xEE, 0x0F, + 0xF1, 0xA4, 0x6B, 0x08, 0x2C, 0xF4, 0xE1, 0xE1, + 0xDC, 0x21, 0x62, 0x0D, 0xD2, 0xCC, 0x0E, 0xDC, + 0x2C, 0x70, 0x7A, 0x21, 0x62, 0xD2, 0x14, 0x99, + 0x69, 0xAB, 0xBB, 0x29, 0xC5, 0x72, 0x0B, 0x04, + 0xBD, 0x15, 0x68, 0xA9, 0x55, 0x61, 0x95, 0xE6, + 0x7F, 0x24, 0x32, 0x2D, 0xD9, 0xAA, 0x4E, 0x83, + 0x65, 0x19, 0x1A, 0xA5, 0xB6, 0xC4, 0x45, 0x79 + }, + { + 0xF5, 0x1B, 0x4A, 0xE4, 0xD4, 0xC5, 0x4A, 0x29, + 0xCF, 0x71, 0x35, 0xA8, 0xFE, 0x1E, 0xAB, 0xD5, + 0xE1, 0xBC, 0xBF, 0x82, 0x08, 0x96, 0x96, 0x7D, + 0xC4, 0x1E, 0x38, 0x49, 0xDA, 0xC2, 0x25, 0x07, + 0x69, 0x42, 0x10, 0xCA, 0x11, 0xC4, 0xEB, 0xF1, + 0xC2, 0x9A, 0x8D, 0x4F, 0x71, 0xB3, 0x0F, 0x76, + 0xC9, 0xB6, 0x01, 0x0A, 0xD9, 0x5B, 0xDF, 0xB0, + 0xDE, 0x83, 0x79, 0x25, 0xF0, 0x61, 0x25, 0x97 + }, + { + 0xCE, 0x38, 0x72, 0x11, 0x5D, 0x83, 0x3B, 0x34, + 0x56, 0xCA, 0x94, 0x2E, 0x6E, 0x38, 0x5F, 0x28, + 0xA9, 0x03, 0xBE, 0xAB, 0xFB, 0x75, 0x3F, 0x8A, + 0xFC, 0xCC, 0x12, 0xF2, 0x58, 0x2C, 0xE1, 0xF3, + 0x62, 0x12, 0xBD, 0x05, 0xE0, 0x5A, 0x46, 0xFC, + 0x88, 0xD3, 0x19, 0x50, 0xB4, 0x91, 0x1A, 0xE5, + 0xDC, 0xD8, 0xFF, 0x7A, 0x0B, 0x50, 0x47, 0x4C, + 0xB4, 0x88, 0xCC, 0xF2, 0xA8, 0x9C, 0xD0, 0xEB + }, + { + 0x9B, 0xB7, 0x4C, 0xBD, 0x47, 0xA6, 0x24, 0xCB, + 0xEA, 0xFC, 0xC1, 0x6D, 0x46, 0x29, 0x47, 0xBB, + 0xEA, 0x13, 0x70, 0xB8, 0x5C, 0x96, 0x1A, 0x40, + 0x7D, 0xF9, 0x86, 0x3E, 0x54, 0xE6, 0xD9, 0xE6, + 0xA8, 0xD2, 0xEF, 0x0C, 0x64, 0x97, 0x20, 0x5E, + 0x5E, 0xB7, 0xC3, 0xE5, 0x9E, 0x69, 0x8D, 0x99, + 0x24, 0x63, 0xCA, 0x9D, 0xD4, 0xCF, 0x28, 0xCF, + 0x9A, 0x2D, 0x4E, 0x30, 0xC1, 0x33, 0xE8, 0x55 + }, + { + 0x72, 0x96, 0x33, 0x82, 0x0B, 0xF0, 0x13, 0xD9, + 0xD2, 0xBD, 0x37, 0x3C, 0xCA, 0xC7, 0xBC, 0x9F, + 0x37, 0x16, 0xF6, 0x9E, 0x16, 0xA4, 0x4E, 0x94, + 0x9C, 0x7A, 0x9A, 0x93, 0xDC, 0xA1, 0x26, 0xBB, + 0x1A, 0xA5, 0x4E, 0x5E, 0x70, 0x40, 0x70, 0x7F, + 0x02, 0x87, 0x6A, 0xFD, 0x02, 0x0A, 0xF4, 0x72, + 0x63, 0x9D, 0x49, 0xF5, 0x42, 0x0D, 0x29, 0x4C, + 0x3A, 0xA3, 0x1D, 0x06, 0x7E, 0x3E, 0x85, 0x75 + }, + { + 0x06, 0x86, 0x1D, 0xB3, 0x07, 0xC6, 0x78, 0x08, + 0x6E, 0x8B, 0x2A, 0xEC, 0xDF, 0x18, 0x29, 0xD2, + 0x88, 0x3D, 0x28, 0xB7, 0x31, 0xAB, 0xD0, 0xF1, + 0xE7, 0x2F, 0x1C, 0xED, 0x6C, 0x7A, 0xD4, 0x17, + 0x2E, 0xCA, 0x63, 0x22, 0xA8, 0x3F, 0xB6, 0xA6, + 0x5A, 0xFA, 0x37, 0xE9, 0x4A, 0x3E, 0x2B, 0xA2, + 0x05, 0xB8, 0x7B, 0xF3, 0x82, 0xD9, 0x15, 0x88, + 0x49, 0x7A, 0x46, 0x50, 0x88, 0x3B, 0xD8, 0x75 + }, + { + 0x35, 0x6E, 0xCE, 0xAF, 0x17, 0x02, 0xB3, 0x70, + 0xF4, 0xAA, 0xB8, 0xEA, 0x82, 0x84, 0x86, 0xF3, + 0x30, 0x13, 0xF7, 0x44, 0xB3, 0x9E, 0x7E, 0xA2, + 0x6C, 0x69, 0x18, 0xD6, 0x0E, 0x1A, 0xBC, 0xF4, + 0x4F, 0xB1, 0x6E, 0xDC, 0xA7, 0x72, 0x0A, 0xCF, + 0xC6, 0xA7, 0x01, 0xBF, 0x1E, 0x2C, 0x35, 0xDD, + 0xBD, 0x69, 0x5A, 0x8D, 0x40, 0x8E, 0x8C, 0x96, + 0x32, 0xE8, 0xCD, 0x27, 0x23, 0x0C, 0xAD, 0x8D + }, + { + 0x48, 0x9A, 0x39, 0xD0, 0xFC, 0x3C, 0xDE, 0xAF, + 0x42, 0x89, 0x2E, 0xD8, 0x03, 0x85, 0xC1, 0x1C, + 0xE2, 0x93, 0xC9, 0x32, 0x21, 0x5B, 0xB2, 0x31, + 0x88, 0x69, 0x2A, 0x86, 0xE6, 0x1B, 0xCA, 0xD9, + 0x2C, 0x2A, 0x1D, 0x11, 0x42, 0x60, 0x1B, 0x1B, + 0xDF, 0x09, 0x82, 0xD1, 0xCD, 0x1E, 0x05, 0xC0, + 0x52, 0xDE, 0x81, 0x9E, 0x64, 0xF2, 0x47, 0xDB, + 0x35, 0x91, 0x5D, 0xD1, 0xDB, 0x79, 0xA3, 0xB5 + }, + { + 0xC0, 0x2F, 0x46, 0x4B, 0x4D, 0xD1, 0x81, 0x17, + 0xE3, 0x0A, 0x8D, 0xB8, 0xEF, 0x1D, 0xA0, 0x67, + 0x13, 0x4B, 0x60, 0x4E, 0xFA, 0x19, 0x51, 0x76, + 0x7E, 0xE6, 0x32, 0xDC, 0x02, 0x4D, 0x64, 0xC0, + 0x0F, 0x24, 0x49, 0xF0, 0x42, 0xDB, 0x3A, 0xEA, + 0x01, 0x74, 0xEB, 0xCD, 0xBB, 0x4F, 0xF5, 0x9D, + 0xAE, 0x75, 0x4F, 0x72, 0x39, 0x46, 0xF1, 0xB9, + 0x0A, 0x77, 0xFD, 0x95, 0x23, 0x69, 0x0B, 0x7B + }, + { + 0xFB, 0x31, 0xE6, 0xDD, 0xB8, 0x6D, 0xBF, 0xF3, + 0x72, 0x64, 0x6D, 0x1E, 0x3A, 0x3F, 0x31, 0xDD, + 0x61, 0x15, 0x9F, 0xC3, 0x93, 0x65, 0x8C, 0x2E, + 0xE9, 0x57, 0x10, 0x3B, 0xF2, 0x11, 0x6B, 0xDE, + 0xF8, 0x2C, 0x33, 0xE8, 0x69, 0xF3, 0xC8, 0x3A, + 0xC3, 0xC2, 0xF6, 0x38, 0x0C, 0xF6, 0x92, 0xF7, + 0xB1, 0xDC, 0xBA, 0xE0, 0xBB, 0x22, 0x7A, 0xD3, + 0x47, 0xE7, 0x54, 0x13, 0x74, 0x66, 0xC6, 0x9F + }, + { + 0x00, 0x60, 0x62, 0xAB, 0xE1, 0x6C, 0x2F, 0xE7, + 0x9A, 0xF8, 0x80, 0x85, 0xE0, 0xB5, 0x82, 0xB1, + 0x06, 0xE7, 0xF7, 0x9F, 0x01, 0xA4, 0x39, 0x46, + 0xC7, 0x8B, 0x19, 0xF9, 0xBD, 0xD7, 0x25, 0x99, + 0x76, 0x36, 0xA3, 0x32, 0xEB, 0x9A, 0x3A, 0xAA, + 0x6D, 0xE0, 0xD4, 0xA8, 0xE9, 0xE2, 0x8E, 0x8C, + 0x77, 0x87, 0x74, 0x22, 0x4C, 0x66, 0x5B, 0xF7, + 0xBC, 0x36, 0x44, 0xFC, 0xE4, 0x11, 0x22, 0x8C + }, + { + 0xD4, 0x4A, 0x6D, 0xB3, 0xDE, 0x9F, 0xD4, 0xE4, + 0xA7, 0xEF, 0x15, 0x5A, 0x01, 0xBC, 0xCB, 0x91, + 0xC1, 0xBC, 0xF1, 0xCB, 0x53, 0x22, 0x56, 0x89, + 0xA7, 0x7A, 0x0D, 0x23, 0xB4, 0xD3, 0x9A, 0x89, + 0xA1, 0x89, 0xF2, 0x89, 0x80, 0xF9, 0x1C, 0x56, + 0xEA, 0xC5, 0x87, 0x9E, 0xAE, 0x93, 0x3C, 0xED, + 0x7F, 0x26, 0x7E, 0x2F, 0x70, 0x40, 0xEB, 0x38, + 0x0F, 0xDB, 0xBF, 0x34, 0xA6, 0xB7, 0xB6, 0x15 + }, + { + 0x5A, 0xFB, 0xFE, 0xA1, 0xDE, 0xDA, 0x5A, 0xEA, + 0xB9, 0x2E, 0x4D, 0x0C, 0x31, 0xD1, 0x6A, 0x9A, + 0x86, 0xBF, 0x7C, 0x75, 0x23, 0x27, 0x4A, 0x05, + 0xC5, 0x05, 0x29, 0xF5, 0xC1, 0x39, 0xDB, 0x10, + 0x93, 0x3A, 0x52, 0xC6, 0x22, 0x9C, 0xD3, 0x11, + 0x08, 0xF0, 0x83, 0xFB, 0x0C, 0x85, 0xCF, 0x52, + 0x83, 0x1B, 0x5A, 0x05, 0xF2, 0x55, 0x0A, 0x77, + 0xB5, 0x70, 0x3C, 0xC6, 0x68, 0x91, 0x2D, 0xBC + }, + { + 0xD1, 0x7F, 0xCA, 0xD4, 0xE0, 0xD8, 0xBD, 0xE2, + 0xED, 0xFD, 0xA1, 0x68, 0xBA, 0x47, 0x10, 0x4B, + 0xBC, 0xA4, 0xD2, 0x6D, 0xA2, 0xD3, 0x1A, 0x07, + 0x0B, 0x0F, 0xBA, 0x0B, 0x26, 0xEE, 0xDD, 0x95, + 0xEE, 0xC1, 0xFC, 0x34, 0xD7, 0x6C, 0xD4, 0xA1, + 0xCB, 0x15, 0xF2, 0x62, 0x16, 0x88, 0xA9, 0xCC, + 0x0E, 0x96, 0x35, 0x8D, 0xE9, 0x93, 0x22, 0x2B, + 0xB3, 0xE3, 0xCD, 0x0B, 0xFD, 0xCB, 0x74, 0x6C + }, + { + 0xBD, 0x6A, 0x59, 0x21, 0x63, 0x37, 0xB4, 0x5D, + 0x6B, 0x71, 0xAE, 0xAC, 0x01, 0x36, 0x6B, 0xFE, + 0x96, 0x60, 0xE0, 0xFB, 0xC2, 0x95, 0x9A, 0xDB, + 0xB6, 0x8D, 0x52, 0x6C, 0x43, 0xD4, 0x8F, 0xFF, + 0xFE, 0x2F, 0xFC, 0x43, 0x05, 0x88, 0xE7, 0x8E, + 0x66, 0x54, 0x6A, 0x3C, 0x70, 0x9B, 0x0A, 0xCE, + 0xA1, 0x7C, 0xBC, 0x5A, 0x21, 0x8C, 0x53, 0xCD, + 0x47, 0xAA, 0x48, 0x71, 0xC1, 0xDD, 0x98, 0x4A + }, + { + 0x83, 0xEA, 0x5A, 0xE1, 0x89, 0x11, 0x45, 0xC4, + 0x1A, 0x7C, 0x6C, 0x87, 0xFE, 0x92, 0x24, 0x87, + 0xF5, 0xD2, 0x82, 0x93, 0x35, 0x69, 0xB7, 0xAE, + 0x0E, 0x34, 0x56, 0x53, 0x38, 0x1E, 0xDE, 0x6D, + 0x4B, 0x16, 0xE1, 0x44, 0xD1, 0xC3, 0xE8, 0xF0, + 0x60, 0x5D, 0xAA, 0x0D, 0xB5, 0x96, 0x5A, 0x7B, + 0x79, 0xD9, 0x1A, 0x8A, 0xFE, 0x11, 0xF1, 0xE0, + 0xBC, 0x54, 0x9A, 0xC0, 0x74, 0xA0, 0x1A, 0xB7 + }, + { + 0x37, 0x50, 0x50, 0xCF, 0x2E, 0x43, 0x0D, 0x0E, + 0x29, 0x87, 0x58, 0x35, 0x20, 0x8E, 0x89, 0x06, + 0xD7, 0x05, 0x2E, 0x47, 0x29, 0x2C, 0x5A, 0x38, + 0xA6, 0x30, 0x82, 0x87, 0x3D, 0x31, 0xD5, 0x83, + 0x13, 0x5C, 0x07, 0xA2, 0x0C, 0x52, 0xD9, 0x5B, + 0x2D, 0x5D, 0xC3, 0xEA, 0xDE, 0x6B, 0xE1, 0x43, + 0xCA, 0x34, 0x38, 0xF4, 0x4D, 0x02, 0x0A, 0xAE, + 0x16, 0x0E, 0xD7, 0x7A, 0xB9, 0x88, 0x4F, 0x7D + }, + { + 0x30, 0x28, 0xB0, 0xE8, 0x24, 0x95, 0x7F, 0xF3, + 0xB3, 0x05, 0xE9, 0x7F, 0xF5, 0x92, 0xAA, 0x8E, + 0xF2, 0x9B, 0x3B, 0xEC, 0x1D, 0xC4, 0x7B, 0x76, + 0x13, 0x3D, 0x10, 0x3F, 0xFE, 0x38, 0x71, 0xBF, + 0x05, 0x12, 0xA2, 0x31, 0xAF, 0xCB, 0x1D, 0xF8, + 0x65, 0x97, 0xEC, 0x5E, 0x46, 0xE9, 0x23, 0xC8, + 0xB9, 0x85, 0xC2, 0x85, 0x08, 0x57, 0xC6, 0x40, + 0x01, 0xB2, 0xC5, 0x51, 0xEA, 0x83, 0x3D, 0x0E + }, + { + 0x08, 0x7C, 0xCB, 0x1E, 0x5B, 0xD1, 0x72, 0x22, + 0xB8, 0xAF, 0x20, 0x6D, 0xD6, 0x39, 0x08, 0xF8, + 0x91, 0x72, 0x97, 0x62, 0x1A, 0x8C, 0xB9, 0x33, + 0x0A, 0xE0, 0xBA, 0x4A, 0xF3, 0xE9, 0xD6, 0x0C, + 0x98, 0xFC, 0xF1, 0xEF, 0xFC, 0xEC, 0x20, 0x13, + 0x6B, 0x4F, 0x91, 0x88, 0x12, 0x6D, 0xFA, 0x04, + 0x4E, 0x1C, 0x1C, 0xCD, 0xA3, 0xCE, 0xD8, 0x73, + 0x73, 0xD9, 0x37, 0x9C, 0xCB, 0xED, 0xBD, 0xB3 + }, + { + 0x7F, 0x17, 0x06, 0x24, 0x98, 0xBF, 0xA2, 0xBB, + 0x58, 0x56, 0xCD, 0x0A, 0x62, 0xC5, 0x68, 0xC5, + 0xC6, 0xB8, 0x97, 0x43, 0x24, 0x74, 0xEF, 0xB2, + 0xE6, 0xA2, 0xEE, 0x18, 0xCA, 0xFF, 0xD2, 0x1E, + 0x1E, 0xF3, 0x0D, 0x06, 0x47, 0x23, 0x85, 0x0F, + 0x79, 0x90, 0xD2, 0x1B, 0xA3, 0x4E, 0x8F, 0x2B, + 0x3B, 0xB0, 0x67, 0x02, 0x3A, 0x77, 0x27, 0x82, + 0x15, 0x8A, 0x27, 0xC6, 0xC4, 0x67, 0xC9, 0x28 + }, + { + 0x6B, 0xA9, 0x86, 0xA9, 0x42, 0x49, 0x7F, 0xD3, + 0x84, 0x62, 0x97, 0x2F, 0x50, 0xA6, 0x19, 0x68, + 0xC0, 0x65, 0x2D, 0xAC, 0x56, 0xCE, 0x9B, 0x9A, + 0xC1, 0xBC, 0x06, 0x1A, 0xB6, 0x34, 0xFE, 0x5A, + 0x77, 0xAC, 0xD0, 0x27, 0x5F, 0x83, 0x96, 0xE3, + 0xC0, 0xBE, 0xF0, 0x12, 0xAE, 0x93, 0xB7, 0x27, + 0x58, 0xB8, 0xD7, 0x67, 0x9C, 0x87, 0xE8, 0x47, + 0xE6, 0x30, 0x17, 0xB5, 0x5A, 0x69, 0xC5, 0xC6 + }, + { + 0x96, 0x7C, 0x81, 0xF5, 0x61, 0x95, 0x18, 0x33, + 0xFA, 0x56, 0x6F, 0x6B, 0x36, 0x07, 0x7E, 0xAD, + 0xB2, 0xA6, 0x15, 0xCC, 0x15, 0xF0, 0xED, 0xBB, + 0xAE, 0x4F, 0x84, 0x4D, 0xDC, 0x8E, 0x9C, 0x1F, + 0xB8, 0x3D, 0x31, 0xA9, 0x3F, 0xCB, 0x17, 0x74, + 0xD7, 0x40, 0xD6, 0x92, 0x08, 0xCA, 0x59, 0x30, + 0xBC, 0xFA, 0xC4, 0xA1, 0xF9, 0x44, 0x46, 0x9F, + 0xEF, 0xD1, 0x9B, 0x6E, 0x93, 0x75, 0xE0, 0xB5 + }, + { + 0xE8, 0xAE, 0xF1, 0x78, 0xE6, 0xDA, 0x3E, 0xF5, + 0xCA, 0xED, 0x65, 0x30, 0xF7, 0xEB, 0x25, 0x60, + 0x82, 0x56, 0xC2, 0x37, 0x7C, 0x4C, 0xF9, 0x6B, + 0x0C, 0xFD, 0x0D, 0x76, 0xEE, 0xB4, 0xBB, 0x86, + 0xEE, 0xFF, 0x7B, 0x7D, 0xF1, 0x58, 0x5C, 0x8D, + 0x7A, 0x20, 0xC0, 0x63, 0x3A, 0x67, 0x90, 0x7F, + 0x6D, 0x28, 0x67, 0xC3, 0x26, 0x4A, 0x91, 0xC0, + 0x51, 0xAB, 0xAE, 0x6E, 0xEA, 0x5A, 0x91, 0xD8 + }, + { + 0x64, 0x81, 0xDC, 0xC8, 0x15, 0x7A, 0xE6, 0x28, + 0xB5, 0xCD, 0x52, 0x6B, 0xAC, 0x8F, 0x93, 0x31, + 0x56, 0xDE, 0xDA, 0xC9, 0x56, 0xA2, 0xB2, 0x2A, + 0x97, 0x4B, 0xF5, 0xF7, 0xEC, 0x2D, 0xB5, 0x80, + 0x6F, 0x53, 0xDD, 0x0E, 0x2D, 0xD5, 0x3D, 0xB8, + 0x7C, 0xD8, 0xF5, 0x8A, 0x58, 0x6F, 0x9B, 0x3C, + 0x5C, 0x52, 0x23, 0x31, 0xA3, 0x11, 0x74, 0xC4, + 0xE7, 0xB9, 0xB6, 0xF7, 0xF0, 0x57, 0xC2, 0x8F + }, + { + 0xA7, 0x1E, 0xA4, 0x5C, 0xE6, 0x61, 0x6A, 0x3D, + 0x2F, 0x0A, 0x59, 0x2D, 0x5D, 0x02, 0x86, 0x93, + 0x2D, 0xA6, 0x3C, 0x6D, 0xB1, 0x1D, 0x59, 0xC6, + 0x69, 0x1C, 0x35, 0xA5, 0x6F, 0x7E, 0xE4, 0xF8, + 0x0B, 0x6F, 0xC3, 0x40, 0xB4, 0xDB, 0xC1, 0x84, + 0x4C, 0x50, 0x40, 0xE6, 0x68, 0xD2, 0x89, 0x2F, + 0x4A, 0x4A, 0xE8, 0x53, 0x3F, 0x1B, 0x67, 0x71, + 0xBC, 0xFC, 0xE7, 0xC3, 0xA2, 0x3E, 0x0D, 0x97 + }, + { + 0x96, 0x93, 0x44, 0x87, 0x70, 0xFE, 0xAE, 0x42, + 0x17, 0x26, 0xEB, 0x20, 0x3B, 0x01, 0xC7, 0x08, + 0x23, 0xD5, 0xF4, 0x4C, 0xC5, 0x21, 0x3E, 0x6A, + 0x68, 0x28, 0x47, 0x29, 0xBD, 0x11, 0x7D, 0x9B, + 0xD1, 0x8F, 0xEC, 0x4A, 0x0A, 0x82, 0x4A, 0x24, + 0x08, 0x0F, 0x29, 0x8B, 0xAC, 0xD2, 0x96, 0xD7, + 0xB4, 0x97, 0x83, 0x8F, 0xBD, 0x7B, 0x0D, 0x57, + 0x5C, 0x52, 0x49, 0x2B, 0x3E, 0x6F, 0x92, 0x6B + }, + { + 0x37, 0xA1, 0x50, 0x66, 0xF2, 0xB9, 0xF9, 0x4C, + 0x24, 0x61, 0x1B, 0xC4, 0x53, 0xED, 0x02, 0x74, + 0x07, 0x8D, 0x1F, 0x70, 0xB2, 0xD3, 0x4C, 0x8B, + 0x96, 0x36, 0x08, 0x48, 0x9D, 0xCB, 0xE8, 0xDF, + 0x44, 0x8E, 0xDD, 0x9C, 0x73, 0x36, 0x2B, 0xB2, + 0xB6, 0x6B, 0xEE, 0xF6, 0x1F, 0xCE, 0x60, 0x10, + 0x6F, 0x70, 0x19, 0xED, 0x37, 0x3C, 0x69, 0x22, + 0x59, 0xD9, 0x55, 0x6A, 0x94, 0x0B, 0x1A, 0x06 + }, + { + 0xBD, 0x44, 0xE7, 0x39, 0xE1, 0xF9, 0xDB, 0x1C, + 0x6B, 0xAF, 0x42, 0xCA, 0x4A, 0x12, 0xAC, 0x09, + 0x9B, 0x96, 0xF6, 0xB3, 0x6C, 0x4B, 0xCB, 0x1B, + 0x72, 0xEE, 0xFF, 0x08, 0xA6, 0x49, 0x68, 0x35, + 0xEC, 0x65, 0x15, 0x0B, 0xE8, 0xFE, 0x16, 0xCB, + 0xE3, 0x27, 0x07, 0xE3, 0x47, 0x54, 0x7D, 0xC5, + 0xA5, 0x83, 0xD2, 0x65, 0x74, 0x6F, 0xA5, 0x95, + 0xC5, 0xE7, 0x73, 0x0F, 0xCF, 0x24, 0x58, 0x1E + }, + { + 0xFA, 0xB2, 0x03, 0x8E, 0x94, 0x98, 0xA1, 0xC3, + 0x9E, 0x05, 0x78, 0xA0, 0xA5, 0xEA, 0x6B, 0x44, + 0xF3, 0xC1, 0xB4, 0x1A, 0xE5, 0x67, 0xF9, 0x91, + 0x4A, 0x95, 0xB1, 0x31, 0xC4, 0x8D, 0x12, 0x1E, + 0xCA, 0xCE, 0xA8, 0x95, 0xA0, 0x9B, 0x1D, 0x4E, + 0x04, 0x42, 0xBE, 0xC9, 0xC5, 0x0C, 0x50, 0xE0, + 0x0A, 0x9F, 0xAF, 0xEF, 0xFA, 0xE0, 0x70, 0x88, + 0x4C, 0x26, 0x25, 0xA8, 0xB1, 0xA2, 0x17, 0x26 + }, + { + 0x05, 0xA1, 0xB7, 0x6B, 0x2F, 0xD5, 0x62, 0x11, + 0xE0, 0xF2, 0xD7, 0x5A, 0x25, 0x16, 0x54, 0xA7, + 0x72, 0xF5, 0x5E, 0x18, 0xCA, 0x02, 0x2A, 0xF5, + 0x2C, 0xB3, 0x30, 0x19, 0x1E, 0x98, 0xA3, 0xB8, + 0xEB, 0x87, 0xE5, 0x11, 0x7B, 0xAE, 0x58, 0x04, + 0x4D, 0x94, 0x4C, 0x1F, 0x18, 0x85, 0x45, 0x12, + 0x25, 0x41, 0x77, 0x35, 0xFC, 0x72, 0xF7, 0x39, + 0x36, 0x69, 0x3C, 0xFF, 0x45, 0x46, 0x9F, 0x8C + }, + { + 0x2A, 0x30, 0xC9, 0x6B, 0xDA, 0xC7, 0x8A, 0x39, + 0x94, 0xEE, 0xCA, 0xA5, 0xA5, 0x3F, 0x82, 0x7F, + 0x58, 0xE1, 0x32, 0x31, 0xA0, 0xD1, 0x13, 0x08, + 0x6C, 0x06, 0xB1, 0xBD, 0xAB, 0xDA, 0x38, 0xD0, + 0x8F, 0x1A, 0xE2, 0x7D, 0xE2, 0x5F, 0xD2, 0x2E, + 0xEA, 0x70, 0xC0, 0x5F, 0x01, 0x32, 0xBF, 0x7A, + 0x50, 0x1C, 0x82, 0xAE, 0x62, 0x15, 0xBF, 0xEF, + 0x3C, 0x01, 0x63, 0x98, 0xBA, 0xF2, 0xCB, 0x62 + }, + { + 0x48, 0xDB, 0x53, 0x76, 0x5B, 0x82, 0xBD, 0x6F, + 0x25, 0x33, 0xEA, 0xE1, 0x7F, 0x67, 0x69, 0xD7, + 0xA4, 0xE3, 0xB2, 0x43, 0x74, 0x60, 0x1C, 0xDD, + 0x8E, 0xC0, 0xCA, 0x3A, 0xAB, 0x30, 0x93, 0xFD, + 0x2B, 0x99, 0x24, 0x38, 0x46, 0x0B, 0xAF, 0x8D, + 0xA5, 0x8F, 0xB9, 0xA8, 0x9B, 0x2C, 0x58, 0xF9, + 0x68, 0xE6, 0x36, 0x17, 0xCB, 0xEB, 0x18, 0x44, + 0xB0, 0x2D, 0x6A, 0x27, 0xC5, 0xB4, 0xAD, 0x41 + }, + { + 0x5C, 0x8B, 0x2E, 0x0E, 0x1B, 0x5C, 0x8F, 0x45, + 0x7D, 0x7F, 0x7B, 0xD9, 0xF0, 0x5A, 0x97, 0xE5, + 0x8D, 0xDA, 0x1D, 0x28, 0xDB, 0x9F, 0x34, 0xD1, + 0xCE, 0x73, 0x25, 0x28, 0xF9, 0x68, 0xBE, 0xDD, + 0x9E, 0x1C, 0xC9, 0x35, 0x2D, 0x0A, 0x5D, 0xF6, + 0x67, 0x29, 0x28, 0xBD, 0xD3, 0xEA, 0x6F, 0x5C, + 0xB0, 0x60, 0x77, 0xCF, 0x3A, 0xD3, 0xA7, 0x6E, + 0x29, 0xB2, 0x2E, 0x82, 0xBA, 0xC6, 0x7B, 0x61 + }, + { + 0x5B, 0x73, 0x91, 0xAA, 0x52, 0xF2, 0x76, 0xFA, + 0xB9, 0xC1, 0x38, 0x77, 0xF1, 0x22, 0x32, 0x70, + 0x84, 0x97, 0xFC, 0x02, 0x8F, 0xAA, 0x17, 0x32, + 0xA5, 0xDB, 0x07, 0x9E, 0x7F, 0xE0, 0x73, 0xED, + 0x0C, 0xC9, 0x52, 0x9C, 0xFC, 0x86, 0x3A, 0x4E, + 0xCB, 0xA4, 0xDC, 0x2F, 0x1E, 0xA9, 0xF6, 0xBD, + 0x69, 0x04, 0xF3, 0xA0, 0xC1, 0x07, 0x19, 0x3C, + 0x5E, 0x71, 0x1C, 0xB9, 0x11, 0xF3, 0x80, 0x25 + }, + { + 0x1D, 0x5A, 0xF7, 0x0F, 0x09, 0xA5, 0xFC, 0x69, + 0x16, 0xEF, 0x59, 0xA3, 0x8A, 0x86, 0x92, 0x6D, + 0xCA, 0xAE, 0x39, 0xA8, 0x95, 0x4D, 0x73, 0xFC, + 0x80, 0xA3, 0x50, 0x75, 0x1A, 0xDD, 0xA3, 0x8C, + 0x9D, 0x59, 0x75, 0x06, 0xDC, 0x05, 0xE1, 0xED, + 0x37, 0xBD, 0x2D, 0xB1, 0x59, 0x0F, 0x99, 0xAA, + 0x29, 0x6A, 0xEA, 0x13, 0xAB, 0x84, 0x43, 0xD5, + 0xA9, 0x23, 0x47, 0xFB, 0x85, 0xFC, 0x81, 0x6D + }, + { + 0x80, 0xE3, 0x70, 0x92, 0x97, 0xD4, 0x41, 0x14, + 0xB9, 0xFB, 0xDF, 0x55, 0x67, 0xF0, 0x5F, 0x33, + 0x00, 0x94, 0xCF, 0x09, 0xF4, 0xC0, 0xEF, 0xCF, + 0xAC, 0x05, 0x09, 0x5C, 0x36, 0x08, 0x10, 0x77, + 0x30, 0xC1, 0xAA, 0x07, 0xFF, 0x23, 0x00, 0x25, + 0x62, 0xC7, 0xE8, 0x41, 0xA9, 0xF5, 0x66, 0x24, + 0xFF, 0xE2, 0xAB, 0xEC, 0x61, 0x1E, 0xB9, 0xE7, + 0x3E, 0x1C, 0xCB, 0xD8, 0xF6, 0x2B, 0x11, 0x49 + }, + { + 0xF9, 0x94, 0x5C, 0x19, 0x06, 0x77, 0x84, 0x61, + 0x94, 0x13, 0x2B, 0x49, 0x6E, 0xC6, 0x01, 0x2C, + 0x08, 0x75, 0x0E, 0x02, 0x5F, 0xD5, 0x52, 0xED, + 0x32, 0x4D, 0x3A, 0x49, 0xD8, 0x63, 0x66, 0xC0, + 0x3D, 0xCC, 0xDE, 0x8D, 0x5B, 0x5A, 0xC9, 0xA4, + 0xBC, 0xB7, 0x19, 0x5E, 0x63, 0xBC, 0xAA, 0x93, + 0x9E, 0x8E, 0xDA, 0x18, 0xF1, 0x16, 0x94, 0xB6, + 0xFA, 0x69, 0x37, 0x39, 0x3B, 0xFF, 0xDB, 0xF4 + }, + { + 0x8D, 0x8F, 0x2E, 0xD9, 0xAE, 0x39, 0x80, 0x9A, + 0xAC, 0xAD, 0x2F, 0xCE, 0xDB, 0xD2, 0xDC, 0xA7, + 0x30, 0xC7, 0x83, 0xE6, 0x2F, 0xF7, 0x0B, 0x8D, + 0x3C, 0x53, 0x62, 0xF0, 0x73, 0xF8, 0x34, 0x67, + 0x19, 0x7D, 0x37, 0x56, 0xB4, 0x45, 0x19, 0x5F, + 0xE7, 0x52, 0x11, 0x73, 0x64, 0xD9, 0x2C, 0xF4, + 0x2C, 0x02, 0x6E, 0x40, 0x9D, 0x5F, 0xF7, 0xA9, + 0x53, 0x3E, 0xAB, 0x78, 0xF1, 0x75, 0x4A, 0x2D + }, + { + 0x3A, 0xC9, 0x9A, 0xC5, 0x3A, 0xC4, 0x9A, 0x56, + 0xFA, 0xA1, 0x86, 0x46, 0xB8, 0xE0, 0x8A, 0x2D, + 0x35, 0xBE, 0x80, 0xDF, 0x3E, 0xFB, 0xBB, 0xA6, + 0xBD, 0xA4, 0xAE, 0x90, 0x2B, 0x8D, 0x3E, 0x17, + 0x0A, 0x7B, 0xE8, 0x60, 0x5C, 0x34, 0xA4, 0xDC, + 0x9A, 0x73, 0x62, 0xB1, 0xC2, 0x01, 0xD7, 0x02, + 0x39, 0x1B, 0xD7, 0xD5, 0x20, 0x7F, 0x95, 0xFA, + 0x39, 0x0C, 0xE3, 0x3C, 0x43, 0x14, 0xD4, 0x11 + }, + { + 0xE4, 0x69, 0x4B, 0xDB, 0x31, 0x01, 0x6F, 0x25, + 0x53, 0x2C, 0x04, 0x3C, 0x5C, 0x63, 0x08, 0xCC, + 0x61, 0x9B, 0x0F, 0x87, 0x16, 0xF0, 0xC2, 0x9E, + 0xEB, 0x9F, 0x34, 0x0F, 0x47, 0xB0, 0x7B, 0x4A, + 0x4C, 0xE0, 0x98, 0x4C, 0x47, 0x24, 0xB1, 0x2A, + 0xB3, 0xD3, 0x2A, 0xF5, 0x16, 0xAD, 0xA2, 0x64, + 0x4C, 0xA6, 0x55, 0x8C, 0x1C, 0xB5, 0x81, 0x5C, + 0x12, 0x12, 0xA9, 0xB5, 0xFA, 0x83, 0x44, 0x12 + }, + { + 0xC6, 0x3C, 0x70, 0x3E, 0x62, 0x10, 0x8A, 0xA0, + 0xED, 0xC6, 0x83, 0xF3, 0x67, 0x8A, 0x00, 0x78, + 0x8F, 0xB1, 0x00, 0xC0, 0x96, 0x0B, 0x4E, 0x98, + 0xB7, 0x6A, 0x48, 0xE4, 0xE5, 0x92, 0x3D, 0x34, + 0x13, 0x44, 0x8D, 0xB8, 0x87, 0x5E, 0x3B, 0xCE, + 0xA7, 0xB6, 0xB8, 0x5D, 0x9E, 0x3E, 0xEA, 0xB7, + 0x2C, 0xD1, 0x50, 0x96, 0xFB, 0xBB, 0x2C, 0xC4, + 0x27, 0x03, 0x17, 0xFC, 0x34, 0xD4, 0x04, 0x71 + }, + { + 0x90, 0x80, 0xB7, 0xE8, 0x41, 0xEF, 0x51, 0x9C, + 0x54, 0x17, 0xE6, 0x90, 0xAA, 0xF4, 0x32, 0x79, + 0x07, 0xA8, 0x3D, 0xBC, 0xB7, 0x38, 0xD0, 0xF7, + 0x30, 0x8B, 0x1D, 0x61, 0x1D, 0xEF, 0x16, 0x9A, + 0x4F, 0x47, 0x42, 0x3E, 0x69, 0x0F, 0x27, 0xA7, + 0xE2, 0x74, 0x1A, 0xE7, 0x86, 0x5D, 0xA2, 0x3C, + 0x5D, 0x3F, 0x13, 0xC3, 0x16, 0x06, 0x3C, 0x7A, + 0xA1, 0xA9, 0x58, 0xE5, 0xBE, 0x83, 0x8F, 0x04 + }, + { + 0x29, 0x8D, 0xF6, 0x46, 0x91, 0x5F, 0x04, 0xD6, + 0x65, 0xE9, 0x67, 0x5E, 0x6A, 0x10, 0x31, 0x87, + 0x0D, 0x28, 0xEB, 0x7A, 0x04, 0x05, 0x66, 0x3E, + 0xAC, 0x3B, 0x10, 0xD1, 0xB4, 0xFA, 0x2E, 0x86, + 0x8E, 0x63, 0x73, 0xA5, 0x86, 0xCD, 0x73, 0xE0, + 0x6D, 0x8E, 0x7A, 0xD7, 0x71, 0xB4, 0xFB, 0x0A, + 0x8B, 0x4F, 0xC2, 0xDC, 0x6C, 0xE0, 0x9C, 0x64, + 0x2E, 0xE8, 0x99, 0x26, 0xFD, 0xC6, 0x52, 0x60 + }, + { + 0x4F, 0x2D, 0xE9, 0xC4, 0xF4, 0x34, 0x8B, 0xDB, + 0x32, 0x3A, 0x66, 0x83, 0x72, 0xE7, 0x71, 0x42, + 0x99, 0xC7, 0x76, 0xF9, 0x60, 0x2F, 0x3A, 0xF8, + 0xFB, 0x77, 0x46, 0xF1, 0x76, 0x86, 0x8D, 0xF3, + 0x54, 0x2B, 0x2F, 0xA6, 0x9E, 0xAE, 0x38, 0xB6, + 0xA2, 0x6A, 0x06, 0xCA, 0x89, 0x42, 0xF8, 0x82, + 0x78, 0xC6, 0x4E, 0x3D, 0x01, 0x7F, 0xEE, 0x67, + 0xA9, 0x4E, 0xA0, 0x23, 0xB2, 0xB5, 0xBE, 0x5F + }, + { + 0x40, 0x18, 0xC5, 0xEE, 0x90, 0x93, 0xA6, 0x81, + 0x11, 0x2F, 0x4C, 0xE1, 0x93, 0xA1, 0xD6, 0x5E, + 0x05, 0x48, 0x72, 0x5F, 0x96, 0xAE, 0x31, 0x53, + 0x87, 0xCD, 0x76, 0x5C, 0x2B, 0x9C, 0x30, 0x68, + 0xAE, 0x4C, 0xBE, 0x5C, 0xD5, 0x40, 0x2C, 0x11, + 0xC5, 0x5A, 0x9D, 0x78, 0x5F, 0xFD, 0xFC, 0x2B, + 0xDE, 0x6E, 0x7A, 0xCF, 0x19, 0x61, 0x74, 0x75, + 0xDA, 0xE0, 0xEB, 0x01, 0x44, 0x56, 0xCE, 0x45 + }, + { + 0x6F, 0xCE, 0x66, 0x75, 0xE8, 0x6D, 0x7E, 0x85, + 0x70, 0x4C, 0x96, 0xC2, 0x95, 0x70, 0x3C, 0xD9, + 0x54, 0x98, 0x59, 0x0E, 0x50, 0x76, 0x4D, 0x23, + 0xD7, 0xA7, 0xA3, 0xA3, 0x22, 0x68, 0xA0, 0xB3, + 0xC9, 0x91, 0xE8, 0xF7, 0x84, 0x87, 0x69, 0x9A, + 0x55, 0x4B, 0x58, 0x1E, 0x33, 0x9C, 0x09, 0xAE, + 0xC9, 0x82, 0xE0, 0xBA, 0xA4, 0x31, 0x87, 0x93, + 0x62, 0x06, 0x35, 0xE1, 0xE2, 0xC8, 0xD9, 0xF2 + }, + { + 0xEB, 0xA9, 0x37, 0x85, 0x91, 0x97, 0xC7, 0xFD, + 0x41, 0x2D, 0xBC, 0x9A, 0xFC, 0x0D, 0x67, 0xCC, + 0x19, 0x81, 0x60, 0xB5, 0xA9, 0xCC, 0xEE, 0x87, + 0xC4, 0x1A, 0x86, 0x64, 0x85, 0x9F, 0x3E, 0xFD, + 0x96, 0x13, 0x66, 0xA8, 0x09, 0xC7, 0xC6, 0xBC, + 0x6F, 0xA8, 0x44, 0x92, 0x68, 0x14, 0xE0, 0xB4, + 0xEF, 0xA3, 0x7E, 0xDE, 0x2C, 0x88, 0x44, 0x26, + 0x8D, 0x7F, 0x35, 0x56, 0xE4, 0x46, 0x58, 0x1D + }, + { + 0x83, 0xF4, 0x33, 0xE4, 0xF1, 0xC5, 0x07, 0x97, + 0x49, 0x3C, 0x58, 0xC2, 0x64, 0xCF, 0xFA, 0x70, + 0xC4, 0xA7, 0xA2, 0x4C, 0x33, 0x4D, 0xBA, 0xA3, + 0xC5, 0x74, 0x89, 0xD9, 0x70, 0xD4, 0x9D, 0x69, + 0x49, 0xFE, 0x45, 0xB7, 0x04, 0xF2, 0x65, 0xEF, + 0xD2, 0xAE, 0xE1, 0xAC, 0x1B, 0x46, 0xF4, 0xAA, + 0x3E, 0x4F, 0xAD, 0x68, 0xB3, 0x79, 0x61, 0xD2, + 0xC7, 0x28, 0x0A, 0xE1, 0x96, 0x72, 0xC8, 0x50 + }, + { + 0xB5, 0x57, 0xEC, 0xE1, 0x22, 0x72, 0x49, 0x3D, + 0xC2, 0x7E, 0x88, 0xA0, 0x5A, 0xDC, 0xD8, 0x61, + 0x87, 0x5A, 0x0C, 0xD0, 0x0B, 0xD6, 0x8A, 0xDC, + 0x3A, 0x30, 0x1D, 0x26, 0x3A, 0x9C, 0xD9, 0x93, + 0xA9, 0x6A, 0xE1, 0x4C, 0xFC, 0xDD, 0xCB, 0x99, + 0x7C, 0xC9, 0x86, 0x23, 0x93, 0x50, 0x50, 0xEA, + 0x43, 0x55, 0x2A, 0x34, 0x11, 0x07, 0x18, 0x7D, + 0xE7, 0x5C, 0x4E, 0xDE, 0xD7, 0xC7, 0x86, 0xBD + }, + { + 0x95, 0x89, 0xC0, 0x81, 0x3B, 0x73, 0x93, 0xDB, + 0xAA, 0xAF, 0xE4, 0x7A, 0xF5, 0xB4, 0x08, 0xB2, + 0x3C, 0x8A, 0x8C, 0x8B, 0xAC, 0x62, 0x55, 0x4B, + 0x8F, 0xA1, 0x32, 0xA3, 0x58, 0xCE, 0x30, 0x83, + 0xB1, 0xD4, 0xE3, 0x97, 0x07, 0xCD, 0x54, 0xA5, + 0x5F, 0x67, 0x3D, 0x48, 0x11, 0x6E, 0xB1, 0xF9, + 0xED, 0x8D, 0xE9, 0xC9, 0x43, 0xCD, 0x2D, 0xE4, + 0x60, 0xA6, 0x8B, 0xDD, 0xF7, 0x1E, 0x98, 0x03 + }, + { + 0xAE, 0x4C, 0xCF, 0x27, 0xAB, 0x00, 0xA4, 0x0C, + 0x36, 0x37, 0xD3, 0xD2, 0xCE, 0x51, 0xA8, 0x3E, + 0xFB, 0xA6, 0x2D, 0x4A, 0x6F, 0xDA, 0xD6, 0x95, + 0x06, 0x3F, 0xBC, 0x60, 0xA2, 0xD8, 0x2E, 0xC5, + 0xA5, 0x4A, 0xCB, 0xE0, 0x9B, 0xA9, 0x38, 0x8F, + 0x49, 0xAA, 0xC2, 0x7C, 0x99, 0x2D, 0x84, 0x63, + 0x20, 0x36, 0xE1, 0xBD, 0xD4, 0xC5, 0x29, 0xBB, + 0xF1, 0x85, 0x1E, 0xAE, 0x0C, 0x6E, 0xA9, 0x02 + }, + { + 0xA3, 0x94, 0x4B, 0x2C, 0x31, 0xCB, 0x49, 0x40, + 0x80, 0xB7, 0xEE, 0x1D, 0xB0, 0x81, 0x68, 0x53, + 0xE4, 0x25, 0xB5, 0x4C, 0x48, 0xD6, 0x31, 0x44, + 0x7E, 0xA5, 0x2C, 0x1D, 0x29, 0x52, 0x07, 0x9B, + 0xD8, 0x8F, 0xAB, 0x9E, 0xD0, 0xB7, 0xD8, 0xC0, + 0xBA, 0xAF, 0x0C, 0x4E, 0xCA, 0x19, 0x10, 0xDB, + 0x6F, 0x98, 0x53, 0x4F, 0x0D, 0x42, 0xE5, 0xEB, + 0xB6, 0xC0, 0xA7, 0x5E, 0xF0, 0xD8, 0xB2, 0xC0 + }, + { + 0xCF, 0xA1, 0xA2, 0x24, 0x68, 0x5A, 0x5F, 0xB2, + 0x01, 0x04, 0x58, 0x20, 0x1C, 0xEB, 0x0C, 0xDA, + 0x21, 0xC8, 0x2B, 0x16, 0x02, 0xDC, 0x41, 0x35, + 0x85, 0xFB, 0xCE, 0x80, 0x97, 0x6F, 0x06, 0x1C, + 0x23, 0x5B, 0x13, 0x67, 0x71, 0x24, 0x98, 0x14, + 0x4A, 0xC1, 0x6A, 0x98, 0x54, 0xF6, 0xFB, 0x32, + 0x3C, 0xBE, 0xB6, 0x23, 0x69, 0xCF, 0x9B, 0x75, + 0x2B, 0x92, 0x52, 0xA2, 0xA7, 0xAC, 0xE1, 0xFD + }, + { + 0xFA, 0x62, 0xC6, 0xCF, 0xC8, 0xF0, 0x79, 0xE5, + 0x8F, 0x3D, 0x3F, 0xEF, 0xD7, 0xC2, 0x24, 0xE7, + 0x1E, 0xBC, 0x69, 0xA9, 0x5B, 0x18, 0x35, 0xCC, + 0xC3, 0x2F, 0x35, 0x07, 0x77, 0x05, 0x11, 0x02, + 0x61, 0x54, 0x92, 0xD6, 0x7F, 0xB6, 0xDE, 0x62, + 0xCF, 0x2A, 0xD5, 0xB1, 0x84, 0x67, 0xFE, 0x87, + 0x15, 0x74, 0x88, 0x82, 0xDB, 0x89, 0xFF, 0x86, + 0xEF, 0xDF, 0x2F, 0x96, 0xF8, 0x13, 0x5E, 0xD2 + }, + { + 0xCC, 0x63, 0x3F, 0xD4, 0xEA, 0x6A, 0xC4, 0x08, + 0xC3, 0x87, 0x57, 0x56, 0xB9, 0x01, 0x28, 0x8A, + 0x1D, 0xE1, 0x91, 0x89, 0x28, 0x32, 0xBE, 0x2E, + 0x90, 0x26, 0xDC, 0x65, 0xC2, 0xFF, 0x00, 0x00, + 0x9F, 0x14, 0x36, 0xDD, 0xFF, 0x42, 0x06, 0x26, + 0x0A, 0x3D, 0x66, 0xEF, 0x61, 0x92, 0x14, 0x3E, + 0x57, 0x2F, 0x1E, 0x4B, 0xB8, 0xE5, 0xA7, 0x4B, + 0x12, 0x05, 0x5E, 0x42, 0x41, 0x1C, 0x18, 0xBC + }, + { + 0x44, 0xD2, 0xBF, 0x7F, 0x36, 0x96, 0xB8, 0x93, + 0x3F, 0x25, 0x5B, 0x9B, 0xE1, 0xA4, 0xA6, 0xAE, + 0x33, 0x16, 0xC2, 0x5D, 0x03, 0x95, 0xF5, 0x90, + 0xB9, 0xB9, 0x89, 0x8F, 0x12, 0x7E, 0x40, 0xD3, + 0xF4, 0x12, 0x4D, 0x7B, 0xDB, 0xC8, 0x72, 0x5F, + 0x00, 0xB0, 0xD2, 0x81, 0x50, 0xFF, 0x05, 0xB4, + 0xA7, 0x9E, 0x5E, 0x04, 0xE3, 0x4A, 0x47, 0xE9, + 0x08, 0x7B, 0x3F, 0x79, 0xD4, 0x13, 0xAB, 0x7F + }, + { + 0x96, 0xFB, 0xCB, 0xB6, 0x0B, 0xD3, 0x13, 0xB8, + 0x84, 0x50, 0x33, 0xE5, 0xBC, 0x05, 0x8A, 0x38, + 0x02, 0x74, 0x38, 0x57, 0x2D, 0x7E, 0x79, 0x57, + 0xF3, 0x68, 0x4F, 0x62, 0x68, 0xAA, 0xDD, 0x3A, + 0xD0, 0x8D, 0x21, 0x76, 0x7E, 0xD6, 0x87, 0x86, + 0x85, 0x33, 0x1B, 0xA9, 0x85, 0x71, 0x48, 0x7E, + 0x12, 0x47, 0x0A, 0xAD, 0x66, 0x93, 0x26, 0x71, + 0x6E, 0x46, 0x66, 0x7F, 0x69, 0xF8, 0xD7, 0xE8 + }, +}; + + + + +#endif + + + diff --git a/src/blake2.h b/src/blake2.h new file mode 100644 index 0000000..316d48e --- /dev/null +++ b/src/blake2.h @@ -0,0 +1,168 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2_H__ +#define __BLAKE2_H__ + +#include +#include + +#if defined(_MSC_VER) + #if defined(DYNAMIC_LIB) + #if defined(DYNAMIC_LIB_EXPORT) + #define EXPORT_DLL __declspec(dllexport) + #else + #define EXPORT_DLL __declspec(dllimport) + #endif + #else + #define EXPORT_DLL + #endif +#else + #define EXPORT_DLL +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + + enum blake2s_constant + { + BLAKE2S_BLOCKBYTES = 64, + BLAKE2S_OUTBYTES = 32, + BLAKE2S_KEYBYTES = 32, + BLAKE2S_SALTBYTES = 8, + BLAKE2S_PERSONALBYTES = 8 + }; + + enum blake2b_constant + { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16 + }; + +#pragma pack(push, 1) + typedef struct __blake2s_param + { + uint8_t digest_length; // 1 + uint8_t key_length; // 2 + uint8_t fanout; // 3 + uint8_t depth; // 4 + uint32_t leaf_length; // 8 + uint8_t node_offset[6];// 14 + uint8_t node_depth; // 15 + uint8_t inner_length; // 16 + // uint8_t reserved[0]; + uint8_t salt[BLAKE2S_SALTBYTES]; // 24 + uint8_t personal[BLAKE2S_PERSONALBYTES]; // 32 + } blake2s_param; + + typedef struct __blake2s_state + { + uint32_t h[8]; + uint32_t t[2]; + uint32_t f[2]; + uint8_t buf[2 * BLAKE2S_BLOCKBYTES]; + uint32_t buflen; + uint8_t outlen; + uint8_t last_node; + } blake2s_state; + + typedef struct __blake2b_param + { + uint8_t digest_length; // 1 + uint8_t key_length; // 2 + uint8_t fanout; // 3 + uint8_t depth; // 4 + uint32_t leaf_length; // 8 + uint64_t node_offset; // 16 + uint8_t node_depth; // 17 + uint8_t inner_length; // 18 + uint8_t reserved[14]; // 32 + uint8_t salt[BLAKE2B_SALTBYTES]; // 48 + uint8_t personal[BLAKE2B_PERSONALBYTES]; // 64 + } blake2b_param; + + typedef struct __blake2b_state + { + uint64_t h[8]; + uint64_t t[2]; + uint64_t f[2]; + uint8_t buf[2 * BLAKE2B_BLOCKBYTES]; + uint32_t buflen; + uint8_t outlen; + uint8_t last_node; + } blake2b_state; + + typedef struct __blake2sp_state + { + blake2s_state S[8][1]; + blake2s_state R[1]; + uint8_t buf[8 * BLAKE2S_BLOCKBYTES]; + uint32_t buflen; + uint8_t outlen; + } blake2sp_state; + + typedef struct __blake2bp_state + { + blake2b_state S[4][1]; + blake2b_state R[1]; + uint8_t buf[4 * BLAKE2B_BLOCKBYTES]; + uint32_t buflen; + uint8_t outlen; + } blake2bp_state; +#pragma pack(pop) + + // Streaming API + EXPORT_DLL int blake2s_init( blake2s_state *S, size_t outlen ); + EXPORT_DLL int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + EXPORT_DLL int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); + EXPORT_DLL int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ); + EXPORT_DLL int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ); + + EXPORT_DLL int blake2b_init( blake2b_state *S, size_t outlen ); + EXPORT_DLL int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + EXPORT_DLL int blake2b_init_param( blake2b_state *S, const blake2b_param *P ); + EXPORT_DLL int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ); + EXPORT_DLL int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ); + + EXPORT_DLL int blake2sp_init( blake2sp_state *S, size_t outlen ); + EXPORT_DLL int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen ); + EXPORT_DLL int blake2sp_update( blake2sp_state *S, const uint8_t *in, size_t inlen ); + EXPORT_DLL int blake2sp_final( blake2sp_state *S, uint8_t *out, size_t outlen ); + + EXPORT_DLL int blake2bp_init( blake2bp_state *S, size_t outlen ); + EXPORT_DLL int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen ); + EXPORT_DLL int blake2bp_update( blake2bp_state *S, const uint8_t *in, size_t inlen ); + EXPORT_DLL int blake2bp_final( blake2bp_state *S, uint8_t *out, size_t outlen ); + + // Simple API + EXPORT_DLL int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + EXPORT_DLL int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + EXPORT_DLL int blake2sp( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + EXPORT_DLL int blake2bp( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); + + static inline int blake2( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) + { + return blake2b( out, in, key, outlen, inlen, keylen ); + } + +#if defined(__cplusplus) +} +#endif + +#endif + diff --git a/src/blake2b-load-sse2.h b/src/blake2b-load-sse2.h new file mode 100644 index 0000000..1ba153c --- /dev/null +++ b/src/blake2b-load-sse2.h @@ -0,0 +1,68 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2B_LOAD_SSE2_H__ +#define __BLAKE2B_LOAD_SSE2_H__ + +#define LOAD_MSG_0_1(b0, b1) b0 = _mm_set_epi64x(m2, m0); b1 = _mm_set_epi64x(m6, m4) +#define LOAD_MSG_0_2(b0, b1) b0 = _mm_set_epi64x(m3, m1); b1 = _mm_set_epi64x(m7, m5) +#define LOAD_MSG_0_3(b0, b1) b0 = _mm_set_epi64x(m10, m8); b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_0_4(b0, b1) b0 = _mm_set_epi64x(m11, m9); b1 = _mm_set_epi64x(m15, m13) +#define LOAD_MSG_1_1(b0, b1) b0 = _mm_set_epi64x(m4, m14); b1 = _mm_set_epi64x(m13, m9) +#define LOAD_MSG_1_2(b0, b1) b0 = _mm_set_epi64x(m8, m10); b1 = _mm_set_epi64x(m6, m15) +#define LOAD_MSG_1_3(b0, b1) b0 = _mm_set_epi64x(m0, m1); b1 = _mm_set_epi64x(m5, m11) +#define LOAD_MSG_1_4(b0, b1) b0 = _mm_set_epi64x(m2, m12); b1 = _mm_set_epi64x(m3, m7) +#define LOAD_MSG_2_1(b0, b1) b0 = _mm_set_epi64x(m12, m11); b1 = _mm_set_epi64x(m15, m5) +#define LOAD_MSG_2_2(b0, b1) b0 = _mm_set_epi64x(m0, m8); b1 = _mm_set_epi64x(m13, m2) +#define LOAD_MSG_2_3(b0, b1) b0 = _mm_set_epi64x(m3, m10); b1 = _mm_set_epi64x(m9, m7) +#define LOAD_MSG_2_4(b0, b1) b0 = _mm_set_epi64x(m6, m14); b1 = _mm_set_epi64x(m4, m1) +#define LOAD_MSG_3_1(b0, b1) b0 = _mm_set_epi64x(m3, m7); b1 = _mm_set_epi64x(m11, m13) +#define LOAD_MSG_3_2(b0, b1) b0 = _mm_set_epi64x(m1, m9); b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_3_3(b0, b1) b0 = _mm_set_epi64x(m5, m2); b1 = _mm_set_epi64x(m15, m4) +#define LOAD_MSG_3_4(b0, b1) b0 = _mm_set_epi64x(m10, m6); b1 = _mm_set_epi64x(m8, m0) +#define LOAD_MSG_4_1(b0, b1) b0 = _mm_set_epi64x(m5, m9); b1 = _mm_set_epi64x(m10, m2) +#define LOAD_MSG_4_2(b0, b1) b0 = _mm_set_epi64x(m7, m0); b1 = _mm_set_epi64x(m15, m4) +#define LOAD_MSG_4_3(b0, b1) b0 = _mm_set_epi64x(m11, m14); b1 = _mm_set_epi64x(m3, m6) +#define LOAD_MSG_4_4(b0, b1) b0 = _mm_set_epi64x(m12, m1); b1 = _mm_set_epi64x(m13, m8) +#define LOAD_MSG_5_1(b0, b1) b0 = _mm_set_epi64x(m6, m2); b1 = _mm_set_epi64x(m8, m0) +#define LOAD_MSG_5_2(b0, b1) b0 = _mm_set_epi64x(m10, m12); b1 = _mm_set_epi64x(m3, m11) +#define LOAD_MSG_5_3(b0, b1) b0 = _mm_set_epi64x(m7, m4); b1 = _mm_set_epi64x(m1, m15) +#define LOAD_MSG_5_4(b0, b1) b0 = _mm_set_epi64x(m5, m13); b1 = _mm_set_epi64x(m9, m14) +#define LOAD_MSG_6_1(b0, b1) b0 = _mm_set_epi64x(m1, m12); b1 = _mm_set_epi64x(m4, m14) +#define LOAD_MSG_6_2(b0, b1) b0 = _mm_set_epi64x(m15, m5); b1 = _mm_set_epi64x(m10, m13) +#define LOAD_MSG_6_3(b0, b1) b0 = _mm_set_epi64x(m6, m0); b1 = _mm_set_epi64x(m8, m9) +#define LOAD_MSG_6_4(b0, b1) b0 = _mm_set_epi64x(m3, m7); b1 = _mm_set_epi64x(m11, m2) +#define LOAD_MSG_7_1(b0, b1) b0 = _mm_set_epi64x(m7, m13); b1 = _mm_set_epi64x(m3, m12) +#define LOAD_MSG_7_2(b0, b1) b0 = _mm_set_epi64x(m14, m11); b1 = _mm_set_epi64x(m9, m1) +#define LOAD_MSG_7_3(b0, b1) b0 = _mm_set_epi64x(m15, m5); b1 = _mm_set_epi64x(m2, m8) +#define LOAD_MSG_7_4(b0, b1) b0 = _mm_set_epi64x(m4, m0); b1 = _mm_set_epi64x(m10, m6) +#define LOAD_MSG_8_1(b0, b1) b0 = _mm_set_epi64x(m14, m6); b1 = _mm_set_epi64x(m0, m11) +#define LOAD_MSG_8_2(b0, b1) b0 = _mm_set_epi64x(m9, m15); b1 = _mm_set_epi64x(m8, m3) +#define LOAD_MSG_8_3(b0, b1) b0 = _mm_set_epi64x(m13, m12); b1 = _mm_set_epi64x(m10, m1) +#define LOAD_MSG_8_4(b0, b1) b0 = _mm_set_epi64x(m7, m2); b1 = _mm_set_epi64x(m5, m4) +#define LOAD_MSG_9_1(b0, b1) b0 = _mm_set_epi64x(m8, m10); b1 = _mm_set_epi64x(m1, m7) +#define LOAD_MSG_9_2(b0, b1) b0 = _mm_set_epi64x(m4, m2); b1 = _mm_set_epi64x(m5, m6) +#define LOAD_MSG_9_3(b0, b1) b0 = _mm_set_epi64x(m9, m15); b1 = _mm_set_epi64x(m13, m3) +#define LOAD_MSG_9_4(b0, b1) b0 = _mm_set_epi64x(m14, m11); b1 = _mm_set_epi64x(m0, m12) +#define LOAD_MSG_10_1(b0, b1) b0 = _mm_set_epi64x(m2, m0); b1 = _mm_set_epi64x(m6, m4) +#define LOAD_MSG_10_2(b0, b1) b0 = _mm_set_epi64x(m3, m1); b1 = _mm_set_epi64x(m7, m5) +#define LOAD_MSG_10_3(b0, b1) b0 = _mm_set_epi64x(m10, m8); b1 = _mm_set_epi64x(m14, m12) +#define LOAD_MSG_10_4(b0, b1) b0 = _mm_set_epi64x(m11, m9); b1 = _mm_set_epi64x(m15, m13) +#define LOAD_MSG_11_1(b0, b1) b0 = _mm_set_epi64x(m4, m14); b1 = _mm_set_epi64x(m13, m9) +#define LOAD_MSG_11_2(b0, b1) b0 = _mm_set_epi64x(m8, m10); b1 = _mm_set_epi64x(m6, m15) +#define LOAD_MSG_11_3(b0, b1) b0 = _mm_set_epi64x(m0, m1); b1 = _mm_set_epi64x(m5, m11) +#define LOAD_MSG_11_4(b0, b1) b0 = _mm_set_epi64x(m2, m12); b1 = _mm_set_epi64x(m3, m7) + + +#endif + diff --git a/src/blake2b-load-sse41.h b/src/blake2b-load-sse41.h new file mode 100644 index 0000000..f6c1bc8 --- /dev/null +++ b/src/blake2b-load-sse41.h @@ -0,0 +1,402 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2B_LOAD_SSE41_H__ +#define __BLAKE2B_LOAD_SSE41_H__ + +#define LOAD_MSG_0_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m0, m1); \ +b1 = _mm_unpacklo_epi64(m2, m3); \ +} while(0) + + +#define LOAD_MSG_0_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m0, m1); \ +b1 = _mm_unpackhi_epi64(m2, m3); \ +} while(0) + + +#define LOAD_MSG_0_3(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m4, m5); \ +b1 = _mm_unpacklo_epi64(m6, m7); \ +} while(0) + + +#define LOAD_MSG_0_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m4, m5); \ +b1 = _mm_unpackhi_epi64(m6, m7); \ +} while(0) + + +#define LOAD_MSG_1_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m7, m2); \ +b1 = _mm_unpackhi_epi64(m4, m6); \ +} while(0) + + +#define LOAD_MSG_1_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m5, m4); \ +b1 = _mm_alignr_epi8(m3, m7, 8); \ +} while(0) + + +#define LOAD_MSG_1_3(b0, b1) \ +do \ +{ \ +b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1,0,3,2)); \ +b1 = _mm_unpackhi_epi64(m5, m2); \ +} while(0) + + +#define LOAD_MSG_1_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m6, m1); \ +b1 = _mm_unpackhi_epi64(m3, m1); \ +} while(0) + + +#define LOAD_MSG_2_1(b0, b1) \ +do \ +{ \ +b0 = _mm_alignr_epi8(m6, m5, 8); \ +b1 = _mm_unpackhi_epi64(m2, m7); \ +} while(0) + + +#define LOAD_MSG_2_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m4, m0); \ +b1 = _mm_blend_epi16(m1, m6, 0xF0); \ +} while(0) + + +#define LOAD_MSG_2_3(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m5, m1, 0xF0); \ +b1 = _mm_unpackhi_epi64(m3, m4); \ +} while(0) + + +#define LOAD_MSG_2_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m7, m3); \ +b1 = _mm_alignr_epi8(m2, m0, 8); \ +} while(0) + + +#define LOAD_MSG_3_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m3, m1); \ +b1 = _mm_unpackhi_epi64(m6, m5); \ +} while(0) + + +#define LOAD_MSG_3_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m4, m0); \ +b1 = _mm_unpacklo_epi64(m6, m7); \ +} while(0) + + +#define LOAD_MSG_3_3(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m1, m2, 0xF0); \ +b1 = _mm_blend_epi16(m2, m7, 0xF0); \ +} while(0) + + +#define LOAD_MSG_3_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m3, m5); \ +b1 = _mm_unpacklo_epi64(m0, m4); \ +} while(0) + + +#define LOAD_MSG_4_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m4, m2); \ +b1 = _mm_unpacklo_epi64(m1, m5); \ +} while(0) + + +#define LOAD_MSG_4_2(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m0, m3, 0xF0); \ +b1 = _mm_blend_epi16(m2, m7, 0xF0); \ +} while(0) + + +#define LOAD_MSG_4_3(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m7, m5, 0xF0); \ +b1 = _mm_blend_epi16(m3, m1, 0xF0); \ +} while(0) + + +#define LOAD_MSG_4_4(b0, b1) \ +do \ +{ \ +b0 = _mm_alignr_epi8(m6, m0, 8); \ +b1 = _mm_blend_epi16(m4, m6, 0xF0); \ +} while(0) + + +#define LOAD_MSG_5_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m1, m3); \ +b1 = _mm_unpacklo_epi64(m0, m4); \ +} while(0) + + +#define LOAD_MSG_5_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m6, m5); \ +b1 = _mm_unpackhi_epi64(m5, m1); \ +} while(0) + + +#define LOAD_MSG_5_3(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m2, m3, 0xF0); \ +b1 = _mm_unpackhi_epi64(m7, m0); \ +} while(0) + + +#define LOAD_MSG_5_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m6, m2); \ +b1 = _mm_blend_epi16(m7, m4, 0xF0); \ +} while(0) + + +#define LOAD_MSG_6_1(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m6, m0, 0xF0); \ +b1 = _mm_unpacklo_epi64(m7, m2); \ +} while(0) + + +#define LOAD_MSG_6_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m2, m7); \ +b1 = _mm_alignr_epi8(m5, m6, 8); \ +} while(0) + + +#define LOAD_MSG_6_3(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m0, m3); \ +b1 = _mm_shuffle_epi32(m4, _MM_SHUFFLE(1,0,3,2)); \ +} while(0) + + +#define LOAD_MSG_6_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m3, m1); \ +b1 = _mm_blend_epi16(m1, m5, 0xF0); \ +} while(0) + + +#define LOAD_MSG_7_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m6, m3); \ +b1 = _mm_blend_epi16(m6, m1, 0xF0); \ +} while(0) + + +#define LOAD_MSG_7_2(b0, b1) \ +do \ +{ \ +b0 = _mm_alignr_epi8(m7, m5, 8); \ +b1 = _mm_unpackhi_epi64(m0, m4); \ +} while(0) + + +#define LOAD_MSG_7_3(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m2, m7); \ +b1 = _mm_unpacklo_epi64(m4, m1); \ +} while(0) + + +#define LOAD_MSG_7_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m0, m2); \ +b1 = _mm_unpacklo_epi64(m3, m5); \ +} while(0) + + +#define LOAD_MSG_8_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m3, m7); \ +b1 = _mm_alignr_epi8(m0, m5, 8); \ +} while(0) + + +#define LOAD_MSG_8_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m7, m4); \ +b1 = _mm_alignr_epi8(m4, m1, 8); \ +} while(0) + + +#define LOAD_MSG_8_3(b0, b1) \ +do \ +{ \ +b0 = m6; \ +b1 = _mm_alignr_epi8(m5, m0, 8); \ +} while(0) + + +#define LOAD_MSG_8_4(b0, b1) \ +do \ +{ \ +b0 = _mm_blend_epi16(m1, m3, 0xF0); \ +b1 = m2; \ +} while(0) + + +#define LOAD_MSG_9_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m5, m4); \ +b1 = _mm_unpackhi_epi64(m3, m0); \ +} while(0) + + +#define LOAD_MSG_9_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m1, m2); \ +b1 = _mm_blend_epi16(m3, m2, 0xF0); \ +} while(0) + + +#define LOAD_MSG_9_3(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m7, m4); \ +b1 = _mm_unpackhi_epi64(m1, m6); \ +} while(0) + + +#define LOAD_MSG_9_4(b0, b1) \ +do \ +{ \ +b0 = _mm_alignr_epi8(m7, m5, 8); \ +b1 = _mm_unpacklo_epi64(m6, m0); \ +} while(0) + + +#define LOAD_MSG_10_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m0, m1); \ +b1 = _mm_unpacklo_epi64(m2, m3); \ +} while(0) + + +#define LOAD_MSG_10_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m0, m1); \ +b1 = _mm_unpackhi_epi64(m2, m3); \ +} while(0) + + +#define LOAD_MSG_10_3(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m4, m5); \ +b1 = _mm_unpacklo_epi64(m6, m7); \ +} while(0) + + +#define LOAD_MSG_10_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpackhi_epi64(m4, m5); \ +b1 = _mm_unpackhi_epi64(m6, m7); \ +} while(0) + + +#define LOAD_MSG_11_1(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m7, m2); \ +b1 = _mm_unpackhi_epi64(m4, m6); \ +} while(0) + + +#define LOAD_MSG_11_2(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m5, m4); \ +b1 = _mm_alignr_epi8(m3, m7, 8); \ +} while(0) + + +#define LOAD_MSG_11_3(b0, b1) \ +do \ +{ \ +b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1,0,3,2)); \ +b1 = _mm_unpackhi_epi64(m5, m2); \ +} while(0) + + +#define LOAD_MSG_11_4(b0, b1) \ +do \ +{ \ +b0 = _mm_unpacklo_epi64(m6, m1); \ +b1 = _mm_unpackhi_epi64(m3, m1); \ +} while(0) + + +#endif + diff --git a/src/blake2b-ref.c b/src/blake2b-ref.c new file mode 100644 index 0000000..0f40c9a --- /dev/null +++ b/src/blake2b-ref.c @@ -0,0 +1,381 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint64_t blake2b_IV[8] = +{ + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +static const uint8_t blake2b_sigma[12][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } +}; + + +static inline int blake2b_set_lastnode( blake2b_state *S ) +{ + S->f[1] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastnode( blake2b_state *S ) +{ + S->f[1] = 0ULL; + return 0; +} + +/* Some helper functions, not necessarily useful */ +static inline int blake2b_set_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_set_lastnode( S ); + + S->f[0] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_clear_lastnode( S ); + + S->f[0] = 0ULL; + return 0; +} + +static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) +{ + S->t[0] += inc; + S->t[1] += ( S->t[0] < inc ); + return 0; +} + + + +// Parameter-related functions +static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length ) +{ + P->digest_length = digest_length; + return 0; +} + +static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout ) +{ + P->fanout = fanout; + return 0; +} + +static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth ) +{ + P->depth = depth; + return 0; +} + +static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length ) +{ + store32( &P->leaf_length, leaf_length ); + return 0; +} + +static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset ) +{ + store64( &P->node_offset, node_offset ); + return 0; +} + +static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth ) +{ + P->node_depth = node_depth; + return 0; +} + +static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length ) +{ + P->inner_length = inner_length; + return 0; +} + +static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] ) +{ + memcpy( P->salt, salt, BLAKE2B_SALTBYTES ); + return 0; +} + +static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] ) +{ + memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES ); + return 0; +} + +static inline int blake2b_init0( blake2b_state *S ) +{ + memset( S, 0, sizeof( blake2b_state ) ); + + for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; + + return 0; +} + +#define blake2b_init BLAKE2_IMPL_NAME(blake2b_init) +#define blake2b_init_param BLAKE2_IMPL_NAME(blake2b_init_param) +#define blake2b_init_key BLAKE2_IMPL_NAME(blake2b_init_key) +#define blake2b_update BLAKE2_IMPL_NAME(blake2b_update) +#define blake2b_final BLAKE2_IMPL_NAME(blake2b_final) +#define blake2b BLAKE2_IMPL_NAME(blake2b) + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2b_init( blake2b_state *S, size_t outlen ); + int blake2b_init_param( blake2b_state *S, const blake2b_param *P ); + int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); +#if defined(__cplusplus) +} +#endif + +/* init xors IV with input parameter block */ +int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) +{ + blake2b_init0( S ); + uint8_t *p = ( uint8_t * )( P ); + + /* IV XOR ParamBlock */ + for( size_t i = 0; i < 8; ++i ) + S->h[i] ^= load64( p + sizeof( S->h[i] ) * i ); + + S->outlen = P->digest_length; + return 0; +} + + + +int blake2b_init( blake2b_state *S, size_t outlen ) +{ + blake2b_param P[1]; + + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + P->digest_length = outlen; + P->key_length = 0; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store64( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + return blake2b_init_param( S, P ); +} + + +int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) +{ + blake2b_param P[1]; + + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + if ( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; + + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store64( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + + if( blake2b_init_param( S, P ) < 0 ) return -1; + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset( block, 0, BLAKE2B_BLOCKBYTES ); + memcpy( block, key, keylen ); + blake2b_update( S, block, BLAKE2B_BLOCKBYTES ); + secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + +static int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) +{ + uint64_t m[16]; + uint64_t v[16]; + int i; + + for( i = 0; i < 16; ++i ) + m[i] = load64( block + i * sizeof( m[i] ) ); + + for( i = 0; i < 8; ++i ) + v[i] = S->h[i]; + + v[ 8] = blake2b_IV[0]; + v[ 9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = S->t[0] ^ blake2b_IV[4]; + v[13] = S->t[1] ^ blake2b_IV[5]; + v[14] = S->f[0] ^ blake2b_IV[6]; + v[15] = S->f[1] ^ blake2b_IV[7]; +#define G(r,i,a,b,c,d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2*i+0]]; \ + d = rotr64(d ^ a, 32); \ + c = c + d; \ + b = rotr64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2*i+1]]; \ + d = rotr64(d ^ a, 16); \ + c = c + d; \ + b = rotr64(b ^ c, 63); \ + } while(0) +#define ROUND(r) \ + do { \ + G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ + G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ + G(r,2,v[ 2],v[ 6],v[10],v[14]); \ + G(r,3,v[ 3],v[ 7],v[11],v[15]); \ + G(r,4,v[ 0],v[ 5],v[10],v[15]); \ + G(r,5,v[ 1],v[ 6],v[11],v[12]); \ + G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ + G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ + } while(0) + ROUND( 0 ); + ROUND( 1 ); + ROUND( 2 ); + ROUND( 3 ); + ROUND( 4 ); + ROUND( 5 ); + ROUND( 6 ); + ROUND( 7 ); + ROUND( 8 ); + ROUND( 9 ); + ROUND( 10 ); + ROUND( 11 ); + + for( i = 0; i < 8; ++i ) + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + +#undef G +#undef ROUND + return 0; +} + + +int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ) +{ + while( inlen > 0 ) + { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2B_BLOCKBYTES - left; + + if( inlen > fill ) + { + memcpy( S->buf + left, in, fill ); // Fill buffer + S->buflen += fill; + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); // Compress + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left + S->buflen -= BLAKE2B_BLOCKBYTES; + in += fill; + inlen -= fill; + } + else // inlen <= fill + { + memcpy( S->buf + left, in, inlen ); + S->buflen += inlen; // Be lazy, do not compress + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + +int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ) +{ + uint8_t buffer[BLAKE2B_OUTBYTES]; + + if(S->outlen != outlen) return -1; + + if( S->buflen > BLAKE2B_BLOCKBYTES ) + { + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); + S->buflen -= BLAKE2B_BLOCKBYTES; + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen ); + } + + blake2b_increment_counter( S, S->buflen ); + blake2b_set_lastblock( S ); + memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ + blake2b_compress( S, S->buf ); + + for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ + store64( buffer + sizeof( S->h[i] ) * i, S->h[i] ); + + memcpy( out, buffer, outlen ); + return 0; +} + +int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2b_state S[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if( NULL == key && keylen > 0 ) return -1; + + if( keylen > 0 ) + { + if( blake2b_init_key( S, outlen, key, keylen ) < 0 ) return -1; + } + else + { + if( blake2b_init( S, outlen ) < 0 ) return -1; + } + + if( blake2b_update( S, ( uint8_t * )in, inlen ) < 0 ) return -1; + return blake2b_final( S, out, outlen ); +} + + diff --git a/src/blake2b-round.h b/src/blake2b-round.h new file mode 100644 index 0000000..cebc225 --- /dev/null +++ b/src/blake2b-round.h @@ -0,0 +1,160 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2B_ROUND_H__ +#define __BLAKE2B_ROUND_H__ + +#define LOAD(p) _mm_load_si128( (__m128i *)(p) ) +#define STORE(p,r) _mm_store_si128((__m128i *)(p), r) + +#define LOADU(p) _mm_loadu_si128( (__m128i *)(p) ) +#define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r) + +#define TOF(reg) _mm_castsi128_ps((reg)) +#define TOI(reg) _mm_castps_si128((reg)) + +#define LIKELY(x) __builtin_expect((x),1) + + +/* Microarchitecture-specific macros */ +#ifndef HAVE_XOP +#ifdef HAVE_SSSE3 +#define _mm_roti_epi64(x, c) \ + (-(c) == 32) ? _mm_shuffle_epi32((x), _MM_SHUFFLE(2,3,0,1)) \ + : (-(c) == 24) ? _mm_shuffle_epi8((x), r24) \ + : (-(c) == 16) ? _mm_shuffle_epi8((x), r16) \ + : (-(c) == 63) ? _mm_xor_si128(_mm_srli_epi64((x), -(c)), _mm_add_epi64((x), (x))) \ + : _mm_xor_si128(_mm_srli_epi64((x), -(c)), _mm_slli_epi64((x), 64-(-(c)))) +#else +#define _mm_roti_epi64(r, c) _mm_xor_si128(_mm_srli_epi64( (r), -(c) ),_mm_slli_epi64( (r), 64-(-(c)) )) +#endif +#else +/* ... */ +#endif + + + +#define G1(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -32); \ + row4h = _mm_roti_epi64(row4h, -32); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -24); \ + row2h = _mm_roti_epi64(row2h, -24); \ + +#define G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1) \ + row1l = _mm_add_epi64(_mm_add_epi64(row1l, b0), row2l); \ + row1h = _mm_add_epi64(_mm_add_epi64(row1h, b1), row2h); \ + \ + row4l = _mm_xor_si128(row4l, row1l); \ + row4h = _mm_xor_si128(row4h, row1h); \ + \ + row4l = _mm_roti_epi64(row4l, -16); \ + row4h = _mm_roti_epi64(row4h, -16); \ + \ + row3l = _mm_add_epi64(row3l, row4l); \ + row3h = _mm_add_epi64(row3h, row4h); \ + \ + row2l = _mm_xor_si128(row2l, row3l); \ + row2h = _mm_xor_si128(row2h, row3h); \ + \ + row2l = _mm_roti_epi64(row2l, -63); \ + row2h = _mm_roti_epi64(row2h, -63); \ + +#if defined(HAVE_SSSE3) +#define DIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \ + t0 = _mm_alignr_epi8(row2h, row2l, 8); \ + t1 = _mm_alignr_epi8(row2l, row2h, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4h, row4l, 8); \ + t1 = _mm_alignr_epi8(row4l, row4h, 8); \ + row4l = t1; \ + row4h = t0; + +#define UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \ + t0 = _mm_alignr_epi8(row2l, row2h, 8); \ + t1 = _mm_alignr_epi8(row2h, row2l, 8); \ + row2l = t0; \ + row2h = t1; \ + \ + t0 = row3l; \ + row3l = row3h; \ + row3h = t0; \ + \ + t0 = _mm_alignr_epi8(row4l, row4h, 8); \ + t1 = _mm_alignr_epi8(row4h, row4l, 8); \ + row4l = t1; \ + row4h = t0; +#else + +#define DIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \ + t0 = row4l;\ + t1 = row2l;\ + row4l = row3l;\ + row3l = row3h;\ + row3h = row4l;\ + row4l = _mm_unpackhi_epi64(row4h, _mm_unpacklo_epi64(t0, t0)); \ + row4h = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(row4h, row4h)); \ + row2l = _mm_unpackhi_epi64(row2l, _mm_unpacklo_epi64(row2h, row2h)); \ + row2h = _mm_unpackhi_epi64(row2h, _mm_unpacklo_epi64(t1, t1)) + +#define UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h) \ + t0 = row3l;\ + row3l = row3h;\ + row3h = t0;\ + t0 = row2l;\ + t1 = row4l;\ + row2l = _mm_unpackhi_epi64(row2h, _mm_unpacklo_epi64(row2l, row2l)); \ + row2h = _mm_unpackhi_epi64(t0, _mm_unpacklo_epi64(row2h, row2h)); \ + row4l = _mm_unpackhi_epi64(row4l, _mm_unpacklo_epi64(row4h, row4h)); \ + row4h = _mm_unpackhi_epi64(row4h, _mm_unpacklo_epi64(t1, t1)) + +#endif + +#if defined(HAVE_SSE4_1) +#include "blake2b-load-sse41.h" +#else +#include "blake2b-load-sse2.h" +#endif + +#define ROUND(r) \ + LOAD_MSG_ ##r ##_1(b0, b1); \ + G1(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1); \ + LOAD_MSG_ ##r ##_2(b0, b1); \ + G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1); \ + DIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h); \ + LOAD_MSG_ ##r ##_3(b0, b1); \ + G1(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1); \ + LOAD_MSG_ ##r ##_4(b0, b1); \ + G2(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h,b0,b1); \ + UNDIAGONALIZE(row1l,row2l,row3l,row4l,row1h,row2h,row3h,row4h); + +#endif + diff --git a/src/blake2b-test.c b/src/blake2b-test.c new file mode 100644 index 0000000..9310a27 --- /dev/null +++ b/src/blake2b-test.c @@ -0,0 +1,43 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#include +#include +#include "blake2.h" +#include "blake2-kat.h" +int main( int argc, char **argv ) +{ + uint8_t key[BLAKE2B_KEYBYTES]; + uint8_t buf[KAT_LENGTH]; + + for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i ) + key[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + buf[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + { + uint8_t hash[BLAKE2B_OUTBYTES]; + + if( blake2b( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES ) < 0 || + 0 != memcmp( hash, blake2b_keyed_kat[i], BLAKE2B_OUTBYTES ) ) + { + puts( "error" ); + return -1; + } + } + + puts( "ok" ); + return 0; +} + diff --git a/src/blake2b.c b/src/blake2b.c new file mode 100644 index 0000000..056b217 --- /dev/null +++ b/src/blake2b.c @@ -0,0 +1,439 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +#include "blake2-config.h" + +#if defined(_MSC_VER) +#include +#endif + +#if defined(HAVE_SSE2) +#include +// MSVC only defines _mm_set_epi64x for x86_64... +#if defined(_MSC_VER) && !defined(_M_X64) +static inline __m128i _mm_set_epi64x( const uint64_t u1, const uint64_t u0 ) +{ + return _mm_set_epi32( u1 >> 32, u1, u0 >> 32, u0 ); +} +#endif +#endif + +#if defined(HAVE_SSSE3) +#include +#endif +#if defined(HAVE_SSE4_1) +#include +#endif +#if defined(HAVE_AVX) +#include +#endif +#if defined(HAVE_XOP) && !defined(_MSC_VER) +#include +#endif + + + +#include "blake2b-round.h" + +static const uint64_t blake2b_IV[8] = +{ + 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL +}; + +static const uint8_t blake2b_sigma[12][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } +}; + + +/* Some helper functions, not necessarily useful */ +static inline int blake2b_set_lastnode( blake2b_state *S ) +{ + S->f[1] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastnode( blake2b_state *S ) +{ + S->f[1] = 0ULL; + return 0; +} + +static inline int blake2b_set_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_set_lastnode( S ); + + S->f[0] = ~0ULL; + return 0; +} + +static inline int blake2b_clear_lastblock( blake2b_state *S ) +{ + if( S->last_node ) blake2b_clear_lastnode( S ); + + S->f[0] = 0ULL; + return 0; +} + + +static inline int blake2b_increment_counter( blake2b_state *S, const uint64_t inc ) +{ +#if defined(__x86_64__) && (defined(__GNUC__) || defined(__clang__)) + // ADD/ADC chain + __uint128_t t = ( ( __uint128_t )S->t[1] << 64 ) | S->t[0]; + t += inc; + S->t[0] = ( uint64_t )( t >> 0 ); + S->t[1] = ( uint64_t )( t >> 64 ); +#else + S->t[0] += inc; + S->t[1] += ( S->t[0] < inc ); +#endif + return 0; +} + + +// Parameter-related functions +static inline int blake2b_param_set_digest_length( blake2b_param *P, const uint8_t digest_length ) +{ + P->digest_length = digest_length; + return 0; +} + +static inline int blake2b_param_set_fanout( blake2b_param *P, const uint8_t fanout ) +{ + P->fanout = fanout; + return 0; +} + +static inline int blake2b_param_set_max_depth( blake2b_param *P, const uint8_t depth ) +{ + P->depth = depth; + return 0; +} + +static inline int blake2b_param_set_leaf_length( blake2b_param *P, const uint32_t leaf_length ) +{ + P->leaf_length = leaf_length; + return 0; +} + +static inline int blake2b_param_set_node_offset( blake2b_param *P, const uint64_t node_offset ) +{ + P->node_offset = node_offset; + return 0; +} + +static inline int blake2b_param_set_node_depth( blake2b_param *P, const uint8_t node_depth ) +{ + P->node_depth = node_depth; + return 0; +} + +static inline int blake2b_param_set_inner_length( blake2b_param *P, const uint8_t inner_length ) +{ + P->inner_length = inner_length; + return 0; +} + +static inline int blake2b_param_set_salt( blake2b_param *P, const uint8_t salt[BLAKE2B_SALTBYTES] ) +{ + memcpy( P->salt, salt, BLAKE2B_SALTBYTES ); + return 0; +} + +static inline int blake2b_param_set_personal( blake2b_param *P, const uint8_t personal[BLAKE2B_PERSONALBYTES] ) +{ + memcpy( P->personal, personal, BLAKE2B_PERSONALBYTES ); + return 0; +} + +static inline int blake2b_init0( blake2b_state *S ) +{ + memset( S, 0, sizeof( blake2b_state ) ); + + for( int i = 0; i < 8; ++i ) S->h[i] = blake2b_IV[i]; + + return 0; +} + + + +#define blake2b_init BLAKE2_IMPL_NAME(blake2b_init) +#define blake2b_init_param BLAKE2_IMPL_NAME(blake2b_init_param) +#define blake2b_init_key BLAKE2_IMPL_NAME(blake2b_init_key) +#define blake2b_update BLAKE2_IMPL_NAME(blake2b_update) +#define blake2b_final BLAKE2_IMPL_NAME(blake2b_final) +#define blake2b BLAKE2_IMPL_NAME(blake2b) + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2b_init( blake2b_state *S, size_t outlen ); + int blake2b_init_param( blake2b_state *S, const blake2b_param *P ); + int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ); + int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ); + int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); +#if defined(__cplusplus) +} +#endif + +/* init xors IV with input parameter block */ +int blake2b_init_param( blake2b_state *S, const blake2b_param *P ) +{ + uint8_t *p, *h, *v; + //blake2b_init0( S ); + v = ( uint8_t * )( blake2b_IV ); + h = ( uint8_t * )( S->h ); + p = ( uint8_t * )( P ); + /* IV XOR ParamBlock */ + memset( S, 0, sizeof( blake2b_state ) ); + + for( int i = 0; i < BLAKE2B_OUTBYTES; ++i ) h[i] = v[i] ^ p[i]; + + S->outlen = P->digest_length; + return 0; +} + + +/* Some sort of default parameter block initialization, for sequential blake2b */ + +int blake2b_init( blake2b_state *S, size_t outlen ) +{ + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + const blake2b_param P = + { + outlen, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + {0}, + {0}, + {0} + }; + return blake2b_init_param( S, &P ); +} + +int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen ) +{ + if ( ( !outlen ) || ( outlen > BLAKE2B_OUTBYTES ) ) return -1; + + if ( ( !keylen ) || keylen > BLAKE2B_KEYBYTES ) return -1; + + const blake2b_param P = + { + outlen, + keylen, + 1, + 1, + 0, + 0, + 0, + 0, + {0}, + {0}, + {0} + }; + + if( blake2b_init_param( S, &P ) < 0 ) + return 0; + + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset( block, 0, BLAKE2B_BLOCKBYTES ); + memcpy( block, key, keylen ); + blake2b_update( S, block, BLAKE2B_BLOCKBYTES ); + secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + +static inline int blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) +{ + __m128i row1l, row1h; + __m128i row2l, row2h; + __m128i row3l, row3h; + __m128i row4l, row4h; + __m128i b0, b1; + __m128i t0, t1; +#if defined(HAVE_SSSE3) && !defined(HAVE_XOP) + const __m128i r16 = _mm_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9 ); + const __m128i r24 = _mm_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10 ); +#endif +#if defined(HAVE_SSE4_1) + const __m128i m0 = LOADU( block + 00 ); + const __m128i m1 = LOADU( block + 16 ); + const __m128i m2 = LOADU( block + 32 ); + const __m128i m3 = LOADU( block + 48 ); + const __m128i m4 = LOADU( block + 64 ); + const __m128i m5 = LOADU( block + 80 ); + const __m128i m6 = LOADU( block + 96 ); + const __m128i m7 = LOADU( block + 112 ); +#else + const uint64_t m0 = ( ( uint64_t * )block )[ 0]; + const uint64_t m1 = ( ( uint64_t * )block )[ 1]; + const uint64_t m2 = ( ( uint64_t * )block )[ 2]; + const uint64_t m3 = ( ( uint64_t * )block )[ 3]; + const uint64_t m4 = ( ( uint64_t * )block )[ 4]; + const uint64_t m5 = ( ( uint64_t * )block )[ 5]; + const uint64_t m6 = ( ( uint64_t * )block )[ 6]; + const uint64_t m7 = ( ( uint64_t * )block )[ 7]; + const uint64_t m8 = ( ( uint64_t * )block )[ 8]; + const uint64_t m9 = ( ( uint64_t * )block )[ 9]; + const uint64_t m10 = ( ( uint64_t * )block )[10]; + const uint64_t m11 = ( ( uint64_t * )block )[11]; + const uint64_t m12 = ( ( uint64_t * )block )[12]; + const uint64_t m13 = ( ( uint64_t * )block )[13]; + const uint64_t m14 = ( ( uint64_t * )block )[14]; + const uint64_t m15 = ( ( uint64_t * )block )[15]; +#endif + row1l = LOADU( &S->h[0] ); + row1h = LOADU( &S->h[2] ); + row2l = LOADU( &S->h[4] ); + row2h = LOADU( &S->h[6] ); + row3l = LOADU( &blake2b_IV[0] ); + row3h = LOADU( &blake2b_IV[2] ); + row4l = _mm_xor_si128( LOADU( &blake2b_IV[4] ), LOADU( &S->t[0] ) ); + row4h = _mm_xor_si128( LOADU( &blake2b_IV[6] ), LOADU( &S->f[0] ) ); + ROUND( 0 ); + ROUND( 1 ); + ROUND( 2 ); + ROUND( 3 ); + ROUND( 4 ); + ROUND( 5 ); + ROUND( 6 ); + ROUND( 7 ); + ROUND( 8 ); + ROUND( 9 ); + ROUND( 10 ); + ROUND( 11 ); + row1l = _mm_xor_si128( row3l, row1l ); + row1h = _mm_xor_si128( row3h, row1h ); + STOREU( &S->h[0], _mm_xor_si128( LOADU( &S->h[0] ), row1l ) ); + STOREU( &S->h[2], _mm_xor_si128( LOADU( &S->h[2] ), row1h ) ); + row2l = _mm_xor_si128( row4l, row2l ); + row2h = _mm_xor_si128( row4h, row2h ); + STOREU( &S->h[4], _mm_xor_si128( LOADU( &S->h[4] ), row2l ) ); + STOREU( &S->h[6], _mm_xor_si128( LOADU( &S->h[6] ), row2h ) ); + return 0; +} + + +int blake2b_update( blake2b_state *S, const uint8_t *in, size_t inlen ) +{ + while( inlen > 0 ) + { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2B_BLOCKBYTES - left; + + if( inlen > fill ) + { + memcpy( S->buf + left, in, fill ); // Fill buffer + S->buflen += fill; + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); // Compress + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); // Shift buffer left + S->buflen -= BLAKE2B_BLOCKBYTES; + in += fill; + inlen -= fill; + } + else // inlen <= fill + { + memcpy( S->buf + left, in, inlen ); + S->buflen += inlen; // Be lazy, do not compress + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + + +int blake2b_final( blake2b_state *S, uint8_t *out, size_t outlen ) +{ + if(S->outlen != outlen) return -1; + + if( S->buflen > BLAKE2B_BLOCKBYTES ) + { + blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES ); + blake2b_compress( S, S->buf ); + S->buflen -= BLAKE2B_BLOCKBYTES; + memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, S->buflen ); + } + + blake2b_increment_counter( S, S->buflen ); + blake2b_set_lastblock( S ); + memset( S->buf + S->buflen, 0, 2 * BLAKE2B_BLOCKBYTES - S->buflen ); /* Padding */ + blake2b_compress( S, S->buf ); + memcpy( out, &S->h[0], outlen ); + return 0; +} + + +int blake2b( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2b_state S[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if( NULL == key && keylen > 0 ) return -1; + + if( keylen ) + { + if( blake2b_init_key( S, outlen, key, keylen ) < 0 ) return -1; + } + else + { + if( blake2b_init( S, outlen ) < 0 ) return -1; + } + + if( blake2b_update( S, ( uint8_t * )in, inlen ) < 0) return -1; + return blake2b_final( S, out, outlen ); +} + +#if defined(SUPERCOP) +int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen ) +{ + return blake2b( out, in, NULL, BLAKE2B_OUTBYTES, inlen, 0 ); +} +#endif diff --git a/src/blake2bp-test.c b/src/blake2bp-test.c new file mode 100644 index 0000000..849666c --- /dev/null +++ b/src/blake2bp-test.c @@ -0,0 +1,44 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#include +#include +#include "blake2.h" +#include "blake2-kat.h" + +int main( int argc, char **argv ) +{ + uint8_t key[BLAKE2B_KEYBYTES]; + uint8_t buf[KAT_LENGTH]; + + for( size_t i = 0; i < BLAKE2B_KEYBYTES; ++i ) + key[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + buf[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + { + uint8_t hash[BLAKE2B_OUTBYTES]; + + if( blake2bp( hash, buf, key, BLAKE2B_OUTBYTES, i, BLAKE2B_KEYBYTES ) < 0 || + 0 != memcmp( hash, blake2bp_keyed_kat[i], BLAKE2B_OUTBYTES ) ) + { + puts( "error" ); + return -1; + } + } + + puts( "ok" ); + return 0; +} + diff --git a/src/blake2bp.c b/src/blake2bp.c new file mode 100644 index 0000000..62787c0 --- /dev/null +++ b/src/blake2bp.c @@ -0,0 +1,272 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include +#include + +#if defined(_OPENMP) +#include +#endif + +#include "blake2.h" +#include "blake2-impl.h" + +#define PARALLELISM_DEGREE 4 + +static int blake2bp_init_leaf( blake2b_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset ) +{ + blake2b_param P[1]; + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = PARALLELISM_DEGREE; + P->depth = 2; + P->leaf_length = 0; + P->node_offset = offset; + P->node_depth = 0; + P->inner_length = BLAKE2B_OUTBYTES; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + blake2b_init_param( S, P ); + S->outlen = P->inner_length; + return 0; +} + +static int blake2bp_init_root( blake2b_state *S, uint8_t outlen, uint8_t keylen ) +{ + blake2b_param P[1]; + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = PARALLELISM_DEGREE; + P->depth = 2; + P->leaf_length = 0; + P->node_offset = 0; + P->node_depth = 1; + P->inner_length = BLAKE2B_OUTBYTES; + memset( P->reserved, 0, sizeof( P->reserved ) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + blake2b_init_param( S, P ); + S->outlen = P->digest_length; + return 0; +} + + +int blake2bp_init( blake2bp_state *S, size_t outlen ) +{ + if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; + + memset( S->buf, 0, sizeof( S->buf ) ); + S->buflen = 0; + + if( blake2bp_init_root( S->R, outlen, 0 ) < 0 ) + return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2bp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; + + S->R->last_node = 1; + S->S[PARALLELISM_DEGREE - 1]->last_node = 1; + S->outlen = outlen; + return 0; +} + +int blake2bp_init_key( blake2bp_state *S, size_t outlen, const void *key, size_t keylen ) +{ + if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; + + if( !key || !keylen || keylen > BLAKE2B_KEYBYTES ) return -1; + + memset( S->buf, 0, sizeof( S->buf ) ); + S->buflen = 0; + + if( blake2bp_init_root( S->R, outlen, keylen ) < 0 ) + return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2bp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; + + S->R->last_node = 1; + S->S[PARALLELISM_DEGREE - 1]->last_node = 1; + S->outlen = outlen; + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset( block, 0, BLAKE2B_BLOCKBYTES ); + memcpy( block, key, keylen ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2b_update( S->S[i], block, BLAKE2B_BLOCKBYTES ); + + secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + + +int blake2bp_update( blake2bp_state *S, const uint8_t *in, size_t inlen ) +{ + size_t left = S->buflen; + size_t fill = sizeof( S->buf ) - left; + + if( left && inlen >= fill ) + { + memcpy( S->buf + left, in, fill ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); + + in += fill; + inlen -= fill; + left = 0; + } + +#if defined(_OPENMP) + omp_set_num_threads(PARALLELISM_DEGREE); + #pragma omp parallel shared(S) +#else + for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ ) +#endif + { +#if defined(_OPENMP) + size_t id__ = omp_get_thread_num(); +#endif + size_t inlen__ = inlen; + const uint8_t *in__ = ( const uint8_t * )in; + in__ += id__ * BLAKE2B_BLOCKBYTES; + + while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) + { + blake2b_update( S->S[id__], in__, BLAKE2B_BLOCKBYTES ); + in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; + inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; + } + } + + in += inlen - inlen % ( PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ); + inlen %= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; + + if( inlen > 0 ) + memcpy( S->buf + left, in, inlen ); + + S->buflen = left + inlen; + return 0; +} + + + +int blake2bp_final( blake2bp_state *S, uint8_t *out, size_t outlen ) +{ + uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES]; + + if(S->outlen != outlen) return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + { + if( S->buflen > i * BLAKE2B_BLOCKBYTES ) + { + size_t left = S->buflen - i * BLAKE2B_BLOCKBYTES; + + if( left > BLAKE2B_BLOCKBYTES ) left = BLAKE2B_BLOCKBYTES; + + blake2b_update( S->S[i], S->buf + i * BLAKE2B_BLOCKBYTES, left ); + } + + blake2b_final( S->S[i], hash[i], BLAKE2B_OUTBYTES ); + } + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2b_update( S->R, hash[i], BLAKE2B_OUTBYTES ); + + return blake2b_final( S->R, out, outlen ); +} + +int blake2bp( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + uint8_t hash[PARALLELISM_DEGREE][BLAKE2B_OUTBYTES]; + blake2b_state S[PARALLELISM_DEGREE][1]; + blake2b_state FS[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if ( NULL == key && keylen > 0) return -1; + + if( !outlen || outlen > BLAKE2B_OUTBYTES ) return -1; + + if( keylen > BLAKE2B_KEYBYTES ) return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2bp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; + + S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node + + if( keylen > 0 ) + { + uint8_t block[BLAKE2B_BLOCKBYTES]; + memset( block, 0, BLAKE2B_BLOCKBYTES ); + memcpy( block, key, keylen ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2b_update( S[i], block, BLAKE2B_BLOCKBYTES ); + + secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from stack */ + } + +#if defined(_OPENMP) + omp_set_num_threads(PARALLELISM_DEGREE); + #pragma omp parallel shared(S,hash) +#else + for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ ) +#endif + { +#if defined(_OPENMP) + size_t id__ = omp_get_thread_num(); +#endif + size_t inlen__ = inlen; + const uint8_t *in__ = ( const uint8_t * )in; + in__ += id__ * BLAKE2B_BLOCKBYTES; + + while( inlen__ >= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES ) + { + blake2b_update( S[id__], in__, BLAKE2B_BLOCKBYTES ); + in__ += PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; + inlen__ -= PARALLELISM_DEGREE * BLAKE2B_BLOCKBYTES; + } + + if( inlen__ > id__ * BLAKE2B_BLOCKBYTES ) + { + const size_t left = inlen__ - id__ * BLAKE2B_BLOCKBYTES; + const size_t len = left <= BLAKE2B_BLOCKBYTES ? left : BLAKE2B_BLOCKBYTES; + blake2b_update( S[id__], in__, len ); + } + + blake2b_final( S[id__], hash[id__], BLAKE2B_OUTBYTES ); + } + + if( blake2bp_init_root( FS, outlen, keylen ) < 0 ) + return -1; + + FS->last_node = 1; // Mark as last node + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2b_update( FS, hash[i], BLAKE2B_OUTBYTES ); + + return blake2b_final( FS, out, outlen ); +} + + + diff --git a/src/blake2s-load-sse2.h b/src/blake2s-load-sse2.h new file mode 100644 index 0000000..b24483c --- /dev/null +++ b/src/blake2s-load-sse2.h @@ -0,0 +1,59 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2S_LOAD_SSE2_H__ +#define __BLAKE2S_LOAD_SSE2_H__ + +#define LOAD_MSG_0_1(buf) buf = _mm_set_epi32(m6,m4,m2,m0) +#define LOAD_MSG_0_2(buf) buf = _mm_set_epi32(m7,m5,m3,m1) +#define LOAD_MSG_0_3(buf) buf = _mm_set_epi32(m14,m12,m10,m8) +#define LOAD_MSG_0_4(buf) buf = _mm_set_epi32(m15,m13,m11,m9) +#define LOAD_MSG_1_1(buf) buf = _mm_set_epi32(m13,m9,m4,m14) +#define LOAD_MSG_1_2(buf) buf = _mm_set_epi32(m6,m15,m8,m10) +#define LOAD_MSG_1_3(buf) buf = _mm_set_epi32(m5,m11,m0,m1) +#define LOAD_MSG_1_4(buf) buf = _mm_set_epi32(m3,m7,m2,m12) +#define LOAD_MSG_2_1(buf) buf = _mm_set_epi32(m15,m5,m12,m11) +#define LOAD_MSG_2_2(buf) buf = _mm_set_epi32(m13,m2,m0,m8) +#define LOAD_MSG_2_3(buf) buf = _mm_set_epi32(m9,m7,m3,m10) +#define LOAD_MSG_2_4(buf) buf = _mm_set_epi32(m4,m1,m6,m14) +#define LOAD_MSG_3_1(buf) buf = _mm_set_epi32(m11,m13,m3,m7) +#define LOAD_MSG_3_2(buf) buf = _mm_set_epi32(m14,m12,m1,m9) +#define LOAD_MSG_3_3(buf) buf = _mm_set_epi32(m15,m4,m5,m2) +#define LOAD_MSG_3_4(buf) buf = _mm_set_epi32(m8,m0,m10,m6) +#define LOAD_MSG_4_1(buf) buf = _mm_set_epi32(m10,m2,m5,m9) +#define LOAD_MSG_4_2(buf) buf = _mm_set_epi32(m15,m4,m7,m0) +#define LOAD_MSG_4_3(buf) buf = _mm_set_epi32(m3,m6,m11,m14) +#define LOAD_MSG_4_4(buf) buf = _mm_set_epi32(m13,m8,m12,m1) +#define LOAD_MSG_5_1(buf) buf = _mm_set_epi32(m8,m0,m6,m2) +#define LOAD_MSG_5_2(buf) buf = _mm_set_epi32(m3,m11,m10,m12) +#define LOAD_MSG_5_3(buf) buf = _mm_set_epi32(m1,m15,m7,m4) +#define LOAD_MSG_5_4(buf) buf = _mm_set_epi32(m9,m14,m5,m13) +#define LOAD_MSG_6_1(buf) buf = _mm_set_epi32(m4,m14,m1,m12) +#define LOAD_MSG_6_2(buf) buf = _mm_set_epi32(m10,m13,m15,m5) +#define LOAD_MSG_6_3(buf) buf = _mm_set_epi32(m8,m9,m6,m0) +#define LOAD_MSG_6_4(buf) buf = _mm_set_epi32(m11,m2,m3,m7) +#define LOAD_MSG_7_1(buf) buf = _mm_set_epi32(m3,m12,m7,m13) +#define LOAD_MSG_7_2(buf) buf = _mm_set_epi32(m9,m1,m14,m11) +#define LOAD_MSG_7_3(buf) buf = _mm_set_epi32(m2,m8,m15,m5) +#define LOAD_MSG_7_4(buf) buf = _mm_set_epi32(m10,m6,m4,m0) +#define LOAD_MSG_8_1(buf) buf = _mm_set_epi32(m0,m11,m14,m6) +#define LOAD_MSG_8_2(buf) buf = _mm_set_epi32(m8,m3,m9,m15) +#define LOAD_MSG_8_3(buf) buf = _mm_set_epi32(m10,m1,m13,m12) +#define LOAD_MSG_8_4(buf) buf = _mm_set_epi32(m5,m4,m7,m2) +#define LOAD_MSG_9_1(buf) buf = _mm_set_epi32(m1,m7,m8,m10) +#define LOAD_MSG_9_2(buf) buf = _mm_set_epi32(m5,m6,m4,m2) +#define LOAD_MSG_9_3(buf) buf = _mm_set_epi32(m13,m3,m9,m15) +#define LOAD_MSG_9_4(buf) buf = _mm_set_epi32(m0,m12,m14,m11) + + +#endif diff --git a/src/blake2s-load-sse41.h b/src/blake2s-load-sse41.h new file mode 100644 index 0000000..3ac12eb --- /dev/null +++ b/src/blake2s-load-sse41.h @@ -0,0 +1,229 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2S_LOAD_SSE41_H__ +#define __BLAKE2S_LOAD_SSE41_H__ + +#define LOAD_MSG_0_1(buf) \ +buf = TOI(_mm_shuffle_ps(TOF(m0), TOF(m1), _MM_SHUFFLE(2,0,2,0))); + +#define LOAD_MSG_0_2(buf) \ +buf = TOI(_mm_shuffle_ps(TOF(m0), TOF(m1), _MM_SHUFFLE(3,1,3,1))); + +#define LOAD_MSG_0_3(buf) \ +buf = TOI(_mm_shuffle_ps(TOF(m2), TOF(m3), _MM_SHUFFLE(2,0,2,0))); + +#define LOAD_MSG_0_4(buf) \ +buf = TOI(_mm_shuffle_ps(TOF(m2), TOF(m3), _MM_SHUFFLE(3,1,3,1))); + +#define LOAD_MSG_1_1(buf) \ +t0 = _mm_blend_epi16(m1, m2, 0x0C); \ +t1 = _mm_slli_si128(m3, 4); \ +t2 = _mm_blend_epi16(t0, t1, 0xF0); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,1,0,3)); + +#define LOAD_MSG_1_2(buf) \ +t0 = _mm_shuffle_epi32(m2,_MM_SHUFFLE(0,0,2,0)); \ +t1 = _mm_blend_epi16(m1,m3,0xC0); \ +t2 = _mm_blend_epi16(t0, t1, 0xF0); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,3,0,1)); + +#define LOAD_MSG_1_3(buf) \ +t0 = _mm_slli_si128(m1, 4); \ +t1 = _mm_blend_epi16(m2, t0, 0x30); \ +t2 = _mm_blend_epi16(m0, t1, 0xF0); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,3,0,1)); + +#define LOAD_MSG_1_4(buf) \ +t0 = _mm_unpackhi_epi32(m0,m1); \ +t1 = _mm_slli_si128(m3, 4); \ +t2 = _mm_blend_epi16(t0, t1, 0x0C); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,3,0,1)); + +#define LOAD_MSG_2_1(buf) \ +t0 = _mm_unpackhi_epi32(m2,m3); \ +t1 = _mm_blend_epi16(m3,m1,0x0C); \ +t2 = _mm_blend_epi16(t0, t1, 0x0F); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(3,1,0,2)); + +#define LOAD_MSG_2_2(buf) \ +t0 = _mm_unpacklo_epi32(m2,m0); \ +t1 = _mm_blend_epi16(t0, m0, 0xF0); \ +t2 = _mm_slli_si128(m3, 8); \ +buf = _mm_blend_epi16(t1, t2, 0xC0); + +#define LOAD_MSG_2_3(buf) \ +t0 = _mm_blend_epi16(m0, m2, 0x3C); \ +t1 = _mm_srli_si128(m1, 12); \ +t2 = _mm_blend_epi16(t0,t1,0x03); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(1,0,3,2)); + +#define LOAD_MSG_2_4(buf) \ +t0 = _mm_slli_si128(m3, 4); \ +t1 = _mm_blend_epi16(m0, m1, 0x33); \ +t2 = _mm_blend_epi16(t1, t0, 0xC0); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(0,1,2,3)); + +#define LOAD_MSG_3_1(buf) \ +t0 = _mm_unpackhi_epi32(m0,m1); \ +t1 = _mm_unpackhi_epi32(t0, m2); \ +t2 = _mm_blend_epi16(t1, m3, 0x0C); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(3,1,0,2)); + +#define LOAD_MSG_3_2(buf) \ +t0 = _mm_slli_si128(m2, 8); \ +t1 = _mm_blend_epi16(m3,m0,0x0C); \ +t2 = _mm_blend_epi16(t1, t0, 0xC0); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,0,1,3)); + +#define LOAD_MSG_3_3(buf) \ +t0 = _mm_blend_epi16(m0,m1,0x0F); \ +t1 = _mm_blend_epi16(t0, m3, 0xC0); \ +buf = _mm_shuffle_epi32(t1, _MM_SHUFFLE(3,0,1,2)); + +#define LOAD_MSG_3_4(buf) \ +t0 = _mm_unpacklo_epi32(m0,m2); \ +t1 = _mm_unpackhi_epi32(m1,m2); \ +buf = _mm_unpacklo_epi64(t1,t0); + +#define LOAD_MSG_4_1(buf) \ +t0 = _mm_unpacklo_epi64(m1,m2); \ +t1 = _mm_unpackhi_epi64(m0,m2); \ +t2 = _mm_blend_epi16(t0,t1,0x33); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,0,1,3)); + +#define LOAD_MSG_4_2(buf) \ +t0 = _mm_unpackhi_epi64(m1,m3); \ +t1 = _mm_unpacklo_epi64(m0,m1); \ +buf = _mm_blend_epi16(t0,t1,0x33); + +#define LOAD_MSG_4_3(buf) \ +t0 = _mm_unpackhi_epi64(m3,m1); \ +t1 = _mm_unpackhi_epi64(m2,m0); \ +buf = _mm_blend_epi16(t1,t0,0x33); + +#define LOAD_MSG_4_4(buf) \ +t0 = _mm_blend_epi16(m0,m2,0x03); \ +t1 = _mm_slli_si128(t0, 8); \ +t2 = _mm_blend_epi16(t1,m3,0x0F); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(1,2,0,3)); + +#define LOAD_MSG_5_1(buf) \ +t0 = _mm_unpackhi_epi32(m0,m1); \ +t1 = _mm_unpacklo_epi32(m0,m2); \ +buf = _mm_unpacklo_epi64(t0,t1); + +#define LOAD_MSG_5_2(buf) \ +t0 = _mm_srli_si128(m2, 4); \ +t1 = _mm_blend_epi16(m0,m3,0x03); \ +buf = _mm_blend_epi16(t1,t0,0x3C); + +#define LOAD_MSG_5_3(buf) \ +t0 = _mm_blend_epi16(m1,m0,0x0C); \ +t1 = _mm_srli_si128(m3, 4); \ +t2 = _mm_blend_epi16(t0,t1,0x30); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(1,2,3,0)); + +#define LOAD_MSG_5_4(buf) \ +t0 = _mm_unpacklo_epi64(m1,m2); \ +t1= _mm_shuffle_epi32(m3, _MM_SHUFFLE(0,2,0,1)); \ +buf = _mm_blend_epi16(t0,t1,0x33); + +#define LOAD_MSG_6_1(buf) \ +t0 = _mm_slli_si128(m1, 12); \ +t1 = _mm_blend_epi16(m0,m3,0x33); \ +buf = _mm_blend_epi16(t1,t0,0xC0); + +#define LOAD_MSG_6_2(buf) \ +t0 = _mm_blend_epi16(m3,m2,0x30); \ +t1 = _mm_srli_si128(m1, 4); \ +t2 = _mm_blend_epi16(t0,t1,0x03); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(2,1,3,0)); + +#define LOAD_MSG_6_3(buf) \ +t0 = _mm_unpacklo_epi64(m0,m2); \ +t1 = _mm_srli_si128(m1, 4); \ +buf = _mm_shuffle_epi32(_mm_blend_epi16(t0,t1,0x0C), _MM_SHUFFLE(2,3,1,0)); + +#define LOAD_MSG_6_4(buf) \ +t0 = _mm_unpackhi_epi32(m1,m2); \ +t1 = _mm_unpackhi_epi64(m0,t0); \ +buf = _mm_shuffle_epi32(t1, _MM_SHUFFLE(3,0,1,2)); + +#define LOAD_MSG_7_1(buf) \ +t0 = _mm_unpackhi_epi32(m0,m1); \ +t1 = _mm_blend_epi16(t0,m3,0x0F); \ +buf = _mm_shuffle_epi32(t1,_MM_SHUFFLE(2,0,3,1)); + +#define LOAD_MSG_7_2(buf) \ +t0 = _mm_blend_epi16(m2,m3,0x30); \ +t1 = _mm_srli_si128(m0,4); \ +t2 = _mm_blend_epi16(t0,t1,0x03); \ +buf = _mm_shuffle_epi32(t2, _MM_SHUFFLE(1,0,2,3)); + +#define LOAD_MSG_7_3(buf) \ +t0 = _mm_unpackhi_epi64(m0,m3); \ +t1 = _mm_unpacklo_epi64(m1,m2); \ +t2 = _mm_blend_epi16(t0,t1,0x3C); \ +buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(0,2,3,1)); + +#define LOAD_MSG_7_4(buf) \ +t0 = _mm_unpacklo_epi32(m0,m1); \ +t1 = _mm_unpackhi_epi32(m1,m2); \ +buf = _mm_unpacklo_epi64(t0,t1); + +#define LOAD_MSG_8_1(buf) \ +t0 = _mm_unpackhi_epi32(m1,m3); \ +t1 = _mm_unpacklo_epi64(t0,m0); \ +t2 = _mm_blend_epi16(t1,m2,0xC0); \ +buf = _mm_shufflehi_epi16(t2,_MM_SHUFFLE(1,0,3,2)); + +#define LOAD_MSG_8_2(buf) \ +t0 = _mm_unpackhi_epi32(m0,m3); \ +t1 = _mm_blend_epi16(m2,t0,0xF0); \ +buf = _mm_shuffle_epi32(t1,_MM_SHUFFLE(0,2,1,3)); + +#define LOAD_MSG_8_3(buf) \ +t0 = _mm_blend_epi16(m2,m0,0x0C); \ +t1 = _mm_slli_si128(t0,4); \ +buf = _mm_blend_epi16(t1,m3,0x0F); + +#define LOAD_MSG_8_4(buf) \ +t0 = _mm_blend_epi16(m1,m0,0x30); \ +buf = _mm_shuffle_epi32(t0,_MM_SHUFFLE(1,0,3,2)); + +#define LOAD_MSG_9_1(buf) \ +t0 = _mm_blend_epi16(m0,m2,0x03); \ +t1 = _mm_blend_epi16(m1,m2,0x30); \ +t2 = _mm_blend_epi16(t1,t0,0x0F); \ +buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(1,3,0,2)); + +#define LOAD_MSG_9_2(buf) \ +t0 = _mm_slli_si128(m0,4); \ +t1 = _mm_blend_epi16(m1,t0,0xC0); \ +buf = _mm_shuffle_epi32(t1,_MM_SHUFFLE(1,2,0,3)); + +#define LOAD_MSG_9_3(buf) \ +t0 = _mm_unpackhi_epi32(m0,m3); \ +t1 = _mm_unpacklo_epi32(m2,m3); \ +t2 = _mm_unpackhi_epi64(t0,t1); \ +buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(3,0,2,1)); + +#define LOAD_MSG_9_4(buf) \ +t0 = _mm_blend_epi16(m3,m2,0xC0); \ +t1 = _mm_unpacklo_epi32(m0,m3); \ +t2 = _mm_blend_epi16(t0,t1,0x0F); \ +buf = _mm_shuffle_epi32(t2,_MM_SHUFFLE(0,1,2,3)); + +#endif + diff --git a/src/blake2s-load-xop.h b/src/blake2s-load-xop.h new file mode 100644 index 0000000..ac591a7 --- /dev/null +++ b/src/blake2s-load-xop.h @@ -0,0 +1,189 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2S_LOAD_XOP_H__ +#define __BLAKE2S_LOAD_XOP_H__ + +#define TOB(x) ((x)*4*0x01010101 + 0x03020100) // ..or not TOB + +/* Basic VPPERM emulation, for testing purposes */ +/*static __m128i _mm_perm_epi8(const __m128i src1, const __m128i src2, const __m128i sel) +{ + const __m128i sixteen = _mm_set1_epi8(16); + const __m128i t0 = _mm_shuffle_epi8(src1, sel); + const __m128i s1 = _mm_shuffle_epi8(src2, _mm_sub_epi8(sel, sixteen)); + const __m128i mask = _mm_or_si128(_mm_cmpeq_epi8(sel, sixteen), + _mm_cmpgt_epi8(sel, sixteen)); // (>=16) = 0xff : 00 + return _mm_blendv_epi8(t0, s1, mask); +}*/ + +#define LOAD_MSG_0_1(buf) \ +buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(6),TOB(4),TOB(2),TOB(0)) ); + +#define LOAD_MSG_0_2(buf) \ +buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(7),TOB(5),TOB(3),TOB(1)) ); + +#define LOAD_MSG_0_3(buf) \ +buf = _mm_perm_epi8(m2, m3, _mm_set_epi32(TOB(6),TOB(4),TOB(2),TOB(0)) ); + +#define LOAD_MSG_0_4(buf) \ +buf = _mm_perm_epi8(m2, m3, _mm_set_epi32(TOB(7),TOB(5),TOB(3),TOB(1)) ); + +#define LOAD_MSG_1_1(buf) \ +t0 = _mm_perm_epi8(m1, m2, _mm_set_epi32(TOB(0),TOB(5),TOB(0),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(5),TOB(2),TOB(1),TOB(6)) ); + +#define LOAD_MSG_1_2(buf) \ +t1 = _mm_perm_epi8(m1, m2, _mm_set_epi32(TOB(2),TOB(0),TOB(4),TOB(6)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(7),TOB(1),TOB(0)) ); + +#define LOAD_MSG_1_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(5),TOB(0),TOB(0),TOB(1)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(3),TOB(7),TOB(1),TOB(0)) ); + +#define LOAD_MSG_1_4(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(3),TOB(7),TOB(2),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(1),TOB(4)) ); + +#define LOAD_MSG_2_1(buf) \ +t0 = _mm_perm_epi8(m1, m2, _mm_set_epi32(TOB(0),TOB(1),TOB(0),TOB(7)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(7),TOB(2),TOB(4),TOB(0)) ); + +#define LOAD_MSG_2_2(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(0),TOB(2),TOB(0),TOB(4)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(5),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_2_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(7),TOB(3),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(5),TOB(2),TOB(1),TOB(6)) ); + +#define LOAD_MSG_2_4(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(4),TOB(1),TOB(6),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(1),TOB(6)) ); + +#define LOAD_MSG_3_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(0),TOB(3),TOB(7)) ); \ +t0 = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(7),TOB(2),TOB(1),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(5),TOB(1),TOB(0)) ); + +#define LOAD_MSG_3_2(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(0),TOB(0),TOB(1),TOB(5)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(6),TOB(4),TOB(1),TOB(0)) ); + +#define LOAD_MSG_3_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(4),TOB(5),TOB(2)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(7),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_3_4(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(0),TOB(0),TOB(6)) ); \ +buf = _mm_perm_epi8(t1, m2, _mm_set_epi32(TOB(4),TOB(2),TOB(6),TOB(0)) ); + +#define LOAD_MSG_4_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(2),TOB(5),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(6),TOB(2),TOB(1),TOB(5)) ); + +#define LOAD_MSG_4_2(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(4),TOB(7),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(7),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_4_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(3),TOB(6),TOB(0),TOB(0)) ); \ +t0 = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(3),TOB(2),TOB(7),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(1),TOB(6)) ); + +#define LOAD_MSG_4_4(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(0),TOB(4),TOB(0),TOB(1)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(5),TOB(2),TOB(4),TOB(0)) ); + +#define LOAD_MSG_5_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(0),TOB(6),TOB(2)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(4),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_5_2(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(3),TOB(7),TOB(6),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(1),TOB(4)) ); + +#define LOAD_MSG_5_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(1),TOB(0),TOB(7),TOB(4)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(7),TOB(1),TOB(0)) ); + +#define LOAD_MSG_5_4(buf) \ +t1 = _mm_perm_epi8(m1, m2, _mm_set_epi32(TOB(5),TOB(0),TOB(1),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(6),TOB(1),TOB(5)) ); + +#define LOAD_MSG_6_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(4),TOB(0),TOB(1),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(6),TOB(1),TOB(4)) ); + +#define LOAD_MSG_6_2(buf) \ +t1 = _mm_perm_epi8(m1, m2, _mm_set_epi32(TOB(6),TOB(0),TOB(0),TOB(1)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(5),TOB(7),TOB(0)) ); + +#define LOAD_MSG_6_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(0),TOB(6),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(4),TOB(5),TOB(1),TOB(0)) ); + +#define LOAD_MSG_6_4(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(2),TOB(3),TOB(7)) ); \ +buf = _mm_perm_epi8(t1, m2, _mm_set_epi32(TOB(7),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_7_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(3),TOB(0),TOB(7),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(4),TOB(1),TOB(5)) ); + +#define LOAD_MSG_7_2(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(5),TOB(1),TOB(0),TOB(7)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(6),TOB(0)) ); + +#define LOAD_MSG_7_3(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(2),TOB(0),TOB(0),TOB(5)) ); \ +t0 = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(3),TOB(4),TOB(1),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(7),TOB(0)) ); + +#define LOAD_MSG_7_4(buf) \ +t1 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(6),TOB(4),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m2, _mm_set_epi32(TOB(6),TOB(2),TOB(1),TOB(0)) ); + +#define LOAD_MSG_8_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(0),TOB(0),TOB(0),TOB(6)) ); \ +t0 = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(3),TOB(7),TOB(1),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(6),TOB(0)) ); + +#define LOAD_MSG_8_2(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(4),TOB(3),TOB(5),TOB(0)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(1),TOB(7)) ); + +#define LOAD_MSG_8_3(buf) \ +t0 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(6),TOB(1),TOB(0),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(3),TOB(2),TOB(5),TOB(4)) ); \ + +#define LOAD_MSG_8_4(buf) \ +buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(5),TOB(4),TOB(7),TOB(2)) ); + +#define LOAD_MSG_9_1(buf) \ +t0 = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(1),TOB(7),TOB(0),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m2, _mm_set_epi32(TOB(3),TOB(2),TOB(4),TOB(6)) ); + +#define LOAD_MSG_9_2(buf) \ +buf = _mm_perm_epi8(m0, m1, _mm_set_epi32(TOB(5),TOB(6),TOB(4),TOB(2)) ); + +#define LOAD_MSG_9_3(buf) \ +t0 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(0),TOB(3),TOB(5),TOB(0)) ); \ +buf = _mm_perm_epi8(t0, m3, _mm_set_epi32(TOB(5),TOB(2),TOB(1),TOB(7)) ); + +#define LOAD_MSG_9_4(buf) \ +t1 = _mm_perm_epi8(m0, m2, _mm_set_epi32(TOB(0),TOB(0),TOB(0),TOB(7)) ); \ +buf = _mm_perm_epi8(t1, m3, _mm_set_epi32(TOB(3),TOB(4),TOB(6),TOB(0)) ); + +#endif + diff --git a/src/blake2s-ref.c b/src/blake2s-ref.c new file mode 100644 index 0000000..26d78da --- /dev/null +++ b/src/blake2s-ref.c @@ -0,0 +1,370 @@ +/* + BLAKE2 reference source code package - reference C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +static const uint32_t blake2s_IV[8] = +{ + 0x6A09E667UL, 0xBB67AE85UL, 0x3C6EF372UL, 0xA54FF53AUL, + 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL +}; + +static const uint8_t blake2s_sigma[10][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , +}; + +static inline int blake2s_set_lastnode( blake2s_state *S ) +{ + S->f[1] = ~0U; + return 0; +} + +static inline int blake2s_clear_lastnode( blake2s_state *S ) +{ + S->f[1] = 0U; + return 0; +} + +/* Some helper functions, not necessarily useful */ +static inline int blake2s_set_lastblock( blake2s_state *S ) +{ + if( S->last_node ) blake2s_set_lastnode( S ); + + S->f[0] = ~0U; + return 0; +} + +static inline int blake2s_clear_lastblock( blake2s_state *S ) +{ + if( S->last_node ) blake2s_clear_lastnode( S ); + + S->f[0] = 0U; + return 0; +} + +static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc ) +{ + S->t[0] += inc; + S->t[1] += ( S->t[0] < inc ); + return 0; +} + +// Parameter-related functions +static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length ) +{ + P->digest_length = digest_length; + return 0; +} + +static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout ) +{ + P->fanout = fanout; + return 0; +} + +static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth ) +{ + P->depth = depth; + return 0; +} + +static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length ) +{ + store32( &P->leaf_length, leaf_length ); + return 0; +} + +static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset ) +{ + store48( P->node_offset, node_offset ); + return 0; +} + +static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth ) +{ + P->node_depth = node_depth; + return 0; +} + +static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length ) +{ + P->inner_length = inner_length; + return 0; +} + +static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] ) +{ + memcpy( P->salt, salt, BLAKE2S_SALTBYTES ); + return 0; +} + +static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] ) +{ + memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES ); + return 0; +} + +static inline int blake2s_init0( blake2s_state *S ) +{ + memset( S, 0, sizeof( blake2s_state ) ); + + for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i]; + + return 0; +} + +#define blake2s_init BLAKE2_IMPL_NAME(blake2s_init) +#define blake2s_init_param BLAKE2_IMPL_NAME(blake2s_init_param) +#define blake2s_init_key BLAKE2_IMPL_NAME(blake2s_init_key) +#define blake2s_update BLAKE2_IMPL_NAME(blake2s_update) +#define blake2s_final BLAKE2_IMPL_NAME(blake2s_final) +#define blake2s BLAKE2_IMPL_NAME(blake2s) + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2s_init( blake2s_state *S, size_t outlen ); + int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); + int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); +#if defined(__cplusplus) +} +#endif + +/* init2 xors IV with input parameter block */ +int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) +{ + blake2s_init0( S ); + uint32_t *p = ( uint32_t * )( P ); + + /* IV XOR ParamBlock */ + for( size_t i = 0; i < 8; ++i ) + S->h[i] ^= load32( &p[i] ); + + S->outlen = P->digest_length; + return 0; +} + + +// Sequential blake2s initialization +int blake2s_init( blake2s_state *S, size_t outlen ) +{ + blake2s_param P[1]; + + /* Move interval verification here? */ + if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; + + P->digest_length = outlen; + P->key_length = 0; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store48( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + // memset(P->reserved, 0, sizeof(P->reserved) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + return blake2s_init_param( S, P ); +} + +int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) +{ + blake2s_param P[1]; + + if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; + + if ( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1; + + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = 1; + P->depth = 1; + store32( &P->leaf_length, 0 ); + store48( &P->node_offset, 0 ); + P->node_depth = 0; + P->inner_length = 0; + // memset(P->reserved, 0, sizeof(P->reserved) ); + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + + if( blake2s_init_param( S, P ) < 0 ) return -1; + + { + uint8_t block[BLAKE2S_BLOCKBYTES]; + memset( block, 0, BLAKE2S_BLOCKBYTES ); + memcpy( block, key, keylen ); + blake2s_update( S, block, BLAKE2S_BLOCKBYTES ); + secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + +static int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] ) +{ + uint32_t m[16]; + uint32_t v[16]; + + for( size_t i = 0; i < 16; ++i ) + m[i] = load32( block + i * sizeof( m[i] ) ); + + for( size_t i = 0; i < 8; ++i ) + v[i] = S->h[i]; + + v[ 8] = blake2s_IV[0]; + v[ 9] = blake2s_IV[1]; + v[10] = blake2s_IV[2]; + v[11] = blake2s_IV[3]; + v[12] = S->t[0] ^ blake2s_IV[4]; + v[13] = S->t[1] ^ blake2s_IV[5]; + v[14] = S->f[0] ^ blake2s_IV[6]; + v[15] = S->f[1] ^ blake2s_IV[7]; +#define G(r,i,a,b,c,d) \ + do { \ + a = a + b + m[blake2s_sigma[r][2*i+0]]; \ + d = rotr32(d ^ a, 16); \ + c = c + d; \ + b = rotr32(b ^ c, 12); \ + a = a + b + m[blake2s_sigma[r][2*i+1]]; \ + d = rotr32(d ^ a, 8); \ + c = c + d; \ + b = rotr32(b ^ c, 7); \ + } while(0) +#define ROUND(r) \ + do { \ + G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ + G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ + G(r,2,v[ 2],v[ 6],v[10],v[14]); \ + G(r,3,v[ 3],v[ 7],v[11],v[15]); \ + G(r,4,v[ 0],v[ 5],v[10],v[15]); \ + G(r,5,v[ 1],v[ 6],v[11],v[12]); \ + G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ + G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ + } while(0) + ROUND( 0 ); + ROUND( 1 ); + ROUND( 2 ); + ROUND( 3 ); + ROUND( 4 ); + ROUND( 5 ); + ROUND( 6 ); + ROUND( 7 ); + ROUND( 8 ); + ROUND( 9 ); + + for( size_t i = 0; i < 8; ++i ) + S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; + +#undef G +#undef ROUND + return 0; +} + + +int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ) +{ + while( inlen > 0 ) + { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2S_BLOCKBYTES - left; + + if( inlen > fill ) + { + memcpy( S->buf + left, in, fill ); // Fill buffer + S->buflen += fill; + blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); + blake2s_compress( S, S->buf ); // Compress + memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left + S->buflen -= BLAKE2S_BLOCKBYTES; + in += fill; + inlen -= fill; + } + else // inlen <= fill + { + memcpy( S->buf + left, in, inlen ); + S->buflen += inlen; // Be lazy, do not compress + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + +int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ) +{ + uint8_t buffer[BLAKE2S_OUTBYTES]; + + if(S->outlen != outlen) return -1; + + if( S->buflen > BLAKE2S_BLOCKBYTES ) + { + blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); + blake2s_compress( S, S->buf ); + S->buflen -= BLAKE2S_BLOCKBYTES; + memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen ); + } + + blake2s_increment_counter( S, ( uint32_t )S->buflen ); + blake2s_set_lastblock( S ); + memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */ + blake2s_compress( S, S->buf ); + + for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ + store32( buffer + sizeof( S->h[i] ) * i, S->h[i] ); + + memcpy( out, buffer, outlen ); + return 0; +} + +int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2s_state S[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if ( NULL == key && keylen > 0 ) return -1; + + if( keylen > 0 ) + { + if( blake2s_init_key( S, outlen, key, keylen ) < 0 ) return -1; + } + else + { + if( blake2s_init( S, outlen ) < 0 ) return -1; + } + + if( blake2s_update( S, ( uint8_t * )in, inlen ) < 0) return -1; + return blake2s_final( S, out, outlen ); +} + diff --git a/src/blake2s-round.h b/src/blake2s-round.h new file mode 100644 index 0000000..1e2f2b7 --- /dev/null +++ b/src/blake2s-round.h @@ -0,0 +1,91 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#pragma once +#ifndef __BLAKE2S_ROUND_H__ +#define __BLAKE2S_ROUND_H__ + +#define LOAD(p) _mm_load_si128( (__m128i *)(p) ) +#define STORE(p,r) _mm_store_si128((__m128i *)(p), r) + +#define LOADU(p) _mm_loadu_si128( (__m128i *)(p) ) +#define STOREU(p,r) _mm_storeu_si128((__m128i *)(p), r) + +#define TOF(reg) _mm_castsi128_ps((reg)) +#define TOI(reg) _mm_castps_si128((reg)) + +#define LIKELY(x) __builtin_expect((x),1) + + +/* Microarchitecture-specific macros */ +#ifndef HAVE_XOP +#ifdef HAVE_SSSE3 +#define _mm_roti_epi32(r, c) ( \ + (8==-(c)) ? _mm_shuffle_epi8(r,r8) \ + : (16==-(c)) ? _mm_shuffle_epi8(r,r16) \ + : _mm_xor_si128(_mm_srli_epi32( (r), -(c) ),_mm_slli_epi32( (r), 32-(-(c)) )) ) +#else +#define _mm_roti_epi32(r, c) _mm_xor_si128(_mm_srli_epi32( (r), -(c) ),_mm_slli_epi32( (r), 32-(-(c)) )) +#endif +#else +/* ... */ +#endif + + +#define G1(row1,row2,row3,row4,buf) \ + row1 = _mm_add_epi32( _mm_add_epi32( row1, buf), row2 ); \ + row4 = _mm_xor_si128( row4, row1 ); \ + row4 = _mm_roti_epi32(row4, -16); \ + row3 = _mm_add_epi32( row3, row4 ); \ + row2 = _mm_xor_si128( row2, row3 ); \ + row2 = _mm_roti_epi32(row2, -12); + +#define G2(row1,row2,row3,row4,buf) \ + row1 = _mm_add_epi32( _mm_add_epi32( row1, buf), row2 ); \ + row4 = _mm_xor_si128( row4, row1 ); \ + row4 = _mm_roti_epi32(row4, -8); \ + row3 = _mm_add_epi32( row3, row4 ); \ + row2 = _mm_xor_si128( row2, row3 ); \ + row2 = _mm_roti_epi32(row2, -7); + +#define DIAGONALIZE(row1,row2,row3,row4) \ + row4 = _mm_shuffle_epi32( row4, _MM_SHUFFLE(2,1,0,3) ); \ + row3 = _mm_shuffle_epi32( row3, _MM_SHUFFLE(1,0,3,2) ); \ + row2 = _mm_shuffle_epi32( row2, _MM_SHUFFLE(0,3,2,1) ); + +#define UNDIAGONALIZE(row1,row2,row3,row4) \ + row4 = _mm_shuffle_epi32( row4, _MM_SHUFFLE(0,3,2,1) ); \ + row3 = _mm_shuffle_epi32( row3, _MM_SHUFFLE(1,0,3,2) ); \ + row2 = _mm_shuffle_epi32( row2, _MM_SHUFFLE(2,1,0,3) ); + +#if defined(HAVE_XOP) +#include "blake2s-load-xop.h" +#elif defined(HAVE_SSE4_1) +#include "blake2s-load-sse41.h" +#else +#include "blake2s-load-sse2.h" +#endif + +#define ROUND(r) \ + LOAD_MSG_ ##r ##_1(buf1); \ + G1(row1,row2,row3,row4,buf1); \ + LOAD_MSG_ ##r ##_2(buf2); \ + G2(row1,row2,row3,row4,buf2); \ + DIAGONALIZE(row1,row2,row3,row4); \ + LOAD_MSG_ ##r ##_3(buf3); \ + G1(row1,row2,row3,row4,buf3); \ + LOAD_MSG_ ##r ##_4(buf4); \ + G2(row1,row2,row3,row4,buf4); \ + UNDIAGONALIZE(row1,row2,row3,row4); \ + +#endif + diff --git a/src/blake2s-test.c b/src/blake2s-test.c new file mode 100644 index 0000000..5c3f1f1 --- /dev/null +++ b/src/blake2s-test.c @@ -0,0 +1,43 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#include +#include +#include "blake2.h" +#include "blake2-kat.h" +int main( int argc, char **argv ) +{ + uint8_t key[BLAKE2S_KEYBYTES]; + uint8_t buf[KAT_LENGTH]; + + for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i ) + key[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + buf[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + { + uint8_t hash[BLAKE2S_OUTBYTES]; + + if( blake2s( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES ) < 0 || + 0 != memcmp( hash, blake2s_keyed_kat[i], BLAKE2S_OUTBYTES ) ) + { + puts( "error" ); + return -1; + } + } + + puts( "ok" ); + return 0; +} + diff --git a/src/blake2s.c b/src/blake2s.c new file mode 100644 index 0000000..fe54165 --- /dev/null +++ b/src/blake2s.c @@ -0,0 +1,418 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include + +#include "blake2.h" +#include "blake2-impl.h" + +#include "blake2-config.h" + +#if defined(_MSC_VER) +#include +#endif + +#if defined(HAVE_SSE2) +#include +// MSVC only defines _mm_set_epi64x for x86_64... +#if defined(_MSC_VER) && !defined(_M_X64) +static inline __m128i _mm_set_epi64x( const uint64_t u1, const uint64_t u0 ) +{ + return _mm_set_epi32( u1 >> 32, u1, u0 >> 32, u0 ); +} +#endif +#endif + + +#if defined(HAVE_SSSE3) +#include +#endif +#if defined(HAVE_SSE4_1) +#include +#endif +#if defined(HAVE_AVX) +#include +#endif +#if defined(HAVE_XOP) && !defined(_MSC_VER) +#include +#endif + +#include "blake2s-round.h" + +static const uint32_t blake2s_IV[8] = +{ + 0x6A09E667UL, 0xBB67AE85UL, 0x3C6EF372UL, 0xA54FF53AUL, + 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL +}; + +static const uint8_t blake2s_sigma[10][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , +}; + + +/* Some helper functions, not necessarily useful */ +static inline int blake2s_set_lastnode( blake2s_state *S ) +{ + S->f[1] = ~0U; + return 0; +} + +static inline int blake2s_clear_lastnode( blake2s_state *S ) +{ + S->f[1] = 0U; + return 0; +} + +static inline int blake2s_set_lastblock( blake2s_state *S ) +{ + if( S->last_node ) blake2s_set_lastnode( S ); + + S->f[0] = ~0U; + return 0; +} + +static inline int blake2s_clear_lastblock( blake2s_state *S ) +{ + if( S->last_node ) blake2s_clear_lastnode( S ); + + S->f[0] = 0U; + return 0; +} + +static inline int blake2s_increment_counter( blake2s_state *S, const uint32_t inc ) +{ + uint64_t t = ( ( uint64_t )S->t[1] << 32 ) | S->t[0]; + t += inc; + S->t[0] = ( uint32_t )( t >> 0 ); + S->t[1] = ( uint32_t )( t >> 32 ); + return 0; +} + + +// Parameter-related functions +static inline int blake2s_param_set_digest_length( blake2s_param *P, const uint8_t digest_length ) +{ + P->digest_length = digest_length; + return 0; +} + +static inline int blake2s_param_set_fanout( blake2s_param *P, const uint8_t fanout ) +{ + P->fanout = fanout; + return 0; +} + +static inline int blake2s_param_set_max_depth( blake2s_param *P, const uint8_t depth ) +{ + P->depth = depth; + return 0; +} + +static inline int blake2s_param_set_leaf_length( blake2s_param *P, const uint32_t leaf_length ) +{ + P->leaf_length = leaf_length; + return 0; +} + +static inline int blake2s_param_set_node_offset( blake2s_param *P, const uint64_t node_offset ) +{ + store48( P->node_offset, node_offset ); + return 0; +} + +static inline int blake2s_param_set_node_depth( blake2s_param *P, const uint8_t node_depth ) +{ + P->node_depth = node_depth; + return 0; +} + +static inline int blake2s_param_set_inner_length( blake2s_param *P, const uint8_t inner_length ) +{ + P->inner_length = inner_length; + return 0; +} + +static inline int blake2s_param_set_salt( blake2s_param *P, const uint8_t salt[BLAKE2S_SALTBYTES] ) +{ + memcpy( P->salt, salt, BLAKE2S_SALTBYTES ); + return 0; +} + +static inline int blake2s_param_set_personal( blake2s_param *P, const uint8_t personal[BLAKE2S_PERSONALBYTES] ) +{ + memcpy( P->personal, personal, BLAKE2S_PERSONALBYTES ); + return 0; +} + +static inline int blake2s_init0( blake2s_state *S ) +{ + memset( S, 0, sizeof( blake2s_state ) ); + + for( int i = 0; i < 8; ++i ) S->h[i] = blake2s_IV[i]; + + return 0; +} + +#define blake2s_init BLAKE2_IMPL_NAME(blake2s_init) +#define blake2s_init_param BLAKE2_IMPL_NAME(blake2s_init_param) +#define blake2s_init_key BLAKE2_IMPL_NAME(blake2s_init_key) +#define blake2s_update BLAKE2_IMPL_NAME(blake2s_update) +#define blake2s_final BLAKE2_IMPL_NAME(blake2s_final) +#define blake2s BLAKE2_IMPL_NAME(blake2s) + +#if defined(__cplusplus) +extern "C" { +#endif + int blake2s_init( blake2s_state *S, size_t outlen ); + int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); + int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ); + int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ); + int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ); + int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ); +#if defined(__cplusplus) +} +#endif + + +/* init2 xors IV with input parameter block */ +int blake2s_init_param( blake2s_state *S, const blake2s_param *P ) +{ + uint8_t *p, *h, *v; + //blake2s_init0( S ); + v = ( uint8_t * )( blake2s_IV ); + h = ( uint8_t * )( S->h ); + p = ( uint8_t * )( P ); + /* IV XOR ParamBlock */ + memset( S, 0, sizeof( blake2s_state ) ); + + for( int i = 0; i < BLAKE2S_OUTBYTES; ++i ) h[i] = v[i] ^ p[i]; + + S->outlen = P->digest_length; + return 0; +} + + +/* Some sort of default parameter block initialization, for sequential blake2s */ +int blake2s_init( blake2s_state *S, size_t outlen ) +{ + if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; + + const blake2s_param P = + { + outlen, + 0, + 1, + 1, + 0, + {0}, + 0, + 0, + {0}, + {0} + }; + return blake2s_init_param( S, &P ); +} + + +int blake2s_init_key( blake2s_state *S, size_t outlen, const void *key, size_t keylen ) +{ + if ( ( !outlen ) || ( outlen > BLAKE2S_OUTBYTES ) ) return -1; + + if ( ( !key ) || ( !keylen ) || keylen > BLAKE2S_KEYBYTES ) return -1; + + const blake2s_param P = + { + outlen, + keylen, + 1, + 1, + 0, + {0}, + 0, + 0, + {0}, + {0} + }; + + if( blake2s_init_param( S, &P ) < 0 ) + return -1; + + { + uint8_t block[BLAKE2S_BLOCKBYTES]; + memset( block, 0, BLAKE2S_BLOCKBYTES ); + memcpy( block, key, keylen ); + blake2s_update( S, block, BLAKE2S_BLOCKBYTES ); + secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + + +static inline int blake2s_compress( blake2s_state *S, const uint8_t block[BLAKE2S_BLOCKBYTES] ) +{ + __m128i row1, row2, row3, row4; + __m128i buf1, buf2, buf3, buf4; +#if defined(HAVE_SSE4_1) + __m128i t0, t1; +#if !defined(HAVE_XOP) + __m128i t2; +#endif +#endif + __m128i ff0, ff1; +#if defined(HAVE_SSSE3) && !defined(HAVE_XOP) + const __m128i r8 = _mm_set_epi8( 12, 15, 14, 13, 8, 11, 10, 9, 4, 7, 6, 5, 0, 3, 2, 1 ); + const __m128i r16 = _mm_set_epi8( 13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2 ); +#endif +#if defined(HAVE_SSE4_1) + const __m128i m0 = LOADU( block + 00 ); + const __m128i m1 = LOADU( block + 16 ); + const __m128i m2 = LOADU( block + 32 ); + const __m128i m3 = LOADU( block + 48 ); +#else + const uint32_t m0 = ( ( uint32_t * )block )[ 0]; + const uint32_t m1 = ( ( uint32_t * )block )[ 1]; + const uint32_t m2 = ( ( uint32_t * )block )[ 2]; + const uint32_t m3 = ( ( uint32_t * )block )[ 3]; + const uint32_t m4 = ( ( uint32_t * )block )[ 4]; + const uint32_t m5 = ( ( uint32_t * )block )[ 5]; + const uint32_t m6 = ( ( uint32_t * )block )[ 6]; + const uint32_t m7 = ( ( uint32_t * )block )[ 7]; + const uint32_t m8 = ( ( uint32_t * )block )[ 8]; + const uint32_t m9 = ( ( uint32_t * )block )[ 9]; + const uint32_t m10 = ( ( uint32_t * )block )[10]; + const uint32_t m11 = ( ( uint32_t * )block )[11]; + const uint32_t m12 = ( ( uint32_t * )block )[12]; + const uint32_t m13 = ( ( uint32_t * )block )[13]; + const uint32_t m14 = ( ( uint32_t * )block )[14]; + const uint32_t m15 = ( ( uint32_t * )block )[15]; +#endif + row1 = ff0 = LOADU( &S->h[0] ); + row2 = ff1 = LOADU( &S->h[4] ); + row3 = _mm_setr_epi32( 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A ); + row4 = _mm_xor_si128( _mm_setr_epi32( 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 ), LOADU( &S->t[0] ) ); + ROUND( 0 ); + ROUND( 1 ); + ROUND( 2 ); + ROUND( 3 ); + ROUND( 4 ); + ROUND( 5 ); + ROUND( 6 ); + ROUND( 7 ); + ROUND( 8 ); + ROUND( 9 ); + STOREU( &S->h[0], _mm_xor_si128( ff0, _mm_xor_si128( row1, row3 ) ) ); + STOREU( &S->h[4], _mm_xor_si128( ff1, _mm_xor_si128( row2, row4 ) ) ); + return 0; +} + + +int blake2s_update( blake2s_state *S, const uint8_t *in, size_t inlen ) +{ + while( inlen > 0 ) + { + size_t left = S->buflen; + size_t fill = 2 * BLAKE2S_BLOCKBYTES - left; + + if( inlen > fill ) + { + memcpy( S->buf + left, in, fill ); // Fill buffer + S->buflen += fill; + blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); + blake2s_compress( S, S->buf ); // Compress + memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); // Shift buffer left + S->buflen -= BLAKE2S_BLOCKBYTES; + in += fill; + inlen -= fill; + } + else /* inlen <= fill */ + { + memcpy( S->buf + left, in, inlen ); + S->buflen += inlen; // Be lazy, do not compress + in += inlen; + inlen -= inlen; + } + } + + return 0; +} + + +int blake2s_final( blake2s_state *S, uint8_t *out, size_t outlen ) +{ + uint8_t buffer[BLAKE2S_OUTBYTES]; + + if(outlen != S->outlen ) return -1; + + if( S->buflen > BLAKE2S_BLOCKBYTES ) + { + blake2s_increment_counter( S, BLAKE2S_BLOCKBYTES ); + blake2s_compress( S, S->buf ); + S->buflen -= BLAKE2S_BLOCKBYTES; + memcpy( S->buf, S->buf + BLAKE2S_BLOCKBYTES, S->buflen ); + } + + blake2s_increment_counter( S, ( uint32_t )S->buflen ); + blake2s_set_lastblock( S ); + memset( S->buf + S->buflen, 0, 2 * BLAKE2S_BLOCKBYTES - S->buflen ); /* Padding */ + blake2s_compress( S, S->buf ); + + for( int i = 0; i < 8; ++i ) /* Output full hash to temp buffer */ + store32( buffer + sizeof( S->h[i] ) * i, S->h[i] ); + + memcpy( out, buffer, outlen ); + return 0; +} + +int blake2s( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + blake2s_state S[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if ( NULL == key && keylen > 0) return -1; + + if( keylen > 0 ) + { + if( blake2s_init_key( S, outlen, key, keylen ) < 0 ) return -1; + } + else + { + if( blake2s_init( S, outlen ) < 0 ) return -1; + } + + if( blake2s_update( S, ( uint8_t * )in, inlen ) < 0) return -1; + return blake2s_final( S, out, outlen ); +} + +#if defined(SUPERCOP) +int crypto_hash( unsigned char *out, unsigned char *in, unsigned long long inlen ) +{ + return blake2s( out, in, NULL, BLAKE2S_OUTBYTES, (size_t)inlen, 0 ); +} +#endif + diff --git a/src/blake2sp-test.c b/src/blake2sp-test.c new file mode 100644 index 0000000..621e350 --- /dev/null +++ b/src/blake2sp-test.c @@ -0,0 +1,43 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ +#include +#include +#include "blake2.h" +#include "blake2-kat.h" + +int main( int argc, char **argv ) +{ + uint8_t key[BLAKE2S_KEYBYTES]; + uint8_t buf[KAT_LENGTH]; + + for( size_t i = 0; i < BLAKE2S_KEYBYTES; ++i ) + key[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + buf[i] = ( uint8_t )i; + + for( size_t i = 0; i < KAT_LENGTH; ++i ) + { + uint8_t hash[BLAKE2S_OUTBYTES]; + if( blake2sp( hash, buf, key, BLAKE2S_OUTBYTES, i, BLAKE2S_KEYBYTES ) < 0 || + 0 != memcmp( hash, blake2sp_keyed_kat[i], BLAKE2S_OUTBYTES ) ) + { + puts( "error" ); + return -1; + } + } + + puts( "ok" ); + return 0; +} + diff --git a/src/blake2sp.c b/src/blake2sp.c new file mode 100644 index 0000000..0e8fb13 --- /dev/null +++ b/src/blake2sp.c @@ -0,0 +1,272 @@ +/* + BLAKE2 reference source code package - optimized C implementations + + Written in 2012 by Samuel Neves + + To the extent possible under law, the author(s) have dedicated all copyright + and related and neighboring rights to this software to the public domain + worldwide. This software is distributed without any warranty. + + You should have received a copy of the CC0 Public Domain Dedication along with + this software. If not, see . +*/ + +#include +#include +#include + +#if defined(_OPENMP) +#include +#endif + +#include "blake2.h" +#include "blake2-impl.h" + +#define PARALLELISM_DEGREE 8 + +static int blake2sp_init_leaf( blake2s_state *S, uint8_t outlen, uint8_t keylen, uint64_t offset ) +{ + blake2s_param P[1]; + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = PARALLELISM_DEGREE; + P->depth = 2; + P->leaf_length = 0; + store48( P->node_offset, offset ); + P->node_depth = 0; + P->inner_length = BLAKE2S_OUTBYTES; + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + blake2s_init_param( S, P ); + S->outlen = P->inner_length; + return 0; +} + +static int blake2sp_init_root( blake2s_state *S, uint8_t outlen, uint8_t keylen ) +{ + blake2s_param P[1]; + P->digest_length = outlen; + P->key_length = keylen; + P->fanout = PARALLELISM_DEGREE; + P->depth = 2; + P->leaf_length = 0; + store48( P->node_offset, 0ULL ); + P->node_depth = 1; + P->inner_length = BLAKE2S_OUTBYTES; + memset( P->salt, 0, sizeof( P->salt ) ); + memset( P->personal, 0, sizeof( P->personal ) ); + blake2s_init_param( S, P ); + S->outlen = P->digest_length; + return 0; +} + + +int blake2sp_init( blake2sp_state *S, size_t outlen ) +{ + if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; + + memset( S->buf, 0, sizeof( S->buf ) ); + S->buflen = 0; + + if( blake2sp_init_root( S->R, outlen, 0 ) < 0 ) + return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; + + S->R->last_node = 1; + S->S[PARALLELISM_DEGREE - 1]->last_node = 1; + S->outlen = outlen; + return 0; +} + +int blake2sp_init_key( blake2sp_state *S, size_t outlen, const void *key, size_t keylen ) +{ + if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; + + if( !key || !keylen || keylen > BLAKE2S_KEYBYTES ) return -1; + + memset( S->buf, 0, sizeof( S->buf ) ); + S->buflen = 0; + + if( blake2sp_init_root( S->R, outlen, keylen ) < 0 ) + return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; + + S->R->last_node = 1; + S->S[PARALLELISM_DEGREE - 1]->last_node = 1; + S->outlen = outlen; + { + uint8_t block[BLAKE2S_BLOCKBYTES]; + memset( block, 0, BLAKE2S_BLOCKBYTES ); + memcpy( block, key, keylen ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2s_update( S->S[i], block, BLAKE2S_BLOCKBYTES ); + + secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */ + } + return 0; +} + + +int blake2sp_update( blake2sp_state *S, const uint8_t *in, size_t inlen ) +{ + size_t left = S->buflen; + size_t fill = sizeof( S->buf ) - left; + + if( left && inlen >= fill ) + { + memcpy( S->buf + left, in, fill ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, BLAKE2S_BLOCKBYTES ); + + in += fill; + inlen -= fill; + left = 0; + } + +#if defined(_OPENMP) + omp_set_num_threads(PARALLELISM_DEGREE); + #pragma omp parallel shared(S) +#else + for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ ) +#endif + { +#if defined(_OPENMP) + size_t id__ = omp_get_thread_num(); +#endif + size_t inlen__ = inlen; + const uint8_t *in__ = ( const uint8_t * )in; + in__ += id__ * BLAKE2S_BLOCKBYTES; + + while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) + { + blake2s_update( S->S[id__], in__, BLAKE2S_BLOCKBYTES ); + in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; + inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; + } + } + + in += inlen - inlen % ( PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ); + inlen %= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; + + if( inlen > 0 ) + memcpy( S->buf + left, in, inlen ); + + S->buflen = left + inlen; + return 0; +} + + +int blake2sp_final( blake2sp_state *S, uint8_t *out, size_t outlen ) +{ + uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES]; + + if(S->outlen != outlen) return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + { + if( S->buflen > i * BLAKE2S_BLOCKBYTES ) + { + size_t left = S->buflen - i * BLAKE2S_BLOCKBYTES; + + if( left > BLAKE2S_BLOCKBYTES ) left = BLAKE2S_BLOCKBYTES; + + blake2s_update( S->S[i], S->buf + i * BLAKE2S_BLOCKBYTES, left ); + } + + blake2s_final( S->S[i], hash[i], BLAKE2S_OUTBYTES ); + } + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2s_update( S->R, hash[i], BLAKE2S_OUTBYTES ); + + blake2s_final( S->R, out, outlen ); + return 0; +} + + +int blake2sp( uint8_t *out, const void *in, const void *key, size_t outlen, size_t inlen, size_t keylen ) +{ + uint8_t hash[PARALLELISM_DEGREE][BLAKE2S_OUTBYTES]; + blake2s_state S[PARALLELISM_DEGREE][1]; + blake2s_state FS[1]; + + /* Verify parameters */ + if ( NULL == in ) return -1; + + if ( NULL == out ) return -1; + + if ( NULL == key && keylen > 0 ) return -1; + + if( !outlen || outlen > BLAKE2S_OUTBYTES ) return -1; + + if( keylen > BLAKE2S_KEYBYTES ) return -1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; + + S[PARALLELISM_DEGREE - 1]->last_node = 1; // mark last node + + if( keylen > 0 ) + { + uint8_t block[BLAKE2S_BLOCKBYTES]; + memset( block, 0, BLAKE2S_BLOCKBYTES ); + memcpy( block, key, keylen ); + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2s_update( S[i], block, BLAKE2S_BLOCKBYTES ); + + secure_zero_memory( block, BLAKE2S_BLOCKBYTES ); /* Burn the key from stack */ + } + +#if defined(_OPENMP) + omp_set_num_threads(PARALLELISM_DEGREE); + #pragma omp parallel shared(S,hash) +#else + + for( size_t id__ = 0; id__ < PARALLELISM_DEGREE; ++id__ ) +#endif + { +#if defined(_OPENMP) + size_t id__ = omp_get_thread_num(); +#endif + size_t inlen__ = inlen; + const uint8_t *in__ = ( const uint8_t * )in; + in__ += id__ * BLAKE2S_BLOCKBYTES; + + while( inlen__ >= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES ) + { + blake2s_update( S[id__], in__, BLAKE2S_BLOCKBYTES ); + in__ += PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; + inlen__ -= PARALLELISM_DEGREE * BLAKE2S_BLOCKBYTES; + } + + if( inlen__ > id__ * BLAKE2S_BLOCKBYTES ) + { + const size_t left = inlen__ - id__ * BLAKE2S_BLOCKBYTES; + const size_t len = left <= BLAKE2S_BLOCKBYTES ? left : BLAKE2S_BLOCKBYTES; + blake2s_update( S[id__], in__, len ); + } + + blake2s_final( S[id__], hash[id__], BLAKE2S_OUTBYTES ); + } + + if( blake2sp_init_root( FS, outlen, keylen ) < 0 ) + return -1; + + FS->last_node = 1; + + for( size_t i = 0; i < PARALLELISM_DEGREE; ++i ) + blake2s_update( FS, hash[i], BLAKE2S_OUTBYTES ); + + return blake2s_final( FS, out, outlen ); +} + + + +