From 587eeaa3e7b1bea27c3a6bcaae52c4086163327b Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Thu, 7 Dec 2023 04:12:20 -0600 Subject: [PATCH] revert stable branch to v8.3.0 --- CMakeLists.txt | 306 +- CUDA/CMakeLists.txt | 78 +- CUDA/GB_cuda_init.c | 4 +- CUDA/GB_cuda_kernel.h | 3 - CUDA/GB_cuda_type_bits.c | 3 +- CUDA/templates/GB_jit_AxB_dot3_phase1.cuh | 32 +- CUDA/templates/GB_jit_AxB_dot3_phase3_mp.cuh | 26 +- .../templates/GB_jit_AxB_dot3_phase3_spdn.cuh | 26 +- .../templates/GB_jit_AxB_dot3_phase3_vsdn.cuh | 26 +- .../templates/GB_jit_AxB_dot3_phase3_vsvs.cuh | 26 +- CUDA/test/run_tests.cpp | 2 + Config/.gitignore | 5 + Config/GB_config.h | 14 +- Config/GB_config.h.in | 2 +- Config/GraphBLAS.h.in | 1406 +- Config/GraphBLAS.pc.in | 1 + Config/GraphBLASConfig.cmake.in | 5 + Config/README.md.in | 12 +- Demo/Output/gauss_demo.out | 216 +- Demo/Output/gauss_demo1.out | 2399 ++ Demo/Output/import_demo.out | 32 +- Demo/Output/openmp_demo.out | 458 +- Demo/Output/wildtype_demo.out | 49 +- Demo/Program/gauss_demo.c | 117 +- Demo/Program/simple_demo.c | 2 +- Demo/Program/wildtype_demo.c | 21 +- Demo/demo | 16 +- Demo/vdemo | 18 +- Doc/ChangeLog | 32 +- Doc/GrB_get_set.tex | 1657 - Doc/GraphBLAS_API_version.tex | 4 +- Doc/GraphBLAS_UserGuide.bib | 1 - Doc/GraphBLAS_UserGuide.pdf | Bin 1125347 -> 1150910 bytes Doc/GraphBLAS_UserGuide.tex | 2368 +- Doc/GraphBLAS_version.tex | 4 +- Doc/Makefile | 2 +- Doc/README_Doc.txt | 2 +- GraphBLAS/@GrB/binopinfo.m | 2 +- GraphBLAS/@GrB/private/util/gb_error.c | 1 - .../@GrB/private/util/gb_export_to_mxstruct.c | 61 +- GraphBLAS/@GrB/private/util/gb_get_shallow.c | 4 +- GraphBLAS/@GrB/unopinfo.m | 4 +- GraphBLAS/CMakeLists.txt | 10 +- GraphBLAS/Config/.gitignore | 5 + GraphBLAS/Config/GB_config.h | 69 - GraphBLAS/Makefile | 4 +- GraphBLAS/demo/html/graphblas_demo.html | 6 +- GraphBLAS/rename/GB_rename.h | 140 - GraphBLAS/rename/Makefile | 20 +- Include/GraphBLAS.h | 1418 +- JITpackage/CMakeLists.txt | 13 + JITpackage/GB_JITpackage.c | 30314 ++++++++-------- JITpackage/Makefile | 3 - JITpackage/Source/grb_jitpackage.c | 10 +- Makefile | 12 +- README.md | 14 +- .../GB_AxB_saxpy3_symbolic_template.c | 24 +- Source/Factories/GB_Matrix_extractElement.c | 23 +- Source/Factories/GB_unop_factory.c | 4 +- Source/GB_AxB_dot3.c | 20 +- Source/GB_AxB_saxpy3_flopcount.c | 27 +- Source/GB_AxB_saxpy3_slice_balanced.c | 25 +- Source/GB_BinaryOp_check.c | 13 +- Source/GB_Context.c | 2 +- Source/GB_Global.c | 21 +- Source/GB_Global.h | 3 - Source/GB_IndexUnaryOp_check.c | 8 +- Source/GB_Matrix_free.c | 1 - Source/GB_Monoid_new.c | 2 - Source/GB_Op_free.c | 11 +- Source/GB_Pending.h | 4 - Source/GB_Scalar_wrap.c | 2 - Source/GB_Semiring_new.c | 2 - Source/GB_UnaryOp_check.c | 7 +- Source/GB_add_phase0.c | 36 +- Source/GB_assign_zombie1.c | 10 +- Source/GB_assign_zombie3.c | 12 +- Source/GB_assign_zombie4.c | 16 +- Source/GB_assign_zombie5.c | 12 +- Source/GB_binop_new.c | 5 +- Source/GB_bitwise.h | 16 +- Source/GB_block.c | 2 +- Source/GB_boolean_rename.c | 2 +- Source/GB_code_name_get.c | 33 - Source/GB_deserialize.c | 36 - Source/GB_dup_worker.c | 38 +- Source/GB_emult_08_phase0.c | 30 +- Source/GB_get_set.h | 93 - Source/GB_hyper.h | 16 +- Source/GB_hyper_hash_build.c | 6 +- Source/GB_hyper_hash_need.c | 49 - Source/GB_hyper_shallow.c | 4 - Source/GB_init.c | 2 +- Source/GB_jitifyer.c | 73 +- Source/GB_macrofy_cast_expression.c | 2 +- Source/GB_macrofy_cast_input.c | 2 +- Source/GB_macrofy_cast_output.c | 2 +- Source/GB_math.h | 18 +- Source/GB_matvec_enum_get.c | 47 - Source/GB_matvec_name_get.c | 45 - Source/GB_matvec_name_set.c | 28 - Source/GB_matvec_name_size_get.c | 39 - Source/GB_matvec_set.c | 94 - Source/GB_monoid_get.c | 69 - Source/GB_monoid_name_get.c | 213 - Source/GB_new.c | 2 - Source/GB_op.h | 2 + Source/GB_op_enum_get.c | 46 - Source/GB_op_name_and_defn.c | 47 +- Source/GB_op_name_get.c | 1702 - Source/GB_op_or_type_string_set.c | 115 - Source/GB_op_scalar_get.c | 34 - Source/GB_op_size_get.c | 66 - Source/GB_op_string_get.c | 78 - Source/GB_op_string_set.c | 35 - Source/GB_ops.c | 21 +- Source/GB_semiring_name_get.c | 3341 -- Source/GB_serialize.c | 31 - Source/GB_serialize.h | 36 +- Source/GB_setElement.c | 28 +- Source/GB_status_code.c | 1 - Source/GB_subassign_06n.c | 8 +- Source/GB_subref_phase0.c | 12 +- Source/GB_transplant.c | 4 +- Source/GB_type_code_get.c | 38 - Source/GB_type_name_get.c | 22 - Source/GB_unop_new.c | 5 +- Source/GB_user_name_set.c | 58 - Source/GrB_BinaryOp_get.c | 149 - Source/GrB_BinaryOp_new.c | 10 +- Source/GrB_BinaryOp_set.c | 85 - Source/GrB_Descriptor_free.c | 2 - Source/GrB_Descriptor_get2.c | 283 - Source/GrB_Descriptor_new.c | 2 - Source/GrB_Descriptor_set2.c | 260 - Source/GrB_Global_get.c | 537 - Source/GrB_Global_set.c | 320 - Source/GrB_IndexUnaryOp_get.c | 137 - Source/GrB_IndexUnaryOp_new.c | 10 +- Source/GrB_IndexUnaryOp_set.c | 82 - Source/GrB_Matrix_get.c | 166 - Source/GrB_Matrix_reduce.c | 4 +- Source/GrB_Matrix_removeElement.c | 23 +- Source/GrB_Matrix_set.c | 132 - Source/GrB_Matrix_wait.c | 2 +- Source/GrB_Monoid_free.c | 2 - Source/GrB_Monoid_get.c | 214 - Source/GrB_Monoid_set.c | 89 - Source/GrB_Scalar_get.c | 145 - Source/GrB_Scalar_set.c | 86 - Source/GrB_Scalar_setElement.c | 1 - Source/GrB_Semiring_free.c | 2 - Source/GrB_Semiring_get.c | 241 - Source/GrB_Semiring_set.c | 89 - Source/GrB_Type_free.c | 11 +- Source/GrB_Type_get.c | 237 - Source/GrB_Type_new.c | 19 +- Source/GrB_Type_set.c | 87 - Source/GrB_UnaryOp_get.c | 137 - Source/GrB_UnaryOp_new.c | 10 +- Source/GrB_UnaryOp_set.c | 82 - Source/GrB_Vector_get.c | 162 - Source/GrB_Vector_set.c | 126 - Source/GrB_init.c | 2 +- Source/GxB_Context_free.c | 2 - Source/GxB_Context_get.c | 2 +- Source/GxB_Context_get2.c | 229 - Source/GxB_Context_new.c | 2 - Source/GxB_Context_set.c | 2 +- Source/GxB_Context_set2.c | 179 - Source/GxB_IndexUnaryOp_new.c | 4 +- Source/GxB_Matrix_serialize.c | 2 +- Source/GxB_Serialized_get.c | 532 - Source/GxB_Type_from_name.c | 52 +- Source/GxB_Type_new.c | 43 +- Source/GxB_Vector_serialize.c | 2 +- Source/GxB_deserialize_type_name.c | 11 +- Source/GxB_init.c | 2 +- Source/Shared/GB_Operator.h | 8 +- Source/Shared/GB_assign_shared_definitions.h | 28 +- Source/Shared/GB_complex.h | 2 +- Source/Shared/GB_hyper_hash_lookup.h | 84 +- Source/Shared/GB_matrix.h | 18 +- Source/Shared/GB_opaque.h | 33 +- Source/Shared/GxB_complex.h | 4 +- Source/Template/GB_AxB_dot3_meta.c | 20 +- Source/Template/GB_AxB_dot3_phase1_template.c | 8 +- Source/Template/GB_AxB_dot3_template.c | 8 +- Source/Template/GB_AxB_saxpy3_template.c | 31 +- Source/Template/GB_AxB_saxpy3_template.h | 4 +- Source/Template/GB_Template.h | 2 +- Source/Template/GB_atomics.h | 43 +- Source/Template/GB_compiler.h | 4 +- Source/Template/GB_defaults.h | 2 +- Source/Template/GB_math_macros.h | 2 +- Source/Template/GB_wait_macros.h | 3 + ...xB_dot2__2c1f000bba0bbac7__plus_my_rdiv2.c | 2 +- ...xB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c | 4 +- ...AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c | 4 +- .../GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c | 4 +- ...xB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c | 4 +- ...xB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c | 4 +- ...xB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c | 4 +- ...xB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c | 4 +- Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c | 4 +- Tcov/README.txt | 4 +- Tcov/grbuniq.m | 87 - Tcov/log_Dec6.txt | 217 + Tcov/log_Sept10.txt | 204 - Tcov/log_Sept5.txt | 217 - Test/GB_mex_dup.c | 16 +- Test/GB_mex_generic.h | 141 - Test/GB_mex_serialize.c | 2 +- Test/GB_mex_test0.c | 63 +- Test/GB_mex_test1.c | 4 - Test/GB_mex_test11.c | 12 +- Test/{unused => }/GB_mex_test23.c | 0 Test/GB_mex_test25.c | 30 - Test/GB_mex_test26.c | 670 - Test/GB_mex_test27.c | 476 - Test/GB_mex_test28.c | 680 - Test/GB_mex_test29.c | 462 - Test/GB_mex_test30.c | 286 - Test/GB_mex_test31.c | 381 - Test/GB_mex_test32.c | 2271 -- Test/GB_mex_test33.c | 155 - Test/GB_mex_test34.c | 466 - Test/GB_mex_test35.c | 316 - Test/GB_mex_test5.c | 16 +- Test/GB_mex_test7.c | 17 - Test/GB_mx_get_global.c | 10 - Test/GB_spec_op.m | 8 +- Test/README.txt | 4 +- Test/logstat.m | 9 +- Test/make.m | 2 +- Test/{unused => }/test151.m | 0 Test/{unused => }/test156.m | 0 Test/{unused => }/test233.m | 0 Test/{unused => }/test266.m | 0 Test/test269.m | 10 - Test/test270.m | 10 - Test/test271.m | 10 - Test/test273.m | 9 - Test/test274.m | 9 - Test/test275.m | 9 - Test/test276.m | 9 - Test/test277.m | 9 - Test/test278.m | 9 - Test/test279.m | 9 - Test/{unused => }/test_assign.m | 0 Test/testall.m | 71 +- cmake_modules/GraphBLAS_JIT_configure.cmake | 77 +- cmake_modules/GraphBLAS_JIT_paths.cmake | 4 +- cmake_modules/GraphBLAS_version.cmake | 12 +- cmake_modules/SuiteSparsePolicy.cmake | 168 +- cmake_modules/SuiteSparseReport.cmake | 13 +- lz4/README.txt | 2 +- rmm_wrap/CMakeLists.txt | 85 +- zstd/README.txt | 4 +- 259 files changed, 23203 insertions(+), 38366 deletions(-) create mode 100644 Config/.gitignore create mode 100644 Demo/Output/gauss_demo1.out delete mode 100644 Doc/GrB_get_set.tex create mode 100644 GraphBLAS/Config/.gitignore delete mode 100644 GraphBLAS/Config/GB_config.h delete mode 100644 Source/GB_code_name_get.c delete mode 100644 Source/GB_get_set.h delete mode 100644 Source/GB_hyper_hash_need.c delete mode 100644 Source/GB_matvec_enum_get.c delete mode 100644 Source/GB_matvec_name_get.c delete mode 100644 Source/GB_matvec_name_set.c delete mode 100644 Source/GB_matvec_name_size_get.c delete mode 100644 Source/GB_matvec_set.c delete mode 100644 Source/GB_monoid_get.c delete mode 100644 Source/GB_monoid_name_get.c delete mode 100644 Source/GB_op_enum_get.c delete mode 100644 Source/GB_op_name_get.c delete mode 100644 Source/GB_op_or_type_string_set.c delete mode 100644 Source/GB_op_scalar_get.c delete mode 100644 Source/GB_op_size_get.c delete mode 100644 Source/GB_op_string_get.c delete mode 100644 Source/GB_op_string_set.c delete mode 100644 Source/GB_semiring_name_get.c delete mode 100644 Source/GB_type_code_get.c delete mode 100644 Source/GB_type_name_get.c delete mode 100644 Source/GB_user_name_set.c delete mode 100644 Source/GrB_BinaryOp_get.c delete mode 100644 Source/GrB_BinaryOp_set.c delete mode 100644 Source/GrB_Descriptor_get2.c delete mode 100644 Source/GrB_Descriptor_set2.c delete mode 100644 Source/GrB_Global_get.c delete mode 100644 Source/GrB_Global_set.c delete mode 100644 Source/GrB_IndexUnaryOp_get.c delete mode 100644 Source/GrB_IndexUnaryOp_set.c delete mode 100644 Source/GrB_Matrix_get.c delete mode 100644 Source/GrB_Matrix_set.c delete mode 100644 Source/GrB_Monoid_get.c delete mode 100644 Source/GrB_Monoid_set.c delete mode 100644 Source/GrB_Scalar_get.c delete mode 100644 Source/GrB_Scalar_set.c delete mode 100644 Source/GrB_Semiring_get.c delete mode 100644 Source/GrB_Semiring_set.c delete mode 100644 Source/GrB_Type_get.c delete mode 100644 Source/GrB_Type_set.c delete mode 100644 Source/GrB_UnaryOp_get.c delete mode 100644 Source/GrB_UnaryOp_set.c delete mode 100644 Source/GrB_Vector_get.c delete mode 100644 Source/GrB_Vector_set.c delete mode 100644 Source/GxB_Context_get2.c delete mode 100644 Source/GxB_Context_set2.c delete mode 100644 Source/GxB_Serialized_get.c delete mode 100644 Tcov/grbuniq.m create mode 100644 Tcov/log_Dec6.txt delete mode 100644 Tcov/log_Sept10.txt delete mode 100644 Tcov/log_Sept5.txt rename Test/{unused => }/GB_mex_test23.c (100%) delete mode 100644 Test/GB_mex_test26.c delete mode 100644 Test/GB_mex_test27.c delete mode 100644 Test/GB_mex_test28.c delete mode 100644 Test/GB_mex_test29.c delete mode 100644 Test/GB_mex_test30.c delete mode 100644 Test/GB_mex_test31.c delete mode 100644 Test/GB_mex_test32.c delete mode 100644 Test/GB_mex_test33.c delete mode 100644 Test/GB_mex_test34.c delete mode 100644 Test/GB_mex_test35.c rename Test/{unused => }/test151.m (100%) rename Test/{unused => }/test156.m (100%) rename Test/{unused => }/test233.m (100%) rename Test/{unused => }/test266.m (100%) delete mode 100644 Test/test269.m delete mode 100644 Test/test270.m delete mode 100644 Test/test271.m delete mode 100644 Test/test273.m delete mode 100644 Test/test274.m delete mode 100644 Test/test275.m delete mode 100644 Test/test276.m delete mode 100644 Test/test277.m delete mode 100644 Test/test278.m delete mode 100644 Test/test279.m rename Test/{unused => }/test_assign.m (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b52985ed7..78e9164115 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,29 +2,34 @@ # GraphBLAS/CMakeLists.txt: cmake script for GraphBLAS #------------------------------------------------------------------------------- -# SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved. +# SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 # See the User Guide for details on how to compile SuiteSparse:GraphBLAS. +cmake_minimum_required ( VERSION 3.20 ) + #------------------------------------------------------------------------------- -# get the version +# define the project #------------------------------------------------------------------------------- -cmake_minimum_required ( VERSION 3.20 ) +project ( graphblas + LANGUAGES C ) -set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CMAKE_SOURCE_DIR}/cmake_modules ) +#------------------------------------------------------------------------------- +# SuiteSparse policies +#------------------------------------------------------------------------------- -include ( GraphBLAS_version ) +set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} + ${PROJECT_SOURCE_DIR}/cmake_modules ) #------------------------------------------------------------------------------- -# SuiteSparse policies +# get the version #------------------------------------------------------------------------------- -# CUDA is under development for now, and not deployed in production: - set ( ENABLE_CUDA false ) -# set ( ENABLE_CUDA true ) +include ( GraphBLAS_version ) + +set ( PROJECT_VERSION "${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB}" ) #------------------------------------------------------------------------------- # SuiteSparse policies @@ -32,29 +37,32 @@ include ( GraphBLAS_version ) # GraphBLAS takes a long time to build, so do not build the static library # by default -set ( NSTATIC_DEFAULT_ON true ) +if ( NOT BUILD_SHARED_LIBS ) + set ( BUILD_STATIC_LIBS_DEFAULT_OFF ON ) +endif ( ) + +# CUDA is under development for now, and not deployed in production: +set ( ENABLE_CUDA OFF ) +# set ( ENABLE_CUDA ON ) include ( SuiteSparsePolicy ) -include ( GraphBLAS_JIT_paths ) -#------------------------------------------------------------------------------- -# define the project -#------------------------------------------------------------------------------- +if ( NOT GRAPHBLAS_BUILD_STATIC_LIBS AND BUILD_SHARED_LIBS ) + # ignore current value of BUILD_STATIC_LIBS and set it to OFF + set ( BUILD_STATIC_LIBS OFF ) +endif ( ) if ( SUITESPARSE_CUDA ) # FOR NOW: do not compile FactoryKernels when developing the CUDA kernels - set ( COMPACT on ) + set ( COMPACT ON ) message ( STATUS "GraphBLAS CUDA JIT: enabled") - project ( graphblas - VERSION "${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB}" - LANGUAGES CUDA C ) + enable_language ( CUDA ) else ( ) message ( STATUS "GraphBLAS CUDA JIT: disabled") - project ( graphblas - VERSION "${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB}" - LANGUAGES C ) endif ( ) +include ( GraphBLAS_JIT_paths ) + #------------------------------------------------------------------------------- # find OpenMP, CUDA, RMM, and cpu_features #------------------------------------------------------------------------------- @@ -63,7 +71,7 @@ if ( SUITESPARSE_CUDA ) # with CUDA and RMM add_subdirectory ( CUDA ) set ( GB_CUDA GraphBLAS_CUDA ${CUDA_LIBRARIES} ) - set ( GB_RMM rmm_wrap ${CUDA_LIBRARIES} ) + set ( GB_RMM RMM_wrap ${CUDA_LIBRARIES} ) add_subdirectory ( rmm_wrap ) include_directories ( "rmm_wrap" ${CUDA_INCLUDE_DIRS} "/usr/local/cuda/include/cub" ) @@ -80,7 +88,7 @@ endif ( ) option ( NOPENMP "ON: do not use OpenMP. OFF (default): use OpenMP" off ) if ( NOPENMP ) # OpenMP has been disabled. - set ( OPENMP_FOUND false ) + set ( OpenMP_C_FOUND OFF ) else ( ) find_package ( OpenMP ) endif ( ) @@ -126,15 +134,17 @@ endif ( ) # determine build type #------------------------------------------------------------------------------- -# select "true" to build both dynamic and static libraries: -# set ( NOT NSTATIC true ) -# set ( NOT NSTATIC false ) -# or use cmake with -DNSTATIC=1 +# select "ON" to build both dynamic and static libraries: +# set ( BUILD_STATIC_LIBS ON ) +# set ( BUILD_STATIC_LIBS OFF ) +# or use cmake with -DGRAPHBLAS_BUILD_STATIC_LIBS=ON -if ( NOT NSTATIC ) +if ( BUILD_STATIC_LIBS AND BUILD_SHARED_LIBS ) message ( STATUS "Building all GraphBLAS libraries (static and dynamic)" ) +elseif ( BUILD_SHARED_LIBS ) + message ( STATUS "Building dynamic GraphBLAS library (no static)" ) else ( ) - message ( STATUS "Building dynamic GraphBLAS library" ) + message ( STATUS "Building static GraphBLAS library (no shared)" ) endif ( ) #------------------------------------------------------------------------------- @@ -217,6 +227,9 @@ if ( NJIT ) "Source/FactoryKernels/*.c" ) endif ( ) else ( ) + # generate compressed JIT sources + add_subdirectory ( JITpackage ) + if ( COMPACT ) # with the JIT; but do not compile the FactoryKernels file ( GLOB GRAPHBLAS_SOURCES "Source/*.c" "Config/*.c" "PreJIT/*.c" @@ -228,60 +241,87 @@ else ( ) endif ( ) endif ( ) -add_library ( GraphBLAS SHARED ${GRAPHBLAS_SOURCES} ) +if ( BUILD_SHARED_LIBS ) + add_library ( GraphBLAS SHARED ${GRAPHBLAS_SOURCES} ) -set_target_properties ( GraphBLAS PROPERTIES - VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} - OUTPUT_NAME graphblas - SOVERSION ${GraphBLAS_VERSION_MAJOR} - C_STANDARD 11 - C_STANDARD_REQUIRED ON - PUBLIC_HEADER "Include/GraphBLAS.h" - WINDOWS_EXPORT_ALL_SYMBOLS ON ) + set_target_properties ( GraphBLAS PROPERTIES + VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} + OUTPUT_NAME graphblas + SOVERSION ${GraphBLAS_VERSION_MAJOR} + C_STANDARD 11 + C_STANDARD_REQUIRED ON + PUBLIC_HEADER "Include/GraphBLAS.h" + WINDOWS_EXPORT_ALL_SYMBOLS ON ) -target_include_directories ( GraphBLAS - INTERFACE $ - $ ) + if ( ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.25" ) + set_target_properties ( GraphBLAS PROPERTIES EXPORT_NO_SYSTEM ON ) + endif ( ) -if ( SUITESPARSE_CUDA ) - add_dependencies ( GraphBLAS GraphBLAS_CUDA ) -# add_dependencies ( GraphBLAS rmm_wrap ) -endif ( ) + target_include_directories ( GraphBLAS + INTERFACE $ + $ ) -if ( WIN32 ) - # Compiling the graphblas dll on Windows: export the dll symbols - target_compile_definitions ( GraphBLAS PRIVATE GB_DLL_EXPORT ) + if ( SUITESPARSE_CUDA ) + add_dependencies ( GraphBLAS GraphBLAS_CUDA ) + add_dependencies ( GraphBLAS RMM_wrap ) + target_compile_definitions ( GraphBLAS PRIVATE "SUITESPARSE_CUDA" ) + endif ( ) + + if ( WIN32 ) + # Compiling the graphblas dll on Windows: export the dll symbols + target_compile_definitions ( GraphBLAS PRIVATE GB_DLL_EXPORT ) + endif ( ) + + if ( NOT NJIT ) + # Make sure compressed sources are built before library + add_dependencies ( GraphBLAS grb_jitpackage ) + endif ( ) endif ( ) #------------------------------------------------------------------------------- # static graphblas library properties #------------------------------------------------------------------------------- -if ( NOT NSTATIC ) +if ( BUILD_STATIC_LIBS ) add_library ( GraphBLAS_static STATIC ${GRAPHBLAS_SOURCES} ) set_target_properties ( GraphBLAS_static PROPERTIES - VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} OUTPUT_NAME graphblas - SOVERSION ${GraphBLAS_VERSION_MAJOR} C_STANDARD 11 - C_STANDARD_REQUIRED ON ) + C_STANDARD_REQUIRED ON + PUBLIC_HEADER "Include/GraphBLAS.h" ) if ( MSVC ) set_target_properties ( GraphBLAS_static PROPERTIES OUTPUT_NAME graphblas_static ) endif ( ) + if ( ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.25" ) + set_target_properties ( GraphBLAS_static PROPERTIES EXPORT_NO_SYSTEM ON ) + endif ( ) + target_include_directories ( GraphBLAS_static - INTERFACE $ + INTERFACE $ $ ) if ( SUITESPARSE_CUDA ) add_dependencies ( GraphBLAS_static GraphBLAS_CUDA ) set ( GRAPHBLAS_STATIC_MODULES "${GRAPHBLAS_STATIC_MODULES} GraphBLAS_CUDA" ) -# add_dependencies ( GraphBLAS_static rmm_wrap ) + add_dependencies ( GraphBLAS_static RMM_wrap ) + target_compile_definitions ( GraphBLAS_static PRIVATE "SUITESPARSE_CUDA" ) + endif ( ) + + if ( WIN32 ) + # On Windows, don't use __declspec ( dllimport ) for static library. + target_compile_definitions ( GraphBLAS_static PUBLIC GB_STATIC ) + endif ( ) + + if ( NOT NJIT ) + # Make sure compressed sources are built before library + add_dependencies ( GraphBLAS_static grb_jitpackage ) endif ( ) + endif ( ) #------------------------------------------------------------------------------- @@ -296,8 +336,10 @@ if ( NOT GBNCPUFEAT ) check_include_file ( dlfcn.h HAVE_DLFCN_H ) if ( HAVE_DLFCN_H ) message ( STATUS "cpu_feautures has dlfcn.h" ) - target_compile_definitions ( GraphBLAS PRIVATE HAVE_DLFCN_H ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_compile_definitions ( GraphBLAS PRIVATE HAVE_DLFCN_H ) + endif ( ) + if ( BUILD_STATIC_LIBS ) target_compile_definitions ( GraphBLAS_static PRIVATE HAVE_DLFCN_H ) endif ( ) else ( ) @@ -306,8 +348,10 @@ if ( NOT GBNCPUFEAT ) check_symbol_exists ( getauxval "sys/auxv.h" HAVE_STRONG_GETAUXVAL ) if ( HAVE_STRONG_GETAUXVAL ) message ( STATUS "cpu_feautures has getauxval from sys/auxv.h" ) - target_compile_definitions ( GraphBLAS PRIVATE HAVE_STRONG_GETAUXVAL ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_compile_definitions ( GraphBLAS PRIVATE HAVE_STRONG_GETAUXVAL ) + endif ( ) + if ( BUILD_STATIC_LIBS ) target_compile_definitions ( GraphBLAS_static PRIVATE HAVE_STRONG_GETAUXVAL ) endif ( ) else ( ) @@ -323,8 +367,10 @@ endif ( ) # libm: if ( NOT WIN32 ) set ( GB_M "m" ) - target_link_libraries ( GraphBLAS PRIVATE m ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( GraphBLAS PRIVATE m ) + endif ( ) + if ( BUILD_STATIC_LIBS ) list ( APPEND GRAPHBLAS_STATIC_LIBS "m" ) target_link_libraries ( GraphBLAS_static PUBLIC m ) endif ( ) @@ -332,8 +378,10 @@ endif ( ) # libdl if ( NOT WIN32 ) - target_link_libraries ( GraphBLAS PRIVATE dl ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( GraphBLAS PRIVATE dl ) + endif ( ) + if ( BUILD_STATIC_LIBS ) list ( APPEND GRAPHBLAS_STATIC_LIBS "dl" ) target_link_libraries ( GraphBLAS_static PUBLIC dl ) endif ( ) @@ -342,8 +390,10 @@ endif ( ) # atomic include ( SuiteSparseAtomic ) if ( LIBATOMIC_REQUIRED ) - target_link_libraries ( GraphBLAS PRIVATE atomic ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( GraphBLAS PRIVATE atomic ) + endif ( ) + if ( BUILD_STATIC_LIBS ) list ( APPEND GRAPHBLAS_STATIC_LIBS "atomic" ) target_link_libraries ( GraphBLAS_static PUBLIC atomic ) endif ( ) @@ -353,24 +403,27 @@ endif ( ) # add the OpenMP, IPP, CUDA, BLAS, etc libraries #------------------------------------------------------------------------------- -if ( OPENMP_FOUND ) +if ( OpenMP_C_FOUND ) message ( STATUS "CMAKE OpenMP libraries: ${OpenMP_C_LIBRARIES}" ) message ( STATUS "CMAKE OpenMP include: ${OpenMP_C_INCLUDE_DIRS}" ) # revert to ${OpenMP_C_LIBRARIES}: - target_link_libraries ( GraphBLAS PRIVATE ${OpenMP_C_LIBRARIES} ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( GraphBLAS PRIVATE ${OpenMP_C_LIBRARIES} ) + target_include_directories ( GraphBLAS PRIVATE ${OpenMP_C_INCLUDE_DIRS} ) + endif ( ) # cannot use OpenMP::OpenMP_C because the JIT is configured with # LINK_LIBRARIES. Those are -l lists passed directly to the # C compiler, and this is converted into "-lOpenMP::OpenMP_C". # So this breaks: # target_link_libraries ( GraphBLAS PRIVATE OpenMP::OpenMP_C ) - if ( NOT NSTATIC ) + if ( BUILD_STATIC_LIBS ) list ( APPEND GRAPHBLAS_STATIC_LIBS ${OpenMP_C_LIBRARIES} ) target_link_libraries ( GraphBLAS_static PUBLIC ${OpenMP_C_LIBRARIES} ) # target_link_libraries ( GraphBLAS_static PUBLIC OpenMP::OpenMP_C ) + target_include_directories ( GraphBLAS_static PRIVATE ${OpenMP_C_INCLUDE_DIRS} ) endif ( ) message ( STATUS "CMAKE OpenMP C flags: ${OpenMP_C_FLAGS}" ) set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} " ) - include_directories ( ${OpenMP_C_INCLUDE_DIRS} ) else ( ) message ( WARNING "WARNING: OpenMP was not found (or was disabled with NOPENMP). See the " @@ -393,14 +446,20 @@ else ( ) endif ( ) # get the current library list, before linking with cuda and rmm -get_target_property ( GB_CMAKE_LIBRARIES GraphBLAS LINK_LIBRARIES ) +if ( BUILD_SHARED_LIBS ) + get_target_property ( GB_CMAKE_LIBRARIES GraphBLAS LINK_LIBRARIES ) +else ( ) + get_target_property ( GB_CMAKE_LIBRARIES GraphBLAS_static LINK_LIBRARIES ) +endif ( ) if ( NOT GB_CMAKE_LIBRARIES ) set ( GB_CMAKE_LIBRARIES "" ) endif ( ) if ( SUITESPARSE_CUDA ) - target_link_libraries ( GraphBLAS PRIVATE ${GB_CUDA} ${GB_RMM} ) - if ( NOT NSTATIC ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( GraphBLAS PRIVATE ${GB_CUDA} ${GB_RMM} ) + endif ( ) + if ( BUILD_STATIC_LIBS ) target_link_libraries ( GraphBLAS_static PUBLIC ${GB_CUDA} ${GB_RMM} ) endif ( ) endif ( ) @@ -437,23 +496,50 @@ if ( DEMO ) add_executable ( gauss_demo "Demo/Program/gauss_demo.c" ) # Libraries required for Demo programs - target_link_libraries ( openmp_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( openmp2_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( complex_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( kron_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( simple_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( wildtype_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( reduce_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( import_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( wathen_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( context_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - target_link_libraries ( gauss_demo PUBLIC GraphBLAS ${GB_M} ${GB_CUDA} ${GB_RMM} ) - if ( OPENMP_FOUND ) - target_link_libraries ( openmp_demo PUBLIC OpenMP::OpenMP_C ) - target_link_libraries ( openmp2_demo PUBLIC OpenMP::OpenMP_C ) - target_link_libraries ( reduce_demo PUBLIC OpenMP::OpenMP_C ) - target_link_libraries ( wathen_demo PUBLIC OpenMP::OpenMP_C ) - target_link_libraries ( context_demo PUBLIC OpenMP::OpenMP_C ) + if ( BUILD_SHARED_LIBS ) + target_link_libraries ( openmp_demo PUBLIC GraphBLAS ) + target_link_libraries ( openmp2_demo PUBLIC GraphBLAS ) + target_link_libraries ( complex_demo PUBLIC GraphBLAS ) + target_link_libraries ( kron_demo PUBLIC GraphBLAS ) + target_link_libraries ( simple_demo PUBLIC GraphBLAS ) + target_link_libraries ( wildtype_demo PUBLIC GraphBLAS ) + target_link_libraries ( reduce_demo PUBLIC GraphBLAS ) + target_link_libraries ( import_demo PUBLIC GraphBLAS ) + target_link_libraries ( wathen_demo PUBLIC GraphBLAS ) + target_link_libraries ( context_demo PUBLIC GraphBLAS ) + target_link_libraries ( gauss_demo PUBLIC GraphBLAS ) + else ( ) + target_link_libraries ( openmp_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( openmp2_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( complex_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( kron_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( simple_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( wildtype_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( reduce_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( import_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( wathen_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( context_demo PUBLIC GraphBLAS_static ) + target_link_libraries ( gauss_demo PUBLIC GraphBLAS_static ) + endif ( ) + + target_link_libraries ( openmp_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( openmp2_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( complex_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( kron_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( simple_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( wildtype_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( reduce_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( import_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( wathen_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( context_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + target_link_libraries ( gauss_demo PUBLIC ${GB_M} ${GB_CUDA} ${GB_RMM} ) + + if ( OpenMP_C_FOUND ) + target_link_libraries ( openmp_demo PUBLIC OpenMP::OpenMP_C ) + target_link_libraries ( openmp2_demo PUBLIC OpenMP::OpenMP_C ) + target_link_libraries ( reduce_demo PUBLIC OpenMP::OpenMP_C ) + target_link_libraries ( wathen_demo PUBLIC OpenMP::OpenMP_C ) + target_link_libraries ( context_demo PUBLIC OpenMP::OpenMP_C ) endif ( ) else ( ) @@ -468,17 +554,20 @@ endif ( ) include ( CMakePackageConfigHelpers ) -install ( TARGETS GraphBLAS - EXPORT GraphBLASTargets - LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} - ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} - RUNTIME DESTINATION ${SUITESPARSE_BINDIR} - PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} ) +if ( BUILD_SHARED_LIBS ) + install ( TARGETS GraphBLAS + EXPORT GraphBLASTargets + LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} + ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} + RUNTIME DESTINATION ${SUITESPARSE_BINDIR} + PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} ) +endif ( ) -if ( NOT NSTATIC ) +if ( BUILD_STATIC_LIBS ) install ( TARGETS GraphBLAS_static EXPORT GraphBLASTargets - ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} ) + ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} + PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} ) endif ( ) # create (temporary) export target file during build @@ -489,21 +578,30 @@ export ( EXPORT GraphBLASTargets # install export target and config for find_package install ( EXPORT GraphBLASTargets NAMESPACE SuiteSparse:: - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) +# generate config file to be used in common build tree +set ( SUITESPARSE_IN_BUILD_TREE ON ) configure_package_config_file ( Config/GraphBLASConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/GraphBLASConfig.cmake - INSTALL_DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/GraphBLASConfig.cmake ) + +# generate config file to be installed +set ( SUITESPARSE_IN_BUILD_TREE OFF ) +configure_package_config_file ( + Config/GraphBLASConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/target/GraphBLASConfig.cmake + INSTALL_DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) write_basic_package_version_file ( ${CMAKE_CURRENT_BINARY_DIR}/GraphBLASConfigVersion.cmake COMPATIBILITY SameMajorVersion ) install ( FILES - ${CMAKE_CURRENT_BINARY_DIR}/GraphBLASConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/target/GraphBLASConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/GraphBLASConfigVersion.cmake - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) #------------------------------------------------------------------------------- # create pkg-config file @@ -558,7 +656,7 @@ if ( NOT MSVC ) NEWLINE_STYLE LF ) install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS.pc - DESTINATION ${SUITESPARSE_LIBDIR}/pkgconfig ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/pkgconfig ) endif ( ) #------------------------------------------------------------------------------- @@ -598,4 +696,6 @@ endif ( ) # report status #------------------------------------------------------------------------------- -include ( SuiteSparseReport ) +if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) + include ( SuiteSparseReport ) +endif ( ) diff --git a/CUDA/CMakeLists.txt b/CUDA/CMakeLists.txt index 4c302df59c..a035f1b1bf 100644 --- a/CUDA/CMakeLists.txt +++ b/CUDA/CMakeLists.txt @@ -55,6 +55,7 @@ set ( GRAPHBLAS_CUDA_INCLUDES ../Source/Shared ../Source/Template ../Source/Factories + Template ../Include ../CUDA ) @@ -64,18 +65,26 @@ message ( STATUS "GraphBLAS CUDA includes: ${GRAPHBLAS_CUDA_INCLUDES}" ) # GraphBLAS_CUDA properties #------------------------------------------------------------------------------- -target_include_directories(GraphBLAS_CUDA PRIVATE - ${CUDAToolkit_INCLUDE_DIRS} +target_include_directories ( GraphBLAS_CUDA PRIVATE ${GRAPHBLAS_CUDA_INCLUDES}) -set_target_properties(GraphBLAS_CUDA PROPERTIES POSITION_INDEPENDENT_CODE ON) -set_target_properties(GraphBLAS_CUDA PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +set_target_properties ( GraphBLAS_CUDA PROPERTIES POSITION_INDEPENDENT_CODE ON ) +set_target_properties ( GraphBLAS_CUDA PROPERTIES CUDA_SEPARABLE_COMPILATION ON ) # FIXME: use SUITESPARSE_CUDA_ARCHITECTURES -set_target_properties(GraphBLAS_CUDA PROPERTIES CUDA_ARCHITECTURES "52;75;80" ) +set_target_properties ( GraphBLAS_CUDA PROPERTIES CUDA_ARCHITECTURES "52;75;80" ) -target_link_libraries(GraphBLAS_CUDA CUDA::nvrtc CUDA::cudart_static CUDA::cuda_driver CUDA::nvToolsExt ) +target_link_libraries ( GraphBLAS_CUDA PRIVATE CUDA::nvrtc CUDA::cudart_static CUDA::cuda_driver ) + +if ( TARGET CUDA::nvtx3 ) + target_link_libraries ( GraphBLAS_CUDA PRIVATE CUDA::nvtx3 ) + target_compile_definitions ( GraphBLAS_CUDA PRIVATE GBNVTX ) +endif ( ) target_compile_definitions ( GraphBLAS_CUDA PUBLIC "SUITESPARSE_CUDA" ) +if ( OpenMP_CXX_FOUND ) + target_include_directories ( GraphBLAS_CUDA PRIVATE OpenMP::OpenMP_CXX ) +endif ( ) + target_include_directories ( GraphBLAS_CUDA INTERFACE $ $ ) @@ -101,12 +110,12 @@ export ( EXPORT GraphBLAS_CUDATargets # install export target and config for find_package install ( EXPORT GraphBLAS_CUDATargets NAMESPACE SuiteSparse:: - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) configure_package_config_file ( Config/GraphBLAS_CUDAConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS_CUDAConfig.cmake - INSTALL_DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + INSTALL_DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) write_basic_package_version_file ( ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS_CUDAConfigVersion.cmake @@ -115,7 +124,7 @@ write_basic_package_version_file ( install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS_CUDAConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS_CUDAConfigVersion.cmake - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/GraphBLAS ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/cmake/GraphBLAS ) #------------------------------------------------------------------------------- # create pkg-config file @@ -143,13 +152,15 @@ if ( NOT MSVC ) NEWLINE_STYLE LF ) install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/GraphBLAS_CUDA.pc - DESTINATION ${SUITESPARSE_LIBDIR}/pkgconfig ) + DESTINATION ${SUITESPARSE_PKGFILEDIR}/pkgconfig ) endif ( ) #------------------------------------------------------------------------------- # test suite for the CUDA kernels #------------------------------------------------------------------------------- +if ( 0 ) + # 1. Execute enumify/stringify/jitify logic to compile ptx kernels and # compile/link w/ relevant *.cu files. @@ -244,28 +255,27 @@ set_target_properties(graphblascuda_test PROPERTIES CUDA_ARCHITECTURES "52;75;80 include(GoogleTest) -add_dependencies(graphblascuda_test GraphBLAS) -add_dependencies(graphblascuda_test GraphBLAS_CUDA) -add_dependencies(graphblascuda_test gtest_main) -add_dependencies(graphblascuda_test rmm_wrap) - -target_link_libraries(graphblascuda_test - PUBLIC - GraphBLAS - GraphBLAS_CUDA - rmm_wrap - CUDA::cudart_static - CUDA::nvrtc - ${ADDITIONAL_DEPS} - PRIVATE - gtest_main) - -target_include_directories(graphblascuda_test - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../Include - ${CMAKE_CURRENT_SOURCE_DIR}/../rmm_wrap - rmm_wrap - ${ADDITIONAL_INCLUDES} - ${CUDAToolkit_INCLUDE_DIRS} - ${GRAPHBLAS_CUDA_INCLUDES}) +if ( ENABLE_SHARED_LIBS ) + target_link_libraries ( graphblascuda_test PUBLIC GraphBLAS ) +else ( ) + target_link_libraries ( graphblascuda_test PUBLIC GraphBLAS_static ) +endif ( ) +target_link_libraries ( graphblascuda_test + PUBLIC + GraphBLAS_CUDA + RMM_wrap + CUDA::cudart_static + CUDA::nvrtc + ${ADDITIONAL_DEPS} + PRIVATE + gtest_main ) + +target_include_directories ( graphblascuda_test + PUBLIC + rmm_wrap + ${ADDITIONAL_INCLUDES} + ${CUDAToolkit_INCLUDE_DIRS} + ${GRAPHBLAS_CUDA_INCLUDES} ) + +endif ( ) diff --git a/CUDA/GB_cuda_init.c b/CUDA/GB_cuda_init.c index 5db44e8967..25dd233b88 100644 --- a/CUDA/GB_cuda_init.c +++ b/CUDA/GB_cuda_init.c @@ -1,8 +1,8 @@ //------------------------------------------------------------------------------ -// GB_cuda_init: initialize the GPUs for use by GraphBLAS +// GraphBLAS/CUDA/GB_cuda_init: initialize the GPUs for use by GraphBLAS //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved. +// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 //------------------------------------------------------------------------------ diff --git a/CUDA/GB_cuda_kernel.h b/CUDA/GB_cuda_kernel.h index e4a8a0a30e..6ba8d69be3 100644 --- a/CUDA/GB_cuda_kernel.h +++ b/CUDA/GB_cuda_kernel.h @@ -75,9 +75,6 @@ typedef struct GB_Semiring_opaque *GrB_Semiring ; typedef struct GB_Scalar_opaque *GrB_Scalar ; typedef struct GB_Vector_opaque *GrB_Vector ; typedef struct GB_Matrix_opaque *GrB_Matrix ; -typedef struct GB_Context_opaque *GxB_Context ; -typedef struct GB_Global_opaque *GrB_Global ; -typedef struct GB_Iterator_opaque *GxB_Iterator ; #define GxB_HYPERSPARSE 1 // store matrix in hypersparse form #define GxB_SPARSE 2 // store matrix as sparse form (compressed vector) diff --git a/CUDA/GB_cuda_type_bits.c b/CUDA/GB_cuda_type_bits.c index b30c5c21fa..52b446a4ea 100644 --- a/CUDA/GB_cuda_type_bits.c +++ b/CUDA/GB_cuda_type_bits.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 -#undef GBCUDA_CPLUSPLUS +#if 0 #include "GB.h" size_t GB_cuda_type_bits (GB_Type_code); @@ -26,3 +26,4 @@ size_t GB_cuda_type_bits (GB_Type_code type_code) } } +#endif diff --git a/CUDA/templates/GB_jit_AxB_dot3_phase1.cuh b/CUDA/templates/GB_jit_AxB_dot3_phase1.cuh index 287aa7fae1..c2654ca296 100644 --- a/CUDA/templates/GB_jit_AxB_dot3_phase1.cuh +++ b/CUDA/templates/GB_jit_AxB_dot3_phase1.cuh @@ -80,12 +80,14 @@ __global__ void GB_jit_AxB_dot3_phase1 const bool M_is_hyper = M->h != NULL ; ASSERT (GB_M_IS_SPARSE || GB_M_IS_HYPER) ; + const int64_t *__restrict__ Ah = A->h ; const int64_t *__restrict__ Ap = A->p ; const int64_t *__restrict__ Ai = A->i ; const int64_t avlen = A->vlen ; // const int64_t anz = GB_nnz(A) ; const GB_A_NVALS (anz) ; + const int64_t *__restrict__ Bh = B->h ; const int64_t *__restrict__ Bp = B->p ; const int64_t *__restrict__ Bi = B->i ; const int64_t bvlen = B->vlen ; @@ -93,23 +95,17 @@ __global__ void GB_jit_AxB_dot3_phase1 const GB_B_NVALS (bnz) ; #if GB_A_IS_HYPER - const int64_t anvec = A->nvec ; - const int64_t *__restrict__ Ah = A->h ; - const int64_t *__restrict__ A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *__restrict__ A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *__restrict__ A_Yx = (int64_t *) - ((A->Y == NULL) ? NULL : A->Y->x) ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *__restrict__ A_Yp = A->Y->p ; + const int64_t *__restrict__ A_Yi = A->Y->i ; + const int64_t *__restrict__ A_Yx = (int64_t *) A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if GB_B_IS_HYPER - const int64_t bnvec = B->nvec ; - const int64_t *__restrict__ Bh = B->h ; - const int64_t *__restrict__ B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *__restrict__ B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *__restrict__ B_Yx = (int64_t *) - ((B->Y == NULL) ? NULL : B->Y->x) ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *__restrict__ B_Yp = B->Y->p ; + const int64_t *__restrict__ B_Yi = B->Y->i ; + const int64_t *__restrict__ B_Yx = (int64_t *) B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; #endif // int64_t *restrict Cp = C->p ; // copy of Mp @@ -224,8 +220,8 @@ __global__ void GB_jit_AxB_dot3_phase1 int64_t pB, pB_end ; #if GB_B_IS_HYPER - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, - B_hash_bits, j, &pB, &pB_end) ; + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + j, &pB, &pB_end) ; #elif GB_B_IS_SPARSE pB = Bp[j] ; pB_end = Bp[j+1] ; @@ -245,8 +241,8 @@ __global__ void GB_jit_AxB_dot3_phase1 int64_t pA, pA_end ; #if GB_A_IS_HYPER - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, - A_hash_bits, i, &pA, &pA_end) ; + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + i, &pA, &pA_end) ; #elif GB_A_IS_SPARSE pA = Ap[i] ; pA_end = Ap[i+1] ; diff --git a/CUDA/templates/GB_jit_AxB_dot3_phase3_mp.cuh b/CUDA/templates/GB_jit_AxB_dot3_phase3_mp.cuh index 16364e8a38..267b41b419 100644 --- a/CUDA/templates/GB_jit_AxB_dot3_phase3_mp.cuh +++ b/CUDA/templates/GB_jit_AxB_dot3_phase3_mp.cuh @@ -114,23 +114,17 @@ __global__ void AxB_dot3_phase3_mp ASSERT (GB_B_IS_HYPER || GB_B_IS_SPARSE) ; #if GB_A_IS_HYPER - const int64_t anvec = A->nvec ; - const int64_t *__restrict__ Ah = A->h ; - const int64_t *__restrict__ A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *__restrict__ A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *__restrict__ A_Yx = (int64_t *) - ((A->Y == NULL) ? NULL : A->Y->x) ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *__restrict__ A_Yp = A->Y->p ; + const int64_t *__restrict__ A_Yi = A->Y->i ; + const int64_t *__restrict__ A_Yx = (int64_t *) A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if GB_B_IS_HYPER - const int64_t bnvec = B->nvec ; - const int64_t *__restrict__ Bh = B->h ; - const int64_t *__restrict__ B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *__restrict__ B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *__restrict__ B_Yx = (int64_t *) - ((B->Y == NULL) ? NULL : B->Y->x) ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *__restrict__ B_Yp = B->Y->p ; + const int64_t *__restrict__ B_Yi = B->Y->i ; + const int64_t *__restrict__ B_Yx = (int64_t *) B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; #endif // zombie count @@ -168,7 +162,7 @@ __global__ void AxB_dot3_phase3_mp // find A(:,i) int64_t pA_start, pA_end ; #if GB_A_IS_HYPER - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, i, &pA_start, &pA_end) ; #else pA_start = Ap[i] ; @@ -198,7 +192,7 @@ __global__ void AxB_dot3_phase3_mp // find B(:,j) int64_t pB_start, pB_end ; #if GB_B_IS_HYPER - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, j, &pB_start, &pB_end) ; #else pB_start = Bp[j] ; diff --git a/CUDA/templates/GB_jit_AxB_dot3_phase3_spdn.cuh b/CUDA/templates/GB_jit_AxB_dot3_phase3_spdn.cuh index 883a46fe36..499a5f386f 100644 --- a/CUDA/templates/GB_jit_AxB_dot3_phase3_spdn.cuh +++ b/CUDA/templates/GB_jit_AxB_dot3_phase3_spdn.cuh @@ -113,23 +113,17 @@ __global__ void AxB_dot3_phase3_spdn #endif #if GB_A_IS_HYPER - const int64_t anvec = A->nvec ; - const int64_t *__restrict__ Ah = A->h ; - const int64_t *__restrict__ A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *__restrict__ A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *__restrict__ A_Yx = (int64_t *) - ((A->Y == NULL) ? NULL : A->Y->x) ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *__restrict__ A_Yp = A->Y->p ; + const int64_t *__restrict__ A_Yi = A->Y->i ; + const int64_t *__restrict__ A_Yx = (int64_t *) A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if GB_B_IS_HYPER - const int64_t bnvec = B->nvec ; - const int64_t *__restrict__ Bh = B->h ; - const int64_t *__restrict__ B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *__restrict__ B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *__restrict__ B_Yx = (int64_t *) - ((B->Y == NULL) ? NULL : B->Y->x) ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *__restrict__ B_Yp = B->Y->p ; + const int64_t *__restrict__ B_Yi = B->Y->i ; + const int64_t *__restrict__ B_Yx = (int64_t *) B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; #endif // zombie count @@ -157,7 +151,7 @@ __global__ void AxB_dot3_phase3_spdn // find A(:,i) int64_t pA, pA_end ; #if GB_A_IS_HYPER - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, i, &pA, &pA_end) ; #elif GB_A_IS_SPARSE pA = Ap[i] ; @@ -177,7 +171,7 @@ __global__ void AxB_dot3_phase3_spdn // find B(:,j) int64_t pB, pB_end ; #if GB_B_IS_HYPER - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, j, &pB, &pB_end) ; #elif GB_B_IS_SPARSE pB = Bp[j] ; diff --git a/CUDA/templates/GB_jit_AxB_dot3_phase3_vsdn.cuh b/CUDA/templates/GB_jit_AxB_dot3_phase3_vsdn.cuh index 061a2608e2..d5713d5e1c 100644 --- a/CUDA/templates/GB_jit_AxB_dot3_phase3_vsdn.cuh +++ b/CUDA/templates/GB_jit_AxB_dot3_phase3_vsdn.cuh @@ -98,23 +98,17 @@ __global__ void AxB_dot3_phase3_vsdn #endif #if GB_A_IS_HYPER - const int64_t anvec = A->nvec ; - const int64_t *__restrict__ Ah = A->h ; - const int64_t *__restrict__ A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *__restrict__ A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *__restrict__ A_Yx = (int64_t *) - ((A->Y == NULL) ? NULL : A->Y->x) ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *__restrict__ A_Yp = A->Y->p ; + const int64_t *__restrict__ A_Yi = A->Y->i ; + const int64_t *__restrict__ A_Yx = (int64_t *) A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if GB_B_IS_HYPER - const int64_t bnvec = B->nvec ; - const int64_t *__restrict__ Bh = B->h ; - const int64_t *__restrict__ B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *__restrict__ B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *__restrict__ B_Yx = (int64_t *) - ((B->Y == NULL) ? NULL : B->Y->x) ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *__restrict__ B_Yp = B->Y->p ; + const int64_t *__restrict__ B_Yi = B->Y->i ; + const int64_t *__restrict__ B_Yx = (int64_t *) B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; #endif // typedef cub::BlockReduce BlockReduce; @@ -153,7 +147,7 @@ __global__ void AxB_dot3_phase3_vsdn // find A(:,i) int64_t pA, pA_end ; #if GB_A_IS_HYPER - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, i, &pA, &pA_end) ; #elif GB_A_IS_SPARSE pA = Ap[i] ; @@ -167,7 +161,7 @@ __global__ void AxB_dot3_phase3_vsdn // find B(:,j) int64_t pB, pB_end ; #if GB_B_IS_HYPER - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, j, &pB, &pB_end) ; #elif GB_B_IS_SPARSE pB = Bp[j]; // col of C diff --git a/CUDA/templates/GB_jit_AxB_dot3_phase3_vsvs.cuh b/CUDA/templates/GB_jit_AxB_dot3_phase3_vsvs.cuh index 9fe6762987..02a94eeeb6 100644 --- a/CUDA/templates/GB_jit_AxB_dot3_phase3_vsvs.cuh +++ b/CUDA/templates/GB_jit_AxB_dot3_phase3_vsvs.cuh @@ -145,23 +145,17 @@ __global__ void AxB_dot3_phase3_vsvs #endif #if GB_A_IS_HYPER - const int64_t anvec = A->nvec ; - const int64_t *__restrict__ Ah = A->h ; - const int64_t *__restrict__ A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *__restrict__ A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *__restrict__ A_Yx = (int64_t *) - ((A->Y == NULL) ? NULL : A->Y->x) ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *__restrict__ A_Yp = A->Y->p ; + const int64_t *__restrict__ A_Yi = A->Y->i ; + const int64_t *__restrict__ A_Yx = (int64_t *) A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if GB_B_IS_HYPER - const int64_t bnvec = B->nvec ; - const int64_t *__restrict__ Bh = B->h ; - const int64_t *__restrict__ B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *__restrict__ B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *__restrict__ B_Yx = (int64_t *) - ((B->Y == NULL) ? NULL : B->Y->x) ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *__restrict__ B_Yp = B->Y->p ; + const int64_t *__restrict__ B_Yi = B->Y->i ; + const int64_t *__restrict__ B_Yx = (int64_t *) B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; #endif //int64_t pfirst, plast; @@ -190,7 +184,7 @@ __global__ void AxB_dot3_phase3_vsvs // find A(:,i): A is always sparse or hypersparse int64_t pA, pA_end ; #if GB_A_IS_HYPER - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, i, &pA, &pA_end) ; #else pA = Ap[i] ; @@ -200,7 +194,7 @@ __global__ void AxB_dot3_phase3_vsvs // find B(:,j): B is always sparse or hypersparse int64_t pB, pB_end ; #if GB_B_IS_HYPER - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, j, &pB, &pB_end) ; #else pB = Bp[j] ; diff --git a/CUDA/test/run_tests.cpp b/CUDA/test/run_tests.cpp index 7f52b9ec1f..8b627db141 100644 --- a/CUDA/test/run_tests.cpp +++ b/CUDA/test/run_tests.cpp @@ -1,6 +1,8 @@ #include +extern "C" { #include "GraphBLAS.h" +} #include "rmm_wrap.h" #include "test_utility.hpp" diff --git a/Config/.gitignore b/Config/.gitignore new file mode 100644 index 0000000000..5b47ab2e61 --- /dev/null +++ b/Config/.gitignore @@ -0,0 +1,5 @@ +# Ignore these files: + +# cmake constructs GB_config.h from GB_config.h.in with the name of the +# compiler, its flags, and other platform-specific properties. +GB_config.h diff --git a/Config/GB_config.h b/Config/GB_config.h index 17787706ef..fd13fa13ea 100644 --- a/Config/GB_config.h +++ b/Config/GB_config.h @@ -15,18 +15,18 @@ // GB_C_COMPILER: the C compiler used to compile GraphBLAS: #ifndef GB_C_COMPILER -#define GB_C_COMPILER "/usr/bin/cc" +#define GB_C_COMPILER "/Users/davis/bin/utils/spack/opt/spack/darwin-monterey-cannonlake/apple-clang-13.1.6/gcc-11.2.0-rdyxomyj7vbtjrfladbf2vm2grn4gznb/bin/gcc" #endif // GB_C_FLAGS: the C compiler flags used to compile GraphBLAS. Used // for compiling and linking: #ifndef GB_C_FLAGS -#define GB_C_FLAGS " -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC " +#define GB_C_FLAGS " -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk " #endif // GB_C_LINK_FLAGS: the flags passed to the C compiler for the link phase: #ifndef GB_C_LINK_FLAGS -#define GB_C_LINK_FLAGS " -shared " +#define GB_C_LINK_FLAGS " -dynamiclib " #endif // GB_LIB_PREFIX: library prefix (lib for Linux/Unix/Mac, empty for Windows): @@ -36,10 +36,10 @@ // GB_LIB_SUFFIX: library suffix (.so for Linux/Unix, .dylib for Mac, etc): #ifndef GB_LIB_SUFFIX -#define GB_LIB_SUFFIX ".so" +#define GB_LIB_SUFFIX ".dylib" #endif -// GB_OBJ_SUFFIX: object suffix (.o for Linux/Unix/Mac, .obj for Windows): +// GB_OBJ_SUFFIX: object suffix (.o for Linux/Unix/Mac/MinGW, .obj for MSVC): #ifndef GB_OBJ_SUFFIX #define GB_OBJ_SUFFIX ".o" #endif @@ -57,12 +57,12 @@ // GB_C_LIBRARIES: libraries to link with when using direct compile/link: #ifndef GB_C_LIBRARIES -#define GB_C_LIBRARIES " -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/9/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so" +#define GB_C_LIBRARIES " -lm -ldl /Users/davis/bin/utils/spack/opt/spack/darwin-monterey-cannonlake/apple-clang-13.1.6/gcc-11.2.0-rdyxomyj7vbtjrfladbf2vm2grn4gznb/lib/libgomp.dylib" #endif // GB_CMAKE_LIBRARIES: libraries to link with when using cmake #ifndef GB_CMAKE_LIBRARIES -#define GB_CMAKE_LIBRARIES "m;dl;/usr/lib/gcc/x86_64-linux-gnu/9/libgomp.so;/usr/lib/x86_64-linux-gnu/libpthread.so" +#define GB_CMAKE_LIBRARIES "m;dl;/Users/davis/bin/utils/spack/opt/spack/darwin-monterey-cannonlake/apple-clang-13.1.6/gcc-11.2.0-rdyxomyj7vbtjrfladbf2vm2grn4gznb/lib/libgomp.dylib" #endif #endif diff --git a/Config/GB_config.h.in b/Config/GB_config.h.in index 0968021b3e..c72a289d2d 100644 --- a/Config/GB_config.h.in +++ b/Config/GB_config.h.in @@ -39,7 +39,7 @@ #define GB_LIB_SUFFIX "@GB_LIB_SUFFIX@" #endif -// GB_OBJ_SUFFIX: object suffix (.o for Linux/Unix/Mac, .obj for Windows): +// GB_OBJ_SUFFIX: object suffix (.o for Linux/Unix/Mac/MinGW, .obj for MSVC): #ifndef GB_OBJ_SUFFIX #define GB_OBJ_SUFFIX "@GB_OBJ_SUFFIX@" #endif diff --git a/Config/GraphBLAS.h.in b/Config/GraphBLAS.h.in index 451bcf96fe..75da682a1c 100644 --- a/Config/GraphBLAS.h.in +++ b/Config/GraphBLAS.h.in @@ -32,10 +32,10 @@ // Regarding "historical" functions and symbols: when a GxB_* function or // symbol is added to the C API Specification, the new GrB_* name should be -// used instead. The old GxB_* name will be kept in working order for -// historical reasons; it might no longer be mentioned in the user guide. -// Historical functions and symbols would only be removed in the rare case that -// they cause a serious conflict with future methods. +// used instead. The old GxB_* name will be kept for historical reasons, +// documented here and in working order; it might no longer be mentioned in the +// user guide. Historical functions and symbols would only be removed in the +// rare case that they cause a serious conflict with future methods. #ifndef GRAPHBLAS_H #define GRAPHBLAS_H @@ -96,9 +96,9 @@ #define GB_GLOBAL extern __declspec ( dllexport ) #elif defined ( GB_STATIC ) // Compiling the user application on Windows, importing symbols from - // a static GraphBLAS library on Windows. The user application must do: - // #define GB_STATIC - // #include "GraphBLAS.h" + // a static GraphBLAS library on Windows. The user application must + // define GB_STATIC (e.g., with the pre-processor flag -DGB_STATIC) for + // all compilation units that include "GraphBLAS.h". #define GB_GLOBAL extern #else // Compiling the user application on Windows, importing symbols from @@ -124,10 +124,18 @@ // C95: 199409L #define GxB_STDC_VERSION __STDC_VERSION__ #else -// assume ANSI C (C90 / C89) +// assume C90 / C89 #define GxB_STDC_VERSION 199001L #endif +//------------------------------------------------------------------------------ +// CUDA (currently experimental, not for production use) +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_CUDA +#cmakedefine SUITESPARSE_CUDA +#endif + //------------------------------------------------------------------------------ // definitions for complex types //------------------------------------------------------------------------------ @@ -197,10 +205,10 @@ // NVIDIA nvcc #define GB_restrict __restrict__ #elif GxB_STDC_VERSION >= 199901L - // ANSI C99 or later + // C99 or later #define GB_restrict restrict #else - // ANSI C95 and earlier: no restrict keyword + // C95 and earlier: no restrict keyword #define GB_restrict #endif @@ -276,11 +284,10 @@ // The 'spec' string describes the GraphBLAS spec: #define GxB_SPEC_ABOUT \ -"GraphBLAS C API, by Benjamin Brock, Aydin Buluc, Raye Kimmerer,\n" \ -"Jim Kitchen, Major Kumar, Timothy Mattson, Scott McMillan, Jose' Moreira,\n" \ -"Erik Welch, and Carl Yang. Based on 'GraphBLAS Mathematics by Jeremy\n" \ -"Kepner. See also 'Graph Algorithms in the Language of Linear Algebra,'\n" \ -"edited by J. Kepner and J. Gilbert, SIAM, 2011.\n" +"GraphBLAS C API, by Aydin Buluc, Timothy Mattson, Scott McMillan,\n" \ +"Jose' Moreira, Carl Yang, and Benjamin Brock. Based on 'GraphBLAS\n" \ +"Mathematics by Jeremy Kepner. See also 'Graph Algorithms in the Language\n" \ +"of Linear Algebra,' edited by J. Kepner and J. Gilbert, SIAM, 2011.\n" //============================================================================== // GrB_Index: the GraphBLAS integer @@ -337,7 +344,6 @@ typedef enum GrB_DIMENSION_MISMATCH = -6, // matrix dimensions do not match GrB_OUTPUT_NOT_EMPTY = -7, // output matrix already has values GrB_NOT_IMPLEMENTED = -8, // method not implemented - GrB_ALREADY_SET = -9, // field already written to GrB_PANIC = -101, // unknown error GrB_OUT_OF_MEMORY = -102, // out of memory GrB_INSUFFICIENT_SPACE = -103, // output array not large enough @@ -400,12 +406,7 @@ GrB_Info GrB_finalize (void) ; // finish GraphBLAS // GrB_getVersion: GraphBLAS C API version //============================================================================== -// GrB_getVersion provides a runtime access of the C API Version. Can also be -// done with two calls to GrB_Global_get_INT32 with the v2.1 C API: -// -// GrB_get (GrB_GLOBAL, &version, GrB_API_VER_MAJOR) ; -// GrB_get (GrB_GLOBAL, &subversion, GrB_API_VER_MINOR) ; - +// GrB_getVersion provides a runtime access of the C API Version. GrB_Info GrB_getVersion // runtime access to C API version number ( unsigned int *version, // returns GRB_VERSION @@ -418,13 +419,13 @@ GrB_Info GrB_getVersion // runtime access to C API version number // The GrB_Descriptor is used to modify the behavior of GraphBLAS operations. // -// GrB_OUTP: can be GrB_DEFAULT or GrB_REPLACE. If GrB_REPLACE, then C is +// GrB_OUTP: can be GxB_DEFAULT or GrB_REPLACE. If GrB_REPLACE, then C is // cleared after taking part in the accum operation but before the mask. // In other words, C = accum (C,T) is split into Z = accum(C,T) ; // C=0 ; C = Z. // -// GrB_MASK: can be GrB_DEFAULT, GrB_COMP, GrB_STRUCTURE, or set to both -// GrB_COMP and GrB_STRUCTURE. If GrB_DEFAULT, the mask is used +// GrB_MASK: can be GxB_DEFAULT, GrB_COMP, GrB_STRUCTURE, or set to both +// GrB_COMP and GrB_STRUCTURE. If GxB_DEFAULT, the mask is used // normally, where Mask(i,j)=1 means C(i,j) can be modified by C=Z, // and Mask(i,j)=0 means it cannot be modified even if Z(i,j) is has been // computed and differs from C(i,j). If GrB_COMP, this is the same as @@ -432,7 +433,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // the value of the mask is not considered, just its pattern. The // GrB_COMP and GrB_STRUCTURE settings can be combined. // -// GrB_INP0: can be GrB_DEFAULT or GrB_TRAN. If GrB_DEFAULT, the first input +// GrB_INP0: can be GxB_DEFAULT or GrB_TRAN. If GxB_DEFAULT, the first input // is used as-is. If GrB_TRAN, it is transposed. Only matrices are // transposed this way. Vectors are never transposed via the // GrB_Descriptor. @@ -442,7 +443,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // GxB_AxB_METHOD: this is a hint to SuiteSparse:GraphBLAS on which algorithm // it should use to compute C=A*B, in GrB_mxm, GrB_mxv, and GrB_vxm. // SuiteSparse:GraphBLAS has four different heuristics, and the default -// method (GrB_DEFAULT) selects between them automatically. The complete +// method (GxB_DEFAULT) selects between them automatically. The complete // rule is in the User Guide. The brief discussion here assumes all // matrices are stored by column. All methods compute the same result, // except that floating-point roundoff may differ when working on @@ -472,7 +473,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // state, with indices out of order. The sort is left pending. Some // methods can tolerate jumbled matrices on input, so this can be faster. // However, in some cases, it can be faster for GrB_mxm to sort its output -// as it is computed. With GxB_SORT set to GrB_DEFAULT, the sort is left +// as it is computed. With GxB_SORT set to GxB_DEFAULT, the sort is left // pending. With GxB_SORT set to a nonzero value, GrB_mxm typically sorts // the resulting matrix C (but not always; this is just a hint). If // GrB_init is called with GrB_BLOCKING mode, the sort will always be @@ -510,8 +511,7 @@ GrB_Desc_Field ; typedef enum { // for all GrB_Descriptor fields: - GrB_DEFAULT = 0, // default behavior of the method - GxB_DEFAULT = 0, // historical; use GrB_DEFAULT instead + GxB_DEFAULT = 0, // default behavior of the method // for GrB_OUTP only: GrB_REPLACE = 1, // clear the output before assigning new values to it @@ -519,7 +519,6 @@ typedef enum // for GrB_MASK only: GrB_COMP = 2, // use the structural complement of the input GrB_STRUCTURE = 4, // use the only pattern of the mask, not its values - GrB_COMP_STRUCTURE = 6, // shorthand for GrB_COMP + GrB_STRUCTURE // for GrB_INP0 and GrB_INP1 only: GrB_TRAN = 3, // use the transpose of the input @@ -536,7 +535,7 @@ typedef enum GrB_Desc_Value ; // default for GxB pack is to trust the input data -#define GxB_FAST_IMPORT ((int) GrB_DEFAULT) +#define GxB_FAST_IMPORT GxB_DEFAULT typedef struct GB_Descriptor_opaque *GrB_Descriptor ; @@ -545,15 +544,61 @@ GrB_Info GrB_Descriptor_new // create a new descriptor GrB_Descriptor *descriptor // handle of descriptor to create ) ; -// historical methods; use GrB_set and GrB_get instead: -GrB_Info GrB_Descriptor_set (GrB_Descriptor, GrB_Desc_Field, GrB_Desc_Value) ; -GrB_Info GxB_Descriptor_get (GrB_Desc_Value *, GrB_Descriptor, GrB_Desc_Field) ; -GrB_Info GxB_Desc_set (GrB_Descriptor, GrB_Desc_Field, ...) ; -GrB_Info GxB_Desc_set_INT32 (GrB_Descriptor, GrB_Desc_Field, int32_t) ; -GrB_Info GxB_Desc_set_FP64 (GrB_Descriptor, GrB_Desc_Field, double) ; -GrB_Info GxB_Desc_get (GrB_Descriptor, GrB_Desc_Field, ...) ; -GrB_Info GxB_Desc_get_INT32 (GrB_Descriptor, GrB_Desc_Field, int32_t *) ; -GrB_Info GxB_Desc_get_FP64 (GrB_Descriptor, GrB_Desc_Field, double *) ; +GrB_Info GrB_Descriptor_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + GrB_Desc_Value val // value to change it to +) ; + +GrB_Info GxB_Descriptor_get // get a parameter from a descriptor +( + GrB_Desc_Value *val, // value of the parameter + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field // parameter to query +) ; + +GrB_Info GxB_Desc_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + ... // value to change it to +) ; + +GrB_Info GxB_Desc_set_INT32 // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Desc_set_FP64 // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + double value // value to change it to +) ; + +GrB_Info GxB_Desc_get // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field, // parameter to query + ... // value of the parameter +) ; + +GrB_Info GxB_Desc_get_INT32 // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL is ok + GrB_Desc_Field field, // parameter to query + int32_t *value // return value of the descriptor +) ; + +GrB_Info GxB_Desc_get_FP64 // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL is ok + GrB_Desc_Field field, // parameter to query + double *value // return value of the descriptor +) ; GrB_Info GrB_Descriptor_free // free a descriptor ( @@ -700,12 +745,32 @@ GB_GLOBAL GrB_Type // GrB_Type_new: create a new type //------------------------------------------------------------------------------ -GrB_Info GrB_Type_new // create a new GraphBLAS type +// GrB_Type_new is implemented both as a macro and a function. Both are +// user-callable. The default is to use the macro, since this allows the name +// of the type to be saved as a string, for subsequent error reporting by +// GrB_error. + +#undef GrB_Type_new +#undef GrM_Type_new + +GrB_Info GRB (Type_new) // create a new GraphBLAS type ( GrB_Type *type, // handle of user type to create size_t sizeof_ctype // size = sizeof (ctype) of the C type ) ; +// user code should not directly use GB_STR or GB_XSTR +// GB_STR: convert the content of x into a string "x" +#define GB_XSTR(x) GB_STR(x) +#define GB_STR(x) #x + +// GrB_Type_new as a user-callable macro, which allows the name of the ctype +// to be added to the new type. The type_defn is unknown. +#define GrB_Type_new(utype, sizeof_ctype) \ + GxB_Type_new(utype, sizeof_ctype, GB_STR(sizeof_ctype), NULL) +#define GrM_Type_new(utype, sizeof_ctype) \ + GxB_Type_new(utype, sizeof_ctype, GB_STR(sizeof_ctype), NULL) + // GxB_Type_new creates a type with a name and definition that are known to // GraphBLAS, as strings. The type_name is any valid string (max length of 128 // characters, including the required null-terminating character) that may @@ -735,16 +800,22 @@ GrB_Info GxB_Type_new // create a new named GraphBLAS type const char *type_defn // typedef for the type (no max length) ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Type_name (char *type_name, const GrB_Type type) ; -GrB_Info GxB_Type_size (size_t *size, const GrB_Type type) ; +GrB_Info GxB_Type_name // return the name of a GraphBLAS type +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Type type +) ; + +GrB_Info GxB_Type_size // determine the size of the type +( + size_t *size, // the sizeof the type + const GrB_Type type // type to determine the sizeof +) ; GrB_Info GxB_Type_from_name // return the built-in GrB_Type from a name ( - GrB_Type *type, // built-in type, or NULL if user-defined. - // The name can be the underlying C type - // ("int8_t") or the GraphBLAS name - // ("GrB_INT8"). + GrB_Type *type, // built-in type, or NULL if user-defined const char *type_name // array of size at least GxB_MAX_NAME_LEN ) ; @@ -949,16 +1020,23 @@ GB_GLOBAL GrB_UnaryOp typedef void (*GxB_unary_function) (void *, const void *) ; -// GrB_UnaryOp_new creates a user-defined unary op (with no name or defn) -GrB_Info GrB_UnaryOp_new // create a new user-defined unary operator +// GrB_UnaryOp_new creates a user-defined unary op, with an automatic +// detection of the operator name. +#undef GrB_UnaryOp_new +#undef GrM_UnaryOp_new +GrB_Info GRB (UnaryOp_new) // create a new user-defined unary operator ( GrB_UnaryOp *unaryop, // handle for the new unary operator GxB_unary_function function, // pointer to the unary function GrB_Type ztype, // type of output z GrB_Type xtype // type of input x ) ; +#define GrB_UnaryOp_new(op,f,z,x) \ + GxB_UnaryOp_new(op,f,z,x, GB_STR(f), NULL) +#define GrM_UnaryOp_new(op,f,z,x) \ + GxM_UnaryOp_new(op,f,z,x, GB_STR(f), NULL) -// GxB_UnaryOp_new creates a named and defined user-defined unary op. +// GxB_UnaryOp_new creates a named user-defined unary op. GrB_Info GxB_UnaryOp_new // create a new user-defined unary operator ( GrB_UnaryOp *unaryop, // handle for the new unary operator @@ -969,11 +1047,29 @@ GrB_Info GxB_UnaryOp_new // create a new user-defined unary operator const char *unop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_UnaryOp_ztype (GrB_Type *ztype, GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_ztype_name (char *type_name, const GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_xtype (GrB_Type *xtype, GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_xtype_name (char *type_name, const GrB_UnaryOp unaryop) ; +// GxB_UnaryOp_ztype is historical. Use GxB_UnaryOp_ztype_name instead. +GrB_Info GxB_UnaryOp_ztype // return the type of z +( + GrB_Type *ztype, // return type of output z + GrB_UnaryOp unaryop // unary operator +) ; +GrB_Info GxB_UnaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; + +// GxB_UnaryOp_xtype is historical. Use GxB_UnaryOp_xtype_name instead. +GrB_Info GxB_UnaryOp_xtype // return the type of x +( + GrB_Type *xtype, // return type of input x + GrB_UnaryOp unaryop // unary operator +) ; +GrB_Info GxB_UnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; GrB_Info GrB_UnaryOp_free // free a user-created unary operator ( @@ -1385,8 +1481,11 @@ GB_GLOBAL GrB_BinaryOp GxB_IGNORE_DUP ; typedef void (*GxB_binary_function) (void *, const void *, const void *) ; -// GrB_BinaryOp_new creates a user-defined binary op (no name or defn) -GrB_Info GrB_BinaryOp_new +// GrB_BinaryOp_new creates a user-defined binary op, with an automatic +// detection of the operator name. +#undef GrB_BinaryOp_new +#undef GrM_BinaryOp_new +GrB_Info GRB (BinaryOp_new) ( GrB_BinaryOp *binaryop, // handle for the new binary operator GxB_binary_function function, // pointer to the binary function @@ -1394,8 +1493,12 @@ GrB_Info GrB_BinaryOp_new GrB_Type xtype, // type of input x GrB_Type ytype // type of input y ) ; +#define GrB_BinaryOp_new(op,f,z,x,y) \ + GxB_BinaryOp_new(op,f,z,x,y, GB_STR(f), NULL) +#define GrM_BinaryOp_new(op,f,z,x,y) \ + GxM_BinaryOp_new(op,f,z,x,y, GB_STR(f), NULL) -// GxB_BinaryOp_new creates a named and defined user-defined binary op. +// GxB_BinaryOp_new creates a named user-defined binary op. GrB_Info GxB_BinaryOp_new ( GrB_BinaryOp *op, // handle for the new binary operator @@ -1407,13 +1510,41 @@ GrB_Info GxB_BinaryOp_new const char *binop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_BinaryOp_ztype (GrB_Type *ztype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ztype_name (char *type_name, const GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_xtype (GrB_Type *xtype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_xtype_name (char *type_name, const GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ytype (GrB_Type *ytype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ytype_name (char *type_name, const GrB_BinaryOp op) ; +// NOTE: GxB_BinaryOp_ztype is historical. Use GxB_BinaryOp_ztype_name instead. +GrB_Info GxB_BinaryOp_ztype // return the type of z +( + GrB_Type *ztype, // return type of output z + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; + +// NOTE: GxB_BinaryOp_xtype is historical. Use GxB_BinaryOp_xtype_name instead. +GrB_Info GxB_BinaryOp_xtype // return the type of x +( + GrB_Type *xtype, // return type of input x + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; + +// NOTE: GxB_BinaryOp_ytype is historical. Use GxB_BinaryOp_ytype_name instead. +GrB_Info GxB_BinaryOp_ytype // return the type of y +( + GrB_Type *ytype, // return type of input y + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_ytype_name // return the type_name of y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; GrB_Info GrB_BinaryOp_free // free a user-created binary operator ( @@ -1424,7 +1555,8 @@ GrB_Info GrB_BinaryOp_free // free a user-created binary operator // GxB_SelectOp: select operators (DEPRECATED: do not use) //============================================================================== -// historical; use GrB_select and GrB_IndexUnaryOp instead: +// GrB_select and GrB_IndexUnaryOp should be used instead of GxB_select. + typedef struct GB_SelectOp_opaque *GxB_SelectOp ; GB_GLOBAL GxB_SelectOp GxB_TRIL, GxB_TRIU, GxB_DIAG, GxB_OFFDIAG, GxB_NONZERO, GxB_EQ_ZERO, GxB_GT_ZERO, GxB_GE_ZERO, GxB_LT_ZERO, GxB_LE_ZERO, GxB_NE_THUNK, @@ -1451,9 +1583,12 @@ typedef void (*GxB_index_unary_function) const void *y // input scalar y ) ; -// GrB_IndexUnaryOp_new creates a user-defined unary op (no name or defn) +// GrB_IndexUnaryOp_new creates a user-defined unary op, with an automatic +// detection of the operator name. +#undef GrB_IndexUnaryOp_new +#undef GrM_IndexUnaryOp_new -GrB_Info GrB_IndexUnaryOp_new // create a new user-defined IndexUnary op +GrB_Info GRB (IndexUnaryOp_new) // create a new user-defined IndexUnary op ( GrB_IndexUnaryOp *op, // handle for the new IndexUnary operator GxB_index_unary_function function, // pointer to IndexUnary function @@ -1462,6 +1597,11 @@ GrB_Info GrB_IndexUnaryOp_new // create a new user-defined IndexUnary op GrB_Type ytype // type of input y (the scalar) ) ; +#define GrB_IndexUnaryOp_new(op,f,z,x,y) \ + GxB_IndexUnaryOp_new(op,f,z,x,y, GB_STR(f), NULL) +#define GrM_IndexUnaryOp_new(op,f,z,x,y) \ + GxM_IndexUnaryOp_new(op,f,z,x,y, GB_STR(f), NULL) + GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp ( GrB_IndexUnaryOp *op, // handle for the new IndexUnary operator @@ -1473,10 +1613,26 @@ GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp const char *idxop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_IndexUnaryOp_ztype_name (char *, const GrB_IndexUnaryOp op) ; -GrB_Info GxB_IndexUnaryOp_xtype_name (char *, const GrB_IndexUnaryOp op) ; -GrB_Info GxB_IndexUnaryOp_ytype_name (char *, const GrB_IndexUnaryOp op) ; +GrB_Info GxB_IndexUnaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // IndexUnary operator +) ; + +// For TRIL, TRIU, DIAG, OFFDIAG, COLLE, COLGT, ROWLE, and ROWGT, +// the xtype_name is an empty string (""), since these functions do not depend +// on the type of the matrix input. +GrB_Info GxB_IndexUnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // select operator +) ; + +GrB_Info GxB_IndexUnaryOp_ytype_name // return the type_name of the scalary y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // select operator +) ; GrB_Info GrB_IndexUnaryOp_free // free a user-created IndexUnaryOp ( @@ -1678,12 +1834,14 @@ GrB_Info GrB_Monoid_new_UDT // create a monoid with a user-defined type // Type-generic method for creating a new monoid: /* + GrB_Info GrB_Monoid_new // create a monoid ( GrB_Monoid *monoid, // handle of monoid to create GrB_BinaryOp op, // binary operator of the monoid identity // identity value of the monoid ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -1816,6 +1974,7 @@ GrB_Info GxB_Monoid_terminal_new_UDT // create a monoid with a user type // Type-generic method for creating a new monoid with a terminal value: /* + GrB_Info GxB_Monoid_terminal_new // create a monoid ( GrB_Monoid *monoid, // handle of monoid to create @@ -1823,6 +1982,7 @@ GrB_Info GxB_Monoid_terminal_new // create a monoid identity, // identity value of the monoid terminal // terminal value of the monoid ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -1835,10 +1995,25 @@ GrB_Info GxB_Monoid_terminal_new // create a monoid (monoid, op, identity, terminal) #endif -// historical; use GrB_get instead: -GrB_Info GxB_Monoid_operator (GrB_BinaryOp *op, GrB_Monoid monoid) ; -GrB_Info GxB_Monoid_identity (void *identity, GrB_Monoid monoid) ; -GrB_Info GxB_Monoid_terminal (bool *, void *terminal, GrB_Monoid monoid) ; +GrB_Info GxB_Monoid_operator // return the monoid operator +( + GrB_BinaryOp *op, // returns the binary op of the monoid + GrB_Monoid monoid // monoid to query +) ; + +GrB_Info GxB_Monoid_identity // return the monoid identity +( + void *identity, // returns the identity of the monoid + GrB_Monoid monoid // monoid to query +) ; + +GrB_Info GxB_Monoid_terminal // return the monoid terminal +( + bool *has_terminal, // true if the monoid has a terminal value + void *terminal, // returns the terminal of the monoid, + // unmodified if has_terminal is false + GrB_Monoid monoid // monoid to query +) ; GrB_Info GrB_Monoid_free // free a user-created monoid ( @@ -1858,9 +2033,17 @@ GrB_Info GrB_Semiring_new // create a semiring GrB_BinaryOp multiply // multiply operator of the semiring ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Semiring_add (GrB_Monoid *add, GrB_Semiring semiring) ; -GrB_Info GxB_Semiring_multiply (GrB_BinaryOp *multiply, GrB_Semiring semiring) ; +GrB_Info GxB_Semiring_add // return the add monoid of a semiring +( + GrB_Monoid *add, // returns add monoid of the semiring + GrB_Semiring semiring // semiring to query +) ; + +GrB_Info GxB_Semiring_multiply // return multiply operator of a semiring +( + GrB_BinaryOp *multiply, // returns multiply operator of the semiring + GrB_Semiring semiring // semiring to query +) ; GrB_Info GrB_Semiring_free // free a user-created semiring ( @@ -1871,6 +2054,9 @@ GrB_Info GrB_Semiring_free // free a user-created semiring // GrB_Scalar: a GraphBLAS scalar //============================================================================== +// GxB_Scalar has become GrB_Scalar. The older name GxB_Scalar is kept as +// historical, but GrB_Scalar should be used instead. + typedef struct GB_Scalar_opaque *GxB_Scalar ; // historical: use GrB_Scalar typedef struct GB_Scalar_opaque *GrB_Scalar ; // use this instead @@ -1900,9 +2086,18 @@ GrB_Info GrB_Scalar_nvals // get the number of entries in a GrB_Scalar const GrB_Scalar s // GrB_Scalar to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Scalar_type (GrB_Type *type, const GrB_Scalar s) ; -GrB_Info GxB_Scalar_type_name (char *type_name, const GrB_Scalar s) ; +// NOTE: GxB_Scalar_type is historical. Use GxB_Scalar_type_name instead. +GrB_Info GxB_Scalar_type // get the type of a GrB_Scalar +( + GrB_Type *type, // returns the type of the GrB_Scalar + const GrB_Scalar s // GrB_Scalar to query +) ; +GrB_Info GxB_Scalar_type_name // return the name of the type of a scalar +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Scalar s // GrB_Scalar to query +) ; GrB_Info GxB_Scalar_memoryUsage // return # of bytes used for a scalar ( @@ -2031,11 +2226,13 @@ GrB_Info GxB_Scalar_setElement_UDT (GrB_Scalar s, void *x) ; // user-defined type. /* + GrB_Info GrB_Scalar_setElement // s = x ( GrB_Scalar s, // GrB_Scalar to modify x // user scalar to assign to s ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2047,7 +2244,6 @@ GrB_Info GrB_Scalar_setElement // s = x ) \ (s, x) -// historical; use GrB_Scalar_setElement instead: #define GxB_Scalar_setElement(s,x) GrB_Scalar_setElement (s, x) #endif @@ -2178,7 +2374,6 @@ GrB_Info GrB_Scalar_extractElement // x = s ) \ (x, s) -// historical; use GrB_Scalar_extractElement instead: #define GxB_Scalar_extractElement(x,s) GrB_Scalar_extractElement (x, s) #endif @@ -2222,9 +2417,18 @@ GrB_Info GrB_Vector_nvals // get the number of entries in a vector const GrB_Vector v // vector to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Vector_type (GrB_Type *type, const GrB_Vector v) ; -GrB_Info GxB_Vector_type_name (char *type_name, const GrB_Vector v) ; +// NOTE: GxB_Vector_type is historical. Use GxB_Vector_type_name instead. +GrB_Info GxB_Vector_type // get the type of a vector +( + GrB_Type *type, // returns the type of the vector + const GrB_Vector v // vector to query +) ; +GrB_Info GxB_Vector_type_name // return the name of the type of a vector +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Vector v // vector to query +) ; GrB_Info GxB_Vector_memoryUsage // return # of bytes used for a vector ( @@ -2388,6 +2592,7 @@ GrB_Info GxB_Vector_build_Scalar // build a vector from (i,scalar) tuples // for a user-defined type. /* + GrB_Info GrB_Vector_build // build a vector from (I,X) tuples ( GrB_Vector w, // vector to build @@ -2396,6 +2601,7 @@ GrB_Info GrB_Vector_build // build a vector from (I,X) tuples GrB_Index nvals, // number of tuples const GrB_BinaryOp dup // binary function to assemble duplicates ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2524,12 +2730,14 @@ GrB_Info GrB_Vector_setElement_Scalar // w(i) = x // user-defined type. /* + GrB_Info GrB_Vector_setElement // w(i) = x ( GrB_Vector w, // vector to modify x, // scalar to assign to w(i) GrB_Index i // row index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2659,12 +2867,14 @@ GrB_Info GrB_Vector_extractElement_Scalar // x = v(i) // for a user-defined type. /* + GrB_Info GrB_Vector_extractElement // x = v(i) ( *x, // scalar extracted const GrB_Vector v, // vector to extract an entry from GrB_Index i // row index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2825,6 +3035,7 @@ GrB_Info GrB_Vector_extractTuples_UDT // [I,~,X] = find (v) // for a user-defined type. /* + GrB_Info GrB_Vector_extractTuples // [I,~,X] = find (v) ( GrB_Index *I, // array for returning row indices of tuples @@ -2832,6 +3043,7 @@ GrB_Info GrB_Vector_extractTuples // [I,~,X] = find (v) GrB_Index *nvals, // I, X size on input; # tuples on output const GrB_Vector v // vector to extract tuples from ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2890,9 +3102,18 @@ GrB_Info GrB_Matrix_nvals // get the number of entries in a matrix const GrB_Matrix A // matrix to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Matrix_type (GrB_Type *type, const GrB_Matrix A) ; -GrB_Info GxB_Matrix_type_name (char *type_name, const GrB_Matrix A) ; +// NOTE: GxB_Matrix_type is historical. Use GxB_Matrix_type_name instead. +GrB_Info GxB_Matrix_type // get the type of a matrix +( + GrB_Type *type, // returns the type of the matrix + const GrB_Matrix A // matrix to query +) ; +GrB_Info GxB_Matrix_type_name // return the name of the type of a matrix +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Matrix A // matrix to query +) ; GrB_Info GxB_Matrix_memoryUsage // return # of bytes used for a matrix ( @@ -3071,6 +3292,7 @@ GrB_Info GxB_Matrix_build_Scalar // build a matrix from (I,J,scalar) tuples // for a user-defined type. /* + GrB_Info GrB_Matrix_build // build a matrix from (I,J,X) tuples ( GrB_Matrix C, // matrix to build @@ -3080,6 +3302,7 @@ GrB_Info GrB_Matrix_build // build a matrix from (I,J,X) tuples GrB_Index nvals, // number of tuples const GrB_BinaryOp dup // binary function to assemble duplicates ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3223,6 +3446,7 @@ GrB_Info GrB_Matrix_setElement_Scalar // C (i,j) = x // user-defined type. /* + GrB_Info GrB_Matrix_setElement // C (i,j) = x ( GrB_Matrix C, // matrix to modify @@ -3230,6 +3454,7 @@ GrB_Info GrB_Matrix_setElement // C (i,j) = x GrB_Index i, // row index GrB_Index j // column index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3374,6 +3599,7 @@ GrB_Info GrB_Matrix_extractElement_Scalar // x = A(i,j) // for a user-defined type. /* + GrB_Info GrB_Matrix_extractElement // x = A(i,j) ( *x, // extracted scalar @@ -3381,6 +3607,7 @@ GrB_Info GrB_Matrix_extractElement // x = A(i,j) GrB_Index i, // row index GrB_Index j // column index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3557,6 +3784,7 @@ GrB_Info GrB_Matrix_extractTuples_UDT // [I,J,X] = find (A) // for a user-defined type. /* + GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) ( GrB_Index *I, // array for returning row indices of tuples @@ -3565,6 +3793,7 @@ GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) GrB_Index *nvals, // I,J,X size on input; # tuples on output const GrB_Matrix A // matrix to extract tuples from ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3604,7 +3833,7 @@ GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) // ncols(A{i,j}) for all i). // The type of C is unchanged, and all matrices A{i,j} are typecasted into the -// type of C. Any settings made to C by GrB_set (format by row +// type of C. Any settings made to C by GxB_Matrix_Option_set (format by row // or by column, bitmap switch, hyper switch, and sparsity control) are // unchanged. @@ -3662,7 +3891,7 @@ GrB_Info GrB_Matrix_diag // build a diagonal matrix from a vector // already exist on input, of the correct size. Any existing entries in C are // discarded. The type of C is preserved, so that if the type of C and v // differ, the entries are typecasted into the type of C. Any settings made to -// C by GrB_set (format by row or by column, bitmap switch, hyper +// C by GxB_Matrix_Option_set (format by row or by column, bitmap switch, hyper // switch, and sparsity control) are unchanged. GrB_Info GxB_Matrix_diag // construct a diagonal matrix from a vector @@ -3687,7 +3916,7 @@ GrB_Info GxB_Matrix_diag // construct a diagonal matrix from a vector // the range -1 to -m+1. Any existing entries in v are discarded. The type of // v is preserved, so that if the type of A and v differ, the entries are // typecasted into the type of v. Any settings made to v by -// GrB_set (bitmap switch and sparsity control) are unchanged. +// GxB_Vector_Option_set (bitmap switch and sparsity control) are unchanged. GrB_Info GxB_Vector_diag // extract a diagonal from a matrix, as a vector ( @@ -3702,58 +3931,60 @@ GrB_Info GxB_Vector_diag // extract a diagonal from a matrix, as a vector //============================================================================== // The following options modify how SuiteSparse:GraphBLAS stores and operates -// on its matrices. The GrB_get/set methods allow the user to suggest how the +// on its matrices. The GxB_*Option* methods allow the user to suggest how the // internal representation of a matrix, or all matrices, should be held. These // options have no effect on the result (except for minor roundoff differences // for floating-point types). They only affect the time and memory usage of the // computations. +// GxB_Matrix_Option_set: sets an option for a specific matrix +// GxB_Matrix_Option_get: queries the current option of a specific matrix +// GxB_Vector_Option_set: sets an option for a specific vector +// GxB_Vector_Option_get: queries the current option of a specific vector +// GxB_Global_Option_set: sets an option for all future matrices +// GxB_Global_Option_get: queries current option for all future matrices + typedef enum // for global options or matrix options { //------------------------------------------------------------ - // GrB_get / GrB_set for GrB_Matrix and GrB_GLOBAL: + // for GxB_Matrix_Option_get/set and GxB_Global_Option_get/set: //------------------------------------------------------------ GxB_HYPER_SWITCH = 7000, // switch to hypersparse (double value) - GxB_HYPER_HASH = 7048, // hyper_hash control (int64 value) GxB_BITMAP_SWITCH = 7001, // switch to bitmap (double value) - GxB_FORMAT = 7002, // historical; use GrB_STORAGE_ORIENTATION_HINT + GxB_FORMAT = 7002, // CSR/CSC format: GxB_BY_ROW or GxB_BY_COL //------------------------------------------------------------ - // GrB_get for GrB_GLOBAL: + // for GxB_Global_Option_get only: //------------------------------------------------------------ - GxB_MODE = 7003, // historical; use GrB_BLOCKING_MODE - GxB_LIBRARY_NAME = 7004, // historical; use GrB_NAME - GxB_LIBRARY_VERSION = 7005, // historical; use GrB_LIBRARY_VER_* + GxB_MODE = 7003, // mode passed to GrB_init + GxB_LIBRARY_NAME = 7004, // name of the library (char *) + GxB_LIBRARY_VERSION = 7005, // library version (3 int's) GxB_LIBRARY_DATE = 7006, // date of the library (char *) GxB_LIBRARY_ABOUT = 7007, // about the library (char *) GxB_LIBRARY_URL = 7008, // URL for the library (char *) GxB_LIBRARY_LICENSE = 7009, // license of the library (char *) GxB_LIBRARY_COMPILE_DATE = 7010, // date library was compiled (char *) GxB_LIBRARY_COMPILE_TIME = 7011, // time library was compiled (char *) - GxB_API_VERSION = 7012, // historical; use GrB_API_VER_* + GxB_API_VERSION = 7012, // API version (3 int's) GxB_API_DATE = 7013, // date of the API (char *) GxB_API_ABOUT = 7014, // about the API (char *) GxB_API_URL = 7015, // URL for the API (char *) GxB_COMPILER_VERSION = 7016, // compiler version (3 int's) GxB_COMPILER_NAME = 7017, // compiler name (char *) GxB_LIBRARY_OPENMP = 7018, // library compiled with OpenMP - GxB_MALLOC_FUNCTION = 7037, // malloc function pointer - GxB_CALLOC_FUNCTION = 7038, // calloc function pointer - GxB_REALLOC_FUNCTION = 7039, // realloc function pointer - GxB_FREE_FUNCTION = 7040, // free function pointer //------------------------------------------------------------ - // GrB_get / GrB_set for GrB_GLOBAL: + // for GxB_Global_Option_get/set only: //------------------------------------------------------------ GxB_GLOBAL_NTHREADS = GxB_NTHREADS, // max number of threads to use GxB_GLOBAL_CHUNK = GxB_CHUNK, // chunk size for small problems. GxB_GLOBAL_GPU_ID = GxB_GPU_ID, // which GPU to use (DRAFT) - GxB_BURBLE = 7019, // diagnostic output + GxB_BURBLE = 7019, // diagnostic output (bool *) GxB_PRINTF = 7020, // printf function diagnostic output GxB_FLUSH = 7021, // flush function diagnostic output GxB_MEMORY_POOL = 7022, // no longer used @@ -3771,18 +4002,27 @@ typedef enum // for global options or matrix options GxB_JIT_ERROR_LOG = 7033, // CPU JIT: error log file //------------------------------------------------------------ - // GrB_get for GrB_Matrix: + // for GxB_Matrix_Option_get only: //------------------------------------------------------------ GxB_SPARSITY_STATUS = 7034, // hyper, sparse, bitmap or full (1,2,4,8) GxB_IS_HYPER = 7035, // historical; use GxB_SPARSITY_STATUS //------------------------------------------------------------ - // GrB_get/GrB_set for GrB_Matrix: + // for GxB_Matrix_Option_get/set only: //------------------------------------------------------------ GxB_SPARSITY_CONTROL = 7036, // sparsity control: 0 to 15; see below + //------------------------------------------------------------ + // memory functions (GxB_Global_Option_get only): + //------------------------------------------------------------ + + GxB_MALLOC_FUNCTION = 7037, + GxB_CALLOC_FUNCTION = 7038, + GxB_REALLOC_FUNCTION = 7039, + GxB_FREE_FUNCTION = 7040, + } GxB_Option_Field ; // for GxB_JIT_C_CONTROL: @@ -3796,7 +4036,7 @@ typedef enum } GxB_JIT_Control ; -// GxB_FORMAT is historical, but it can be by row or by column: +// GxB_FORMAT can be by row or by column: typedef enum { GxB_BY_ROW = 0, // CSR: compressed sparse row format @@ -3829,7 +4069,7 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; // the default sparsity control is any format: #define GxB_AUTO_SPARSITY GxB_ANY_SPARSITY -// GrB_set (A, scontrol, GxB_SPARSITY_CONTROL) provides hints +// GxB_Matrix_Option_set (A, GxB_SPARSITY_CONTROL, scontrol) provides hints // about which data structure GraphBLAS should use for the matrix A: // // GxB_AUTO_SPARSITY: GraphBLAS selects automatically. @@ -3852,11 +4092,11 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; // formats can be bitwise negated. For example, to allow for any format // except full, use ~GxB_FULL. // -// GrB_get (A, &sparsity, GxB_SPARSITY_STATUS) returns the +// GxB_Matrix_Option_get (A, GxB_SPARSITY_STATUS, &sparsity) returns the // current data structure currently used for the matrix A (either hypersparse, // sparse, bitmap, or full). // -// GrB_get (A, &scontrol, GxB_SPARSITY_CONTROL) returns the hint +// GxB_Matrix_Option_get (A, GxB_SPARSITY_CONTROL, &scontrol) returns the hint // for how A should be stored (hypersparse, sparse, bitmap, or full, or any // combination). @@ -3887,6 +4127,183 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; GB_GLOBAL const double GxB_ALWAYS_HYPER, GxB_NEVER_HYPER ; +GrB_Info GxB_Matrix_Option_set // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_set_INT32 // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_set_FP64 // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_get // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + ... // return value of the matrix option +) ; + +GrB_Info GxB_Matrix_Option_get_INT32 // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + int32_t *value // return value of the matrix option +) ; + +GrB_Info GxB_Matrix_Option_get_FP64 // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + double *value // return value of the matrix option +) ; + +GrB_Info GxB_Vector_Option_set // set an option in a vector +( + GrB_Vector A, // vector to modify + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Vector_Option_set_INT32 // set an option in a vector +( + GrB_Vector v, // vector to modify + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Vector_Option_set_FP64 // set an option in a vector +( + GrB_Vector v, // vector to modify + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Vector_Option_get // gets the current option of a vector +( + GrB_Vector A, // vector to query + GxB_Option_Field field, // option to query + ... // return value of the vector option +) ; + +GrB_Info GxB_Vector_Option_get_INT32 // gets the current option of a vector +( + GrB_Vector v, // vector to query + GxB_Option_Field field, // option to query + int32_t *value // return value of the vector option +) ; + +GrB_Info GxB_Vector_Option_get_FP64 // gets the current option of a vector +( + GrB_Vector v, // vector to query + GxB_Option_Field field, // option to query + double *value // return value of the vector option +) ; + +// GxB_Global_Option_set controls the global defaults used when a new matrix is +// created. GrB_init defines the following initial settings: +// +// GxB_Global_Option_set (GxB_HYPER_SWITCH, GxB_HYPER_DEFAULT) ; +// GxB_Global_Option_set (GxB_BITMAP_SWITCH, NULL) ; +// GxB_Global_Option_set (GxB_FORMAT, GxB_FORMAT_DEFAULT) ; +// +// The compile-time constants GxB_HYPER_DEFAULT and GxB_FORMAT_DEFAULT are +// equal to 0.0625 and GxB_BY_ROW, by default. That is, by default, all new +// matrices are held by row in CSR format. If a matrix has fewer than n/16 +// columns, it can be converted to hypersparse structure. If it has more than +// n/8 columns, it can be converted to a sparse structure. Modifying these +// global settings via GxB_Global_Option_set has no effect on matrices already +// created. + +GrB_Info GxB_Global_Option_set // set a global default option +( + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_INT32 // set a global default option +( + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FP64 // set a global default option +( + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FP64_ARRAY // set a global default option +( + GxB_Option_Field field, // option to change + double *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_INT64_ARRAY // set a global default option +( + GxB_Option_Field field, // option to change + int64_t *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_CHAR // set a global default option +( + GxB_Option_Field field, // option to change + const char *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FUNCTION // set a global default option +( + GxB_Option_Field field, // option to change + void *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_get // gets the current global default option +( + GxB_Option_Field field, // option to query + ... // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_INT32 // gets the current global option +( + GxB_Option_Field field, // option to query + int32_t *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_FP64 // gets the current global option +( + GxB_Option_Field field, // option to query + double *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_INT64 // gets the current global option +( + GxB_Option_Field field, // option to query + int64_t *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_CHAR // gets the current global option +( + GxB_Option_Field field, // option to query + const char **value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_FUNCTION // gets the current global option +( + GxB_Option_Field field, // option to query + void **value // return value of the global option +) ; + //============================================================================== // GxB_Context: for managing computational resources //============================================================================== @@ -3919,6 +4336,48 @@ GrB_Info GxB_Context_free // free a Context GxB_Context *Context // handle of Context to free ) ; +GrB_Info GxB_Context_set_INT32 // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Context_set_FP64 // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + double value // value to change it to +) ; + +GrB_Info GxB_Context_set // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + ... // value to change it to +) ; + +GrB_Info GxB_Context_get_INT32 // get a parameter of a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + int32_t *value // return value from the Context +) ; + +GrB_Info GxB_Context_get_FP64 // get a parameter in a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + double *value // return value from the Context +) ; + +GrB_Info GxB_Context_get // get a parameter in a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + ... // return value of the descriptor +) ; + GrB_Info GxB_Context_engage // engage a Context ( GxB_Context Context // Context to engage @@ -3930,41 +4389,152 @@ GrB_Info GxB_Context_disengage // disengage a Context ) ; //============================================================================== -// GxB_set and GxB_get: historical; use GrB_set and GrB_get instead +// GxB_set and GxB_get //============================================================================== -// historical: use GrB_set and GrB_get instead of these methods: -GrB_Info GxB_Matrix_Option_set (GrB_Matrix, GxB_Option_Field, ...) ; -GrB_Info GxB_Matrix_Option_set_INT32 (GrB_Matrix, GxB_Option_Field, int32_t) ; -GrB_Info GxB_Matrix_Option_set_FP64 (GrB_Matrix, GxB_Option_Field, double) ; -GrB_Info GxB_Matrix_Option_get (GrB_Matrix, GxB_Option_Field, ...) ; -GrB_Info GxB_Matrix_Option_get_INT32 (GrB_Matrix, GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Matrix_Option_get_FP64 (GrB_Matrix, GxB_Option_Field, double *) ; -GrB_Info GxB_Vector_Option_set (GrB_Vector, GxB_Option_Field, ...) ; -GrB_Info GxB_Vector_Option_set_INT32 (GrB_Vector, GxB_Option_Field, int32_t) ; -GrB_Info GxB_Vector_Option_set_FP64 (GrB_Vector, GxB_Option_Field, double) ; -GrB_Info GxB_Vector_Option_get (GrB_Vector, GxB_Option_Field, ...) ; -GrB_Info GxB_Vector_Option_get_INT32 (GrB_Vector, GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Vector_Option_get_FP64 (GrB_Vector, GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_set (GxB_Option_Field, ...) ; -GrB_Info GxB_Global_Option_set_INT32 (GxB_Option_Field, int32_t) ; -GrB_Info GxB_Global_Option_set_FP64 (GxB_Option_Field, double) ; -GrB_Info GxB_Global_Option_set_FP64_ARRAY (GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_set_INT64_ARRAY (GxB_Option_Field, int64_t *) ; -GrB_Info GxB_Global_Option_set_CHAR (GxB_Option_Field, const char *) ; -GrB_Info GxB_Global_Option_set_FUNCTION (GxB_Option_Field, void *) ; -GrB_Info GxB_Global_Option_get (GxB_Option_Field, ...) ; -GrB_Info GxB_Global_Option_get_INT32 (GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Global_Option_get_FP64 (GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_get_INT64 (GxB_Option_Field, int64_t *) ; -GrB_Info GxB_Global_Option_get_CHAR (GxB_Option_Field, const char **) ; -GrB_Info GxB_Global_Option_get_FUNCTION (GxB_Option_Field, void **) ; -GrB_Info GxB_Context_set_INT32 (GxB_Context, GxB_Context_Field, int32_t) ; -GrB_Info GxB_Context_set_FP64 (GxB_Context, GxB_Context_Field, double) ; -GrB_Info GxB_Context_set (GxB_Context, GxB_Context_Field, ...) ; -GrB_Info GxB_Context_get_INT32 (GxB_Context, GxB_Context_Field, int32_t *) ; -GrB_Info GxB_Context_get_FP64 (GxB_Context, GxB_Context_Field, double *) ; -GrB_Info GxB_Context_get (GxB_Context, GxB_Context_Field, ...) ; +// The simplest way to set/get a value of a GrB_Descriptor is with +// the generic GxB_set and GxB_get functions: + +// GxB_set (desc, field, value) ; +// GxB_get (desc, field, &value) ; + +// GxB_set and GxB_get are generic methods that and set or query the options in +// a GrB_Matrix, a GrB_Descriptor, or in the global options. They can be used +// with the following syntax. + +// To set/get the global options: +// +// GxB_set (GxB_HYPER_SWITCH, double h) ; +// GxB_set (GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; +// GxB_set (GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; +// GxB_get (GxB_HYPER_SWITCH, double *h) ; +// +// double b [GxB_NBITMAP_SWITCH] ; +// GxB_set (GxB_BITMAP_SWITCH, b) ; +// GxB_set (GxB_BITMAP_SWITCH, NULL) ; // set defaults +// GxB_get (GxB_BITMAP_SWITCH, b) ; +// +// GxB_set (GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_CHUNK, double chunk) ; +// GxB_get (GxB_CHUNK, double *chunk) ; +// +// GxB_set (GxB_BURBLE, bool burble) ; +// GxB_get (GxB_BURBLE, bool *burble) ; +// +// GxB_set (GxB_PRINTF, void *printf_function) ; +// GxB_get (GxB_PRINTF, void **printf_function) ; +// +// GxB_set (GxB_FLUSH, void *flush_function) ; +// GxB_get (GxB_FLUSH, void **flush_function) ; + +// GxB_set (GxB_JIT_C_COMPILER_NAME, const char *compiler) ; +// GxB_get (GxB_JIT_C_COMPILER_NAME, const char **compiler) ; +// GxB_set (GxB_JIT_C_COMPILER_FLAGS, const char *flags) ; +// GxB_get (GxB_JIT_C_COMPILER_FLAGS, const char **flags) ; +// GxB_set (GxB_JIT_C_LINKER_FLAGS, const char *flags) ; +// GxB_get (GxB_JIT_C_LINKER_FLAGS, const char **flags) ; +// GxB_set (GxB_JIT_CACHE_PATH, const char *cache_path) ; +// GxB_get (GxB_JIT_CACHE_PATH, const char **cache_path) ; +// GxB_set (GxB_JIT_C_CONTROL, int control) ; +// GxB_get (GxB_JIT_C_CONTROL, int *control) ; + +// To set/get the GxB_CONTEXT_WORLD options: These have the same effect as +// the global set/get for NTHREADS and CHUNK, listed above. +// +// GxB_set (GxB_CONTEXT_WORLD, GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_CONTEXT_WORLD, GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_CONTEXT_WORLD, GxB_CHUNK, double chunk) ; +// GxB_get (GxB_CONTEXT_WORLD, GxB_CHUNK, double *chunk) ; + +// To set/get a Context option: +// +// GxB_set (GxB_Context Context, GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_Context Context, GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_Context Context, GxB_CHUNK, double chunk) ; +// GxB_get (GxB_Context Context, GxB_CHUNK, double *chunk) ; + +// To get global options that can be queried but not modified: +// +// GxB_get (GxB_MODE, GrB_Mode *mode) ; + +// To set/get a matrix option: +// +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, double h) ; +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; +// GxB_get (GrB_Matrix A, GxB_HYPER_SWITCH, double *h) ; +// +// GxB_set (GrB_Matrix A, GxB_BITMAP_SWITCH, double b) ; +// GxB_get (GrB_Matrix A, GxB_BITMAP_SWITCH, double *b) ; +// +// GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GrB_Matrix A, GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; +// GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, scontrol) ; +// GxB_get (GrB_Matrix A, GxB_SPARSITY_CONTROL, int *scontrol) ; +// +// GxB_get (GrB_Matrix A, GxB_SPARSITY_STATUS, int *sparsity) ; + +// To set/get a vector option or status: +// +// GxB_set (GrB_Vector v, GxB_BITMAP_SWITCH, double b) ; +// GxB_get (GrB_Vector v, GxB_BITMAP_SWITCH, double *b) ; +// +// GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GrB_Vector v, GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; +// GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, scontrol) ; +// GxB_get (GrB_Vector v, GxB_SPARSITY_CONTROL, int *scontrol) ; +// +// GxB_get (GrB_Vector v, GxB_SPARSITY_STATUS, int *sparsity) ; + +// To set/get a descriptor field: +// +// GxB_set (GrB_Descriptor d, GrB_OUTP, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_OUTP, GrB_REPLACE) ; +// GxB_get (GrB_Descriptor d, GrB_OUTP, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_MASK, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_STRUCTURE) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP + GrB_STRUCTURE) ; +// GxB_get (GrB_Descriptor d, GrB_MASK, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_INP0, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_INP0, GrB_TRAN) ; +// GxB_get (GrB_Descriptor d, GrB_INP0, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_INP1, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_INP1, GrB_TRAN) ; +// GxB_get (GrB_Descriptor d, GrB_INP1, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_GUSTAVSON) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_HASH) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_SAXPY) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_DOT) ; +// GxB_get (GrB_Descriptor d, GrB_AxB_METHOD, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GxB_SORT, int sort) ; +// GxB_get (GrB_Descriptor d, GxB_SORT, int *sort) ; +// +// GxB_set (GrB_Descriptor d, GxB_COMPRESSION, int method) ; +// GxB_get (GrB_Descriptor d, GxB_COMPRESSION, int *method) ; +// +// GxB_set (GrB_Descriptor d, GxB_IMPORT, int method) ; +// GxB_get (GrB_Descriptor d, GxB_IMPORT, int *method) ; #if GxB_STDC_VERSION >= 201112L #define GxB_set(arg1,...) \ @@ -3994,518 +4564,6 @@ GrB_Info GxB_Context_get (GxB_Context, GxB_Context_Field, ...) ; (arg1, __VA_ARGS__) #endif -//============================================================================== -// GrB_set and GrB_get -//============================================================================== - -typedef struct GB_Global_opaque *GrB_Global ; -GB_GLOBAL const GrB_Global GrB_GLOBAL ; - -typedef enum -{ - - //-------------------------------------------------------------------------- - // GrB enums in the C API - //-------------------------------------------------------------------------- - - // GrB_Descriptor only: - GrB_OUTP_FIELD = 0, // descriptor for output of a method - GrB_MASK_FIELD = 1, // descriptor for the mask input of a method - GrB_INP0_FIELD = 2, // descriptor for the first input of a method - GrB_INP1_FIELD = 3, // descriptor for the second input of a method - - // all objects, including GrB_GLOBAL: - GrB_NAME = 10, // name of the object, as a string - - // GrB_GLOBAL only: - GrB_LIBRARY_VER_MAJOR = 11, // SuiteSparse:GraphBLAS version - GrB_LIBRARY_VER_MINOR = 12, - GrB_LIBRARY_VER_PATCH = 13, - GrB_API_VER_MAJOR = 14, // C API version - GrB_API_VER_MINOR = 15, - GrB_API_VER_PATCH = 16, - GrB_BLOCKING_MODE = 17, // GrB_Mode - - // GrB_GLOBAL, GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_STORAGE_ORIENTATION_HINT = 100, // GrB_Orientation - - // GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_ELTYPE_CODE = 102, // a GrB_Type_code (see below) - GrB_ELTYPE_STRING = 106, // name of the type - - // GrB_*Op, GrB_Monoid, and GrB_Semiring: - GrB_INPUT1TYPE_CODE = 103, // GrB_Type_code - GrB_INPUT2TYPE_CODE = 104, - GrB_OUTPUTTYPE_CODE = 105, - GrB_INPUT1TYPE_STRING = 107, // name of the type, as a string - GrB_INPUT2TYPE_STRING = 108, - GrB_OUTPUTTYPE_STRING = 109, - - // GrB_Type (readable only): - GrB_SIZE = 110, // size of the type - - //-------------------------------------------------------------------------- - // SuiteSparse extensions: - //-------------------------------------------------------------------------- - - // GrB_Type, GrB_UnaryOp, GrB_BinaryOp, and GrB_IndexUnaryOp: - GxB_JIT_C_NAME = 7041, // C type or function name - GxB_JIT_C_DEFINITION = 7042, // C typedef or function definition - - // GrB_Monoid and GrB_Semiring: - GxB_MONOID_IDENTITY = 7043, // monoid identity value - GxB_MONOID_TERMINAL = 7044, // monoid terminal value - GxB_MONOID_OPERATOR = 7045, // monoid binary operator - - // GrB_Semiring only: - GxB_SEMIRING_MONOID = 7046, // semiring monoid - GxB_SEMIRING_MULTIPLY = 7047, // semiring multiplicative op -} -GrB_Field ; - -typedef enum -{ - GrB_ROWMAJOR = 0, - GrB_COLMAJOR = 1, - GrB_BOTH = 2, - GrB_UNKNOWN = 3, -} -GrB_Orientation ; - -typedef enum -{ - GrB_UDT_CODE = 0, // user-defined type - GrB_BOOL_CODE = 1, // GraphBLAS: GrB_BOOL C: bool - GrB_INT8_CODE = 2, // GraphBLAS: GrB_INT8 C: int8_t - GrB_UINT8_CODE = 3, // GraphBLAS: GrB_UINT8 C: uint8_t - GrB_INT16_CODE = 4, // GraphBLAS: GrB_INT16 C: int16_t - GrB_UINT16_CODE = 5, // GraphBLAS: GrB_UINT16 C: uint16_t - GrB_INT32_CODE = 6, // GraphBLAS: GrB_INT32 C: int32_t - GrB_UINT32_CODE = 7, // GraphBLAS: GrB_UINT32 C: uint32_t - GrB_INT64_CODE = 8, // GraphBLAS: GrB_INT64 C: int64_t - GrB_UINT64_CODE = 9, // GraphBLAS: GrB_UINT64 C: uint64_t - GrB_FP32_CODE = 10, // GraphBLAS: GrB_FP32 C: float - GrB_FP64_CODE = 11, // GraphBLAS: GrB_FP64 C: double - GxB_FC32_CODE = 7070, // GraphBLAS: GxB_FC32 C: float complex - GxB_FC64_CODE = 7071, // GraphBLAS: GxB_FC64 C: double complex -} -GrB_Type_Code ; - -//------------------------------------------------------------------------------ -// GrB_get: get a scalar, string, enum, size, or void * from an object -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_Scalar (GrB_Scalar, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Scalar_get_String (GrB_Scalar, char * , GrB_Field) ; -GrB_Info GrB_Scalar_get_INT32 (GrB_Scalar, int32_t * , GrB_Field) ; -GrB_Info GrB_Scalar_get_SIZE (GrB_Scalar, size_t * , GrB_Field) ; -GrB_Info GrB_Scalar_get_VOID (GrB_Scalar, void * , GrB_Field) ; - -GrB_Info GrB_Vector_get_Scalar (GrB_Vector, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Vector_get_String (GrB_Vector, char * , GrB_Field) ; -GrB_Info GrB_Vector_get_INT32 (GrB_Vector, int32_t * , GrB_Field) ; -GrB_Info GrB_Vector_get_SIZE (GrB_Vector, size_t * , GrB_Field) ; -GrB_Info GrB_Vector_get_VOID (GrB_Vector, void * , GrB_Field) ; - -GrB_Info GrB_Matrix_get_Scalar (GrB_Matrix, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Matrix_get_String (GrB_Matrix, char * , GrB_Field) ; -GrB_Info GrB_Matrix_get_INT32 (GrB_Matrix, int32_t * , GrB_Field) ; -GrB_Info GrB_Matrix_get_SIZE (GrB_Matrix, size_t * , GrB_Field) ; -GrB_Info GrB_Matrix_get_VOID (GrB_Matrix, void * , GrB_Field) ; - -GrB_Info GxB_Serialized_get_Scalar (const void *, GrB_Scalar, GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_String (const void *, char * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_INT32 (const void *, int32_t * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_SIZE (const void *, size_t * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_VOID (const void *, void * , GrB_Field, size_t) ; - -GrB_Info GrB_UnaryOp_get_Scalar (GrB_UnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_UnaryOp_get_String (GrB_UnaryOp, char * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_INT32 (GrB_UnaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_SIZE (GrB_UnaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_VOID (GrB_UnaryOp, void * , GrB_Field) ; - -GrB_Info GrB_IndexUnaryOp_get_Scalar (GrB_IndexUnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_String (GrB_IndexUnaryOp, char * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_INT32 (GrB_IndexUnaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_SIZE (GrB_IndexUnaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_VOID (GrB_IndexUnaryOp, void * , GrB_Field) ; - -GrB_Info GrB_BinaryOp_get_Scalar (GrB_BinaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_BinaryOp_get_String (GrB_BinaryOp, char * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_INT32 (GrB_BinaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_SIZE (GrB_BinaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_VOID (GrB_BinaryOp, void * , GrB_Field) ; - -GrB_Info GrB_Monoid_get_Scalar (GrB_Monoid, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Monoid_get_String (GrB_Monoid, char * , GrB_Field) ; -GrB_Info GrB_Monoid_get_INT32 (GrB_Monoid, int32_t * , GrB_Field) ; -GrB_Info GrB_Monoid_get_SIZE (GrB_Monoid, size_t * , GrB_Field) ; -GrB_Info GrB_Monoid_get_VOID (GrB_Monoid, void * , GrB_Field) ; - -GrB_Info GrB_Semiring_get_Scalar (GrB_Semiring, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Semiring_get_String (GrB_Semiring, char * , GrB_Field) ; -GrB_Info GrB_Semiring_get_INT32 (GrB_Semiring, int32_t * , GrB_Field) ; -GrB_Info GrB_Semiring_get_SIZE (GrB_Semiring, size_t * , GrB_Field) ; -GrB_Info GrB_Semiring_get_VOID (GrB_Semiring, void * , GrB_Field) ; - -GrB_Info GrB_Descriptor_get_Scalar (GrB_Descriptor, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Descriptor_get_String (GrB_Descriptor, char * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_INT32 (GrB_Descriptor, int32_t * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_SIZE (GrB_Descriptor, size_t * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_VOID (GrB_Descriptor, void * , GrB_Field) ; - -GrB_Info GrB_Type_get_Scalar (GrB_Type, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Type_get_String (GrB_Type, char * , GrB_Field) ; -GrB_Info GrB_Type_get_INT32 (GrB_Type, int32_t * , GrB_Field) ; -GrB_Info GrB_Type_get_SIZE (GrB_Type, size_t * , GrB_Field) ; -GrB_Info GrB_Type_get_VOID (GrB_Type, void * , GrB_Field) ; - -GrB_Info GrB_Global_get_Scalar (GrB_Global, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Global_get_String (GrB_Global, char * , GrB_Field) ; -GrB_Info GrB_Global_get_INT32 (GrB_Global, int32_t * , GrB_Field) ; -GrB_Info GrB_Global_get_SIZE (GrB_Global, size_t * , GrB_Field) ; -GrB_Info GrB_Global_get_VOID (GrB_Global, void * , GrB_Field) ; - -GrB_Info GxB_Context_get_Scalar (GxB_Context, GrB_Scalar, GrB_Field) ; -GrB_Info GxB_Context_get_String (GxB_Context, char * , GrB_Field) ; -GrB_Info GxB_Context_get_INT (GxB_Context, int32_t * , GrB_Field) ; -GrB_Info GxB_Context_get_SIZE (GxB_Context, size_t * , GrB_Field) ; -GrB_Info GxB_Context_get_VOID (GxB_Context, void * , GrB_Field) ; - -// GrB_get (object, value, field): -#if GxB_STDC_VERSION >= 201112L -#define GrB_get(object,value,...) \ - _Generic \ - ( \ - (object), \ - GrB_Scalar : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Scalar_get_Scalar , \ - char * : GrB_Scalar_get_String , \ - int32_t * : GrB_Scalar_get_INT32 , \ - size_t * : GrB_Scalar_get_SIZE , \ - void * : GrB_Scalar_get_VOID \ - ) , \ - GrB_Vector : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Vector_get_Scalar , \ - char * : GrB_Vector_get_String , \ - int32_t * : GrB_Vector_get_INT32 , \ - size_t * : GrB_Vector_get_SIZE , \ - void * : GrB_Vector_get_VOID \ - ) , \ - GrB_Matrix : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Matrix_get_Scalar , \ - char * : GrB_Matrix_get_String , \ - int32_t * : GrB_Matrix_get_INT32 , \ - size_t * : GrB_Matrix_get_SIZE , \ - void * : GrB_Matrix_get_VOID \ - ) , \ - GrB_UnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_UnaryOp_get_Scalar , \ - char * : GrB_UnaryOp_get_String , \ - int32_t * : GrB_UnaryOp_get_INT32 , \ - size_t * : GrB_UnaryOp_get_SIZE , \ - void * : GrB_UnaryOp_get_VOID \ - ) , \ - GrB_IndexUnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_IndexUnaryOp_get_Scalar , \ - char * : GrB_IndexUnaryOp_get_String , \ - int32_t * : GrB_IndexUnaryOp_get_INT32 , \ - size_t * : GrB_IndexUnaryOp_get_SIZE , \ - void * : GrB_IndexUnaryOp_get_VOID \ - ) , \ - GrB_BinaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_BinaryOp_get_Scalar , \ - char * : GrB_BinaryOp_get_String , \ - int32_t * : GrB_BinaryOp_get_INT32 , \ - size_t * : GrB_BinaryOp_get_SIZE , \ - void * : GrB_BinaryOp_get_VOID \ - ) , \ - GrB_Monoid : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Monoid_get_Scalar , \ - char * : GrB_Monoid_get_String , \ - int32_t * : GrB_Monoid_get_INT32 , \ - size_t * : GrB_Monoid_get_SIZE , \ - void * : GrB_Monoid_get_VOID \ - ) , \ - GrB_Semiring : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Semiring_get_Scalar , \ - char * : GrB_Semiring_get_String , \ - int32_t * : GrB_Semiring_get_INT32 , \ - size_t * : GrB_Semiring_get_SIZE , \ - void * : GrB_Semiring_get_VOID \ - ) , \ - GrB_Type : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Type_get_Scalar , \ - char * : GrB_Type_get_String , \ - int32_t * : GrB_Type_get_INT32 , \ - size_t * : GrB_Type_get_SIZE , \ - void * : GrB_Type_get_VOID \ - ) , \ - GrB_Descriptor : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Descriptor_get_Scalar , \ - char * : GrB_Descriptor_get_String , \ - int32_t * : GrB_Descriptor_get_INT32 , \ - size_t * : GrB_Descriptor_get_SIZE , \ - void * : GrB_Descriptor_get_VOID \ - ) , \ - GrB_Global : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Global_get_Scalar , \ - char * : GrB_Global_get_String , \ - int32_t * : GrB_Global_get_INT32 , \ - size_t * : GrB_Global_get_SIZE , \ - void * : GrB_Global_get_VOID \ - ) , \ - GxB_Context : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Context_get_Scalar , \ - char * : GxB_Context_get_String , \ - int32_t * : GxB_Context_get_INT , \ - size_t * : GxB_Context_get_SIZE , \ - void * : GxB_Context_get_VOID \ - ) , \ - const void *: \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Serialized_get_Scalar , \ - char * : GxB_Serialized_get_String , \ - int32_t * : GxB_Serialized_get_INT32 , \ - size_t * : GxB_Serialized_get_SIZE , \ - void * : GxB_Serialized_get_VOID \ - ) , \ - void *: \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Serialized_get_Scalar , \ - char * : GxB_Serialized_get_String , \ - int32_t * : GxB_Serialized_get_INT32 , \ - size_t * : GxB_Serialized_get_SIZE , \ - void * : GxB_Serialized_get_VOID \ - ) \ - ) (object, value, __VA_ARGS__) - -//------------------------------------------------------------------------------ -// GrB_set: set a scalar, string, enum, size, or void * of an object -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_Scalar (GrB_Scalar, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Scalar_set_String (GrB_Scalar, char * , GrB_Field) ; -GrB_Info GrB_Scalar_set_INT32 (GrB_Scalar, int32_t , GrB_Field) ; -GrB_Info GrB_Scalar_set_VOID (GrB_Scalar, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Vector_set_Scalar (GrB_Vector, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Vector_set_String (GrB_Vector, char * , GrB_Field) ; -GrB_Info GrB_Vector_set_INT32 (GrB_Vector, int32_t , GrB_Field) ; -GrB_Info GrB_Vector_set_VOID (GrB_Vector, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Matrix_set_Scalar (GrB_Matrix, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Matrix_set_String (GrB_Matrix, char * , GrB_Field) ; -GrB_Info GrB_Matrix_set_INT32 (GrB_Matrix, int32_t , GrB_Field) ; -GrB_Info GrB_Matrix_set_VOID (GrB_Matrix, void * , GrB_Field, size_t) ; - -GrB_Info GrB_UnaryOp_set_Scalar (GrB_UnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_UnaryOp_set_String (GrB_UnaryOp, char * , GrB_Field) ; -GrB_Info GrB_UnaryOp_set_INT32 (GrB_UnaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_UnaryOp_set_VOID (GrB_UnaryOp, void * , GrB_Field, size_t) ; - -GrB_Info GrB_IndexUnaryOp_set_Scalar (GrB_IndexUnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_String (GrB_IndexUnaryOp, char * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_INT32 (GrB_IndexUnaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_VOID (GrB_IndexUnaryOp, void * , GrB_Field, - size_t) ; - -GrB_Info GrB_BinaryOp_set_Scalar (GrB_BinaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_BinaryOp_set_String (GrB_BinaryOp, char * , GrB_Field) ; -GrB_Info GrB_BinaryOp_set_INT32 (GrB_BinaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_BinaryOp_set_VOID (GrB_BinaryOp, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Monoid_set_Scalar (GrB_Monoid, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Monoid_set_String (GrB_Monoid, char * , GrB_Field) ; -GrB_Info GrB_Monoid_set_INT32 (GrB_Monoid, int32_t , GrB_Field) ; -GrB_Info GrB_Monoid_set_VOID (GrB_Monoid, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Semiring_set_Scalar (GrB_Semiring, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Semiring_set_String (GrB_Semiring, char * , GrB_Field) ; -GrB_Info GrB_Semiring_set_INT32 (GrB_Semiring, int32_t , GrB_Field) ; -GrB_Info GrB_Semiring_set_VOID (GrB_Semiring, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Descriptor_set_Scalar (GrB_Descriptor, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Descriptor_set_String (GrB_Descriptor, char * , GrB_Field) ; -GrB_Info GrB_Descriptor_set_INT32 (GrB_Descriptor, int32_t , GrB_Field) ; -GrB_Info GrB_Descriptor_set_VOID (GrB_Descriptor, void * , GrB_Field, - size_t) ; - -GrB_Info GrB_Type_set_Scalar (GrB_Type, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Type_set_String (GrB_Type, char * , GrB_Field) ; -GrB_Info GrB_Type_set_INT32 (GrB_Type, int32_t , GrB_Field) ; -GrB_Info GrB_Type_set_VOID (GrB_Type, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Global_set_Scalar (GrB_Global, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Global_set_String (GrB_Global, char * , GrB_Field) ; -GrB_Info GrB_Global_set_INT32 (GrB_Global, int32_t , GrB_Field) ; -GrB_Info GrB_Global_set_VOID (GrB_Global, void * , GrB_Field, size_t) ; - -GrB_Info GxB_Context_set_Scalar (GxB_Context, GrB_Scalar, GrB_Field) ; -GrB_Info GxB_Context_set_String (GxB_Context, char * , GrB_Field) ; -GrB_Info GxB_Context_set_INT (GxB_Context, int32_t , GrB_Field) ; -GrB_Info GxB_Context_set_VOID (GxB_Context, void * , GrB_Field, size_t) ; - -// GrB_set (object, value, field) or (object, value, field, size) for _VOID -#if GxB_STDC_VERSION >= 201112L -#define GrB_set(object,value,...) \ - _Generic \ - ( \ - (object), \ - GrB_Scalar : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Scalar_set_Scalar , \ - char * : GrB_Scalar_set_String , \ - int32_t : GrB_Scalar_set_INT32 , \ - void * : GrB_Scalar_set_VOID \ - ) , \ - GrB_Vector : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Vector_set_Scalar , \ - char * : GrB_Vector_set_String , \ - int32_t : GrB_Vector_set_INT32 , \ - void * : GrB_Vector_set_VOID \ - ) , \ - GrB_Matrix : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Matrix_set_Scalar , \ - char * : GrB_Matrix_set_String , \ - int32_t : GrB_Matrix_set_INT32 , \ - void * : GrB_Matrix_set_VOID \ - ) , \ - GrB_UnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_UnaryOp_set_Scalar , \ - char * : GrB_UnaryOp_set_String , \ - int32_t : GrB_UnaryOp_set_INT32 , \ - void * : GrB_UnaryOp_set_VOID \ - ) , \ - GrB_IndexUnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_IndexUnaryOp_set_Scalar , \ - char * : GrB_IndexUnaryOp_set_String , \ - int32_t : GrB_IndexUnaryOp_set_INT32 , \ - void * : GrB_IndexUnaryOp_set_VOID \ - ) , \ - GrB_BinaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_BinaryOp_set_Scalar , \ - char * : GrB_BinaryOp_set_String , \ - int32_t : GrB_BinaryOp_set_INT32 , \ - void * : GrB_BinaryOp_set_VOID \ - ) , \ - GrB_Monoid : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Monoid_set_Scalar , \ - char * : GrB_Monoid_set_String , \ - int32_t : GrB_Monoid_set_INT32 , \ - void * : GrB_Monoid_set_VOID \ - ) , \ - GrB_Semiring : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Semiring_set_Scalar , \ - char * : GrB_Semiring_set_String , \ - int32_t : GrB_Semiring_set_INT32 , \ - void * : GrB_Semiring_set_VOID \ - ) , \ - GrB_Type : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Type_set_Scalar , \ - char * : GrB_Type_set_String , \ - int32_t : GrB_Type_set_INT32 , \ - void * : GrB_Type_set_VOID \ - ) , \ - GrB_Descriptor : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Descriptor_set_Scalar , \ - char * : GrB_Descriptor_set_String , \ - int32_t : GrB_Descriptor_set_INT32 , \ - void * : GrB_Descriptor_set_VOID \ - ) , \ - GrB_Global : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Global_set_Scalar , \ - char * : GrB_Global_set_String , \ - int32_t : GrB_Global_set_INT32 , \ - void * : GrB_Global_set_VOID \ - ) , \ - GxB_Context : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Context_set_Scalar , \ - char * : GxB_Context_set_String , \ - int32_t : GxB_Context_set_INT , \ - void * : GxB_Context_set_VOID \ - ) \ - ) (object, value, __VA_ARGS__) -#endif - -#endif - //============================================================================== // GrB_free: free any GraphBLAS object //============================================================================== @@ -9193,11 +9251,6 @@ GrB_Info GxB_Context_fprint // print and check a GxB_Context FILE *f // file for output ) ; -// user code should not directly use GB_STR or GB_XSTR -// GB_STR: convert the content of x into a string "x" -#define GB_XSTR(x) GB_STR(x) -#define GB_STR(x) #x - #if GxB_STDC_VERSION >= 201112L #define GxB_fprint(object,pr,f) \ _Generic \ @@ -10752,7 +10805,7 @@ GrB_Info GrB_Matrix_exportHint // suggest the best export format fread (blob, sizeof (uint8_t), blob_size, f) ; fclose (f) ; char type_name [GxB_MAX_NAME_LEN] ; - GrB_get (blob, type_name, GxB_JIT_C_NAME, blob_size) ; + GxB_deserialize_type_name (type_name, blob, blob_size) ; printf ("blob type is: %s\n", type_name) ; GrB_Type user_type = NULL ; if (strncmp (type_name, "myquaternion", GxB_MAX_NAME_LEN) == 0) @@ -10907,8 +10960,23 @@ GrB_Info GxB_Vector_deserialize // deserialize blob into a GrB_Vector const GrB_Descriptor desc // to control # of threads used ) ; -// historical; use GrB_get with GxB_JIT_C_NAME instead. -GrB_Info GxB_deserialize_type_name (char *, const void *, GrB_Index) ; +// GxB_deserialize_type_name extracts the type_name of the GrB_Type of the +// GrB_Matrix or GrB_Vector held in a serialized blob. On input, type_name +// must point to a user-owned char array of size at least GxB_MAX_NAME_LEN (it +// must not point into the blob itself). On output, type_name will contain a +// null-terminated string with the corresponding C type name. If the blob +// holds a matrix of a built-in type, the name is returned as "bool" for +// GrB_BOOL, "uint8_t" for GrB_UINT8, "float complex" for GxB_FC32, etc. +// See GxB_Type_name to convert this name into a GrB_Type. +GrB_Info GxB_deserialize_type_name // return the type name of a blob +( + // output: + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + // input, not modified: + const void *blob, // the blob + GrB_Index blob_size // size of the blob +) ; //============================================================================== // GxB_Vector_sort and GxB_Matrix_sort: sort a matrix or vector diff --git a/Config/GraphBLAS.pc.in b/Config/GraphBLAS.pc.in index 9c6a50daee..05d5dfb76b 100644 --- a/Config/GraphBLAS.pc.in +++ b/Config/GraphBLAS.pc.in @@ -17,3 +17,4 @@ Requires.private: @GRAPHBLAS_STATIC_MODULES@ Libs: -L${libdir} -lgraphblas Libs.private: @GRAPHBLAS_STATIC_LIBS@ Cflags: -I${includedir} +Cflags.private: -DGB_STATIC diff --git a/Config/GraphBLASConfig.cmake.in b/Config/GraphBLASConfig.cmake.in index 3b552e8287..130fe22adc 100644 --- a/Config/GraphBLASConfig.cmake.in +++ b/Config/GraphBLASConfig.cmake.in @@ -74,6 +74,11 @@ set ( _target_shared SuiteSparse::GraphBLAS ) set ( _target_static SuiteSparse::GraphBLAS_static ) set ( _var_prefix "GRAPHBLAS" ) +if ( NOT @BUILD_SHARED_LIBS@ AND NOT TARGET ${_target_shared} ) + # make sure there is always an import target without suffix ) + add_library ( ${_target_shared} ALIAS ${_target_static} ) +endif ( ) + get_target_property ( ${_var_prefix}_INCLUDE_DIR ${_target_shared} INTERFACE_INCLUDE_DIRECTORIES ) if ( ${_var_prefix}_INCLUDE_DIR ) # First item in SuiteSparse targets contains the "main" header directory. diff --git a/Config/README.md.in b/Config/README.md.in index 90a2430e5c..3a416e0cba 100644 --- a/Config/README.md.in +++ b/Config/README.md.in @@ -128,9 +128,9 @@ PreJIT: a folder for JIT kernels that are to be integrated into the Versions v5.2.0 and earlier conform to the version 1.3.0 (Sept 25, 2019) of the GraphBLAS C API Specification. Versions v6.0.0 and later conform to the -version 2.0.0 (Nov, 2021) of the GraphBLAS C API Specification. Versions -9.0.0 and later conform to the v2.1.0 C API. This library also includes -several additional functions and features as extensions to the spec. +version 2.0.0 (Nov, 2021) of the GraphBLAS C API Specification. This library +also includes several additional functions and features as extensions to the +spec. All functions, objects, and macros with the prefix GxB are extensions to the spec. Functions, objects, and macros with prefix GB must not be accessed @@ -225,9 +225,9 @@ Thanks for packaging SuiteSparse! Here are some suggestions: To cite this package, please use the following: - T. Davis, Algorithm 10xx: SuiteSparse:GraphBLAS: parallel graph - algorithms in the language of sparse linear algebra, ACM Trans on - Mathematical Software, to appear, 2023. + T. A. Davis. Algorithm 1037: SuiteSparse:GraphBLAS: Parallel Graph + Algorithms in the Language of Sparse Linear Algebra. ACM Trans. Math. + Softw. 49, 3, Article 28 (September 2023), 30 pages. https://doi.org/10.1145/3577195 T. Davis, Algorithm 1000: SuiteSparse:GraphBLAS: graph algorithms in diff --git a/Demo/Output/gauss_demo.out b/Demo/Output/gauss_demo.out index df86ba0b8b..af441d5155 100644 --- a/Demo/Output/gauss_demo.out +++ b/Demo/Output/gauss_demo.out @@ -2,36 +2,89 @@ Gauss demo. Note that all transposes are array transposes, not matrix (conjugate) transposes. - GraphBLAS Context: GxB_CONTEXT_WORLD - Context.nthreads: 8 + GraphBLAS Context: World + Context.nthreads: 40 Context.chunk: 65536 JIT configuration: ------------------ -JIT C compiler: [/usr/bin/gcc] +JIT C compiler: [/usr/bin/cc] JIT C flags: [ -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC ] JIT C link flags: [ -shared ] -JIT C libraries: [ -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so] +JIT C libraries: [ -lm -ldl -lgomp -lpthread] JIT C preface: [] -JIT cache: [/home/davis/.SuiteSparse/GraphBLAS/8.0.0] +JIT cache: [/home/faculty/d/davis/.SuiteSparse/GrB8.3.0] +JIT C control: [4] +JIT C control: [4] reset ------------------------------------- JIT C preface (revised): // kernel generated by gauss_demo.c #include - [ GxB_Type_new (jit: loaded but must recompile) (jit: compile and load) (jit: /usr/bin/gcc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/davis/.SuiteSparse/GraphBLAS/8.0.0/src -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.o -c /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.c ; /usr/bin/gcc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/lib/b4/libGB_jit__user_type__0__gauss.so /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.o -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so ) - 0.0696 sec ] + [ GxB_Type_new (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +[ 50%] Building C object CMakeFiles/GB_jit__user_type__0__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b4/GB_jit__user_type__0__gauss.c.o +[100%] Linking C shared library libGB_jit__user_type__0__gauss.so +[100%] Built target GB_jit__user_type__0__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/b4/libGB_jit__user_type__0__gauss.so + + 0.583 sec ] GraphBLAS type: BadGauss user-defined: [gauss] size: 4 typedef struct { int32_t real ; } gauss ; - [ GxB_Type_new (jit: type changed) (jit: loaded but must recompile) (jit: compile and load) (jit: /usr/bin/gcc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/davis/.SuiteSparse/GraphBLAS/8.0.0/src -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.o -c /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.c ; /usr/bin/gcc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/lib/b4/libGB_jit__user_type__0__gauss.so /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/b4/GB_jit__user_type__0__gauss.o -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so ) - 0.0515 sec ] + [ GxB_Type_new (jit: type changed) (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +[ 50%] Building C object CMakeFiles/GB_jit__user_type__0__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b4/GB_jit__user_type__0__gauss.c.o +[100%] Linking C shared library libGB_jit__user_type__0__gauss.so +[100%] Built target GB_jit__user_type__0__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/b4/libGB_jit__user_type__0__gauss.so + + 0.6 sec ] GraphBLAS type: Gauss user-defined: [gauss] size: 8 typedef struct { int32_t real ; int32_t imag ; } gauss ; - [ GxB_Type_new (jit: type ok) - 5.29e-06 sec ] + [ GxB_Type_new + 7.53e-06 sec ] GraphBLAS type: Gauss user-defined: [gauss] size: 8 typedef struct { int32_t real ; int32_t imag ; } gauss ; - [ GxB_BinaryOp_new (jit: loaded but must recompile) (jit: compile and load) (jit: /usr/bin/gcc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/davis/.SuiteSparse/GraphBLAS/8.0.0/src -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.o -c /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.c ; /usr/bin/gcc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/lib/1b/libGB_jit__user_op__0__addgauss.so /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.o -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so ) - 0.0564 sec ] + [ GxB_BinaryOp_new (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +[ 50%] Building C object CMakeFiles/GB_jit__user_op__0__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/1b/GB_jit__user_op__0__addgauss.c.o +[100%] Linking C shared library libGB_jit__user_op__0__addgauss.so +[100%] Built target GB_jit__user_op__0__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/1b/libGB_jit__user_op__0__addgauss.so + + 0.608 sec ] GraphBLAS BinaryOp: BadAddGauss (user-defined): z=addgauss(x,y) GraphBLAS type: ztype user-defined: [gauss] size: 8 @@ -45,8 +98,25 @@ void addgauss (gauss *z, const gauss *x, const gauss *y) z->real = x->real + y->real ; z->imag = -911 ; } - [ GxB_BinaryOp_new (jit: op changed) (jit: loaded but must recompile) (jit: compile and load) (jit: /usr/bin/gcc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/davis/.SuiteSparse/GraphBLAS/8.0.0/src -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.o -c /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.c ; /usr/bin/gcc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/davis/.SuiteSparse/GraphBLAS/8.0.0/lib/1b/libGB_jit__user_op__0__addgauss.so /home/davis/.SuiteSparse/GraphBLAS/8.0.0/c/1b/GB_jit__user_op__0__addgauss.o -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so ) - 0.063 sec ] + [ GxB_BinaryOp_new (jit: op changed) (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +[ 50%] Building C object CMakeFiles/GB_jit__user_op__0__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/1b/GB_jit__user_op__0__addgauss.c.o +[100%] Linking C shared library libGB_jit__user_op__0__addgauss.so +[100%] Built target GB_jit__user_op__0__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/1b/libGB_jit__user_op__0__addgauss.so + + 0.596 sec ] GraphBLAS BinaryOp: AddGauss (user-defined): z=addgauss(x,y) GraphBLAS type: ztype user-defined: [gauss] size: 8 @@ -60,8 +130,8 @@ void addgauss (gauss *z, const gauss *x, const gauss *y) z->real = x->real + y->real ; z->imag = x->imag + y->imag ; } - [ GxB_BinaryOp_new (jit: op ok) - 3.27e-06 sec ] + [ GxB_BinaryOp_new + 6.59e-06 sec ] GraphBLAS BinaryOp: AddGauss (user-defined): z=addgauss(x,y) GraphBLAS type: ztype user-defined: [gauss] size: 8 @@ -146,12 +216,12 @@ row 1: ( 2, 2) ( 2, 1) ( 2, 0) ( 2, -1) row 2: ( 3, 2) ( 3, 1) ( 3, 0) ( 3, -1) row 3: ( 4, 2) ( 4, 1) ( 4, 0) ( 4, -1) - [ GrB_reduce (A bitmap) (jit: load) - 5.75e-05 sec ] + [ GrB_reduce (A bitmap) work:16 gpus:0 (jit: load) + 0.00023 sec ] sum (A) = (39,6) [ GrB_mxm C=A*B, saxpy (B = B*B, anz: 15 bnz: 15) (bitmap saxpy) (jit: load) (bitmap to full) - 9.17e-05 sec ] + 0.000294 sec ] =============== Gauss A = A^2 matrix: @@ -162,8 +232,8 @@ row 1: ( 18, 10) ( 18, 8) ( 20, 0) ( 22, -8) row 2: ( 27, 16) ( 28, 12) ( 30, 0) ( 32, -12) row 3: ( 36, 22) ( 38, 16) ( 40, 0) ( 42, -16) - [ GrB_reduce (A full) (jit: load) - 3.59e-05 sec ] + [ GrB_reduce (A full) work:16 gpus:0 (jit: load) + 0.000164 sec ] sum (A^2) = (387,46) @@ -176,11 +246,12 @@ row 2: . . . . row 3: . . . . [ GxB_set (full to sparse) - 4.51e-06 sec ] + 2.09e-05 sec ] [ GxB_set (hyper to sparse) - 3.22e-06 sec ] - [ GrB_mxm (iso mask: struct) (iso wait:M 0 zombies, 4 pending) (iso build) (hyper to sparse) C=A'*B, masked_dot_product (dot3) (S{S} = Sf'*Sf) nthreads 1 ntasks 1 (jit: load) (sparse to bitmap) - 7.75e-05 sec ] + 1.1e-05 sec ] + [ GrB_mxm (iso mask: struct) (iso wait:M 0 zombies, 4 pending) (iso build) (hyper to sparse) C=A'*B, masked_dot_product (dot3) (S{S} = Sf'*Sf) work:16 GPUs:0 Not using cuda path. +nthreads 1 ntasks 1 (jit: load) (sparse to bitmap) (jit: load) + 0.000475 sec ] =============== Gauss C = diag(AA') matrix: @@ -192,11 +263,11 @@ row 2: . . (2893, 768) . row 3: . . . (5108,1456) [ GxB_set - 1.69e-07 sec ] + 7.67e-07 sec ] [ GxB_set (hyper to sparse) - 1.62e-06 sec ] + 8.94e-06 sec ] [ GrB_select (A dense) - 1.69e-05 sec ] + 3.06e-05 sec ] Gauss D matrix @@ -207,7 +278,7 @@ row 2: . . ( 30, 0) . row 3: . . . ( 42, -16) [ GrB_mxm C=A*B, colscale (Sf=Sf*S) (jit: load) - 4.63e-05 sec ] + 0.000186 sec ] =============== Gauss C = D*A matrix: @@ -219,9 +290,9 @@ row 2: ( 810, 480) ( 840, 360) ( 900, 0) ( 960,-360) row 3: (1864, 348) (1852, 64) (1680,-640) (1508,-1344) [ GxB_set - 1.23e-07 sec ] + 4.31e-07 sec ] [ GxB_set (sparse to bitmap) - 2.44e-06 sec ] + 1.29e-05 sec ] Gauss D matrix (bitmap) @@ -242,7 +313,7 @@ row 3: . . . ( 42, -16) (3,3) [user-defined value] [ GxB_set (bitmap to sparse) - 4.22e-06 sec ] + 1.43e-05 sec ] Gauss D matrix (back to sparse) @@ -263,7 +334,7 @@ row 3: . . . ( 42, -16) (3,3) [user-defined value] [ GrB_mxm C=A*B, rowscale (Sf=S*Sf) (jit: load) - 4.5e-05 sec ] + 0.000181 sec ] =============== Gauss C = A*D matrix: @@ -275,7 +346,7 @@ row 2: ( 179, 252) ( 408, 440) ( 900, 0) (1152,-1016) row 3: ( 236, 342) ( 556, 592) (1200, 0) (1508,-1344) [ GrB_assign (C iso assign) (pending: 0) Method 21: (C full) = scalar - 1.45e-05 sec ] + 4.1e-05 sec ] =============== Gauss C = (1,-2) matrix: @@ -297,7 +368,7 @@ row 2: ( 27, 16) ( 28, 12) ( 30, 0) ( 32, -12) row 3: ( 36, 22) ( 38, 16) ( 40, 0) ( 42, -16) [ GrB_mxm C=A'*B, dot_product (dot4: F += Sf'*Sf) (jit: load) (C in place) - 4.39e-05 sec ] + 0.000185 sec ] =============== Gauss C += A*A' matrix: @@ -309,7 +380,7 @@ row 2: ( 918, 58) (1943, 476) (2894, 766) (3845,1056) row 3: (1221, 88) (2581, 658) (3845,1056) (5109,1454) [ GrB_assign (C iso assign) (pending: 0) Method 21: (C full) = scalar - 4.84e-06 sec ] + 2.16e-05 sec ] =============== Gauss B = (1,-2) matrix: @@ -321,7 +392,7 @@ row 2: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) row 3: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) [ GrB_mxm C=A*B, saxpy (saxpy4: F += Sf*F) (coarse, threads: 1) (jit: load) (C in place) - 5.1e-05 sec ] + 0.000194 sec ] =============== Gauss C += B*A: @@ -333,7 +404,7 @@ row 2: (1112, -70) (2110, 327) (2989, 566) (3868, 805) row 3: (1415, -40) (2748, 509) (3940, 856) (5132,1203) [ GrB_mxm C=A*B, saxpy (saxpy5: F += F*Sf) (jit: load) (C in place) - 4.18e-05 sec ] + 0.000177 sec ] =============== Gauss C += A*B: @@ -345,7 +416,7 @@ row 2: (1261,-288) (2259, 109) (3138, 348) (4017, 587) row 3: (1615,-330) (2948, 219) (4140, 566) (5332, 913) [ GrB_apply (shallow-op) (jit: load) - 4.27e-05 sec ] + 0.000171 sec ] =============== Gauss C = (1,-2) + A: @@ -357,7 +428,7 @@ row 2: ( 28, 14) ( 29, 10) ( 31, -2) ( 33, -14) row 3: ( 37, 20) ( 39, 14) ( 41, -2) ( 43, -18) [ GrB_apply (shallow-op) (jit: load) - 3.71e-05 sec ] + 0.000152 sec ] =============== Gauss C = A*(1,-2): @@ -369,7 +440,7 @@ row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) [ GrB_apply (transpose-op) (transpose) (1-thread bucket transpose) (jit: load) (full to sparse) - 5.88e-05 sec ] + 0.00019 sec ] =============== Gauss C = A'*(1,-2): @@ -381,7 +452,7 @@ row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) [ GrB_apply (transpose-op) (transpose) (1-thread bucket transpose) (jit: load) (full to sparse) - 3.92e-05 sec ] + 0.000176 sec ] =============== Gauss C = (1,-2)*A': @@ -402,7 +473,7 @@ void realgauss (int32_t *z, const gauss *x) (*z) = x->real ; } [ GrB_apply (shallow-op) (jit: load) - 3.85e-05 sec ] + 0.00016 sec ] 4x4 GraphBLAS int32_t matrix, full by row R, 16 entries, memory: 280 bytes @@ -435,7 +506,7 @@ row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) [ GrB_apply (transpose-op) (transpose) (bitmap/full transpose) (jit: load) - 3.78e-05 sec ] + 0.000193 sec ] 4x4 GraphBLAS int32_t matrix, full by row R, 16 entries, memory: 280 bytes @@ -458,6 +529,7 @@ row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) (3,3) 10 + =============== C size: 4-by-4 @@ -467,7 +539,7 @@ row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) [ GrB_apply (shallow-op) (jit: load) - 3.69e-05 sec ] + 0.00017 sec ] R = ijgauss (C) @@ -491,8 +563,8 @@ R = ijgauss (C) (3,2) 10 (3,3) 11 - [ GrB_Matrix_extractTuples (A full) - 1.09e-05 sec ] + [ GrB_Matrix_extractTuples (A full) (jit: load) + 0.000162 sec ] R (0,0) = 18 R (0,1) = 38 R (0,2) = 58 @@ -520,7 +592,7 @@ row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) [ GrB_transpose (transpose) (bitmap/full transpose) (jit: load) - 3.99e-05 sec ] + 0.000164 sec ] =============== C = C' @@ -532,9 +604,9 @@ row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) [ GxB_set (in-place transpose) (transpose) - 5.67e-06 sec ] - [ GxB_Matrix_concat (sparse concat) (transpose) (bitmap/full transpose) (jit: run) (transpose) (transpose) (1-thread bucket transpose) (jit: load) (transpose) (1-thread bucket transpose) (jit: run) (transpose) (transpose) (bitmap/full transpose) (jit: run) - 6.61e-05 sec ] + 1.71e-05 sec ] + [ GxB_Matrix_concat (sparse concat) (transpose) (bitmap/full transpose) (transpose) (transpose) (1-thread bucket transpose) (jit: load) (transpose) (1-thread bucket transpose) (transpose) (transpose) (bitmap/full transpose) (jit: load) (jit: load) (jit: load) + 0.000687 sec ] =============== Z = [C D ; E E ; D C] @@ -841,8 +913,8 @@ row 255: . . . ( 42, -16) ( 80, -50) ( 70, -60 (254,7) [user-defined value] (255,7) [user-defined value] - [ GxB_Matrix_split (sparse/hyper split) - 1.29e-05 sec ] + [ GxB_Matrix_split (sparse/hyper split) (jit: load) + 0.000201 sec ] =============== C Tile from Z: @@ -1440,9 +1512,9 @@ row 127: ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) (127,4) [user-defined value] [ GxB_set (in-place transpose) (transpose) - 2.97e-06 sec ] - [ GxB_Matrix_concat (bitmap concat) (transpose) (bitmap/full transpose) (jit: run) (transpose) (transpose) (1-thread bucket transpose) (jit: run) (transpose) (1-thread bucket transpose) (jit: run) (transpose) (transpose) (bitmap/full transpose) (jit: run) - 2.75e-05 sec ] + 7.88e-06 sec ] + [ GxB_Matrix_concat (bitmap concat) (transpose) (bitmap/full transpose) (jit: load) (transpose) (jit: load) (transpose) (1-thread bucket transpose) (jit: load) (transpose) (1-thread bucket transpose) (transpose) (transpose) (bitmap/full transpose) + 0.000361 sec ] =============== Z = [C D ; E E ; D C] @@ -1509,8 +1581,8 @@ row 15: . . . ( 42, -16) ( 80, -50) ( 70, -60) (14,7) [user-defined value] (15,7) [user-defined value] - [ GxB_Matrix_split (bitmap split) - 6.21e-06 sec ] + [ GxB_Matrix_split (bitmap split) (jit: load) + 0.000117 sec ] =============== C Tile from Z: @@ -1628,7 +1700,7 @@ row 7: ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) (7,4) [user-defined value] [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: load) - 4.73e-05 sec ] + 0.000118 sec ] =============== C = C + ciso @@ -1640,9 +1712,9 @@ row 2: ( 60, -40) ( 53, -46) ( 31, -62) ( 9, -78) row 3: ( 81, -52) ( 71, -62) ( 41, -82) ( 11,-102) [ GxB_set - 9.13e-08 sec ] - [ GxB_Matrix_split (full split) - 4.33e-06 sec ] + 2.73e-07 sec ] + [ GxB_Matrix_split (full split) (jit: load) + 0.000108 sec ] =============== S Tile from C: @@ -1726,8 +1798,8 @@ row 1: ( 39, -28) ( 35, -30) ( 21, -42) ( 7, -54) row 2: ( 60, -40) ( 53, -46) ( 31, -62) ( 9, -78) row 3: ( 81, -52) ( 71, -62) ( 41, -82) ( 11,-102) - [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: paused) (generic C(:,:)+=x assign) - 6.87e-06 sec ] + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 1.47e-05 sec ] =============== C = C + ciso (JIT paused): @@ -1748,8 +1820,8 @@ row 1: ( 40, -30) ( 36, -32) ( 22, -44) ( 8, -56) row 2: ( 61, -42) ( 54, -48) ( 32, -64) ( 10, -80) row 3: ( 82, -54) ( 72, -64) ( 42, -84) ( 12,-104) - [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: paused) (generic C(:,:)+=x assign) - 4.99e-06 sec ] + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 1e-05 sec ] =============== C = C * ciso (JIT paused): @@ -1761,8 +1833,8 @@ row 2: ( -23,-164) ( -42,-156) ( -96,-128) (-150,-100) row 3: ( -26,-218) ( -56,-208) (-126,-168) (-196,-128) JIT: run (may not load or compile) - [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: run) - 4.02e-06 sec ] + [ GrB_assign (pending: 0) Method 22: (C full) += scalar + 7.75e-06 sec ] =============== C = C + ciso (JIT run): @@ -1773,8 +1845,8 @@ row 1: ( -19,-112) ( -27,-106) ( -65, -90) (-103, -74) row 2: ( -22,-166) ( -41,-158) ( -95,-130) (-149,-102) row 3: ( -25,-220) ( -55,-210) (-125,-170) (-195,-130) - [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: not loaded) (generic C(:,:)+=x assign) - 4.72e-06 sec ] + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 1e-05 sec ] =============== C = C * ciso (JIT not loaded): @@ -1787,7 +1859,7 @@ row 3: (-465,-170) (-475,-100) (-465, 80) (-455, 260) JIT: on [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: load) - 4.01e-05 sec ] + 0.000112 sec ] =============== C = C * ciso (full JIT): diff --git a/Demo/Output/gauss_demo1.out b/Demo/Output/gauss_demo1.out new file mode 100644 index 0000000000..90a7cb21a3 --- /dev/null +++ b/Demo/Output/gauss_demo1.out @@ -0,0 +1,2399 @@ +Gauss demo. Note that all transposes are array transposes, +not matrix (conjugate) transposes. + + + GraphBLAS Context: World + Context.nthreads: 40 + Context.chunk: 65536 +JIT configuration: ------------------ +JIT C compiler: [/usr/bin/cc] +JIT C flags: [ -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC ] +JIT C link flags: [ -shared ] +JIT C libraries: [ -lm -ldl -lgomp -lpthread] +JIT C preface: [] +JIT cache: [/home/faculty/d/davis/.SuiteSparse/GrB8.3.0] +JIT C control: [4] +JIT C control: [4] reset +------------------------------------- + +JIT C preface (revised): +// kernel generated by gauss_demo.c +#include + + [ GxB_Type_new (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +[ 50%] Building C object CMakeFiles/GB_jit__user_type__0__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b4/GB_jit__user_type__0__gauss.c.o +[100%] Linking C shared library libGB_jit__user_type__0__gauss.so +[100%] Built target GB_jit__user_type__0__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/b4/libGB_jit__user_type__0__gauss.so + + 0.598 sec ] + GraphBLAS type: BadGauss user-defined: [gauss] size: 4 + typedef struct { int32_t real ; } gauss ; + [ GxB_Type_new (jit: type changed) (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +[ 50%] Building C object CMakeFiles/GB_jit__user_type__0__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b4/GB_jit__user_type__0__gauss.c.o +[100%] Linking C shared library libGB_jit__user_type__0__gauss.so +[100%] Built target GB_jit__user_type__0__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ce2be202506bf1b4' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/b4/libGB_jit__user_type__0__gauss.so + + 0.595 sec ] + GraphBLAS type: Gauss user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + [ GxB_Type_new + 1.03e-05 sec ] + GraphBLAS type: Gauss user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + [ GxB_BinaryOp_new (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +[ 50%] Building C object CMakeFiles/GB_jit__user_op__0__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/1b/GB_jit__user_op__0__addgauss.c.o +[100%] Linking C shared library libGB_jit__user_op__0__addgauss.so +[100%] Built target GB_jit__user_op__0__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/1b/libGB_jit__user_op__0__addgauss.so + + 0.608 sec ] + + GraphBLAS BinaryOp: BadAddGauss (user-defined): z=addgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void addgauss (gauss *z, const gauss *x, const gauss *y) +{ + z->real = x->real + y->real ; + z->imag = -911 ; +} + [ GxB_BinaryOp_new (jit: op changed) (jit: loaded but must recompile) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +[ 50%] Building C object CMakeFiles/GB_jit__user_op__0__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/1b/GB_jit__user_op__0__addgauss.c.o +[100%] Linking C shared library libGB_jit__user_op__0__addgauss.so +[100%] Built target GB_jit__user_op__0__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/af7c00a52397011b' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/1b/libGB_jit__user_op__0__addgauss.so + + 0.624 sec ] + + GraphBLAS BinaryOp: AddGauss (user-defined): z=addgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void addgauss (gauss *z, const gauss *x, const gauss *y) +{ + z->real = x->real + y->real ; + z->imag = x->imag + y->imag ; +} + [ GxB_BinaryOp_new + 7.3e-06 sec ] + + GraphBLAS BinaryOp: AddGauss (user-defined): z=addgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void addgauss (gauss *z, const gauss *x, const gauss *y) +{ + z->real = x->real + y->real ; + z->imag = x->imag + y->imag ; +} + + GraphBLAS Monoid: AddMonoid (user-defined): + GraphBLAS BinaryOp: monoid->op (user-defined): z=addgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void addgauss (gauss *z, const gauss *x, const gauss *y) +{ + z->real = x->real + y->real ; + z->imag = x->imag + y->imag ; +} + identity: [ [user-defined value] ] + + GraphBLAS BinaryOp: MultGauss (user-defined): z=multgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void multgauss (gauss *z, const gauss *x, const gauss *y) +{ + int32_t zreal = x->real * y->real - x->imag * y->imag ; + int32_t zimag = x->real * y->imag + x->imag * y->real ; + z->real = zreal ; + z->imag = zimag ; +} + + GraphBLAS Semiring: GaussSemiring (user-defined): (addgauss_multgauss) + GraphBLAS Monoid: semiring->add (user-defined): + GraphBLAS BinaryOp: monoid->op (user-defined): z=addgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void addgauss (gauss *z, const gauss *x, const gauss *y) +{ + z->real = x->real + y->real ; + z->imag = x->imag + y->imag ; +} + identity: [ [user-defined value] ] + + GraphBLAS BinaryOp: semiring->multiply (user-defined): z=multgauss(x,y) + GraphBLAS type: ztype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; + GraphBLAS type: ytype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void multgauss (gauss *z, const gauss *x, const gauss *y) +{ + int32_t zreal = x->real * y->real - x->imag * y->imag ; + int32_t zimag = x->real * y->imag + x->imag * y->real ; + z->real = zreal ; + z->imag = zimag ; +} +(iso wait:C (setElement:to non-iso) 0 zombies, 1 pending) + +=============== Gauss A matrix: + +size: 4-by-4 +row 0: . ( 1, 1) ( 1, 0) ( 1, -1) +row 1: ( 2, 2) ( 2, 1) ( 2, 0) ( 2, -1) +row 2: ( 3, 2) ( 3, 1) ( 3, 0) ( 3, -1) +row 3: ( 4, 2) ( 4, 1) ( 4, 0) ( 4, -1) + + [ GrB_reduce (A bitmap) work:16 gpus:0 (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/30e2328e57edb8cc +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/30e2328e57edb8cc' +[ 50%] Building C object CMakeFiles/GB_jit__reduce__83feee2__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/cc/GB_jit__reduce__83feee2__addgauss.c.o +[100%] Linking C shared library libGB_jit__reduce__83feee2__addgauss.so +[100%] Built target GB_jit__reduce__83feee2__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/30e2328e57edb8cc' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/cc/libGB_jit__reduce__83feee2__addgauss.so + + 0.667 sec ] + +sum (A) = (39,6) + [ GrB_mxm C=A*B, saxpy (B = B*B, anz: 15 bnz: 15) (bitmap saxpy) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e335728df7d8fc68 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e335728df7d8fc68' +[ 50%] Building C object CMakeFiles/GB_jit__AxB_saxbit__03fe100eee0eee8a__addgauss_multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/68/GB_jit__AxB_saxbit__03fe100eee0eee8a__addgauss_multgauss.c.o +[100%] Linking C shared library libGB_jit__AxB_saxbit__03fe100eee0eee8a__addgauss_multgauss.so +[100%] Built target GB_jit__AxB_saxbit__03fe100eee0eee8a__addgauss_multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e335728df7d8fc68' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/68/libGB_jit__AxB_saxbit__03fe100eee0eee8a__addgauss_multgauss.so +(bitmap to full) + 0.774 sec ] + + +=============== Gauss A = A^2 matrix: + +size: 4-by-4 +row 0: ( 9, 4) ( 9, 1) ( 9, -2) ( 9, -5) +row 1: ( 18, 10) ( 18, 8) ( 20, 0) ( 22, -8) +row 2: ( 27, 16) ( 28, 12) ( 30, 0) ( 32, -12) +row 3: ( 36, 22) ( 38, 16) ( 40, 0) ( 42, -16) + + [ GrB_reduce (A full) work:16 gpus:0 (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/216cc7a07453b1ee +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/216cc7a07453b1ee' +[ 50%] Building C object CMakeFiles/GB_jit__reduce__83feee3__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/ee/GB_jit__reduce__83feee3__addgauss.c.o +[100%] Linking C shared library libGB_jit__reduce__83feee3__addgauss.so +[100%] Built target GB_jit__reduce__83feee3__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/216cc7a07453b1ee' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/ee/libGB_jit__reduce__83feee3__addgauss.so + + 0.708 sec ] + +sum (A^2) = (387,46) + + +Gauss C empty matrix +size: 4-by-4 +row 0: . . . . +row 1: . . . . +row 2: . . . . +row 3: . . . . + + [ GxB_set (full to sparse) + 1.35e-05 sec ] + [ GxB_set (hyper to sparse) + 8.36e-06 sec ] + [ GrB_mxm (iso mask: struct) (iso wait:M 0 zombies, 4 pending) (iso build) (hyper to sparse) C=A'*B, masked_dot_product (dot3) (S{S} = Sf'*Sf) work:16 GPUs:0 Not using cuda path. +nthreads 1 ntasks 1 (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/67a80190c429079f +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/67a80190c429079f' +[ 50%] Building C object CMakeFiles/GB_jit__AxB_dot3__03fe100eee2eee55__addgauss_multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/9f/GB_jit__AxB_dot3__03fe100eee2eee55__addgauss_multgauss.c.o +[100%] Linking C shared library libGB_jit__AxB_dot3__03fe100eee2eee55__addgauss_multgauss.so +[100%] Built target GB_jit__AxB_dot3__03fe100eee2eee55__addgauss_multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/67a80190c429079f' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/9f/libGB_jit__AxB_dot3__03fe100eee2eee55__addgauss_multgauss.so +(sparse to bitmap) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/be2424ff0149b586 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/be2424ff0149b586' +[ 50%] Building C object CMakeFiles/GB_jit__convert_s2b__0002ee0eed__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/86/GB_jit__convert_s2b__0002ee0eed__gauss.c.o +[100%] Linking C shared library libGB_jit__convert_s2b__0002ee0eed__gauss.so +[100%] Built target GB_jit__convert_s2b__0002ee0eed__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/be2424ff0149b586' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/86/libGB_jit__convert_s2b__0002ee0eed__gauss.so + + 1.32 sec ] + + +=============== Gauss C = diag(AA') matrix: + +size: 4-by-4 +row 0: ( 278, -36) . . . +row 1: . (1304, 296) . . +row 2: . . (2893, 768) . +row 3: . . . (5108,1456) + + [ GxB_set + 1.61e-06 sec ] + [ GxB_set (hyper to sparse) + 9.37e-06 sec ] + [ GrB_select (A dense) + 3.26e-05 sec ] + + +Gauss D matrix +size: 4-by-4 +row 0: ( 9, 4) . . . +row 1: . ( 18, 8) . . +row 2: . . ( 30, 0) . +row 3: . . . ( 42, -16) + + [ GrB_mxm C=A*B, colscale (Sf=Sf*S) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/dd2129670608a0a3 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/dd2129670608a0a3' +[ 50%] Building C object CMakeFiles/GB_jit__colscale__0100eee0eee45__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/a3/GB_jit__colscale__0100eee0eee45__multgauss.c.o +[100%] Linking C shared library libGB_jit__colscale__0100eee0eee45__multgauss.so +[100%] Built target GB_jit__colscale__0100eee0eee45__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/dd2129670608a0a3' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/a3/libGB_jit__colscale__0100eee0eee45__multgauss.so + + 0.637 sec ] + + +=============== Gauss C = D*A matrix: + +size: 4-by-4 +row 0: ( 65, 72) ( 77, 45) ( 89, 18) ( 101, -9) +row 1: ( 244, 324) ( 260, 288) ( 360, 160) ( 460, 32) +row 2: ( 810, 480) ( 840, 360) ( 900, 0) ( 960,-360) +row 3: (1864, 348) (1852, 64) (1680,-640) (1508,-1344) + + [ GxB_set + 9.27e-07 sec ] + [ GxB_set (sparse to bitmap) + 1.75e-05 sec ] + + +Gauss D matrix (bitmap) +size: 4-by-4 +row 0: ( 9, 4) . . . +row 1: . ( 18, 8) . . +row 2: . . ( 30, 0) . +row 3: . . . ( 42, -16) + + + 4x4 GraphBLAS gauss matrix, bitmap by row + sparsity control: bitmap only + D, 4 entries, memory: 360 bytes + + (0,0) [user-defined value] + (1,1) [user-defined value] + (2,2) [user-defined value] + (3,3) [user-defined value] + + [ GxB_set (bitmap to sparse) + 2.67e-05 sec ] + + +Gauss D matrix (back to sparse) +size: 4-by-4 +row 0: ( 9, 4) . . . +row 1: . ( 18, 8) . . +row 2: . . ( 30, 0) . +row 3: . . . ( 42, -16) + + + 4x4 GraphBLAS gauss matrix, sparse by row + sparsity control: sparse only + D, 4 entries, memory: 320 bytes + + (0,0) [user-defined value] + (1,1) [user-defined value] + (2,2) [user-defined value] + (3,3) [user-defined value] + + [ GrB_mxm C=A*B, rowscale (Sf=S*Sf) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/96b50768cfd669a8 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/96b50768cfd669a8' +[ 50%] Building C object CMakeFiles/GB_jit__rowscale__0100eee0eee45__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/a8/GB_jit__rowscale__0100eee0eee45__multgauss.c.o +[100%] Linking C shared library libGB_jit__rowscale__0100eee0eee45__multgauss.so +[100%] Built target GB_jit__rowscale__0100eee0eee45__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/96b50768cfd669a8' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/a8/libGB_jit__rowscale__0100eee0eee45__multgauss.so + + 0.634 sec ] + + +=============== Gauss C = A*D matrix: + +size: 4-by-4 +row 0: ( 65, 72) ( 154, 90) ( 270, -60) ( 298,-354) +row 1: ( 122, 162) ( 260, 288) ( 600, 0) ( 796,-688) +row 2: ( 179, 252) ( 408, 440) ( 900, 0) (1152,-1016) +row 3: ( 236, 342) ( 556, 592) (1200, 0) (1508,-1344) + + [ GrB_assign (C iso assign) (pending: 0) Method 21: (C full) = scalar + 3.38e-05 sec ] + + +=============== Gauss C = (1,-2) matrix: + +size: 4-by-4 +row 0: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 1: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 2: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 3: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) + + + +=============== Gauss A matrix: + +size: 4-by-4 +row 0: ( 9, 4) ( 9, 1) ( 9, -2) ( 9, -5) +row 1: ( 18, 10) ( 18, 8) ( 20, 0) ( 22, -8) +row 2: ( 27, 16) ( 28, 12) ( 30, 0) ( 32, -12) +row 3: ( 36, 22) ( 38, 16) ( 40, 0) ( 42, -16) + + [ GrB_mxm C=A'*B, dot_product (dot4: F += Sf'*Sf) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7acb8bd141ca27c9 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7acb8bd141ca27c9' +[ 50%] Building C object CMakeFiles/GB_jit__AxB_dot4__03fe900eee0eeec5__addgauss_multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/c9/GB_jit__AxB_dot4__03fe900eee0eeec5__addgauss_multgauss.c.o +[100%] Linking C shared library libGB_jit__AxB_dot4__03fe900eee0eeec5__addgauss_multgauss.so +[100%] Built target GB_jit__AxB_dot4__03fe900eee0eeec5__addgauss_multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7acb8bd141ca27c9' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/c9/libGB_jit__AxB_dot4__03fe900eee0eeec5__addgauss_multgauss.so +(C in place) + 0.678 sec ] + + +=============== Gauss C += A*A' matrix: + +size: 4-by-4 +row 0: ( 279, -38) ( 615, 28) ( 918, 58) (1221, 88) +row 1: ( 615, 28) (1305, 294) (1943, 476) (2581, 658) +row 2: ( 918, 58) (1943, 476) (2894, 766) (3845,1056) +row 3: (1221, 88) (2581, 658) (3845,1056) (5109,1454) + + [ GrB_assign (C iso assign) (pending: 0) Method 21: (C full) = scalar + 2.18e-05 sec ] + + +=============== Gauss B = (1,-2) matrix: + +size: 4-by-4 +row 0: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 1: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 2: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) +row 3: ( 1, -2) ( 1, -2) ( 1, -2) ( 1, -2) + + [ GrB_mxm C=A*B, saxpy (saxpy4: F += Sf*F) (coarse, threads: 1) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5301828568d7f863 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5301828568d7f863' +[ 50%] Building C object CMakeFiles/GB_jit__AxB_saxpy4__03fe300eee0eeec7__addgauss_multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/63/GB_jit__AxB_saxpy4__03fe300eee0eeec7__addgauss_multgauss.c.o +[100%] Linking C shared library libGB_jit__AxB_saxpy4__03fe300eee0eeec7__addgauss_multgauss.so +[100%] Built target GB_jit__AxB_saxpy4__03fe300eee0eeec7__addgauss_multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5301828568d7f863' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/63/libGB_jit__AxB_saxpy4__03fe300eee0eeec7__addgauss_multgauss.so +(C in place) + 1.01 sec ] + + +=============== Gauss C += B*A: + +size: 4-by-4 +row 0: ( 473,-166) ( 782,-121) (1013,-142) (1244,-163) +row 1: ( 809,-100) (1472, 145) (2038, 276) (2604, 407) +row 2: (1112, -70) (2110, 327) (2989, 566) (3868, 805) +row 3: (1415, -40) (2748, 509) (3940, 856) (5132,1203) + + [ GrB_mxm C=A*B, saxpy (saxpy5: F += F*Sf) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/c94d1f86a5825b56 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/c94d1f86a5825b56' +[ 50%] Building C object CMakeFiles/GB_jit__AxB_saxpy5__03fe500eee0eeecd__addgauss_multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/56/GB_jit__AxB_saxpy5__03fe500eee0eeecd__addgauss_multgauss.c.o +[100%] Linking C shared library libGB_jit__AxB_saxpy5__03fe500eee0eeecd__addgauss_multgauss.so +[100%] Built target GB_jit__AxB_saxpy5__03fe500eee0eeecd__addgauss_multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/c94d1f86a5825b56' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/56/libGB_jit__AxB_saxpy5__03fe500eee0eeecd__addgauss_multgauss.so +(C in place) + 0.647 sec ] + + +=============== Gauss C += A*B: + +size: 4-by-4 +row 0: ( 505,-240) ( 814,-195) (1045,-216) (1276,-237) +row 1: ( 907,-246) (1570, -1) (2136, 130) (2702, 261) +row 2: (1261,-288) (2259, 109) (3138, 348) (4017, 587) +row 3: (1615,-330) (2948, 219) (4140, 566) (5332, 913) + + [ GrB_apply (shallow-op) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/3b6448d781104419 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/3b6448d781104419' +[ 50%] Building C object CMakeFiles/GB_jit__apply_bind1st__0000eee0efec1__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/19/GB_jit__apply_bind1st__0000eee0efec1__addgauss.c.o +[100%] Linking C shared library libGB_jit__apply_bind1st__0000eee0efec1__addgauss.so +[100%] Built target GB_jit__apply_bind1st__0000eee0efec1__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/3b6448d781104419' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/19/libGB_jit__apply_bind1st__0000eee0efec1__addgauss.so + + 0.615 sec ] + + +=============== Gauss C = (1,-2) + A: + +size: 4-by-4 +row 0: ( 10, 2) ( 10, -1) ( 10, -4) ( 10, -7) +row 1: ( 19, 8) ( 19, 6) ( 21, -2) ( 23, -10) +row 2: ( 28, 14) ( 29, 10) ( 31, -2) ( 33, -14) +row 3: ( 37, 20) ( 39, 14) ( 41, -2) ( 43, -18) + + [ GrB_apply (shallow-op) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/42813a1e14cb43c9 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/42813a1e14cb43c9' +[ 50%] Building C object CMakeFiles/GB_jit__apply_bind2nd__0000eee0eefc4__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/c9/GB_jit__apply_bind2nd__0000eee0eefc4__multgauss.c.o +[100%] Linking C shared library libGB_jit__apply_bind2nd__0000eee0eefc4__multgauss.so +[100%] Built target GB_jit__apply_bind2nd__0000eee0eefc4__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/42813a1e14cb43c9' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/c9/libGB_jit__apply_bind2nd__0000eee0eefc4__multgauss.so + + 0.655 sec ] + + +=============== Gauss C = A*(1,-2): + +size: 4-by-4 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 1: ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + [ GrB_apply (transpose-op) (transpose) (1-thread bucket transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/37d33aa629f415d3 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/37d33aa629f415d3' +[ 50%] Building C object CMakeFiles/GB_jit__trans_bind2nd__0000eee0eef44__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/d3/GB_jit__trans_bind2nd__0000eee0eef44__multgauss.c.o +[100%] Linking C shared library libGB_jit__trans_bind2nd__0000eee0eef44__multgauss.so +[100%] Built target GB_jit__trans_bind2nd__0000eee0eef44__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/37d33aa629f415d3' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/d3/libGB_jit__trans_bind2nd__0000eee0eef44__multgauss.so +(full to sparse) + 0.668 sec ] + + +=============== Gauss C = A'*(1,-2): + +size: 4-by-4 +row 0: ( 17, -14) ( 38, -26) ( 59, -38) ( 80, -50) +row 1: ( 11, -17) ( 34, -28) ( 52, -44) ( 70, -60) +row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) +row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) + + [ GrB_apply (transpose-op) (transpose) (1-thread bucket transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/07d1cb825d4304d3 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/07d1cb825d4304d3' +[ 50%] Building C object CMakeFiles/GB_jit__trans_bind1st__0000eee0efe41__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/d3/GB_jit__trans_bind1st__0000eee0efe41__multgauss.c.o +[100%] Linking C shared library libGB_jit__trans_bind1st__0000eee0efe41__multgauss.so +[100%] Built target GB_jit__trans_bind1st__0000eee0efe41__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/07d1cb825d4304d3' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/d3/libGB_jit__trans_bind1st__0000eee0efe41__multgauss.so +(full to sparse) + 0.673 sec ] + + +=============== Gauss C = (1,-2)*A': + +size: 4-by-4 +row 0: ( 17, -14) ( 38, -26) ( 59, -38) ( 80, -50) +row 1: ( 11, -17) ( 34, -28) ( 52, -44) ( 70, -60) +row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) +row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) + + + GraphBLAS UnaryOp: RealGauss (user-defined): z=realgauss(x) + GraphBLAS type: ztype int32_t size: 4 + GraphBLAS type: xtype user-defined: [gauss] size: 8 + typedef struct { int32_t real ; int32_t imag ; } gauss ; +void realgauss (int32_t *z, const gauss *x) +{ + (*z) = x->real ; +} + [ GrB_apply (shallow-op) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5c78101d6e73dc21 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5c78101d6e73dc21' +[ 50%] Building C object CMakeFiles/GB_jit__apply_unop__00006e06ef__realgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/21/GB_jit__apply_unop__00006e06ef__realgauss.c.o +[100%] Linking C shared library libGB_jit__apply_unop__00006e06ef__realgauss.so +[100%] Built target GB_jit__apply_unop__00006e06ef__realgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5c78101d6e73dc21' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/21/libGB_jit__apply_unop__00006e06ef__realgauss.so + + 0.621 sec ] + + 4x4 GraphBLAS int32_t matrix, full by row + R, 16 entries, memory: 280 bytes + + (0,0) 17 + (0,1) 38 + (0,2) 59 + (0,3) 80 + (1,0) 11 + (1,1) 34 + (1,2) 52 + (1,3) 70 + (2,0) 5 + (2,1) 20 + (2,2) 30 + (2,3) 40 + (3,0) -1 + (3,1) 6 + (3,2) 8 + (3,3) 10 + + + +=============== R = RealGauss (C') + +size: 4-by-4 +row 0: ( 17, -14) ( 38, -26) ( 59, -38) ( 80, -50) +row 1: ( 11, -17) ( 34, -28) ( 52, -44) ( 70, -60) +row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) +row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) + + [ GrB_apply (transpose-op) (transpose) (bitmap/full transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b799fc2c5b29ec49 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b799fc2c5b29ec49' +[ 50%] Building C object CMakeFiles/GB_jit__trans_unop__08006e06ef__realgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/49/GB_jit__trans_unop__08006e06ef__realgauss.c.o +[100%] Linking C shared library libGB_jit__trans_unop__08006e06ef__realgauss.so +[100%] Built target GB_jit__trans_unop__08006e06ef__realgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b799fc2c5b29ec49' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/49/libGB_jit__trans_unop__08006e06ef__realgauss.so + + 0.631 sec ] + + 4x4 GraphBLAS int32_t matrix, full by row + R, 16 entries, memory: 280 bytes + + (0,0) 17 + (0,1) 11 + (0,2) 5 + (0,3) -1 + (1,0) 38 + (1,1) 34 + (1,2) 20 + (1,3) 6 + (2,0) 59 + (2,1) 52 + (2,2) 30 + (2,3) 8 + (3,0) 80 + (3,1) 70 + (3,2) 40 + (3,3) 10 + + + +=============== C + +size: 4-by-4 +row 0: ( 17, -14) ( 38, -26) ( 59, -38) ( 80, -50) +row 1: ( 11, -17) ( 34, -28) ( 52, -44) ( 70, -60) +row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) +row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) + + [ GrB_apply (shallow-op) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/4e606820337e573c +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/4e606820337e573c' +[ 50%] Building C object CMakeFiles/GB_jit__apply_unop__07fe8ee8ef__ijgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/3c/GB_jit__apply_unop__07fe8ee8ef__ijgauss.c.o +[100%] Linking C shared library libGB_jit__apply_unop__07fe8ee8ef__ijgauss.so +[100%] Built target GB_jit__apply_unop__07fe8ee8ef__ijgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/4e606820337e573c' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/3c/libGB_jit__apply_unop__07fe8ee8ef__ijgauss.so + + 0.626 sec ] + +R = ijgauss (C) + + 4x4 GraphBLAS int64_t matrix, full by row + R, 16 entries, memory: 344 bytes + + (0,0) 18 + (0,1) 38 + (0,2) 58 + (0,3) 78 + (1,0) 13 + (1,1) 35 + (1,2) 52 + (1,3) 69 + (2,0) 8 + (2,1) 22 + (2,2) 31 + (2,3) 40 + (3,0) 3 + (3,1) 9 + (3,2) 10 + (3,3) 11 + + [ GrB_Matrix_extractTuples (A full) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5660a671ca40c48b +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5660a671ca40c48b' +[ 50%] Building C object CMakeFiles/GB_jit__apply_unop__0002bb0b8f.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/8b/GB_jit__apply_unop__0002bb0b8f.c.o +[100%] Linking C shared library libGB_jit__apply_unop__0002bb0b8f.so +[100%] Built target GB_jit__apply_unop__0002bb0b8f +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/5660a671ca40c48b' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/8b/libGB_jit__apply_unop__0002bb0b8f.so + + 0.6 sec ] +R (0,0) = 18 +R (0,1) = 38 +R (0,2) = 58 +R (0,3) = 78 +R (1,0) = 13 +R (1,1) = 35 +R (1,2) = 52 +R (1,3) = 69 +R (2,0) = 8 +R (2,1) = 22 +R (2,2) = 31 +R (2,3) = 40 +R (3,0) = 3 +R (3,1) = 9 +R (3,2) = 10 +R (3,3) = 11 + + +=============== C + +size: 4-by-4 +row 0: ( 17, -14) ( 38, -26) ( 59, -38) ( 80, -50) +row 1: ( 11, -17) ( 34, -28) ( 52, -44) ( 70, -60) +row 2: ( 5, -20) ( 20, -40) ( 30, -60) ( 40, -80) +row 3: ( -1, -23) ( 6, -52) ( 8, -76) ( 10,-100) + + [ GrB_transpose (transpose) (bitmap/full transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/20f5326f3ffc493d +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/20f5326f3ffc493d' +[ 50%] Building C object CMakeFiles/GB_jit__trans_unop__0802ee0eef__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/3d/GB_jit__trans_unop__0802ee0eef__gauss.c.o +[100%] Linking C shared library libGB_jit__trans_unop__0802ee0eef__gauss.so +[100%] Built target GB_jit__trans_unop__0802ee0eef__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/20f5326f3ffc493d' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/3d/libGB_jit__trans_unop__0802ee0eef__gauss.so + + 0.626 sec ] + + +=============== C = C' + +size: 4-by-4 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 1: ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + [ GxB_set (in-place transpose) (transpose) + 2.9e-05 sec ] + [ GxB_Matrix_concat (sparse concat) (transpose) (bitmap/full transpose) (transpose) (transpose) (1-thread bucket transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f6daeb95a8060316 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f6daeb95a8060316' +[ 50%] Building C object CMakeFiles/GB_jit__trans_unop__0802ee0ee5__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/16/GB_jit__trans_unop__0802ee0ee5__gauss.c.o +[100%] Linking C shared library libGB_jit__trans_unop__0802ee0ee5__gauss.so +[100%] Built target GB_jit__trans_unop__0802ee0ee5__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f6daeb95a8060316' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/16/libGB_jit__trans_unop__0802ee0ee5__gauss.so +(transpose) (1-thread bucket transpose) (transpose) (transpose) (bitmap/full transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/48b856264c49fbf7 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/48b856264c49fbf7' +[ 50%] Building C object CMakeFiles/GB_jit__concat_sparse__0802ee0ee7__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/f7/GB_jit__concat_sparse__0802ee0ee7__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_sparse__0802ee0ee7__gauss.so +[100%] Built target GB_jit__concat_sparse__0802ee0ee7__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/48b856264c49fbf7' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/f7/libGB_jit__concat_sparse__0802ee0ee7__gauss.so +(jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b74773f44d3a63e0 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b74773f44d3a63e0' +[ 50%] Building C object CMakeFiles/GB_jit__concat_sparse__0802ee0ee4__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/e0/GB_jit__concat_sparse__0802ee0ee4__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_sparse__0802ee0ee4__gauss.so +[100%] Built target GB_jit__concat_sparse__0802ee0ee4__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b74773f44d3a63e0' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/e0/libGB_jit__concat_sparse__0802ee0ee4__gauss.so +(jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ca722575fc658dc5 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ca722575fc658dc5' +[ 50%] Building C object CMakeFiles/GB_jit__concat_sparse__0802ee0ee5__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/c5/GB_jit__concat_sparse__0802ee0ee5__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_sparse__0802ee0ee5__gauss.so +[100%] Built target GB_jit__concat_sparse__0802ee0ee5__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/ca722575fc658dc5' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/c5/libGB_jit__concat_sparse__0802ee0ee5__gauss.so + + 2.63 sec ] + + +=============== Z = [C D ; E E ; D C] +size: 256-by-8 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) ( 9, 4) . . . +row 1: ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) . ( 18, 8) . . +row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) . . ( 30, 0) . +row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) . . . ( 42, -16) +row 4: . . . . . . . . +row 5: . . . . . . . . +row 6: . . . . . . . . +row 7: . . . . . . . . +row 8: . . . . . . . . +row 9: . . . . . . . . +row 10: . . . . . . . . +row 11: . . . . . . . . +row 12: . . . . . . . . +row 13: . . . . . . . . +row 14: . . . . . . . . +row 15: . . . . . . . . +row 16: . . . . . . . . +row 17: . . . . . . . . +row 18: . . . . . . . . +row 19: . . . . . . . . +row 20: . . . . . . . . +row 21: . . . . . . . . +row 22: . . . . . . . . +row 23: . . . . . . . . +row 24: . . . . . . . . +row 25: . . . . . . . . +row 26: . . . . . . . . +row 27: . . . . . . . . +row 28: . . . . . . . . +row 29: . . . . . . . . +row 30: . . . . . . . . +row 31: . . . . . . . . +row 32: . . . . . . . . +row 33: . . . . . . . . +row 34: . . . . . . . . +row 35: . . . . . . . . +row 36: . . . . . . . . +row 37: . . . . . . . . +row 38: . . . . . . . . +row 39: . . . . . . . . +row 40: . . . . . . . . +row 41: . . . . . . . . +row 42: . . . . . . . . +row 43: . . . . . . . . +row 44: . . . . . . . . +row 45: . . . . . . . . +row 46: . . . . . . . . +row 47: . . . . . . . . +row 48: . . . . . . . . +row 49: . . . . . . . . +row 50: . . . . . . . . +row 51: . . . . . . . . +row 52: . . . . . . . . +row 53: . . . . . . . . +row 54: . . . . . . . . +row 55: . . . . . . . . +row 56: . . . . . . . . +row 57: . . . . . . . . +row 58: . . . . . . . . +row 59: . . . . . . . . +row 60: . . . . . . . . +row 61: . . . . . . . . +row 62: . . . . . . . . +row 63: . . . . . . . . +row 64: . . . . . . . . +row 65: . . . . . . . . +row 66: . . . . . . . . +row 67: . . . . . . . . +row 68: . . . . . . . . +row 69: . . . . . . . . +row 70: . . . . . . . . +row 71: . . . . . . . . +row 72: . . . . . . . . +row 73: . . . . . . . . +row 74: . . . . . . . . +row 75: . . . . . . . . +row 76: . . . . . . . . +row 77: . . . . . . . . +row 78: . . . . . . . . +row 79: . . . . . . . . +row 80: . . . . . . . . +row 81: . . . . . . . . +row 82: . . . . . . . . +row 83: . . . . . . . . +row 84: . . . . . . . . +row 85: . . . . . . . . +row 86: . . . . . . . . +row 87: . . . . . . . . +row 88: . . . . . . . . +row 89: . . . . . . . . +row 90: . . . . . . . . +row 91: . . . . . . . . +row 92: . . . . . . . . +row 93: . . . . . . . . +row 94: . . . . . . . . +row 95: . . . . . . . . +row 96: . . . . . . . . +row 97: . . . . . . . . +row 98: . . . . . . . . +row 99: . . . . . . . . +row 100: . . . . . . . . +row 101: . . . . . . . . +row 102: . . . . . . . . +row 103: . . . . . . . . +row 104: . . . . . . . . +row 105: . . . . . . . . +row 106: . . . . . . . . +row 107: . . . . . . . . +row 108: . . . . . . . . +row 109: . . . . . . . . +row 110: . . . . . . . . +row 111: . . . . . . . . +row 112: . . . . . . . . +row 113: . . . . . . . . +row 114: . . . . . . . . +row 115: . . . . . . . . +row 116: . . . . . . . . +row 117: . . . . . . . . +row 118: . . . . . . . . +row 119: . . . . . . . . +row 120: . . . . . . . . +row 121: . . . . . . . . +row 122: . . . . . . . . +row 123: . . . . . . . . +row 124: . . . . . . . . +row 125: . . . . . . . . +row 126: . . . . . . . . +row 127: . . . . . . . . +row 128: . . . . . . . . +row 129: . . . . . . . . +row 130: . . . . . . . . +row 131: . . . . . . . . +row 132: . . . . . . . . +row 133: . . . . . . . . +row 134: . . . . . . . . +row 135: . . . . . . . . +row 136: . . . . . . . . +row 137: . . . . . . . . +row 138: . . . . . . . . +row 139: . . . . . . . . +row 140: . . . . . . . . +row 141: . . . . . . . . +row 142: . . . . . . . . +row 143: . . . . . . . . +row 144: . . . . . . . . +row 145: . . . . . . . . +row 146: . . . . . . . . +row 147: . . . . . . . . +row 148: . . . . . . . . +row 149: . . . . . . . . +row 150: . . . . . . . . +row 151: . . . . . . . . +row 152: . . . . . . . . +row 153: . . . . . . . . +row 154: . . . . . . . . +row 155: . . . . . . . . +row 156: . . . . . . . . +row 157: . . . . . . . . +row 158: . . . . . . . . +row 159: . . . . . . . . +row 160: . . . . . . . . +row 161: . . . . . . . . +row 162: . . . . . . . . +row 163: . . . . . . . . +row 164: . . . . . . . . +row 165: . . . . . . . . +row 166: . . . . . . . . +row 167: . . . . . . . . +row 168: . . . . . . . . +row 169: . . . . . . . . +row 170: . . . . . . . . +row 171: . . . . . . . . +row 172: . . . . . . . . +row 173: . . . . . . . . +row 174: . . . . . . . . +row 175: . . . . . . . . +row 176: . . . . . . . . +row 177: . . . . . . . . +row 178: . . . . . . . . +row 179: . . . . . . . . +row 180: . . . . . . . . +row 181: . . . . . . . . +row 182: . . . . . . . . +row 183: . . . . . . . . +row 184: . . . . . . . . +row 185: . . . . . . . . +row 186: . . . . . . . . +row 187: . . . . . . . . +row 188: . . . . . . . . +row 189: . . . . . . . . +row 190: . . . . . . . . +row 191: . . . . . . . . +row 192: . . . . . . . . +row 193: . . . . . . . . +row 194: . . . . . . . . +row 195: . . . . . . . . +row 196: . . . . . . . . +row 197: . . . . . . . . +row 198: . . . . . . . . +row 199: . . . . . . . . +row 200: . . . . . . . . +row 201: . . . . . . . . +row 202: . . . . . . . . +row 203: . . . . . . . . +row 204: . . . . . . . . +row 205: . . . . . . . . +row 206: . . . . . . . . +row 207: . . . . . . . . +row 208: . . . . . . . . +row 209: . . . . . . . . +row 210: . . . . . . . . +row 211: . . . . . . . . +row 212: . . . . . . . . +row 213: . . . . . . . . +row 214: . . . . . . . . +row 215: . . . . . . . . +row 216: . . . . . . . . +row 217: . . . . . . . . +row 218: . . . . . . . . +row 219: . . . . . . . . +row 220: . . . . . . . . +row 221: . . . . . . . . +row 222: . . . . . . . . +row 223: . . . . . . . . +row 224: . . . . . . . . +row 225: . . . . . . . . +row 226: . . . . . . . . +row 227: . . . . . . . . +row 228: . . . . . . . . +row 229: . . . . . . . . +row 230: . . . . . . . . +row 231: . . . . . . . . +row 232: . . . . . . . . +row 233: . . . . . . . . +row 234: . . . . . . . . +row 235: . . . . . . . . +row 236: . . . . . . . . +row 237: . . . . . . . . +row 238: . . . . . . . . +row 239: . . . . . . . . +row 240: . . . . . . . . +row 241: . . . . . . . . +row 242: . . . . . . . . +row 243: . . . . . . . . +row 244: . . . . . . . . +row 245: . . . . . . . . +row 246: . . . . . . . . +row 247: . . . . . . . . +row 248: . . . . . . . . +row 249: . . . . . . . . +row 250: . . . . . . . . +row 251: . . . . . . . . +row 252: ( 9, 4) . . . ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 253: . ( 18, 8) . . ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 254: . . ( 30, 0) . ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 255: . . . ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + + 256x8 GraphBLAS gauss matrix, sparse by col + Z, 40 entries, memory: 928 bytes + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (252,0) [user-defined value] + (0,1) [user-defined value] + (1,1) [user-defined value] + (2,1) [user-defined value] + (3,1) [user-defined value] + (253,1) [user-defined value] + (0,2) [user-defined value] + (1,2) [user-defined value] + (2,2) [user-defined value] + (3,2) [user-defined value] + (254,2) [user-defined value] + (0,3) [user-defined value] + (1,3) [user-defined value] + (2,3) [user-defined value] + (3,3) [user-defined value] + (255,3) [user-defined value] + (0,4) [user-defined value] + (252,4) [user-defined value] + (253,4) [user-defined value] + (254,4) [user-defined value] + (255,4) [user-defined value] + (1,5) [user-defined value] + (252,5) [user-defined value] + (253,5) [user-defined value] + (254,5) [user-defined value] + (255,5) [user-defined value] + (2,6) [user-defined value] + (252,6) [user-defined value] + (253,6) [user-defined value] + (254,6) [user-defined value] + (255,6) [user-defined value] + (3,7) [user-defined value] + (252,7) [user-defined value] + (253,7) [user-defined value] + (254,7) [user-defined value] + (255,7) [user-defined value] + + [ GxB_Matrix_split (sparse/hyper split) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bc6fbb55201f367c +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bc6fbb55201f367c' +[ 50%] Building C object CMakeFiles/GB_jit__split_sparse__0802ee0ee5__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/7c/GB_jit__split_sparse__0802ee0ee5__gauss.c.o +[100%] Linking C shared library libGB_jit__split_sparse__0802ee0ee5__gauss.so +[100%] Built target GB_jit__split_sparse__0802ee0ee5__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bc6fbb55201f367c' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/7c/libGB_jit__split_sparse__0802ee0ee5__gauss.so + + 0.647 sec ] + + +=============== C Tile from Z: + +size: 128-by-3 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) +row 1: ( 38, -26) ( 34, -28) ( 20, -40) +row 2: ( 59, -38) ( 52, -44) ( 30, -60) +row 3: ( 80, -50) ( 70, -60) ( 40, -80) +row 4: . . . +row 5: . . . +row 6: . . . +row 7: . . . +row 8: . . . +row 9: . . . +row 10: . . . +row 11: . . . +row 12: . . . +row 13: . . . +row 14: . . . +row 15: . . . +row 16: . . . +row 17: . . . +row 18: . . . +row 19: . . . +row 20: . . . +row 21: . . . +row 22: . . . +row 23: . . . +row 24: . . . +row 25: . . . +row 26: . . . +row 27: . . . +row 28: . . . +row 29: . . . +row 30: . . . +row 31: . . . +row 32: . . . +row 33: . . . +row 34: . . . +row 35: . . . +row 36: . . . +row 37: . . . +row 38: . . . +row 39: . . . +row 40: . . . +row 41: . . . +row 42: . . . +row 43: . . . +row 44: . . . +row 45: . . . +row 46: . . . +row 47: . . . +row 48: . . . +row 49: . . . +row 50: . . . +row 51: . . . +row 52: . . . +row 53: . . . +row 54: . . . +row 55: . . . +row 56: . . . +row 57: . . . +row 58: . . . +row 59: . . . +row 60: . . . +row 61: . . . +row 62: . . . +row 63: . . . +row 64: . . . +row 65: . . . +row 66: . . . +row 67: . . . +row 68: . . . +row 69: . . . +row 70: . . . +row 71: . . . +row 72: . . . +row 73: . . . +row 74: . . . +row 75: . . . +row 76: . . . +row 77: . . . +row 78: . . . +row 79: . . . +row 80: . . . +row 81: . . . +row 82: . . . +row 83: . . . +row 84: . . . +row 85: . . . +row 86: . . . +row 87: . . . +row 88: . . . +row 89: . . . +row 90: . . . +row 91: . . . +row 92: . . . +row 93: . . . +row 94: . . . +row 95: . . . +row 96: . . . +row 97: . . . +row 98: . . . +row 99: . . . +row 100: . . . +row 101: . . . +row 102: . . . +row 103: . . . +row 104: . . . +row 105: . . . +row 106: . . . +row 107: . . . +row 108: . . . +row 109: . . . +row 110: . . . +row 111: . . . +row 112: . . . +row 113: . . . +row 114: . . . +row 115: . . . +row 116: . . . +row 117: . . . +row 118: . . . +row 119: . . . +row 120: . . . +row 121: . . . +row 122: . . . +row 123: . . . +row 124: . . . +row 125: . . . +row 126: . . . +row 127: . . . + + + 128x3 GraphBLAS gauss matrix, sparse by col + CTiles [k], 12 entries, memory: 440 bytes + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (0,1) [user-defined value] + (1,1) [user-defined value] + (2,1) [user-defined value] + (3,1) [user-defined value] + (0,2) [user-defined value] + (1,2) [user-defined value] + (2,2) [user-defined value] + (3,2) [user-defined value] + + + +=============== C Tile from Z: + +size: 128-by-5 +row 0: ( -1, -23) ( 9, 4) . . . +row 1: ( 6, -52) . ( 18, 8) . . +row 2: ( 8, -76) . . ( 30, 0) . +row 3: ( 10,-100) . . . ( 42, -16) +row 4: . . . . . +row 5: . . . . . +row 6: . . . . . +row 7: . . . . . +row 8: . . . . . +row 9: . . . . . +row 10: . . . . . +row 11: . . . . . +row 12: . . . . . +row 13: . . . . . +row 14: . . . . . +row 15: . . . . . +row 16: . . . . . +row 17: . . . . . +row 18: . . . . . +row 19: . . . . . +row 20: . . . . . +row 21: . . . . . +row 22: . . . . . +row 23: . . . . . +row 24: . . . . . +row 25: . . . . . +row 26: . . . . . +row 27: . . . . . +row 28: . . . . . +row 29: . . . . . +row 30: . . . . . +row 31: . . . . . +row 32: . . . . . +row 33: . . . . . +row 34: . . . . . +row 35: . . . . . +row 36: . . . . . +row 37: . . . . . +row 38: . . . . . +row 39: . . . . . +row 40: . . . . . +row 41: . . . . . +row 42: . . . . . +row 43: . . . . . +row 44: . . . . . +row 45: . . . . . +row 46: . . . . . +row 47: . . . . . +row 48: . . . . . +row 49: . . . . . +row 50: . . . . . +row 51: . . . . . +row 52: . . . . . +row 53: . . . . . +row 54: . . . . . +row 55: . . . . . +row 56: . . . . . +row 57: . . . . . +row 58: . . . . . +row 59: . . . . . +row 60: . . . . . +row 61: . . . . . +row 62: . . . . . +row 63: . . . . . +row 64: . . . . . +row 65: . . . . . +row 66: . . . . . +row 67: . . . . . +row 68: . . . . . +row 69: . . . . . +row 70: . . . . . +row 71: . . . . . +row 72: . . . . . +row 73: . . . . . +row 74: . . . . . +row 75: . . . . . +row 76: . . . . . +row 77: . . . . . +row 78: . . . . . +row 79: . . . . . +row 80: . . . . . +row 81: . . . . . +row 82: . . . . . +row 83: . . . . . +row 84: . . . . . +row 85: . . . . . +row 86: . . . . . +row 87: . . . . . +row 88: . . . . . +row 89: . . . . . +row 90: . . . . . +row 91: . . . . . +row 92: . . . . . +row 93: . . . . . +row 94: . . . . . +row 95: . . . . . +row 96: . . . . . +row 97: . . . . . +row 98: . . . . . +row 99: . . . . . +row 100: . . . . . +row 101: . . . . . +row 102: . . . . . +row 103: . . . . . +row 104: . . . . . +row 105: . . . . . +row 106: . . . . . +row 107: . . . . . +row 108: . . . . . +row 109: . . . . . +row 110: . . . . . +row 111: . . . . . +row 112: . . . . . +row 113: . . . . . +row 114: . . . . . +row 115: . . . . . +row 116: . . . . . +row 117: . . . . . +row 118: . . . . . +row 119: . . . . . +row 120: . . . . . +row 121: . . . . . +row 122: . . . . . +row 123: . . . . . +row 124: . . . . . +row 125: . . . . . +row 126: . . . . . +row 127: . . . . . + + + 128x5 GraphBLAS gauss matrix, sparse by col + CTiles [k], 8 entries, memory: 392 bytes + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (0,1) [user-defined value] + (1,2) [user-defined value] + (2,3) [user-defined value] + (3,4) [user-defined value] + + + +=============== C Tile from Z: + +size: 128-by-3 +row 0: . . . +row 1: . . . +row 2: . . . +row 3: . . . +row 4: . . . +row 5: . . . +row 6: . . . +row 7: . . . +row 8: . . . +row 9: . . . +row 10: . . . +row 11: . . . +row 12: . . . +row 13: . . . +row 14: . . . +row 15: . . . +row 16: . . . +row 17: . . . +row 18: . . . +row 19: . . . +row 20: . . . +row 21: . . . +row 22: . . . +row 23: . . . +row 24: . . . +row 25: . . . +row 26: . . . +row 27: . . . +row 28: . . . +row 29: . . . +row 30: . . . +row 31: . . . +row 32: . . . +row 33: . . . +row 34: . . . +row 35: . . . +row 36: . . . +row 37: . . . +row 38: . . . +row 39: . . . +row 40: . . . +row 41: . . . +row 42: . . . +row 43: . . . +row 44: . . . +row 45: . . . +row 46: . . . +row 47: . . . +row 48: . . . +row 49: . . . +row 50: . . . +row 51: . . . +row 52: . . . +row 53: . . . +row 54: . . . +row 55: . . . +row 56: . . . +row 57: . . . +row 58: . . . +row 59: . . . +row 60: . . . +row 61: . . . +row 62: . . . +row 63: . . . +row 64: . . . +row 65: . . . +row 66: . . . +row 67: . . . +row 68: . . . +row 69: . . . +row 70: . . . +row 71: . . . +row 72: . . . +row 73: . . . +row 74: . . . +row 75: . . . +row 76: . . . +row 77: . . . +row 78: . . . +row 79: . . . +row 80: . . . +row 81: . . . +row 82: . . . +row 83: . . . +row 84: . . . +row 85: . . . +row 86: . . . +row 87: . . . +row 88: . . . +row 89: . . . +row 90: . . . +row 91: . . . +row 92: . . . +row 93: . . . +row 94: . . . +row 95: . . . +row 96: . . . +row 97: . . . +row 98: . . . +row 99: . . . +row 100: . . . +row 101: . . . +row 102: . . . +row 103: . . . +row 104: . . . +row 105: . . . +row 106: . . . +row 107: . . . +row 108: . . . +row 109: . . . +row 110: . . . +row 111: . . . +row 112: . . . +row 113: . . . +row 114: . . . +row 115: . . . +row 116: . . . +row 117: . . . +row 118: . . . +row 119: . . . +row 120: . . . +row 121: . . . +row 122: . . . +row 123: . . . +row 124: ( 9, 4) . . +row 125: . ( 18, 8) . +row 126: . . ( 30, 0) +row 127: . . . + + + 128x3 GraphBLAS gauss matrix, sparse by col + CTiles [k], 3 entries, memory: 296 bytes + + (124,0) [user-defined value] + (125,1) [user-defined value] + (126,2) [user-defined value] + + + +=============== C Tile from Z: + +size: 128-by-5 +row 0: . . . . . +row 1: . . . . . +row 2: . . . . . +row 3: . . . . . +row 4: . . . . . +row 5: . . . . . +row 6: . . . . . +row 7: . . . . . +row 8: . . . . . +row 9: . . . . . +row 10: . . . . . +row 11: . . . . . +row 12: . . . . . +row 13: . . . . . +row 14: . . . . . +row 15: . . . . . +row 16: . . . . . +row 17: . . . . . +row 18: . . . . . +row 19: . . . . . +row 20: . . . . . +row 21: . . . . . +row 22: . . . . . +row 23: . . . . . +row 24: . . . . . +row 25: . . . . . +row 26: . . . . . +row 27: . . . . . +row 28: . . . . . +row 29: . . . . . +row 30: . . . . . +row 31: . . . . . +row 32: . . . . . +row 33: . . . . . +row 34: . . . . . +row 35: . . . . . +row 36: . . . . . +row 37: . . . . . +row 38: . . . . . +row 39: . . . . . +row 40: . . . . . +row 41: . . . . . +row 42: . . . . . +row 43: . . . . . +row 44: . . . . . +row 45: . . . . . +row 46: . . . . . +row 47: . . . . . +row 48: . . . . . +row 49: . . . . . +row 50: . . . . . +row 51: . . . . . +row 52: . . . . . +row 53: . . . . . +row 54: . . . . . +row 55: . . . . . +row 56: . . . . . +row 57: . . . . . +row 58: . . . . . +row 59: . . . . . +row 60: . . . . . +row 61: . . . . . +row 62: . . . . . +row 63: . . . . . +row 64: . . . . . +row 65: . . . . . +row 66: . . . . . +row 67: . . . . . +row 68: . . . . . +row 69: . . . . . +row 70: . . . . . +row 71: . . . . . +row 72: . . . . . +row 73: . . . . . +row 74: . . . . . +row 75: . . . . . +row 76: . . . . . +row 77: . . . . . +row 78: . . . . . +row 79: . . . . . +row 80: . . . . . +row 81: . . . . . +row 82: . . . . . +row 83: . . . . . +row 84: . . . . . +row 85: . . . . . +row 86: . . . . . +row 87: . . . . . +row 88: . . . . . +row 89: . . . . . +row 90: . . . . . +row 91: . . . . . +row 92: . . . . . +row 93: . . . . . +row 94: . . . . . +row 95: . . . . . +row 96: . . . . . +row 97: . . . . . +row 98: . . . . . +row 99: . . . . . +row 100: . . . . . +row 101: . . . . . +row 102: . . . . . +row 103: . . . . . +row 104: . . . . . +row 105: . . . . . +row 106: . . . . . +row 107: . . . . . +row 108: . . . . . +row 109: . . . . . +row 110: . . . . . +row 111: . . . . . +row 112: . . . . . +row 113: . . . . . +row 114: . . . . . +row 115: . . . . . +row 116: . . . . . +row 117: . . . . . +row 118: . . . . . +row 119: . . . . . +row 120: . . . . . +row 121: . . . . . +row 122: . . . . . +row 123: . . . . . +row 124: . ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 125: . ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 126: . ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 127: ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + + 128x5 GraphBLAS gauss matrix, sparse by col + CTiles [k], 17 entries, memory: 536 bytes + + (127,0) [user-defined value] + (124,1) [user-defined value] + (125,1) [user-defined value] + (126,1) [user-defined value] + (127,1) [user-defined value] + (124,2) [user-defined value] + (125,2) [user-defined value] + (126,2) [user-defined value] + (127,2) [user-defined value] + (124,3) [user-defined value] + (125,3) [user-defined value] + (126,3) [user-defined value] + (127,3) [user-defined value] + (124,4) [user-defined value] + (125,4) [user-defined value] + (126,4) [user-defined value] + (127,4) [user-defined value] + + [ GxB_set (in-place transpose) (transpose) + 1.6e-05 sec ] + [ GxB_Matrix_concat (bitmap concat) (transpose) (bitmap/full transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/0c3e9de2e5d73a82 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/0c3e9de2e5d73a82' +[ 50%] Building C object CMakeFiles/GB_jit__concat_bitmap__0802ee0eeb__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/82/GB_jit__concat_bitmap__0802ee0eeb__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_bitmap__0802ee0eeb__gauss.so +[100%] Built target GB_jit__concat_bitmap__0802ee0eeb__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/0c3e9de2e5d73a82' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/82/libGB_jit__concat_bitmap__0802ee0eeb__gauss.so +(transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/068b643968f6613c +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/068b643968f6613c' +[ 50%] Building C object CMakeFiles/GB_jit__concat_bitmap__0802ee0ee8__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/3c/GB_jit__concat_bitmap__0802ee0ee8__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_bitmap__0802ee0ee8__gauss.so +[100%] Built target GB_jit__concat_bitmap__0802ee0ee8__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/068b643968f6613c' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/3c/libGB_jit__concat_bitmap__0802ee0ee8__gauss.so +(transpose) (1-thread bucket transpose) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e363064d750a735e +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e363064d750a735e' +[ 50%] Building C object CMakeFiles/GB_jit__concat_bitmap__0802ee0ee9__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/5e/GB_jit__concat_bitmap__0802ee0ee9__gauss.c.o +[100%] Linking C shared library libGB_jit__concat_bitmap__0802ee0ee9__gauss.so +[100%] Built target GB_jit__concat_bitmap__0802ee0ee9__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/e363064d750a735e' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/5e/libGB_jit__concat_bitmap__0802ee0ee9__gauss.so +(transpose) (1-thread bucket transpose) (transpose) (transpose) (bitmap/full transpose) + 1.97 sec ] + + +=============== Z = [C D ; E E ; D C] +size: 16-by-8 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) ( 9, 4) . . . +row 1: ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) . ( 18, 8) . . +row 2: ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) . . ( 30, 0) . +row 3: ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) . . . ( 42, -16) +row 4: . . . . . . . . +row 5: . . . . . . . . +row 6: . . . . . . . . +row 7: . . . . . . . . +row 8: . . . . . . . . +row 9: . . . . . . . . +row 10: . . . . . . . . +row 11: . . . . . . . . +row 12: ( 9, 4) . . . ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 13: . ( 18, 8) . . ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 14: . . ( 30, 0) . ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 15: . . . ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + + 16x8 GraphBLAS gauss matrix, bitmap by col + Z, 40 entries, memory: 1.3 KB + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (12,0) [user-defined value] + (0,1) [user-defined value] + (1,1) [user-defined value] + (2,1) [user-defined value] + (3,1) [user-defined value] + (13,1) [user-defined value] + (0,2) [user-defined value] + (1,2) [user-defined value] + (2,2) [user-defined value] + (3,2) [user-defined value] + (14,2) [user-defined value] + (0,3) [user-defined value] + (1,3) [user-defined value] + (2,3) [user-defined value] + (3,3) [user-defined value] + (15,3) [user-defined value] + (0,4) [user-defined value] + (12,4) [user-defined value] + (13,4) [user-defined value] + (14,4) [user-defined value] + (15,4) [user-defined value] + (1,5) [user-defined value] + (12,5) [user-defined value] + (13,5) [user-defined value] + (14,5) [user-defined value] + (15,5) [user-defined value] + (2,6) [user-defined value] + (12,6) [user-defined value] + (13,6) [user-defined value] + (14,6) [user-defined value] + (15,6) [user-defined value] + (3,7) [user-defined value] + (12,7) [user-defined value] + (13,7) [user-defined value] + (14,7) [user-defined value] + (15,7) [user-defined value] + + [ GxB_Matrix_split (bitmap split) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f5d9f01d1b2c9447 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f5d9f01d1b2c9447' +[ 50%] Building C object CMakeFiles/GB_jit__split_bitmap__0802ee0eea__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/47/GB_jit__split_bitmap__0802ee0eea__gauss.c.o +[100%] Linking C shared library libGB_jit__split_bitmap__0802ee0eea__gauss.so +[100%] Built target GB_jit__split_bitmap__0802ee0eea__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/f5d9f01d1b2c9447' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/47/libGB_jit__split_bitmap__0802ee0eea__gauss.so + + 0.614 sec ] + + +=============== C Tile from Z: + +size: 8-by-3 +row 0: ( 17, -14) ( 11, -17) ( 5, -20) +row 1: ( 38, -26) ( 34, -28) ( 20, -40) +row 2: ( 59, -38) ( 52, -44) ( 30, -60) +row 3: ( 80, -50) ( 70, -60) ( 40, -80) +row 4: . . . +row 5: . . . +row 6: . . . +row 7: . . . + + + 8x3 GraphBLAS gauss matrix, bitmap by col + CTiles [k], 12 entries, memory: 432 bytes + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (0,1) [user-defined value] + (1,1) [user-defined value] + (2,1) [user-defined value] + (3,1) [user-defined value] + (0,2) [user-defined value] + (1,2) [user-defined value] + (2,2) [user-defined value] + (3,2) [user-defined value] + + + +=============== C Tile from Z: + +size: 8-by-5 +row 0: ( -1, -23) ( 9, 4) . . . +row 1: ( 6, -52) . ( 18, 8) . . +row 2: ( 8, -76) . . ( 30, 0) . +row 3: ( 10,-100) . . . ( 42, -16) +row 4: . . . . . +row 5: . . . . . +row 6: . . . . . +row 7: . . . . . + + + 8x5 GraphBLAS gauss matrix, bitmap by col + CTiles [k], 8 entries, memory: 576 bytes + + (0,0) [user-defined value] + (1,0) [user-defined value] + (2,0) [user-defined value] + (3,0) [user-defined value] + (0,1) [user-defined value] + (1,2) [user-defined value] + (2,3) [user-defined value] + (3,4) [user-defined value] + + + +=============== C Tile from Z: + +size: 8-by-3 +row 0: . . . +row 1: . . . +row 2: . . . +row 3: . . . +row 4: ( 9, 4) . . +row 5: . ( 18, 8) . +row 6: . . ( 30, 0) +row 7: . . . + + + 8x3 GraphBLAS gauss matrix, bitmap by col + CTiles [k], 3 entries, memory: 432 bytes + + (4,0) [user-defined value] + (5,1) [user-defined value] + (6,2) [user-defined value] + + + +=============== C Tile from Z: + +size: 8-by-5 +row 0: . . . . . +row 1: . . . . . +row 2: . . . . . +row 3: . . . . . +row 4: . ( 17, -14) ( 11, -17) ( 5, -20) ( -1, -23) +row 5: . ( 38, -26) ( 34, -28) ( 20, -40) ( 6, -52) +row 6: . ( 59, -38) ( 52, -44) ( 30, -60) ( 8, -76) +row 7: ( 42, -16) ( 80, -50) ( 70, -60) ( 40, -80) ( 10,-100) + + + 8x5 GraphBLAS gauss matrix, bitmap by col + CTiles [k], 17 entries, memory: 576 bytes + + (7,0) [user-defined value] + (4,1) [user-defined value] + (5,1) [user-defined value] + (6,1) [user-defined value] + (7,1) [user-defined value] + (4,2) [user-defined value] + (5,2) [user-defined value] + (6,2) [user-defined value] + (7,2) [user-defined value] + (4,3) [user-defined value] + (5,3) [user-defined value] + (6,3) [user-defined value] + (7,3) [user-defined value] + (4,4) [user-defined value] + (5,4) [user-defined value] + (6,4) [user-defined value] + (7,4) [user-defined value] + + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bcb251ed7f212866 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bcb251ed7f212866' +[ 50%] Building C object CMakeFiles/GB_jit__subassign_22__1000eee0eec8__addgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/66/GB_jit__subassign_22__1000eee0eec8__addgauss.c.o +[100%] Linking C shared library libGB_jit__subassign_22__1000eee0eec8__addgauss.so +[100%] Built target GB_jit__subassign_22__1000eee0eec8__addgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/bcb251ed7f212866' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/66/libGB_jit__subassign_22__1000eee0eec8__addgauss.so + + 0.639 sec ] + + +=============== C = C + ciso + +size: 4-by-4 +row 0: ( 18, -16) ( 12, -19) ( 6, -22) ( 0, -25) +row 1: ( 39, -28) ( 35, -30) ( 21, -42) ( 7, -54) +row 2: ( 60, -40) ( 53, -46) ( 31, -62) ( 9, -78) +row 3: ( 81, -52) ( 71, -62) ( 41, -82) ( 11,-102) + + [ GxB_set + 6.48e-07 sec ] + [ GxB_Matrix_split (full split) (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b25a3ffd809024d5 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b25a3ffd809024d5' +[ 50%] Building C object CMakeFiles/GB_jit__split_full__0802ee0eef__gauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/d5/GB_jit__split_full__0802ee0eef__gauss.c.o +[100%] Linking C shared library libGB_jit__split_full__0802ee0eef__gauss.so +[100%] Built target GB_jit__split_full__0802ee0eef__gauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/b25a3ffd809024d5' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/d5/libGB_jit__split_full__0802ee0eef__gauss.so + + 0.612 sec ] + + +=============== S Tile from C: + +size: 1-by-2 +row 0: ( 18, -16) ( 12, -19) + + + 1x2 GraphBLAS gauss matrix, full by row + sparsity control: full + STiles [k], 2 entries, memory: 232 bytes + + (0,0) [user-defined value] + (0,1) [user-defined value] + + + +=============== S Tile from C: + +size: 1-by-2 +row 0: ( 6, -22) ( 0, -25) + + + 1x2 GraphBLAS gauss matrix, full by row + sparsity control: full + STiles [k], 2 entries, memory: 232 bytes + + (0,0) [user-defined value] + (0,1) [user-defined value] + + + +=============== S Tile from C: + +size: 3-by-2 +row 0: ( 39, -28) ( 35, -30) +row 1: ( 60, -40) ( 53, -46) +row 2: ( 81, -52) ( 71, -62) + + + 3x2 GraphBLAS gauss matrix, full by row + sparsity control: full + STiles [k], 6 entries, memory: 264 bytes + + (0,0) [user-defined value] + (0,1) [user-defined value] + (1,0) [user-defined value] + (1,1) [user-defined value] + (2,0) [user-defined value] + (2,1) [user-defined value] + + + +=============== S Tile from C: + +size: 3-by-2 +row 0: ( 21, -42) ( 7, -54) +row 1: ( 31, -62) ( 9, -78) +row 2: ( 41, -82) ( 11,-102) + + + 3x2 GraphBLAS gauss matrix, full by row + sparsity control: full + STiles [k], 6 entries, memory: 264 bytes + + (0,0) [user-defined value] + (0,1) [user-defined value] + (1,0) [user-defined value] + (1,1) [user-defined value] + (2,0) [user-defined value] + (2,1) [user-defined value] + +JIT: paused + + +=============== C: + +size: 4-by-4 +row 0: ( 18, -16) ( 12, -19) ( 6, -22) ( 0, -25) +row 1: ( 39, -28) ( 35, -30) ( 21, -42) ( 7, -54) +row 2: ( 60, -40) ( 53, -46) ( 31, -62) ( 9, -78) +row 3: ( 81, -52) ( 71, -62) ( 41, -82) ( 11,-102) + + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 3.18e-05 sec ] + + +=============== C = C + ciso (JIT paused): + +size: 4-by-4 +row 0: ( 19, -18) ( 13, -21) ( 7, -24) ( 1, -27) +row 1: ( 40, -30) ( 36, -32) ( 22, -44) ( 8, -56) +row 2: ( 61, -42) ( 54, -48) ( 32, -64) ( 10, -80) +row 3: ( 82, -54) ( 72, -64) ( 42, -84) ( 12,-104) + + + +=============== C: + +size: 4-by-4 +row 0: ( 19, -18) ( 13, -21) ( 7, -24) ( 1, -27) +row 1: ( 40, -30) ( 36, -32) ( 22, -44) ( 8, -56) +row 2: ( 61, -42) ( 54, -48) ( 32, -64) ( 10, -80) +row 3: ( 82, -54) ( 72, -64) ( 42, -84) ( 12,-104) + + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 1.81e-05 sec ] + + +=============== C = C * ciso (JIT paused): + +size: 4-by-4 +row 0: ( -17, -56) ( -29, -47) ( -41, -38) ( -53, -29) +row 1: ( -20,-110) ( -28,-104) ( -66, -88) (-104, -72) +row 2: ( -23,-164) ( -42,-156) ( -96,-128) (-150,-100) +row 3: ( -26,-218) ( -56,-208) (-126,-168) (-196,-128) + +JIT: run (may not load or compile) + [ GrB_assign (pending: 0) Method 22: (C full) += scalar + 1.4e-05 sec ] + + +=============== C = C + ciso (JIT run): + +size: 4-by-4 +row 0: ( -16, -58) ( -28, -49) ( -40, -40) ( -52, -31) +row 1: ( -19,-112) ( -27,-106) ( -65, -90) (-103, -74) +row 2: ( -22,-166) ( -41,-158) ( -95,-130) (-149,-102) +row 3: ( -25,-220) ( -55,-210) (-125,-170) (-195,-130) + + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (generic C(:,:)+=x assign) + 1.76e-05 sec ] + + +=============== C = C * ciso (JIT not loaded): + +size: 4-by-4 +row 0: (-132, -26) (-126, 7) (-120, 40) (-114, 73) +row 1: (-243, -74) (-239, -52) (-245, 40) (-251, 132) +row 2: (-354,-122) (-357, -76) (-355, 60) (-353, 196) +row 3: (-465,-170) (-475,-100) (-465, 80) (-455, 260) + +JIT: on + [ GrB_assign (pending: 0) Method 22: (C full) += scalar (jit: compile and load) (jit: cmake) +-- The C compiler identification is GNU 9.4.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.3s) +-- Generating done (0.0s) +-- Build files have been written to: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7a164201169278d1 +gmake[1]: Entering directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7a164201169278d1' +[ 50%] Building C object CMakeFiles/GB_jit__subassign_22__1000eee0eec8__multgauss.dir/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/d1/GB_jit__subassign_22__1000eee0eec8__multgauss.c.o +[100%] Linking C shared library libGB_jit__subassign_22__1000eee0eec8__multgauss.so +[100%] Built target GB_jit__subassign_22__1000eee0eec8__multgauss +gmake[1]: Leaving directory '/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/tmp/7a164201169278d1' +-- Install configuration: "" +-- Installing: /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/d1/libGB_jit__subassign_22__1000eee0eec8__multgauss.so + + 0.627 sec ] + + +=============== C = C * ciso (full JIT): + +size: 4-by-4 +row 0: (-184, 238) (-112, 259) ( -40, 280) ( 32, 301) +row 1: (-391, 412) (-343, 426) (-165, 530) ( 13, 634) +row 2: (-598, 586) (-509, 638) (-235, 770) ( 39, 902) +row 3: (-805, 760) (-675, 850) (-305,1010) ( 65,1170) + diff --git a/Demo/Output/import_demo.out b/Demo/Output/import_demo.out index 40e4c92eed..13be0e9b98 100644 --- a/Demo/Output/import_demo.out +++ b/Demo/Output/import_demo.out @@ -4,7 +4,7 @@ ========================= import_test: format 0 67x67 GraphBLAS double matrix, sparse by row - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (0,7) -0.834182 (0,12) 1.26582 @@ -40,7 +40,7 @@ ========================= import_test: format 1 67x67 GraphBLAS double matrix, sparse by row - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (0,7) -0.834182 (0,12) 1.26582 @@ -76,7 +76,7 @@ ========================= import_test: format 2 67x67 GraphBLAS double matrix, sparse by row - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (0,7) -0.834182 (0,12) 1.26582 @@ -112,7 +112,7 @@ ========================= import_test: format 3 67x67 GraphBLAS double matrix, sparse by row - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (0,7) -0.834182 (0,12) 1.26582 @@ -150,7 +150,7 @@ ========================= import_test: format 0 67x67 GraphBLAS double matrix, sparse by col - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (4,0) -0.278842 (5,0) -0.268019 @@ -186,7 +186,7 @@ ========================= import_test: format 1 67x67 GraphBLAS double matrix, sparse by col - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (4,0) -0.278842 (5,0) -0.268019 @@ -222,7 +222,7 @@ ========================= import_test: format 2 67x67 GraphBLAS double matrix, sparse by col - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (4,0) -0.278842 (5,0) -0.268019 @@ -258,7 +258,7 @@ ========================= import_test: format 3 67x67 GraphBLAS double matrix, sparse by col - C to export, 294 entries, memory: 9.2 KB + C to export, 294 entries, memory: 5.3 KB (4,0) -0.278842 (5,0) -0.268019 @@ -296,7 +296,7 @@ ========================= import_test: format 0 67x67 GraphBLAS double matrix, hypersparse by row - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (0,7) -0.834182 (0,12) 1.26582 @@ -332,7 +332,7 @@ ========================= import_test: format 1 67x67 GraphBLAS double matrix, hypersparse by row - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (0,7) -0.834182 (0,12) 1.26582 @@ -368,7 +368,7 @@ ========================= import_test: format 2 67x67 GraphBLAS double matrix, hypersparse by row - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (0,7) -0.834182 (0,12) 1.26582 @@ -404,7 +404,7 @@ ========================= import_test: format 3 67x67 GraphBLAS double matrix, hypersparse by row - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (0,7) -0.834182 (0,12) 1.26582 @@ -442,7 +442,7 @@ ========================= import_test: format 0 67x67 GraphBLAS double matrix, hypersparse by col - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (4,0) -0.278842 (5,0) -0.268019 @@ -478,7 +478,7 @@ ========================= import_test: format 1 67x67 GraphBLAS double matrix, hypersparse by col - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (4,0) -0.278842 (5,0) -0.268019 @@ -514,7 +514,7 @@ ========================= import_test: format 2 67x67 GraphBLAS double matrix, hypersparse by col - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (4,0) -0.278842 (5,0) -0.268019 @@ -550,7 +550,7 @@ ========================= import_test: format 3 67x67 GraphBLAS double matrix, hypersparse by col - C to export, 294 entries, memory: 10.2 KB + C to export, 294 entries, memory: 5.9 KB (4,0) -0.278842 (5,0) -0.268019 diff --git a/Demo/Output/openmp_demo.out b/Demo/Output/openmp_demo.out index da6ccd0671..7c05985184 100644 --- a/Demo/Output/openmp_demo.out +++ b/Demo/Output/openmp_demo.out @@ -1,26 +1,26 @@ Demo: ../build/openmp_demo: User threads in this program are OpenMP threads. -================= worker 1 starts: +================= worker 0 starts: ================= worker 6 starts: -================= worker 4 starts: - ================= worker 3 starts: -================= worker 7 starts: +================= worker 1 starts: + +================= worker 2 starts: ================= worker 5 starts: -================= worker 2 starts: +================= worker 4 starts: -================= worker 0 starts: +================= worker 7 starts: ------------------ worker 1 intentional error: +----------------- worker 0 intentional error: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1001 out of range; must be < 6 +Row index 1000 out of range; must be < 6 ----------------- worker 4 intentional error: GraphBLAS error: GrB_INVALID_INDEX @@ -42,97 +42,61 @@ GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) Row index 1007 out of range; must be < 6 ------------------ worker 0 intentional error: +----------------- worker 2 intentional error: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1000 out of range; must be < 6 +Row index 1002 out of range; must be < 6 ----------------- worker 5 intentional error: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) Row index 1005 out of range; must be < 6 ------------------ worker 2 intentional error: +----------------- worker 1 intentional error: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1002 out of range; must be < 6 - ------------------ worker 4 is done: - - 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes - - (0,0) 101004 - (0,1) 102004 - (0,2) 103004 - (0,3) 104004 - (0,4) 105004 - (0,5) 106004 - (1,0) 201004 - (1,1) 202004 - (1,2) 203004 - (1,3) 204004 - (1,4) 205004 - (1,5) 206004 - (2,0) 301004 - (2,1) 302004 - (2,2) 303004 - (2,3) 304004 - (2,4) 305004 - (2,5) 306004 - (3,0) 401004 - (3,1) 402004 - (3,2) 403004 - (3,3) 404004 - (3,4) 405004 - (3,5) 406004 - (4,0) 501004 - (4,1) 502004 - (4,2) 503004 - (4,3) 504004 - (4,4) 505004 - ... +Row index 1001 out of range; must be < 6 ------------------ worker 3 is done: +----------------- worker 0 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes - (0,0) 101003 - (0,1) 102003 - (0,2) 103003 - (0,3) 104003 - (0,4) 105003 - (0,5) 106003 - (1,0) 201003 - (1,1) 202003 - (1,2) 203003 - (1,3) 204003 - (1,4) 205003 - (1,5) 206003 - (2,0) 301003 - (2,1) 302003 - (2,2) 303003 - (2,3) 304003 - (2,4) 305003 - (2,5) 306003 - (3,0) 401003 - (3,1) 402003 - (3,2) 403003 - (3,3) 404003 - (3,4) 405003 - (3,5) 406003 - (4,0) 501003 - (4,1) 502003 - (4,2) 503003 - (4,3) 504003 - (4,4) 505003 + (0,0) 101000 + (0,1) 102000 + (0,2) 103000 + (0,3) 104000 + (0,4) 105000 + (0,5) 106000 + (1,0) 201000 + (1,1) 202000 + (1,2) 203000 + (1,3) 204000 + (1,4) 205000 + (1,5) 206000 + (2,0) 301000 + (2,1) 302000 + (2,2) 303000 + (2,3) 304000 + (2,4) 305000 + (2,5) 306000 + (3,0) 401000 + (3,1) 402000 + (3,2) 403000 + (3,3) 404000 + (3,4) 405000 + (3,5) 406000 + (4,0) 501000 + (4,1) 502000 + (4,2) 503000 + (4,3) 504000 + (4,4) 505000 ... ----------------- worker 1 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101001 (0,1) 102001 @@ -165,88 +129,78 @@ Row index 1002 out of range; must be < 6 (4,4) 505001 ... ------------------ worker 4 error should be same: -GraphBLAS error: GrB_INVALID_INDEX -function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1004 out of range; must be < 6 - ------------------ worker 2 is done: +----------------- worker 5 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes - (0,0) 101002 - (0,1) 102002 - (0,2) 103002 - (0,3) 104002 - (0,4) 105002 - (0,5) 106002 - (1,0) 201002 - (1,1) 202002 - (1,2) 203002 - (1,3) 204002 - (1,4) 205002 - (1,5) 206002 - (2,0) 301002 - (2,1) 302002 - (2,2) 303002 - (2,3) 304002 - (2,4) 305002 - (2,5) 306002 - (3,0) 401002 - (3,1) 402002 - (3,2) 403002 - (3,3) 404002 - (3,4) 405002 - (3,5) 406002 - (4,0) 501002 - (4,1) 502002 - (4,2) 503002 - (4,3) 504002 - (4,4) 505002 + (0,0) 101005 + (0,1) 102005 + (0,2) 103005 + (0,3) 104005 + (0,4) 105005 + (0,5) 106005 + (1,0) 201005 + (1,1) 202005 + (1,2) 203005 + (1,3) 204005 + (1,4) 205005 + (1,5) 206005 + (2,0) 301005 + (2,1) 302005 + (2,2) 303005 + (2,3) 304005 + (2,4) 305005 + (2,5) 306005 + (3,0) 401005 + (3,1) 402005 + (3,2) 403005 + (3,3) 404005 + (3,4) 405005 + (3,5) 406005 + (4,0) 501005 + (4,1) 502005 + (4,2) 503005 + (4,3) 504005 + (4,4) 505005 ... ------------------ worker 0 is done: +----------------- worker 6 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes - (0,0) 101000 - (0,1) 102000 - (0,2) 103000 - (0,3) 104000 - (0,4) 105000 - (0,5) 106000 - (1,0) 201000 - (1,1) 202000 - (1,2) 203000 - (1,3) 204000 - (1,4) 205000 - (1,5) 206000 - (2,0) 301000 - (2,1) 302000 - (2,2) 303000 - (2,3) 304000 - (2,4) 305000 - (2,5) 306000 - (3,0) 401000 - (3,1) 402000 - (3,2) 403000 - (3,3) 404000 - (3,4) 405000 - (3,5) 406000 - (4,0) 501000 - (4,1) 502000 - (4,2) 503000 - (4,3) 504000 - (4,4) 505000 + (0,0) 101006 + (0,1) 102006 + (0,2) 103006 + (0,3) 104006 + (0,4) 105006 + (0,5) 106006 + (1,0) 201006 + (1,1) 202006 + (1,2) 203006 + (1,3) 204006 + (1,4) 205006 + (1,5) 206006 + (2,0) 301006 + (2,1) 302006 + (2,2) 303006 + (2,3) 304006 + (2,4) 305006 + (2,5) 306006 + (3,0) 401006 + (3,1) 402006 + (3,2) 403006 + (3,3) 404006 + (3,4) 405006 + (3,5) 406006 + (4,0) 501006 + (4,1) 502006 + (4,2) 503006 + (4,3) 504006 + (4,4) 505006 ... ------------------ worker 2 error should be same: -GraphBLAS error: GrB_INVALID_INDEX -function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1002 out of range; must be < 6 - ----------------- worker 1 error should be same: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) @@ -255,7 +209,7 @@ Row index 1001 out of range; must be < 6 ----------------- worker 7 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101007 (0,1) 102007 @@ -288,51 +242,51 @@ Row index 1001 out of range; must be < 6 (4,4) 505007 ... ------------------ worker 3 error should be same: +----------------- worker 0 error should be same: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1003 out of range; must be < 6 +Row index 1000 out of range; must be < 6 ------------------ worker 5 is done: +----------------- worker 2 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes - (0,0) 101005 - (0,1) 102005 - (0,2) 103005 - (0,3) 104005 - (0,4) 105005 - (0,5) 106005 - (1,0) 201005 - (1,1) 202005 - (1,2) 203005 - (1,3) 204005 - (1,4) 205005 - (1,5) 206005 - (2,0) 301005 - (2,1) 302005 - (2,2) 303005 - (2,3) 304005 - (2,4) 305005 - (2,5) 306005 - (3,0) 401005 - (3,1) 402005 - (3,2) 403005 - (3,3) 404005 - (3,4) 405005 - (3,5) 406005 - (4,0) 501005 - (4,1) 502005 - (4,2) 503005 - (4,3) 504005 - (4,4) 505005 + (0,0) 101002 + (0,1) 102002 + (0,2) 103002 + (0,3) 104002 + (0,4) 105002 + (0,5) 106002 + (1,0) 201002 + (1,1) 202002 + (1,2) 203002 + (1,3) 204002 + (1,4) 205002 + (1,5) 206002 + (2,0) 301002 + (2,1) 302002 + (2,2) 303002 + (2,3) 304002 + (2,4) 305002 + (2,5) 306002 + (3,0) 401002 + (3,1) 402002 + (3,2) 403002 + (3,3) 404002 + (3,4) 405002 + (3,5) 406002 + (4,0) 501002 + (4,1) 502002 + (4,2) 503002 + (4,3) 504002 + (4,4) 505002 ... ------------------ worker 0 error should be same: +----------------- worker 6 error should be same: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1000 out of range; must be < 6 +Row index 1006 out of range; must be < 6 ----------------- worker 7 error should be same: GraphBLAS error: GrB_INVALID_INDEX @@ -344,51 +298,97 @@ GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) Row index 1005 out of range; must be < 6 ------------------ worker 6 is done: +----------------- worker 2 error should be same: +GraphBLAS error: GrB_INVALID_INDEX +function: GrB_Matrix_setElement_INT32 (C, row, col, x) +Row index 1002 out of range; must be < 6 + +----------------- worker 4 is done: 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes - (0,0) 101006 - (0,1) 102006 - (0,2) 103006 - (0,3) 104006 - (0,4) 105006 - (0,5) 106006 - (1,0) 201006 - (1,1) 202006 - (1,2) 203006 - (1,3) 204006 - (1,4) 205006 - (1,5) 206006 - (2,0) 301006 - (2,1) 302006 - (2,2) 303006 - (2,3) 304006 - (2,4) 305006 - (2,5) 306006 - (3,0) 401006 - (3,1) 402006 - (3,2) 403006 - (3,3) 404006 - (3,4) 405006 - (3,5) 406006 - (4,0) 501006 - (4,1) 502006 - (4,2) 503006 - (4,3) 504006 - (4,4) 505006 + (0,0) 101004 + (0,1) 102004 + (0,2) 103004 + (0,3) 104004 + (0,4) 105004 + (0,5) 106004 + (1,0) 201004 + (1,1) 202004 + (1,2) 203004 + (1,3) 204004 + (1,4) 205004 + (1,5) 206004 + (2,0) 301004 + (2,1) 302004 + (2,2) 303004 + (2,3) 304004 + (2,4) 305004 + (2,5) 306004 + (3,0) 401004 + (3,1) 402004 + (3,2) 403004 + (3,3) 404004 + (3,4) 405004 + (3,5) 406004 + (4,0) 501004 + (4,1) 502004 + (4,2) 503004 + (4,3) 504004 + (4,4) 505004 ... ------------------ worker 6 error should be same: +----------------- worker 3 is done: + + 6x6 GraphBLAS double matrix, full by row + A, 36 entries, memory: 504 bytes + + (0,0) 101003 + (0,1) 102003 + (0,2) 103003 + (0,3) 104003 + (0,4) 105003 + (0,5) 106003 + (1,0) 201003 + (1,1) 202003 + (1,2) 203003 + (1,3) 204003 + (1,4) 205003 + (1,5) 206003 + (2,0) 301003 + (2,1) 302003 + (2,2) 303003 + (2,3) 304003 + (2,4) 305003 + (2,5) 306003 + (3,0) 401003 + (3,1) 402003 + (3,2) 403003 + (3,3) 404003 + (3,4) 405003 + (3,5) 406003 + (4,0) 501003 + (4,1) 502003 + (4,2) 503003 + (4,3) 504003 + (4,4) 505003 + ... + +----------------- worker 4 error should be same: GraphBLAS error: GrB_INVALID_INDEX function: GrB_Matrix_setElement_INT32 (C, row, col, x) -Row index 1006 out of range; must be < 6 +Row index 1004 out of range; must be < 6 + +----------------- worker 3 error should be same: +GraphBLAS error: GrB_INVALID_INDEX +function: GrB_Matrix_setElement_INT32 (C, row, col, x) +Row index 1003 out of range; must be < 6 ---- Leader prints matrix 0 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101000 (0,1) 102000 @@ -424,7 +424,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 1 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101001 (0,1) 102001 @@ -460,7 +460,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 2 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101002 (0,1) 102002 @@ -496,7 +496,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 3 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101003 (0,1) 102003 @@ -532,7 +532,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 4 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101004 (0,1) 102004 @@ -568,7 +568,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 5 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101005 (0,1) 102005 @@ -604,7 +604,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 6 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101006 (0,1) 102006 @@ -640,7 +640,7 @@ Row index 1006 out of range; must be < 6 ---- Leader prints matrix 7 6x6 GraphBLAS double matrix, full by row - A, 36 entries, memory: 768 bytes + A, 36 entries, memory: 504 bytes (0,0) 101007 (0,1) 102007 diff --git a/Demo/Output/wildtype_demo.out b/Demo/Output/wildtype_demo.out index cdf36412fc..24fc339563 100644 --- a/Demo/Output/wildtype_demo.out +++ b/Demo/Output/wildtype_demo.out @@ -1,5 +1,5 @@ [ GxB_Type_new - 9.86e-06 sec ] + 9.21e-06 sec ] GraphBLAS type: WildType user-defined: [wildtype] size: 192 typedef struct { double stuff [4][4] ; char whatstuff [64] ; } wildtype ; WildType size: 192 @@ -11,8 +11,8 @@ a wildtype scalar: scalar1 [this is from scalar1] 100.0 101.0 102.0 103.0 200.0 201.0 202.0 203.0 300.0 301.0 302.0 303.0 -(iso wait:C (setElement:to non-iso) 0 zombies, 1 pending) [ GrB_transpose (wait:A 0 zombies, 2 pending) (build) (jit: load) add:(H<.>=H+H) (jit: load) (hyper to sparse) (transpose) (builder transpose) (jit: run) (hyper to sparse) - 0.000947 sec ] +(iso wait:C (setElement:to non-iso) 0 zombies, 1 pending) [ GrB_transpose (wait:A 0 zombies, 2 pending) (build) (jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/de/GB_jit__build__02eeeee__wildtype.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/de/GB_jit__build__02eeeee__wildtype.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/de/libGB_jit__build__02eeeee__wildtype.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/de/GB_jit__build__02eeeee__wildtype.o -lm -ldl -lgomp -lpthread ") add:(H<.>=H+H) (jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/77/GB_jit__add__1002e0e0eee00__wildtype.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/77/GB_jit__add__1002e0e0eee00__wildtype.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/77/libGB_jit__add__1002e0e0eee00__wildtype.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/77/GB_jit__add__1002e0e0eee00__wildtype.o -lm -ldl -lgomp -lpthread ") (hyper to sparse) (transpose) (builder transpose) (hyper to sparse) + 0.535 sec ] a wildtype scalar: got scalar2 = C(7,2) [this is A(2,7)] 0.0 1.0 2.0 3.0 @@ -139,7 +139,7 @@ Printing the matrix with GxB_Matrix_fprint: (3,7) [user-defined value] [ GrB_Matrix_nvals - 7.73e-07 sec ] + 1.3e-06 sec ] ============= printing the WildType matrix: input A (10-by-10 with 3 entries) @@ -183,8 +183,8 @@ Printing the matrix with GxB_Matrix_fprint: row: 4 col: 2 [user-defined value] pending operator: implicit 2nd - [ GrB_Matrix_nvals (wait:A 0 zombies, 2 pending) (build) (jit: run) add:(H<.>=H+H) (jit: run) (hyper to sparse) - 3.68e-05 sec ] + [ GrB_Matrix_nvals (wait:A 0 zombies, 2 pending) (build) add:(H<.>=H+H) (hyper to sparse) + 0.000289 sec ] ============= printing the WildType matrix: input B (10-by-10 with 3 entries) @@ -213,8 +213,8 @@ a wildtype scalar: [here is B(7,5)] -2.5 -1.5 -0.5 0.5 ============= that was the WildType matrix input B - [ GrB_mxm C=A*B, saxpy (S = S*S, anz: 3 bnz: 3) axbwork 8 (intensity: 1.14 workspace/(nnz(A)+nnz(B)): 1.43) (nthreads 1 coarse: 1) (sparse saxpy) (jit: load) - 0.000114 sec ] + [ GrB_mxm C=A*B, saxpy (S = S*S, anz: 3 bnz: 3) axbwork 8 (intensity: 1.14 workspace/(nnz(A)+nnz(B)): 1.43) (nthreads 1 coarse: 1) (sparse saxpy) (jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/21/GB_jit__AxB_saxpy3__03fe100eee0eee45__wildadd_wildmult.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/21/GB_jit__AxB_saxpy3__03fe100eee0eee45__wildadd_wildmult.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/21/libGB_jit__AxB_saxpy3__03fe100eee0eee45__wildadd_wildmult.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/21/GB_jit__AxB_saxpy3__03fe100eee0eee45__wildadd_wildmult.o -lm -ldl -lgomp -lpthread ") + 0.963 sec ] Printing the matrix with GxB_Matrix_fprint: @@ -227,7 +227,7 @@ Printing the matrix with GxB_Matrix_fprint: (3,5) [user-defined value] [ GrB_Matrix_nvals - 8.48e-08 sec ] + 3.43e-07 sec ] ============= printing the WildType matrix: output C (10-by-10 with 4 entries) @@ -274,15 +274,16 @@ The mask matrix M: iso value: 1 pending tuples: 4 max pending: 256 zombies: 0 pending tuples: - GraphBLAS type: int32_t size: 4 + GraphBLAS type: bool size: 1 row: 2 col: 2 row: 2 col: 3 row: 3 col: 2 row: 3 col: 3 pending operator: implicit 2nd - [ GrB_mxm (iso wait:M 0 zombies, 4 pending) (iso build) (hyper to sparse) C=A'*B, masked_dot_product (dot3) (S{S} = S'*S) nthreads 1 ntasks 1 (jit: load) - 9.23e-05 sec ] + [ GrB_mxm (iso wait:M 0 zombies, 4 pending) (iso build) (hyper to sparse) C=A'*B, masked_dot_product (dot3) (S{S} = S'*S) Not using cuda path: type size not supported +nthreads 1 ntasks 1 (jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/0f/GB_jit__AxB_dot3__03fe100eee2eee55__wildadd_wildmult.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/0f/GB_jit__AxB_dot3__03fe100eee2eee55__wildadd_wildmult.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/0f/libGB_jit__AxB_dot3__03fe100eee2eee55__wildadd_wildmult.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/0f/GB_jit__AxB_dot3__03fe100eee2eee55__wildadd_wildmult.o -lm -ldl -lgomp -lpthread ") + 0.563 sec ] Printing the matrix with GxB_Matrix_fprint: @@ -295,7 +296,7 @@ Printing the matrix with GxB_Matrix_fprint: (3,3) [user-defined value] [ GrB_Matrix_nvals - 6.89e-08 sec ] + 3.2e-07 sec ] ============= printing the WildType matrix: output C (10-by-10 with 4 entries) @@ -332,24 +333,26 @@ a wildtype scalar: [this was added] -13424304.0 -2565388.0 6850828.0 16267044.0 ============= that was the WildType matrix output C - [ GrB_reduce (jit: load) - 4.75e-05 sec ] + [ GrB_reduce Not using cuda path: type size not supported +(jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b7/GB_jit__reduce__03feee1__wildadd.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b7/GB_jit__reduce__03feee1__wildadd.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/b7/libGB_jit__reduce__03feee1__wildadd.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/b7/GB_jit__reduce__03feee1__wildadd.o -lm -ldl -lgomp -lpthread ") + 0.24 sec ] a wildtype scalar: sum (first time) [this was added] -111773.5 269.5 93412.5 583455.5 -49510798.5 271594.5 43367587.5 319487980.5 -92402621.5 2801413.5 85075148.5 622622583.5 -149241466.8 471094.8 130123106.2 959972867.8 - [ GrB_reduce (jit: run) - 3.14e-06 sec ] + [ GrB_reduce Not using cuda path: type size not supported + + 1.59e-05 sec ] a wildtype scalar: sum (again) [this was added] -111773.5 269.5 93412.5 583455.5 -49510798.5 271594.5 43367587.5 319487980.5 -92402621.5 2801413.5 85075148.5 622622583.5 -149241466.8 471094.8 130123106.2 959972867.8 - [ GxB_set (transpose) (in-place transpose) (transpose) (1-thread bucket transpose) (jit: load) - 6.21e-05 sec ] + [ GxB_set (transpose) (in-place transpose) (transpose) (1-thread bucket transpose) (jit: compile and load) (jit: sh -c "/usr/bin/cc -DGB_JIT_RUNTIME=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -I/home/faculty/d/davis/.SuiteSparse/GrB8.3.0/src -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/6c/GB_jit__trans_unop__0802ee0ee5__wildtype.o -c /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/6c/GB_jit__trans_unop__0802ee0ee5__wildtype.c ; /usr/bin/cc -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC -shared -o /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/lib/6c/libGB_jit__trans_unop__0802ee0ee5__wildtype.so /home/faculty/d/davis/.SuiteSparse/GrB8.3.0/c/6c/GB_jit__trans_unop__0802ee0ee5__wildtype.o -lm -ldl -lgomp -lpthread ") + 0.216 sec ] C is now stored by column, but it looks just the same to the GraphBLAS user application. The difference is opaque, in the @@ -366,7 +369,7 @@ Printing the matrix with GxB_Matrix_fprint: (3,3) [user-defined value] [ GrB_Matrix_nvals - 5.63e-08 sec ] + 2.43e-07 sec ] ============= printing the WildType matrix: output C (10-by-10 with 4 entries) @@ -412,7 +415,7 @@ Printing the matrix with GxB_Matrix_fprint: The matrix D is not wild enough to print. [ GrB_apply (shallow-op) - 1.25e-05 sec ] + 2.92e-05 sec ] 10x10 GraphBLAS int64_t matrix, sparse by row E (positional i), 3 entries, memory: 352 bytes @@ -422,7 +425,7 @@ The matrix D is not wild enough to print. (3,7) 3 [ GrB_apply (shallow-op) - 3.55e-06 sec ] + 1.15e-05 sec ] 10x10 GraphBLAS int64_t matrix, sparse by row E (positional j), 3 entries, memory: 352 bytes @@ -432,7 +435,7 @@ The matrix D is not wild enough to print. (3,7) 7 [ GrB_eWiseAdd - 3.09e-06 sec ] + 6.52e-06 sec ] This is supposed to fail, as a demo of GrB_error: GraphBLAS error: GrB_DOMAIN_MISMATCH diff --git a/Demo/Program/gauss_demo.c b/Demo/Program/gauss_demo.c index bbaab05dcc..ec6d3747ac 100644 --- a/Demo/Program/gauss_demo.c +++ b/Demo/Program/gauss_demo.c @@ -141,26 +141,31 @@ void ijgauss (int64_t *z, const gauss *x, GrB_Index i, GrB_Index j, // since the matrix is small. #undef OK -#define OK(x) \ -{ \ - if (!(x)) \ - { \ - printf ("info: %d error! Line %d\n", info, __LINE__) ; \ - fflush (stdout) ; \ - abort ( ) ; \ - } \ +#define OK(x) \ +{ \ + if (!(x)) \ + { \ + printf ("info: %d error! File %s, Line %d\n", \ + info, __FILE__, __LINE__) ; \ + fprintf (stderr, "info: %d error! File %s, Line %d\n", \ + info, __FILE__, __LINE__) ; \ + fflush (stdout) ; \ + fflush (stderr) ; \ + abort ( ) ; \ + } \ } #undef TRY #define TRY(method) \ { \ - GrB_Info info = method ; \ + info = (method) ; \ OK (info == GrB_SUCCESS) ; \ } void printgauss (GrB_Matrix A, char *name) { // print the matrix + GrB_Info info = GrB_SUCCESS ; GrB_Index m, n ; TRY (GrB_Matrix_nrows (&m, A)) ; TRY (GrB_Matrix_ncols (&n, A)) ; @@ -171,7 +176,7 @@ void printgauss (GrB_Matrix A, char *name) for (int j = 0 ; j < n ; j++) { gauss a ; - GrB_Info info = GrB_Matrix_extractElement_UDT (&a, A, i, j) ; + info = GrB_Matrix_extractElement_UDT (&a, A, i, j) ; if (info == GrB_NO_VALUE) { printf (" . ") ; @@ -193,11 +198,19 @@ void printgauss (GrB_Matrix A, char *name) int main (void) { + fprintf (stderr, "\ngauss_demo:\n") ; + // start GraphBLAS - GrB_Info info ; + GrB_Info info = GrB_SUCCESS ; TRY (GrB_init (GrB_NONBLOCKING)) ; TRY (GxB_Global_Option_set (GxB_BURBLE, true)) ; + + // try using cmake to build all JIT kernels, just as a test. This setting + // is ignored by Windows (for MSVC it is treated as always true, and for + // MINGW it is treated as always false). Only Linux and Mac can change + // this setting. TRY (GxB_Global_Option_set (GxB_JIT_USE_CMAKE, true)) ; + printf ("Gauss demo. Note that all transposes are array transposes,\n" "not matrix (conjugate) transposes.\n\n") ; @@ -205,9 +218,10 @@ int main (void) // TRY (GxB_Global_Option_set (GxB_JIT_ERROR_LOG, "/tmp/grb_jit_errors.txt")) ; // try changing the cache path -// TRY (GxB_Global_Option_set (GxB_JIT_CACHE_PATH, "/home/faculty/d/davis/mycache")) ; +// TRY (GxB_Global_Option_set (GxB_JIT_CACHE_PATH, +// "/home/faculty/d/davis/mycache")) ; - TRY (GxB_Context_fprint (GxB_CONTEXT_WORLD, "World", GxB_COMPLETE, stdout)) ; + TRY (GxB_Context_fprint (GxB_CONTEXT_WORLD, "World", GxB_COMPLETE, stdout)); char *compiler, *cache, *flags, *link, *libraries, *preface ; int control ; TRY (GxB_Global_Option_get (GxB_JIT_C_COMPILER_NAME, &compiler)) ; @@ -227,9 +241,11 @@ int main (void) printf ("JIT C control: [%d]\n", control) ; TRY (GxB_Global_Option_set (GxB_JIT_C_CONTROL, GxB_JIT_ON)) ; TRY (GxB_Global_Option_get (GxB_JIT_C_CONTROL, &control)) ; + int save = control ; printf ("JIT C control: [%d] reset\n", control) ; printf ("-------------------------------------\n\n") ; + // revise the header for each JIT kernel; this is not required but appears // here just as a demo of the feature. TRY (GxB_Global_Option_set (GxB_JIT_C_PREFACE, @@ -259,6 +275,12 @@ int main (void) OK (sizeof_gauss == sizeof (badgauss)) ; GrB_Type_free (&BadGauss) ; + // the JIT should have been successful, unless it was originally off + #define OK_JIT \ + TRY (GxB_Global_Option_get (GxB_JIT_C_CONTROL, &control)) ; \ + OK (control == save) ; + OK_JIT + // create the Gauss type, and let the JIT determine the size. This causes // an intentional name collision. The new 'gauss' type does not match the // old one (above), and this will be safely detected. The burble will say @@ -281,6 +303,7 @@ int main (void) TRY (GxB_Type_size (&sizeof_gauss, Gauss)) ; // printf ("sizeof_gauss %lu %lu\n", sizeof_gauss, sizeof (gauss)) ; OK (sizeof_gauss == sizeof (gauss)) ; + OK_JIT } // create the BadAddGauss operator; use a NULL function pointer to test the @@ -300,6 +323,7 @@ int main (void) TRY (GxB_BinaryOp_fprint (BadAddGauss, "BadAddGauss", GxB_COMPLETE, stdout)) ; GrB_BinaryOp_free (&BadAddGauss) ; + OK_JIT // create the AddGauss operator; use a NULL function pointer to test the // JIT. Causes an intentional name collision because of reusing the name @@ -321,6 +345,7 @@ int main (void) Gauss, Gauss, Gauss)) ; } TRY (GxB_BinaryOp_fprint (AddGauss, "AddGauss", GxB_COMPLETE, stdout)) ; + OK_JIT } // printf ("JIT: off\n") ; @@ -370,14 +395,17 @@ int main (void) // a = sum (A) TRY (GrB_Matrix_reduce_UDT (&a, NULL, AddMonoid, A, NULL)) ; printf ("\nsum (A) = (%d,%d)\n", a.real, a.imag) ; + OK_JIT // A = A*A TRY (GrB_mxm (A, NULL, NULL, GaussSemiring, A, A, NULL)) ; printgauss (A, "\n=============== Gauss A = A^2 matrix:\n") ; + OK_JIT // a = sum (A) TRY (GrB_Matrix_reduce_UDT (&a, NULL, AddMonoid, A, NULL)) ; printf ("\nsum (A^2) = (%d,%d)\n", a.real, a.imag) ; + OK_JIT // C = A*A' where A and D are sparse GrB_Matrix C ; @@ -387,6 +415,7 @@ int main (void) TRY (GxB_Matrix_Option_set (D, GxB_SPARSITY_CONTROL, GxB_SPARSE)) ; TRY (GrB_mxm (C, D, NULL, GaussSemiring, A, A, GrB_DESC_T1)) ; printgauss (C, "\n=============== Gauss C = diag(AA') matrix:\n") ; + OK_JIT // C = D*A GrB_Matrix_free (&D) ; @@ -397,6 +426,7 @@ int main (void) printgauss (D, "\nGauss D matrix") ; TRY (GrB_mxm (C, NULL, NULL, GaussSemiring, D, A, NULL)) ; printgauss (C, "\n=============== Gauss C = D*A matrix:\n") ; + OK_JIT // convert D to bitmap then back to sparse TRY (GxB_Matrix_Option_set (D, GxB_SPARSITY_CONTROL, GxB_SPARSE)) ; @@ -406,10 +436,12 @@ int main (void) TRY (GxB_Matrix_Option_set (D, GxB_SPARSITY_CONTROL, GxB_SPARSE)) ; printgauss (D, "\nGauss D matrix (back to sparse)") ; TRY (GxB_Matrix_fprint (D, "D", GxB_COMPLETE, stdout)) ; + OK_JIT // C = A*D TRY (GrB_mxm (C, NULL, NULL, GaussSemiring, A, D, NULL)) ; printgauss (C, "\n=============== Gauss C = A*D matrix:\n") ; + OK_JIT // C = (1,2) then C += A*A' where C is full gauss ciso ; @@ -421,6 +453,7 @@ int main (void) printgauss (A, "\n=============== Gauss A matrix:\n") ; TRY (GrB_mxm (C, NULL, AddGauss, GaussSemiring, A, A, GrB_DESC_T1)) ; printgauss (C, "\n=============== Gauss C += A*A' matrix:\n") ; + OK_JIT // C += B*A where B is full and A is sparse GrB_Matrix B ; @@ -430,30 +463,36 @@ int main (void) printgauss (B, "\n=============== Gauss B = (1,-2) matrix:\n") ; TRY (GrB_mxm (C, NULL, AddGauss, GaussSemiring, B, A, NULL)) ; printgauss (C, "\n=============== Gauss C += B*A:\n") ; + OK_JIT // C += A*B where B is full and A is sparse TRY (GrB_mxm (C, NULL, AddGauss, GaussSemiring, A, B, NULL)) ; printgauss (C, "\n=============== Gauss C += A*B:\n") ; + OK_JIT // C = ciso+A TRY (GrB_Matrix_apply_BinaryOp1st_UDT (C, NULL, NULL, AddGauss, (void *) &ciso, A, NULL)) ; printgauss (C, "\n=============== Gauss C = (1,-2) + A:\n") ; + OK_JIT // C = A*ciso TRY (GrB_Matrix_apply_BinaryOp2nd_UDT (C, NULL, NULL, MultGauss, A, (void *) &ciso, NULL)) ; printgauss (C, "\n=============== Gauss C = A*(1,-2):\n") ; + OK_JIT // C = A'*ciso TRY (GrB_Matrix_apply_BinaryOp2nd_UDT (C, NULL, NULL, MultGauss, A, (void *) &ciso, GrB_DESC_T0)) ; printgauss (C, "\n=============== Gauss C = A'*(1,-2):\n") ; + OK_JIT // C = ciso*A' TRY (GrB_Matrix_apply_BinaryOp1st_UDT (C, NULL, NULL, MultGauss, (void *) &ciso, A, GrB_DESC_T1)) ; printgauss (C, "\n=============== Gauss C = (1,-2)*A':\n") ; + OK_JIT // create the RealGauss unary op GrB_UnaryOp RealGauss ; @@ -462,14 +501,19 @@ int main (void) TRY (GxB_UnaryOp_fprint (RealGauss, "RealGauss", GxB_COMPLETE, stdout)) ; GrB_Matrix R ; TRY (GrB_Matrix_new (&R, GrB_INT32, 4, 4)) ; + OK_JIT + // R = RealGauss (C) TRY (GrB_Matrix_apply (R, NULL, NULL, RealGauss, C, NULL)) ; TRY (GxB_Matrix_fprint (R, "R", GxB_COMPLETE, stdout)) ; + OK_JIT + // R = RealGauss (C') printgauss (C, "\n=============== R = RealGauss (C')\n") ; TRY (GrB_Matrix_apply (R, NULL, NULL, RealGauss, C, GrB_DESC_T0)) ; TRY (GxB_Matrix_fprint (R, "R", GxB_COMPLETE, stdout)) ; GrB_Matrix_free (&R) ; + OK_JIT // create the IJGauss IndexUnaryOp GrB_IndexUnaryOp IJGauss ; @@ -488,10 +532,13 @@ int main (void) { printf ("R (%d,%d) = %g\n", (int) I [k], (int) J [k], X [k]) ; } + OK_JIT + // C = C' printgauss (C, "\n=============== C\n") ; TRY (GrB_transpose (C, NULL, NULL, C, NULL)) ; printgauss (C, "\n=============== C = C'\n") ; + OK_JIT for (int trial = 0 ; trial <= 1 ; trial++) { @@ -508,6 +555,7 @@ int main (void) TRY (GxB_Matrix_concat (Z, (GrB_Matrix *) Tiles, 3, 2, NULL)) ; printgauss (Z, "\n=============== Z = [C D ; E E ; D C]") ; TRY (GxB_Matrix_fprint (Z, "Z", GxB_COMPLETE, stdout)) ; + OK_JIT GrB_Matrix CTiles [4] ; GrB_Index Tile_nrows [2] ; @@ -517,6 +565,7 @@ int main (void) Tile_ncols [0] = 3 ; Tile_ncols [1] = 5 ; TRY (GxB_Matrix_split (CTiles, 2, 2, Tile_nrows, Tile_ncols, Z, NULL)) ; + OK_JIT for (int k = 0 ; k < 4 ; k++) { @@ -524,6 +573,7 @@ int main (void) TRY (GxB_Matrix_fprint (CTiles [k], "CTiles [k]", GxB_COMPLETE, stdout)) ; GrB_Matrix_free (& (CTiles [k])) ; + OK_JIT } GrB_Matrix_free (&Z) ; @@ -532,11 +582,13 @@ int main (void) // try using cmake instead of a direct compile/link command TRY (GxB_Global_Option_set (GxB_JIT_USE_CMAKE, true)) ; + OK_JIT // C += ciso TRY (GrB_Matrix_assign_UDT (C, NULL, AddGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C + ciso\n") ; + OK_JIT // split the full matrix C TRY (GxB_Matrix_Option_set (C, GxB_SPARSITY_CONTROL, GxB_FULL)) ; @@ -544,6 +596,7 @@ int main (void) GrB_Index Tile_nrows [2] = { 1, 3 } ; GrB_Index Tile_ncols [2] = { 2, 2 } ; TRY (GxB_Matrix_split (STiles, 2, 2, Tile_nrows, Tile_ncols, C, NULL)) ; + OK_JIT for (int k = 0 ; k < 4 ; k++) { @@ -551,57 +604,64 @@ int main (void) TRY (GxB_Matrix_fprint (STiles [k], "STiles [k]", GxB_COMPLETE, stdout)) ; GrB_Matrix_free (& (STiles [k])) ; + OK_JIT } // pause the JIT printf ("JIT: paused\n") ; TRY (GxB_Global_Option_set (GxB_JIT_C_CONTROL, GxB_JIT_PAUSE)) ; + TRY (GxB_Global_Option_get (GxB_JIT_C_CONTROL, &control)) ; + save = control ; + OK_JIT // C += ciso printgauss (C, "\n=============== C: \n") ; TRY (GrB_Matrix_assign_UDT (C, NULL, AddGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C + ciso (JIT paused):\n") ; + OK_JIT // C *= ciso printgauss (C, "\n=============== C: \n") ; TRY (GrB_Matrix_assign_UDT (C, NULL, MultGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C * ciso (JIT paused):\n") ; + OK_JIT // re-enable the JIT, but not to compile anything new - printf ("JIT: run (may not load or compile)\n") ; + printf ("JIT: run (the JIT can only run, not load or compile)\n") ; TRY (GxB_Global_Option_set (GxB_JIT_C_CONTROL, GxB_JIT_RUN)) ; + TRY (GxB_Global_Option_get (GxB_JIT_C_CONTROL, &control)) ; + save = control ; + OK_JIT // C += ciso, using the previous loaded JIT kernel TRY (GrB_Matrix_assign_UDT (C, NULL, AddGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C + ciso (JIT run):\n") ; + OK_JIT // C *= ciso, but using generic since it is not compiled TRY (GrB_Matrix_assign_UDT (C, NULL, MultGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C * ciso (JIT not loaded):\n") ; + OK_JIT // re-enable the JIT entirely printf ("JIT: on\n") ; TRY (GxB_Global_Option_set (GxB_JIT_C_CONTROL, GxB_JIT_ON)) ; + TRY (GxB_Global_Option_get (GxB_JIT_C_CONTROL, &control)) ; + save = control ; + OK_JIT // C *= ciso, compiling a new JIT kernel if needed TRY (GrB_Matrix_assign_UDT (C, NULL, MultGauss, (void *) &ciso, GrB_ALL, 4, GrB_ALL, 4, NULL)) ; printgauss (C, "\n=============== C = C * ciso (full JIT):\n") ; + OK_JIT gauss result ; TRY (GrB_Matrix_extractElement_UDT (&result, C, 3, 3)) ; - if (result.real == 65 && result.imag == 1170) - { - fprintf (stderr, "gauss_demo: all tests pass\n") ; - } - else - { - fprintf (stderr, "gauss_demo: test failure\n") ; - } // free everything and finalize GraphBLAS GrB_Matrix_free (&A) ; @@ -616,6 +676,19 @@ int main (void) GrB_Monoid_free (&AddMonoid) ; GrB_BinaryOp_free (&MultGauss) ; GrB_Semiring_free (&GaussSemiring) ; + OK_JIT GrB_finalize ( ) ; + + // return result + bool ok = (result.real == 65 && result.imag == 1170) ; + if (ok) + { + fprintf (stderr, "gauss_demo: all tests pass\n") ; + } + else + { + fprintf (stderr, "gauss_demo: test failure\n") ; + } + return (ok ? 0 : 1) ; } diff --git a/Demo/Program/simple_demo.c b/Demo/Program/simple_demo.c index c562106ccb..4739e80c27 100644 --- a/Demo/Program/simple_demo.c +++ b/Demo/Program/simple_demo.c @@ -9,7 +9,7 @@ /* A simple test that illustrates the use of simple_rand. - This test does not require C11, nor GraphBLAS. It only tests the + This test does not require ANSI C11, nor GraphBLAS. It only tests the simple_* Demo functions. The output of this test should look like the following. The random numbers should be the same. On a Mac OSX system: diff --git a/Demo/Program/wildtype_demo.c b/Demo/Program/wildtype_demo.c index af10b941f3..aa5cd95c46 100644 --- a/Demo/Program/wildtype_demo.c +++ b/Demo/Program/wildtype_demo.c @@ -189,9 +189,7 @@ void wildmult (wildtype *z, const wildtype *x, const wildtype *y) //------------------------------------------------------------------------------ #define LINE \ -"----------------------------------------------------------------------------\n" -#define LINE2 \ -"============================================================================\n" +"--------------------------------------------------------\n" int main (void) { @@ -208,17 +206,7 @@ int main (void) GxB_Global_Option_set (GxB_BURBLE, true) ; int nthreads ; GxB_Global_Option_get (GxB_GLOBAL_NTHREADS, &nthreads) ; - fprintf (stderr, "wildtype demo: nthreads %d\n", nthreads) ; - - /* via #defines: - fprintf (stderr, LINE2 "SuiteSparse:GraphBLAS Version %d.%d.%d, %s\n" LINE2 - "%s" LINE "License: %s" LINE "GraphBLAS API Version %d.%d.%d, %s" - " (http://graphblas.org)\n%s" LINE2, GxB_IMPLEMENTATION_MAJOR, - GxB_IMPLEMENTATION_MINOR, GxB_IMPLEMENTATION_SUB, - GxB_IMPLEMENTATION_DATE, GxB_IMPLEMENTATION_ABOUT, - GxB_IMPLEMENTATION_LICENSE, GxB_SPEC_MAJOR, GxB_SPEC_MINOR, - GxB_SPEC_SUB, GxB_SPEC_DATE, GxB_SPEC_ABOUT) ; - */ + fprintf (stderr, "\n" LINE "wildtype_demo: nthreads: %d\n", nthreads ) ; char *library ; GxB_Global_Option_get (GxB_LIBRARY_NAME, &library) ; int version [3] ; GxB_Global_Option_get (GxB_LIBRARY_VERSION, version) ; @@ -233,9 +221,9 @@ int main (void) char *api_about ; GxB_Global_Option_get (GxB_API_ABOUT, &api_about) ; char *api_url ; GxB_Global_Option_get (GxB_API_URL, &api_url) ; - fprintf (stderr, LINE2 "%s Version %d.%d.%d, %s\n" LINE2 "%s" + fprintf (stderr, LINE "%s Version %d.%d.%d, %s\n" LINE "%s" "(%s)\n" LINE "License:\n%s" LINE "GraphBLAS API Version %d.%d.%d, %s" - " (%s)\n%s" LINE2, + " (%s)\n%s" LINE, library, version [0], version [1], version [2], date, about, url, license, api_ver [0], api_ver [1], api_ver [2], api_date, api_url, api_about) ; @@ -460,5 +448,6 @@ int main (void) GrB_Type_free (&WildType) ; GrB_finalize ( ) ; + fprintf (stderr, "\n" LINE) ; } diff --git a/Demo/demo b/Demo/demo index 4b9d2e55cf..db8d2fa7aa 100755 --- a/Demo/demo +++ b/Demo/demo @@ -3,14 +3,14 @@ # SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 -../build/simple_demo > simple_demo.out -../build/complex_demo > complex_demo_out.m -../build/complex_demo 1 > complex_demo_out2.m -../build/openmp_demo > openmp_demo.out +../build/simple_demo > ../build/simple_demo.out +../build/complex_demo > ../build/complex_demo_out.m +../build/complex_demo 1 > ../build/complex_demo_out2.m +../build/openmp_demo > ../build/openmp_demo.out -../build/import_demo < Matrix/west0067 > import_demo.out -../build/wildtype_demo > wildtype_demo.out +../build/import_demo < Matrix/west0067 > ../build/import_demo.out +../build/wildtype_demo > ../build/wildtype_demo.out -../build/gauss_demo > gauss_demo1.out -../build/gauss_demo > gauss_demo.out +../build/gauss_demo > ../build/gauss_demo1.out +../build/gauss_demo > ../build/gauss_demo.out exit 0 diff --git a/Demo/vdemo b/Demo/vdemo index 798584ecaa..1835a942ff 100755 --- a/Demo/vdemo +++ b/Demo/vdemo @@ -6,19 +6,19 @@ # V="valgrind --error-limit=no --tool=memcheck -q --log-file=valgrind_%p.log --leak-check=full --show-leak-kinds=all" V="valgrind --error-limit=no --tool=memcheck -q --log-file=valgrind_%p.log" -$V ../build/simple_demo > simple_demo.out -$V ../build/complex_demo > complex_demo_out.m -$V ../build/complex_demo 1 > complex_demo_out2.m -$V ../build/openmp_demo > openmp_demo.out +$V ../build/simple_demo > ../build/simple_demo.out +$V ../build/complex_demo > ../build/complex_demo_out.m +$V ../build/complex_demo 1 > ../build/complex_demo_out2.m +$V ../build/openmp_demo > ../build/openmp_demo.out -$V ../build/import_demo < Matrix/west0067 > import_demo.out -$V ../build/wildtype_demo > wildtype_demo.out +$V ../build/import_demo < Matrix/west0067 > ../build/import_demo.out +$V ../build/wildtype_demo > ../build/wildtype_demo.out $V ../build/gauss_demo echo "Comparing output:" -diff Output/simple_demo.out simple_demo.out -diff Output/complex_demo_out.m complex_demo_out.m -diff Output/wildtype_demo.out wildtype_demo.out +diff Output/simple_demo.out ../build/simple_demo.out +diff Output/complex_demo_out.m ../build/complex_demo_out.m +diff Output/wildtype_demo.out ../build/wildtype_demo.out exit 0 diff --git a/Doc/ChangeLog b/Doc/ChangeLog index c545d78299..f642e72681 100644 --- a/Doc/ChangeLog +++ b/Doc/ChangeLog @@ -1,27 +1,9 @@ -Oct 13, 2023: version 9.0.0 - - * GrB_get/GrB_set: new functions from the v2.1 C API. - * GrB_Type_new, GrB_UnaryOp_new, GrB_IndexUnaryOp_new: no longer macros, - since GrB_set can be used to set the names of the operators. These - methods no longer extract the name, so the default name is now the - empty string. This is because GrB_get/set can only set these names - once. This is a non-compatible change of behaviour for these 3 - methods, so SuiteSprase:GraphBLAS must become v9.0.0. - * historical methods: many methods are replaced by GrB_get and GrB_set. - They remain in SuiteSparse:GraphBLAS but have been declared historical. - Terse prototypes exist in GraphBLAS.h, and any discussion is removed - from the User Guide: GxB_get, GxB_set, and the methods they call, and - many more. Use GrB_get/set in place those methods, and for: - GxB_*type_name, GxB_*type, GxB_Monoid_operator, GxB_Monoid_identity, - GxB_Monoid_terminal, GxB_Semiring_add, GxB_Semiring_multiply. Use - GrB_STORAGE_ORIENTATION_HINT in place of GxB_FORMAT. - * hyper_hash: constructed only if the # of non-empty vectors in a - hypersparse matrix is large (> 1024, by default) +Dec 30, 2023: version 8.3.0 + + * major change to build system: by Markus Mützel Oct 7, 2023: version 8.2.1 - * (50) bug fix: remove undefined behavior in Source/GB_add.c with - Cnvec_nonempty, caught by Yves Vandreissche, Intel * (49) bug fix: GrB_mxm saxpy4 and saxpy5 had incorrectly handling of typecasting in v8.0.0 to v8.2.0 (caught by Erik Welch) * cross-compiler support: replace check_c_source_runs with _compiles, @@ -122,7 +104,7 @@ Version 7.4.1, Jan 9, 2023 Version 7.4.0, Dec 23, 2022 - * added non-va_arg methods: va_arg-based GxB_get/set methods are C11 + * added non-va_arg methods: va_arg-based GxB_get/set methods are ANSI C11 but cause issues for cffi in Python. As a temporary workaround, new methods have been added that do not use va_arg. The existing GxB_get/set methods are not changed. The new methods are not in the @@ -635,7 +617,7 @@ Version 3.1.2, Dec 16, 2019 B is a standard matrix with one or more empty vectors. * (14) bug fix for @GrB interface: A(58) and A(:) were conflated. * compiler port: changes to allow GraphBLAS to be compiled with older - compilers (pre C11), and Microsoft Visual Studio. + compilers (pre ANSI C11), and Microsoft Visual Studio. Version 3.1.1, Oct 21, 2019 @@ -736,7 +718,7 @@ Version 2.3.0, Feb 25, 2019 * added GxB_init: GrB_init with malloc/calloc/realloc/free redefinition * _Generic: compilers differ on _Generic(x,int:,const int:). gcc, clang, icc 18.0.0 treat int and const int the same; icc 18.0.3 treats them - as different. This is a result of an ambiguity in the C11 + as different. This is a result of an ambiguity in the ANSI C11 specification. Minor update so that the use of _Generic(...) is compatible with all compilers. * early exit: for GrB_reduce @@ -790,7 +772,7 @@ Version 2.2.0 (BETA4), Nov 28, 2018 Kronecker matrix generator * minor changes for gcc -Wall -Wpedantic -Wextra, and icc -w3: to fix or silence warnings. In a few cases, prior versions were relying on - extensions to the C11 standard in gcc, clang, xlc. The extensions + extensions to the ANSI C11 standard in gcc, clang, xlc. The extensions are widely supported but best avoided anway. Version 2.2.0 (BETA3), Nov 23, 2018 diff --git a/Doc/GrB_get_set.tex b/Doc/GrB_get_set.tex deleted file mode 100644 index a0254aa76f..0000000000 --- a/Doc/GrB_get_set.tex +++ /dev/null @@ -1,1657 +0,0 @@ - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{GraphBLAS Options ({\sf GrB\_get} and {\sf GrB\_set})} -\label{options} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -The latest v2.1 C API adds a pair of methods, \verb'GrB_get' and \verb'GrB_set' -that allows the user to query GraphBLAS objects and change their state. These -two methods are polymorphic wrappers for a suite of methods for each object. -They replace the \verb'GxB_get' and \verb'GxB_set' methods in -SuiteSparse:GraphBLAS v8.* and earlier. - -The general polymorphic signatures of these methods are given below: - -{\footnotesize -\begin{verbatim} - GrB_Info GrB_get (object, value, GrB_Field field) ; - GrB_Info GrB_set (object, value, GrB_Field field) ; - GrB_Info GrB_set (object, void *value, GrB_Field field, size_t s) ; \end{verbatim}} - -\noindent -where \verb'object' can be any GraphBLAS object. The \verb'value' can be a -\verb'GrB_Scalar', an \verb'int32_t' (or a pointer to \verb'int32_t' for -\verb'GrB_get'), a string (\verb'char *'), or a \verb'void *' pointer. In the -latter case, \verb'GrB_set' requires an additional parameter (\verb'size_t s') -that specifies the size of the object pointed to by \verb'void *value'. - -The non-polymorphic names have the following format, where \verb'[OBJ]' -is any GraphBLAS object. - -{\footnotesize -\begin{verbatim} - GrB_Info GrB_[OBJ]_get_[KIND] (object, value, GrB_Field field) ; - GrB_Info GrB_[OBJ]_set_[KIND] (object, value, GrB_Field field) ; - GrB_Info GrB_[OBJ]_set_VOID (object, void *value, GrB_Field field, size_t s) ; \end{verbatim}} - -The \verb'[KIND]' suffix defines the type of second parameter, and can be: - \verb'Scalar' (for \verb'GrB_Scalar'), - \verb'String' (for \verb'char *'), - \verb'INT32' (for \verb'int32_t'), and - \verb'SIZE' (for \verb'size_t *' for \verb'GrB_get' only), and - \verb'VOID' (for \verb'void *'). - -The tables below list all the valid fields that can be used for each object. -Each table contains four columns: (1) the \verb'GrB_Field', -(2) a column labelled R/W, (3) a column defining the C type, and a description. -For the R/W column: - -\begin{itemize} -\item If the R/W column of a table is R, then the value can be read by \verb'GrB_get' - but not written by \verb'GrB_set'. -\item R/W means that both \verb'GrB_get' and \verb'GrB_set' can be used any number of times, - with different values. -\item R/W1 means that \verb'GrB_get' can be done multiple times, - but \verb'GrB_set' can be used only once. - Subsequent calls to \verb'GrB_set' return the error code \verb'GrB_ALREADY_SET'. -\item W means that only \verb'GrB_set' can be used (any number of times), - but \verb'GrB_get' cannot be done. -\end{itemize} - -The second parameter (\verb'value') of \verb'GrB_get' and \verb'GrB_set' can take on several -different C types, and it can also be a \verb'GrB_Scalar' that holds a value -with the given C type (or that can be typecasted to the given C type): - -\begin{itemize} -\item \verb'int32_t': - For \verb'GrB_set' the \verb'value' parameter is \verb'int32_t'. - For \verb'GrB_get' the \verb'value' parameter is \verb'int32_t *.' - The following example sets the global number of threads, and then - retrieves that \verb'value' into \verb'nthreads'. - - {\footnotesize - \begin{verbatim} - GrB_set (GrB_GLOBAL, 8, GxB_NTHREADS) ; - int32_t nthreads ; - GrB_get (GrB_GLOBAL, &nthreads, GxB_NTHREADS) ; - printf ("nthreads: %d\n", nthreads) ; \end{verbatim} } - - A \verb'GrB_Scalar' can also be used for an \verb'int32_t' \verb'value'. - For \verb'GrB_set', the scalar must not be empty. - Here is the same example but using a \verb'GrB_Scalar' instead: - - {\footnotesize - \begin{verbatim} - GrB_Scalar s ; - GrB_Scalar_new (s, GrB_INT32) ; - GrB_Scalar_setElement (s, 8) ; - GrB_set (GrB_GLOBAL, s, GxB_NTHREADS) ; - GrB_get (GrB_GLOBAL, s, GxB_NTHREADS) ; - int32_t nthreads ; - GrB_Scalar_extractElement (&nthreads, s) ; - printf ("nthreads: %d\n", nthreads) ; \end{verbatim} } - -\item \verb'char *': - The \verb'value' parameter is \verb'char *' for both \verb'GrB_get' and - \verb'GrB_set'. A \verb'GrB_Scalar' cannot be used. The size of the - string required for \verb'GrB_get' is given by using a \verb'size_t *' - parameter with the same field. For example: - - {\footnotesize - \begin{verbatim} - size_t len ; - GrB_get (GrB_GLOBAL, &len, GrB_NAME) ; - char *name = malloc (len) ; - GrB_get (GrB_GLOBAL, name, GrB_NAME) ; - printf ("The library is: %s\n", name) ; - free (name) ; \end{verbatim} } - - To get the current JIT C compiler and then set it to something else: - - {\footnotesize - \begin{verbatim} - size_t len ; - GrB_get (GrB_GLOBAL, &len, GxB_JIT_C_COMPILER_NAME) ; - char *compiler = malloc (len) ; - GrB_get (GrB_GLOBAL, compiler, GxB_JIT_C_COMPILER_NAME) ; - printf ("The current JIT compiler is: %s\n", compiler) ; - GrB_set (GrB_GLOBAL, "gcc", GxB_JIT_C_COMPILER_NAME) ; - GrB_get (GrB_GLOBAL, &len, GxB_JIT_C_COMPILER_NAME) ; - char *new_compiler = malloc (len) ; - GrB_get (GrB_GLOBAL, new_compiler, GxB_JIT_C_COMPILER_NAME) ; - printf ("The new JIT compiler is: %s\n", new_compiler) ; - free (compiler) ; - free (new_compiler) ; \end{verbatim} } - -\item Other scalar data types (typically \verb'double'): - Only a \verb'GrB_Scalar' can be used. When using \verb'GrB_set' with a - \verb'GrB_Scalar', the scalar cannot be empty. For example, to get then - set the global \verb'GxB_HYPER_SWITCH' parameter to 0.3: - - {\footnotesize - \begin{verbatim} - GrB_Scalar s ; - GrB_Scalar_new (s, GrB_FP64) ; - GrB_get (GrB_GLOBAL, s, GxB_HYPER_SWITCH) ; - double hs ; - GrB_Scalar_extractElement (&hs, s) ; - printf ("current hyper_switch: %g\n", hs) ; - GrB_Scalar_setElement (s, 0.3) ; - GrB_set (GrB_GLOBAL, s, GxB_HYPER_SWITCH) ; \end{verbatim} } - -\item \verb'void *': - This type is used for all other cases. - For \verb'GrB_get', the array must have the right size, just like a - \verb'char *' string. Use the same field first, but with - \verb'size_t *value' as the second parameter to obtain the size of the - \verb'void *' array, then use \verb'GrB_get' with a \verb'void *' array of - the right size. In some cases, the size is always the same. For example, - to query the operator of a monoid: - - {\footnotesize - \begin{verbatim} - GrB_BinaryOp op ; - GrB_get (GrB_PLUS_MONOID_FP64, (void *) &op, GxB_MONOID_OPERATOR) ; - assert (op == GrB_PLUS_FP64) ; \end{verbatim} } - - For \verb'GrB_set', a fourth parameter is required to tell GraphBLAS the - size of the input array. - -\end{itemize} - -%------------------------------------------------------------------------------- -\subsection{Enum types for get/set: {\sf GrB\_Field}, {\sf GrB\_Orientation}, -and {\sf GrB\_Type\_Code}} -\label{get_set_enums} -%------------------------------------------------------------------------------- - -The get/set methods share a \verb'GrB_Field' enum type to specify which -component of the object is to be set or retrieved. -fields. - -{\footnotesize -\begin{verbatim} -typedef enum -{ - // GrB_Descriptor only: - GrB_OUTP_FIELD = 0, // descriptor for output of a method - GrB_MASK_FIELD = 1, // descriptor for the mask input of a method - GrB_INP0_FIELD = 2, // descriptor for the first input of a method - GrB_INP1_FIELD = 3, // descriptor for the second input of a method - - // all objects, including GrB_GLOBAL: - GrB_NAME = 10, // name of the object, as a string - - // GrB_GLOBAL only: - GrB_LIBRARY_VER_MAJOR = 11, // SuiteSparse:GraphBLAS version - GrB_LIBRARY_VER_MINOR = 12, - GrB_LIBRARY_VER_PATCH = 13, - GrB_API_VER_MAJOR = 14, // C API version - GrB_API_VER_MINOR = 15, - GrB_API_VER_PATCH = 16, - GrB_BLOCKING_MODE = 17, // GrB_Mode - - // GrB_GLOBAL, GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_STORAGE_ORIENTATION_HINT = 100, // GrB_Orientation - - // GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_ELTYPE_CODE = 102, // a GrB_Type_code (see below) - GrB_ELTYPE_STRING = 106, // name of the type - - // GrB_*Op, GrB_Monoid, and GrB_Semiring: - GrB_INPUT1TYPE_CODE = 103, // GrB_Type_code - GrB_INPUT2TYPE_CODE = 104, - GrB_OUTPUTTYPE_CODE = 105, - GrB_INPUT1TYPE_STRING = 107, // name of the type, as a string - GrB_INPUT2TYPE_STRING = 108, - GrB_OUTPUTTYPE_STRING = 109, - - // GrB_Type (readable only): - GrB_SIZE = 110, // size of the type - - // GrB_Type, GrB_UnaryOp, GrB_BinaryOp, and GrB_IndexUnaryOp: - GxB_JIT_C_NAME = 7041, // C type or function name - GxB_JIT_C_DEFINITION = 7042, // C typedef or function definition - - // GrB_Monoid and GrB_Semiring: - GxB_MONOID_IDENTITY = 7043, // monoid identity value - GxB_MONOID_TERMINAL = 7044, // monoid terminal value - GxB_MONOID_OPERATOR = 7045, // monoid binary operator - - // GrB_Semiring only: - GxB_SEMIRING_MONOID = 7046, // semiring monoid - GxB_SEMIRING_MULTIPLY = 7047, // semiring multiplicative op -} -GrB_Field ; - -#define GxB_NTHREADS 7086 -#define GxB_CHUNK 7087 - -typedef enum // more SuiteSparse extensions for GrB_Field: -{ - - // GrB_get/GrB_set for GrB_Matrix and GrB_GLOBAL: - GxB_HYPER_SWITCH = 7000, // switch to hypersparse (double value) - GxB_HYPER_HASH = 7048, // hyper_hash control (int64 value) - GxB_BITMAP_SWITCH = 7001, // switch to bitmap (double value) - - // GrB_get for GrB_GLOBAL: - GxB_LIBRARY_DATE = 7006, // date of the library (char *) - GxB_LIBRARY_ABOUT = 7007, // about the library (char *) - GxB_LIBRARY_URL = 7008, // URL for the library (char *) - GxB_LIBRARY_LICENSE = 7009, // license of the library (char *) - GxB_LIBRARY_COMPILE_DATE = 7010, // date library was compiled (char *) - GxB_LIBRARY_COMPILE_TIME = 7011, // time library was compiled (char *) - GxB_API_DATE = 7013, // date of the API (char *) - GxB_API_ABOUT = 7014, // about the API (char *) - GxB_API_URL = 7015, // URL for the API (char *) - GxB_COMPILER_VERSION = 7016, // compiler version (3 int's) - GxB_COMPILER_NAME = 7017, // compiler name (char *) - GxB_LIBRARY_OPENMP = 7018, // library compiled with OpenMP - GxB_MALLOC_FUNCTION = 7037, // malloc function pointer - GxB_CALLOC_FUNCTION = 7038, // calloc function pointer - GxB_REALLOC_FUNCTION = 7039, // realloc function pointer - GxB_FREE_FUNCTION = 7040, // free function pointer - - // GrB_get/GrB_set for GrB_GLOBAL: - GxB_GLOBAL_NTHREADS = GxB_NTHREADS, // max number of threads to use - GxB_GLOBAL_CHUNK = GxB_CHUNK, // chunk size for small problems. - GxB_BURBLE = 7019, // diagnostic output (bool *) - GxB_PRINTF = 7020, // printf function diagnostic output - GxB_FLUSH = 7021, // flush function diagnostic output - GxB_PRINT_1BASED = 7023, // print matrices as 0-based or 1-based - GxB_JIT_C_COMPILER_NAME = 7024, // CPU JIT C compiler name - GxB_JIT_C_COMPILER_FLAGS = 7025, // CPU JIT C compiler flags - GxB_JIT_C_LINKER_FLAGS = 7026, // CPU JIT C linker flags - GxB_JIT_C_LIBRARIES = 7027, // CPU JIT C libraries - GxB_JIT_C_PREFACE = 7028, // CPU JIT C preface - GxB_JIT_C_CONTROL = 7029, // CPU JIT C control - GxB_JIT_CACHE_PATH = 7030, // CPU/CUDA JIT path for compiled kernels - GxB_JIT_C_CMAKE_LIBS = 7031, // CPU JIT C libraries when using cmake - GxB_JIT_USE_CMAKE = 7032, // CPU JIT: use cmake or direct compile - GxB_JIT_ERROR_LOG = 7033, // CPU JIT: error log file - - // GrB_get for GrB_Matrix: - GxB_SPARSITY_STATUS = 7034, // hyper, sparse, bitmap or full (1,2,4,8) - - // GrB_get/GrB_set for GrB_Matrix: - GxB_SPARSITY_CONTROL = 7036, // sparsity control: 0 to 15; see below - -} GxB_Option_Field ; - -typedef enum -{ - GrB_ROWMAJOR = 0, - GrB_COLMAJOR = 1, - GrB_BOTH = 2, - GrB_UNKNOWN = 3, -} -GrB_Orientation ; - -typedef enum -{ - GrB_UDT_CODE = 0, // user-defined type - GrB_BOOL_CODE = 1, // GraphBLAS: GrB_BOOL C: bool - GrB_INT8_CODE = 2, // GraphBLAS: GrB_INT8 C: int8_t - GrB_UINT8_CODE = 3, // GraphBLAS: GrB_UINT8 C: uint8_t - GrB_INT16_CODE = 4, // GraphBLAS: GrB_INT16 C: int16_t - GrB_UINT16_CODE = 5, // GraphBLAS: GrB_UINT16 C: uint16_t - GrB_INT32_CODE = 6, // GraphBLAS: GrB_INT32 C: int32_t - GrB_UINT32_CODE = 7, // GraphBLAS: GrB_UINT32 C: uint32_t - GrB_INT64_CODE = 8, // GraphBLAS: GrB_INT64 C: int64_t - GrB_UINT64_CODE = 9, // GraphBLAS: GrB_UINT64 C: uint64_t - GrB_FP32_CODE = 10, // GraphBLAS: GrB_FP32 C: float - GrB_FP64_CODE = 11, // GraphBLAS: GrB_FP64 C: double - GxB_FC32_CODE = 7070, // GraphBLAS: GxB_FC32 C: float complex - GxB_FC64_CODE = 7071, // GraphBLAS: GxB_FC64 C: double complex -} -GrB_Type_Code ; \end{verbatim}} - - -%------------------------------------------------------------------------------- -\subsection{Global Options ({\sf GrB\_Global})} -\label{get_set_global} -%------------------------------------------------------------------------------- - -A single object \verb'GrB_GLOBAL' whose type is \verb'GrB_Global' is used to -denote global settings to read or modify. To use it with \verb'GrB_get' and -\verb'GrB_set', pass in \verb'GrB_GLOBAL' as the first parameter. - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Global g, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Global g, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Global g, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Global g, size_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Global g, void * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Global g, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Global g, char * value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Global g, int32_t value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Global g, void * value, GrB_Field f, size_t s) ; -\end{verbatim} -}\end{mdframed} - - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_LIBRARY_VER_MAJOR' & R & \verb'int32_t'& major version of the library \\ -\verb'GrB_LIBRARY_VER_MINOR' & R & \verb'int32_t'& minor version of the library \\ -\verb'GrB_LIBRARY_VER_PATCH' & R & \verb'int32_t'& patch version of the library \\ -\verb'GrB_API_VER_MAJOR' & R & \verb'int32_t'& major version of the API \\ -\verb'GrB_API_VER_MINOR' & R & \verb'int32_t'& major version of the API \\ -\verb'GrB_API_VER_PATCH' & R & \verb'int32_t'& major version of the API \\ -\verb'GrB_BLOCKING_MODE' & R & \verb'int32_t'& blocking mode (\verb'GrB_BLOCKING' \newline - or \verb'GrB_NONBLOCKING') \\ -\verb'GxB_LIBRARY_OPENMP' & R & \verb'int32_t'& if OpenMP is in use (true/false) \\ -\hline -\end{tabular} -} -\vspace{0.05in} - -\vspace{0.1in} -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_STORAGE_ORIENTATION_HINT' & R/W & \verb'int32_t'& see \verb'GrB_Orientation': default - format for matrices. \\ -% Matrices are held by row, unless this -% value is set to \verb'GrB_COLMAJOR'. \\ -\verb'GxB_NTHREADS' & R/W & \verb'int32_t'& number of OpenMP threads used. \newline - See Section~\ref{omp_parallelism}. \\ -% \verb'GxB_GPU_ID' & R/W & \verb'int32_t'& which GPU to use \\ -\verb'GxB_BURBLE' & R/W & \verb'int32_t'& diagnostic output (true/false). \newline - See Section~\ref{diag}. \\ -\verb'GxB_PRINT_1BASED' & R/W & \verb'int32_t'& matrices printed as 1-based or 0-based \\ -\verb'GxB_JIT_C_CONTROL' & R/W & \verb'int32_t'& see Section~\ref{jit} \\ -\verb'GxB_JIT_USE_CMAKE' & R/W & \verb'int32_t'& see Section~\ref{jit} \\ -\hline -\verb'GxB_HYPER_SWITCH' & R/W & \verb'double' & global hypersparsity control. \newline - See Section~\ref{hypersparse}. \\ -\verb'GxB_HYPER_HASH' & R/W & \verb'int64_t' & global hypersparsity (hyper-hash) - control \\ -\verb'GxB_CHUNK' & R/W & \verb'double' & global chunk size for parallel task creation. - See Section~\ref{omp_parallelism}. \\ -\hline -\verb'GrB_NAME' & R & \verb'char *' & name of the library \newline - (\verb'"SuiteSparse:GraphBLAS"') \\ -\verb'GxB_LIBRARY_DATE' & R & \verb'char *' & library release date \\ -\verb'GxB_LIBRARY_ABOUT' & R & \verb'char *' & details about the library \\ -\verb'GxB_LIBRARY_LICENSE' & R & \verb'char *' & license of the library \\ -\verb'GxB_LIBRARY_COMPILE_DATE' & R & \verb'char *' & date the library was compiled \\ -\verb'GxB_LIBRARY_COMPILE_TIME' & R & \verb'char *' & time the library was compiled \\ -\verb'GxB_LIBRARY_URL' & R & \verb'char *' & URL for the library \\ -\verb'GxB_API_DATE' & R & \verb'char *' & C API release date \\ -\verb'GxB_API_ABOUT' & R & \verb'char *' & about the C API \\ -\verb'GxB_API_URL' & R & \verb'char *' & URL for the C API \\ -\verb'GxB_COMPILER_NAME' & R & \verb'char *' & name of the compiler used to compile the library \\ -\hline -\verb'GxB_JIT_C_COMPILER_NAME' & R/W & \verb'char *' & See Section~\ref{jit} \\ -\verb'GxB_JIT_C_COMPILER_FLAGS' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_C_LINKER_FLAGS' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_C_LIBRARIES' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_C_CMAKE_LIBS' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_C_PREFACE' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_ERROR_LOG' & R/W & \verb'char *' & " \\ -\verb'GxB_JIT_CACHE_PATH' & R/W & \verb'char *' & " \\ -\hline -\end{tabular} -} - -\vspace{0.1in} -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\verb'GxB_BITMAP_SWITCH' & R/W & \verb'void *' & \verb'double' array of size \newline - \verb'GxB_NBITMAP_SWITCH'. \newline - See Section~\ref{bitmap_switch}. \\ -\verb'GxB_COMPILER_VERSION' & R & \verb'void *' & \verb'int32_t' array of size 3. - The version of the compiler used to - compile the library. \\ -\verb'GxB_PRINTF' & W & \verb'void *' & pointer to \verb'printf' function for diagnostic output. - See Section~\ref{diag}. \\ -\verb'GxB_FLUSH' & W & \verb'void *' & pointer to \verb'flush' function for diagnostic output. - See Section~\ref{diag}. \\ -\verb'GxB_MALLOC_FUNCTION' & R & \verb'void *' & malloc function \\ -\verb'GxB_CALLOC_FUNCTION' & R & \verb'void *' & calloc function \\ -\verb'GxB_REALLOC_FUNCTION' & R & \verb'void *' & realloc function \\ -\verb'GxB_FREE_FUNCTION' & R & \verb'void *' & free function \\ -\hline -\end{tabular} -} - -% \newpage -%------------------------------------------------------------------------------- -\subsubsection{Global diagnostic settings} -\label{diag} -%------------------------------------------------------------------------------- - -\verb'GrB_set (GrB_GLOBAL, ..., GxB_BURBLE)' controls the burble setting. It can also be -controlled via \verb'GrB.burble(b)' in the MATLAB/Octave interface. - -{\footnotesize -\begin{verbatim} - GrB_set (GrB_GLOBAL, true, GxB_BURBLE) ; // enable burble - GrB_set (GrB_GLOBAL, false, GxB_BURBLE) ; // disable burble \end{verbatim}} - -If enabled, SuiteSparse:GraphBLAS reports which internal kernels it uses, and -how much time is spent. If you see the word \verb'generic', it means that -SuiteSparse:GraphBLAS was unable to use its JIT kernels, or its faster kernels -in \verb'Source/FactoryKernels', but used a generic kernel that relies on -function pointers. This is done for user-defined types and operators when they -cannot be used in the JIT, and when typecasting is performed. Generic kernels -are typically slower than the JIT kernels or kernels in -\verb'Source/FactoryKernels'. - -If you see a lot of \verb'wait' statements, it may mean that a lot of time is -spent finishing a matrix or vector. This may be the result of an inefficient -use of the \verb'setElement' and \verb'assign' methods. If this occurs you -might try changing the sparsity format of a vector or matrix to -\verb'GxB_BITMAP', assuming there's enough space for it. - -The following setting allows the user application to change the -function used to print diagnostic output: - -{\small -\begin{verbatim} - GrB_set (GrB_GLOBAL, (void *) printf, GxB_PRINTF, sizeof (void *)) ; \end{verbatim} } - -This also controls the output of the -\verb'GxB_*print' functions. By default this parameter is \verb'NULL', in -which case the C11 \verb'printf' function is used. The parameter is a -function pointer with the same signature as the C11 \verb'printf' -function. The MATLAB/Octave interface to GraphBLAS sets it to \verb'mexPrintf' -so that GraphBLAS can print to the MATLAB/Octave Command Window. - -After each call to the \verb'printf' function, an optional -\verb'flush' function is called, which is \verb'NULL' by default. If -\verb'NULL', the function is not used. This can be changed with: - -{\small -\begin{verbatim} - GrB_set (GrB_GLOBAL, (void *) flush, GxB_FLUSH, sizeof (void *)) ; \end{verbatim} } - -The \verb'flush' function takes no -arguments, and returns an \verb'int' which is 0 if successful, or any nonzero -value on failure (the same output as the C11 \verb'fflush' function, -except that \verb'flush' has no inputs). - -%------------------------------------------------------------------------------- -\subsubsection{OpenMP parallelism} -%------------------------------------------------------------------------------- -\label{omp_parallelism} - -SuiteSparse:GraphBLAS is a parallel library, based on OpenMP. By -default, all GraphBLAS operations will use up to the maximum number of threads -specified by the \verb'omp_get_max_threads' OpenMP function. For small -problems, GraphBLAS may choose to use fewer threads, using two parameters: the -maximum number of threads to use (which may differ from the -\verb'omp_get_max_threads' value), and a parameter called the \verb'chunk'. -Suppose \verb'work' is a measure of the work an operation needs to perform (say -the number of entries in the two input matrices for \verb'GrB_eWiseAdd'). No -more than \verb'floor(work/chunk)' threads will be used (or one thread if the -ratio is less than 1). - -\verb'GxB_NTHREADS' controls how many threads a method uses. - By default (if set to zero, or \verb'GrB_DEFAULT'), all available threads - are used. The maximum available threads is controlled by the global - setting, which is \verb'omp_get_max_threads ( )' by default. If set to - some positive integer \verb'nthreads' less than this maximum, at most - \verb'nthreads' threads will be used. - -\verb'GxB_CHUNK' is a \verb'double' value that controls how many threads - a method uses for small problems. -The default \verb'chunk' value is 65,536, but this may change in future -versions, or it may be modified when GraphBLAS is installed on a particular -machine. - -Both parameters can be set in two ways: - -\begin{itemize} - -\item Globally: If the following methods are used, then all subsequent -GraphBLAS operations will use these settings. Note the typecast, -\verb'(double)' \verb'chunk'. This is necessary if a literal constant such as -\verb'20000' is passed as this argument. The type of the constant must be -\verb'double'. - - {\footnotesize - \begin{verbatim} - int32_t nthreads_max = 40 ; - GrB_set (GrB_GLOBAL, nthreads_max, GxB_NTHREADS) ; - GrB_Scalar_new (&s, GrB_FP64) ; - GrB_Scalar_setElement (s, (double) 20000) ; - GrB_set (GrB_GLOBAL, s, GxB_CHUNK) ; \end{verbatim} } - -\item Context: this object can be used to choose a different number of -threads used in calls to GraphBLAS from different user threads, exploiting -nested parallelism. Refer to Section~\ref{context}. If a thread has engaged a -context object, it ignores the global settings for \verb'GxB_NTHREADS' and -\verb'GxB_CHUNK', and uses the settings in its own context instead. - -\end{itemize} - -The smaller of \verb'nthreads_max' and \verb'floor(work/chunk)' is used for any -given GraphBLAS operation, except that a single thread is used if this value is -zero or less. - -If either parameter is set to \verb'GrB_DEFAULT', then default values are used. -The default for \verb'nthreads_max' is the return value from -\verb'omp_get_max_threads', and the default chunk size is currently 65,536. - -If a descriptor value for either parameter is left at its default, or set to -\verb'GrB_DEFAULT', then the global setting is used. This global setting may -have been modified from its default, and this modified value will be used. - -For example, suppose \verb'omp_get_max_threads' reports 8 threads. If \newline -\verb'GrB_set (GrB_GLOBAL, 4, GxB_NTHREADS)' is used, then the global setting is four -threads, not eight. - -GraphBLAS may be compiled without OpenMP, by setting \verb'-DNOPENMP=1'. -The library will be thread-safe, with one exception. \verb'GrB_wait' is -intended to provide thread-safety by flushing the cache of one user thread -so the object can be safely read by another thread. This is accomplished -with \verb'pragma omp flush', but if OpenMP is not available, this does -nothing. If OpenMP is not available or \verb'-DNOPEMP=1' is used, then -user applications need to ensure their own thread safety when one user thread -computes a result that is then read by another thread. - -You can query GraphBLAS at run-time to ask if it was compiled with OpenMP: - -{\small -\begin{verbatim} - bool have_openmp ; - GrB_get (GrB_GLOBAL, &have_openmp, GxB_LIBRARY_OPENMP) ; - if (!have_openmp) printf ("GraphBLAS not compiled with OpenMP\n") : \end{verbatim}} - -Compiling GraphBLAS without OpenMP is not recommended for installation in a -package manager (Linux, conda-forge, spack, brew, vcpkg, etc). - -%------------------------------------------------------------------------------- -\subsubsection{Other global options} -%------------------------------------------------------------------------------- - -\verb'GrB_BLOCKING_MODE' can only be queried by \verb'GrB_get'; it cannot be -modified by \verb'GrB_set'. The mode is the value passed to \verb'GrB_init' -(blocking or non-blocking). - -All threads in the same user application share the same global options, -including hypersparsity, bitmap options, and CSR/CSC format determined by -\verb'GrB_set', and the blocking mode determined by \verb'GrB_init'. -Specific format and hypersparsity parameters of each matrix are specific to -that matrix and can be independently changed. - -The \verb'GrB_LIBRARY_*' and \verb'GxB_LIBRARY_*' options can be used to query -the current implementation of SuiteSparse:GraphBLAS. The \verb'GrB_API_*' and -\verb'GxB_API_*' options can be used to query the current GraphBLAS C API -Specification. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Type} Options} -\label{get_set_type} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Type t, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Type t, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Type t, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Type t, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Type t, char * value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.85in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_ELTYPE_CODE' & R & \verb'int32_t'& type code (see \verb'GrB_Type_Code') \\ -\verb'GrB_SIZE' & R & \verb'int32_t'& \verb'sizeof' the type \\ -\verb'GrB_SIZE' & R & \verb'uint64_t'& \verb'sizeof' the type - (as a \verb'GrB_Scalar') \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (type) - name of the type. For built-in types, this returns the GraphBLAS - name (\verb'"GrB_FP32"' for \verb'GrB_FP32', for example). - For user-defined types, the name can be any string of any length. It is - not used by the JIT. It can be set at most once. \\ -\verb'GxB_JIT_C_NAME' & R/W1 & \verb'char *' & - This must be a valid name of a C type to enable its use in the JIT. For - built-in types, this returns the C name of the type (\verb'"float"' for - \verb'GrB_FP32', for example). The length of the name can be at most - \verb'GxB_MAX_NAME_LEN', including the \verb'nul' terminating byte. It can - be set at most once. \\ -\verb'GxB_JIT_C_DEFINITION' & R/W1 & \verb'char *' & - type definition, as a C \verb'typedef'; - built-in types return an empty string. - It can be set at most once. \\ -\hline -\end{tabular} -} - -Built-in types cannot be modified by \verb'GrB_set'. User-defined types can be -used without setting their name or definition, but they can be used in JIT -kernels only when both the JIT C name and the definition are set. - -To use the JIT, all operators, monoids, and semirings that access this type -must be defined after the user-defined type has been given both a name and a -definition. GraphBLAS can use an operator that uses a type without a name, -but it cannot use the JIT, even if the type is given a name later on after -the operator is created. - -The size of the type can be returned as an \verb'int32_t' C scalar, or as a -\verb'GrB_Scalar', normally of type \verb'GrB_INT32' (according to the v2.1 C -API). Typecasting of the value of the size is done as needed, if the scalar -has a different type. A \verb'GrB_Scalar' of type \verb'GrB_UINT64' is perhaps -safest (as shown in the example below), since it allows arbitrary type sizes to -be handled. In practice, SuiteSparse:GraphBLAS would currently not work with -types larger than \verb'INT32_MAX', so either method will work. All three of -the examples below return the size of \verb'GrB_FP32' as \verb'sizeof (float)': - -{\footnotesize -\begin{verbatim} - int32_t size ; - GrB_get (GrB_FP32, &size, GrB_SIZE) ; - assert (size == sizeof (float)) ; - - GrB_Scalar t ; - GrB_Scalar_new (&t, GrB_INT32) ; - GrB_get (GrB_FP32, t, GrB_SIZE) ; - GrB_Scalar_extractElement (&size, t) ; - assert (size == sizeof (float)) ; - - uint64_t size2 ; - GrB_Scalar s ; - GrB_Scalar_new (&s, GrB_UINT64) ; - GrB_get (GrB_FP32, s, GrB_SIZE) ; - GrB_Scalar_extractElement (&size2, s) ; - assert (size2 == sizeof (float)) ; \end{verbatim}} - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_UnaryOp} Options} -\label{get_set_unop} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_UnaryOp op, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_UnaryOp op, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_UnaryOp op, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_UnaryOp op, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_UnaryOp op, char * value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.8in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_INPUT1TYPE_CODE' & R & \verb'int32_t'& input type code (see \verb'GrB_Type_code') \\ -\verb'GrB_OUTPUTTYPE_CODE' & R & \verb'int32_t'& output type code \\ -\verb'GrB_INPUT1TYPE_STRING' & R & \verb'char *' & name of the input type \\ -\verb'GrB_OUTPUTTYPE_STRING' & R & \verb'char *' & name of the output type \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (unop) - name of the operator. For built-in operators, this returns the GraphBLAS - name (\verb'"GrB_LNOT"' for \verb'GrB_LNOT', for example). - For user-defined operators, the name can be any string of any length. It - is not used by the JIT. It can be set at most once. \\ -\verb'GxB_JIT_C_NAME' & R/W1 & \verb'char *' & - This must be a valid name of a C function to enable its use in the JIT. - The length of the name can be at most \verb'GxB_MAX_NAME_LEN', including - the \verb'nul' terminating byte. It can be set at most once. \\ -\verb'GxB_JIT_C_DEFINITION' & R/W1 & \verb'char *' & - definition for a user-defined operator, as a C function; built-in operators - return an empty string. It can be set at most once. \\ -\hline -\end{tabular} -} - -Built-in operators cannot be modified by \verb'GrB_set'. User-defined -operators can be used without setting their name or definition, but they can be -used in JIT kernels only when both the JIT C name and the definition are set. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_IndexUnaryOp} Options} -\label{get_set_idxunop} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_IndexUnaryOp op, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_IndexUnaryOp op, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_IndexUnaryOp op, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_IndexUnaryOp op, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_IndexUnaryOp op, char * value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.8in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_INPUT1TYPE_CODE' & R & \verb'int32_t'& 1st input type code (see \verb'GrB_Type_code') \\ -\verb'GrB_INPUT2TYPE_CODE' & R & \verb'int32_t'& 2nd input type code \\ -\verb'GrB_OUTPUTTYPE_CODE' & R & \verb'int32_t'& output type code \\ -\verb'GrB_INPUT1TYPE_STRING' & R & \verb'char *' & name of the 1st input type \\ -\verb'GrB_INPUT2TYPE_STRING' & R & \verb'char *' & name of the 2nd input type \\ -\verb'GrB_OUTPUTTYPE_STRING' & R & \verb'char *' & name of the output type \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (idxunop) - name of the operator. For built-in operators, this returns the GraphBLAS - name (\verb'"GrB_TRIL"' for \verb'GrB_TRIL', for example). - For user-defined operators, the name can be any string of any length. It - is not used by the JIT. It can be set at most once. \\ -\verb'GxB_JIT_C_NAME' & R/W1 & \verb'char *' & - This must be a valid name of a C function to enable its use in the JIT. - The length of the name can be at most \verb'GxB_MAX_NAME_LEN', including - the \verb'nul' terminating byte. It can be set at most once. \\ -\verb'GxB_JIT_C_DEFINITION' & R/W1 & \verb'char *' & - definition for a user-defined operator, as a C function; built-in operators - return an empty string. It can be set at most once. \\ -\hline -\end{tabular} -} - -Built-in operators cannot be modified by \verb'GrB_set'. User-defined -operators can be used without setting their name or definition, but they can be -used in JIT kernels only when both the JIT C name and the definition are set. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_BinaryOp} Options} -\label{get_set_binop} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_BinaryOp op, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_BinaryOp op, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_BinaryOp op, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_BinaryOp op, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_BinaryOp op, char * value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.8in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_INPUT1TYPE_CODE' & R & \verb'int32_t'& 1st input type code (see \verb'GrB_Type_code') \\ -\verb'GrB_INPUT2TYPE_CODE' & R & \verb'int32_t'& 2nd input type code \\ -\verb'GrB_OUTPUTTYPE_CODE' & R & \verb'int32_t'& output type code \\ -\verb'GrB_INPUT1TYPE_STRING' & R & \verb'char *' & name of the 1st input type \\ -\verb'GrB_INPUT2TYPE_STRING' & R & \verb'char *' & name of the 2nd input type \\ -\verb'GrB_OUTPUTTYPE_STRING' & R & \verb'char *' & name of the output type \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (binop) - name of the operator. For built-in operators, this returns the GraphBLAS - name (\verb'"GrB_LOR"' for \verb'GrB_LOR', for example). - For user-defined operators, the name can be any string of any length. It - is not used by the JIT. It can be set at most once. \\ -\verb'GxB_JIT_C_NAME' & R/W1 & \verb'char *' & - This must be a valid name of a C function to enable its use in the JIT. - The length of the name can be at most \verb'GxB_MAX_NAME_LEN', including - the \verb'nul' terminating byte. It can be set at most once. \\ -\verb'GxB_JIT_C_DEFINITION' & R/W1 & \verb'char *' & - definition for a user-defined operator, as a C function; built-in operators - return an empty string. It can be set at most once. \\ -\hline -\end{tabular} -} - -Built-in operators cannot be modified by \verb'GrB_set'. User-defined -operators can be used without setting their name or definition, but they can be -used in JIT kernels only when both the JIT C name and the definition are set. - -To use the JIT, all monoids and semirings that access this binary operator must -be defined after the user-defined operator has been given both a name and a -definition. GraphBLAS can use a monoid or semiring that uses a binary operator -without a name, but it cannot use the JIT, even if the operator is given a name -later on after the operator is created. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Monoid} Options} -\label{get_set_monoid} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Monoid monoid, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Monoid monoid, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Monoid monoid, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Monoid monoid, size_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Monoid monoid, void * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Monoid monoid, char * value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_INPUT1TYPE_CODE' & R & \verb'int32_t'& 1st input type code \newline - (see \verb'GrB_Type_code') \\ -\verb'GrB_INPUT2TYPE_CODE' & R & \verb'int32_t'& 2nd input type code \\ -\verb'GrB_OUTPUTTYPE_CODE' & R & \verb'int32_t'& output type code \\ -\verb'GrB_INPUT1TYPE_STRING' & R & \verb'char *' & name of the 1st input type \\ -\verb'GrB_INPUT2TYPE_STRING' & R & \verb'char *' & name of the 2nd input type \\ -\verb'GrB_OUTPUTTYPE_STRING' & R & \verb'char *' & name of the output type \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (monoid) - name of the monoid. For built-in monoids, this returns the GraphBLAS - name (\verb'"GrB_LOR_MONOID_BOOL"' for \verb'GrB_LOR_MONOID_BOOL', for example). - For user-defined monoids, the name can be any string of any length. It is - not used by the JIT. It can be set at most once. \\ -\hline -\verb'GxB_MONOID_IDENTITY' & R & \verb'GrB_Scalar' & - identity value of the monoid. The type of the \verb'GrB_Scalar' - must match the monoid type exactly. \\ -\verb'GxB_MONOID_TERMINAL' & R & \verb'GrB_Scalar' & - terminal value of a terminal monoid. The type of the \verb'GrB_Scalar' - must match the monoid type exactly. If the monoid is not terminal, - the \verb'GrB_Scalar' is returned with no entry. \\ -\hline -\verb'GxB_MONOID_OPERATOR' & R & \verb'void *' & - binary operator of the monoid, as a \verb'GrB_BinaryOp' \\ -\hline -\end{tabular} -} - -Built-in monoids cannot be modified by \verb'GrB_set'. - -For \verb'GxB_MONOID_OPERATOR', -the \verb'op' is returned as an alias, not as a new object. For example, -if a monoid is created with a user-defined binary operator, the following usage -returns a shallow copy of the operator: - - {\footnotesize - \begin{verbatim} - GrB_BinaryOp binop ; - GrB_BinaryOp_new (&binop, func, GrB_BOOL, GrB_BOOL, GrB_BOOL) ; - GrB_Monoid monoid ; - GrB_Monoid_new (&monoid, binop, (bool) false) ; \end{verbatim} } - -With the above objects defined, the following two code snippets do the same thing: - - {\footnotesize - \begin{verbatim} - // getting an alias to the binary operator directly: - GrB_BinaryOp op ; - op = binop ; \end{verbatim} } - - {\footnotesize - \begin{verbatim} - // getting an alias to the binary operator using GrB_get: - GrB_BinaryOp op ; - GrB_get (monoid, (void *) &op, GxB_MONOID_OPERATOR) ; - assert (op == binop) ; \end{verbatim} } - -As a result, it is not valid to free both the \verb'op' and the \verb'binop', -since they are the same object. This usage returns the built-in \verb'GrB_LOR' -operator of the corresponding built-in monoid: - - {\footnotesize - \begin{verbatim} - GrB_BinaryOp op ; - GrB_get (GrB_LOR_MONOID, (void *) &op, GxB_MONOID_OPERATOR) ; - assert (op == GrB_LOR) ; \end{verbatim} } - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Semiring} Options} -\label{get_set_semiring} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Semiring semiring, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Semiring semiring, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Semiring semiring, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Semiring semiring, size_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Semiring semiring, void * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Semiring semiring, GrB_Scalar value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.8in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_INPUT1TYPE_CODE' & R & \verb'int32_t'& 1st input type code (see \verb'GrB_Type_code') - of the multiplicative operator \\ -\verb'GrB_INPUT2TYPE_CODE' & R & \verb'int32_t'& 2nd input type code - of the multiplicative operator \\ -\verb'GrB_OUTPUTTYPE_CODE' & R & \verb'int32_t'& output type code - of the multiplicative operator, - and the monoid type. \\ -\verb'GrB_INPUT1TYPE_STRING' & R & \verb'char *' & name of the 1st input type - of the multiplicative operator \\ -\verb'GrB_INPUT2TYPE_STRING' & R & \verb'char *' & name of the 2nd input type - of the multiplicative operator \\ -\verb'GrB_OUTPUTTYPE_STRING' & R & \verb'char *' & name of the output type - of the multiplicative operator, - and the monoid type. \\ -\hline -\verb'GrB_NAME' & R/W1 & \verb'char *' & % GrB_ALREADY_SET (semiring) - name of the semiring. For built-in semirings, this returns the GraphBLAS - name (\verb'"GrB_LOR_LAND_SEMIRING_BOOL"' for \verb'GrB_LOR_LAND_SEMIRING_BOOL', - for example). For user-defined semirings, the name can be any string of any - length. It is not used by the JIT. It can be set at most once. \\ -\hline -\end{tabular} -} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GxB_MONOID_IDENTITY' & R & \verb'GrB_Scalar' & - identity value of the monoid. The type of the \verb'GrB_Scalar' - must match the monoid type exactly. \\ -\verb'GxB_MONOID_TERMINAL' & R & \verb'GrB_Scalar' & - terminal value of a terminal monoid. The type of the \verb'GrB_Scalar' - must match the monoid type exactly. If the monoid is not terminal, - the \verb'GrB_Scalar' is returned with no entry. \\ -\hline -\verb'GxB_MONOID_OPERATOR' & R & \verb'void *' & - binary operator of the monoid, as a \verb'GrB_BinaryOp'; - See Section~\ref{get_set_monoid} \\ -\verb'GxB_SEMIRING_MONOID' & R & \verb'void *' & - monoid of the semiring, as a \verb'GrB_Monoid' \\ -\verb'GxB_SEMIRING_MULTIPLY' & R & \verb'void *' & - multiplicative operator of the semiring, as a \verb'GrB_BinaryOp' \\ -\hline -\end{tabular} -} - -Built-in semirings cannot be modified by \verb'GrB_set'. - -The \verb'GxB_SEMIRING_MONOID' option returns the \verb'GrB_Monoid' of the -semiring. The \verb'GxB_SEMIRING_MULTIPLY' option returns the -\verb'GrB_BinaryOp' for the multiplicative operator of the semiring. For -example: - - {\footnotesize - \begin{verbatim} - // getting an alias to the monoid and multiply operator using GrB_get: - GrB_BinaryOp op ; - GrB_Monoid mon ; - GrB_Semiring semiring = GrB_PLUS_TIMES_FP32 ; - GrB_get (semiring, (void *) &mon, GxB_SEMIRING_MONOID) ; - GrB_get (semiring, (void *) &op, GxB_SEMIRING_MULTIPLY) ; - assert (op == GrB_TIMES_FP32) ; - assert (mon == GrB_PLUS_MONOID_FP32) ; \end{verbatim} } - -The binary op and monoid returned are aliases, not new objects. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Matrix} Options} -\label{get_set_matrix} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Matrix A, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Matrix A, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Matrix A, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Matrix A, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Matrix A, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Matrix A, char * value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Matrix A, int32_t value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.2in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_STORAGE_ORIENTATION_HINT' & R/W & \verb'int32_t'& See \verb'GrB_Orientation', \newline - and Section~\ref{storage_orientation}. \\ -\verb'GrB_ELTYPE_CODE' & R & \verb'int32_t'& matrix type \\ -\verb'GxB_SPARSITY_CONTROL' & R/W & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\verb'GxB_SPARSITY_STATUS' & R & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\hline -\verb'GrB_NAME' & R/W & \verb'char *' & name of the matrix. - This can be set any number of times. \\ -\verb'GrB_ELTYPE_STRING' & R & \verb'char *' & name of the type of the matrix. \\ -\verb'GxB_JIT_C_NAME' & R & \verb'char *' & JIT C name of the type of the matrix. \\ -\hline -\verb'GxB_HYPER_SWITCH' & R/W & \verb'double' & See Section~\ref{hypersparse} \\ -\verb'GxB_BITMAP_SWITCH' & R/W & \verb'double' & See Section~\ref{bitmap_switch} \\ -\hline -\end{tabular} -} - -%------------------------------------------------------------------------------- -\subsubsection{Storing a matrix by row or by column} -\label{storage_orientation} -%------------------------------------------------------------------------------- - -The GraphBLAS \verb'GrB_Matrix' is entirely opaque to the user application, and -the GraphBLAS API does not specify how the matrix should be stored. However, -choices made in how the matrix is represented in a particular implementation, -such as SuiteSparse:GraphBLAS, can have a large impact on performance. - -Many graph algorithms are just as fast in any format, but some algorithms are -much faster in one format or the other. For example, suppose the user -application stores a directed graph as a matrix \verb'A', with the edge $(i,j)$ -represented as the value \verb'A(i,j)', and the application makes many accesses -to the $i$th row of the matrix, with \verb'GrB_Col_extract' -\verb'(w,...,A,GrB_ALL,...,i,desc)' with the transposed descriptor -(\verb'GrB_INP0' set to \verb'GrB_TRAN'). If the matrix is stored by column -this can be extremely slow, just like the expression \verb'w=A(i,:)' in MATLAB, -where \verb'i' is a scalar. Since this is a typical use-case in graph -algorithms, the default format in SuiteSparse:GraphBLAS is to store its -matrices by row, in Compressed Sparse Row format (CSR). - -MATLAB stores its sparse matrices by column, in ``non-hypersparse'' format, in -what is called the Compressed Sparse Column format, or CSC for short. An -\verb'm'-by-\verb'n' matrix in MATLAB is represented as a set of \verb'n' -column vectors, each with a sorted list of row indices and values of the -nonzero entries in that column. As a result, \verb'w=A(:,j)' is very fast in -MATLAB, since the result is already held in the data structure a single list, -the $j$th column vector. However, \verb'w=A(i,:)' is very slow in MATLAB, -since every column in the matrix has to be searched to see if it contains row -\verb'i'. In MATLAB, if many such accesses are made, it is much better to -transpose the matrix (say \verb"AT=A'") and then use \verb"w=AT(:,i)" instead. -This can have a dramatic impact on the performance of MATLAB. - -Likewise, if \verb'u' is a very sparse column vector and \verb'A' is stored by -column, then \verb"w=u'*A" (via \verb'GrB_vxm') is slower than \verb'w=A*u' -(via \verb'GrB_mxv'). The opposite is true if the matrix is stored by row. - -SuiteSparse:GraphBLAS stores its matrices by row, by default (with one -exception described below). However, it can also be instructed to store any -selected matrices, or all matrices, by column instead (just like MATLAB), so -that \verb'w=A(:,j)' (via \verb'GrB_Col_extract') is very fast. The change in -data format has no effect on the result, just the time and memory usage. To -use a column-oriented format by default, the following can be done in a user -application that tends to access its matrices by column. - - {\footnotesize - \begin{verbatim} - GrB_init (...) ; - // just after GrB_init: do the following: - GrB_set (GrB_GLOBAL, GrB_COLMAJOR, GrB_STORAGE_ORIENTATION_HINT) ; \end{verbatim} } - -If this is done, and no other \verb'GrB_set' calls are made with \newline -\verb'GrB_STORAGE_ORIENATION_HINT', all matrices will be stored by column. -The default format is \verb'GrB_ROWMAJOR'. - -All vectors (\verb'GrB_Vector') are held by column, and this cannot be changed. - -By default, matrices of size \verb'm-by-1' are held by column, regardless of -the global setting described above. Matrices of size \verb'1-by-n' with -\verb'n' not equal to 1 are held by row, regardless of the global setting. -The global setting only affects matrices with both \verb'm > 1' and \verb'n > 1'. -Empty matrices (\verb'0-by-0') are also controlled by the global setting. - -After creating a matrix with \verb'GrB_Matrix_new (&A, ...)', -its format can be changed arbitrarily with: - - {\footnotesize - \begin{verbatim} - GrB_set (A, GrB_COLMAJOR, GrB_STORAGE_ORIENTATION_HINT) ; - GrB_set (A, GrB_ROWMAJOR, GrB_STORAGE_ORIENTATION_HINT) ; \end{verbatim} } - -If set to other values (\verb'GrB_BOTH' or \verb'GrB_UNKNOWN'), the -format is changed to \verb'GrB_ROWMAJOR'. - -With this setting, even an \verb'm-by-1' matrix can then be changed to be held -by row, for example. Likewise, once a \verb'1-by-n' matrix is created, it can -be converted to column-oriented format. - -%------------------------------------------------------------------------------- -\subsubsection{Hypersparse matrices} -\label{hypersparse} -%------------------------------------------------------------------------------- - -MATLAB can store an \verb'm'-by-\verb'n' matrix with a very large value of -\verb'm', since a CSC data structure takes $O(n+|{\bf A}|)$ memory, independent -of \verb'm', where $|{\bf A}|$ is the number of nonzeros in the matrix. It -cannot store a matrix with a huge \verb'n', and this structure is also -inefficient when $|{\bf A}|$ is much smaller than \verb'n'. In contrast, -SuiteSparse:GraphBLAS can store its matrices in {\em hypersparse} format, -taking only $O(|{\bf A}|)$ memory, independent of how it is stored (by row or -by column) and independent of both \verb'm' and \verb'n' -\cite{BulucGilbert08,BulucGilbert12}. - -In both the CSR and CSC formats, the matrix is held as a set of sparse vectors. -In non-hypersparse format, the set of sparse vectors is itself dense; all -vectors are present, even if they are empty. For example, an -\verb'm'-by-\verb'n' matrix in non-hypersparse CSC format contains \verb'n' -sparse vectors. Each column vector takes at least one integer to represent, -even for a column with no entries. This allows for quick lookup for a -particular vector, but the memory required is $O(n+|{\bf A}|)$. With a -hypersparse CSC format, the set of vectors itself is sparse, and columns with -no entries take no memory at all. The drawback of the hypersparse format is -that finding an arbitrary column vector \verb'j', such as for the computation -\verb'C=A(:,j)', takes $O(\log k)$ time if there $k \le n$ vectors in the data -structure. One advantage of the hypersparse structure is the memory required -for an \verb'm'-by-\verb'n' hypersparse CSC matrix is only $O(|{\bf A}|)$, -independent of \verb'm' and \verb'n'. Algorithms that must visit all non-empty -columns of a matrix are much faster when working with hypersparse matrices, -since empty columns can be skipped. - -The \verb'hyper_switch' parameter controls the hypersparsity of the internal -data structure for a matrix. The parameter is typically in the range 0 to 1. -The default is \verb'hyper_switch' = \verb'GxB_HYPER_DEFAULT', which is an -\verb'extern' \verb'const' \verb'double' value, currently set to 0.0625, or -1/16. This default ratio may change in the future. - -The \verb'hyper_switch' determines how the matrix is converted between the -hypersparse and non-hypersparse formats. Let $n$ be the number of columns of a -CSC matrix, or the number of rows of a CSR matrix. The matrix can have at most -$n$ non-empty vectors. - -Let $k$ be the actual number of non-empty vectors. That is, for the CSC -format, $k \le n$ is the number of columns that have at least one entry. Let -$h$ be the value of \verb'hyper_switch'. - -If a matrix is currently hypersparse, it can be converted to non-hypersparse if -the either condition $n \le 1$ or $k > 2nh$ holds, or both. Otherwise, it -stays hypersparse. Note that if $n \le 1$ the matrix is always stored as -non-hypersparse. - -If currently non-hypersparse, it can be converted to hypersparse if -both conditions $n > 1$ and $k \le nh$ hold. Otherwise, it stays -non-hypersparse. Note that if $n \le 1$ the matrix always remains -non-hypersparse. - -The default value of \verb'hyper_switch' is assigned at startup by -\verb'GrB_init', and can then be modified globally with \verb'GrB_set'. All -new matrices are created with the same \verb'hyper_switch', determined by the -global value. Once a particular matrix \verb'A' has been constructed, its -hypersparsity ratio can be modified from the default with: - - {\footnotesize - \begin{verbatim} - double hyper_switch = 0.2 ; - GrB_set (A, hyper_switch, GxB_HYPER_SWITCH) ; \end{verbatim}} - -To force a matrix to always be non-hypersparse, use \verb'hyper_switch' equal to -\verb'GxB_NEVER_HYPER'. To force a matrix to always stay hypersparse, set -\verb'hyper_switch' to \verb'GxB_ALWAYS_HYPER'. - -A \verb'GrB_Matrix' can thus be held in one of four formats: any combination of -hyper/non-hyper and CSR/CSC. All \verb'GrB_Vector' objects are always stored -in non-hypersparse CSC format. - -A new matrix created via \verb'GrB_Matrix_new' starts with $k=0$ and is created -in hypersparse form by default unless $n \le 1$ or if $h<0$, where $h$ is the -global \verb'hyper_switch' value. The matrix is created in either -\verb'GrB_ROWMAJOR' or \verb'GrB_COLMAJOR' format, as determined by the last call -to -\verb'GrB_set(GrB_GLOBAL,' \verb'..., GrB_STORAGE_ORIENTATION_HINT,...)' or \verb'GrB_init'. - -A new matrix \verb'C' created via \verb'GrB_dup (&C,A)' inherits the CSR/CSC -format, hypersparsity format, and \verb'hyper_switch' from \verb'A'. - -%------------------------------------------------------------------------------- -\subsubsection{Bitmap matrices} -\label{bitmap_switch} -%------------------------------------------------------------------------------- - -By default, SuiteSparse:GraphBLAS switches between all four formats -(hypersparse, sparse, bitmap, and full) automatically. Let $d = |{\bf A}|/mn$ -for an $m$-by-$n$ matrix $\bf A$ with $|{\bf A}|$ entries. If the matrix is -currently in sparse or hypersparse format, and is modified so that $d$ exceeds -a given threshold, it is converted into bitmap format. The default threshold -is controlled by the \verb'GxB_BITMAP_SWITCH' setting, which can be set -globally, or for a particular matrix or vector. - -The default value of the switch to bitmap format depends on $\min(m,n)$, for a -matrix of size $m$-by-$n$. For the global setting, the bitmap switch is a -\verb'double' array of size \verb'GxB_NBITMAP_SWITCH'. The defaults are given -below: - -\vspace{0.2in} -{\small -\begin{tabular}{lll} -parameter & default & matrix sizes \\ -\hline -\verb'bitmap_switch [0]' & 0.04 & $\min(m,n) = 1$ (and all vectors) \\ -\verb'bitmap_switch [1]' & 0.05 & $\min(m,n) = 2$ \\ -\verb'bitmap_switch [2]' & 0.06 & $\min(m,n) = 3$ to 4 \\ -\verb'bitmap_switch [3]' & 0.08 & $\min(m,n) = 5$ to 8 \\ -\verb'bitmap_switch [4]' & 0.10 & $\min(m,n) = 9$ to 16\\ -\verb'bitmap_switch [5]' & 0.20 & $\min(m,n) = 17$ to 32\\ -\verb'bitmap_switch [6]' & 0.30 & $\min(m,n) = 33$ to 64 \\ -\verb'bitmap_switch [7]' & 0.40 & $\min(m,n) > 64$ \\ -\end{tabular} -} -\vspace{0.2in} - -That is, by default a \verb'GrB_Vector' is held in bitmap format if its density -exceeds 4\%. To change the global settings, do the following: - -{\footnotesize -\begin{verbatim} - double bswitch [GxB_NBITMAP_SWITCH] = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 } ; - GrB_set (GrB_GLOBAL, (void *) bswitch, GxB_BITMAP_SWITCH, - GxB_NBITMAP_SWITCH * sizeof (double)) ; -\end{verbatim} -} - -If the matrix is currently in bitmap format, it is converted to full if all -entries are present, or to sparse/hypersparse if $d$ drops below $b/2$, if its -bitmap switch is $b$. A matrix or vector with $d$ between $b/2$ and $b$ -remains in its current format. - -%------------------------------------------------------------------------------- -\subsubsection{Sparsity status} -\label{sparsity_status} -%------------------------------------------------------------------------------- - -The sparsity status of a matrix can be queried with the following, which -returns a value of \verb'GxB_HYPERSPARSE' (1), \verb'GxB_SPARSE' (2), -\verb'GxB_BITMAP' (4), or \verb'GxB_FULL' (8). - -{\footnotesize -\begin{verbatim} - int32_t sparsity ; - GrB_get (A, &sparsity, GxB_SPARSITY_STATUS) ; \end{verbatim}} - -The sparsity format of a matrix can be controlled with the field set to -\verb'GxB_SPARSITY_CONTROL', for which the \verb'value' can be any mix (a sum or bitwise -or) of \verb'GxB_HYPERSPARSE', \verb'GxB_SPARSE', \verb'GxB_BITMAP', and -\verb'GxB_FULL'. By default, a matrix or vector can be held in any format, -with the default setting \verb'GxB_AUTO_SPARSITY', which is equal to -\verb'GxB_HYPERSPARSE' + \verb'GxB_SPARSE' + \verb'GxB_BITMAP' + -\verb'GxB_FULL' (15). To enable a matrix to take on just \verb'GxB_SPARSE' or -\verb'GxB_FULL' formats, but not \verb'GxB_HYPERSPARSE' or \verb'GxB_BITMAP', -for example, use the following: - -{\footnotesize -\begin{verbatim} - GrB_set (A, GxB_SPARSE + GxB_FULL, GxB_SPARSITY_CONTROL) ; \end{verbatim}} - -In this case, SuiteSparse:GraphBLAS will hold the matrix in sparse format -(\verb'CSR' or \verb'CSC', depending on its -\verb'GrB_STORAGE_ORIENTATION_HINT'), unless all entries are present, in which -case it will be converted to full format. - -Only the least significant 4 bits of the sparsity control are considered, so -the formats can be bitwise negated. For example, to allow for any format -except full: - -{\footnotesize -\begin{verbatim} - GrB_set (A, ~GxB_FULL, GxB_SPARSITY_CONTROL) ; \end{verbatim}} - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Vector} Options} -\label{get_set_vector} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Vector v, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Vector v, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Vector v, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Vector v, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Vector v, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Vector v, char * value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Vector v, int32_t value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{3in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_ELTYPE_CODE' & R & \verb'int32_t'& vector type \\ -\verb'GxB_SPARSITY_CONTROL' & R/W & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\verb'GxB_SPARSITY_STATUS' & R & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\hline -\verb'GrB_NAME' & R/W & \verb'char *' & name of the vector. \\ -% This can be set any number of times. \\ -\verb'GrB_ELTYPE_STRING' & R & \verb'char *' & name of the type of the vector. \\ -\verb'GxB_JIT_C_NAME' & R & \verb'char *' & JIT C name of the type of the vector. \\ -\hline -\verb'GxB_BITMAP_SWITCH' & R/W & \verb'double' & See Section~\ref{bitmap_switch} \\ -\hline -\end{tabular} -} - -See Section~\ref{get_set_matrix}; a \verb'GrB_Vector' is treated as if it were -an $n$-by-1 matrix, and is always in column major form. It is never -hypersparse. - -%------------------------------------------------------------------------------- -% \newpage -\subsection{{\sf GrB\_Scalar} Options} -\label{get_set_scalar} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Scalar s, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Scalar s, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Scalar s, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Scalar s, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Scalar s, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Scalar s, char * value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Scalar s, int32_t value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{3in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline - -\verb'GrB_ELTYPE_CODE' & R & \verb'int32_t'& scalar type \\ -\verb'GxB_SPARSITY_STATUS' & R & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\hline -\verb'GrB_NAME' & R/W & \verb'char *' & name of the scalar. \\ -% This can be set any number of times. \\ -\verb'GrB_ELTYPE_STRING' & R & \verb'char *' & name of the type of the scalar. \\ -\verb'GxB_JIT_C_NAME' & R & \verb'char *' & JIT C name of the type of the scalar. \\ -\hline -\end{tabular} -} -\vspace{0.1in} - -See Section~\ref{get_set_matrix}; a \verb'GrB_Scalar' is treated as if it were -a 1-by-1 matrix, and is always in column major form. It is never hypersparse. - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GrB\_Descriptor} Options} -\label{get_set_descriptor} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GrB_Descriptor desc, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Descriptor desc, char * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Descriptor desc, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GrB_Descriptor desc, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GrB_Descriptor desc, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Descriptor desc, char * value, GrB_Field f) ; -GrB_Info GrB_set (GrB_Descriptor desc, int32_t value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{3.3in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_OUTP' & R/W & \verb'int32_t'& \verb'GrB_DEFAULT' or \verb'GrB_REPLACE' \\ -\verb'GrB_MASK' & R/W & \verb'int32_t'& \verb'GrB_DEFAULT', \verb'GrB_COMP', \verb'GrB_STRUCTURE', or - \newline \verb'GrB_COMP_STRUCTURE' \\ -\verb'GrB_INP0' & R/W & \verb'int32_t'& \verb'GrB_DEFAULT' or \verb'GrB_TRAN' \\ -\verb'GrB_INP1' & R/W & \verb'int32_t'& \verb'GrB_DEFAULT' or \verb'GrB_TRAN' \\ -\verb'GxB_AxB_METHOD' & R/W & \verb'int32_t'& Method used by \verb'GrB_mxm' (\verb'GrB_DEFAULT', \newline - \verb'GxB_AxB_GUSTAVSON'. \verb'GxB_AxB_HASH', \newline - \verb'GxB_AxB_SAXPY', or \verb'GxB_AxB_DOT'). \\ -\verb'GxB_SORT' & R/W & \verb'int32_t'& if true, \verb'GrB_mxm' returns its output in sorted form. \\ -\verb'GxB_COMPRESSION' & R/W & \verb'int32_t'& compression method for serialize methods. \\ -\verb'GxB_IMPORT' & R/W & \verb'int32_t'& \verb'GxB_FAST_IMPORT' or \verb'GxB_SECURE_IMPORT' for \verb'GxB*_pack*' methods. \\ -\hline -\verb'GrB_NAME' & R/W & \verb'char *' & name of the descriptor. - This can be set any number of times for user-defined descriptors. Built-in - descriptors have the same name as the variable name (\verb'"GrB_DESC_T1"' - for the \verb'GrB_DESC_T1' descriptor, for example) \\ -\hline -\end{tabular} -} - -The following table describes each option. -See Section~\ref{descriptor} for more details. - -\vspace{0.2in} -\noindent -{\footnotesize -\begin{tabular}{|l|p{2.4in}|p{2.2in}|} -\hline -Descriptor & Default & Non-default \\ -field & & \\ -\hline - -\verb'GrB_OUTP' - & \verb'GrB_DEFAULT': - The output matrix is not cleared. The operation computes - ${\bf C \langle M \rangle = C \odot T}$. - & \verb'GrB_REPLACE': - After computing ${\bf Z=C\odot T}$, - the output {\bf C} is cleared of all entries. - Then ${\bf C \langle M \rangle = Z}$ is performed. \\ - -\hline - -\verb'GrB_MASK' - & \verb'GrB_DEFAULT': - The Mask is not complemented. \verb'Mask(i,j)=1' means the value $C_{ij}$ - can be modified by the operation, while \verb'Mask(i,j)=0' means the value - $C_{ij}$ shall not be modified by the operation. - & \verb'GrB_COMP': - The Mask is complemented. \verb'Mask(i,j)=0' means the value $C_{ij}$ - can be modified by the operation, while \verb'Mask(i,j)=1' means the value - $C_{ij}$ shall not be modified by the operation. \\ - & - & \verb'GrB_STRUCTURE': - The values of the Mask are ignored. If \verb'Mask(i,j)' is an entry - in the \verb'Mask' matrix, it is treated as if \verb'Mask(i,j)=1'. - The two options \verb'GrB_COMP' and \verb'GrB_STRUCTURE' can be - combined, with two subsequent calls, or with a single call with the setting - \verb'GrB_COMP+GrB_STRUCTURE'. \\ - -\hline - -\verb'GrB_INP0' - & \verb'GrB_DEFAULT': - The first input is not transposed prior to using it in the operation. - & \verb'GrB_TRAN': - The first input is transposed prior to using it in the operation. Only - matrices are transposed, never vectors. \\ - -\hline - -\verb'GrB_INP1' - & \verb'GrB_DEFAULT': - The second input is not transposed prior to using it in the operation. - & \verb'GrB_TRAN': - The second input is transposed prior to using it in the operation. Only - matrices are transposed, never vectors. \\ - -\hline - -\verb'GxB_AxB_METHOD' - & \verb'GrB_DEFAULT': - The method for \verb'C=A*B' is selected automatically. - & \verb'GxB_AxB_'{\em method}: The selected method is used to compute - \verb'C=A*B'. \\ - -\hline - -\verb'GxB_SORT' - & \verb'GrB_DEFAULT': - The computation of \verb'C=A*B' may leave \verb'C' in a jumbled state; - \verb'GrB_wait' will finalize the matrix. - & any nonzero value: \verb'C=A*B' always returns \verb'C' in final, - sorted form. \\ - -\hline - -\verb'GxB_COMPRESION' - & \verb'GrB_DEFAULT': - Serialize methods will use the default method, ZSTD (level 1) - & See Section~\ref{serialize_deserialize} \\ - -\hline - -\verb'GxB_IMPORT' - & \verb'GrB_DEFAULT': fast import - & \verb'GxB_SECURE_IMPORT': secure import \\ - -\hline -\end{tabular} -} - - -%------------------------------------------------------------------------------- -\newpage -\subsection{{\sf GxB\_Context} Options} -\label{get_set_context} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (GxB_Context Context, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_get (GxB_Context Context, char * value, GrB_Field f) ; -GrB_Info GrB_get (GxB_Context Context, int32_t * value, GrB_Field f) ; -GrB_Info GrB_get (GxB_Context Context, size_t * value, GrB_Field f) ; - -GrB_Info GrB_set (GxB_Context Context, GrB_Scalar value, GrB_Field f) ; -GrB_Info GrB_set (GxB_Context Context, char * value, GrB_Field f) ; -GrB_Info GrB_set (GxB_Context Context, int32_t value, GrB_Field f) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{3.5in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GxB_NTHREADS' & R/W & \verb'int32_t' & number of OpenMP threads to use; - See Section~\ref{omp_parallelism} \\ -\verb'GxB_CHUNK' & R/W & \verb'double' & chunk factor for task creation; - See Section~\ref{omp_parallelism} \\ -\hline -\verb'GrB_NAME' & R/W & \verb'char *' & name of the context. - This can be set any number of times for user-defined contexts. Built-in - contexts have the same name as the variable name (\verb'"GxB_CONTEXT_WORLD"' - for the \verb'GxB_CONTEXT_WORLD' context, for example) \\ -\hline -\end{tabular} -} - -NOTE: the non-polymorphic names for this method are -\verb'GxB_Context_get_[KIND]' and \verb'GxB_Context_set_[KIND]', where -\verb'KIND' can be: - \verb'Scalar' (for \verb'GrB_Scalar'), - \verb'String' (for \verb'char *'), - \verb'INT' (for \verb'int32_t'), and - \verb'SIZE' (for \verb'size_t *' for \verb'GrB_get' only), and - \verb'VOID' (for \verb'void *'). -The non-polymorphic suffix of \verb'INT' is used here instead of -\verb'INT32' because \verb'GxB_Context_*_INT32' appear as historical methods -in version v8.0 and earlier, which are now deprecated. - -For the \verb'int32_t' type, the use of the polymorphic \verb'GrB_set' and -\verb'GrB_get' accesses the correct version of this method. When using -non-polymorphic methods, the use of \verb'GxB_Context_get_INT' and -\verb'GxB_Context_set_INT' is recommended. - -%------------------------------------------------------------------------------- -\newpage -\subsection{Options for inspecting a serialized blob} -\label{get_set_blob} -%------------------------------------------------------------------------------- - -\begin{mdframed}[userdefinedwidth=6.5in] -{\footnotesize -\begin{verbatim} -GrB_Info GrB_get (const void *blob, GrB_Scalar value, GrB_Field f, size_t blobsize) ; -GrB_Info GrB_get (const void *blob, char * value, GrB_Field f, size_t blobsize) ; -GrB_Info GrB_get (const void *blob, int32_t * value, GrB_Field f, size_t blobsize) ; -GrB_Info GrB_get (const void *blob, size_t * value, GrB_Field f, size_t blobsize) ; -\end{verbatim} -}\end{mdframed} - -\noindent -{\small -\begin{tabular}{|l|l|l|p{2.2in}|} -\hline -\verb'GrB_Field' & R/W & C type & description \\ -\hline -\verb'GrB_STORAGE_ORIENTATION_HINT' & R & \verb'int32_t'& See \verb'GrB_Orientation', \newline - and Section~\ref{storage_orientation}. \\ -\verb'GrB_ELTYPE_CODE' & R & \verb'int32_t'& type of matrix in the blob \\ -\verb'GxB_SPARSITY_CONTROL' & R & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\verb'GxB_SPARSITY_STATUS' & R & \verb'int32_t'& See Section~\ref{sparsity_status} \\ -\hline -\verb'GrB_NAME' & R & \verb'char *' & name of the matrix in the blob. \\ -\verb'GrB_ELTYPE_STRING' & R & \verb'char *' & name of the type of the matrix in the blob. \\ -\verb'GxB_JIT_C_NAME' & R & \verb'char *' & JIT C name of the type of the matrix in the blob. \\ -\hline -\verb'GxB_HYPER_SWITCH' & R & \verb'double' & See Section~\ref{hypersparse} \\ -\verb'GxB_BITMAP_SWITCH' & R & \verb'double' & See Section~\ref{bitmap_switch} \\ -\hline -\end{tabular} -} - -The \verb'GrB_Matrix_serialize' and \verb'GxB_Matrix_serialize' methods create -a {\em blob} as a single array of bytes that contains all content of a -\verb'GrB_Matrix'. These \verb'GrB_get' methods can query a blob for the same -values that can be queried for a \verb'GrB_Matrix'. The blob cannot be -modified by \verb'GrB_set'. - -Note that these \verb'GrB_get' methods add a fourth parameter, the size of -the blob. All other \verb'GrB_get' methods have just three parameters: -the object, the value, and the field. - diff --git a/Doc/GraphBLAS_API_version.tex b/Doc/GraphBLAS_API_version.tex index 684c69e3c9..12852497bd 100644 --- a/Doc/GraphBLAS_API_version.tex +++ b/Doc/GraphBLAS_API_version.tex @@ -1,3 +1,3 @@ % GraphBLAS C API Specification version, at graphblas.org -2.1.0 -(Oct 7, 2023)% +2.0.0 +(Nov 15, 2021)% diff --git a/Doc/GraphBLAS_UserGuide.bib b/Doc/GraphBLAS_UserGuide.bib index 404ad3958d..5e162513e2 100644 --- a/Doc/GraphBLAS_UserGuide.bib +++ b/Doc/GraphBLAS_UserGuide.bib @@ -182,7 +182,6 @@ @article{Davis23 keywords = {Graph algorithms, GraphBLAS, sparse matrices} } - @book{Higham, author={Higham, N.}, title={Accuracy and Stability of Numerical Algorithms}, diff --git a/Doc/GraphBLAS_UserGuide.pdf b/Doc/GraphBLAS_UserGuide.pdf index 573ed7440046a3dcd8dcb437c8fdb7bacd8f0597..b522e81cf6f0acd74c3da1abd93b3ab6b78443d9 100644 GIT binary patch delta 789515 zcmYhCQ*@8d^iI~#^_CV=?+ItS$9031UgTZkOOU%EV*shRU_Ov`TvW@28 zP{*Tg*K0b)$WBXT-&e1>+A3w@(lNB1)LY?-DPn(iUw8j{s?KN)vL!>Z#$e`njgd>n z!`3aDiD1Uimci-Lsh}d`v&J3qH}AxR7|wYkm=Fwy82vG-qtq%@Wk@knKD2fMs>RsA zq+n=-zaoi9^RQ{3NXiIxCCMdXTw#?tI}~8RMTs!Up@*`{4KvI+g-XDhZ5>uQxiLY+ z26}BxC!)w{p0j7cj&rj@l?}Qd8R4AjWRS=W){Ly$n4>4-+}Dnx2O9;s?t`h6sCXYk z$kDR}UqsRJaT($D&`RhRY0@R4#E;8;Qs*yJN>oT6(A&EkOG45S(RFd zWQYx>4-y{;g#@`3Y>(t&=}=J&vban;9h0yEYB?*+JBD5R9Wl&2#zUf?+&|DlG!UnI zc)$~g^ksr>>c}-QWbBGIzQ)t0P-s+2E=RV!9fxD(~ zWJwSC685)dN^vE=VsqhHa(2uWx=QZS)2J+IPhMmPOb^`Dh_0mZm6%E`NaoU&WD#^% zKV?{?yRwxpOxJo;oO*r8QfgZT@FJ ~^6HGU*(1x~{Hp%f<|pc&4+Rx&pn6y5I; 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
jl+lb#=DJB84Q9>_AQN=QN88wcb^o!5k7a- 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 z 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%0ARwsK{#8JYo*t$Jra1gx=j%-W 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 *PTf_tFZs+5hY^X1ZAG%%oi7AZ2jA3Fv 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

-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�|V;^Rp)~O!8A3EU6J54sQ(lfV`IdKp1%m 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

p_}Jl8|X=vD`nQTdVh5CsarhYyN;C#b`kfTQ&S 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 z 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

;v0H*04*HEzdrPGX{3)gxozlaZ2qQ2#`4tI=kAH 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⩔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�yi|5@tX)Lmz)R)6#`^!m$L{6Hh;Vce1{6cMZf@#KykmE`O2ZxCy^9RAO&F} zbmmLv#-)rfNWl z7c7Ka5hbNw;c*rb5r&S(AXkB1GFvRlYMB+EAw5F6O^K~=n{{dgZ>waxzIZpgHp5Hv zdG_JTjIXy-kA-f!$Ugd1K+dzWFkiBj)o6b-34}rVXk=ffdQDSSwGAchTgrowM1g2y zc{Sz@V338~l(HJr1AvPN13WRN3R*@vKr`5E*~* zcFoy%93n}WV#7H6H1z?1n)i*qEb}K+Mlc^Fokovw)jL!N5g~G)Wz_v=`Eass0%%jp z{k_P)!7enkd7_b9FOodbIe_2*lq3_w;Fv8osR4pnU0SSH8s)Xo^wF38nB|lz!u;T9 zF7M`le|S9_ao{E;`1fox3=AbApg(`2T>^!4L<`na69qvzOgeywMlhGY`=AeOo_jqY zYxz1YOs_j4wHYT{8!ZU47Iefv^n-CCIe+e`17SZG5Kes2g?sdj12!bk$S%GoP+^S(9FGld4W%_IVsWZPBC> zo&1_DwVfbLjDKTR*}P|l-&q*A<;t|{(!@&-`a~J_qJRTKhqwY#m}@H3Q|#9~H=RXN zr!{0pfRk6N(dz;Giam)LMTCFsP_<6#L-WkZ$5R9e9C&JN#t;H^Lzur|&$2moYzD2g zupN^R=;TS=nBK0)zU-_Ni3E~XS!L+;a8=f>%4)m1MwEDhbN4SiWoWTKG_@%4`l0S7 zsqalsn}at}`zcv0b{pJ!mnU%Dnvb{ze%!)!Wf=}>SXxx!r~O5SN-BRV1*n+m5X9Vw z8oSXR1~7O(n?}@~dt*kwn_XZf$Se$MGw2^57@8yiM(cKLS`#nmeA;Ds@viz-uBgjph`F8*VOcT_lz|NY6KrD=e|M9G*5qFvngtq-Vx!eY0lP>)gLKiae-*6%gk4~*}| zCu;!Ur2Tkhb^3p0m*l+wGV4xDt%Jz6zX34R4*(dH5kC`{cpMq=DaeTb zFEZi-WW)nx#3$r6K0ro1K*m!VcjVaEMI%)Wc?L!~eEV?PL5hCzSE^`Y3pCbV?}3h;8mc32Te zsSBXO&T0B{Lty1?o-D8sLaC0&*ySr3k+geSzlYh>_(VlJYJD=o*0Uq8Q4w|T!PU`c zKRjCDbu@hLK3?2C`Tt0$hze!zT`GjqNfS&Qbx%TFrC7`i*p7B)U7L3mL6+scuvp#KDJMY^t0@&G#UoYa8X z&j|2Im}k0hhUv+wNv#G`)Tv&fRnKR&~Fv}3|(6NNj+9yV!T({I4Gpj$7Hk3 zQw;jc|6WB!Cmzk?6MjAM?Dp(AKzzXT|1Ta>B#IBLL5zokMX%?Re*tPYX(5-vSO*lB zfNcU5my-_&dw&s(IA@VkVl=xOaS<|)%aN}nrFHh^V z$SWenSyqfi=seJ}URc)mr{j=2v&+-7;}7#Ocj|a70_O{UEJvE-qSobIJh!A87z>(S zl<{hDc6s{I{wcD7hNXny`Yq!_vXw8=!K%@K{;gJf=U{jl5le^n!l4AZNb6n4!IHsX=O z?H+~V0EN>$(Hr8K(r_(4)8vGPudY?+ejCuGp4e9D`faA+Htj^au~0Rt4tMoAb-|BE z?ji10!K>}}BsXU_t1|6w-lR|dxajsfqMcw8WO=&l)gPCaopeJ3?WMfgVcL{HN9=zY zB-r#W&EqWne^>9M+gVR^(mmLXf^S2&+e9&`fL}2sL*o0(fEUCzfc*(8nO=`e-14C; z@_T41+-{5X4g^AiYo8D>A>dA2h!l{v165tl=V1fLGgq`tW`mZPvvHyZZ*3oXChvd< z5xGtUS8B5>fnP*%w%Ndy?M0&BY%B~m001<2PNnq{e`kt(fpO;xET|N9Vmc^qI;dxT z1cs%7tT1_u)PQLROP?z4#Mgk|)&S5Q|3lD!0EAONR1)`1m&mqW5&;{(gdT~HHDdC* zF=5yd@#TQ68voHK2^iyK(LNtwF$lmd9|R$zHr!fg4{x$wW$8Sw@u9Nskuc4xTE`er zA??Euf5ALH1Inr_#lPT=m*`Z1*fr!h99IVXfe$8ht31?FV&o>lxdFW5oc6NFsU>kX8XGV$d<|(Lc~KrRZ>2V5kE9WVfT3;gMBdq z?8d#I7bDXEPlCNM68#uWJfGtO+J<9Yukbx-<_$`9B?ELmaP9zy#&n8{-U}V*tFpK+ z<0awOw0eCItOQd%Xnc?|#_gTXH@xX^?Ww~hbQmdaY?t|BE>+uRDsxI{errM5yvX_% z8$5Y21s-!HAaN0~FtmL_$gn5$cJ|^wgmRxUm%&&E6ahGsv9l8bI5d|bXbCERwN^`y z+c*rq=U3>c0JTO>%P!EvcF`95IJB5tinb`+L^Cngk!LMuX7cY#iE=a+1eB;x zI$LqQ6T1j&CuL!U;g{YHEvr!D*1WD&AnTX{g91@yJiRu*Iy1O z*M0YVvMv-ex<>1Vd`CXzAq3M#lR{d?>kR+M4d>4|2p}blHPp;mjWBTmvk6vAHdBB( z7vi@BXf6{iPVpU{Mpu0=xo@Hh$}@plKbt;Vvr@{5>|b;7luVc-fYo`0XPo1~WXxK44@m}pM{a(?ld~#^E~=mK ztY8AD8J^!7)pgAT-2CNyUX0z6U$zm%FAUVKfi}%^>H6)fKcCN4gqBQ~^;8mXhd!40 zeYEfi^OXoKP*>Rs0r8~2e5?V-MtK9};g!F&CH>Kj~K)N#}w>p0nL$1S3E%~H?; zJ0>%_Xc(BykFmplIcdQ zd{ds{RF8+}(+Rex=>(e|!Wtghkk2~TWQ&O$$h|++&y(-EgA?#e-*|qxM4&I=Qog2FV=^f zUw)&D4Rn57P$HaNoc++l0wiD(p7x8MZ~hU49d5^sB1Va!uxVB0Uyeb#;n^f5lD5*N z$Ia9c1S3p!NBA~z1Yrc>M*m-qAdDf>4Np*=9{Pvi25yBorTl~y*P3Xd;Q?+%$0_%_ zEFOmS2Xjdje+=mk^ZScyTae50=L#CG35V~kS-$;!enG8>Icbf9-&ofT)Dq#skP;Ot7r(oG`_y zRwsBFD=B&MIj#PKPa@f+RcK1XPmmH^3Qn9Imx6t= z|4J48e*k~jltkPTCtHcOMHyBO#-<+7ad2ta;4!<4$z|Z162XiKA?I zf9UAeO!z}jY%C42mR$+LU}enp?nE%J!$~t1!bj)kK$jeb60O|eY#?*EA0{s!!+=?K zy158XFx;8eo8e}pVDV-Uqy(YRI|eC#r8anxFfKV3;T?rTWjLOA!@?okX}qGKz;@dY zGncHbyBs-@8^l2$uUMy%{lU9WQST;gf58&TdEXY^eEKwbTc98<`i5X5sGwfzWeAJG zFQB3E3mAlg1Q%5rP{K?_0>CbhMkzSWA;ZhzE_uJSd&aH=Y z>!H#Ji+9eVG$zI@FIL&WJcJQUF$Ol&#)#s$>5_|q*cyP;syd@j5=_+EBsP- zu!0Mt)qKywBW8OWubOh0;GR3ne-y}od0$~zR1VOVTN^Zt55Zu7vPOf!w)EMc)5EGU zn<+7r1=BDC!j!*=|3Zl#X=wKF>WG#&<@?Ad$F%IE^_6`V1k{bklWIIi6e}ar3aAuO{ z11uWBdPEUUZr|LHbkAqudhNeVdf z3MGaYP@L*2-=ND2J!k4#K;G)E=H!s&c90IH<=OZ*#2PJUxVWW+I`w_DLiNE8R*q0S zMUf~Z!0J!SziN1&Ax4eje?T}J0w#+wp<(^dP#isLhNj1~tYh0WV}V45adGMDS<6N0 zT^bi$r^m2IaN)T1q400s24%KE6-nvg)ORDL!rw=X{V$8gDJAxTXyDsmB3#dymM~2U zU`%Hap*@g1on*0^5Z=7_7Q_ef!U>SoTRmewoMRs1u4mVLz^TAtf9k$8CWgxb)_B-A zL<*>fGUM2QdZaShWc#c})l-#ZA(biftO}jei9UL}GZ(xaGK~%pI#;DK8X0WY>eI)3 z8Okm=B3d6+5qq$unbTmdH;;8J&M-lomgBtUc+5(lN9*M0(_^C;Uq6ry^YYJK5FFdK z0`_1prd(atpT`oxe5$uqEtk1$VPqP zab|zPh}C?SM2zARK#OU0xyh<^nLpM=Q`)RzX%h_Mc4{vNVsUqMp%yT^+Y0fgYEIJZ z6fLNXWPiE{e+Decv0?G_nzEx4@-j=e%wBmMO{5v7(UJjjZ5k(7r~BBnogolPUwccO zXg*-&xNeoz;Q=r`mM0Vd^a$|t8dZz+;B1?o_H}pxM^n+!@U_^6-)*|DGDIuDP9J)) zF^`=gAi_hFwZr2sjgXcdRO-Yk|x*pxcvC&0~*RP zSt*5E>bU9O|217m@oP4N5JIBK!YzX%F~LUJeH~~(LkB`2F{Y2q;KxX}vGr@7P6s|Q z_?YuTf8>ykaMl-)-G-&7D>3M+TwSbhscY(6`f`0sjp|z<*QNTF(BEI*B4KF{$nXm> zu}d5od!Ch7S;%(QSb>Nis3f(JV(mTQ6%7@qZe+WdGVQ+h~9F}tLZ?%1mdf{{womB-|jnU z$U`6pKsirq6nPg~wrSVQ}O#R;mF?V-Z8barbE*HipI^ zR#k_$>|1)sJumH#Z&1IC?=fST1QqZF$1Y}0UD3mHcG#@t?A?BmvqJ-7#CfLT4jjzF ze`!ajz8rKI9Wq?QT5jmm5FUdBwEG}|zjgRMpm<(q__oQ=GV$pQ795_^c3`-3lf;gF zT7JRAcp69)y#kJV6^9|60#eK5$T9y`v=Jx^wMI|ac^@-8O*v%sE@r8bt_lE@Jl`-~jlrH#P}le`jiw7O9$?qLqL7>-$NDLV?^5zBEez!Nh~b zQ+R9m<~p1Hs0Z@OE&#rtvsEhlp{m^rT?L}gZK%~W)`^*^@n2a6*8onNd1H9k`vgKL z>um&nP?g8L&Q@6$%0f@L-R2uy_*CON<{~-|DdQy*vcz^S8a}AOW?9n4w7-7b4=G?C?!<9T;y=QvO%>gPWw$*vE^)O88VqX zCPlG?%Y(wvW$~p%XRLraVg~0}_^#)Bz^a+D~v z;*+pGC96(ppqz_Se-(T5wVMT!Bu=$J%GIZqKowgwC#*CO;5U;6-lagTkaKCsiHlPl zGHG_oLM~uw1lbFBIRunTPd+A_v4)eW_*erU zPiUcJ#wj~togd@)0hO^Kv$N$Ciuh3}<5wjpi85YPQRo}If0kUhj9rXbNbN=f1k}{kFBWP_ zt{mwIb>(OZH9M4nvQWA3qG48L16)J`&eFLsBwcZenUy-Fp;}ip#ILQZx>7JV3#bgL z+si#7yS@Fu&J1sU5thIH_B$M|MT7pZWK7V=>BYy7uNMy=-oQ<%bE|61 zko7Qb(h@y1>~KF@pPq*Y55n>p)D4VW&U;qzWH89)3FZN&wogzc-qGb#_Rs*WZJuCK zoVoTVe{8XQezt!1a&;a~!t(jkXJPqj_4zz}+5Oeuf35K1%^$19@(Cnaot}U4$kL@) zEMKfXtuM~rt@>EnjQz5D|KZK!_2+Qn0}6ZBmS1C|H)ojbF;6#)k4{h5SnXsJ4_%%f z51qKSf9G5*UtYXD@6SJfIQ?_6e7rt;zdGx?f27yTAD2HZpPW#CaKYZ;NYqkPk5sL~ zXynl?76f62G1UlskGg7KhUE|ISL*=NeD?`6Kdet9(f6*OS>!0(qQK>fQFIq6fQ2|p zn?ywXVL2||ZbiwlT$QEcr_pu%&@I^9=e`Y_L)=9;R?Xi&Ha)yw$0nsCu!+>P!DiDf ze^Ix@7Pf6>*k;%f*&x@b$P_sVbni(d#VqySV9OQm;(4!GWMp%O8}%$j6anG8U`si+ z8HFhn8Ciu5LIFRlDS83IO=Gv=U9!xo8HGlG6;{s*@_gz6|ked-?ywIBvWOf6|ZjiYefTo9) zIuKT5a#-;ad&ZD~N;P`51>;ndZzZ?btIHZ;uL=3Zdx69A%K-Ncrk_1ykT*6qkUuaF z6_ty9l-X$@n@~E!?DJ*{czQ!$$H)}kS)yQ$-UFbaiDr`wPosRE2E3RI)fIB&e+`De z%~P+M>^ektjk{}j^i-Ia=k#|P@OK*N?>m|r5n9=nb@i)$7de*i=~0uYz=yx%^|9GsJ1sGvB^u09lp4FY-hX1!aMk2VU3%qX}iJ*9isNSUx}^)Y{id*N&%>#ss&0?%RUf5H~3VFOzDEoAG!@ zrO|v|I}W*=_K{m`I&uqNBDctv&@EBt#4;yX9=nN2^h+Af9$NaHB%&N0f6(yQj4&3U z01hvrk^H*5djBIq(2Wtdd+r6j+#vu%n4(|b0>#lUyTxxzQn|-VCchonIJaY^RGd@Y zxe?c^9TsldKo?lrm_)S0eYbNDa7$JsqV`R8fh_wD%w@U*bDq;nz45n@VMj)A%xDHs z80QR^l{}>vU>+0J_qlJgfBX%Hw#H#|?4&eY9Em zCaZrL@Hi>cbt|JVEu%0!#QiPnRtGvOJ+!k@*^6d!c^~fI2sebz+G}wssH8b?;piWU zS*4eO%;>$e9-88G&MR{2b&%Ib{-sG$>fIkxi|DlP`yv=Ue-i(ne*lyK{X;&E>(@fi z7ndVS03Fqf>XiR5r+JV?waHXBgq_pgarI zR(I_}U8CIIE>alqDYotjw5N%DtdW#1rHY6g`~ttTkj&>z&wJp@dDNj zOPS^GD3jUDci!Uae?DWI`W0a(4p`<@Hpz-?5jGH895b3IE$W$G#1^9ogGLx}=IO&k zOW)d-QE4ebtZbxp@#*Prz@)S+^AF3|93~-&X~af=twM}%<{&>9Jemk)2)DA&L=>(_ z?0B7Ss(iXF(oON%_rRL&wuNukqjqQ&laeGYtM{mt(7LNue@HV8q_f4kNUN-#D6M?! zZdDYkQ*Oui_4s17{NS7Sc{T4X4EAOu5p1x@V+Cmh5lTKzj*^4n&9XHpmD6%Ip4BtJ zN8$7w2i?yzr-3*=d~zIs_jJ83a;J�%jFi8K;yayy4xmgG(cx+An1e%!&{Mfr@e()- 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 diff --git a/Doc/GraphBLAS_UserGuide.tex b/Doc/GraphBLAS_UserGuide.tex index 642401d89d..1746b43492 100644 --- a/Doc/GraphBLAS_UserGuide.tex +++ b/Doc/GraphBLAS_UserGuide.tex @@ -1,5 +1,5 @@ \documentclass[12pt]{article} -\batchmode +% \batchmode \usepackage{url} \urlstyle{sf} \usepackage[svgnames]{xcolor} @@ -84,8 +84,6 @@ Version 8.0 adds several new features, in particular a JIT for compiling kernels at run-time, and a new \verb'GxB_Context' object. See Sections~\ref{context} and \ref{jit} for details. -Version 9.0 adds the \verb'GrB_get' and \verb'GrB_set' methods; -see Section~\ref{options}. \end{abstract} @@ -630,7 +628,7 @@ \subsection{Typecasting} %====================================================== types, and it follows the rules of the ANSI C language (not MATLAB) wherever the rules of ANSI C are well-defined. -However, unlike MATLAB, the C11 language specification states that the +However, unlike MATLAB, the ANSI C11 language specification states that the results of typecasting a \verb'float' or \verb'double' to an integer type is not always defined. In SuiteSparse:GraphBLAS, whenever C leaves the result undefined the rules used in MATLAB are followed. In particular \verb'+Inf' @@ -749,14 +747,16 @@ \subsection{Notation and list of GraphBLAS operations} %======================== \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Interfaces to MATLAB, Octave, Python, Julia, Go, Java, ...} %%%%%%%%%%% +\section{Interfaces to MATLAB, Octave, Python, Julia, Java} %%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The MATLAB/Octave interface to SuiteSparse:GraphBLAS is included with this distribution, described in Section~\ref{octave}. -Python, Julia, Go, and Java interfaces are available. -These are not part of the SuiteSparse:GraphBLAS distribution. -See the links below. +It is fully polished, and fully tested, but does have +some limitations that will be addressed in future releases. +Two Python interfaces are now available, as is a +Julia interface. These are not part of the SuiteSparse:GraphBLAS distribution. +See the links below (see Sections \ref{python} and \ref{julia}). %=============================================================================== \subsection{MATLAB/Octave Interface} @@ -844,21 +844,6 @@ \subsection{Julia Interface} allow inputs to a function or mexFunction to be modified, so any pending work must be finished before a matrix can be used as input. -%=============================================================================== -\subsection{Go Interface} -%=============================================================================== -\label{go} - -Pascal Costanza (Intel) has a Go interface to GraphBLAS and LAGraph: -\begin{itemize} -\item forGraphBLASGo: \url{https://github.com/intel/forGraphBLASGo}, which -is almost a complete wrapper for SuiteSparse:GraphBLAS. -Documentation is at \url{https://pkg.go.dev/github.com/intel/forGraphBLASGo}. -\item forLAGraphGo: \url{https://github.com/intel/forLAGraphGo}, which is in -progress. Documentation is at -\url{https://pkg.go.dev/github.com/intel/forLAGraphGo}. -\end{itemize} - %=============================================================================== \subsection{Java Interface} %=============================================================================== @@ -1185,7 +1170,7 @@ \subsection{{\sf GrB\_init:} initialize GraphBLAS} %============================ When the user application is finished, exactly one user thread must call \verb'GrB_finalize', after which no user thread may call any \verb'GrB_*' or \verb'GxB_*' function. -The mode of a GraphBLAS session can be queried with \verb'GrB_get'; +The mode of a GraphBLAS session can be queried with \verb'GxB_get'; see Section~\ref{options} for details. %=============================================================================== @@ -1214,7 +1199,7 @@ \subsection{{\sf GrB\_getVersion:} determine the C API Version} %=============== \verb'GrB_getVersion' thus provides a run-time access of the version of the C API Specification supported by the library. -% \newpage +\newpage %=============================================================================== \subsection{{\sf GxB\_init:} initialize with alternate malloc} %================ %=============================================================================== @@ -1227,10 +1212,10 @@ \subsection{{\sf GxB\_init:} initialize with alternate malloc} %================ ( GrB_Mode mode, // blocking or non-blocking mode // pointers to memory management functions. - void * (* user_malloc_func ) (size_t), - void * (* user_calloc_func ) (size_t, size_t), - void * (* user_realloc_func ) (void *, size_t), - void (* user_free_func ) (void *) + void * (* user_malloc_function ) (size_t), + void * (* user_calloc_function ) (size_t, size_t), + void * (* user_realloc_function ) (void *, size_t), + void (* user_free_function ) (void *) ) ; \end{verbatim} }\end{mdframed} @@ -1243,16 +1228,16 @@ \subsection{{\sf GxB\_init:} initialize with alternate malloc} %================ Sections \ref{serialize_deserialize} and \ref{pack_unpack}, since they require the user application and GraphBLAS to use the same memory manager. -\verb'user_calloc_func' and \verb'user_realloc_func' are optional, and -may be \verb'NULL'. If \verb'NULL', then the \verb'user_malloc_func' is + +\verb'user_calloc_function' and \verb'user_realloc_function' are optional, and +may be \verb'NULL'. If \verb'NULL', then the \verb'user_malloc_function' is relied on instead, for all memory allocations. -These functions can only be set once, when GraphBLAS starts. -They can be queried using \verb'GrB_get' (see -Section~\ref{get_set_global}). -Either + +These functions can only be set once, when GraphBLAS starts. Either \verb'GrB_init' or \verb'GxB_init' must be called before any other GraphBLAS operation, but not both. The functions passed to \verb'GxB_init' must be thread-safe. + The following usage is identical to \verb'GrB_init(mode)': {\footnotesize @@ -1299,7 +1284,6 @@ \subsection{{\sf GrB\_Info:} status code returned by GraphBLAS} %=============== \verb'GrB_DIMENSION_MISMATCH' & -6 & matrix dimensions do not match \\ \verb'GrB_OUTPUT_NOT_EMPTY' & -7 & output matrix already has values in it \\ \verb'GrB_NOT_IMPLEMENTED' & -8 & not implemented in SS:GrB \\ -\verb'GrB_ALREADY_SET' & -9 & field already written to \\ \verb'GrB_PANIC' & -101 & unrecoverable error \\ \verb'GrB_OUT_OF_MEMORY' & -102 & out of memory \\ \verb'GrB_INSUFFICIENT_SPACE' & -103 & output array not large enough \\ @@ -1352,7 +1336,10 @@ \subsection{{\sf GrB\_error:} get more details on the last error} %============= SuiteSparse:GraphBLAS reports many helpful details via \verb'GrB_error'. For example, if a row or column index is out of bounds, the report will state what those bounds are. If a matrix dimension is incorrect, the mismatching -dimensions will be provided. Refer to +dimensions will be provided. \verb'GrB_BinaryOp_new', \verb'GrB_UnaryOp_new', +and \verb'GrB_IndexUnaryOp_new' record the name the function passed to them, and +\verb'GrB_Type_new' records the name of its type parameter, and these are +printed if the user-defined types and operators are used incorrectly. Refer to the output of the example programs in the \verb'Demo' and \verb'Test' folder, which intentionally generate errors to illustrate the use of \verb'GrB_error'. @@ -1399,11 +1386,10 @@ \section{GraphBLAS Objects and their Methods} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \label{objects} -GraphBLAS defines eleven different objects to represent matrices, vectors, +GraphBLAS defines ten different objects to represent matrices, vectors, scalars, data types, operators (binary, unary, and index-unary), monoids, -semirings, a {\em descriptor} object used to specify optional parameters -that modify the behavior of a GraphBLAS operation, and a {\em context} -object for controlling computational resources. +semirings, and a {\em descriptor} object used to specify optional parameters +that modify the behavior of a GraphBLAS operation. The GraphBLAS API makes a distinction between {\em methods} and {\em operations}. A method is a function that works on a GraphBLAS object, creating @@ -1427,7 +1413,6 @@ \section{GraphBLAS Objects and their Methods} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \verb'GrB_Vector' & a 1D sparse column vector of any type \\ \verb'GrB_Scalar' & a scalar of any type \\ \verb'GrB_Descriptor'& a collection of parameters that modify an operation \\ -\verb'GxB_Context' & allocating computational resources \\ \hline \end{tabular} } @@ -1482,7 +1467,7 @@ \subsection{The GraphBLAS type: {\sf GrB\_Type}} %============================== } \vspace{0.2in} -The C11 definitions of \verb'float complex' and \verb'double complex' +The ANSI C11 definitions of \verb'float complex' and \verb'double complex' are not always available. The \verb'GraphBLAS.h' header defines them as \verb'GxB_FC32_t' and \verb'GxB_FC64_t', respectively. @@ -1512,8 +1497,8 @@ \subsection{The GraphBLAS type: {\sf GrB\_Type}} %============================== \verb'GxB_Type_new' & create a user-defined type, with name and definition & \ref{type_new_named} \\ \verb'GrB_Type_wait' & wait for a user-defined type & \ref{type_wait} \\ -\verb'GrB_get' & get properties of a type & \ref{get_set_type} \\ -\verb'GrB_set' & set the type name/definitition & \ref{get_set_type} \\ +\verb'GxB_Type_size' & return the size of a type & \ref{type_size} \\ +\verb'GxB_Type_name' & return the name of a type & \ref{type_name} \\ \verb'GxB_Type_from_name'& return the type from its name & \ref{type_from_name} \\ \verb'GrB_Type_free' & free a user-defined type & \ref{type_free} \\ \hline @@ -1547,7 +1532,7 @@ \subsubsection{{\sf GrB\_Type\_new:} create a user-defined type} requirement on the C type is that \verb'sizeof(ctype)' is valid in C, and that the type reside in a contiguous block of memory so that it can be moved with \verb'memcpy'. For example, to create a user-defined type called -\verb'Complex' for double-precision complex values using the C11 +\verb'Complex' for double-precision complex values using the ANSI C11 \verb'double complex' type, the following can be used. A complete example can be found in the \verb'usercomplex.c' and \verb'usercomplex.h' files in the \verb'Demo' folder. @@ -1639,19 +1624,6 @@ \subsubsection{{\sf GxB\_Type\_new:} create a user-defined type (with name and d valid strings for C types but would not have a reliable way to determine the size of the type. -The above example is identical to the following usage, except that -\verb'GrB_Type_new' requires \verb'sizeof_ctype' to be nonzero, and equal -to the size of the C type. - - {\footnotesize - \begin{verbatim} - typedef struct { float x [4][4] ; int color ; } myquaternion ; - GrB_Type MyQtype ; - GxB_Type_new (&MyQtype, sizeof (myquaternion)) ; - GrB_set (MyQtype, "myquaternion", GxB_JIT_C_NAME) ; - GrB_set (MyQtype, "typedef struct { float x [4][4] ; int color ; } myquaternion ;" - GxB_JIT_C_DEFINITION) ; \end{verbatim}} - %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Type\_wait:} wait for a type} %------------------------------------------------------------------------------- @@ -1672,6 +1644,71 @@ \subsubsection{{\sf GrB\_Type\_wait:} wait for a type} non-blocking mode to delay its creation. Currently, SuiteSparse:GraphBLAS currently does nothing except to ensure that \verb'type' is valid. +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Type\_size:} return the size of a type} +%------------------------------------------------------------------------------- +\label{type_size} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Type_size // determine the size of the type +( + size_t *size, // the sizeof the type + GrB_Type type // type to determine the sizeof +) ; +\end{verbatim} +}\end{mdframed} + +This function acts just like \verb'sizeof(type)' in the C language. For +example \verb'GxB_Type_size (&s, GrB_INT32)' sets \verb's' to 4, the same as +\verb'sizeof(int32_t)'. + +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Type\_name:} return the name of a type} +%------------------------------------------------------------------------------- +\label{type_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Type_name // return the name of a GraphBLAS type +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Type type +) ; +\end{verbatim} +}\end{mdframed} + +Returns the name of a type, as a string. For built-in types, the name is +the same as the C type. For example, \verb'GxB_Type_name(type_name,GrB_FP32)' +returns the name as \verb'"float"'. The following table lists the +names of the 13 built-in types. + +\vspace{0.2in} +{\small +\begin{tabular}{ll} +\hline +Type name & GraphBLAS type \\ +\hline + \verb'"bool"' & \verb'GrB_BOOL' \\ + \verb'"int8_t"' & \verb'GrB_INT8' \\ + \verb'"int16_t"' & \verb'GrB_INT16' \\ + \verb'"int32_t"' & \verb'GrB_INT32' \\ + \verb'"int64_t"' & \verb'GrB_INT64' \\ + \verb'"uint8_t"' & \verb'GrB_UINT8' \\ + \verb'"uint16_t"' & \verb'GrB_UINT16' \\ + \verb'"uint32_t"' & \verb'GrB_UINT32' \\ + \verb'"uint64_t"' & \verb'GrB_UINT64' \\ + \verb'"float"' & \verb'GrB_FP32' \\ + \verb'"double"' & \verb'GrB_FP64' \\ + \verb'"float complex"' & \verb'GxB_FC32' \\ + \verb'"double complex"' & \verb'GxB_FC64' \\ +\hline +\end{tabular}} + \newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GxB\_Type\_from\_name:} return the type from its name} @@ -1689,15 +1726,9 @@ \subsubsection{{\sf GxB\_Type\_from\_name:} return the type from its name} \end{verbatim} }\end{mdframed} -Returns the built-in type from the corresponding name of the type. The following -examples both return \verb'type' as \verb'GrB_BOOL'. - -{\footnotesize -\begin{verbatim} - GxB_Type_from_name (&type, "bool") ; - GxB_Type_from_name (&type, "GrB_BOOL") ; }\end{verbatim} } - -If the name is from a user-defined type, the \verb'type' is returned as +Returns the built-in type from the corresponding name of the type. For +example, \verb'GxB_Type_from_name (&type, "bool")' returns \verb'GrB_BOOL'. If +the name is from a user-defined type, the \verb'type' is returned as \verb'NULL'. This is not an error condition. The user application must itself do this translation since GraphBLAS does not keep a registry of all user-defined types. @@ -1721,12 +1752,10 @@ \subsubsection{{\sf GxB\_Type\_from\_name:} return the type from its name} // later on, to query the type of A: size_t typesize ; - GrB_Scalar_new (s, GrB_UINT64) ; - GrB_get (type, s, GrB_SIZE) ; - GrB_Scalar_extractElement (&typesize, GrB_UINT64) ; + GxB_Type_size (&typesize, type) ; // works for any type GrB_Type atype ; char atype_name [GxB_MAX_NAME_LEN] ; - GrB_get (A, atype_name, GrB_ELTYPE_STRING) ; + GxB_Matrix_type_name (atype_name, A) ; GxB_Type_from_name (&atype, atype_name) ; if (atype == NULL) { @@ -1736,6 +1765,7 @@ \subsubsection{{\sf GxB\_Type\_from\_name:} return the type from its name} else { ... this is now an error ... the type of A is unknown. } }\end{verbatim} } +\newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Type\_free:} free a user-defined type} %------------------------------------------------------------------------------- @@ -1951,7 +1981,7 @@ \subsection{GraphBLAS unary operators: {\sf GrB\_UnaryOp}, $z=f(x)$} %========== User-defined positional operators cannot be defined by \verb'GrB_UnaryOp_new'. \verb'GxB_FREXPX' and \verb'GxB_FREXPE' return the mantissa and exponent, -respectively, from the C11 \verb'frexp' function. The exponent is +respectively, from the ANSI C11 \verb'frexp' function. The exponent is returned as a floating-point value, not an integer. The operators \verb'GxB_EXPM1_FC*' and \verb'GxB_LOG1P_FC*' for complex @@ -1987,8 +2017,8 @@ \subsection{GraphBLAS unary operators: {\sf GrB\_UnaryOp}, $z=f(x)$} %========== \verb'GrB_UnaryOp_new' & create a user-defined unary operator & \ref{unaryop_new} \\ \verb'GxB_UnaryOp_new' & create a named user-defined unary operator & \ref{unaryop_new_named} \\ \verb'GrB_UnaryOp_wait' & wait for a user-defined unary operator & \ref{unaryop_wait} \\ -\verb'GrB_get' & get properties of an operator & \ref{get_set_unop} \\ -\verb'GrB_set' & set the operator name/definition & \ref{get_set_unop} \\ +\verb'GxB_UnaryOp_ztype_name' & return the name of the type of the output $z$ for $z=f(x)$ & \ref{unaryop_ztype_name} \\ +\verb'GxB_UnaryOp_xtype_name' & return the name of the type of the input $x$ for $z=f(x)$ & \ref{unaryop_xtype_name} \\ \verb'GrB_UnaryOp_free' & free a user-defined unary operator & \ref{unaryop_free} \\ \hline \end{tabular} @@ -2084,19 +2114,6 @@ \subsubsection{{\sf GxB\_UnaryOp\_new:} create a named user-defined unary operat function. If the JIT is disabled and the \verb'function' is \verb'NULL', this method returns \verb'GrB_NULL_POINTER'. -The above example is identical to the following usage, except that -\verb'GrB_UnaryOp_new' requires a non-NULL function pointer. - - {\footnotesize - \begin{verbatim} - void square (double *z, double *x) { (*z) = (*x) * (*x) ; } ; - ... - GrB_Type Square ; - GrB_UnaryOp_new (&Square, square, GrB_FP64, GrB_FP64) ; - GrB_set (Square, "square", GxB_JIT_C_NAME) ; - GrB_set (Square, "void square (double *z, double *x) { (*z) = (*x) * (*x) ; } ;", - GxB_JIT_C_DEFINITION) ; \end{verbatim}} - % \newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_UnaryOp\_wait:} wait for a unary operator} @@ -2119,6 +2136,45 @@ \subsubsection{{\sf GrB\_UnaryOp\_wait:} wait for a unary operator} SuiteSparse:GraphBLAS currently does nothing except to ensure that the \verb'unaryop' is valid. +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_UnaryOp\_ztype\_name:} return the name of the type of $z$} +%------------------------------------------------------------------------------- +\label{unaryop_ztype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_UnaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GxB_UnaryOp_ztype_name' returns the name of the \verb'ztype' of the unary +operator, which is the type of $z$ in the function $z=f(x)$. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_UnaryOp\_xtype\_name:} return the name of the type of $x$} +%------------------------------------------------------------------------------- +\label{unaryop_xtype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_UnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GxB_UnaryOp_xtype_name' returns the name of the \verb'xtype' of the unary +operator, which is the type of $x$ in the function $z=f(x)$. + % \newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_UnaryOp\_free:} free a user-defined unary operator} @@ -2299,7 +2355,7 @@ \subsection{GraphBLAS binary operators: {\sf GrB\_BinaryOp}, $z=f(x,y)$} %====== \vspace{0.2in} The following operators are defined for real floating-point types only (\verb'GrB_FP32' and \verb'GrB_FP64'). -They are identical to the C11 functions of the same name. The last one in the table constructs +They are identical to the ANSI C11 functions of the same name. The last one in the table constructs the corresponding complex type. \vspace{0.2in} @@ -2312,10 +2368,10 @@ \subsection{GraphBLAS binary operators: {\sf GrB\_BinaryOp}, $z=f(x,y)$} %====== \hline \verb'GxB_ATAN2_'$F$ & $F \times F \rightarrow F$ & $z = \tan^{-1}(y/x)$ & 4-quadrant arc tangent \\ \verb'GxB_HYPOT_'$F$ & $F \times F \rightarrow F$ & $z = \sqrt{x^2+y^2}$ & hypotenuse \\ -\verb'GxB_FMOD_'$F$ & $F \times F \rightarrow F$ & & C11 \verb'fmod' \\ -\verb'GxB_REMAINDER_'$F$ & $F \times F \rightarrow F$ & & C11 \verb'remainder' \\ -\verb'GxB_LDEXP_'$F$ & $F \times F \rightarrow F$ & & C11 \verb'ldexp' \\ -\verb'GxB_COPYSIGN_'$F$ & $F \times F \rightarrow F$ & & C11 \verb'copysign' \\ +\verb'GxB_FMOD_'$F$ & $F \times F \rightarrow F$ & & ANSI C11 \verb'fmod' \\ +\verb'GxB_REMAINDER_'$F$ & $F \times F \rightarrow F$ & & ANSI C11 \verb'remainder' \\ +\verb'GxB_LDEXP_'$F$ & $F \times F \rightarrow F$ & & ANSI C11 \verb'ldexp' \\ +\verb'GxB_COPYSIGN_'$F$ & $F \times F \rightarrow F$ & & ANSI C11 \verb'copysign' \\ \hline \verb'GxB_CMPLX_'$F$ & $F \times F \rightarrow Z$ & $z = x + y \times i$ & complex from real \& imag \\ \hline @@ -2459,8 +2515,9 @@ \subsection{GraphBLAS binary operators: {\sf GrB\_BinaryOp}, $z=f(x,y)$} %====== \verb'GrB_BinaryOp_new' & create a user-defined binary operator & \ref{binaryop_new} \\ \verb'GxB_BinaryOp_new' & create a named user-defined binary operator & \ref{binaryop_new_named} \\ \verb'GrB_BinaryOp_wait' & wait for a user-defined binary operator & \ref{binaryop_wait} \\ -\verb'GrB_get' & get properties of an operator & \ref{get_set_binop} \\ -\verb'GrB_set' & set the operator name/definition & \ref{get_set_binop} \\ +\verb'GxB_BinaryOp_ztype_name' & return the type of the output $z$ for $z=f(x,y)$ & \ref{binaryop_ztype_name} \\ +\verb'GxB_BinaryOp_xtype_name' & return the type of the input $x$ for $z=f(x,y)$ & \ref{binaryop_xtype_name} \\ +\verb'GxB_BinaryOp_ytype_name' & return the type of the input $y$ for $z=f(x,y)$ & \ref{binaryop_ytype_name} \\ \verb'GrB_BinaryOp_free' & free a user-defined binary operator & \ref{binaryop_free} \\ \hline \end{tabular} @@ -2555,20 +2612,6 @@ \subsubsection{{\sf GxB\_BinaryOp\_new:} create a named user-defined binary oper If the JIT is disabled and the \verb'function' is \verb'NULL', this method returns \verb'GrB_NULL_POINTER'. -The above example is identical to the following usage, except that -\verb'GrB_BinaryOp_new' requires a non-NULL function pointer. - -{\footnotesize -\begin{verbatim} -void absdiff (double *z, double *x, double *y) { (*z) = fabs ((*x) - (*y)) ; } ; -... -GrB_Type AbsDiff ; -GrB_BinaryOp_new (&AbsDiff, absdiff, GrB_FP64, GrB_FP64, GrB_FP64) ; -GrB_set (AbsDiff, "absdiff", GxB_JIT_C_NAME) ; -GrB_set (AbsDiff, - "void absdiff (double *z, double *x, double *y) { (*z) = fabs ((*x) - (*y)) ; }", - GxB_JIT_C_DEFINITION) ;\end{verbatim}} - %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_BinaryOp\_wait:} wait for a binary operator} %------------------------------------------------------------------------------- @@ -2590,6 +2633,67 @@ \subsubsection{{\sf GrB\_BinaryOp\_wait:} wait for a binary operator} SuiteSparse:GraphBLAS currently does nothing for except to ensure that the \verb'binaryop' is valid. +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_BinaryOp\_ztype\_name:} return the name of the type of $z$} +%------------------------------------------------------------------------------- +\label{binaryop_ztype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_BinaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_BinaryOp_ztype_name' +returns name of the \verb'ztype' of the binary operator, which is the +type of $z$ in the function $z=f(x,y)$. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_BinaryOp\_xtype\_name:} return the name of the type of $x$} +%------------------------------------------------------------------------------- +\label{binaryop_xtype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_BinaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GxB_BinaryOp_xtype_name' +returns name of the \verb'xtype' of the binary operator, which is the +type of $x$ in the function $z=f(x,y)$. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_BinaryOp\_ytype\_name:} return the name of the type of $y$} +%------------------------------------------------------------------------------- +\label{binaryop_ytype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_BinaryOp_ytype_name // return the type_name of y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_BinaryOp_ytype_name' +returns name of the \verb'ytype' of the binary operator, which is the +type of $y$ in the function $z=f(x,y)$. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_BinaryOp\_free:} free a user-defined binary operator} %------------------------------------------------------------------------------- @@ -2692,7 +2796,7 @@ \subsection{GraphBLAS IndexUnaryOp operators: {\sf GrB\_IndexUnaryOp}} %======== const void *x, // input value x of type xtype; value of v(i) or A(i,j) GrB_Index i, // row index of A(i,j) GrB_Index j, // column index of A(i,j), or zero for v(i) - const void *y // input scalar y of type ytype + const void *y // input scalar y ) ; \end{verbatim}} The following built-in operators are available. Operators that do not depend @@ -2753,8 +2857,9 @@ \subsection{GraphBLAS IndexUnaryOp operators: {\sf GrB\_IndexUnaryOp}} %======== \verb'GrB_IndexUnaryOp_new' & create a user-defined index-unary operator & \ref{idxunop_new} \\ \verb'GxB_IndexUnaryOp_new' & create a named user-defined index-unary operator & \ref{idxunop_new_named} \\ \verb'GrB_IndexUnaryOp_wait' & wait for a user-defined index-unary operator & \ref{idxunop_wait} \\ -\verb'GrB_get' & get properties of an operator & \ref{get_set_idxunop} \\ -\verb'GrB_set' & set the operator name/definition & \ref{get_set_idxunop} \\ +\verb'GrB_IndexUnaryOp_ztype_name' & return the type of the output $z$ & \ref{idxunop_ztype_name} \\ +\verb'GrB_IndexUnaryOp_xtype_name' & return the type of the input $x$ & \ref{idxunop_xtype_name} \\ +\verb'GrB_IndexUnaryOp_ytype_name' & return the type of the scalar $y$ & \ref{idxunop_ytype_name} \\ \verb'GrB_IndexUnaryOp_free' & free a user-defined index-unary operator & \ref{idxunop_free} \\ \hline \end{tabular} @@ -2829,45 +2934,6 @@ \subsubsection{{\sf GxB\_IndexUnaryOp\_new:} create a named user-defined index-u The two strings \verb'idxop_name' and \verb'idxop_defn' are optional, but are required to enable the JIT compilation of kernels that use this operator. -The strings can also be set the \verb'GrB_set' after the operator is created -with \verb'GrB_IndexUnaryOp_new'. For example: - -{\footnotesize -\begin{verbatim} - void banded_idx - ( - bool *z, - const int64_t *x, // unused - int64_t i, - int64_t j, - const int64_t *thunk - ) - { - // d = abs (j-i) - int64_t d = j-i ; - if (d < 0) d = -d ; - (*z) = (d <= *thunk) ; - } - - #define BANDED_IDX_DEFN \ - "void banded_idx \n" \ - "( \n" \ - " bool *z, \n" \ - " const int64_t *x, // unused \n" \ - " int64_t i, \n" \ - " int64_t j, \n" \ - " const int64_t *thunk \n" \ - ") \n" \ - "{ \n" \ - " int64_t d = j-i ; \n" \ - " if (d < 0) d = -d ; \n" \ - " (*z) = (d <= *thunk) ; \n" \ - "}" - - GxB_IndexUnaryOp_new (&Banded, - (GxB_index_unary_function) banded_idx, - GrB_BOOL, GrB_INT64, GrB_INT64, - "banded_idx", BANDED_IDX_DEFN)) ;\end{verbatim}} If JIT compilation is enabled, or if the corresponding JIT kernel has been copied into the \verb'PreJIT' folder, the \verb'function' may be \verb'NULL'. @@ -2875,21 +2941,6 @@ \subsubsection{{\sf GxB\_IndexUnaryOp\_new:} create a named user-defined index-u function. If the JIT is disabled and the \verb'function' is \verb'NULL', this method returns \verb'GrB_NULL_POINTER'. -The above example is identical to the following usage -except that \verb'GrB_IndexUnaryOp_new' requires a non-NULL function pointer. -The \verb'banded_idx' function is defined the same as above. - -{\footnotesize -\begin{verbatim} - void banded_idx ... see above - #define BANDED_IDX_DEFN ... see above - - GrB_IndexUnaryOp_new (&Banded, - (GxB_index_unary_function) banded_idx, - GrB_BOOL, GrB_INT64, GrB_INT64) ; - GrB_set (Banded, "banded_idx", GxB_JIT_C_NAME)) ; - GrB_set (Banded, BANDED_IDX_DEFN, GxB_JIT_C_DEFINITION)) ;\end{verbatim}} - %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_IndexUnaryOp\_wait:} wait for an index-unary operator} %------------------------------------------------------------------------------- @@ -2912,6 +2963,66 @@ \subsubsection{{\sf GrB\_IndexUnaryOp\_wait:} wait for an index-unary operator} \verb'op' is valid. \newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_IndexUnaryOp\_ztype\_name:} return the name of the type of $z$} +%------------------------------------------------------------------------------- +\label{idxunop_ztype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_IndexUnaryOp_ztype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // index-unary operator +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GrB_IndexUnaryOp_ztype_name' returns the \verb'ztype' of the index-unary +operator, which is the type of $z$ in the function $z=f(x,i,j,y)$. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_IndexUnaryOp\_xtype\_name:} return the name of the type of $x$} +%------------------------------------------------------------------------------- +\label{idxunop_xtype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_IndexUnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // index-unary operator +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GrB_IndexUnaryOp_xtype_name' returns the \verb'xtype' of the index-unary +operator, which is the type of $x$ in the function $z=f(x,i,j,y)$. +This input is used for the entry \verb'A(i,j)' of a matrix or \verb'v(i)' of a +vector. + +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_IndexUnaryOp\_ytype\_name:} return the name of the type of scalar $y$} +%------------------------------------------------------------------------------- +\label{idxunop_ytype_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_IndexUnaryOp_ytype_name // return the type_name of the scalar y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // index-unary operator +) ; +\end{verbatim} +}\end{mdframed} + +\verb'GrB_IndexUnaryOp_ytype_name' returns the \verb'ytype' of the index-unary +operator, which is the type of the scalar y in the function $z=f(x,i,j,y)$. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_IndexUnaryOp\_free:} free a user-defined index-unary operator} %------------------------------------------------------------------------------- @@ -3057,8 +3168,9 @@ \subsection{GraphBLAS monoids: {\sf GrB\_Monoid}} %============================= \verb'GrB_Monoid_new' & create a user-defined monoid & \ref{monoid_new} \\ \verb'GrB_Monoid_wait' & wait for a user-defined monoid & \ref{monoid_wait} \\ \verb'GxB_Monoid_terminal_new' & create a monoid that has a terminal value & \ref{monoid_terminal_new} \\ -\verb'GrB_get' & get properties of a monoid & \ref{get_set_monoid} \\ -\verb'GrB_set' & set the monoid name & \ref{get_set_monoid} \\ +\verb'GxB_Monoid_operator' & return the monoid operator & \ref{monoid_operator} \\ +\verb'GxB_Monoid_identity' & return the monoid identity value & \ref{monoid_identity} \\ +\verb'GxB_Monoid_terminal' & return the monoid terminal value (if any) & \ref{monoid_terminal} \\ \verb'GrB_Monoid_free' & free a monoid & \ref{monoid_free} \\ \hline \end{tabular} @@ -3187,6 +3299,77 @@ \subsubsection{{\sf GxB\_Monoid\_terminal\_new:} create a monoid with terminal} based on this user-defined operator with a terminal value of zero and an identity of \verb'+INFINITY'. +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Monoid\_operator:} return the monoid operator} +%------------------------------------------------------------------------------- +\label{monoid_operator} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Monoid_operator // return the monoid operator +( + GrB_BinaryOp *op, // returns the binary op of the monoid + GrB_Monoid monoid // monoid to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Monoid_operator' returns the binary operator of the monoid. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Monoid\_identity:} return the monoid identity} +%------------------------------------------------------------------------------- +\label{monoid_identity} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Monoid_identity // return the monoid identity +( + void *identity, // returns the identity of the monoid + GrB_Monoid monoid // monoid to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Monoid_identity' returns the identity value of the monoid. The +\verb'void *' pointer, \verb'identity', must be non-\verb'NULL' and must point +to a memory space of size at least equal to the size of the type of the +\verb'monoid'. The type size can be obtained via \verb'GxB_Monoid_operator' to +return the monoid additive operator, then \verb'GxB_BinaryOp_ztype' to obtain +the \verb'ztype', followed by \verb'GxB_Type_size' to get its size. + +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Monoid\_terminal:} return the monoid terminal value} +%------------------------------------------------------------------------------- +\label{monoid_terminal} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Monoid_terminal // return the monoid terminal +( + bool *has_terminal, // true if the monoid has a terminal value + void *terminal, // returns the terminal of the monoid + GrB_Monoid monoid // monoid to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Monoid_terminal' returns the terminal value of the monoid (if any). +The \verb'void *' pointer, \verb'terminal', must be non-\verb'NULL' and must +point to a memory space of size at least equal to the size of the type of the +\verb'monoid'. The type size can be obtained via \verb'GxB_Monoid_operator' to +return the monoid additive operator, then \verb'GxB_BinaryOp_ztype' to obtain +the \verb'ztype', followed by \verb'GxB_Type_size' to get its size. + +If the monoid has a terminal value, then \verb'has_terminal' is \verb'true', +and its value is returned in the \verb'terminal' parameter. If it has no +terminal value, then \verb'has_terminal' is \verb'false', and the +\verb'terminal' parameter is not modified. + % \newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Monoid\_free:} free a monoid} @@ -3237,8 +3420,8 @@ \subsection{GraphBLAS semirings: {\sf GrB\_Semiring}} %========================= \hline \verb'GrB_Semiring_new' & create a user-defined semiring & \ref{semiring_new} \\ \verb'GrB_Semiring_wait' & wait for a user-defined semiring & \ref{semiring_wait} \\ -\verb'GrB_get' & get properties of a semiring & \ref{get_set_semiring} \\ -\verb'GrB_set' & set the semiring name & \ref{get_set_semiring} \\ +\verb'GxB_Semiring_add' & return the additive monoid of a semiring & \ref{semiring_add} \\ +\verb'GxB_Semiring_multiply' & return the binary operator of a semiring & \ref{semiring_multiply} \\ \verb'GrB_Semiring_free' & free a semiring & \ref{semiring_free} \\ \hline \end{tabular} @@ -3389,6 +3572,44 @@ \subsubsection{{\sf GrB\_Semiring\_wait:} wait for a semiring} SuiteSparse:GraphBLAS currently does nothing except to ensure that the \verb'semiring' is valid. +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Semiring\_add:} return the additive monoid of a semiring} +%------------------------------------------------------------------------------- +\label{semiring_add} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Semiring_add // return the add monoid of a semiring +( + GrB_Monoid *add, // returns add monoid of the semiring + GrB_Semiring semiring // semiring to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Semiring_add' returns the additive monoid of a semiring. + +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Semiring\_multiply:} return multiply operator of a semiring} +%------------------------------------------------------------------------------- +\label{semiring_multiply} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Semiring_multiply // return multiply operator of a semiring +( + GrB_BinaryOp *multiply, // returns multiply operator of the semiring + GrB_Semiring semiring // semiring to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Semiring_multiply' returns the binary multiplicative operator of a +semiring. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Semiring\_free:} free a semiring} %------------------------------------------------------------------------------- @@ -3436,8 +3657,7 @@ \subsection{GraphBLAS scalars: {\sf GrB\_Scalar}} %============================= \verb'GrB_Scalar_dup' & copy a scalar & \ref{scalar_dup} \\ \verb'GrB_Scalar_clear' & clear a scalar of its entry & \ref{scalar_clear} \\ \verb'GrB_Scalar_nvals' & return number of entries in a scalar & \ref{scalar_nvals} \\ -\verb'GrB_get' & get properties of a scalar & \ref{get_set_scalar} \\ -\verb'GrB_set' & set properties of a scalar & \ref{get_set_scalar} \\ +\verb'GxB_Scalar_type_name' & return name of the type of a scalar & \ref{scalar_type_name} \\ \verb'GrB_Scalar_setElement' & set the single entry of a scalar & \ref{scalar_setElement} \\ \verb'GrB_Scalar_extractElement' & get the single entry from a scalar & \ref{scalar_extractElement} \\ \verb'GxB_Scalar_memoryUsage' & memory used by a scalar & \ref{scalar_memusage} \\ @@ -3534,7 +3754,6 @@ \subsubsection{{\sf GrB\_Scalar\_dup:} copy a scalar} Then \verb's' and \verb't' are two different scalars that currently have the same value, but they do not depend on each other. Modifying one has no effect on the other. -The \verb'GrB_NAME' is copied into the new scalar. %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Scalar\_clear:} clear a scalar of its entry} @@ -3579,6 +3798,26 @@ \subsubsection{{\sf GrB\_Scalar\_nvals:} return the number of entries in a scala (short for ``number of nonzeros'') in MATLAB is better described as ``number of entries'' in GraphBLAS. +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Scalar\_type\_name:} return name of the type of a scalar} +%------------------------------------------------------------------------------- +\label{scalar_type_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Scalar_type_name // return the name of the type of a scalar +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Scalar s // GrB_Scalar to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Scalar_type_name' returns the name of the type of a scalar. +Analogous to \verb'type = class (s)' in MATLAB. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Scalar\_setElement:} set the single entry of a scalar} %------------------------------------------------------------------------------- @@ -3691,8 +3930,7 @@ \subsection{GraphBLAS vectors: {\sf GrB\_Vector}} %============================= \verb'GrB_Vector_clear' & clear a vector of all entries & \ref{vector_clear} \\ \verb'GrB_Vector_size' & size of a vector & \ref{vector_size} \\ \verb'GrB_Vector_nvals' & number of entries in a vector & \ref{vector_nvals} \\ -\verb'GrB_get' & get properties of a vector & \ref{get_set_vector} \\ -\verb'GrB_set' & set properties of a vector & \ref{get_set_vector} \\ +\verb'GxB_Vector_type_name' & name of the type of a vector & \ref{vector_type_name} \\ \verb'GrB_Vector_build' & build a vector from tuples & \ref{vector_build} \\ \verb'GxB_Vector_build_Scalar' & build a vector from tuples & \ref{vector_build_Scalar} \\ \verb'GrB_Vector_setElement' & add an entry to a vector & \ref{vector_setElement} \\ @@ -3831,7 +4069,6 @@ \subsubsection{{\sf GrB\_Vector\_dup:} copy a vector} Then \verb'w' and \verb'u' are two different vectors that currently have the same set of values, but they do not depend on each other. Modifying one has no effect on the other. -The \verb'GrB_NAME' is copied into the new vector. %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Vector\_clear:} clear a vector of all entries} @@ -3896,6 +4133,27 @@ \subsubsection{{\sf GrB\_Vector\_nvals:} return the number of entries in GraphBLAS need not be zero and \verb'nnz' (short for ``number of nonzeros'') in MATLAB is better described as ``number of entries'' in GraphBLAS. +% \newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Vector\_type\_name:} return name of the type of a vector} +%------------------------------------------------------------------------------- +\label{vector_type_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Vector_type_name // return the name of the type of a vector +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Vector v // vector to query +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GxB_Vector_type_name' returns the name of the type of a vector. +Analogous to \verb'type = class (v)' in MATLAB. + \newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Vector\_build:} build a vector from a set of tuples} @@ -4134,7 +4392,7 @@ \subsubsection{{\sf GxB\_Vector\_diag:} extract a diagonal from a matrix} $-m+1$. Any existing entries in \verb'v' are discarded. The type of \verb'v' is preserved, so that if the type of \verb'A' and \verb'v' differ, the entries are typecasted into the type of \verb'v'. Any settings made to \verb'v' by -\verb'GrB_set' (bitmap switch and sparsity control) are +\verb'GxB_Vector_Option_set' (bitmap switch and sparsity control) are unchanged. \newpage @@ -4222,8 +4480,7 @@ \subsection{GraphBLAS matrices: {\sf GrB\_Matrix}} %============================ \verb'GrB_Matrix_nrows' & number of rows of a matrix & \ref{matrix_nrows} \\ \verb'GrB_Matrix_ncols' & number of columns of a matrix & \ref{matrix_ncols} \\ \verb'GrB_Matrix_nvals' & number of entries in a matrix & \ref{matrix_nvals} \\ -\verb'GrB_get' & get properties of a matrix & \ref{get_set_matrix} \\ -\verb'GrB_set' & set properties of a matrix & \ref{get_set_matrix} \\ +\verb'GxB_Matrix_type_name' & type of a matrix & \ref{matrix_type_name} \\ \verb'GrB_Matrix_build' & build a matrix from tuples & \ref{matrix_build} \\ \verb'GxB_Matrix_build_Scalar' & build a matrix from tuples & \ref{matrix_build_Scalar} \\ \verb'GrB_Matrix_setElement' & add an entry to a matrix & \ref{matrix_setElement} \\ @@ -4324,16 +4581,15 @@ \subsubsection{{\sf GrB\_Matrix\_new:} create a matrix} sparse matrices of any type. By default, matrices of size \verb'nrows-by-1' are held by column, regardless -of the global setting controlled by \verb'GrB_set (GrB_GLOBAL, ...,' \newline -\verb'GrB_STORAGE_ORIENTATION_HINT)', for any value of \verb'nrows'. Matrices -of size \verb'1-by-ncols' with \verb'ncols' not equal to 1 are held by row, -regardless of this global setting. The global setting only affects matrices -with both \verb'm > 1' and \verb'n > 1'. Empty matrices (\verb'0-by-0') are -also controlled by the global setting. +of the global setting controlled by \verb'GxB_set (GxB_FORMAT, ...)', for any +value of \verb'nrows'. Matrices of size \verb'1-by-ncols' with \verb'ncols' +not equal to 1 are held by row, regardless of this global setting. The global +setting only affects matrices with both \verb'm > 1' and \verb'n > 1'. Empty +matrices (\verb'0-by-0') are also controlled by the global setting. Once a matrix is created, its format (by-row or by-column) can be arbitrarily -changed with \verb'GrB_set (A, fmt, GrB_STORAGE_ORIENTATION_HINT)' -with \verb'fmt' equal to \verb'GrB_COLMAJOR' or \verb'GrB_ROWMAJOR'. +changed with \verb'GxB_set (A, GxB_FORMAT, fmt)' with \verb'fmt' equal to +\verb'GxB_BY_COL' or \verb'GxB_BY_ROW'. \begin{alert} {\bf SPEC:} \verb'nrows' and/or \verb'ncols' may be zero, @@ -4407,7 +4663,6 @@ \subsubsection{{\sf GrB\_Matrix\_dup:} copy a matrix} Then \verb'C' and \verb'A' are two different matrices that currently have the same set of values, but they do not depend on each other. Modifying one has no effect on the other. -The \verb'GrB_NAME' is copied into the new matrix. %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Matrix\_clear:} clear a matrix of all entries} @@ -4490,6 +4745,25 @@ \subsubsection{{\sf GrB\_Matrix\_nvals:} return the number of entries in MATLAB is better described as ``number of entries'' in GraphBLAS. \newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Matrix\_type\_name:} return name of the type of a matrix} +%------------------------------------------------------------------------------- +\label{matrix_type_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Matrix_type_name // return the name of the type of a matrix +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Matrix A // matrix to query +) ; +\end{verbatim} } \end{mdframed} + +\verb'GxB_Matrix_type_name' returns the name of the type of a matrix, like +\verb'type=class(A)' in MATLAB. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Matrix\_build:} build a matrix from a set of tuples} %------------------------------------------------------------------------------- @@ -4580,7 +4854,7 @@ \subsubsection{{\sf GrB\_Matrix\_build:} build a matrix from a set of tuples} The parameter \verb'X' is a pointer to any C equivalent built-in type, or a \verb'void *' pointer. The \verb'GrB_Matrix_build' function uses the -\verb'_Generic' feature of C11 to detect the type of pointer passed as the +\verb'_Generic' feature of ANSI C11 to detect the type of pointer passed as the parameter \verb'X'. If \verb'X' is a pointer to a built-in type, then the function can do the right typecasting. If \verb'X' is a \verb'void *' pointer, then it can only assume \verb'X' to be a pointer to a user-defined type that is @@ -4661,7 +4935,7 @@ \subsubsection{{\sf GrB\_Matrix\_setElement:} add an entry to a matrix} The scalar \verb'x' is typecasted into the type of \verb'C'. Any value can be passed to this function and its type will be detected, via the \verb'_Generic' -feature of C11. For a user-defined type, \verb'x' is a \verb'void *' +feature of ANSI C11. For a user-defined type, \verb'x' is a \verb'void *' pointer that points to a memory space holding a single entry of this user-defined type. This user-defined type must exactly match the user-defined type of \verb'C' since no typecasting is done between user-defined types. @@ -4697,7 +4971,7 @@ \subsubsection{{\sf GrB\_Matrix\_setElement:} add an entry to a matrix} do not access the existing entries may also be done without forcing the updates to be assembled, namely \verb'GrB_Matrix_clear' (which erases all pending updates), \verb'GrB_Matrix_free', \verb'GrB_Matrix_ncols', -\verb'GrB_Matrix_nrows', \verb'GrB_get', and of course +\verb'GrB_Matrix_nrows', \verb'GxB_Matrix_type', and of course \verb'GrB_Matrix_setElement' itself. All other methods and operations cause the updates to be assembled. Future versions of SuiteSparse:GraphBLAS may extend this list. @@ -4996,7 +5270,7 @@ \subsubsection{{\sf GxB\_Matrix\_concat:} concatenate matrices } The type of \verb'C' is unchanged, and all matrices $A_{i,j}$ are typecasted into the type of \verb'C'. Any settings made to \verb'C' by -\verb'GrB_set' (format by row or by column, bitmap switch, hyper +\verb'GxB_Matrix_Option_set' (format by row or by column, bitmap switch, hyper switch, and sparsity control) are unchanged. %------------------------------------------------------------------------------- @@ -5089,7 +5363,7 @@ \subsubsection{{\sf GxB\_Matrix\_diag:} build a diagonal matrix} existing entries in \verb'C' are discarded. The type of \verb'C' is preserved, so that if the type of \verb'C' and \verb'v' differ, the entries are typecasted into the type of \verb'C'. Any settings made to \verb'C' by -\verb'GrB_set' (format by row or by column, bitmap switch, hyper +\verb'GxB_Matrix_Option_set' (format by row or by column, bitmap switch, hyper switch, and sparsity control) are unchanged. %------------------------------------------------------------------------------- @@ -5109,7 +5383,6 @@ \subsubsection{{\sf GxB\_Matrix\_iso:} query iso status of a matrix} Returns the true if the matrix is iso-valued, false otherwise. -\newpage %------------------------------------------------------------------------------- \subsubsection{{\sf GxB\_Matrix\_memoryUsage:} memory used by a matrix} %------------------------------------------------------------------------------- @@ -5167,14 +5440,9 @@ \subsection{Serialize/deserialize methods} process over an MPI channel, or operated on in any other way that moves the bytes around. The contents of the array cannot be interpreted except by deserialization back into a vector or matrix, by the same library (and -sometimes the same version) that created the blob. - -All versions of SuiteSparse:GraphBLAS that implement -serialization/deserialization use essentially the same format for the blob, so -the library versions are compatible with each other. Version v9.0.0 adds the -\verb'GrB_NAME' and \verb'GrB_ELTYPE_STRING' to the blob in an upward -compatible manner, so that older versions of SS:GraphBLAS can read the blobs -created by v9.0.0; they simply ignore those components. +sometimes the same version) that created the blob. Currently, all versions of +SuiteSparse:GraphBLAS that implement serialization/deserialization use the same +format for the blob, so the library versions are compatible with each other. There are two forms of serialization: \verb'GrB*serialize' and \verb'GxB*serialize'. For the \verb'GrB' form, the blob must first be @@ -5183,7 +5451,7 @@ \subsection{Serialize/deserialize methods} By default, ZSTD (level 1) compression is used for serialization, but other options can be selected via the descriptor: -\verb'GrB_set (desc, method, GxB_COMPRESSION)', where \verb'method' is an +\verb'GxB_set (desc, GxB_COMPRESSION, method)', where \verb'method' is an integer selected from the following options: \vspace{0.2in} @@ -5208,14 +5476,14 @@ \subsection{Serialize/deserialize methods} {\footnotesize \begin{verbatim} - GrB_set (desc, GxB_COMPRESSION_LZ4HC + 6, GxB_COMPRESSION) ; \end{verbatim}} + GxB_set (desc, GxB_COMPRESSION, GxB_COMPRESSION_LZ4HC + 6) ; \end{verbatim}} The ZSTD method can be specified as level 1 to 19, with 1 being the default. To compress with ZSTD at level 6, use: {\footnotesize \begin{verbatim} - GrB_set (desc, GxB_COMPRESSION_ZSTD + 6, GxB_COMPRESSION) ; \end{verbatim}} + GxB_set (desc, GxB_COMPRESSION, GxB_COMPRESSION_ZSTD + 6) ; \end{verbatim}} Deserialization of untrusted data is a common security problem; see \url{https://cwe.mitre.org/data/definitions/502.html}. The deserialization @@ -5252,7 +5520,7 @@ \subsection{Serialize/deserialize methods} \verb'GrB_Matrix_deserialize' & deserialize a matrix & \ref{matrix_deserialize} \\ \verb'GxB_Matrix_deserialize' & deserialize a matrix & \ref{matrix_deserialize_GxB} \\ \hline -\verb'GrB_get' & get blob properties & \ref{get_set_blob} \\ +\verb'GrB_deserialize_type_name' & return the name of type of the blob & \ref{deserialize_type_name} \\ \hline \end{tabular} } @@ -5395,10 +5663,10 @@ \subsubsection{{\sf GxB\_Vector\_deserialize:} deserialize a vector} see Section \ref{matrix_deserialize_GxB} for more information. The blob is allocated with the \verb'malloc' function passed to -\verb'GxB_init', or the C11 \verb'malloc' if \verb'GrB_init' was used +\verb'GxB_init', or the ANSI C11 \verb'malloc' if \verb'GrB_init' was used to initialize GraphBLAS. The blob must be freed by the matching \verb'free' method, either the \verb'free' function passed to \verb'GxB_init' or -the C11 \verb'free' if \verb'GrB_init' was used. +the ANSI C11 \verb'free' if \verb'GrB_init' was used. %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Matrix\_serializeSize:} return size of serialized matrix} @@ -5481,10 +5749,10 @@ \subsubsection{{\sf GxB\_Matrix\_serialize:} serialize a matrix} compression is used, but other options can be selected via the descriptor. The blob is allocated with the \verb'malloc' function passed to -\verb'GxB_init', or the C11 \verb'malloc' if \verb'GrB_init' was used +\verb'GxB_init', or the ANSI C11 \verb'malloc' if \verb'GrB_init' was used to initialize GraphBLAS. The blob must be freed by the matching \verb'free' method, either the \verb'free' function passed to \verb'GxB_init' or -the C11 \verb'free' if \verb'GrB_init' was used. +the ANSI C11 \verb'free' if \verb'GrB_init' was used. \newpage %------------------------------------------------------------------------------- @@ -5514,12 +5782,11 @@ \subsubsection{{\sf GrB\_Matrix\_deserialize:} deserialize a matrix} blob, constructed by either \verb'GrB_Matrix_serialize' or \verb'GxB_Matrix_serialize'. -% extended in the v2.1 C API (type may be NULL): -The \verb'type' may be \verb'NULL' if the blob holds a serialized matrix with a -built-in type. In this case, the type is determined automatically. For -user-defined types, the \verb'type' must match the type of the matrix in the -blob. The \verb'GrB_get' method can be used to query the blob for the name of -this type. +\begin{alert} +{\bf SPEC:} The specification requires the \verb'type' to always be non-NULL. +As an extension, SuiteSparse:GraphBLAS allows \verb'type' to be NULL if +the blob contains a serialized matrix with a built-in type. +\end{alert} %------------------------------------------------------------------------------- \subsubsection{{\sf GxB\_Matrix\_deserialize:} deserialize a matrix} @@ -5547,6 +5814,33 @@ \subsubsection{{\sf GxB\_Matrix\_deserialize:} deserialize a matrix} Identical to \verb'GrB_Matrix_deserialize'. +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_deserialize\_type\_name:} name of the type of a blob} +%------------------------------------------------------------------------------- +\label{deserialize_type_name} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_deserialize_type_name // return the type name of a blob +( + // output: + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + // input, not modified: + const void *blob, // the blob + GrB_Index blob_size // size of the blob +) ; +\end{verbatim} +} \end{mdframed} + +\verb'GrB_deserialize_type_name' returns the name of type of the matrix or +vector serialized into the blob. This method works for any blob, from +% \verb'GrB_Vector_serialize', +\verb'GxB_Vector_serialize', +\verb'GrB_Matrix_serialize', or \verb'GxB_Matrix_serialize'. + \newpage %=============================================================================== \subsection{GraphBLAS pack/unpack: using move semantics} %======== @@ -5662,7 +5956,7 @@ \subsection{GraphBLAS pack/unpack: using move semantics} %======== {\footnotesize \begin{verbatim} - GrB_set (desc, GxB_SECURE_IMPORT, GxB_IMPORT) ; \end{verbatim}} + GxB_set (desc, GxB_IMPORT, GxB_SECURE_IMPORT) ; \end{verbatim}} The table below lists the methods presented in this section. @@ -5987,7 +6281,7 @@ \subsubsection{{\sf GxB\_Matrix\_pack\_CSR:} pack a CSR matrix} \verb'GxB_Matrix_pack_CSR' packs a matrix from 3 user arrays in CSR format. In the resulting \verb'GrB_Matrix A', the \verb'CSR' format is a sparse matrix -with a format (\verb'GrB_STORAGE_ORIENTATION_HINT') of \verb'GrB_ROWMAJOR'. +with a format (\verb'GxB_FORMAT') of \verb'GxB_BY_ROW'. The \verb'GrB_Matrix A' must exist on input with the right type and dimensions. No typecasting is done. @@ -7000,8 +7294,8 @@ \subsection{GraphBLAS import/export: using copy semantics} %==================== \begin{verbatim} typedef enum { - GrB_CSR_FORMAT = 0, // CSR format (equiv to GxB_SPARSE with GrB_ROWMAJOR) - GrB_CSC_FORMAT = 1, // CSC format (equiv to GxB_SPARSE with GrB_COLMAJOR) + GrB_CSR_FORMAT = 0, // CSR format (equiv to GxB_SPARSE with GxB_BY_ROW) + GrB_CSC_FORMAT = 1, // CSC format (equiv to GxB_SPARSE with GxB_BY_COL) GrB_COO_FORMAT = 2 // triplet format (like input to GrB*build) } GrB_Format ; \end{verbatim}} @@ -7049,7 +7343,7 @@ \subsubsection{{\sf GrB\_Matrix\_import:} import a matrix} The matrix can be imported in one of three different formats: \begin{packed_itemize} - \item \verb'GrB_CSR_FORMAT': % CSR format (equiv to GxB_SPARSE with GrB_ROWMAJOR) + \item \verb'GrB_CSR_FORMAT': % CSR format (equiv to GxB_SPARSE with GxB_BY_ROW) Compressed-row format. \verb'Ap' is an array of size \verb'nrows+1'. The arrays \verb'Ai' and \verb'Ax' are of size \verb'nvals = Ap [nrows]', and \verb'Ap[0]' must be zero. @@ -7058,7 +7352,7 @@ \subsubsection{{\sf GrB\_Matrix\_import:} import a matrix} the same locations in \verb'Ax'. The column indices need not be in any particular order. - \item \verb'GrB_CSC_FORMAT': % CSC format (equiv to GxB_SPARSE with GrB_COLMAJOR) + \item \verb'GrB_CSC_FORMAT': % CSC format (equiv to GxB_SPARSE with GxB_BY_COL) Compressed-column format. \verb'Ap' is an array of size \verb'ncols+1'. The arrays \verb'Ai' and \verb'Ax' are of size \verb'nvals = Ap [ncols]', and \verb'Ap[0]' must be zero. @@ -7075,12 +7369,12 @@ \subsubsection{{\sf GrB\_Matrix\_import:} import a matrix} column index \verb'Ap[k]', and value \verb'Ax[k]'. The tuples can appear any order, but no duplicates are permitted. -% \item \verb'GrB_DENSE_ROW_FORMAT': % FullR format (GxB_FULL with GrB_ROWMAJOR) +% \item \verb'GrB_DENSE_ROW_FORMAT': % FullR format (GxB_FULL with GxB_BY_ROW) % Dense matrix format, held by row. Only the \verb'Ax' array is used, of % size \verb'nrows*ncols'. % It holds the matrix in dense format, in row major order. % -% \item \verb'GrB_DENSE_COL_FORMAT': % FullC format (GxB_FULL with GrB_ROWMAJOR) +% \item \verb'GrB_DENSE_COL_FORMAT': % FullC format (GxB_FULL with GxB_BY_ROW) % Dense matrix format, held by column. Only the \verb'Ax' array is used, of % size \verb'nrows*ncols'. % It holds the matrix in dense format, in column major order. @@ -7176,15 +7470,15 @@ \subsubsection{{\sf GrB\_Matrix\_exportHint:} determine best export format} format of the \verb'GrB_Matrix': \begin{packed_itemize} -\item \verb'GxB_SPARSE', \verb'GrB_ROWMAJOR': export as \verb'GrB_CSR_FORMAT' -\item \verb'GxB_SPARSE', \verb'GrB_COLMAJOR': export as \verb'GrB_CSC_FORMAT' +\item \verb'GxB_SPARSE', \verb'GxB_BY_ROW': export as \verb'GrB_CSR_FORMAT' +\item \verb'GxB_SPARSE', \verb'GxB_BY_COL': export as \verb'GrB_CSC_FORMAT' \item \verb'GxB_HYPERSPARSE': export as \verb'GrB_COO_FORMAT' -\item \verb'GxB_BITMAP', \verb'GrB_ROWMAJOR': export as \verb'GrB_CSR_FORMAT' -\item \verb'GxB_BITMAP', \verb'GrB_COLMAJOR': export as \verb'GrB_CSC_FORMAT' -%\item \verb'GxB_FULL', \verb'GrB_ROWMAJOR': export as \verb'GrB_DENSE_ROW_FORMAT' -%\item \verb'GxB_FULL', \verb'GrB_COLMAJOR': export as \verb'GrB_DENSE_COL_FORMAT' -\item \verb'GxB_FULL', \verb'GrB_ROWMAJOR': export as \verb'GrB_CSR_FORMAT' -\item \verb'GxB_FULL', \verb'GrB_COLMAJOR': export as \verb'GrB_CSC_FORMAT' +\item \verb'GxB_BITMAP', \verb'GxB_BY_ROW': export as \verb'GrB_CSR_FORMAT' +\item \verb'GxB_BITMAP', \verb'GxB_BY_COL': export as \verb'GrB_CSC_FORMAT' +%\item \verb'GxB_FULL', \verb'GxB_BY_ROW': export as \verb'GrB_DENSE_ROW_FORMAT' +%\item \verb'GxB_FULL', \verb'GxB_BY_COL': export as \verb'GrB_DENSE_COL_FORMAT' +\item \verb'GxB_FULL', \verb'GxB_BY_ROW': export as \verb'GrB_CSR_FORMAT' +\item \verb'GxB_FULL', \verb'GxB_BY_COL': export as \verb'GrB_CSC_FORMAT' \end{packed_itemize} \newpage @@ -7309,7 +7603,7 @@ \subsection{GraphBLAS descriptors: {\sf GrB\_Descriptor}} %===================== typedef enum { // for all GrB_Descriptor fields: - GrB_DEFAULT = 0, // default behavior of the method + GxB_DEFAULT = 0, // default behavior of the method // for GrB_OUTP only: GrB_REPLACE = 1, // clear the output before assigning new values to it // for GrB_MASK only: @@ -7414,7 +7708,7 @@ \subsection{GraphBLAS descriptors: {\sf GrB\_Descriptor}} %===================== \begin{itemize} - \item \verb'GrB_DEFAULT' means that a method is selected automatically. + \item \verb'GxB_DEFAULT' means that a method is selected automatically. \item \verb'GxB_AxB_SAXPY': select any saxpy-based method: \verb'GxB_AxB_GUSTAVSON', and/or @@ -7475,7 +7769,7 @@ \subsection{GraphBLAS descriptors: {\sf GrB\_Descriptor}} %===================== unjumbled form, or provided as input to a method that requires it to not be jumbled, then sorting it during the matrix multiplication is faster. By default, these methods leave the result in jumbled form (a {\em lazy - sort}), if \verb'GxB_SORT' is set to zero (\verb'GrB_DEFAULT'). A nonzero + sort}), if \verb'GxB_SORT' is set to zero (\verb'GxB_DEFAULT'). A nonzero value will inform the matrix multiplication to sort its result, instead. \item \verb'GxB_COMPRESSION' selects the compression method for serialization. @@ -7490,7 +7784,7 @@ \subsection{GraphBLAS descriptors: {\sf GrB\_Descriptor}} %===================== {\footnotesize \begin{verbatim} - GrB_set (desc, GxB_SECURE_IMPORT, GxB_IMPORT) ; \end{verbatim}} + GxB_set (desc, GxB_IMPORT, GxB_SECURE_IMPORT) ; \end{verbatim}} \end{itemize} @@ -7504,8 +7798,9 @@ \subsection{GraphBLAS descriptors: {\sf GrB\_Descriptor}} %===================== \hline \verb'GrB_Descriptor_new' & create a descriptor & \ref{descriptor_new} \\ \verb'GrB_Descriptor_wait' & wait for a descriptor & \ref{descriptor_wait} \\ -\verb'GrB_get' & get a parameter from a descriptor & \ref{get_set_descriptor} \\ -\verb'GrB_set' & set a parameter in a descriptor & \ref{get_set_descriptor} \\ +\verb'GrB_Descriptor_set' & set a parameter in a descriptor & \ref{descriptor_set} \\ +\verb'GxB_Desc_set' & set a parameter in a descriptor & \ref{desc_set} \\ +\verb'GxB_Desc_get' & get a parameter from a descriptor & \ref{desc_get} \\ \verb'GrB_Descriptor_free' & free a descriptor & \ref{descriptor_free} \\ \hline \end{tabular} @@ -7552,6 +7847,139 @@ \subsubsection{{\sf GrB\_Descriptor\_wait:} wait for a descriptor} exploit non-blocking mode to delay its creation. Currently, SuiteSparse:GraphBLAS does nothing except to ensure that \verb'd' is valid. +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GrB\_Descriptor\_set:} set a parameter in a descriptor} +%------------------------------------------------------------------------------- +\label{descriptor_set} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GrB_Descriptor_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + GrB_Desc_Value val // value to change it to +) ; +\end{verbatim} } \end{mdframed} + +\verb'GrB_Descriptor_set' sets a descriptor field (\verb'GrB_OUTP', +\verb'GrB_MASK', \verb'GrB_INP0', \verb'GrB_INP1', or \verb'GxB_AxB_METHOD') to +a particular value. +If an error occurs, \verb'GrB_error(&err,desc)' returns details about the error. + +\vspace{0.2in} +\noindent +{\footnotesize +\begin{tabular}{|l|p{2.4in}|p{2.2in}|} +\hline +Descriptor & Default & Non-default \\ +field & & \\ +\hline + +\verb'GrB_OUTP' + & \verb'GxB_DEFAULT': + The output matrix is not cleared. The operation computes + ${\bf C \langle M \rangle = C \odot T}$. + & \verb'GrB_REPLACE': + After computing ${\bf Z=C\odot T}$, + the output {\bf C} is cleared of all entries. + Then ${\bf C \langle M \rangle = Z}$ is performed. \\ + +\hline + +\verb'GrB_MASK' + & \verb'GxB_DEFAULT': + The Mask is not complemented. \verb'Mask(i,j)=1' means the value $C_{ij}$ + can be modified by the operation, while \verb'Mask(i,j)=0' means the value + $C_{ij}$ shall not be modified by the operation. + & \verb'GrB_COMP': + The Mask is complemented. \verb'Mask(i,j)=0' means the value $C_{ij}$ + can be modified by the operation, while \verb'Mask(i,j)=1' means the value + $C_{ij}$ shall not be modified by the operation. \\ + & + & \verb'GrB_STRUCTURE': + The values of the Mask are ignored. If \verb'Mask(i,j)' is an entry + in the \verb'Mask' matrix, it is treated as if \verb'Mask(i,j)=1'. + The two options \verb'GrB_COMP' and \verb'GrB_STRUCTURE' can be + combined, with two subsequent calls, or with a single call with the setting + \verb'GrB_COMP+GrB_STRUCTURE'. \\ + +\hline + +\verb'GrB_INP0' + & \verb'GxB_DEFAULT': + The first input is not transposed prior to using it in the operation. + & \verb'GrB_TRAN': + The first input is transposed prior to using it in the operation. Only + matrices are transposed, never vectors. \\ + +\hline + +\verb'GrB_INP1' + & \verb'GxB_DEFAULT': + The second input is not transposed prior to using it in the operation. + & \verb'GrB_TRAN': + The second input is transposed prior to using it in the operation. Only + matrices are transposed, never vectors. \\ + +\hline + +\verb'GrB_AxB_METHOD' + & \verb'GxB_DEFAULT': + The method for \verb'C=A*B' is selected automatically. + & \verb'GxB_AxB_'{\em method}: The selected method is used to compute + \verb'C=A*B'. \\ + +\hline +\end{tabular} +} + +\newpage +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Desc\_set:} set a parameter in a descriptor} +%------------------------------------------------------------------------------- +\label{desc_set} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Desc_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + ... // value to change it to +) ; +\end{verbatim} } \end{mdframed} + +\verb'GxB_Desc_set' is like \verb'GrB_Descriptor_set', except that the type of +the third parameter can vary with the field. This function can modify all +descriptor settings, including those that do not have the type +\verb'GrB_Desc_Value'. See also \verb'GxB_set' described in +Section~\ref{options}. If an error occurs, \verb'GrB_error(&err,desc)' returns +details about the error. + +%------------------------------------------------------------------------------- +\subsubsection{{\sf GxB\_Desc\_get:} get a parameter from a descriptor} +%------------------------------------------------------------------------------- +\label{desc_get} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Desc_get // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field, // parameter to query + ... // value of the parameter +) ; +\end{verbatim} } \end{mdframed} + +\verb'GxB_Desc_get' returns the value of a single field in a descriptor. The +type of the third parameter is a pointer to a variable type, whose type depends +on the field. See also \verb'GxB_get' described in Section~\ref{options}. + %------------------------------------------------------------------------------- \subsubsection{{\sf GrB\_Descriptor\_free:} free a descriptor} %------------------------------------------------------------------------------- @@ -7870,8 +8298,8 @@ \section{{\sf GxB\_Context:} controlling computational resources} %============= single threaded, with all parallelism is inside GraphBLAS itself. The object is also not needed if the user application is multi-threaded, but all user threads create the same number of threads inside GraphBLAS (say each using a -single thread). In that case, \verb'GrB_set(GrB_GLOBAL,1,GxB_NTHREADS)' -can be used (for example). +single thread). In that case, \verb'GxB_set(GxB_NTHREADS,1)' can be used (for +example). However, suppose the user application creates 5 threads of its own, on a machine with 16 cores, and each thread wants to use a different number of @@ -7882,22 +8310,40 @@ \section{{\sf GxB\_Context:} controlling computational resources} %============= The default context is \verb'GxB_CONTEXT_WORLD', which is not created by the user application but it can be modified. If a user thread does not create its own context, then its computational resources are determine by this -\verb'GxB_CONTEXT_WORLD' object. The following \verb'GrB_set/get' methods -access this global object without naming it directly (where \verb'chunk' -is a \verb'GrB_Scalar' of type \verb'GrB_FP64' or \verb'GrB_FP32'): +\verb'GxB_CONTEXT_WORLD' object. The following \verb'GxB_set/get' methods +access this global object without naming it directly: + + \begin{itemize} + \item \verb'GxB_set (GxB_NTHREADS, nthreads)' + \item \verb'GxB_get (GxB_NTHREADS, &nthreads)' + \item \verb'GxB_set (GxB_CHUNK, chunk)' + \item \verb'GxB_get (GxB_CHUNK, &chunk)' + \end{itemize} + +Those four operations above are identical to the same set/get operations on the +the world context: + + \begin{itemize} + \item \verb'GxB_Context_set (GxB_CONTEXT_WORLD, GxB_NTHREADS, nthreads)' + \item \verb'GxB_Context_get (GxB_CONTEXT_WORLD, GxB_NTHREADS, &nthreads)' + \item \verb'GxB_Context_set (GxB_CONTEXT_WORLD, GxB_CHUNK, chunk)' + \item \verb'GxB_Context_get (GxB_CONTEXT_WORLD, GxB_CHUNK, &chunk)' + \end{itemize} + +Or, a \verb'NULL' context can be used, which also modifies the world context: \begin{itemize} - \item \verb'GrB_set (GrB_GLOBAL, nthreads, GxB_NTHREADS)' - \item \verb'GrB_get (GrB_GLOBAL, &nthreads, GxB_NTHREADS)' - \item \verb'GrB_set (GrB_GLOBAL, chunk, GxB_CHUNK)' - \item \verb'GrB_get (GrB_GLOBAL, chunk, GxB_CHUNK)' + \item \verb'GxB_Context_set (NULL, GxB_NTHREADS, nthreads)' + \item \verb'GxB_Context_get (NULL, GxB_NTHREADS, &nthreads)' + \item \verb'GxB_Context_set (NULL, GxB_CHUNK, chunk)' + \item \verb'GxB_Context_get (NULL, GxB_CHUNK, &chunk)' \end{itemize} The above methods control the OpenMP threads used by all user threads in the user application. To allow each user thread to control its own OpenMP threading, each user thread needs to create its own Context object via \verb'GxB_Context_new'. Next, the user thread must {\em engage} this context -via \verb'GxB_Context_engage'; all subsequent calls to GraphBLAS from this +via \verb'GxB_Context_engate'; all subsequent calls to GraphBLAS from this particular user thread will then use the number of OpenMP threads dictated by this particular context. @@ -7922,7 +8368,7 @@ \section{{\sf GxB\_Context:} controlling computational resources} %============= // each user thread constructs its own context GxB_Context Context = NULL ; GxB_Context_new (&Context) ; - GrB_set (Context, ninner, GxB_NTHREADS) ; + GxB_Context_set (Context, GxB_NTHREADS, ninner) ; GxB_Context_engage (Context) ; // kth user thread builds kth matrix with ninner threads @@ -7957,8 +8403,8 @@ \section{{\sf GxB\_Context:} controlling computational resources} %============= GraphBLAS function & purpose & Section \\ \hline \verb'GxB_Context_new' & create a context & \ref{context_new} \\ -\verb'GrB_get' & get a value from a context & \ref{get_set_context} \\ -\verb'GrB_set' & set a value in a context & \ref{get_set_context} \\ +\verb'GxB_Context_set' & set an value in a context & \ref{context_set} \\ +\verb'GxB_Context_get' & get an value from a context & \ref{context_get} \\ \verb'GxB_Context_engage' & engage a context & \ref{context_engage} \\ \verb'GxB_Context_disengage' & disengage a context & \ref{context_disengage} \\ \verb'GxB_Context_fprint' & check/print a context & \ref{context_print} \\ @@ -7983,10 +8429,66 @@ \subsection{{\sf GxB\_Context\_new:} create a new context} \end{verbatim} } \end{mdframed} A new context is created and initialized with the current global settings for -\verb'GxB_NTHREADS' and \verb'GxB_CHUNK'. See \verb'GrB_get'. +\verb'GxB_NTHREADS' and \verb'GxB_CHUNK'. See \verb'GxB_Global_Option_get'. The context object will not have an effect on any calls to GraphBLAS until it is {\em engaged} by a user thread. +\newpage +%------------------------------------------------------------------------------- +\subsection{{\sf GxB\_Context\_set:} change a setting in a context} +%------------------------------------------------------------------------------- +\label{context_set} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Context_set // set a parameter in a context +( + GxB_Context Context // context to modify + GxB_Context_Field field, // field to modify + ... +) ; +\end{verbatim} } \end{mdframed} + +The \verb'GxB_Context_Field' parameter can currently take on one of two +values, given by the following definition: + +{\footnotesize +\begin{verbatim} +typedef enum +{ + GxB_CONTEXT_NTHREADS = GxB_NTHREADS, // max number of threads to use. + // If <= 0, then one thread is used. + GxB_CONTEXT_CHUNK = GxB_CHUNK, // chunk size for small problems. + // If < 1, then the default is used. +} +GxB_Context_Field ; +\end{verbatim} +} + +For example, \verb'GxB_set (Context, GxB_NTHREADS, 4)' sets the number of +threads in the \verb'Context' to 4. + +%------------------------------------------------------------------------------- +\subsection{{\sf GxB\_Context\_get:} get a setting from a context} +%------------------------------------------------------------------------------- +\label{context_get} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_Context_get // get a parameter in a context +( + GxB_Context Context // context to query + GxB_Context_Field field, // field to query + ... +) ; +\end{verbatim} } \end{mdframed} + +For example, \verb'GxB_get (Context, GxB_NTHREADS, &nthreads)' returns the +number of threads set in the \verb'Context', returning the result in the +\verb'int32_t' scalar, \verb'nthreads'. + \newpage %------------------------------------------------------------------------------- \subsection{{\sf GxB\_Context\_engage:} engaging context} @@ -8152,8 +8654,8 @@ \subsection{Using the JIT} folder after calling \verb'GrB_init'. It can also modify the C compiler and its flags, and can control when and how the JIT is used. These changes are -made via \verb'GrB_set', and can be queried via -\verb'GrB_get'; refer to Section~\ref{options} for details, and +made via \verb'GxB_Global_Option_set', and can be queried via +\verb'GxB_Global_Option_get'; refer to Section~\ref{options} for details, and the \verb'GxB_JIT_*' settings: \vspace{0.15in} @@ -8188,14 +8690,14 @@ \subsection{Using the JIT} definition when the kernel was compiled, then the compiled kernel is discarded and recompiled. The stale kernel is overwritten with the new one, so there is no need to for the user to take any action to delete the stale kernel from the -cache path. If the cache path is changed via \verb'GrB_set', compiled kernels +cache path. If the cache path is changed via \verb'GxB_set', compiled kernels in the old cache folder are not copied over. New ones are compiled instead. %---------------------------------------- \subsubsection{\sf GxB\_JIT\_C\_CONTROL} %---------------------------------------- -The usage of the CPU JIT can be controlled via \verb'GrB_get/set' using the +The usage of the CPU JIT can be controlled via \verb'GxB_get/set' using the \verb'GxB_JIT_C_CONTROL' setting. If the JIT is enabled at compile time, the initial setting is \verb'GxB_JIT_ON'. If the JIT is disabled at compile time (via \verb'NJIT'), the initial setting is \verb'GxB_JIT_RUN', so that any @@ -8203,10 +8705,10 @@ \subsubsection{\sf GxB\_JIT\_C\_CONTROL} disable the JIT and clear all loaded JIT kernels from memory, use: \begin{verbatim} - GrB_set (GrB_GLOBAL, GxB_JIT_OFF, GxB_JIT_C_CONTROL) ; + GxB_set (GxB_JIT_C_CONTROL, GxB_JIT_OFF) ; \end{verbatim} -The above call to \verb'GrB_set' does not clear any PreJIT kernels, however, +The above call to \verb'GxB_set' does not clear any PreJIT kernels, however, since those are integral components of the single compiled GraphBLAS library and cannot be cleared (see Section~\ref{prejit}). It also does not clear any compiled user functions, created by the JIT for \verb'GxB_*Op_new' when the @@ -8235,7 +8737,7 @@ \subsubsection{\sf GxB\_JIT\_C\_CONTROL} listed above. If the application tries to set the control to \verb'GxB_JIT_LOAD' or \verb'GxB_JIT_ON', the setting is changed to \verb'GxB_JIT_RUN' instead. This is not an error condition. The resulting -setting can be queried via \verb'GrB_get', if desired. +setting can be queried via \verb'GxB_get', if desired. The JIT control setting can be also changed by GraphBLAS itself, based on following error conditions. These changes affect all kernels, not just the @@ -8244,7 +8746,7 @@ \subsubsection{\sf GxB\_JIT\_C\_CONTROL} generic kernels instead. It would return \verb'GrB_OUT_OF_MEMORY' for the last case below. The error is also reported if the \verb'GxB_BURBLE' is enabled. If the JIT is disabled through any of these errors, it can be detected by -\verb'GrB_get' to read the \verb'GxB_JIT_C_CONTROL' state. +\verb'GxB_get' to read the \verb'GxB_JIT_C_CONTROL' state. \begin{itemize} @@ -8371,11 +8873,21 @@ \subsubsection{\sf GxB\_JIT\_USE\_CMAKE} \label{use_cmake} Two methods are provided for compiling the JIT kernels: cmake, and a direct -compiler/link command. On Windows, only cmake may be used, and this setting -is ignored (it is always true). On Linux or Mac, the default is false since -a direct compile/link is faster. However, it is possible that some compilers -are not handled properly with this method, so cmake can also be used on those -platforms by setting the value of \verb'GxB_JIT_USE_CMAKE' to true. +compiler/link command. + +On Linux or Mac, or the default is false since a direct compile/link is faster. +However, it is possible that some compilers are not handled properly with this +method, so cmake can also be used on those platforms by setting the value of +\verb'GxB_JIT_USE_CMAKE' to true. + +On Windows with MS Visual Studio, only cmake may be used, and this setting is +ignored (it is always true). Direct compilation without cmake on Windows with +MSVC is not yet available. + +When using MINGW on Windows the opposite is true: cmake may not be used, and +this setting ignored (it is always false). The only option is to use a direct +compile instead of using cmake. Using cmake to build kernels when using MINGW +on Windows is not yet available. Normally the same version of cmake should be used to compile both GraphBLAS and the JIT kernels. However, compiling GraphBLAS itself requires cmake v3.16 or @@ -8578,7 +9090,7 @@ \subsection{Mixing JIT kernels: MATLAB and Apple Silicon} Silicon, the MATLAB JIT kernels are compiled as x86 binaries and executed inside MATLAB via Rosetta. The pure C installation may compile native Arm64 binaries for its JIT kernels. Do not mix the two. In this case, set another -cache path for MATLAB using \verb'GrB.jit' in MATLAB, or using \verb'GrB_set' +cache path for MATLAB using \verb'GrB.jit' in MATLAB, or using \verb'GxB_set' in the C interface for your native Arm64 binaries. %------------------------------------------------------------------------------- @@ -8628,8 +9140,1203 @@ \subsubsection{Better performance for multithreaded user programs:} \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{GrB_get_set.tex} +\section{SuiteSparse:GraphBLAS Options} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\label{options} + +SuiteSparse:GraphBLAS includes two type-generic methods, \verb'GxB_set' and +\verb'GxB_get', that set and query various options and parameters settings, +including a generic way to set values in the \verb'GrB_Descriptor' object. +Using these methods, the user application can provide hints to +SuiteSparse:GraphBLAS on how it should store and operate on its matrices. +These hints have no effect on the results of any GraphBLAS operation (except +perhaps floating-point roundoff differences), but they can have a great impact +on the amount of time or memory taken. + +\begin{note} +{\bf NOTE:} In the next release, \verb'GxB_get' and \verb'GxB_set' will be +replaced by \verb'GrB_*_get' and \verb'GrB_*_set', using the v2.1 C API +Specification. +\end{note} + +%------------------------------------------------------------------------------- +\subsection{{\sf GxB\_set}: overview} +%------------------------------------------------------------------------------- + +\begin{itemize} + +\item \verb'GxB_set (field, value)' sets global options. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_HYPER_SWITCH' & \verb'double' & hypersparsity control (0 to 1) \\ +\verb'GxB_BITMAP_SWITCH' & \verb'double [8]' & bitmap control \\ +\verb'GxB_FORMAT' & \verb'int' & \verb'GxB_BY_ROW' + or \verb'GxB_BY_COL' \\ +\verb'GxB_GLOBAL_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_GLOBAL_CHUNK' & \verb'double' & chunk size \\ +\verb'GxB_CHUNK' & \verb'double' & chunk size \\ +\verb'GxB_BURBLE' & \verb'int' & diagnostic output \\ +\verb'GxB_PRINTF' & see below & diagnostic output \\ +\verb'GxB_FLUSH' & see below & diagnostic output \\ +\verb'GxB_PRINT_1BASED' & \verb'int' & for printing matrices/vectors \\ +\hline +\verb'GxB_JIT_C_COMPILER_NAME' & \verb'char *' & C compiler for JIT kernels \\ +\verb'GxB_JIT_C_COMPILER_FLAGS'& \verb'char *' & flags for the C compiler \\ +\verb'GxB_JIT_C_LINKER_FLAGS' & \verb'char *' & link flags for the C compiler \\ +\verb'GxB_JIT_C_LIBRARIES' & \verb'char *' & libraries to link against \\ +\verb'GxB_JIT_C_CMAKE_LIBS' & \verb'char *' & libraries to link against \\ +\verb'GxB_JIT_C_PREFACE' & \verb'char *' & C code as preface to JIT kernels \\ +\verb'GxB_JIT_C_CONTROL' & see Section \ref{jit} & CPU JIT control \\ +\verb'GxB_JIT_USE_CMAKE' & see Section \ref{jit} & CPU JIT: use cmake \\ +\verb'GxB_JIT_ERROR_LOG' & \verb'char *' & error log file \\ +\verb'GxB_JIT_CACHE_PATH' & \verb'char *' & folder with compiled kernels \\ +\hline +\end{tabular} +} + +\item \verb'GxB_set (GrB_Matrix A, field, value)' provides hints to + SuiteSparse: GraphBLAS on how to store a particular matrix. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_HYPER_SWITCH' & \verb'double' & hypersparsity control (0 to 1) \\ +\verb'GxB_BITMAP_SWITCH' & \verb'double' & bitmap control (0 to 1) \\ +\verb'GxB_FORMAT' & \verb'int' & \verb'GxB_BY_ROW' + or \verb'GxB_BY_COL' \\ +\verb'GxB_SPARSITY_CONTROL' & \verb'int' & 0 to 15 \\ +\hline +\end{tabular} +} + +\item \verb'GxB_set (GrB_Vector v, field, value)' provides hints to + SuiteSparse: GraphBLAS on how to store a particular vector. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_BITMAP_SWITCH' & \verb'double' & bitmap control (0 to 1) \\ +\verb'GxB_SPARSITY_CONTROL' & \verb'int' & 0 to 15 \\ +\hline +\end{tabular} +} + +\item \verb'GxB_set (GrB_Descriptor desc, field, value)' sets + the value of a field in a \verb'GrB_Descriptor'. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GrB_OUTP' & \verb'GrB_Desc_Value' & replace option \\ +\verb'GrB_MASK' & \verb'GrB_Desc_Value' & mask option \\ +\verb'GrB_INP0' & \verb'GrB_Desc_Value' & transpose input 0 \\ +\verb'GrB_INP1' & \verb'GrB_Desc_Value' & transpose input 1 \\ +\verb'GxB_AxB_METHOD' & \verb'int' & method for matrix multiply \\ +\verb'GxB_SORT' & \verb'int' & lazy vs aggressive sort \\ +\verb'GxB_COMPRESSION' & \verb'int' & compression for serialization \\ +\verb'GxB_IMPORT' & \verb'GrB_Desc_Value' & trust data on import/pack \\ +\hline +\end{tabular} +} + +\item \verb'GxB_set (GxB_Context desc, field, value)' sets + the value of a field in a \verb'GxB_Context'. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_CHUNK' & \verb'double' & chunk size \\ +\hline +\end{tabular} +} + +\end{itemize} + +%------------------------------------------------------------------------------- +\subsection{{\sf GxB\_get}: overview} +%------------------------------------------------------------------------------- + +\verb'GxB_get' queries a \verb'GrB_Descriptor', a \verb'GrB_Matrix', +a \verb'GrB_Vector', or the global options. + +\begin{itemize} + +\item \verb'GxB_get (field, &value)' retrieves the value of a global option. +NOTE: the \verb'const char *' values returned by \verb'GxB_get' are pointers +to memory spaces ``owned'' by the GraphBLAS library. Do not modify them. +Subsequent calls to GraphBLAS (particularly setting the JIT control strings) +can change those strings. The user application must copy those strings into +its own memory space if the strings are to be kept. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_HYPER_SWITCH' & \verb'double' & hypersparsity control (0 to 1) \\ +\verb'GxB_BITMAP_SWITCH' & \verb'double [8]' & bitmap control \\ +\verb'GxB_FORMAT' & \verb'int' & \verb'GxB_BY_ROW' or \verb'GxB_BY_COL' \\ +\verb'GxB_GLOBAL_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_GLOBAL_CHUNK' & \verb'double' & chunk size \\ +\verb'GxB_CHUNK' & \verb'double' & chunk size \\ +\verb'GxB_BURBLE' & \verb'int' & diagnostic output \\ +\verb'GxB_PRINTF' & see below & diagnostic output \\ +\verb'GxB_FLUSH' & see below & diagnostic output \\ +\verb'GxB_PRINT_1BASED' & \verb'int' & for printing matrices/vectors \\ +\hline +\verb'GxB_JIT_C_COMPILER_NAME' & \verb'const char *' & C compiler for JIT kernels \\ +\verb'GxB_JIT_C_COMPILER_FLAGS'& \verb'const char *' & flags for the C compiler \\ +\verb'GxB_JIT_C_LINKER_FLAGS' & \verb'const char *' & link flags for the C compiler \\ +\verb'GxB_JIT_C_LIBRARIES' & \verb'const char *' & libraries to link against \\ +\verb'GxB_JIT_C_CMAKE_LIBS' & \verb'const char *' & libraries to link against \\ +\verb'GxB_JIT_C_PREFACE' & \verb'const char *' & C code as preface to JIT kernels \\ +\verb'GxB_JIT_C_CONTROL' & see Section \ref{jit} & CPU JIT control \\ +\verb'GxB_JIT_USE_CMAKE' & see Section \ref{jit} & CPU JIT: use cmake \\ +\verb'GxB_JIT_ERROR_LOG' & \verb'const char *' & error log file \\ +\verb'GxB_JIT_CACHE_PATH' & \verb'const char *' & folder with compiled kernels \\ +\hline +\verb'GxB_MODE' & \verb'int' & blocking/non-blocking \\ +\verb'GxB_LIBRARY_NAME' & \verb'const char *' & name of library \\ +\verb'GxB_LIBRARY_VERSION' & \verb'int [3]' & library version \\ +\verb'GxB_LIBRARY_DATE' & \verb'const char *' & release date \\ +\verb'GxB_LIBRARY_ABOUT' & \verb'const char *' & about the library \\ +\verb'GxB_LIBRARY_LICENSE' & \verb'const char *' & license \\ +\verb'GxB_LIBRARY_COMPILE_DATE' & \verb'const char *' & date of compilation \\ +\verb'GxB_LIBRARY_COMPILE_TIME' & \verb'const char *' & time of compilation \\ +\verb'GxB_LIBRARY_OPENMP' & \verb'bool' & true if compiled with OpenMP\\ +\verb'GxB_LIBRARY_URL' & \verb'const char *' & url of library \\ +\verb'GxB_API_VERSION' & \verb'int [3]' & C API version \\ +\verb'GxB_API_DATE' & \verb'const char *' & C API date \\ +\verb'GxB_API_ABOUT' & \verb'const char *' & about the C API \\ +\verb'GxB_API_URL' & \verb'const char *' & \verb'http://graphblas.org' \\ +\verb'GxB_COMPILER_NAME' & \verb'const char *' & C compiler name \\ +\verb'GxB_COMPILER_VERSION' & \verb'int [3]' & C compiler version \\ +\hline +\end{tabular} +} + +\newpage +\item \verb'GxB_get (GrB_Matrix A, field, &value)' retrieves the current + value of an option from a particular matrix \verb'A'. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_HYPER_SWITCH' & \verb'double' & hypersparsity control (0 to 1) \\ +\verb'GxB_BITMAP_SWITCH' & \verb'double' & bitmap control (0 to 1) \\ +\verb'GxB_FORMAT' & \verb'int' & \verb'GxB_BY_ROW' + or \verb'GxB_BY_COL' \\ +\verb'GxB_SPARSITY_CONTROL' & \verb'int' & 0 to 15 \\ +\verb'GxB_SPARSITY_STATUS' & \verb'int' & 1, 2, 4, or 8 \\ +\hline +\end{tabular} +} + +\item \verb'GxB_get (GrB_Vector A, field, &value)' retrieves the current + value of an option from a particular vector \verb'v'. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_BITMAP_SWITCH' & \verb'double' & bitmap control (0 to 1) \\ +\verb'GxB_FORMAT' & \verb'int' & \verb'GxB_BY_ROW' + or \verb'GxB_BY_COL' \\ +\verb'GxB_SPARSITY_CONTROL' & \verb'int' & 0 to 15 \\ +\verb'GxB_SPARSITY_STATUS' & \verb'int' & 1, 2, 4, or 8 \\ +\hline +\end{tabular} +} + +\item \verb'GxB_get (GrB_Descriptor desc, field, &value)' retrieves the value + of a field in a descriptor. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GrB_OUTP' & \verb'GrB_Desc_Value' & replace option \\ +\verb'GrB_MASK' & \verb'GrB_Desc_Value' & mask option \\ +\verb'GrB_INP0' & \verb'GrB_Desc_Value' & transpose input 0 \\ +\verb'GrB_INP1' & \verb'GrB_Desc_Value' & transpose input 1 \\ +\verb'GxB_AxB_METHOD' & \verb'int' & method for matrix multiply \\ +\verb'GxB_SORT' & \verb'int' & lazy vs aggressive sort \\ +\verb'GxB_COMPRESSION' & \verb'int' & compression for serialization \\ +\verb'GxB_IMPORT' & \verb'GrB_Desc_Value' & trust data on import/pack \\ +\hline +\end{tabular} +} + +\item \verb'GxB_get (GxB_Context desc, field, value)' retrieves + the value of a field in a \verb'GxB_Context'. + +{\footnotesize +\begin{tabular}{lll} +field & value & description \\ +\hline +\verb'GxB_NTHREADS' & \verb'int' & number of threads to use \\ +\verb'GxB_CHUNK' & \verb'double' & chunk size \\ +\hline +\end{tabular} +} + +\end{itemize} + +%------------------------------------------------------------------------------- +\newpage +\subsection{OpenMP parallelism} +%------------------------------------------------------------------------------- +\label{omp_parallelism} + +SuiteSparse:GraphBLAS is a parallel library, based on OpenMP. By +default, all GraphBLAS operations will use up to the maximum number of threads +specified by the \verb'omp_get_max_threads' OpenMP function. For small +problems, GraphBLAS may choose to use fewer threads, using two parameters: the +maximum number of threads to use (which may differ from the +\verb'omp_get_max_threads' value), and a parameter called the \verb'chunk'. +Suppose \verb'work' is a measure of the work an operation needs to perform (say +the number of entries in the two input matrices for \verb'GrB_eWiseAdd'). No +more than \verb'floor(work/chunk)' threads will be used (or one thread if the +ratio is less than 1). + +\verb'GxB_NTHREADS' controls how many threads a method uses. + By default (if set to zero, or \verb'GxB_DEFAULT'), all available threads + are used. The maximum available threads is controlled by the global + setting, which is \verb'omp_get_max_threads ( )' by default. If set to + some positive integer \verb'nthreads' less than this maximum, at most + \verb'nthreads' threads will be used. + +\verb'GxB_CHUNK' is a \verb'double' value that controls how many threads + a method uses for small problems. +The default \verb'chunk' value is 65,536, but this may change in future +versions, or it may be modified when GraphBLAS is installed on a particular +machine. + +Both parameters can be set in two ways: + +\begin{itemize} + +\item Globally: If the following methods are used, then all subsequent +GraphBLAS operations will use these settings. Note the typecast, +\verb'(double)' \verb'chunk'. This is necessary if a literal constant such as +\verb'20000' is passed as this argument. The type of the constant must be +\verb'double'. + + {\footnotesize + \begin{verbatim} + int nthreads_max = 40 ; + GxB_set (GxB_NTHREADS, nthreads_max) ; + GxB_set (GxB_CHUNK, (double) 20000) ; \end{verbatim} } + +\item Context: this object can be used to choose a different number of +threads used in calls to GraphBLAS from different user threads, exploiting +nested parallelism. Refer to Section~\ref{context}. If a thread has engaged a +context object, it ignores the global settings for \verb'GxB_NTHREADS' and +\verb'GxB_CHUNK', and uses the settings in its own context instead. + +\end{itemize} + +The smaller of \verb'nthreads_max' and \verb'floor(work/chunk)' is used for any +given GraphBLAS operation, except that a single thread is used if this value is +zero or less. + +If either parameter is set to \verb'GxB_DEFAULT', then default values are used. +The default for \verb'nthreads_max' is the return value from +\verb'omp_get_max_threads', and the default chunk size is currently 65,536. + +If a descriptor value for either parameter is left at its default, or set to +\verb'GxB_DEFAULT', then the global setting is used. This global setting may +have been modified from its default, and this modified value will be used. + +For example, suppose \verb'omp_get_max_threads' reports 8 threads. If \newline +\verb'GxB_set (GxB_NTHREADS, 4)' is used, then the global setting is four +threads, not eight. + +GraphBLAS may be compiled without OpenMP, by setting \verb'-DNOPENMP=1'. +The library will be thread-safe, with one exception. \verb'GrB_wait' is +intended to provide thread-safety by flushing the cache of one user thread +so the object can be safely read by another thread. This is accomplished +with \verb'pragma omp flush', but if OpenMP is not available, this does +nothing. If OpenMP is not available or \verb'-DNOPEMP=1' is used, then +user applications need to ensure their own thread safety when one user thread +computes a result that is then read by another thread. + +You can query GraphBLAS at run-time to ask if it was compiled with OpenMP: + +\begin{verbatim} + bool have_openmp ; + GxB_get (GxB_LIBRARY_OPENMP, &have_openmp) ; + if (!have_openmp) printf ("GraphBLAS not compiled with OpenMP\n") : +\end{verbatim} + +Compiling GraphBLAS without OpenMP is not recommended for installation in a +package manager (Linux, conda-forge, spack, brew, vcpkg, etc). + +%------------------------------------------------------------------------------- +\subsection{Storing a matrix by row or by column} +%------------------------------------------------------------------------------- + +The GraphBLAS \verb'GrB_Matrix' is entirely opaque to the user application, and +the GraphBLAS API does not specify how the matrix should be stored. However, +choices made in how the matrix is represented in a particular implementation, +such as SuiteSparse:GraphBLAS, can have a large impact on performance. + +Many graph algorithms are just as fast in any format, but some algorithms are +much faster in one format or the other. For example, suppose the user +application stores a directed graph as a matrix \verb'A', with the edge $(i,j)$ +represented as the value \verb'A(i,j)', and the application makes many accesses +to the $i$th row of the matrix, with \verb'GrB_Col_extract' +\verb'(w,...,A,GrB_ALL,...,i,desc)' with the transposed descriptor +(\verb'GrB_INP0' set to \verb'GrB_TRAN'). If the matrix is stored by column +this can be extremely slow, just like the expression \verb'w=A(i,:)' in MATLAB, +where \verb'i' is a scalar. Since this is a typical use-case in graph +algorithms, the default format in SuiteSparse:GraphBLAS is to store its +matrices by row, in Compressed Sparse Row format (CSR). + +MATLAB stores its sparse matrices by column, in ``non-hypersparse'' format, in +what is called the Compressed Sparse Column format, or CSC for short. An +\verb'm'-by-\verb'n' matrix in MATLAB is represented as a set of \verb'n' +column vectors, each with a sorted list of row indices and values of the +nonzero entries in that column. As a result, \verb'w=A(:,j)' is very fast in +MATLAB, since the result is already held in the data structure a single list, +the $j$th column vector. However, \verb'w=A(i,:)' is very slow in MATLAB, +since every column in the matrix has to be searched to see if it contains row +\verb'i'. In MATLAB, if many such accesses are made, it is much better to +transpose the matrix (say \verb"AT=A'") and then use \verb"w=AT(:,i)" instead. +This can have a dramatic impact on the performance of MATLAB. + +Likewise, if \verb'u' is a very sparse column vector and \verb'A' is stored by +column, then \verb"w=u'*A" (via \verb'GrB_vxm') is slower than \verb'w=A*u' +(via \verb'GrB_mxv'). The opposite is true if the matrix is stored by row. + +SuiteSparse:GraphBLAS stores its matrices by row, by default (with one +exception described below). However, it can also be instructed to store any +selected matrices, or all matrices, by column instead (just like MATLAB), so +that \verb'w=A(:,j)' (via \verb'GrB_Col_extract') is very fast. The change in +data format has no effect on the result, just the time and memory usage. To +use a column-oriented format by default, the following can be done in a user +application that tends to access its matrices by column. + + {\footnotesize + \begin{verbatim} + GrB_init (...) ; + // just after GrB_init: do the following: + #ifdef GxB_SUITESPARSE_GRAPHBLAS + GxB_set (GxB_FORMAT, GxB_BY_COL) ; + #endif \end{verbatim} } + +If this is done, and no other \verb'GxB_set' calls are made with +\verb'GxB_FORMAT', all matrices will be stored by column. +The default format is \verb'GxB_BY_ROW'. + +All vectors (\verb'GrB_Vector') are held by column, and this cannot be changed. + +By default, matrices of size \verb'm-by-1' are held by column, regardless of +the global setting described above. Matrices of size \verb'1-by-n' with +\verb'n' not equal to 1 are held by row, regardless of the global setting. +The global setting only affects matrices with both \verb'm > 1' and \verb'n > 1'. +Empty matrices (\verb'0-by-0') are also controlled by the global setting. + +After creating a matrix with \verb'GrB_Matrix_new (&A, ...)', +its format can be changed arbitrarily with \verb'GxB_set (A, GxB_FORMAT, ...)'. +So even an \verb'm-by-1' matrix can then be changed to be held by row, for +example. Likewise, once a \verb'1-by-n' matrix is created, it can be converted +to column-oriented format. + +%------------------------------------------------------------------------------- +\subsection{Hypersparse matrices} +\label{hypersparse} +%------------------------------------------------------------------------------- + +MATLAB can store an \verb'm'-by-\verb'n' matrix with a very large value of +\verb'm', since a CSC data structure takes $O(n+|{\bf A}|)$ memory, independent +of \verb'm', where $|{\bf A}|$ is the number of nonzeros in the matrix. It +cannot store a matrix with a huge \verb'n', and this structure is also +inefficient when $|{\bf A}|$ is much smaller than \verb'n'. In contrast, +SuiteSparse:GraphBLAS can store its matrices in {\em hypersparse} format, +taking only $O(|{\bf A}|)$ memory, independent of how it is stored (by row or +by column) and independent of both \verb'm' and \verb'n' +\cite{BulucGilbert08,BulucGilbert12}. + +In both the CSR and CSC formats, the matrix is held as a set of sparse vectors. +In non-hypersparse format, the set of sparse vectors is itself dense; all +vectors are present, even if they are empty. For example, an +\verb'm'-by-\verb'n' matrix in non-hypersparse CSC format contains \verb'n' +sparse vectors. Each column vector takes at least one integer to represent, +even for a column with no entries. This allows for quick lookup for a +particular vector, but the memory required is $O(n+|{\bf A}|)$. With a +hypersparse CSC format, the set of vectors itself is sparse, and columns with +no entries take no memory at all. The drawback of the hypersparse format is +that finding an arbitrary column vector \verb'j', such as for the computation +\verb'C=A(:,j)', takes $O(\log k)$ time if there $k \le n$ vectors in the data +structure. One advantage of the hypersparse structure is the memory required +for an \verb'm'-by-\verb'n' hypersparse CSC matrix is only $O(|{\bf A}|)$, +independent of \verb'm' and \verb'n'. Algorithms that must visit all non-empty +columns of a matrix are much faster when working with hypersparse matrices, +since empty columns can be skipped. + +The \verb'hyper_switch' parameter controls the hypersparsity of the internal +data structure for a matrix. The parameter is typically in the range 0 to 1. +The default is \verb'hyper_switch' = \verb'GxB_HYPER_DEFAULT', which is an +\verb'extern' \verb'const' \verb'double' value, currently set to 0.0625, or +1/16. This default ratio may change in the future. + +The \verb'hyper_switch' determines how the matrix is converted between the +hypersparse and non-hypersparse formats. Let $n$ be the number of columns of a +CSC matrix, or the number of rows of a CSR matrix. The matrix can have at most +$n$ non-empty vectors. + +Let $k$ be the actual number of non-empty vectors. That is, for the CSC +format, $k \le n$ is the number of columns that have at least one entry. Let +$h$ be the value of \verb'hyper_switch'. + +If a matrix is currently hypersparse, it can be converted to non-hypersparse if +the either condition $n \le 1$ or $k > 2nh$ holds, or both. Otherwise, it +stays hypersparse. Note that if $n \le 1$ the matrix is always stored as +non-hypersparse. + +If currently non-hypersparse, it can be converted to hypersparse if +both conditions $n > 1$ and $k \le nh$ hold. Otherwise, it stays +non-hypersparse. Note that if $n \le 1$ the matrix always remains +non-hypersparse. + +The default value of \verb'hyper_switch' is assigned at startup by +\verb'GrB_init', and can then be modified globally with \verb'GxB_set'. All +new matrices are created with the same \verb'hyper_switch', determined by the +global value. Once a particular matrix \verb'A' has been constructed, its +hypersparsity ratio can be modified from the default with: + + {\footnotesize + \begin{verbatim} + double hyper_switch = 0.2 ; + GxB_set (A, GxB_HYPER_SWITCH, hyper_switch) ; \end{verbatim}} + +To force a matrix to always be non-hypersparse, use \verb'hyper_switch' equal to +\verb'GxB_NEVER_HYPER'. To force a matrix to always stay hypersparse, set +\verb'hyper_switch' to \verb'GxB_ALWAYS_HYPER'. + +A \verb'GrB_Matrix' can thus be held in one of four formats: any combination of +hyper/non-hyper and CSR/CSC. All \verb'GrB_Vector' objects are always stored +in non-hypersparse CSC format. + +A new matrix created via \verb'GrB_Matrix_new' starts with $k=0$ and is created +in hypersparse form by default unless $n \le 1$ or if $h<0$, where $h$ is the +global \verb'hyper_switch' value. The matrix is created in either +\verb'GxB_BY_ROW' or \verb'GxB_BY_COL' format, as determined by the last call +to \verb'GxB_set(GxB_FORMAT,...)' or \verb'GrB_init'. + +A new matrix \verb'C' created via \verb'GrB_dup (&C,A)' inherits the CSR/CSC +format, hypersparsity format, and \verb'hyper_switch' from \verb'A'. + +%------------------------------------------------------------------------------- +\subsection{Bitmap matrices} +\label{bitmap_switch} +%------------------------------------------------------------------------------- + +By default, SuiteSparse:GraphBLAS switches between all four formats +(hypersparse, sparse, bitmap, and full) automatically. Let $d = |{\bf A}|/mn$ +for an $m$-by-$n$ matrix $\bf A$ with $|{\bf A}|$ entries. If the matrix is +currently in sparse or hypersparse format, and is modified so that $d$ exceeds +a given threshold, it is converted into bitmap format. The default threshold +is controlled by the \verb'GxB_BITMAP_SWITCH' setting, which can be set +globally, or for a particular matrix or vector. + +The default value of the switch to bitmap format depends on $\min(m,n)$, for a +matrix of size $m$-by-$n$. For the global setting, the bitmap switch is a +\verb'double' array of size \verb'GxB_NBITMAP_SWITCH'. The defaults are given +below: + +\vspace{0.2in} +{\small +\begin{tabular}{lll} +parameter & default & matrix sizes \\ +\hline +\verb'bitmap_switch [0]' & 0.04 & $\min(m,n) = 1$ (and all vectors) \\ +\verb'bitmap_switch [1]' & 0.05 & $\min(m,n) = 2$ \\ +\verb'bitmap_switch [2]' & 0.06 & $\min(m,n) = 3$ to 4 \\ +\verb'bitmap_switch [3]' & 0.08 & $\min(m,n) = 5$ to 8 \\ +\verb'bitmap_switch [4]' & 0.10 & $\min(m,n) = 9$ to 16\\ +\verb'bitmap_switch [5]' & 0.20 & $\min(m,n) = 17$ to 32\\ +\verb'bitmap_switch [6]' & 0.30 & $\min(m,n) = 33$ to 64 \\ +\verb'bitmap_switch [7]' & 0.40 & $\min(m,n) > 64$ \\ +\end{tabular} +} +\vspace{0.2in} + +That is, by default a \verb'GrB_Vector' is held in bitmap format if its density +exceeds 4\%. To change the global settings, do the following: + +{\footnotesize +\begin{verbatim} + double bswitch [GxB_NBITMAP_SWITCH] = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 } ; + GxB_set (GxB_BITMAP_SWITCH, bswitch) ; +\end{verbatim} +} + +If the matrix is currently in bitmap format, it is converted to full if all +entries are present, or to sparse/hypersparse if $d$ drops below $b/2$, if its +bitmap switch is $b$. A matrix or vector with $d$ between $b/2$ and $b$ +remains in its current format. + +%------------------------------------------------------------------------------- +\subsection{Parameter types} +%------------------------------------------------------------------------------- +The \verb'GxB_Option_Field' enumerated type gives the type of the \verb'field' +parameter for the second argument of \verb'GxB_set' and \verb'GxB_get', +for setting global options or matrix options. + +NOTE: The enum values have changed with v8.0.0, to be compatible with the +future updates from the v2.1 C API specification. + +{\footnotesize +\begin{verbatim} +\end{verbatim} } + +The \verb'GxB_FORMAT' field can be by row or by column, set to a value +with the type \verb'GxB_Format_Value': + +{\footnotesize +\begin{verbatim} +typedef enum +{ + GxB_BY_ROW = 0, // CSR: compressed sparse row format + GxB_BY_COL = 1 // CSC: compressed sparse column format +} +GxB_Format_Value ; +\end{verbatim} } + +The default format is given by the predefined value \verb'GxB_FORMAT_DEFAULT', +which is equal to \verb'GxB_BY_ROW'. +The default hypersparsity +ratio is 0.0625 (1/16), but this value may change in the future. + +Setting the \verb'GxB_HYPER_SWITCH' field to \verb'GxB_ALWAYS_HYPER' ensures a matrix +always stays hypersparse. If set to \verb'GxB_NEVER_HYPER', it always stays +non-hypersparse. At startup, \verb'GrB_init' defines the following initial +settings: + +{\footnotesize +\begin{verbatim} + GxB_set (GxB_HYPER_SWITCH, GxB_HYPER_DEFAULT) ; + GxB_set (GxB_FORMAT, GxB_BY_ROW) ; +\end{verbatim} } + +That is, by default, all new matrices are held by row in CSR format (except +for \verb'n-by-1' matrices; see \verb'GrB_Matrix_new'). +If a matrix has fewer than $n/16$ +columns, it can be converted to hypersparse format. If it has more than $n/8$ +columns, it can be converted to non-hypersparse format. These options can be +changed for all future matrices with \verb'GxB_set'. For example, to change +all future matrices to be in non-hypersparse CSC when created, use: + +{\footnotesize +\begin{verbatim} + GxB_set (GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; + GxB_set (GxB_FORMAT, GxB_BY_COL) ; +\end{verbatim} } + +Then if a particular matrix needs a different format, then (as an example): + +{\footnotesize +\begin{verbatim} + GxB_set (A, GxB_HYPER_SWITCH, 0.1) ; + GxB_set (A, GxB_FORMAT, GxB_BY_ROW) ; +\end{verbatim} } + +This changes the matrix \verb'A' so that it is stored by row, and it is +converted from non-hypersparse to hypersparse format if it has fewer than 10\% +non-empty columns. If it is hypersparse, it is a candidate for conversion to +non-hypersparse if has 20\% or more non-empty columns. If it has between 10\% +and 20\% non-empty columns, it remains in its current format. +MATLAB only supports a non-hypersparse CSC format. The format in +SuiteSparse:GraphBLAS that is equivalent to the MATLAB format is: + +{\footnotesize +\begin{verbatim} + GrB_init (...) ; + GxB_set (GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; + GxB_set (GxB_FORMAT, GxB_BY_COL) ; + // no subsequent use of GxB_HYPER_SWITCH or GxB_FORMAT +\end{verbatim} } + +The \verb'GxB_HYPER_SWITCH' and \verb'GxB_FORMAT' options should be considered as +suggestions from the user application as to how SuiteSparse:GraphBLAS can +obtain the best performance for a particular application. +SuiteSparse:GraphBLAS is free to ignore any of these suggestions, both now and +in the future, and the available options and formats may be augmented in the +future. Any prior options no longer needed in future versions of +SuiteSparse:GraphBLAS will be silently ignored, so the use these options is +safe for future updates. + +The sparsity status of a matrix can be queried with the following, which +returns a value of \verb'GxB_HYPERSPARSE' \verb'GxB_SPARSE' \verb'GxB_BITMAP' +or \verb'GxB_FULL'. + +{\footnotesize +\begin{verbatim} + int sparsity ; + GxB_get (A, GxB_SPARSITY_STATUS, &sparsity) ; \end{verbatim}} + +The sparsity format of a matrix can be controlled with \verb'GxB_set', which +can be any mix (a sum or bitwise or) of \verb'GxB_HYPERSPARSE' +\verb'GxB_SPARSE' \verb'GxB_BITMAP', and \verb'GxB_FULL'. By default, a matrix +or vector can be held in any format, with the default setting +\verb'GxB_AUTO_SPARSITY', which is equal to \verb'GxB_HYPERSPARSE' + +\verb'GxB_SPARSE' + \verb'GxB_BITMAP' + \verb'GxB_FULL'. To enable a matrix to +take on just \verb'GxB_SPARSE' or \verb'GxB_FULL' formats, but not +\verb'GxB_HYPERSPARSE' or \verb'GxB_BITMAP', for example, use the following: + +{\footnotesize +\begin{verbatim} + GxB_set (A, GxB_SPARSITY_CONTROL, GxB_SPARSE + GxB_FULL) ; \end{verbatim}} + +In this case, SuiteSparse:GraphBLAS will hold the matrix in sparse format +(\verb'CSC' or \verb'CSC', depending on its \verb'GxB_FORMAT'), unless all +entries are present, in which case it will be converted to full format. + +Only the least 4 bits of the sparsity control are considered, so the +formats can be bitwise negated. For example, to allow for any format +except full: + +{\footnotesize +\begin{verbatim} + GxB_set (A, GxB_SPARSITY_CONTROL, ~GxB_FULL) ; \end{verbatim}} + +%------------------------------------------------------------------------------- +\subsection{{\sf GxB\_BURBLE}, {\sf GxB\_PRINTF}, {\sf GxB\_FLUSH}: diagnostics} +%------------------------------------------------------------------------------- + +\verb'GxB_set (GxB_BURBLE, ...)' controls the burble setting. It can also be +controlled via \verb'GrB.burble(b)' in the MATLAB/Octave interface. + +{\footnotesize +\begin{verbatim} + GxB_set (GxB_BURBLE, true) ; // enable burble + GxB_set (GxB_BURBLE, false) ; // disable burble \end{verbatim}} + +If enabled, SuiteSparse:GraphBLAS reports which internal kernels it uses, and +how much time is spent. If you see the word \verb'generic', it means that +SuiteSparse:GraphBLAS was unable to use its JIT kernels, or its faster kernels +in \verb'Source/FactoryKernels', but used a generic kernel that relies on +function pointers. This is done for user-defined types and operators, and when +typecasting is performed, and it is typically slower than the JIT kernels +or kernels in \verb'Source/FactoryKernels'. + +If you see a lot of \verb'wait' statements, it may mean that a lot of time is +spent finishing a matrix or vector. This may be the result of an inefficient +use of the \verb'setElement' and \verb'assign' methods. If this occurs you +might try changing the sparsity format of a vector or matrix to +\verb'GxB_BITMAP', assuming there's enough space for it. + +\verb'GxB_set (GxB_PRINTF, printf)' allows the user application to change the +function used to print diagnostic output. This also controls the output of the +\verb'GxB_*print' functions. By default this parameter is \verb'NULL', in +which case the ANSI C11 \verb'printf' function is used. The parameter is a +function pointer with the same signature as the ANSI C11 \verb'printf' +function. The MATLAB/Octave interface to GraphBLAS sets it to \verb'mexPrintf' +so that GraphBLAS can print to the MATLAB/Octave Command Window. + +After each call to the \verb'printf' function, an optional +\verb'flush' function is called, which is \verb'NULL' by default. If +\verb'NULL', the function is not used. This can be changed with +\verb'GxB_set (GxB_FLUSH, flush)'. The \verb'flush' function takes no +arguments, and returns an \verb'int' which is 0 if successful, or any nonzero +value on failure (the same output as the ANSI C11 \verb'fflush' function, +except that \verb'flush' has no inputs). + +%------------------------------------------------------------------------------- +\subsection{Other global options} +%------------------------------------------------------------------------------- + +\verb'GxB_MODE' can only be +queried by \verb'GxB_get'; it cannot be modified by \verb'GxB_set'. The mode +is the value passed to \verb'GrB_init' (blocking or non-blocking). + +All threads in the same user application share the same global options, +including hypersparsity, bitmap options, and CSR/CSC format determined by +\verb'GxB_set', and the blocking mode determined by \verb'GrB_init'. +Specific format and hypersparsity parameters of each matrix are specific to +that matrix and can be independently changed. + +The \verb'GxB_LIBRARY_*' options can be used with \verb'GxB_get' to query the +current implementation. For all of these, \verb'GxB_get' returns a string +(\verb'char *'), except for \verb'GxB_LIBRARY_VERSION', which takes as input an +\verb'int' array of size three. The \verb'GxB_API_*' options can be used with +\verb'GxB_get' to query the current GraphBLAS C API Specification. For all of +these, \verb'GxB_get' returns a string (\verb'char *'), except for +\verb'GxB_API_VERSION', which takes as input an \verb'int' array of size three. + +%=============================================================================== +\subsection{{\sf GxB\_Global\_Option\_set:} set a global option} +%=============================================================================== + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_set // set a global default option +( + const GxB_Option_Field field, // option to change + ... // value to change it to +) ; +\end{verbatim} } \end{mdframed} + +This usage of \verb'GxB_set' sets the value of a global option. +The \verb'field' parameter can be +\verb'GxB_HYPER_SWITCH', +\verb'GxB_BITMAP_SWITCH', +\verb'GxB_FORMAT', +\verb'GxB_NTHREADS', +\verb'GxB_CHUNK', +\verb'GxB_BURBLE', +\verb'GxB_PRINTF', +\verb'GxB_FLUSH', +\verb'GxB_PRINT_1BASED', \newline +\verb'GxB_JIT_C_COMPILER_NAME', +\verb'GxB_JIT_C_COMPILER_FLAGS', +\verb'GxB_JIT_C_LINKER_FLAGS', +\verb'GxB_JIT_C_LIBRRIES', +\verb'GxB_JIT_C_PREFACE', +\verb'GxB_JIT_C_CONTROL', +\verb'GxB_JIT_USE_CMAKE', +\verb'GxB_JIT_ERROR_LOG', or +\verb'GxB_JIT_CACHE_PATH'. + +For example, the following usage sets the global hypersparsity ratio to 0.2, +the format of future matrices to \verb'GxB_BY_COL', the maximum number +of threads to 4, the chunk size to 10000, and enables the burble. +No existing matrices are changed. + +{\footnotesize +\begin{verbatim} + GxB_set (GxB_HYPER_SWITCH, 0.2) ; + GxB_set (GxB_FORMAT, GxB_BY_COL) ; + GxB_set (GxB_NTHREADS, 4) ; + GxB_set (GxB_CHUNK, (double) 10000) ; + GxB_set (GxB_BURBLE, true) ; + GxB_set (GxB_PRINTF, mexPrintf) ; +\end{verbatim} } + +\newpage +%=============================================================================== +\subsection{{\sf GxB\_Matrix\_Option\_set:} set a matrix option} +%=============================================================================== + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_set // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + const GxB_Option_Field field, // option to change + ... // value to change it to +) ; +\end{verbatim} } \end{mdframed} + +This usage of \verb'GxB_set' sets the value of a matrix option, for a +particular matrix. +The \verb'field' parameter can be +\verb'GxB_HYPER_SWITCH', +\verb'GxB_BITMAP_SWITCH', +\verb'GxB_SPARSITY_CONTROL', or +\verb'GxB_FORMAT'. +This example usage sets the hypersparsity ratio to 0.2, and the +format of \verb'GxB_BY_COL', for a particular matrix \verb'A', and sets the +sparsity control to \verb'GxB_SPARSE+GxB_FULL' (allowing the matrix to be held +in CSC or FullC formats, but not BitmapC or HyperCSC): + +{\footnotesize +\begin{verbatim} + GxB_set (A, GxB_HYPER_SWITCH, 0.2) ; + GxB_set (A, GxB_FORMAT, GxB_BY_COL) ; + GxB_set (A, GxB_SPARSITY_CONTROL, GxB_SPARSE + GxB_FULL) ; +\end{verbatim} } + +SuiteSparse:GraphBLAS currently applies these changes immediately, but since +they are simply hints, future versions of SuiteSparse:GraphBLAS may delay the +change in format if it can obtain better performance. If the setting is just +\verb'GxB_FULL' and some entries are missing, then the matrix is held in bitmap +format. For best performance, the matrix option should be set as soon as it is +created with \verb'GrB_Matrix_new', so the internal transformation takes less +time. If an error occurs, \verb'GrB_error(&err,A)' returns details about the +error. + +%=============================================================================== +\subsection{{\sf GxB\_Desc\_set:} set a {\sf GrB\_Descriptor} value} +%=============================================================================== +\label{gxbset} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + const GrB_Desc_Field field, // parameter to change + ... // value to change it to +) ; +\end{verbatim} } \end{mdframed} + +This usage is similar to \verb'GrB_Descriptor_set', just with a name that is +consistent with the other usages of this generic function. Unlike +\verb'GrB_Descriptor_set', the \verb'field' may also be +\verb'GxB_SORT', \verb'GxB_COMPRESSION', or +\verb'GxB_IMPORT'. Refer to Sections~\ref{descriptor_set}~and~\ref{desc_set} +for details. If an error occurs, \verb'GrB_error(&err,desc)' returns details +about the error. + +\newpage +%=============================================================================== +\subsection{{\sf GxB\_Global\_Option\_get:} retrieve a global option} +%=============================================================================== +\label{gxbget} + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_get // gets the current global default option +( + const GxB_Option_Field field, // option to query + ... // return value of the global option +) ; +\end{verbatim} } \end{mdframed} + +This usage of \verb'GxB_get' retrieves the value of a global option. The +\verb'field' parameter can be one of the following: + +\vspace{0.2in} +{\footnotesize +\begin{tabular}{ll} + \hline + \verb'GxB_HYPER_SWITCH' & sparse/hyper setting \\ + \verb'GxB_BITMAP_SWITCH' & bitmap/sparse setting \\ + \verb'GxB_FORMAT' & by row/col setting \\ + \verb'GxB_MODE' & blocking / non-blocking \\ + \verb'GxB_NTHREADS' & default number of threads \\ + \verb'GxB_CHUNK' & default chunk size \\ + \verb'GxB_BURBLE' & burble setting \\ + \verb'GxB_PRINTF' & printf function \\ + \verb'GxB_FLUSH' & flush function \\ + \verb'GxB_PRINT_1BASED' & for printing matrices/vectors \\ + \hline + \verb'GxB_JIT_C_COMPILER_NAME' & C compiler for JIT kernels \\ + \verb'GxB_JIT_C_COMPILER_FLAGS' & flags for the C compiler \\ + \verb'GxB_JIT_C_LINKER_FLAGS' & link flags for the C compiler \\ + \verb'GxB_JIT_C_LIBRARIES' & libraries to link against \\ + \verb'GxB_JIT_C_CMAKE_LIBS' & libraries to link against \\ + \verb'GxB_JIT_C_PREFACE' & preface for JIT kernels \\ + \verb'GxB_JIT_C_CONTROL' & CPU JIT control \\ + \verb'GxB_JIT_USE_CMAKE' & CPU JIT: use cmake or not \\ + \verb'GxB_JIT_ERROR_LOG' & error log file \\ + \verb'GxB_JIT_CACHE_PATH' & folder with compiled kernels \\ + \hline + \verb'GxB_LIBRARY_NAME' & the string + \verb'"SuiteSparse:GraphBLAS"' \\ + \verb'GxB_LIBRARY_VERSION' & \verb'int' array of size 3 \\ + \verb'GxB_LIBRARY_DATE' & date of release \\ + \verb'GxB_LIBRARY_ABOUT' & author, copyright \\ + \verb'GxB_LIBRARY_LICENSE' & license for the library \\ + \verb'GxB_LIBRARY_COMPILE_DATE' & date of compilation \\ + \verb'GxB_LIBRARY_COMPILE_TIME' & time of compilation \\ + \verb'GxB_LIBRARY_OPENMP' & library compiled with OpenMP\\ + \verb'GxB_LIBRARY_URL' & URL of the library \\ + \hline + \verb'GxB_API_VERSION' & GraphBLAS C API Specification Version \\ + \verb'GxB_API_DATE' & date of the C API Spec. \\ + \verb'GxB_API_ABOUT' & about of the C API Spec. \\ + \verb'GxB_API_URL' & URL of the specification \\ + \hline +\end{tabular} +} +\vspace{0.2in} + +{\bf NOTE:} The strings returned by \verb'GxB_get' are \verb'const char *'. +They are ``owned'' by the GraphBLAS library itself, not by the user +application. They cannot be freed or modified in any way. A subsequent call +to \verb'GxB_set' can free them and reallocate them, so they are only valid +until that point. If you want to keep a string returned by \verb'GxB_get', +make a copy immediately after calling \verb'GxB_get', into a character array +owned by the user application. The \verb'GxB_JIT_*' strings are the only ones +this affects. + +Below is an example: + +{\footnotesize +\begin{verbatim} + double h ; + GxB_get (GxB_HYPER_SWITCH, &h) ; + printf ("hyper_switch = %g for all new matrices\n", h) ; + + double b [GxB_BITMAP_SWITCH] ; + GxB_get (GxB_BITMAP_SWITCH, b) ; + for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) + { + printf ("bitmap_switch [%d] = %g ", k, b [k]) ; + if (k == 0) + { + printf ("for vectors and matrices with 1 row or column\n") ; + } + else if (k == GxB_NBITMAP_SWITCH - 1) + { + printf ("for matrices with min dimension > %d\n", 1 << (k-1)) ; + } + else + { + printf ("for matrices with min dimension %d to %d\n", + (1 << (k-1)) + 1, 1 << k) ; + } + } + + GxB_Format_Value s ; + GxB_get (GxB_FORMAT, &s) ; + if (s == GxB_BY_COL) printf ("all new matrices are stored by column\n") ; + else printf ("all new matrices are stored by row\n") ; + + GrB_mode mode ; + GxB_get (GxB_MODE, &mode) ; + if (mode == GrB_BLOCKING) printf ("GrB_init(GrB_BLOCKING) was called.\n") ; + else printf ("GrB_init(GrB_NONBLOCKING) was called.\n") ; + + int nthreads_max ; + GxB_get (GxB_NTHREADS, &nthreads_max) ; + printf ("max # of threads to use: %d\n", nthreads_max) ; + + double chunk ; + GxB_get (GxB_CHUNK, &chunk) ; + printf ("chunk size: %g\n", chunk) ; + + char *name ; + int ver [3] ; + GxB_get (GxB_LIBRARY_NAME, &name) ; + GxB_get (GxB_LIBRARY_VERSION, ver) ; + printf ("Library %s, version %d.%d.%d\n", name, ver [0], ver [1], ver [2]) ; \end{verbatim} } + +%=============================================================================== +\subsection{{\sf GxB\_Matrix\_Option\_get:} retrieve a matrix option} +%=============================================================================== + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_get // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + ... // return value of the matrix option +) ; +\end{verbatim} } \end{mdframed} + +This usage of \verb'GxB_get' retrieves the value of a matrix option. The +\verb'field' parameter can be +\verb'GxB_HYPER_SWITCH', +\verb'GxB_BITMAP_SWITCH', +\verb'GxB_SPARSITY_CONTROL', +\verb'GxB_SPARSITY_STATUS', +or +\verb'GxB_FORMAT'. +For example: + +\vspace{-0.1in} +{\footnotesize +\begin{verbatim} + double h, b ; + int sparsity, scontrol ; + GxB_get (A, GxB_SPARSITY_STATUS, &sparsity) ; + GxB_get (A, GxB_HYPER_SWITCH, &h) ; + printf ("matrix A has hyper_switch = %g\n", h) ; + GxB_get (A, GxB_BITMAP_SWITCH, &b) ; + printf ("matrix A has bitmap_switch = %g\n", b) ; + switch (sparsity) + { + case GxB_HYPERSPARSE: printf ("matrix A is hypersparse\n") ; break ; + case GxB_SPARSE: printf ("matrix A is sparse\n" ) ; break ; + case GxB_BITMAP: printf ("matrix A is bitmap\n" ) ; break ; + case GxB_FULL: printf ("matrix A is full\n" ) ; break ; + } + GxB_Format_Value s ; + GxB_get (A, GxB_FORMAT, &s) ; + printf ("matrix A is stored by %s\n", (s == GxB_BY_COL) ? "col" : "row") ; + GxB_get (A, GxB_SPARSITY_CONTROL, &scontrol) ; + if (scontrol & GxB_HYPERSPARSE) printf ("A may become hypersparse\n") ; + if (scontrol & GxB_SPARSE ) printf ("A may become sparse\n") ; + if (scontrol & GxB_BITMAP ) printf ("A may become bitmap\n") ; + if (scontrol & GxB_FULL ) printf ("A may become full\n") ; \end{verbatim} } + +%=============================================================================== +\subsection{{\sf GxB\_Desc\_get:} retrieve a {\sf GrB\_Descriptor} value} +%=============================================================================== + +\begin{mdframed}[userdefinedwidth=6in] +{\footnotesize +\begin{verbatim} +GrB_Info GxB_get // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field, // parameter to query + ... // value of the parameter +) ; +\end{verbatim} } \end{mdframed} + +This usage is the same as \verb'GxB_Desc_get'. The \verb'field' parameter can +be \verb'GrB_OUTP', \verb'GrB_MASK', \verb'GrB_INP0', \verb'GrB_INP1', +\verb'GxB_AxB_METHOD', +\verb'GxB_SORT', +\verb'GxB_COMPRESSION', or +\verb'GxB_IMPORT'. +Refer to Section~\ref{desc_get} for details. + +%=============================================================================== +\subsection{Summary of usage of {\sf GxB\_set} and {\sf GxB\_get}} +%=============================================================================== + +The different usages of \verb'GxB_set' and \verb'GxB_get' are summarized below. + +\noindent +To set/get the global options: + + {\footnotesize + \begin{verbatim} + GxB_set (GxB_HYPER_SWITCH, double h) ; + GxB_set (GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; + GxB_set (GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; + GxB_get (GxB_HYPER_SWITCH, double *h) ; + double b [GxB_NBITMAP_SWITCH] ; + GxB_set (GxB_BITMAP_SWITCH, b) ; + GxB_set (GxB_BITMAP_SWITCH, NULL) ; // set defaults + GxB_get (GxB_BITMAP_SWITCH, b) ; + GxB_set (GxB_FORMAT, GxB_BY_ROW) ; + GxB_set (GxB_FORMAT, GxB_BY_COL) ; + GxB_get (GxB_FORMAT, GxB_Format_Value *s) ; + GxB_set (GxB_NTHREADS, int nthreads_max) ; + GxB_get (GxB_NTHREADS, int *nthreads_max) ; + GxB_set (GxB_CHUNK, double chunk) ; + GxB_get (GxB_CHUNK, double *chunk) ; + GxB_set (GxB_BURBLE, bool burble) ; + GxB_get (GxB_BURBLE, bool *burble) ; + GxB_set (GxB_PRINTF, void *printf_function) ; + GxB_get (GxB_PRINTF, void **printf_function) ; + GxB_set (GxB_FLUSH, void *flush_function) ; + GxB_get (GxB_FLUSH, void **flush_function) ; + GxB_set (GxB_PRINT_1BASED, bool onebased) ; + GxB_get (GxB_PRINT_1BASED, bool *onebased) ; + + GxB_set (GxB_JIT_C_COMPILER_NAME, char *compiler) ; + GxB_get (GxB_JIT_C_COMPILER_NAME, char **compiler) ; + GxB_set (GxB_JIT_C_COMPILER_FLAGS, char *flags) ; + GxB_get (GxB_JIT_C_COMPILER_FLAGS, char **flags) ; + GxB_set (GxB_JIT_C_LINKER_FLAGS, char *flags) ; + GxB_get (GxB_JIT_C_LINKER_FLAGS, char **flags) ; + GxB_set (GxB_JIT_C_LIBRARIES, char *libraries) ; + GxB_get (GxB_JIT_C_LIBRARIES, char **libraries) ; + GxB_set (GxB_JIT_C_CMAKE_LIBS, char *libraries) ; + GxB_get (GxB_JIT_C_CMAKE_LIBS, char **libraries) ; + GxB_set (GxB_JIT_C_PREFACE, char *preface) ; + GxB_get (GxB_JIT_C_PREFACE, char **preface) ; + GxB_set (GxB_JIT_ERROR_LOG, char *error_log) ; + GxB_get (GxB_JIT_ERROR_LOG, char **error_log) ; + GxB_set (GxB_JIT_CACHE_PATH, char *cache) ; + GxB_get (GxB_JIT_CACHE_PATH, char **cache) ; + GxB_set (GxB_JIT_USE_CMAKE, int use_cmake) ; + GxB_get (GxB_JIT_USE_CMAKE, int *use_cmake) ; + GxB_set (GxB_JIT_C_CONTROL, int control) ; + GxB_get (GxB_JIT_C_CONTROL, int *control) ; + \end{verbatim} } + +\noindent +To get global options that can be queried but not modified: + + {\footnotesize + \begin{verbatim} + GxB_get (GxB_MODE, GrB_Mode *mode) ; + GxB_get (GxB_LIBRARY_NAME, char **) ; + GxB_get (GxB_LIBRARY_VERSION, int *) ; + GxB_get (GxB_LIBRARY_DATE, char **) ; + GxB_get (GxB_LIBRARY_ABOUT, char **) ; + GxB_get (GxB_LIBRARY_LICENSE, char **) ; + GxB_get (GxB_LIBRARY_COMPILE_DATE, char **) ; + GxB_get (GxB_LIBRARY_COMPILE_TIME, char **) ; + GxB_get (GxB_LIBRARY_OPENMP, bool *) ; + GxB_get (GxB_LIBRARY_URL, char **) ; + GxB_get (GxB_API_VERSION, int *) ; + GxB_get (GxB_API_DATE, char **) ; + GxB_get (GxB_API_ABOUT, char **) ; + GxB_get (GxB_API_URL, char **) ; \end{verbatim} } + +\noindent +To set/get a matrix option or status + + {\footnotesize + \begin{verbatim} + GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, double h) ; + GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; + GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; + GxB_get (GrB_Matrix A, GxB_HYPER_SWITCH, double *h) ; + GxB_set (GrB_Matrix A, GxB_BITMAP_SWITCH, double b) ; + GxB_get (GrB_Matrix A, GxB_BITMAP_SWITCH, double *b) ; + GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_ROW) ; + GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_COL) ; + GxB_get (GrB_Matrix A, GxB_FORMAT, GxB_Format_Value *s) ; + GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; + GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, scontrol) ; + GxB_get (GrB_Matrix A, GxB_SPARSITY_CONTROL, int *scontrol) ; + GxB_get (GrB_Matrix A, GxB_SPARSITY_STATUS, int *sparsity) ; \end{verbatim} } + +\noindent +To set/get a vector option or status: + + {\footnotesize + \begin{verbatim} + GxB_set (GrB_Vector v, GxB_BITMAP_SWITCH, double b) ; + GxB_get (GrB_Vector v, GxB_BITMAP_SWITCH, double *b) ; + GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_ROW) ; + GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_COL) ; + GxB_get (GrB_Vector v, GxB_FORMAT, GxB_Format_Value *s) ; + GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; + GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, scontrol) ; + GxB_get (GrB_Vector v, GxB_SPARSITY_CONTROL, int *scontrol) ; + GxB_get (GrB_Vector v, GxB_SPARSITY_STATUS, int *sparsity) ; \end{verbatim} } + +\noindent +To set/get a descriptor field: + + {\footnotesize + \begin{verbatim} + GxB_set (GrB_Descriptor d, GrB_OUTP, GxB_DEFAULT) ; + GxB_set (GrB_Descriptor d, GrB_OUTP, GrB_REPLACE) ; + GxB_get (GrB_Descriptor d, GrB_OUTP, GrB_Desc_Value *v) ; + GxB_set (GrB_Descriptor d, GrB_MASK, GxB_DEFAULT) ; + GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP) ; + GxB_set (GrB_Descriptor d, GrB_MASK, GrB_STRUCTURE) ; + GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP+GrB_STRUCTURE) ; + GxB_get (GrB_Descriptor d, GrB_MASK, GrB_Desc_Value *v) ; + GxB_set (GrB_Descriptor d, GrB_INP0, GxB_DEFAULT) ; + GxB_set (GrB_Descriptor d, GrB_INP0, GrB_TRAN) ; + GxB_get (GrB_Descriptor d, GrB_INP0, GrB_Desc_Value *v) ; + GxB_set (GrB_Descriptor d, GrB_INP1, GxB_DEFAULT) ; + GxB_set (GrB_Descriptor d, GrB_INP1, GrB_TRAN) ; + GxB_get (GrB_Descriptor d, GrB_INP1, GrB_Desc_Value *v) ; + GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_DEFAULT) ; + GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_GUSTAVSON) ; + GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_HASH) ; + GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_SAXPY) ; + GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_DOT) ; + GxB_get (GrB_Descriptor d, GrB_AxB_METHOD, GrB_Desc_Value *v) ; + GxB_set (GrB_Descriptor d, GxB_SORT, sort) ; + GxB_get (GrB_Descriptor d, GxB_SORT, int *sort) ; + GxB_set (GrB_Descriptor d, GxB_COMPRESSION, GxB_FAST_IMPORT) ; + GxB_set (GrB_Descriptor d, GxB_COMPRESSION, GxB_SECURE_IMPORT) ; + GxB_get (GrB_Descriptor d, GxB_COMPRESSION, GrB_Desc_Value *method) ; + GxB_set (GrB_Descriptor d, GxB_IMPORT, int method) ; + GxB_get (GrB_Descriptor d, GxB_IMPORT, int *method) ; \end{verbatim} } \newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -8985,7 +10692,7 @@ \subsection{{\sf GrB\_mxm:} matrix-matrix multiply} %=========================== function \verb'GB_spec_accum_mask.m', discussed in Section~\ref{accummask}. \paragraph{\bf Performance considerations:} -Suppose all matrices are in \verb'GrB_COLMAJOR' format, and \verb'B' is extremely +Suppose all matrices are in \verb'GxB_BY_COL' format, and \verb'B' is extremely sparse but \verb'A' is not as sparse. Then computing \verb'C=A*B' is very fast, and much faster than when \verb'A' is extremely sparse. For example, if \verb'A' is square and \verb'B' is a column vector that is all nonzero except @@ -9045,11 +10752,11 @@ \subsection{{\sf GrB\_vxm:} vector-matrix multiply} %=========================== terms are column vectors instead of matrices. \paragraph{\bf Performance considerations:} % u'=u'*A -If the \verb'GrB_STORAGE_ORIENTATION_HINT' of \verb'A' is \verb'GrB_ROWMAJOR', and the default +If the \verb'GxB_FORMAT' of \verb'A' is \verb'GxB_BY_ROW', and the default descriptor is used (\verb'A' is not transposed), then \verb'GrB_vxm' is faster than than \verb'GrB_mxv' with its default descriptor, when the vector \verb'u' is very sparse. -However, if the \verb'GrB_STORAGE_ORIENTATION_HINT' of \verb'A' is \verb'GrB_COLMAJOR', then +However, if the \verb'GxB_FORMAT' of \verb'A' is \verb'GxB_BY_COL', then \verb'GrB_mxv' with its default descriptor is faster than \verb'GrB_vxm' with its default descriptor, when the vector \verb'u' is very sparse. Using the non-default \verb'GrB_TRAN' descriptor for \verb'A' makes the @@ -9098,11 +10805,11 @@ \subsection{{\sf GrB\_mxv:} matrix-vector multiply} %=========================== \paragraph{\bf Performance considerations:} % u=A*u Refer to the discussion of \verb'GrB_vxm'. In SuiteSparse:GraphBLAS, \verb'GrB_mxv' is very efficient when \verb'u' is sparse or dense, when the -default descriptor is used, and when the matrix is \verb'GrB_COLMAJOR'. When +default descriptor is used, and when the matrix is \verb'GxB_BY_COL'. When \verb'u' is very sparse and \verb'GrB_INP0' is set to its non-default \verb'GrB_TRAN', then this method is not efficient if the matrix is in -\verb'GrB_COLMAJOR' format. If an application needs to perform \verb"A'*u" -repeatedly where \verb'u' is very sparse, then use the \verb'GrB_ROWMAJOR' format +\verb'GxB_BY_COL' format. If an application needs to perform \verb"A'*u" +repeatedly where \verb'u' is very sparse, then use the \verb'GxB_BY_ROW' format for \verb'A' instead. \newpage @@ -9631,9 +11338,9 @@ \subsubsection{{\sf GrB\_Matrix\_extract:} extract submatrix from matrix} \paragraph{\bf Performance considerations:} % C=A(I,J) If \verb'A' is not transposed via input descriptor: if \verb'|I|' is small, -then it is fastest if \verb'A' is \verb'GrB_ROWMAJOR'; if +then it is fastest if \verb'A' is \verb'GxB_BY_ROW'; if \verb'|J|' is small, then it is fastest if \verb'A' is -\verb'GrB_COLMAJOR'. The opposite is true if \verb'A' is transposed. +\verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage %------------------------------------------------------------------------------- @@ -9673,7 +11380,7 @@ \subsubsection{{\sf GrB\_Col\_extract:} extract column vector from matrix} \paragraph{\bf Performance considerations:} % w = A(I,j) If \verb'A' is not transposed: it is fastest if the format of \verb'A' is -\verb'GrB_COLMAJOR'. The opposite is true if \verb'A' is transposed. +\verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage %=============================================================================== @@ -9841,8 +11548,8 @@ \subsubsection{{\sf GxB\_Matrix\_subassign:} assign to a submatrix } \paragraph{\bf Performance considerations:} % C(I,J) = A If \verb'A' is not transposed: if \verb'|I|' is small, then it is fastest if -the format of \verb'C' is \verb'GrB_ROWMAJOR'; if \verb'|J|' is small, then it is -fastest if the format of \verb'C' is \verb'GrB_COLMAJOR'. The opposite is true +the format of \verb'C' is \verb'GxB_BY_ROW'; if \verb'|J|' is small, then it is +fastest if the format of \verb'C' is \verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage @@ -9878,9 +11585,9 @@ \subsubsection{{\sf GxB\_Col\_subassign:} assign to a sub-column of a matrix} \paragraph{\bf Performance considerations:} % C(I,j) = u \verb'GxB_Col_subassign' is much faster than \verb'GxB_Row_subassign' if the -format of \verb'C' is \verb'GrB_COLMAJOR'. \verb'GxB_Row_subassign' is much +format of \verb'C' is \verb'GxB_BY_COL'. \verb'GxB_Row_subassign' is much faster than \verb'GxB_Col_subassign' if the format of \verb'C' is -\verb'GrB_ROWMAJOR'. +\verb'GxB_BY_ROW'. % \newpage %------------------------------------------------------------------------------- @@ -9915,9 +11622,9 @@ \subsubsection{{\sf GxB\_Row\_subassign:} assign to a sub-row of a matrix} \paragraph{\bf Performance considerations:} % C(i,J) = u' \verb'GxB_Col_subassign' is much faster than \verb'GxB_Row_subassign' if the -format of \verb'C' is \verb'GrB_COLMAJOR'. \verb'GxB_Row_subassign' is much +format of \verb'C' is \verb'GxB_BY_COL'. \verb'GxB_Row_subassign' is much faster than \verb'GxB_Col_subassign' if the format of \verb'C' is -\verb'GrB_ROWMAJOR'. +\verb'GxB_BY_ROW'. % \newpage %------------------------------------------------------------------------------- @@ -9985,7 +11692,7 @@ \subsubsection{{\sf GxB\_Matrix\_subassign\_$<$type$>$:} assign a scalar to a su The \verb' x' notation is otherwise the same as \verb'GrB_Matrix_setElement' (see Section~\ref{matrix_setElement}). Any value can be passed to this function and its type will be detected, via the -\verb'_Generic' feature of C11. For a user-defined type, \verb'x' is a +\verb'_Generic' feature of ANSI C11. For a user-defined type, \verb'x' is a \verb'void *' pointer that points to a memory space holding a single entry of a scalar that has exactly the same user-defined type as the matrix \verb'C'. This user-defined type must exactly match the user-defined type of \verb'C' @@ -10001,8 +11708,8 @@ \subsubsection{{\sf GxB\_Matrix\_subassign\_$<$type$>$:} assign a scalar to a su \paragraph{\bf Performance considerations:} % C(I,J) = scalar If \verb'A' is not transposed: if \verb'|I|' is small, then it is fastest if -the format of \verb'C' is \verb'GrB_ROWMAJOR'; if \verb'|J|' is small, then it is -fastest if the format of \verb'C' is \verb'GrB_COLMAJOR'. The opposite is true +the format of \verb'C' is \verb'GxB_BY_ROW'; if \verb'|J|' is small, then it is +fastest if the format of \verb'C' is \verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage @@ -10110,8 +11817,8 @@ \subsubsection{{\sf GrB\_Matrix\_assign:} assign to a submatrix } \paragraph{\bf Performance considerations:} % C(I,J) = A If \verb'A' is not transposed: if \verb'|I|' is small, then it is fastest if -the format of \verb'C' is \verb'GrB_ROWMAJOR'; if \verb'|J|' is small, then it is -fastest if the format of \verb'C' is \verb'GrB_COLMAJOR'. The opposite is true +the format of \verb'C' is \verb'GxB_BY_ROW'; if \verb'|J|' is small, then it is +fastest if the format of \verb'C' is \verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage @@ -10149,8 +11856,8 @@ \subsubsection{{\sf GrB\_Col\_assign:} assign to a sub-column of a matrix} \paragraph{\bf Performance considerations:} % C(I,j) = u \verb'GrB_Col_assign' is much faster than \verb'GrB_Row_assign' if the format -of \verb'C' is \verb'GrB_COLMAJOR'. \verb'GrB_Row_assign' is much faster than -\verb'GrB_Col_assign' if the format of \verb'C' is \verb'GrB_ROWMAJOR'. +of \verb'C' is \verb'GxB_BY_COL'. \verb'GrB_Row_assign' is much faster than +\verb'GrB_Col_assign' if the format of \verb'C' is \verb'GxB_BY_ROW'. \newpage %------------------------------------------------------------------------------- @@ -10187,8 +11894,8 @@ \subsubsection{{\sf GrB\_Row\_assign:} assign to a sub-row of a matrix} \paragraph{\bf Performance considerations:} % C(i,J) = u' \verb'GrB_Col_assign' is much faster than \verb'GrB_Row_assign' if the format -of \verb'C' is \verb'GrB_COLMAJOR'. \verb'GrB_Row_assign' is much faster than -\verb'GrB_Col_assign' if the format of \verb'C' is \verb'GrB_ROWMAJOR'. +of \verb'C' is \verb'GxB_BY_COL'. \verb'GrB_Row_assign' is much faster than +\verb'GrB_Col_assign' if the format of \verb'C' is \verb'GxB_BY_ROW'. \newpage %------------------------------------------------------------------------------- @@ -10263,7 +11970,7 @@ \subsubsection{{\sf GrB\_Matrix\_assign\_$<$type$>$:} assign a scalar to a subma The \verb' x' notation is otherwise the same as \verb'GrB_Matrix_setElement' (see Section~\ref{matrix_setElement}). Any value can be passed to this function and its type will be detected, via the -\verb'_Generic' feature of C11. For a user-defined type, \verb'x' is a +\verb'_Generic' feature of ANSI C11. For a user-defined type, \verb'x' is a \verb'void *' pointer that points to a memory space holding a single entry of a scalar that has exactly the same user-defined type as the matrix \verb'C'. This user-defined type must exactly match the user-defined type of \verb'C' @@ -10284,8 +11991,8 @@ \subsubsection{{\sf GrB\_Matrix\_assign\_$<$type$>$:} assign a scalar to a subma \paragraph{\bf Performance considerations:} % C(I,J) = scalar If \verb'A' is not transposed: if \verb'|I|' is small, then it is fastest if -the format of \verb'C' is \verb'GrB_ROWMAJOR'; if \verb'|J|' is small, then it is -fastest if the format of \verb'C' is \verb'GrB_COLMAJOR'. The opposite is true +the format of \verb'C' is \verb'GxB_BY_ROW'; if \verb'|J|' is small, then it is +fastest if the format of \verb'C' is \verb'GxB_BY_COL'. The opposite is true if \verb'A' is transposed. \newpage @@ -10775,7 +12482,7 @@ \subsubsection{Performance of {\sf GxB\_subassign}, {\sf GrB\_assign} $n$-by-$n$ matrix \verb'C' where each submatrix \verb'A' has size $a$-by-$a$ with $s$ entries, and where \verb'C' starts with $c$ entries. Assume the matrices are all stored in non-hypersparse form, by row -(\verb'GrB_ROWMAJOR'). +(\verb'GxB_BY_ROW'). If blocking mode is enabled, or if the sequence requires the matrix to be completed after each assignment, each of the $t$ assignments takes $O(a + s @@ -11550,7 +13257,7 @@ \section{Printing GraphBLAS objects} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The ten different objects handled by SuiteSparse:GraphBLAS are all opaque, although nearly all of their contents can be extracted via methods such as \verb'GrB_Matrix_extractTuples', \verb'GrB_Matrix_extractElement', -\verb'GrB_get', and so on. The GraphBLAS C API has no mechanism for +\verb'GxB_Matrix_type', and so on. The GraphBLAS C API has no mechanism for printing all the contents of GraphBLAS objects, but this is helpful for debugging. Ten type-specific methods and two type-generic methods are provided: @@ -11562,7 +13269,7 @@ \section{Printing GraphBLAS objects} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \verb'GxB_Type_fprint' & print and check a \verb'GrB_Type' \\ \verb'GxB_UnaryOp_fprint' & print and check a \verb'GrB_UnaryOp' \\ \verb'GxB_BinaryOp_fprint' & print and check a \verb'GrB_BinaryOp' \\ -\verb'GxB_IndexUnaryOp_fprint' & print and check a \verb'GrB_IndexUnaryOp' \\ +\verb'GxB_IndexUnaryOP_fprint' & print and check a \verb'GrB_IndexUnaryOp' \\ \verb'GxB_Monoid_fprint' & print and check a \verb'GrB_Monoid' \\ \verb'GxB_Semiring_fprint' & print and check a \verb'GrB_Semiring' \\ \verb'GxB_Descriptor_fprint' & print and check a \verb'GrB_Descriptor' \\ @@ -11648,7 +13355,7 @@ \section{Printing GraphBLAS objects} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GraphBLAS matrices and vectors are zero-based, where indices of an $n$-by-$n$ matrix are in the range 0 to $n-1$. However, MATLAB, Octave, and Julia prefer to print their matrices and vectors as one-based. To enable 1-based printing, -use \verb'GrB_set (GrB_GLOBAL, true, GxB_PRINT_1BASED)'. Printing is done as zero-based by +use \verb'GxB_set (GxB_PRINT_1BASED, true)'. Printing is done as zero-based by default. \newpage @@ -11987,16 +13694,16 @@ \section{Matrix and Vector iterators} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% the entries of a matrix using a row iterator requires an outer loop (for the rows) and an inner loop (for the entries in each row). A matrix can be accessed via a row iterator only if its format - (determined by \verb'GrB_get (A, &fmt,' \verb'GrB_STORAGE_ORIENTATION_HINT)') is by-row - (that is, \verb'GrB_ROWMAJOR'). + (determined by \verb'GxB_get (A, GxB_FORMAT, &fmt)') is by-row + (that is, \verb'GxB_BY_ROW'). See Section~\ref{options}. \item {\em column iterator}: iterates across the columns of a matrix, and then within each column to access the entries in a given column. Accessing all the entries of a matrix using a column iterator requires an outer loop (for the columns) and an inner loop (for the entries in each column). A matrix can be accessed via a column iterator only if - its format (determined by \verb'GrB_get (A, &fmt, GrB_STORAGE_ORIENTATION_HINT)') is - by-column (that is, \verb'GrB_COLMAJOR'). + its format (determined by \verb'GxB_get (A, GxB_FORMAT, &fmt)') is + by-column (that is, \verb'GxB_BY_COL'). See Section~\ref{options}. \item {\em entry iterator}: iterates across the entries of a matrix. Accessing all the entries of a matrix using an entry iterator requires @@ -13220,7 +14927,7 @@ \section{Performance} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{The burble is your friend} %------------------------------------------------------------------------------- -Turn on the burble with \verb'GrB_set (GrB_GLOBAL, true, GxB_BURBLE)'. You will get a +Turn on the burble with \verb'GxB_set (GxB_BURBLE, true)'. You will get a single line of output from each (significant) call to GraphBLAS. The burble output can help you detect when you are likely using sub-optimal methods, as described in the next sections. @@ -13262,12 +14969,12 @@ \subsection{Matrix data structures: sparse, hypersparse, bitmap, or full} and full formats. By default, all 4 formats can be used. A matrix typically starts out hypersparse when it is created by \verb'GrB_Matrix_new', and then changes during its lifetime, possibly taking on all four different formats -at different times. This can be modified via \verb'GrB_set'. For example, +at different times. This can be modified via \verb'GxB_set'. For example, this line of code: {\footnotesize \begin{verbatim} - GrB_set (A, GxB_SPARSE + GxB_BITMAP, GxB_SPARSITY_CONTROL) ; \end{verbatim}} + GxB_set (A, GxB_SPARSITY_CONTROL, GxB_SPARSE + GxB_BITMAP) ; \end{verbatim}} \noindent tells SuiteSparse that the matrix \verb'A' can be held in either sparse or @@ -13278,7 +14985,7 @@ \subsection{Matrix data structures: sparse, hypersparse, bitmap, or full} {\footnotesize \begin{verbatim} - GrB_set (A, GxB_SPARSE, GxB_SPARSITY_CONTROL) ; \end{verbatim}} + GxB_set (A, GxB_SPARSITY_CONTROL, GxB_SPARSE) ; \end{verbatim}} This ensures that SuiteSparse will primarily use the sparse format. This is still just a hint, however. The data structure is opaque and SuiteSparse is @@ -13324,7 +15031,7 @@ \subsection{Matrix formats: by row or by column, or using the transpose of application. If you see the term \verb'transpose' in the burble output, and if you need to perform this computation many times, try constructing your own explicit transpose, say \verb"AT=A'", via \verb'GrB_transpose', or create a -copy of \verb'A' but held in another orientation via \verb'GrB_set'. For +copy of \verb'A' but held in another orientation via \verb'GxB_set'. For example, assuming the default matrix format is by-row, and that \verb'A' is \verb'm'-by-\verb'n' of type \verb'GrB_FP32': @@ -13337,7 +15044,7 @@ \subsection{Matrix formats: by row or by column, or using the transpose of // method 2: A2 = A but held by column instead of by row // note: doing the set before the assign is faster than the reverse GrB_Matrix_new (A2, GrB_FP32, m, n) ; - GrB_set (A2, GrB_COLMAJOR, GrB_STORAGE_ORIENTATION_HINT) ; + GxB_set (A2, GxB_FORMAT, GxB_BY_COL) ; GrB_assign (A2, NULL, NULL, A, GrB_ALL, m, GrB_ALL, n, NULL) ; \end{verbatim}} Internally, the data structure for \verb'AT' and \verb'A2' are nearly identical @@ -13373,7 +15080,7 @@ \subsection{Push/pull optimization} {\footnotesize \begin{verbatim} int sparsity = do_push ? GxB_SPARSE : GxB_BITMAP ; - GrB_set (q, sparsity, GxB_SPARSITY_CONTROL) ; + GxB_set (q, GxB_SPARSITY_CONTROL, sparsity) ; if (do_push) { // q'{!pi} = q'*A @@ -13385,7 +15092,7 @@ \subsection{Push/pull optimization} GrB_mxv (q, pi, NULL, semiring, AT, q, GrB_DESC_RSC) ; }\end{verbatim}} -The call to \verb'GrB_set' is optional, since SuiteSparse will likely already +The call to \verb'GxB_set' is optional, since SuiteSparse will likely already determine that a bitmap format will work best when the frontier \verb'q' has many entries, which is also when the pull step is fastest. The push step relies on a sparse vector times sparse matrix method originally due to @@ -13827,7 +15534,7 @@ \subsection{Reading a matrix from a file} {\footnotesize \begin{verbatim} GrB_Descriptor_new (&dt2) ; - GrB_set (dt2, GrB_TRAN, GrB_INP1) ; + GrB_Descriptor_set (dt2, GrB_INP1, GrB_TRAN) ; GrB_Matrix_new (&A, GrB_FP64, n, n) ; GrB_eWiseAdd (A, NULL, NULL, GrB_PLUS_FP64, C, C, dt2) ; // A=C+C' GrB_free (&C) ; @@ -13877,7 +15584,7 @@ \subsection{Reading a matrix from a file} {\footnotesize \begin{verbatim} GrB_Descriptor_new (&dt1) ; - GrB_set (dt1, GrB_TRAN, GrB_INP0) ; + GrB_Descriptor_set (dt1, GrB_INP0, GrB_TRAN) ; GrB_Matrix_new (&A, GrB_FP64, n, n) ; // A (nrows:n-1, 0:nrows-1) = C' GrB_assign (A, NULL, NULL, C, J, ncols, I, nrows, dt1) ; @@ -13943,7 +15650,7 @@ \subsection{User-defined types and operators} the \verb'GxB_FC64' predefined type, but a complex type can also easily added as a user-defined type. The \verb'Complex_init' function in the \verb'usercomplex.c' file in the \verb'Demo' folder creates the \verb'Complex' -type based on the C11 \verb'double complex' type. +type based on the ANSI C11 \verb'double complex' type. It creates a full suite of operators that correspond to every built-in GraphBLAS operator, both binary and unary. In addition, it creates the operators listed in the following table, where $D$ is @@ -14022,7 +15729,7 @@ \section{Compiling and Installing SuiteSparse:GraphBLAS} \subsection{On Linux and Mac} %---------------------------------------- -GraphBLAS makes extensive use of features in the C11 standard, and thus a +GraphBLAS makes extensive use of features in the ANSI C11 standard, and thus a C compiler supporting this version of the C standard is required to use all features of GraphBLAS. @@ -14092,7 +15799,7 @@ \subsection{On Linux and Mac} GraphBLAS folder. If \verb'cmake' or \verb'make' fail, it might be that your default compiler -does not support C11. Try another compiler. For example, try one of +does not support ANSI C11. Try another compiler. For example, try one of these options. Go into the \verb'build' directory and type one of these: {\small @@ -14274,7 +15981,7 @@ \subsection{On Microsoft Windows} %---------------------------------------- SuiteSparse:GraphBLAS is now ported to Microsoft Visual Studio. However, that -compiler is not C11 compliant. As a result, GraphBLAS on Windows will have +compiler is not ANSI C11 compliant. As a result, GraphBLAS on Windows will have a few minor limitations. \begin{itemize} @@ -14617,7 +16324,7 @@ \subsection{Setting the C flags and using CMake} # check which compiler is being used. If you need to make # compiler-specific modifications, here is the place to do it. if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") - # cmake 2.8 workaround: gcc needs to be told to do C11. + # cmake 2.8 workaround: gcc needs to be told to do ANSI C11. # cmake 3.0 doesn't have this problem. set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -lm " ) ... @@ -14751,27 +16458,10 @@ \section{Release Notes} \begin{itemize} -\item Version 9.0.0, Sept 15, 2024 +\item Dec 30, 2023: version 8.3.0 \begin{itemize} - \item \verb'GrB_get/GrB_set': new functions from the v2.1 C API. - \item \verb'GrB_Type_new', \verb'GrB_UnaryOp_new', - \verb'GrB_IndexUnaryOp_new': no longer macros, since \verb'GrB_set' can - be used to set the names of the operators. - These methods no longer extract the name, so the default name is now the - empty string. This is because \verb'GrB_get/set' can only set these names - once. This is a non-compatible change of behaviour for these 3 - methods, so SuiteSprase:GraphBLAS must become v9.0.0. - \item historical methods: many methods are replaced by \verb'GrB_get' and - \verb'GrB_set'. They remain in SuiteSparse:GraphBLAS but have been - declared historical. Terse prototypes exist in GraphBLAS.h, and any - discussion is removed from the User Guide: \verb'GxB_get', - \verb'GxB_set', and the methods they call, and many more. Use - \verb'GrB_get/set' in place those methods, and for: - \verb'GxB_*type_name', \verb'GxB_*type', \verb'GxB_Monoid_operator', - \verb'GxB_Monoid_identity', \verb'GxB_Monoid_terminal', - \verb'GxB_Semiring_add', \verb'GxB_Semiring_multiply'. Use \newline - \verb'GrB_STORAGE_ORIENTATION_HINT' in place of \verb'GxB_FORMAT'. + \item major change to build system: by Markus M\"{u}tzel \end{itemize} \item Oct 7, 2023: version 8.2.1 @@ -14785,7 +16475,7 @@ \section{Release Notes} \item cmake update: add "None" build type, from Antonio Rojas, for Arch Linux \end{itemize} -\item Version 8.2.0, Sept 8, 2023 +\item Version 8.2.0, Sept 5, 2023 \begin{itemize} \item cmake updates: \verb'SuiteSparse::' namespace by Markus M\"{u}tzel. @@ -14897,7 +16587,7 @@ \section{Release Notes} \begin{itemize} \item add non-\verb'va_arg' methods: \verb'va_arg'-based \verb'GxB_get/set' - methods are C11 but cause issues for cffi in Python. As a + methods are ANSI C11 but cause issues for cffi in Python. As a temporary workaround, new methods have been added that do not use \verb'va_arg'. The existing \verb'GxB_get/set' methods are not changed. The new methods are not in the user guide, since all of the @@ -15488,7 +17178,7 @@ \section{Release Notes} are not available. Use the equivalent non-polymorphic functions instead, when compiling GraphBLAS with MS Visual Studio. In addition, variable-length arrays are not supported, so user-defined types are limited - to 128 bytes in size. These changes have no effect if you have an C11 + to 128 bytes in size. These changes have no effect if you have an ANSI C11 compliant compiler. \verb'@GrB' interface modified: \verb'GrB.init' is now required. diff --git a/Doc/GraphBLAS_version.tex b/Doc/GraphBLAS_version.tex index 5716727b1b..f0726742f9 100644 --- a/Doc/GraphBLAS_version.tex +++ b/Doc/GraphBLAS_version.tex @@ -1,5 +1,5 @@ % version of SuiteSparse:GraphBLAS \date{VERSION -9.0.0, -Oct 7, 2023} +8.3.0, +Dec 30, 2023} diff --git a/Doc/Makefile b/Doc/Makefile index 26b393ca65..2d29532ab3 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -10,7 +10,7 @@ # creates the user guide GraphBLAS_UserGuide.pdf: GraphBLAS_UserGuide.tex GraphBLAS_UserGuide.bib \ - GraphBLAS_API_version.tex GraphBLAS_version.tex GrB_get_set.tex + GraphBLAS_API_version.tex GraphBLAS_version.tex pdflatex GraphBLAS_UserGuide.tex bibtex GraphBLAS_UserGuide pdflatex GraphBLAS_UserGuide.tex diff --git a/Doc/README_Doc.txt b/Doc/README_Doc.txt index 47e9b090ef..6039388501 100644 --- a/Doc/README_Doc.txt +++ b/Doc/README_Doc.txt @@ -43,7 +43,7 @@ HPEC19.pdf SuiteSparse:GraphBLAS. In IEEE HPEC’19. IEEE, 2019. Grand Challenge Champion, for high performance. See http://www.ieee-hpec.org/. -Davis_HPEC18.pdf +Davis_HPEC18.pdf T. A. Davis. Graph algorithms via SuiteSparse:GraphBLAS: triangle counting and K-truss. In IEEE HPEC’18. IEEE, 2018. Grand Challenge Innovation diff --git a/GraphBLAS/@GrB/binopinfo.m b/GraphBLAS/@GrB/binopinfo.m index 5d9dcd8830..ce9c5ff3ea 100644 --- a/GraphBLAS/@GrB/binopinfo.m +++ b/GraphBLAS/@GrB/binopinfo.m @@ -87,7 +87,7 @@ function binopinfo (op, optype) % and returns the double value 1.0 if true, or 0.0 if false. % % The following operators are avaiable for single and double (real); their -% definitions are identical to the C11 versions of these functions: +% definitions are identical to the ANSI C11 versions of these functions: % atan2, hypot, fmod, remainder, copysign, ldxep (also called 'pow2'). % All produce the same type as the input, on output. % diff --git a/GraphBLAS/@GrB/private/util/gb_error.c b/GraphBLAS/@GrB/private/util/gb_error.c index 0f5e1b1106..37f9db650b 100644 --- a/GraphBLAS/@GrB/private/util/gb_error.c +++ b/GraphBLAS/@GrB/private/util/gb_error.c @@ -38,7 +38,6 @@ const char *gb_error // return an error message from a GrB_Info value case GrB_DIMENSION_MISMATCH : return ("matrix dimensions are invalid") ; case GrB_OUTPUT_NOT_EMPTY : return ("output matrix already has values") ; case GrB_NOT_IMPLEMENTED : return ("method not implemented") ; - case GrB_ALREADY_SET : return ("name already set") ; case GrB_OUT_OF_MEMORY : return ("out of memory") ; case GrB_INSUFFICIENT_SPACE : return ("output array not large enough") ; case GrB_INVALID_OBJECT : return ("object is corrupted") ; diff --git a/GraphBLAS/@GrB/private/util/gb_export_to_mxstruct.c b/GraphBLAS/@GrB/private/util/gb_export_to_mxstruct.c index 24dce5ac04..b2daf8f7dd 100644 --- a/GraphBLAS/@GrB/private/util/gb_export_to_mxstruct.c +++ b/GraphBLAS/@GrB/private/util/gb_export_to_mxstruct.c @@ -166,12 +166,9 @@ mxArray *gb_export_to_mxstruct // return exported built-in struct G // export and free the A->Y hyper_hash. It is always sparse, // GrB_UINT64, held by column, and non-iso OK (GxB_unpack_HyperHash (A, &Y, NULL)) ; - if (Y != NULL) - { - OK (GxB_Matrix_export_CSC (&Y, &ytype, &ynrows, &yvdim, - &Yp, &Yi, &Yx, &Yp_size, &Yi_size, &Yx_size, - NULL, NULL, NULL)) ; - } + OK (GxB_Matrix_export_CSC (&Y, &ytype, &ynrows, &yvdim, + &Yp, &Yi, &Yx, &Yp_size, &Yi_size, &Yx_size, + NULL, NULL, NULL)) ; // export and free the rest of the hypersparse matrix if (by_col) @@ -226,10 +223,9 @@ mxArray *gb_export_to_mxstruct // return exported built-in struct G break ; case GxB_HYPERSPARSE : - // A is hypersparse, with 6 or 9 fields: GraphBLAS*, s, x, p, i, h, + // A is hypersparse, with 9 fields: GraphBLAS*, s, x, p, i, h, // Yp, Yi, Yx - G = mxCreateStructMatrix (1, 1, (Yp == NULL) ? 6 : 9, - MatrixFields) ; + G = mxCreateStructMatrix (1, 1, 9, MatrixFields) ; break ; case GxB_BITMAP : @@ -312,33 +308,26 @@ mxArray *gb_export_to_mxstruct // return exported built-in struct G } mxSetFieldByNumber (G, 0, 5, Ah_mx) ; - if (Yp != NULL) - { - - // export Yp, of size yvdim+1 - mxArray *Yp_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, - mxREAL) ; - mxSetN (Yp_mx, yvdim+1) ; - void *p = (void *) mxGetData (Yp_mx) ; gb_mxfree (&p) ; - mxSetData (Yp_mx, Yp) ; - mxSetFieldByNumber (G, 0, 6, Yp_mx) ; - - // export Yi, of size nvec - mxArray *Yi_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, - mxREAL) ; - mxSetN (Yi_mx, nvec) ; - p = (void *) mxGetData (Yi_mx) ; gb_mxfree (&p) ; - mxSetData (Yi_mx, Yi) ; - mxSetFieldByNumber (G, 0, 7, Yi_mx) ; - - // export Yx, of size nvec - mxArray *Yx_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, - mxREAL) ; - mxSetN (Yx_mx, nvec) ; - p = (void *) mxGetData (Yx_mx) ; gb_mxfree (&p) ; - mxSetData (Yx_mx, Yx) ; - mxSetFieldByNumber (G, 0, 8, Yx_mx) ; - } + // export Yp, of size yvdim+1 + mxArray *Yp_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, mxREAL) ; + mxSetN (Yp_mx, yvdim+1) ; + void *p = (void *) mxGetData (Yp_mx) ; gb_mxfree (&p) ; + mxSetData (Yp_mx, Yp) ; + mxSetFieldByNumber (G, 0, 6, Yp_mx) ; + + // export Yi, of size nvec + mxArray *Yi_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, mxREAL) ; + mxSetN (Yi_mx, nvec) ; + p = (void *) mxGetData (Yi_mx) ; gb_mxfree (&p) ; + mxSetData (Yi_mx, Yi) ; + mxSetFieldByNumber (G, 0, 7, Yi_mx) ; + + // export Yx, of size nvec + mxArray *Yx_mx = mxCreateNumericMatrix (1, 0, mxUINT64_CLASS, mxREAL) ; + mxSetN (Yx_mx, nvec) ; + p = (void *) mxGetData (Yx_mx) ; gb_mxfree (&p) ; + mxSetData (Yx_mx, Yx) ; + mxSetFieldByNumber (G, 0, 8, Yx_mx) ; } if (sparsity_status == GxB_BITMAP) diff --git a/GraphBLAS/@GrB/private/util/gb_get_shallow.c b/GraphBLAS/@GrB/private/util/gb_get_shallow.c index 96d8ca6c60..e99858af45 100644 --- a/GraphBLAS/@GrB/private/util/gb_get_shallow.c +++ b/GraphBLAS/@GrB/private/util/gb_get_shallow.c @@ -344,10 +344,10 @@ GrB_Matrix gb_get_shallow // return a shallow copy of built-in sparse matrix } //---------------------------------------------------------------------- - // import the A->Y hyper_hash, if it exists + // import the A->Y hyper_hash //---------------------------------------------------------------------- - if (nfields == 9) + if (yvdim > 0) { // A->Y is sparse, uint64, (A->vdim)-by-yvdim, held by column OK (GrB_Matrix_new (&Y, GrB_UINT64, vdim, yvdim)) ; diff --git a/GraphBLAS/@GrB/unopinfo.m b/GraphBLAS/@GrB/unopinfo.m index 05e9a2c9af..2c90e017ad 100644 --- a/GraphBLAS/@GrB/unopinfo.m +++ b/GraphBLAS/@GrB/unopinfo.m @@ -71,8 +71,8 @@ function unopinfo (op, type) % erf z = erf (x) error function % erfc z = erfc (x) complementary error function % cbrt z = cbrt (x) cube root -% frexpx z = frexpx (x) mantissa from C11 frexp function -% frexpe z = frexpe (x) exponent from C11 frexp function; +% frexpx z = frexpx (x) mantissa from ANSI C11 frexp function +% frexpe z = frexpe (x) exponent from ANSI C11 frexp function; % the built-in [f,e]=log2(x) returns % f = frexpx (x) and e = frexpe (x). % diff --git a/GraphBLAS/CMakeLists.txt b/GraphBLAS/CMakeLists.txt index 9c776fa969..24e60538a7 100644 --- a/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/CMakeLists.txt @@ -27,7 +27,7 @@ include ( GraphBLAS_version ) set ( SUITESPARSE_SECOND_LEVEL true ) # CUDA is under development for now, and not deployed in production: -set ( SUITESPARSE_CUDA off ) +set ( SUITESPARSE_CUDA OFF ) set ( GBMATLAB on ) set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGBMATLAB=1 " ) @@ -46,10 +46,10 @@ project ( graphblas_matlab # find OpenMP and cpu_features #------------------------------------------------------------------------------- -option ( NOPENMP "ON: do not use OpenMP. OFF (default): use OpenMP" off ) +option ( NOPENMP "ON: do not use OpenMP. OFF (default): use OpenMP" OFF ) if ( NOPENMP ) # OpenMP has been disabled - set ( OPENMP_FOUND false ) + set ( OpenMP_C_FOUND OFF ) else ( ) find_package ( OpenMP ) endif ( ) @@ -104,7 +104,7 @@ else ( ) endif ( ) message ( STATUS "C compiler: ${CMAKE_C_COMPILER} ") -message ( STATUS "CMAKE have OpenMP: ${OPENMP_FOUND}" ) +message ( STATUS "CMAKE have OpenMP: ${OpenMP_C_FOUND}" ) #------------------------------------------------------------------------------- # include directories @@ -170,7 +170,7 @@ set_target_properties ( graphblas_matlab PROPERTIES # select the threading library #------------------------------------------------------------------------------- -if ( OPENMP_FOUND ) +if ( OpenMP_C_FOUND ) set ( USE_OPENMP true ) endif ( ) diff --git a/GraphBLAS/Config/.gitignore b/GraphBLAS/Config/.gitignore new file mode 100644 index 0000000000..5b47ab2e61 --- /dev/null +++ b/GraphBLAS/Config/.gitignore @@ -0,0 +1,5 @@ +# Ignore these files: + +# cmake constructs GB_config.h from GB_config.h.in with the name of the +# compiler, its flags, and other platform-specific properties. +GB_config.h diff --git a/GraphBLAS/Config/GB_config.h b/GraphBLAS/Config/GB_config.h deleted file mode 100644 index 117d8be76b..0000000000 --- a/GraphBLAS/Config/GB_config.h +++ /dev/null @@ -1,69 +0,0 @@ -//------------------------------------------------------------------------------ -// GraphBLAS/Config/GB_config.h: JIT configuration for GraphBLAS -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -// The GraphBLAS/Config/GB_config.h file is configured by cmake from -// GraphBLAS/Config/GB_config.h.in. - -#ifndef GB_CONFIG_H -#define GB_CONFIG_H - -// GB_C_COMPILER: the C compiler used to compile GraphBLAS: -#ifndef GB_C_COMPILER -#define GB_C_COMPILER "/usr/bin/cc" -#endif - -// GB_C_FLAGS: the C compiler flags used to compile GraphBLAS. Used -// for compiling and linking: -#ifndef GB_C_FLAGS -#define GB_C_FLAGS " -DGBMATLAB=1 -Wundef -std=c11 -lm -Wno-pragmas -fexcess-precision=fast -fcx-limited-range -fno-math-errno -fwrapv -O3 -DNDEBUG -fopenmp -fPIC " -#endif - -// GB_C_LINK_FLAGS: the flags passed to the C compiler for the link phase: -#ifndef GB_C_LINK_FLAGS -#define GB_C_LINK_FLAGS " -shared " -#endif - -// GB_LIB_PREFIX: library prefix (lib for Linux/Unix/Mac, empty for Windows): -#ifndef GB_LIB_PREFIX -#define GB_LIB_PREFIX "lib" -#endif - -// GB_LIB_SUFFIX: library suffix (.so for Linux/Unix, .dylib for Mac, etc): -#ifndef GB_LIB_SUFFIX -#define GB_LIB_SUFFIX ".so" -#endif - -// GB_OBJ_SUFFIX: object suffix (.o for Linux/Unix/Mac, .obj for Windows): -#ifndef GB_OBJ_SUFFIX -#define GB_OBJ_SUFFIX ".o" -#endif - -// GB_OMP_INC: -I includes for OpenMP, if in use by GraphBLAS: -#ifndef GB_OMP_INC -#define GB_OMP_INC "" -#endif - -// GB_OMP_INC_DIRS: include directories OpenMP, if in use by GraphBLAS, -// for cmake: -#ifndef GB_OMP_INC_DIRS -#define GB_OMP_INC_DIRS "" -#endif - -// GB_C_LIBRARIES: libraries to link with when using direct compile/link: -#ifndef GB_C_LIBRARIES -#define GB_C_LIBRARIES " -lm -ldl /usr/lib/gcc/x86_64-linux-gnu/9/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.so" -#endif - -// GB_CMAKE_LIBRARIES: libraries to link with when using cmake -#ifndef GB_CMAKE_LIBRARIES -#define GB_CMAKE_LIBRARIES "m;dl;/usr/lib/gcc/x86_64-linux-gnu/9/libgomp.so;/usr/lib/x86_64-linux-gnu/libpthread.so" -#endif - -#endif - diff --git a/GraphBLAS/Makefile b/GraphBLAS/Makefile index db8f8c4379..29ede0657e 100644 --- a/GraphBLAS/Makefile +++ b/GraphBLAS/Makefile @@ -20,11 +20,11 @@ library: # install only in SuiteSparse/lib and SuiteSparse/include local: - ( cd build && cmake $(CMAKE_OPTIONS) -DLOCAL_INSTALL=1 .. && cmake --build . --config Release -j${JOBS} ) + ( cd build && cmake $(CMAKE_OPTIONS) -USUITESPARSE_PKGFILEDIR -DLOCAL_INSTALL=1 .. && cmake --build . --config Release -j${JOBS} ) # install only in /usr/local (default) global: - ( cd build && cmake $(CMAKE_OPTIONS) -DLOCAL_INSTALL=0 .. && cmake --build . --config Release -j${JOBS} ) + ( cd build && cmake $(CMAKE_OPTIONS) -USUITESPARSE_PKGFILEDIR -DLOCAL_INSTALL=0 .. && cmake --build . --config Release -j${JOBS} ) # compile with -g debug: diff --git a/GraphBLAS/demo/html/graphblas_demo.html b/GraphBLAS/demo/html/graphblas_demo.html index cab72de9cc..308aa48591 100644 --- a/GraphBLAS/demo/html/graphblas_demo.html +++ b/GraphBLAS/demo/html/graphblas_demo.html @@ -404,7 +404,7 @@ and returns the double value 1.0 if true, or 0.0 if false. The following operators are avaiable for single and double (real); their - definitions are identical to the C11 versions of these functions: + definitions are identical to the ANSI C11 versions of these functions: atan2, hypot, fmod, remainder, copysign, ldxep (also called 'pow2'). All produce the same type as the input, on output. @@ -569,8 +569,8 @@ tgamma z = tgamma (x) gamma function, also 'gamma' erf z = erf (x) error function erfc z = erfc (x) complementary error function - frexpx z = frexpx (x) mantissa from C11 frexp function - frexpe z = frexpe (x) exponent from C11 frexp function; + frexpx z = frexpx (x) mantissa from ANSI C11 frexp function + frexpe z = frexpe (x) exponent from ANSI C11 frexp function; the built-in [f,e]=log2(x) returns f = frexpx (x) and e = frexpe (x). diff --git a/GraphBLAS/rename/GB_rename.h b/GraphBLAS/rename/GB_rename.h index a2a7b272ee..262192620d 100644 --- a/GraphBLAS/rename/GB_rename.h +++ b/GraphBLAS/rename/GB_rename.h @@ -221,7 +221,6 @@ #define GB_clog2f GM_clog2f #define GB_clog2 GM_clog2 #define GB_code_check GM_code_check -#define GB_code_name_get GM_code_name_get #define GB_code_size GM_code_size #define GB_code_string GM_code_string #define GB_code_type GM_code_type @@ -410,8 +409,6 @@ #define GB_Global_hack_get GM_Global_hack_get #define GB_Global_hack_set GM_Global_hack_set #define GB_Global_have_realloc_function GM_Global_have_realloc_function -#define GB_Global_hyper_hash_get GM_Global_hyper_hash_get -#define GB_Global_hyper_hash_set GM_Global_hyper_hash_set #define GB_Global_hyper_switch_get GM_Global_hyper_switch_get #define GB_Global_hyper_switch_set GM_Global_hyper_switch_set #define GB_Global_is_csc_get GM_Global_is_csc_get @@ -497,7 +494,6 @@ #define GB_HUF_writeCTable_wksp GM_HUF_writeCTable_wksp #define GB_hyper_hash_build GM_hyper_hash_build #define GB_hyper_hash_free GM_hyper_hash_free -#define GB_hyper_hash_need GM_hyper_hash_need #define GB_hypermatrix_prune GM_hypermatrix_prune #define GB_hyper_prune GM_hyper_prune #define GB_hyper_realloc GM_hyper_realloc @@ -914,19 +910,12 @@ #define GB_Matrix_new GM_Matrix_new #define GB_Matrix_removeElement GM_Matrix_removeElement #define GB_matvec_check GM_matvec_check -#define GB_matvec_enum_get GM_matvec_enum_get -#define GB_matvec_name_get GM_matvec_name_get -#define GB_matvec_name_set GM_matvec_name_set -#define GB_matvec_name_size_get GM_matvec_name_size_get -#define GB_matvec_set GM_matvec_set #define GB_matvec_type GM_matvec_type #define GB_matvec_type_name GM_matvec_type_name #define GB_memcpy GM_memcpy #define GB_memoryUsage GM_memoryUsage #define GB_memset GM_memset #define GB_Monoid_check GM_Monoid_check -#define GB_monoid_get GM_monoid_get -#define GB_monoid_name_get GM_monoid_name_get #define GB_Monoid_new GM_Monoid_new #define GB_msort_1_create_merge_tasks GM_msort_1_create_merge_tasks #define GB_msort_1 GM_msort_1 @@ -946,17 +935,10 @@ #define GB_nvec_nonempty GM_nvec_nonempty #define GB_omp_get_max_threads GM_omp_get_max_threads #define GB_omp_get_wtime GM_omp_get_wtime -#define GB_op_enum_get GM_op_enum_get #define GB_Operator_check GM_Operator_check #define GB_Op_free GM_Op_free #define GB_op_is_second GM_op_is_second #define GB_op_name_and_defn GM_op_name_and_defn -#define GB_op_name_get GM_op_name_get -#define GB_op_or_type_string_set GM_op_or_type_string_set -#define GB_op_scalar_get GM_op_scalar_get -#define GB_op_size_get GM_op_size_get -#define GB_op_string_get GM_op_string_get -#define GB_op_string_set GM_op_string_set #define GB_Pending_alloc GM_Pending_alloc #define GB_Pending_free GM_Pending_free #define GB_Pending_n GM_Pending_n @@ -1027,7 +1009,6 @@ #define GB_select_sparse GM_select_sparse #define GB_select_value_iso GM_select_value_iso #define GB_Semiring_check GM_Semiring_check -#define GB_semiring_name_get GM_semiring_name_get #define GB_Semiring_new GM_Semiring_new #define GB_serialize_array GM_serialize_array #define GB_serialize_free_blocks GM_serialize_free_blocks @@ -1104,9 +1085,7 @@ #define GB_transpose_op GM_transpose_op #define GB_transpose_unop_jit GM_transpose_unop_jit #define GB_Type_check GM_Type_check -#define GB_type_code_get GM_type_code_get #define GB_Type_compatible GM_Type_compatible -#define GB_type_name_get GM_type_name_get #define GB_UnaryOp_check GM_UnaryOp_check #define GB_union_jit GM_union_jit #define GB_unjumble GM_unjumble @@ -1115,7 +1094,6 @@ #define GB_unop_iso GM_unop_iso #define GB_unop_new GM_unop_new #define GB_unop_one GM_unop_one -#define GB_user_name_set GM_user_name_set #define GB_user_op_jit GM_user_op_jit #define GB_user_type_jit GM_user_type_jit #define GB_Vector_check GM_Vector_check @@ -1443,16 +1421,6 @@ #define GrB_BAND_UINT8 GrM_BAND_UINT8 #define GrB_BinaryOp_error GrM_BinaryOp_error #define GrB_BinaryOp_free GrM_BinaryOp_free -#define GrB_BinaryOp_get_INT32 GrM_BinaryOp_get_INT32 -#define GrB_BinaryOp_get_Scalar GrM_BinaryOp_get_Scalar -#define GrB_BinaryOp_get_SIZE GrM_BinaryOp_get_SIZE -#define GrB_BinaryOp_get_String GrM_BinaryOp_get_String -#define GrB_BinaryOp_get_VOID GrM_BinaryOp_get_VOID -#define GrB_BinaryOp_new GrM_BinaryOp_new -#define GrB_BinaryOp_set_INT32 GrM_BinaryOp_set_INT32 -#define GrB_BinaryOp_set_Scalar GrM_BinaryOp_set_Scalar -#define GrB_BinaryOp_set_String GrM_BinaryOp_set_String -#define GrB_BinaryOp_set_VOID GrM_BinaryOp_set_VOID #define GrB_BinaryOp_wait GrM_BinaryOp_wait #define GrB_BNOT_INT16 GrM_BNOT_INT16 #define GrB_BNOT_INT32 GrM_BNOT_INT32 @@ -1504,17 +1472,8 @@ #define GrB_DESC_R GrM_DESC_R #define GrB_Descriptor_error GrM_Descriptor_error #define GrB_Descriptor_free GrM_Descriptor_free -#define GrB_Descriptor_get_INT32 GrM_Descriptor_get_INT32 -#define GrB_Descriptor_get_Scalar GrM_Descriptor_get_Scalar -#define GrB_Descriptor_get_SIZE GrM_Descriptor_get_SIZE -#define GrB_Descriptor_get_String GrM_Descriptor_get_String -#define GrB_Descriptor_get_VOID GrM_Descriptor_get_VOID #define GrB_Descriptor_new GrM_Descriptor_new #define GrB_Descriptor_set GrM_Descriptor_set -#define GrB_Descriptor_set_INT32 GrM_Descriptor_set_INT32 -#define GrB_Descriptor_set_Scalar GrM_Descriptor_set_Scalar -#define GrB_Descriptor_set_String GrM_Descriptor_set_String -#define GrB_Descriptor_set_VOID GrM_Descriptor_set_VOID #define GrB_Descriptor_wait GrM_Descriptor_wait #define GrB_DESC_RSC GrM_DESC_RSC #define GrB_DESC_RSCT0 GrM_DESC_RSCT0 @@ -1589,16 +1548,6 @@ #define GrB_GE_UINT32 GrM_GE_UINT32 #define GrB_GE_UINT64 GrM_GE_UINT64 #define GrB_GE_UINT8 GrM_GE_UINT8 -#define GrB_Global_get_INT32 GrM_Global_get_INT32 -#define GrB_Global_get_Scalar GrM_Global_get_Scalar -#define GrB_Global_get_SIZE GrM_Global_get_SIZE -#define GrB_Global_get_String GrM_Global_get_String -#define GrB_Global_get_VOID GrM_Global_get_VOID -#define GrB_GLOBAL GrM_GLOBAL -#define GrB_Global_set_INT32 GrM_Global_set_INT32 -#define GrB_Global_set_Scalar GrM_Global_set_Scalar -#define GrB_Global_set_String GrM_Global_set_String -#define GrB_Global_set_VOID GrM_Global_set_VOID #define GrB_GT_BOOL GrM_GT_BOOL #define GrB_GT_FP32 GrM_GT_FP32 #define GrB_GT_FP64 GrM_GT_FP64 @@ -1623,16 +1572,6 @@ #define GrB_IDENTITY_UINT8 GrM_IDENTITY_UINT8 #define GrB_IndexUnaryOp_error GrM_IndexUnaryOp_error #define GrB_IndexUnaryOp_free GrM_IndexUnaryOp_free -#define GrB_IndexUnaryOp_get_INT32 GrM_IndexUnaryOp_get_INT32 -#define GrB_IndexUnaryOp_get_Scalar GrM_IndexUnaryOp_get_Scalar -#define GrB_IndexUnaryOp_get_SIZE GrM_IndexUnaryOp_get_SIZE -#define GrB_IndexUnaryOp_get_String GrM_IndexUnaryOp_get_String -#define GrB_IndexUnaryOp_get_VOID GrM_IndexUnaryOp_get_VOID -#define GrB_IndexUnaryOp_new GrM_IndexUnaryOp_new -#define GrB_IndexUnaryOp_set_INT32 GrM_IndexUnaryOp_set_INT32 -#define GrB_IndexUnaryOp_set_Scalar GrM_IndexUnaryOp_set_Scalar -#define GrB_IndexUnaryOp_set_String GrM_IndexUnaryOp_set_String -#define GrB_IndexUnaryOp_set_VOID GrM_IndexUnaryOp_set_VOID #define GrB_IndexUnaryOp_wait GrM_IndexUnaryOp_wait #define GrB_init GrM_init #define GrB_INT16 GrM_INT16 @@ -1792,11 +1731,6 @@ #define GrB_Matrix_extractTuples_UINT64 GrM_Matrix_extractTuples_UINT64 #define GrB_Matrix_extractTuples_UINT8 GrM_Matrix_extractTuples_UINT8 #define GrB_Matrix_free GrM_Matrix_free -#define GrB_Matrix_get_INT32 GrM_Matrix_get_INT32 -#define GrB_Matrix_get_Scalar GrM_Matrix_get_Scalar -#define GrB_Matrix_get_SIZE GrM_Matrix_get_SIZE -#define GrB_Matrix_get_String GrM_Matrix_get_String -#define GrB_Matrix_get_VOID GrM_Matrix_get_VOID #define GrB_Matrix_import_BOOL GrM_Matrix_import_BOOL #define GrB_Matrix_import_FP32 GrM_Matrix_import_FP32 #define GrB_Matrix_import_FP64 GrM_Matrix_import_FP64 @@ -1862,10 +1796,6 @@ #define GrB_Matrix_setElement_UINT32 GrM_Matrix_setElement_UINT32 #define GrB_Matrix_setElement_UINT64 GrM_Matrix_setElement_UINT64 #define GrB_Matrix_setElement_UINT8 GrM_Matrix_setElement_UINT8 -#define GrB_Matrix_set_INT32 GrM_Matrix_set_INT32 -#define GrB_Matrix_set_Scalar GrM_Matrix_set_Scalar -#define GrB_Matrix_set_String GrM_Matrix_set_String -#define GrB_Matrix_set_VOID GrM_Matrix_set_VOID #define GrB_Matrix_wait GrM_Matrix_wait #define GrB_MAX_BOOL GrM_MAX_BOOL #define GrB_MAX_FIRST_SEMIRING_FP32 GrM_MAX_FIRST_SEMIRING_FP32 @@ -2033,11 +1963,6 @@ #define GrB_MINV_UINT8 GrM_MINV_UINT8 #define GrB_Monoid_error GrM_Monoid_error #define GrB_Monoid_free GrM_Monoid_free -#define GrB_Monoid_get_INT32 GrM_Monoid_get_INT32 -#define GrB_Monoid_get_Scalar GrM_Monoid_get_Scalar -#define GrB_Monoid_get_SIZE GrM_Monoid_get_SIZE -#define GrB_Monoid_get_String GrM_Monoid_get_String -#define GrB_Monoid_get_VOID GrM_Monoid_get_VOID #define GrB_Monoid_new_BOOL GrM_Monoid_new_BOOL #define GrB_Monoid_new_FP32 GrM_Monoid_new_FP32 #define GrB_Monoid_new_FP64 GrM_Monoid_new_FP64 @@ -2050,10 +1975,6 @@ #define GrB_Monoid_new_UINT32 GrM_Monoid_new_UINT32 #define GrB_Monoid_new_UINT64 GrM_Monoid_new_UINT64 #define GrB_Monoid_new_UINT8 GrM_Monoid_new_UINT8 -#define GrB_Monoid_set_INT32 GrM_Monoid_set_INT32 -#define GrB_Monoid_set_Scalar GrM_Monoid_set_Scalar -#define GrB_Monoid_set_String GrM_Monoid_set_String -#define GrB_Monoid_set_VOID GrM_Monoid_set_VOID #define GrB_Monoid_wait GrM_Monoid_wait #define GrB_mxm GrM_mxm #define GrB_mxv GrM_mxv @@ -2142,11 +2063,6 @@ #define GrB_Scalar_extractElement_UINT64 GrM_Scalar_extractElement_UINT64 #define GrB_Scalar_extractElement_UINT8 GrM_Scalar_extractElement_UINT8 #define GrB_Scalar_free GrM_Scalar_free -#define GrB_Scalar_get_INT32 GrM_Scalar_get_INT32 -#define GrB_Scalar_get_Scalar GrM_Scalar_get_Scalar -#define GrB_Scalar_get_SIZE GrM_Scalar_get_SIZE -#define GrB_Scalar_get_String GrM_Scalar_get_String -#define GrB_Scalar_get_VOID GrM_Scalar_get_VOID #define GrB_Scalar_new GrM_Scalar_new #define GrB_Scalar_nvals GrM_Scalar_nvals #define GrB_Scalar_setElement_BOOL GrM_Scalar_setElement_BOOL @@ -2161,10 +2077,6 @@ #define GrB_Scalar_setElement_UINT32 GrM_Scalar_setElement_UINT32 #define GrB_Scalar_setElement_UINT64 GrM_Scalar_setElement_UINT64 #define GrB_Scalar_setElement_UINT8 GrM_Scalar_setElement_UINT8 -#define GrB_Scalar_set_INT32 GrM_Scalar_set_INT32 -#define GrB_Scalar_set_Scalar GrM_Scalar_set_Scalar -#define GrB_Scalar_set_String GrM_Scalar_set_String -#define GrB_Scalar_set_VOID GrM_Scalar_set_VOID #define GrB_Scalar_wait GrM_Scalar_wait #define GrB_SECOND_BOOL GrM_SECOND_BOOL #define GrB_SECOND_FP32 GrM_SECOND_FP32 @@ -2179,16 +2091,7 @@ #define GrB_SECOND_UINT8 GrM_SECOND_UINT8 #define GrB_Semiring_error GrM_Semiring_error #define GrB_Semiring_free GrM_Semiring_free -#define GrB_Semiring_get_INT32 GrM_Semiring_get_INT32 -#define GrB_Semiring_get_Scalar GrM_Semiring_get_Scalar -#define GrB_Semiring_get_SIZE GrM_Semiring_get_SIZE -#define GrB_Semiring_get_String GrM_Semiring_get_String -#define GrB_Semiring_get_VOID GrM_Semiring_get_VOID #define GrB_Semiring_new GrM_Semiring_new -#define GrB_Semiring_set_INT32 GrM_Semiring_set_INT32 -#define GrB_Semiring_set_Scalar GrM_Semiring_set_Scalar -#define GrB_Semiring_set_String GrM_Semiring_set_String -#define GrB_Semiring_set_VOID GrM_Semiring_set_VOID #define GrB_Semiring_wait GrM_Semiring_wait #define GrB_TIMES_BOOL GrM_TIMES_BOOL #define GrB_TIMES_FP32 GrM_TIMES_FP32 @@ -2216,16 +2119,6 @@ #define GrB_TRIU GrM_TRIU #define GrB_Type_error GrM_Type_error #define GrB_Type_free GrM_Type_free -#define GrB_Type_get_INT32 GrM_Type_get_INT32 -#define GrB_Type_get_Scalar GrM_Type_get_Scalar -#define GrB_Type_get_SIZE GrM_Type_get_SIZE -#define GrB_Type_get_String GrM_Type_get_String -#define GrB_Type_get_VOID GrM_Type_get_VOID -#define GrB_Type_new GrM_Type_new -#define GrB_Type_set_INT32 GrM_Type_set_INT32 -#define GrB_Type_set_Scalar GrM_Type_set_Scalar -#define GrB_Type_set_String GrM_Type_set_String -#define GrB_Type_set_VOID GrM_Type_set_VOID #define GrB_Type_wait GrM_Type_wait #define GrB_UINT16 GrM_UINT16 #define GrB_UINT32 GrM_UINT32 @@ -2233,16 +2126,6 @@ #define GrB_UINT8 GrM_UINT8 #define GrB_UnaryOp_error GrM_UnaryOp_error #define GrB_UnaryOp_free GrM_UnaryOp_free -#define GrB_UnaryOp_get_INT32 GrM_UnaryOp_get_INT32 -#define GrB_UnaryOp_get_Scalar GrM_UnaryOp_get_Scalar -#define GrB_UnaryOp_get_SIZE GrM_UnaryOp_get_SIZE -#define GrB_UnaryOp_get_String GrM_UnaryOp_get_String -#define GrB_UnaryOp_get_VOID GrM_UnaryOp_get_VOID -#define GrB_UnaryOp_new GrM_UnaryOp_new -#define GrB_UnaryOp_set_INT32 GrM_UnaryOp_set_INT32 -#define GrB_UnaryOp_set_Scalar GrM_UnaryOp_set_Scalar -#define GrB_UnaryOp_set_String GrM_UnaryOp_set_String -#define GrB_UnaryOp_set_VOID GrM_UnaryOp_set_VOID #define GrB_UnaryOp_wait GrM_UnaryOp_wait #define GrB_VALUEEQ_BOOL GrM_VALUEEQ_BOOL #define GrB_VALUEEQ_FP32 GrM_VALUEEQ_FP32 @@ -2412,11 +2295,6 @@ #define GrB_Vector_extractTuples_UINT64 GrM_Vector_extractTuples_UINT64 #define GrB_Vector_extractTuples_UINT8 GrM_Vector_extractTuples_UINT8 #define GrB_Vector_free GrM_Vector_free -#define GrB_Vector_get_INT32 GrM_Vector_get_INT32 -#define GrB_Vector_get_Scalar GrM_Vector_get_Scalar -#define GrB_Vector_get_SIZE GrM_Vector_get_SIZE -#define GrB_Vector_get_String GrM_Vector_get_String -#define GrB_Vector_get_VOID GrM_Vector_get_VOID #define GrB_Vector_new GrM_Vector_new #define GrB_Vector_nvals GrM_Vector_nvals #define GrB_Vector_reduce_BinaryOp_Scalar GrM_Vector_reduce_BinaryOp_Scalar @@ -2461,10 +2339,6 @@ #define GrB_Vector_setElement_UINT32 GrM_Vector_setElement_UINT32 #define GrB_Vector_setElement_UINT64 GrM_Vector_setElement_UINT64 #define GrB_Vector_setElement_UINT8 GrM_Vector_setElement_UINT8 -#define GrB_Vector_set_INT32 GrM_Vector_set_INT32 -#define GrB_Vector_set_Scalar GrM_Vector_set_Scalar -#define GrB_Vector_set_String GrM_Vector_set_String -#define GrB_Vector_set_VOID GrM_Vector_set_VOID #define GrB_Vector_size GrM_Vector_size #define GrB_Vector_wait GrM_Vector_wait #define GrB_vxm GrM_vxm @@ -2984,19 +2858,10 @@ #define GxB_Context_get_FP64 GxM_Context_get_FP64 #define GxB_Context_get GxM_Context_get #define GxB_Context_get_INT32 GxM_Context_get_INT32 -#define GxB_Context_get_INT GxM_Context_get_INT -#define GxB_Context_get_Scalar GxM_Context_get_Scalar -#define GxB_Context_get_SIZE GxM_Context_get_SIZE -#define GxB_Context_get_String GxM_Context_get_String -#define GxB_Context_get_VOID GxM_Context_get_VOID #define GxB_Context_new GxM_Context_new #define GxB_Context_set_FP64 GxM_Context_set_FP64 #define GxB_Context_set GxM_Context_set #define GxB_Context_set_INT32 GxM_Context_set_INT32 -#define GxB_Context_set_INT GxM_Context_set_INT -#define GxB_Context_set_Scalar GxM_Context_set_Scalar -#define GxB_Context_set_String GxM_Context_set_String -#define GxB_Context_set_VOID GxM_Context_set_VOID #define GxB_Context_wait GxM_Context_wait #define GxB_CONTEXT_WORLD GxM_CONTEXT_WORLD #define GxB_COPYSIGN_FP32 GxM_COPYSIGN_FP32 @@ -4504,11 +4369,6 @@ #define GxB_Semiring_add GxM_Semiring_add #define GxB_Semiring_fprint GxM_Semiring_fprint #define GxB_Semiring_multiply GxM_Semiring_multiply -#define GxB_Serialized_get_INT32 GxM_Serialized_get_INT32 -#define GxB_Serialized_get_Scalar GxM_Serialized_get_Scalar -#define GxB_Serialized_get_SIZE GxM_Serialized_get_SIZE -#define GxB_Serialized_get_String GxM_Serialized_get_String -#define GxB_Serialized_get_VOID GxM_Serialized_get_VOID #define GxB_SIGNUM_FC32 GxM_SIGNUM_FC32 #define GxB_SIGNUM_FC64 GxM_SIGNUM_FC64 #define GxB_SIGNUM_FP32 GxM_SIGNUM_FP32 diff --git a/GraphBLAS/rename/Makefile b/GraphBLAS/rename/Makefile index 0b0f25624f..16d517e9a6 100644 --- a/GraphBLAS/rename/Makefile +++ b/GraphBLAS/rename/Makefile @@ -13,14 +13,18 @@ # libgraphblas_matlab.so with renamed symbols, to avoid conflicting with the # built-in libmwgraphblas.so (v3.3.3) in MATLAB R2021a and later. -# GxB_*Iterator* methods are #define'd as both macros and functions in -# GraphBLAS.h, so they are not renamed. Functions with "__" in their name are -# renamed using macros internally, and so they do not need to be renamed with -# GB_rename.h. +# GrB_Type_new, GrB_UnaryOp_new, GrB_BinaryOp_new, and GxB_*Iterator* methods +# are #define'd as both macros and functions in GraphBLAS.h, so they are not +# renamed. Functions with "__" in their name are renamed using macros +# internally, and so they do not need to be renamed with GB_rename.h. go: nm -gD ../../build/libgraphblas.so | grep -v "__" > lib - grep " GrB_" lib > temp.h + grep " GrB_" lib \ + | grep -v GrB_Type_new \ + | grep -v GrB_UnaryOp_new \ + | grep -v GrB_IndexUnaryOp_new \ + | grep -v GrB_BinaryOp_new > temp.h grep " GxB_" lib \ | grep -v Iterator >> temp.h grep " GB_" lib \ @@ -34,7 +38,11 @@ go: # on the Mac, use "make mac" mac: nm -gA ../../build/libgraphblas.dylib | grep -v "__" > lib - grep " _GrB_" lib > temp.h + grep " _GrB_" lib \ + | grep -v GrB_Type_new \ + | grep -v GrB_UnaryOp_new \ + | grep -v GrB_IndexUnaryOp_new \ + | grep -v GrB_BinaryOp_new > temp.h grep " _GxB_" lib \ | grep -v Iterator >> temp.h grep " _GB_" lib \ diff --git a/Include/GraphBLAS.h b/Include/GraphBLAS.h index ef40b94822..e383227637 100644 --- a/Include/GraphBLAS.h +++ b/Include/GraphBLAS.h @@ -1,4 +1,4 @@ -// SuiteSparse:GraphBLAS 9.0.0 +// SuiteSparse:GraphBLAS 8.3.0 //------------------------------------------------------------------------------ // GraphBLAS.h: definitions for the GraphBLAS package //------------------------------------------------------------------------------ @@ -32,10 +32,10 @@ // Regarding "historical" functions and symbols: when a GxB_* function or // symbol is added to the C API Specification, the new GrB_* name should be -// used instead. The old GxB_* name will be kept in working order for -// historical reasons; it might no longer be mentioned in the user guide. -// Historical functions and symbols would only be removed in the rare case that -// they cause a serious conflict with future methods. +// used instead. The old GxB_* name will be kept for historical reasons, +// documented here and in working order; it might no longer be mentioned in the +// user guide. Historical functions and symbols would only be removed in the +// rare case that they cause a serious conflict with future methods. #ifndef GRAPHBLAS_H #define GRAPHBLAS_H @@ -96,9 +96,9 @@ #define GB_GLOBAL extern __declspec ( dllexport ) #elif defined ( GB_STATIC ) // Compiling the user application on Windows, importing symbols from - // a static GraphBLAS library on Windows. The user application must do: - // #define GB_STATIC - // #include "GraphBLAS.h" + // a static GraphBLAS library on Windows. The user application must + // define GB_STATIC (e.g., with the pre-processor flag -DGB_STATIC) for + // all compilation units that include "GraphBLAS.h". #define GB_GLOBAL extern #else // Compiling the user application on Windows, importing symbols from @@ -124,10 +124,18 @@ // C95: 199409L #define GxB_STDC_VERSION __STDC_VERSION__ #else -// assume ANSI C (C90 / C89) +// assume C90 / C89 #define GxB_STDC_VERSION 199001L #endif +//------------------------------------------------------------------------------ +// CUDA (currently experimental, not for production use) +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_CUDA +/* #undef SUITESPARSE_CUDA */ +#endif + //------------------------------------------------------------------------------ // definitions for complex types //------------------------------------------------------------------------------ @@ -197,10 +205,10 @@ // NVIDIA nvcc #define GB_restrict __restrict__ #elif GxB_STDC_VERSION >= 199901L - // ANSI C99 or later + // C99 or later #define GB_restrict restrict #else - // ANSI C95 and earlier: no restrict keyword + // C95 and earlier: no restrict keyword #define GB_restrict #endif @@ -232,13 +240,13 @@ // The version of this implementation, and the GraphBLAS API version: #define GxB_IMPLEMENTATION_NAME "SuiteSparse:GraphBLAS" -#define GxB_IMPLEMENTATION_DATE "Oct 7, 2023" -#define GxB_IMPLEMENTATION_MAJOR 9 -#define GxB_IMPLEMENTATION_MINOR 0 +#define GxB_IMPLEMENTATION_DATE "Dec 30, 2023" +#define GxB_IMPLEMENTATION_MAJOR 8 +#define GxB_IMPLEMENTATION_MINOR 3 #define GxB_IMPLEMENTATION_SUB 0 -#define GxB_SPEC_DATE "Oct 7, 2023" +#define GxB_SPEC_DATE "Nov 15, 2021" #define GxB_SPEC_MAJOR 2 -#define GxB_SPEC_MINOR 1 +#define GxB_SPEC_MINOR 0 #define GxB_SPEC_SUB 0 // compile-time access to the C API Version number of this library. @@ -276,11 +284,10 @@ // The 'spec' string describes the GraphBLAS spec: #define GxB_SPEC_ABOUT \ -"GraphBLAS C API, by Benjamin Brock, Aydin Buluc, Raye Kimmerer,\n" \ -"Jim Kitchen, Major Kumar, Timothy Mattson, Scott McMillan, Jose' Moreira,\n" \ -"Erik Welch, and Carl Yang. Based on 'GraphBLAS Mathematics by Jeremy\n" \ -"Kepner. See also 'Graph Algorithms in the Language of Linear Algebra,'\n" \ -"edited by J. Kepner and J. Gilbert, SIAM, 2011.\n" +"GraphBLAS C API, by Aydin Buluc, Timothy Mattson, Scott McMillan,\n" \ +"Jose' Moreira, Carl Yang, and Benjamin Brock. Based on 'GraphBLAS\n" \ +"Mathematics by Jeremy Kepner. See also 'Graph Algorithms in the Language\n" \ +"of Linear Algebra,' edited by J. Kepner and J. Gilbert, SIAM, 2011.\n" //============================================================================== // GrB_Index: the GraphBLAS integer @@ -337,7 +344,6 @@ typedef enum GrB_DIMENSION_MISMATCH = -6, // matrix dimensions do not match GrB_OUTPUT_NOT_EMPTY = -7, // output matrix already has values GrB_NOT_IMPLEMENTED = -8, // method not implemented - GrB_ALREADY_SET = -9, // field already written to GrB_PANIC = -101, // unknown error GrB_OUT_OF_MEMORY = -102, // out of memory GrB_INSUFFICIENT_SPACE = -103, // output array not large enough @@ -400,12 +406,7 @@ GrB_Info GrB_finalize (void) ; // finish GraphBLAS // GrB_getVersion: GraphBLAS C API version //============================================================================== -// GrB_getVersion provides a runtime access of the C API Version. Can also be -// done with two calls to GrB_Global_get_INT32 with the v2.1 C API: -// -// GrB_get (GrB_GLOBAL, &version, GrB_API_VER_MAJOR) ; -// GrB_get (GrB_GLOBAL, &subversion, GrB_API_VER_MINOR) ; - +// GrB_getVersion provides a runtime access of the C API Version. GrB_Info GrB_getVersion // runtime access to C API version number ( unsigned int *version, // returns GRB_VERSION @@ -418,13 +419,13 @@ GrB_Info GrB_getVersion // runtime access to C API version number // The GrB_Descriptor is used to modify the behavior of GraphBLAS operations. // -// GrB_OUTP: can be GrB_DEFAULT or GrB_REPLACE. If GrB_REPLACE, then C is +// GrB_OUTP: can be GxB_DEFAULT or GrB_REPLACE. If GrB_REPLACE, then C is // cleared after taking part in the accum operation but before the mask. // In other words, C = accum (C,T) is split into Z = accum(C,T) ; // C=0 ; C = Z. // -// GrB_MASK: can be GrB_DEFAULT, GrB_COMP, GrB_STRUCTURE, or set to both -// GrB_COMP and GrB_STRUCTURE. If GrB_DEFAULT, the mask is used +// GrB_MASK: can be GxB_DEFAULT, GrB_COMP, GrB_STRUCTURE, or set to both +// GrB_COMP and GrB_STRUCTURE. If GxB_DEFAULT, the mask is used // normally, where Mask(i,j)=1 means C(i,j) can be modified by C=Z, // and Mask(i,j)=0 means it cannot be modified even if Z(i,j) is has been // computed and differs from C(i,j). If GrB_COMP, this is the same as @@ -432,7 +433,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // the value of the mask is not considered, just its pattern. The // GrB_COMP and GrB_STRUCTURE settings can be combined. // -// GrB_INP0: can be GrB_DEFAULT or GrB_TRAN. If GrB_DEFAULT, the first input +// GrB_INP0: can be GxB_DEFAULT or GrB_TRAN. If GxB_DEFAULT, the first input // is used as-is. If GrB_TRAN, it is transposed. Only matrices are // transposed this way. Vectors are never transposed via the // GrB_Descriptor. @@ -442,7 +443,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // GxB_AxB_METHOD: this is a hint to SuiteSparse:GraphBLAS on which algorithm // it should use to compute C=A*B, in GrB_mxm, GrB_mxv, and GrB_vxm. // SuiteSparse:GraphBLAS has four different heuristics, and the default -// method (GrB_DEFAULT) selects between them automatically. The complete +// method (GxB_DEFAULT) selects between them automatically. The complete // rule is in the User Guide. The brief discussion here assumes all // matrices are stored by column. All methods compute the same result, // except that floating-point roundoff may differ when working on @@ -472,7 +473,7 @@ GrB_Info GrB_getVersion // runtime access to C API version number // state, with indices out of order. The sort is left pending. Some // methods can tolerate jumbled matrices on input, so this can be faster. // However, in some cases, it can be faster for GrB_mxm to sort its output -// as it is computed. With GxB_SORT set to GrB_DEFAULT, the sort is left +// as it is computed. With GxB_SORT set to GxB_DEFAULT, the sort is left // pending. With GxB_SORT set to a nonzero value, GrB_mxm typically sorts // the resulting matrix C (but not always; this is just a hint). If // GrB_init is called with GrB_BLOCKING mode, the sort will always be @@ -510,8 +511,7 @@ GrB_Desc_Field ; typedef enum { // for all GrB_Descriptor fields: - GrB_DEFAULT = 0, // default behavior of the method - GxB_DEFAULT = 0, // historical; use GrB_DEFAULT instead + GxB_DEFAULT = 0, // default behavior of the method // for GrB_OUTP only: GrB_REPLACE = 1, // clear the output before assigning new values to it @@ -519,7 +519,6 @@ typedef enum // for GrB_MASK only: GrB_COMP = 2, // use the structural complement of the input GrB_STRUCTURE = 4, // use the only pattern of the mask, not its values - GrB_COMP_STRUCTURE = 6, // shorthand for GrB_COMP + GrB_STRUCTURE // for GrB_INP0 and GrB_INP1 only: GrB_TRAN = 3, // use the transpose of the input @@ -536,7 +535,7 @@ typedef enum GrB_Desc_Value ; // default for GxB pack is to trust the input data -#define GxB_FAST_IMPORT ((int) GrB_DEFAULT) +#define GxB_FAST_IMPORT GxB_DEFAULT typedef struct GB_Descriptor_opaque *GrB_Descriptor ; @@ -545,15 +544,61 @@ GrB_Info GrB_Descriptor_new // create a new descriptor GrB_Descriptor *descriptor // handle of descriptor to create ) ; -// historical methods; use GrB_set and GrB_get instead: -GrB_Info GrB_Descriptor_set (GrB_Descriptor, GrB_Desc_Field, GrB_Desc_Value) ; -GrB_Info GxB_Descriptor_get (GrB_Desc_Value *, GrB_Descriptor, GrB_Desc_Field) ; -GrB_Info GxB_Desc_set (GrB_Descriptor, GrB_Desc_Field, ...) ; -GrB_Info GxB_Desc_set_INT32 (GrB_Descriptor, GrB_Desc_Field, int32_t) ; -GrB_Info GxB_Desc_set_FP64 (GrB_Descriptor, GrB_Desc_Field, double) ; -GrB_Info GxB_Desc_get (GrB_Descriptor, GrB_Desc_Field, ...) ; -GrB_Info GxB_Desc_get_INT32 (GrB_Descriptor, GrB_Desc_Field, int32_t *) ; -GrB_Info GxB_Desc_get_FP64 (GrB_Descriptor, GrB_Desc_Field, double *) ; +GrB_Info GrB_Descriptor_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + GrB_Desc_Value val // value to change it to +) ; + +GrB_Info GxB_Descriptor_get // get a parameter from a descriptor +( + GrB_Desc_Value *val, // value of the parameter + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field // parameter to query +) ; + +GrB_Info GxB_Desc_set // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + ... // value to change it to +) ; + +GrB_Info GxB_Desc_set_INT32 // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Desc_set_FP64 // set a parameter in a descriptor +( + GrB_Descriptor desc, // descriptor to modify + GrB_Desc_Field field, // parameter to change + double value // value to change it to +) ; + +GrB_Info GxB_Desc_get // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL means defaults + GrB_Desc_Field field, // parameter to query + ... // value of the parameter +) ; + +GrB_Info GxB_Desc_get_INT32 // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL is ok + GrB_Desc_Field field, // parameter to query + int32_t *value // return value of the descriptor +) ; + +GrB_Info GxB_Desc_get_FP64 // get a parameter from a descriptor +( + GrB_Descriptor desc, // descriptor to query; NULL is ok + GrB_Desc_Field field, // parameter to query + double *value // return value of the descriptor +) ; GrB_Info GrB_Descriptor_free // free a descriptor ( @@ -700,12 +745,32 @@ GB_GLOBAL GrB_Type // GrB_Type_new: create a new type //------------------------------------------------------------------------------ -GrB_Info GrB_Type_new // create a new GraphBLAS type +// GrB_Type_new is implemented both as a macro and a function. Both are +// user-callable. The default is to use the macro, since this allows the name +// of the type to be saved as a string, for subsequent error reporting by +// GrB_error. + +#undef GrB_Type_new +#undef GrM_Type_new + +GrB_Info GRB (Type_new) // create a new GraphBLAS type ( GrB_Type *type, // handle of user type to create size_t sizeof_ctype // size = sizeof (ctype) of the C type ) ; +// user code should not directly use GB_STR or GB_XSTR +// GB_STR: convert the content of x into a string "x" +#define GB_XSTR(x) GB_STR(x) +#define GB_STR(x) #x + +// GrB_Type_new as a user-callable macro, which allows the name of the ctype +// to be added to the new type. The type_defn is unknown. +#define GrB_Type_new(utype, sizeof_ctype) \ + GxB_Type_new(utype, sizeof_ctype, GB_STR(sizeof_ctype), NULL) +#define GrM_Type_new(utype, sizeof_ctype) \ + GxB_Type_new(utype, sizeof_ctype, GB_STR(sizeof_ctype), NULL) + // GxB_Type_new creates a type with a name and definition that are known to // GraphBLAS, as strings. The type_name is any valid string (max length of 128 // characters, including the required null-terminating character) that may @@ -735,16 +800,22 @@ GrB_Info GxB_Type_new // create a new named GraphBLAS type const char *type_defn // typedef for the type (no max length) ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Type_name (char *type_name, const GrB_Type type) ; -GrB_Info GxB_Type_size (size_t *size, const GrB_Type type) ; +GrB_Info GxB_Type_name // return the name of a GraphBLAS type +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Type type +) ; + +GrB_Info GxB_Type_size // determine the size of the type +( + size_t *size, // the sizeof the type + const GrB_Type type // type to determine the sizeof +) ; GrB_Info GxB_Type_from_name // return the built-in GrB_Type from a name ( - GrB_Type *type, // built-in type, or NULL if user-defined. - // The name can be the underlying C type - // ("int8_t") or the GraphBLAS name - // ("GrB_INT8"). + GrB_Type *type, // built-in type, or NULL if user-defined const char *type_name // array of size at least GxB_MAX_NAME_LEN ) ; @@ -949,16 +1020,23 @@ GB_GLOBAL GrB_UnaryOp typedef void (*GxB_unary_function) (void *, const void *) ; -// GrB_UnaryOp_new creates a user-defined unary op (with no name or defn) -GrB_Info GrB_UnaryOp_new // create a new user-defined unary operator +// GrB_UnaryOp_new creates a user-defined unary op, with an automatic +// detection of the operator name. +#undef GrB_UnaryOp_new +#undef GrM_UnaryOp_new +GrB_Info GRB (UnaryOp_new) // create a new user-defined unary operator ( GrB_UnaryOp *unaryop, // handle for the new unary operator GxB_unary_function function, // pointer to the unary function GrB_Type ztype, // type of output z GrB_Type xtype // type of input x ) ; +#define GrB_UnaryOp_new(op,f,z,x) \ + GxB_UnaryOp_new(op,f,z,x, GB_STR(f), NULL) +#define GrM_UnaryOp_new(op,f,z,x) \ + GxM_UnaryOp_new(op,f,z,x, GB_STR(f), NULL) -// GxB_UnaryOp_new creates a named and defined user-defined unary op. +// GxB_UnaryOp_new creates a named user-defined unary op. GrB_Info GxB_UnaryOp_new // create a new user-defined unary operator ( GrB_UnaryOp *unaryop, // handle for the new unary operator @@ -969,11 +1047,29 @@ GrB_Info GxB_UnaryOp_new // create a new user-defined unary operator const char *unop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_UnaryOp_ztype (GrB_Type *ztype, GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_ztype_name (char *type_name, const GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_xtype (GrB_Type *xtype, GrB_UnaryOp unaryop) ; -GrB_Info GxB_UnaryOp_xtype_name (char *type_name, const GrB_UnaryOp unaryop) ; +// GxB_UnaryOp_ztype is historical. Use GxB_UnaryOp_ztype_name instead. +GrB_Info GxB_UnaryOp_ztype // return the type of z +( + GrB_Type *ztype, // return type of output z + GrB_UnaryOp unaryop // unary operator +) ; +GrB_Info GxB_UnaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; + +// GxB_UnaryOp_xtype is historical. Use GxB_UnaryOp_xtype_name instead. +GrB_Info GxB_UnaryOp_xtype // return the type of x +( + GrB_Type *xtype, // return type of input x + GrB_UnaryOp unaryop // unary operator +) ; +GrB_Info GxB_UnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_UnaryOp unaryop // unary operator +) ; GrB_Info GrB_UnaryOp_free // free a user-created unary operator ( @@ -1385,8 +1481,11 @@ GB_GLOBAL GrB_BinaryOp GxB_IGNORE_DUP ; typedef void (*GxB_binary_function) (void *, const void *, const void *) ; -// GrB_BinaryOp_new creates a user-defined binary op (no name or defn) -GrB_Info GrB_BinaryOp_new +// GrB_BinaryOp_new creates a user-defined binary op, with an automatic +// detection of the operator name. +#undef GrB_BinaryOp_new +#undef GrM_BinaryOp_new +GrB_Info GRB (BinaryOp_new) ( GrB_BinaryOp *binaryop, // handle for the new binary operator GxB_binary_function function, // pointer to the binary function @@ -1394,8 +1493,12 @@ GrB_Info GrB_BinaryOp_new GrB_Type xtype, // type of input x GrB_Type ytype // type of input y ) ; +#define GrB_BinaryOp_new(op,f,z,x,y) \ + GxB_BinaryOp_new(op,f,z,x,y, GB_STR(f), NULL) +#define GrM_BinaryOp_new(op,f,z,x,y) \ + GxM_BinaryOp_new(op,f,z,x,y, GB_STR(f), NULL) -// GxB_BinaryOp_new creates a named and defined user-defined binary op. +// GxB_BinaryOp_new creates a named user-defined binary op. GrB_Info GxB_BinaryOp_new ( GrB_BinaryOp *op, // handle for the new binary operator @@ -1407,13 +1510,41 @@ GrB_Info GxB_BinaryOp_new const char *binop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_BinaryOp_ztype (GrB_Type *ztype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ztype_name (char *type_name, const GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_xtype (GrB_Type *xtype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_xtype_name (char *type_name, const GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ytype (GrB_Type *ytype, GrB_BinaryOp op) ; -GrB_Info GxB_BinaryOp_ytype_name (char *type_name, const GrB_BinaryOp op) ; +// NOTE: GxB_BinaryOp_ztype is historical. Use GxB_BinaryOp_ztype_name instead. +GrB_Info GxB_BinaryOp_ztype // return the type of z +( + GrB_Type *ztype, // return type of output z + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; + +// NOTE: GxB_BinaryOp_xtype is historical. Use GxB_BinaryOp_xtype_name instead. +GrB_Info GxB_BinaryOp_xtype // return the type of x +( + GrB_Type *xtype, // return type of input x + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; + +// NOTE: GxB_BinaryOp_ytype is historical. Use GxB_BinaryOp_ytype_name instead. +GrB_Info GxB_BinaryOp_ytype // return the type of y +( + GrB_Type *ytype, // return type of input y + GrB_BinaryOp binaryop // binary operator to query +) ; +GrB_Info GxB_BinaryOp_ytype_name // return the type_name of y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_BinaryOp binaryop // binary operator to query +) ; GrB_Info GrB_BinaryOp_free // free a user-created binary operator ( @@ -1424,7 +1555,8 @@ GrB_Info GrB_BinaryOp_free // free a user-created binary operator // GxB_SelectOp: select operators (DEPRECATED: do not use) //============================================================================== -// historical; use GrB_select and GrB_IndexUnaryOp instead: +// GrB_select and GrB_IndexUnaryOp should be used instead of GxB_select. + typedef struct GB_SelectOp_opaque *GxB_SelectOp ; GB_GLOBAL GxB_SelectOp GxB_TRIL, GxB_TRIU, GxB_DIAG, GxB_OFFDIAG, GxB_NONZERO, GxB_EQ_ZERO, GxB_GT_ZERO, GxB_GE_ZERO, GxB_LT_ZERO, GxB_LE_ZERO, GxB_NE_THUNK, @@ -1451,9 +1583,12 @@ typedef void (*GxB_index_unary_function) const void *y // input scalar y ) ; -// GrB_IndexUnaryOp_new creates a user-defined unary op (no name or defn) +// GrB_IndexUnaryOp_new creates a user-defined unary op, with an automatic +// detection of the operator name. +#undef GrB_IndexUnaryOp_new +#undef GrM_IndexUnaryOp_new -GrB_Info GrB_IndexUnaryOp_new // create a new user-defined IndexUnary op +GrB_Info GRB (IndexUnaryOp_new) // create a new user-defined IndexUnary op ( GrB_IndexUnaryOp *op, // handle for the new IndexUnary operator GxB_index_unary_function function, // pointer to IndexUnary function @@ -1462,6 +1597,11 @@ GrB_Info GrB_IndexUnaryOp_new // create a new user-defined IndexUnary op GrB_Type ytype // type of input y (the scalar) ) ; +#define GrB_IndexUnaryOp_new(op,f,z,x,y) \ + GxB_IndexUnaryOp_new(op,f,z,x,y, GB_STR(f), NULL) +#define GrM_IndexUnaryOp_new(op,f,z,x,y) \ + GxM_IndexUnaryOp_new(op,f,z,x,y, GB_STR(f), NULL) + GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp ( GrB_IndexUnaryOp *op, // handle for the new IndexUnary operator @@ -1473,10 +1613,26 @@ GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp const char *idxop_defn // definition of the user function ) ; -// historical; use GrB_get instead: -GrB_Info GxB_IndexUnaryOp_ztype_name (char *, const GrB_IndexUnaryOp op) ; -GrB_Info GxB_IndexUnaryOp_xtype_name (char *, const GrB_IndexUnaryOp op) ; -GrB_Info GxB_IndexUnaryOp_ytype_name (char *, const GrB_IndexUnaryOp op) ; +GrB_Info GxB_IndexUnaryOp_ztype_name // return the type_name of z +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // IndexUnary operator +) ; + +// For TRIL, TRIU, DIAG, OFFDIAG, COLLE, COLGT, ROWLE, and ROWGT, +// the xtype_name is an empty string (""), since these functions do not depend +// on the type of the matrix input. +GrB_Info GxB_IndexUnaryOp_xtype_name // return the type_name of x +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // select operator +) ; + +GrB_Info GxB_IndexUnaryOp_ytype_name // return the type_name of the scalary y +( + char *type_name, // user array of size GxB_MAX_NAME_LEN + const GrB_IndexUnaryOp op // select operator +) ; GrB_Info GrB_IndexUnaryOp_free // free a user-created IndexUnaryOp ( @@ -1678,12 +1834,14 @@ GrB_Info GrB_Monoid_new_UDT // create a monoid with a user-defined type // Type-generic method for creating a new monoid: /* + GrB_Info GrB_Monoid_new // create a monoid ( GrB_Monoid *monoid, // handle of monoid to create GrB_BinaryOp op, // binary operator of the monoid identity // identity value of the monoid ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -1816,6 +1974,7 @@ GrB_Info GxB_Monoid_terminal_new_UDT // create a monoid with a user type // Type-generic method for creating a new monoid with a terminal value: /* + GrB_Info GxB_Monoid_terminal_new // create a monoid ( GrB_Monoid *monoid, // handle of monoid to create @@ -1823,6 +1982,7 @@ GrB_Info GxB_Monoid_terminal_new // create a monoid identity, // identity value of the monoid terminal // terminal value of the monoid ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -1835,10 +1995,25 @@ GrB_Info GxB_Monoid_terminal_new // create a monoid (monoid, op, identity, terminal) #endif -// historical; use GrB_get instead: -GrB_Info GxB_Monoid_operator (GrB_BinaryOp *op, GrB_Monoid monoid) ; -GrB_Info GxB_Monoid_identity (void *identity, GrB_Monoid monoid) ; -GrB_Info GxB_Monoid_terminal (bool *, void *terminal, GrB_Monoid monoid) ; +GrB_Info GxB_Monoid_operator // return the monoid operator +( + GrB_BinaryOp *op, // returns the binary op of the monoid + GrB_Monoid monoid // monoid to query +) ; + +GrB_Info GxB_Monoid_identity // return the monoid identity +( + void *identity, // returns the identity of the monoid + GrB_Monoid monoid // monoid to query +) ; + +GrB_Info GxB_Monoid_terminal // return the monoid terminal +( + bool *has_terminal, // true if the monoid has a terminal value + void *terminal, // returns the terminal of the monoid, + // unmodified if has_terminal is false + GrB_Monoid monoid // monoid to query +) ; GrB_Info GrB_Monoid_free // free a user-created monoid ( @@ -1858,9 +2033,17 @@ GrB_Info GrB_Semiring_new // create a semiring GrB_BinaryOp multiply // multiply operator of the semiring ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Semiring_add (GrB_Monoid *add, GrB_Semiring semiring) ; -GrB_Info GxB_Semiring_multiply (GrB_BinaryOp *multiply, GrB_Semiring semiring) ; +GrB_Info GxB_Semiring_add // return the add monoid of a semiring +( + GrB_Monoid *add, // returns add monoid of the semiring + GrB_Semiring semiring // semiring to query +) ; + +GrB_Info GxB_Semiring_multiply // return multiply operator of a semiring +( + GrB_BinaryOp *multiply, // returns multiply operator of the semiring + GrB_Semiring semiring // semiring to query +) ; GrB_Info GrB_Semiring_free // free a user-created semiring ( @@ -1871,6 +2054,9 @@ GrB_Info GrB_Semiring_free // free a user-created semiring // GrB_Scalar: a GraphBLAS scalar //============================================================================== +// GxB_Scalar has become GrB_Scalar. The older name GxB_Scalar is kept as +// historical, but GrB_Scalar should be used instead. + typedef struct GB_Scalar_opaque *GxB_Scalar ; // historical: use GrB_Scalar typedef struct GB_Scalar_opaque *GrB_Scalar ; // use this instead @@ -1900,9 +2086,18 @@ GrB_Info GrB_Scalar_nvals // get the number of entries in a GrB_Scalar const GrB_Scalar s // GrB_Scalar to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Scalar_type (GrB_Type *type, const GrB_Scalar s) ; -GrB_Info GxB_Scalar_type_name (char *type_name, const GrB_Scalar s) ; +// NOTE: GxB_Scalar_type is historical. Use GxB_Scalar_type_name instead. +GrB_Info GxB_Scalar_type // get the type of a GrB_Scalar +( + GrB_Type *type, // returns the type of the GrB_Scalar + const GrB_Scalar s // GrB_Scalar to query +) ; +GrB_Info GxB_Scalar_type_name // return the name of the type of a scalar +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Scalar s // GrB_Scalar to query +) ; GrB_Info GxB_Scalar_memoryUsage // return # of bytes used for a scalar ( @@ -2031,11 +2226,13 @@ GrB_Info GxB_Scalar_setElement_UDT (GrB_Scalar s, void *x) ; // user-defined type. /* + GrB_Info GrB_Scalar_setElement // s = x ( GrB_Scalar s, // GrB_Scalar to modify x // user scalar to assign to s ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2047,7 +2244,6 @@ GrB_Info GrB_Scalar_setElement // s = x ) \ (s, x) -// historical; use GrB_Scalar_setElement instead: #define GxB_Scalar_setElement(s,x) GrB_Scalar_setElement (s, x) #endif @@ -2178,7 +2374,6 @@ GrB_Info GrB_Scalar_extractElement // x = s ) \ (x, s) -// historical; use GrB_Scalar_extractElement instead: #define GxB_Scalar_extractElement(x,s) GrB_Scalar_extractElement (x, s) #endif @@ -2222,9 +2417,18 @@ GrB_Info GrB_Vector_nvals // get the number of entries in a vector const GrB_Vector v // vector to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Vector_type (GrB_Type *type, const GrB_Vector v) ; -GrB_Info GxB_Vector_type_name (char *type_name, const GrB_Vector v) ; +// NOTE: GxB_Vector_type is historical. Use GxB_Vector_type_name instead. +GrB_Info GxB_Vector_type // get the type of a vector +( + GrB_Type *type, // returns the type of the vector + const GrB_Vector v // vector to query +) ; +GrB_Info GxB_Vector_type_name // return the name of the type of a vector +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Vector v // vector to query +) ; GrB_Info GxB_Vector_memoryUsage // return # of bytes used for a vector ( @@ -2388,6 +2592,7 @@ GrB_Info GxB_Vector_build_Scalar // build a vector from (i,scalar) tuples // for a user-defined type. /* + GrB_Info GrB_Vector_build // build a vector from (I,X) tuples ( GrB_Vector w, // vector to build @@ -2396,6 +2601,7 @@ GrB_Info GrB_Vector_build // build a vector from (I,X) tuples GrB_Index nvals, // number of tuples const GrB_BinaryOp dup // binary function to assemble duplicates ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2524,12 +2730,14 @@ GrB_Info GrB_Vector_setElement_Scalar // w(i) = x // user-defined type. /* + GrB_Info GrB_Vector_setElement // w(i) = x ( GrB_Vector w, // vector to modify x, // scalar to assign to w(i) GrB_Index i // row index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2659,12 +2867,14 @@ GrB_Info GrB_Vector_extractElement_Scalar // x = v(i) // for a user-defined type. /* + GrB_Info GrB_Vector_extractElement // x = v(i) ( *x, // scalar extracted const GrB_Vector v, // vector to extract an entry from GrB_Index i // row index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2825,6 +3035,7 @@ GrB_Info GrB_Vector_extractTuples_UDT // [I,~,X] = find (v) // for a user-defined type. /* + GrB_Info GrB_Vector_extractTuples // [I,~,X] = find (v) ( GrB_Index *I, // array for returning row indices of tuples @@ -2832,6 +3043,7 @@ GrB_Info GrB_Vector_extractTuples // [I,~,X] = find (v) GrB_Index *nvals, // I, X size on input; # tuples on output const GrB_Vector v // vector to extract tuples from ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -2890,9 +3102,18 @@ GrB_Info GrB_Matrix_nvals // get the number of entries in a matrix const GrB_Matrix A // matrix to query ) ; -// historical; use GrB_get instead: -GrB_Info GxB_Matrix_type (GrB_Type *type, const GrB_Matrix A) ; -GrB_Info GxB_Matrix_type_name (char *type_name, const GrB_Matrix A) ; +// NOTE: GxB_Matrix_type is historical. Use GxB_Matrix_type_name instead. +GrB_Info GxB_Matrix_type // get the type of a matrix +( + GrB_Type *type, // returns the type of the matrix + const GrB_Matrix A // matrix to query +) ; +GrB_Info GxB_Matrix_type_name // return the name of the type of a matrix +( + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + const GrB_Matrix A // matrix to query +) ; GrB_Info GxB_Matrix_memoryUsage // return # of bytes used for a matrix ( @@ -3071,6 +3292,7 @@ GrB_Info GxB_Matrix_build_Scalar // build a matrix from (I,J,scalar) tuples // for a user-defined type. /* + GrB_Info GrB_Matrix_build // build a matrix from (I,J,X) tuples ( GrB_Matrix C, // matrix to build @@ -3080,6 +3302,7 @@ GrB_Info GrB_Matrix_build // build a matrix from (I,J,X) tuples GrB_Index nvals, // number of tuples const GrB_BinaryOp dup // binary function to assemble duplicates ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3223,6 +3446,7 @@ GrB_Info GrB_Matrix_setElement_Scalar // C (i,j) = x // user-defined type. /* + GrB_Info GrB_Matrix_setElement // C (i,j) = x ( GrB_Matrix C, // matrix to modify @@ -3230,6 +3454,7 @@ GrB_Info GrB_Matrix_setElement // C (i,j) = x GrB_Index i, // row index GrB_Index j // column index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3374,6 +3599,7 @@ GrB_Info GrB_Matrix_extractElement_Scalar // x = A(i,j) // for a user-defined type. /* + GrB_Info GrB_Matrix_extractElement // x = A(i,j) ( *x, // extracted scalar @@ -3381,6 +3607,7 @@ GrB_Info GrB_Matrix_extractElement // x = A(i,j) GrB_Index i, // row index GrB_Index j // column index ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3557,6 +3784,7 @@ GrB_Info GrB_Matrix_extractTuples_UDT // [I,J,X] = find (A) // for a user-defined type. /* + GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) ( GrB_Index *I, // array for returning row indices of tuples @@ -3565,6 +3793,7 @@ GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) GrB_Index *nvals, // I,J,X size on input; # tuples on output const GrB_Matrix A // matrix to extract tuples from ) ; + */ #if GxB_STDC_VERSION >= 201112L @@ -3604,7 +3833,7 @@ GrB_Info GrB_Matrix_extractTuples // [I,J,X] = find (A) // ncols(A{i,j}) for all i). // The type of C is unchanged, and all matrices A{i,j} are typecasted into the -// type of C. Any settings made to C by GrB_set (format by row +// type of C. Any settings made to C by GxB_Matrix_Option_set (format by row // or by column, bitmap switch, hyper switch, and sparsity control) are // unchanged. @@ -3662,7 +3891,7 @@ GrB_Info GrB_Matrix_diag // build a diagonal matrix from a vector // already exist on input, of the correct size. Any existing entries in C are // discarded. The type of C is preserved, so that if the type of C and v // differ, the entries are typecasted into the type of C. Any settings made to -// C by GrB_set (format by row or by column, bitmap switch, hyper +// C by GxB_Matrix_Option_set (format by row or by column, bitmap switch, hyper // switch, and sparsity control) are unchanged. GrB_Info GxB_Matrix_diag // construct a diagonal matrix from a vector @@ -3687,7 +3916,7 @@ GrB_Info GxB_Matrix_diag // construct a diagonal matrix from a vector // the range -1 to -m+1. Any existing entries in v are discarded. The type of // v is preserved, so that if the type of A and v differ, the entries are // typecasted into the type of v. Any settings made to v by -// GrB_set (bitmap switch and sparsity control) are unchanged. +// GxB_Vector_Option_set (bitmap switch and sparsity control) are unchanged. GrB_Info GxB_Vector_diag // extract a diagonal from a matrix, as a vector ( @@ -3702,58 +3931,60 @@ GrB_Info GxB_Vector_diag // extract a diagonal from a matrix, as a vector //============================================================================== // The following options modify how SuiteSparse:GraphBLAS stores and operates -// on its matrices. The GrB_get/set methods allow the user to suggest how the +// on its matrices. The GxB_*Option* methods allow the user to suggest how the // internal representation of a matrix, or all matrices, should be held. These // options have no effect on the result (except for minor roundoff differences // for floating-point types). They only affect the time and memory usage of the // computations. +// GxB_Matrix_Option_set: sets an option for a specific matrix +// GxB_Matrix_Option_get: queries the current option of a specific matrix +// GxB_Vector_Option_set: sets an option for a specific vector +// GxB_Vector_Option_get: queries the current option of a specific vector +// GxB_Global_Option_set: sets an option for all future matrices +// GxB_Global_Option_get: queries current option for all future matrices + typedef enum // for global options or matrix options { //------------------------------------------------------------ - // GrB_get / GrB_set for GrB_Matrix and GrB_GLOBAL: + // for GxB_Matrix_Option_get/set and GxB_Global_Option_get/set: //------------------------------------------------------------ GxB_HYPER_SWITCH = 7000, // switch to hypersparse (double value) - GxB_HYPER_HASH = 7048, // hyper_hash control (int64 value) GxB_BITMAP_SWITCH = 7001, // switch to bitmap (double value) - GxB_FORMAT = 7002, // historical; use GrB_STORAGE_ORIENTATION_HINT + GxB_FORMAT = 7002, // CSR/CSC format: GxB_BY_ROW or GxB_BY_COL //------------------------------------------------------------ - // GrB_get for GrB_GLOBAL: + // for GxB_Global_Option_get only: //------------------------------------------------------------ - GxB_MODE = 7003, // historical; use GrB_BLOCKING_MODE - GxB_LIBRARY_NAME = 7004, // historical; use GrB_NAME - GxB_LIBRARY_VERSION = 7005, // historical; use GrB_LIBRARY_VER_* + GxB_MODE = 7003, // mode passed to GrB_init + GxB_LIBRARY_NAME = 7004, // name of the library (char *) + GxB_LIBRARY_VERSION = 7005, // library version (3 int's) GxB_LIBRARY_DATE = 7006, // date of the library (char *) GxB_LIBRARY_ABOUT = 7007, // about the library (char *) GxB_LIBRARY_URL = 7008, // URL for the library (char *) GxB_LIBRARY_LICENSE = 7009, // license of the library (char *) GxB_LIBRARY_COMPILE_DATE = 7010, // date library was compiled (char *) GxB_LIBRARY_COMPILE_TIME = 7011, // time library was compiled (char *) - GxB_API_VERSION = 7012, // historical; use GrB_API_VER_* + GxB_API_VERSION = 7012, // API version (3 int's) GxB_API_DATE = 7013, // date of the API (char *) GxB_API_ABOUT = 7014, // about the API (char *) GxB_API_URL = 7015, // URL for the API (char *) GxB_COMPILER_VERSION = 7016, // compiler version (3 int's) GxB_COMPILER_NAME = 7017, // compiler name (char *) GxB_LIBRARY_OPENMP = 7018, // library compiled with OpenMP - GxB_MALLOC_FUNCTION = 7037, // malloc function pointer - GxB_CALLOC_FUNCTION = 7038, // calloc function pointer - GxB_REALLOC_FUNCTION = 7039, // realloc function pointer - GxB_FREE_FUNCTION = 7040, // free function pointer //------------------------------------------------------------ - // GrB_get / GrB_set for GrB_GLOBAL: + // for GxB_Global_Option_get/set only: //------------------------------------------------------------ GxB_GLOBAL_NTHREADS = GxB_NTHREADS, // max number of threads to use GxB_GLOBAL_CHUNK = GxB_CHUNK, // chunk size for small problems. GxB_GLOBAL_GPU_ID = GxB_GPU_ID, // which GPU to use (DRAFT) - GxB_BURBLE = 7019, // diagnostic output + GxB_BURBLE = 7019, // diagnostic output (bool *) GxB_PRINTF = 7020, // printf function diagnostic output GxB_FLUSH = 7021, // flush function diagnostic output GxB_MEMORY_POOL = 7022, // no longer used @@ -3771,18 +4002,27 @@ typedef enum // for global options or matrix options GxB_JIT_ERROR_LOG = 7033, // CPU JIT: error log file //------------------------------------------------------------ - // GrB_get for GrB_Matrix: + // for GxB_Matrix_Option_get only: //------------------------------------------------------------ GxB_SPARSITY_STATUS = 7034, // hyper, sparse, bitmap or full (1,2,4,8) GxB_IS_HYPER = 7035, // historical; use GxB_SPARSITY_STATUS //------------------------------------------------------------ - // GrB_get/GrB_set for GrB_Matrix: + // for GxB_Matrix_Option_get/set only: //------------------------------------------------------------ GxB_SPARSITY_CONTROL = 7036, // sparsity control: 0 to 15; see below + //------------------------------------------------------------ + // memory functions (GxB_Global_Option_get only): + //------------------------------------------------------------ + + GxB_MALLOC_FUNCTION = 7037, + GxB_CALLOC_FUNCTION = 7038, + GxB_REALLOC_FUNCTION = 7039, + GxB_FREE_FUNCTION = 7040, + } GxB_Option_Field ; // for GxB_JIT_C_CONTROL: @@ -3796,7 +4036,7 @@ typedef enum } GxB_JIT_Control ; -// GxB_FORMAT is historical, but it can be by row or by column: +// GxB_FORMAT can be by row or by column: typedef enum { GxB_BY_ROW = 0, // CSR: compressed sparse row format @@ -3829,7 +4069,7 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; // the default sparsity control is any format: #define GxB_AUTO_SPARSITY GxB_ANY_SPARSITY -// GrB_set (A, scontrol, GxB_SPARSITY_CONTROL) provides hints +// GxB_Matrix_Option_set (A, GxB_SPARSITY_CONTROL, scontrol) provides hints // about which data structure GraphBLAS should use for the matrix A: // // GxB_AUTO_SPARSITY: GraphBLAS selects automatically. @@ -3852,11 +4092,11 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; // formats can be bitwise negated. For example, to allow for any format // except full, use ~GxB_FULL. // -// GrB_get (A, &sparsity, GxB_SPARSITY_STATUS) returns the +// GxB_Matrix_Option_get (A, GxB_SPARSITY_STATUS, &sparsity) returns the // current data structure currently used for the matrix A (either hypersparse, // sparse, bitmap, or full). // -// GrB_get (A, &scontrol, GxB_SPARSITY_CONTROL) returns the hint +// GxB_Matrix_Option_get (A, GxB_SPARSITY_CONTROL, &scontrol) returns the hint // for how A should be stored (hypersparse, sparse, bitmap, or full, or any // combination). @@ -3887,6 +4127,183 @@ GB_GLOBAL const double GxB_HYPER_DEFAULT ; GB_GLOBAL const double GxB_ALWAYS_HYPER, GxB_NEVER_HYPER ; +GrB_Info GxB_Matrix_Option_set // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_set_INT32 // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_set_FP64 // set an option in a matrix +( + GrB_Matrix A, // matrix to modify + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Matrix_Option_get // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + ... // return value of the matrix option +) ; + +GrB_Info GxB_Matrix_Option_get_INT32 // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + int32_t *value // return value of the matrix option +) ; + +GrB_Info GxB_Matrix_Option_get_FP64 // gets the current option of a matrix +( + GrB_Matrix A, // matrix to query + GxB_Option_Field field, // option to query + double *value // return value of the matrix option +) ; + +GrB_Info GxB_Vector_Option_set // set an option in a vector +( + GrB_Vector A, // vector to modify + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Vector_Option_set_INT32 // set an option in a vector +( + GrB_Vector v, // vector to modify + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Vector_Option_set_FP64 // set an option in a vector +( + GrB_Vector v, // vector to modify + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Vector_Option_get // gets the current option of a vector +( + GrB_Vector A, // vector to query + GxB_Option_Field field, // option to query + ... // return value of the vector option +) ; + +GrB_Info GxB_Vector_Option_get_INT32 // gets the current option of a vector +( + GrB_Vector v, // vector to query + GxB_Option_Field field, // option to query + int32_t *value // return value of the vector option +) ; + +GrB_Info GxB_Vector_Option_get_FP64 // gets the current option of a vector +( + GrB_Vector v, // vector to query + GxB_Option_Field field, // option to query + double *value // return value of the vector option +) ; + +// GxB_Global_Option_set controls the global defaults used when a new matrix is +// created. GrB_init defines the following initial settings: +// +// GxB_Global_Option_set (GxB_HYPER_SWITCH, GxB_HYPER_DEFAULT) ; +// GxB_Global_Option_set (GxB_BITMAP_SWITCH, NULL) ; +// GxB_Global_Option_set (GxB_FORMAT, GxB_FORMAT_DEFAULT) ; +// +// The compile-time constants GxB_HYPER_DEFAULT and GxB_FORMAT_DEFAULT are +// equal to 0.0625 and GxB_BY_ROW, by default. That is, by default, all new +// matrices are held by row in CSR format. If a matrix has fewer than n/16 +// columns, it can be converted to hypersparse structure. If it has more than +// n/8 columns, it can be converted to a sparse structure. Modifying these +// global settings via GxB_Global_Option_set has no effect on matrices already +// created. + +GrB_Info GxB_Global_Option_set // set a global default option +( + GxB_Option_Field field, // option to change + ... // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_INT32 // set a global default option +( + GxB_Option_Field field, // option to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FP64 // set a global default option +( + GxB_Option_Field field, // option to change + double value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FP64_ARRAY // set a global default option +( + GxB_Option_Field field, // option to change + double *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_INT64_ARRAY // set a global default option +( + GxB_Option_Field field, // option to change + int64_t *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_CHAR // set a global default option +( + GxB_Option_Field field, // option to change + const char *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_set_FUNCTION // set a global default option +( + GxB_Option_Field field, // option to change + void *value // value to change it to +) ; + +GrB_Info GxB_Global_Option_get // gets the current global default option +( + GxB_Option_Field field, // option to query + ... // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_INT32 // gets the current global option +( + GxB_Option_Field field, // option to query + int32_t *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_FP64 // gets the current global option +( + GxB_Option_Field field, // option to query + double *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_INT64 // gets the current global option +( + GxB_Option_Field field, // option to query + int64_t *value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_CHAR // gets the current global option +( + GxB_Option_Field field, // option to query + const char **value // return value of the global option +) ; + +GrB_Info GxB_Global_Option_get_FUNCTION // gets the current global option +( + GxB_Option_Field field, // option to query + void **value // return value of the global option +) ; + //============================================================================== // GxB_Context: for managing computational resources //============================================================================== @@ -3919,6 +4336,48 @@ GrB_Info GxB_Context_free // free a Context GxB_Context *Context // handle of Context to free ) ; +GrB_Info GxB_Context_set_INT32 // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + int32_t value // value to change it to +) ; + +GrB_Info GxB_Context_set_FP64 // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + double value // value to change it to +) ; + +GrB_Info GxB_Context_set // set a parameter in a Context +( + GxB_Context Context, // Context to modify + GxB_Context_Field field, // parameter to change + ... // value to change it to +) ; + +GrB_Info GxB_Context_get_INT32 // get a parameter of a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + int32_t *value // return value from the Context +) ; + +GrB_Info GxB_Context_get_FP64 // get a parameter in a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + double *value // return value from the Context +) ; + +GrB_Info GxB_Context_get // get a parameter in a Context +( + GxB_Context Context, // Context to query + GxB_Context_Field field, // parameter to query + ... // return value of the descriptor +) ; + GrB_Info GxB_Context_engage // engage a Context ( GxB_Context Context // Context to engage @@ -3930,41 +4389,152 @@ GrB_Info GxB_Context_disengage // disengage a Context ) ; //============================================================================== -// GxB_set and GxB_get: historical; use GrB_set and GrB_get instead +// GxB_set and GxB_get //============================================================================== -// historical: use GrB_set and GrB_get instead of these methods: -GrB_Info GxB_Matrix_Option_set (GrB_Matrix, GxB_Option_Field, ...) ; -GrB_Info GxB_Matrix_Option_set_INT32 (GrB_Matrix, GxB_Option_Field, int32_t) ; -GrB_Info GxB_Matrix_Option_set_FP64 (GrB_Matrix, GxB_Option_Field, double) ; -GrB_Info GxB_Matrix_Option_get (GrB_Matrix, GxB_Option_Field, ...) ; -GrB_Info GxB_Matrix_Option_get_INT32 (GrB_Matrix, GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Matrix_Option_get_FP64 (GrB_Matrix, GxB_Option_Field, double *) ; -GrB_Info GxB_Vector_Option_set (GrB_Vector, GxB_Option_Field, ...) ; -GrB_Info GxB_Vector_Option_set_INT32 (GrB_Vector, GxB_Option_Field, int32_t) ; -GrB_Info GxB_Vector_Option_set_FP64 (GrB_Vector, GxB_Option_Field, double) ; -GrB_Info GxB_Vector_Option_get (GrB_Vector, GxB_Option_Field, ...) ; -GrB_Info GxB_Vector_Option_get_INT32 (GrB_Vector, GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Vector_Option_get_FP64 (GrB_Vector, GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_set (GxB_Option_Field, ...) ; -GrB_Info GxB_Global_Option_set_INT32 (GxB_Option_Field, int32_t) ; -GrB_Info GxB_Global_Option_set_FP64 (GxB_Option_Field, double) ; -GrB_Info GxB_Global_Option_set_FP64_ARRAY (GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_set_INT64_ARRAY (GxB_Option_Field, int64_t *) ; -GrB_Info GxB_Global_Option_set_CHAR (GxB_Option_Field, const char *) ; -GrB_Info GxB_Global_Option_set_FUNCTION (GxB_Option_Field, void *) ; -GrB_Info GxB_Global_Option_get (GxB_Option_Field, ...) ; -GrB_Info GxB_Global_Option_get_INT32 (GxB_Option_Field, int32_t *) ; -GrB_Info GxB_Global_Option_get_FP64 (GxB_Option_Field, double *) ; -GrB_Info GxB_Global_Option_get_INT64 (GxB_Option_Field, int64_t *) ; -GrB_Info GxB_Global_Option_get_CHAR (GxB_Option_Field, const char **) ; -GrB_Info GxB_Global_Option_get_FUNCTION (GxB_Option_Field, void **) ; -GrB_Info GxB_Context_set_INT32 (GxB_Context, GxB_Context_Field, int32_t) ; -GrB_Info GxB_Context_set_FP64 (GxB_Context, GxB_Context_Field, double) ; -GrB_Info GxB_Context_set (GxB_Context, GxB_Context_Field, ...) ; -GrB_Info GxB_Context_get_INT32 (GxB_Context, GxB_Context_Field, int32_t *) ; -GrB_Info GxB_Context_get_FP64 (GxB_Context, GxB_Context_Field, double *) ; -GrB_Info GxB_Context_get (GxB_Context, GxB_Context_Field, ...) ; +// The simplest way to set/get a value of a GrB_Descriptor is with +// the generic GxB_set and GxB_get functions: + +// GxB_set (desc, field, value) ; +// GxB_get (desc, field, &value) ; + +// GxB_set and GxB_get are generic methods that and set or query the options in +// a GrB_Matrix, a GrB_Descriptor, or in the global options. They can be used +// with the following syntax. + +// To set/get the global options: +// +// GxB_set (GxB_HYPER_SWITCH, double h) ; +// GxB_set (GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; +// GxB_set (GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; +// GxB_get (GxB_HYPER_SWITCH, double *h) ; +// +// double b [GxB_NBITMAP_SWITCH] ; +// GxB_set (GxB_BITMAP_SWITCH, b) ; +// GxB_set (GxB_BITMAP_SWITCH, NULL) ; // set defaults +// GxB_get (GxB_BITMAP_SWITCH, b) ; +// +// GxB_set (GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_CHUNK, double chunk) ; +// GxB_get (GxB_CHUNK, double *chunk) ; +// +// GxB_set (GxB_BURBLE, bool burble) ; +// GxB_get (GxB_BURBLE, bool *burble) ; +// +// GxB_set (GxB_PRINTF, void *printf_function) ; +// GxB_get (GxB_PRINTF, void **printf_function) ; +// +// GxB_set (GxB_FLUSH, void *flush_function) ; +// GxB_get (GxB_FLUSH, void **flush_function) ; + +// GxB_set (GxB_JIT_C_COMPILER_NAME, const char *compiler) ; +// GxB_get (GxB_JIT_C_COMPILER_NAME, const char **compiler) ; +// GxB_set (GxB_JIT_C_COMPILER_FLAGS, const char *flags) ; +// GxB_get (GxB_JIT_C_COMPILER_FLAGS, const char **flags) ; +// GxB_set (GxB_JIT_C_LINKER_FLAGS, const char *flags) ; +// GxB_get (GxB_JIT_C_LINKER_FLAGS, const char **flags) ; +// GxB_set (GxB_JIT_CACHE_PATH, const char *cache_path) ; +// GxB_get (GxB_JIT_CACHE_PATH, const char **cache_path) ; +// GxB_set (GxB_JIT_C_CONTROL, int control) ; +// GxB_get (GxB_JIT_C_CONTROL, int *control) ; + +// To set/get the GxB_CONTEXT_WORLD options: These have the same effect as +// the global set/get for NTHREADS and CHUNK, listed above. +// +// GxB_set (GxB_CONTEXT_WORLD, GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_CONTEXT_WORLD, GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_CONTEXT_WORLD, GxB_CHUNK, double chunk) ; +// GxB_get (GxB_CONTEXT_WORLD, GxB_CHUNK, double *chunk) ; + +// To set/get a Context option: +// +// GxB_set (GxB_Context Context, GxB_NTHREADS, nthreads_max) ; +// GxB_get (GxB_Context Context, GxB_NTHREADS, int *nthreads_max) ; +// +// GxB_set (GxB_Context Context, GxB_CHUNK, double chunk) ; +// GxB_get (GxB_Context Context, GxB_CHUNK, double *chunk) ; + +// To get global options that can be queried but not modified: +// +// GxB_get (GxB_MODE, GrB_Mode *mode) ; + +// To set/get a matrix option: +// +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, double h) ; +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_ALWAYS_HYPER) ; +// GxB_set (GrB_Matrix A, GxB_HYPER_SWITCH, GxB_NEVER_HYPER) ; +// GxB_get (GrB_Matrix A, GxB_HYPER_SWITCH, double *h) ; +// +// GxB_set (GrB_Matrix A, GxB_BITMAP_SWITCH, double b) ; +// GxB_get (GrB_Matrix A, GxB_BITMAP_SWITCH, double *b) ; +// +// GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GrB_Matrix A, GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GrB_Matrix A, GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; +// GxB_set (GrB_Matrix A, GxB_SPARSITY_CONTROL, scontrol) ; +// GxB_get (GrB_Matrix A, GxB_SPARSITY_CONTROL, int *scontrol) ; +// +// GxB_get (GrB_Matrix A, GxB_SPARSITY_STATUS, int *sparsity) ; + +// To set/get a vector option or status: +// +// GxB_set (GrB_Vector v, GxB_BITMAP_SWITCH, double b) ; +// GxB_get (GrB_Vector v, GxB_BITMAP_SWITCH, double *b) ; +// +// GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_ROW) ; +// GxB_set (GrB_Vector v, GxB_FORMAT, GxB_BY_COL) ; +// GxB_get (GrB_Vector v, GxB_FORMAT, GxB_Format_Value *s) ; +// +// GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, GxB_AUTO_SPARSITY) ; +// GxB_set (GrB_Vector v, GxB_SPARSITY_CONTROL, scontrol) ; +// GxB_get (GrB_Vector v, GxB_SPARSITY_CONTROL, int *scontrol) ; +// +// GxB_get (GrB_Vector v, GxB_SPARSITY_STATUS, int *sparsity) ; + +// To set/get a descriptor field: +// +// GxB_set (GrB_Descriptor d, GrB_OUTP, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_OUTP, GrB_REPLACE) ; +// GxB_get (GrB_Descriptor d, GrB_OUTP, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_MASK, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_STRUCTURE) ; +// GxB_set (GrB_Descriptor d, GrB_MASK, GrB_COMP + GrB_STRUCTURE) ; +// GxB_get (GrB_Descriptor d, GrB_MASK, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_INP0, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_INP0, GrB_TRAN) ; +// GxB_get (GrB_Descriptor d, GrB_INP0, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GrB_INP1, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GrB_INP1, GrB_TRAN) ; +// GxB_get (GrB_Descriptor d, GrB_INP1, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_DEFAULT) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_GUSTAVSON) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_HASH) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_SAXPY) ; +// GxB_set (GrB_Descriptor d, GxB_AxB_METHOD, GxB_AxB_DOT) ; +// GxB_get (GrB_Descriptor d, GrB_AxB_METHOD, GrB_Desc_Value *v) ; +// +// GxB_set (GrB_Descriptor d, GxB_SORT, int sort) ; +// GxB_get (GrB_Descriptor d, GxB_SORT, int *sort) ; +// +// GxB_set (GrB_Descriptor d, GxB_COMPRESSION, int method) ; +// GxB_get (GrB_Descriptor d, GxB_COMPRESSION, int *method) ; +// +// GxB_set (GrB_Descriptor d, GxB_IMPORT, int method) ; +// GxB_get (GrB_Descriptor d, GxB_IMPORT, int *method) ; #if GxB_STDC_VERSION >= 201112L #define GxB_set(arg1,...) \ @@ -3994,518 +4564,6 @@ GrB_Info GxB_Context_get (GxB_Context, GxB_Context_Field, ...) ; (arg1, __VA_ARGS__) #endif -//============================================================================== -// GrB_set and GrB_get -//============================================================================== - -typedef struct GB_Global_opaque *GrB_Global ; -GB_GLOBAL const GrB_Global GrB_GLOBAL ; - -typedef enum -{ - - //-------------------------------------------------------------------------- - // GrB enums in the C API - //-------------------------------------------------------------------------- - - // GrB_Descriptor only: - GrB_OUTP_FIELD = 0, // descriptor for output of a method - GrB_MASK_FIELD = 1, // descriptor for the mask input of a method - GrB_INP0_FIELD = 2, // descriptor for the first input of a method - GrB_INP1_FIELD = 3, // descriptor for the second input of a method - - // all objects, including GrB_GLOBAL: - GrB_NAME = 10, // name of the object, as a string - - // GrB_GLOBAL only: - GrB_LIBRARY_VER_MAJOR = 11, // SuiteSparse:GraphBLAS version - GrB_LIBRARY_VER_MINOR = 12, - GrB_LIBRARY_VER_PATCH = 13, - GrB_API_VER_MAJOR = 14, // C API version - GrB_API_VER_MINOR = 15, - GrB_API_VER_PATCH = 16, - GrB_BLOCKING_MODE = 17, // GrB_Mode - - // GrB_GLOBAL, GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_STORAGE_ORIENTATION_HINT = 100, // GrB_Orientation - - // GrB_Matrix, GrB_Vector, GrB_Scalar (and void * serialize?): - GrB_ELTYPE_CODE = 102, // a GrB_Type_code (see below) - GrB_ELTYPE_STRING = 106, // name of the type - - // GrB_*Op, GrB_Monoid, and GrB_Semiring: - GrB_INPUT1TYPE_CODE = 103, // GrB_Type_code - GrB_INPUT2TYPE_CODE = 104, - GrB_OUTPUTTYPE_CODE = 105, - GrB_INPUT1TYPE_STRING = 107, // name of the type, as a string - GrB_INPUT2TYPE_STRING = 108, - GrB_OUTPUTTYPE_STRING = 109, - - // GrB_Type (readable only): - GrB_SIZE = 110, // size of the type - - //-------------------------------------------------------------------------- - // SuiteSparse extensions: - //-------------------------------------------------------------------------- - - // GrB_Type, GrB_UnaryOp, GrB_BinaryOp, and GrB_IndexUnaryOp: - GxB_JIT_C_NAME = 7041, // C type or function name - GxB_JIT_C_DEFINITION = 7042, // C typedef or function definition - - // GrB_Monoid and GrB_Semiring: - GxB_MONOID_IDENTITY = 7043, // monoid identity value - GxB_MONOID_TERMINAL = 7044, // monoid terminal value - GxB_MONOID_OPERATOR = 7045, // monoid binary operator - - // GrB_Semiring only: - GxB_SEMIRING_MONOID = 7046, // semiring monoid - GxB_SEMIRING_MULTIPLY = 7047, // semiring multiplicative op -} -GrB_Field ; - -typedef enum -{ - GrB_ROWMAJOR = 0, - GrB_COLMAJOR = 1, - GrB_BOTH = 2, - GrB_UNKNOWN = 3, -} -GrB_Orientation ; - -typedef enum -{ - GrB_UDT_CODE = 0, // user-defined type - GrB_BOOL_CODE = 1, // GraphBLAS: GrB_BOOL C: bool - GrB_INT8_CODE = 2, // GraphBLAS: GrB_INT8 C: int8_t - GrB_UINT8_CODE = 3, // GraphBLAS: GrB_UINT8 C: uint8_t - GrB_INT16_CODE = 4, // GraphBLAS: GrB_INT16 C: int16_t - GrB_UINT16_CODE = 5, // GraphBLAS: GrB_UINT16 C: uint16_t - GrB_INT32_CODE = 6, // GraphBLAS: GrB_INT32 C: int32_t - GrB_UINT32_CODE = 7, // GraphBLAS: GrB_UINT32 C: uint32_t - GrB_INT64_CODE = 8, // GraphBLAS: GrB_INT64 C: int64_t - GrB_UINT64_CODE = 9, // GraphBLAS: GrB_UINT64 C: uint64_t - GrB_FP32_CODE = 10, // GraphBLAS: GrB_FP32 C: float - GrB_FP64_CODE = 11, // GraphBLAS: GrB_FP64 C: double - GxB_FC32_CODE = 7070, // GraphBLAS: GxB_FC32 C: float complex - GxB_FC64_CODE = 7071, // GraphBLAS: GxB_FC64 C: double complex -} -GrB_Type_Code ; - -//------------------------------------------------------------------------------ -// GrB_get: get a scalar, string, enum, size, or void * from an object -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_Scalar (GrB_Scalar, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Scalar_get_String (GrB_Scalar, char * , GrB_Field) ; -GrB_Info GrB_Scalar_get_INT32 (GrB_Scalar, int32_t * , GrB_Field) ; -GrB_Info GrB_Scalar_get_SIZE (GrB_Scalar, size_t * , GrB_Field) ; -GrB_Info GrB_Scalar_get_VOID (GrB_Scalar, void * , GrB_Field) ; - -GrB_Info GrB_Vector_get_Scalar (GrB_Vector, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Vector_get_String (GrB_Vector, char * , GrB_Field) ; -GrB_Info GrB_Vector_get_INT32 (GrB_Vector, int32_t * , GrB_Field) ; -GrB_Info GrB_Vector_get_SIZE (GrB_Vector, size_t * , GrB_Field) ; -GrB_Info GrB_Vector_get_VOID (GrB_Vector, void * , GrB_Field) ; - -GrB_Info GrB_Matrix_get_Scalar (GrB_Matrix, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Matrix_get_String (GrB_Matrix, char * , GrB_Field) ; -GrB_Info GrB_Matrix_get_INT32 (GrB_Matrix, int32_t * , GrB_Field) ; -GrB_Info GrB_Matrix_get_SIZE (GrB_Matrix, size_t * , GrB_Field) ; -GrB_Info GrB_Matrix_get_VOID (GrB_Matrix, void * , GrB_Field) ; - -GrB_Info GxB_Serialized_get_Scalar (const void *, GrB_Scalar, GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_String (const void *, char * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_INT32 (const void *, int32_t * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_SIZE (const void *, size_t * , GrB_Field, size_t) ; -GrB_Info GxB_Serialized_get_VOID (const void *, void * , GrB_Field, size_t) ; - -GrB_Info GrB_UnaryOp_get_Scalar (GrB_UnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_UnaryOp_get_String (GrB_UnaryOp, char * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_INT32 (GrB_UnaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_SIZE (GrB_UnaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_UnaryOp_get_VOID (GrB_UnaryOp, void * , GrB_Field) ; - -GrB_Info GrB_IndexUnaryOp_get_Scalar (GrB_IndexUnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_String (GrB_IndexUnaryOp, char * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_INT32 (GrB_IndexUnaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_SIZE (GrB_IndexUnaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_get_VOID (GrB_IndexUnaryOp, void * , GrB_Field) ; - -GrB_Info GrB_BinaryOp_get_Scalar (GrB_BinaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_BinaryOp_get_String (GrB_BinaryOp, char * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_INT32 (GrB_BinaryOp, int32_t * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_SIZE (GrB_BinaryOp, size_t * , GrB_Field) ; -GrB_Info GrB_BinaryOp_get_VOID (GrB_BinaryOp, void * , GrB_Field) ; - -GrB_Info GrB_Monoid_get_Scalar (GrB_Monoid, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Monoid_get_String (GrB_Monoid, char * , GrB_Field) ; -GrB_Info GrB_Monoid_get_INT32 (GrB_Monoid, int32_t * , GrB_Field) ; -GrB_Info GrB_Monoid_get_SIZE (GrB_Monoid, size_t * , GrB_Field) ; -GrB_Info GrB_Monoid_get_VOID (GrB_Monoid, void * , GrB_Field) ; - -GrB_Info GrB_Semiring_get_Scalar (GrB_Semiring, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Semiring_get_String (GrB_Semiring, char * , GrB_Field) ; -GrB_Info GrB_Semiring_get_INT32 (GrB_Semiring, int32_t * , GrB_Field) ; -GrB_Info GrB_Semiring_get_SIZE (GrB_Semiring, size_t * , GrB_Field) ; -GrB_Info GrB_Semiring_get_VOID (GrB_Semiring, void * , GrB_Field) ; - -GrB_Info GrB_Descriptor_get_Scalar (GrB_Descriptor, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Descriptor_get_String (GrB_Descriptor, char * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_INT32 (GrB_Descriptor, int32_t * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_SIZE (GrB_Descriptor, size_t * , GrB_Field) ; -GrB_Info GrB_Descriptor_get_VOID (GrB_Descriptor, void * , GrB_Field) ; - -GrB_Info GrB_Type_get_Scalar (GrB_Type, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Type_get_String (GrB_Type, char * , GrB_Field) ; -GrB_Info GrB_Type_get_INT32 (GrB_Type, int32_t * , GrB_Field) ; -GrB_Info GrB_Type_get_SIZE (GrB_Type, size_t * , GrB_Field) ; -GrB_Info GrB_Type_get_VOID (GrB_Type, void * , GrB_Field) ; - -GrB_Info GrB_Global_get_Scalar (GrB_Global, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Global_get_String (GrB_Global, char * , GrB_Field) ; -GrB_Info GrB_Global_get_INT32 (GrB_Global, int32_t * , GrB_Field) ; -GrB_Info GrB_Global_get_SIZE (GrB_Global, size_t * , GrB_Field) ; -GrB_Info GrB_Global_get_VOID (GrB_Global, void * , GrB_Field) ; - -GrB_Info GxB_Context_get_Scalar (GxB_Context, GrB_Scalar, GrB_Field) ; -GrB_Info GxB_Context_get_String (GxB_Context, char * , GrB_Field) ; -GrB_Info GxB_Context_get_INT (GxB_Context, int32_t * , GrB_Field) ; -GrB_Info GxB_Context_get_SIZE (GxB_Context, size_t * , GrB_Field) ; -GrB_Info GxB_Context_get_VOID (GxB_Context, void * , GrB_Field) ; - -// GrB_get (object, value, field): -#if GxB_STDC_VERSION >= 201112L -#define GrB_get(object,value,...) \ - _Generic \ - ( \ - (object), \ - GrB_Scalar : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Scalar_get_Scalar , \ - char * : GrB_Scalar_get_String , \ - int32_t * : GrB_Scalar_get_INT32 , \ - size_t * : GrB_Scalar_get_SIZE , \ - void * : GrB_Scalar_get_VOID \ - ) , \ - GrB_Vector : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Vector_get_Scalar , \ - char * : GrB_Vector_get_String , \ - int32_t * : GrB_Vector_get_INT32 , \ - size_t * : GrB_Vector_get_SIZE , \ - void * : GrB_Vector_get_VOID \ - ) , \ - GrB_Matrix : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Matrix_get_Scalar , \ - char * : GrB_Matrix_get_String , \ - int32_t * : GrB_Matrix_get_INT32 , \ - size_t * : GrB_Matrix_get_SIZE , \ - void * : GrB_Matrix_get_VOID \ - ) , \ - GrB_UnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_UnaryOp_get_Scalar , \ - char * : GrB_UnaryOp_get_String , \ - int32_t * : GrB_UnaryOp_get_INT32 , \ - size_t * : GrB_UnaryOp_get_SIZE , \ - void * : GrB_UnaryOp_get_VOID \ - ) , \ - GrB_IndexUnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_IndexUnaryOp_get_Scalar , \ - char * : GrB_IndexUnaryOp_get_String , \ - int32_t * : GrB_IndexUnaryOp_get_INT32 , \ - size_t * : GrB_IndexUnaryOp_get_SIZE , \ - void * : GrB_IndexUnaryOp_get_VOID \ - ) , \ - GrB_BinaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_BinaryOp_get_Scalar , \ - char * : GrB_BinaryOp_get_String , \ - int32_t * : GrB_BinaryOp_get_INT32 , \ - size_t * : GrB_BinaryOp_get_SIZE , \ - void * : GrB_BinaryOp_get_VOID \ - ) , \ - GrB_Monoid : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Monoid_get_Scalar , \ - char * : GrB_Monoid_get_String , \ - int32_t * : GrB_Monoid_get_INT32 , \ - size_t * : GrB_Monoid_get_SIZE , \ - void * : GrB_Monoid_get_VOID \ - ) , \ - GrB_Semiring : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Semiring_get_Scalar , \ - char * : GrB_Semiring_get_String , \ - int32_t * : GrB_Semiring_get_INT32 , \ - size_t * : GrB_Semiring_get_SIZE , \ - void * : GrB_Semiring_get_VOID \ - ) , \ - GrB_Type : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Type_get_Scalar , \ - char * : GrB_Type_get_String , \ - int32_t * : GrB_Type_get_INT32 , \ - size_t * : GrB_Type_get_SIZE , \ - void * : GrB_Type_get_VOID \ - ) , \ - GrB_Descriptor : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Descriptor_get_Scalar , \ - char * : GrB_Descriptor_get_String , \ - int32_t * : GrB_Descriptor_get_INT32 , \ - size_t * : GrB_Descriptor_get_SIZE , \ - void * : GrB_Descriptor_get_VOID \ - ) , \ - GrB_Global : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Global_get_Scalar , \ - char * : GrB_Global_get_String , \ - int32_t * : GrB_Global_get_INT32 , \ - size_t * : GrB_Global_get_SIZE , \ - void * : GrB_Global_get_VOID \ - ) , \ - GxB_Context : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Context_get_Scalar , \ - char * : GxB_Context_get_String , \ - int32_t * : GxB_Context_get_INT , \ - size_t * : GxB_Context_get_SIZE , \ - void * : GxB_Context_get_VOID \ - ) , \ - const void *: \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Serialized_get_Scalar , \ - char * : GxB_Serialized_get_String , \ - int32_t * : GxB_Serialized_get_INT32 , \ - size_t * : GxB_Serialized_get_SIZE , \ - void * : GxB_Serialized_get_VOID \ - ) , \ - void *: \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Serialized_get_Scalar , \ - char * : GxB_Serialized_get_String , \ - int32_t * : GxB_Serialized_get_INT32 , \ - size_t * : GxB_Serialized_get_SIZE , \ - void * : GxB_Serialized_get_VOID \ - ) \ - ) (object, value, __VA_ARGS__) - -//------------------------------------------------------------------------------ -// GrB_set: set a scalar, string, enum, size, or void * of an object -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_Scalar (GrB_Scalar, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Scalar_set_String (GrB_Scalar, char * , GrB_Field) ; -GrB_Info GrB_Scalar_set_INT32 (GrB_Scalar, int32_t , GrB_Field) ; -GrB_Info GrB_Scalar_set_VOID (GrB_Scalar, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Vector_set_Scalar (GrB_Vector, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Vector_set_String (GrB_Vector, char * , GrB_Field) ; -GrB_Info GrB_Vector_set_INT32 (GrB_Vector, int32_t , GrB_Field) ; -GrB_Info GrB_Vector_set_VOID (GrB_Vector, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Matrix_set_Scalar (GrB_Matrix, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Matrix_set_String (GrB_Matrix, char * , GrB_Field) ; -GrB_Info GrB_Matrix_set_INT32 (GrB_Matrix, int32_t , GrB_Field) ; -GrB_Info GrB_Matrix_set_VOID (GrB_Matrix, void * , GrB_Field, size_t) ; - -GrB_Info GrB_UnaryOp_set_Scalar (GrB_UnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_UnaryOp_set_String (GrB_UnaryOp, char * , GrB_Field) ; -GrB_Info GrB_UnaryOp_set_INT32 (GrB_UnaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_UnaryOp_set_VOID (GrB_UnaryOp, void * , GrB_Field, size_t) ; - -GrB_Info GrB_IndexUnaryOp_set_Scalar (GrB_IndexUnaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_String (GrB_IndexUnaryOp, char * , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_INT32 (GrB_IndexUnaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_IndexUnaryOp_set_VOID (GrB_IndexUnaryOp, void * , GrB_Field, - size_t) ; - -GrB_Info GrB_BinaryOp_set_Scalar (GrB_BinaryOp, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_BinaryOp_set_String (GrB_BinaryOp, char * , GrB_Field) ; -GrB_Info GrB_BinaryOp_set_INT32 (GrB_BinaryOp, int32_t , GrB_Field) ; -GrB_Info GrB_BinaryOp_set_VOID (GrB_BinaryOp, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Monoid_set_Scalar (GrB_Monoid, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Monoid_set_String (GrB_Monoid, char * , GrB_Field) ; -GrB_Info GrB_Monoid_set_INT32 (GrB_Monoid, int32_t , GrB_Field) ; -GrB_Info GrB_Monoid_set_VOID (GrB_Monoid, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Semiring_set_Scalar (GrB_Semiring, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Semiring_set_String (GrB_Semiring, char * , GrB_Field) ; -GrB_Info GrB_Semiring_set_INT32 (GrB_Semiring, int32_t , GrB_Field) ; -GrB_Info GrB_Semiring_set_VOID (GrB_Semiring, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Descriptor_set_Scalar (GrB_Descriptor, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Descriptor_set_String (GrB_Descriptor, char * , GrB_Field) ; -GrB_Info GrB_Descriptor_set_INT32 (GrB_Descriptor, int32_t , GrB_Field) ; -GrB_Info GrB_Descriptor_set_VOID (GrB_Descriptor, void * , GrB_Field, - size_t) ; - -GrB_Info GrB_Type_set_Scalar (GrB_Type, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Type_set_String (GrB_Type, char * , GrB_Field) ; -GrB_Info GrB_Type_set_INT32 (GrB_Type, int32_t , GrB_Field) ; -GrB_Info GrB_Type_set_VOID (GrB_Type, void * , GrB_Field, size_t) ; - -GrB_Info GrB_Global_set_Scalar (GrB_Global, GrB_Scalar, GrB_Field) ; -GrB_Info GrB_Global_set_String (GrB_Global, char * , GrB_Field) ; -GrB_Info GrB_Global_set_INT32 (GrB_Global, int32_t , GrB_Field) ; -GrB_Info GrB_Global_set_VOID (GrB_Global, void * , GrB_Field, size_t) ; - -GrB_Info GxB_Context_set_Scalar (GxB_Context, GrB_Scalar, GrB_Field) ; -GrB_Info GxB_Context_set_String (GxB_Context, char * , GrB_Field) ; -GrB_Info GxB_Context_set_INT (GxB_Context, int32_t , GrB_Field) ; -GrB_Info GxB_Context_set_VOID (GxB_Context, void * , GrB_Field, size_t) ; - -// GrB_set (object, value, field) or (object, value, field, size) for _VOID -#if GxB_STDC_VERSION >= 201112L -#define GrB_set(object,value,...) \ - _Generic \ - ( \ - (object), \ - GrB_Scalar : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Scalar_set_Scalar , \ - char * : GrB_Scalar_set_String , \ - int32_t : GrB_Scalar_set_INT32 , \ - void * : GrB_Scalar_set_VOID \ - ) , \ - GrB_Vector : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Vector_set_Scalar , \ - char * : GrB_Vector_set_String , \ - int32_t : GrB_Vector_set_INT32 , \ - void * : GrB_Vector_set_VOID \ - ) , \ - GrB_Matrix : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Matrix_set_Scalar , \ - char * : GrB_Matrix_set_String , \ - int32_t : GrB_Matrix_set_INT32 , \ - void * : GrB_Matrix_set_VOID \ - ) , \ - GrB_UnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_UnaryOp_set_Scalar , \ - char * : GrB_UnaryOp_set_String , \ - int32_t : GrB_UnaryOp_set_INT32 , \ - void * : GrB_UnaryOp_set_VOID \ - ) , \ - GrB_IndexUnaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_IndexUnaryOp_set_Scalar , \ - char * : GrB_IndexUnaryOp_set_String , \ - int32_t : GrB_IndexUnaryOp_set_INT32 , \ - void * : GrB_IndexUnaryOp_set_VOID \ - ) , \ - GrB_BinaryOp : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_BinaryOp_set_Scalar , \ - char * : GrB_BinaryOp_set_String , \ - int32_t : GrB_BinaryOp_set_INT32 , \ - void * : GrB_BinaryOp_set_VOID \ - ) , \ - GrB_Monoid : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Monoid_set_Scalar , \ - char * : GrB_Monoid_set_String , \ - int32_t : GrB_Monoid_set_INT32 , \ - void * : GrB_Monoid_set_VOID \ - ) , \ - GrB_Semiring : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Semiring_set_Scalar , \ - char * : GrB_Semiring_set_String , \ - int32_t : GrB_Semiring_set_INT32 , \ - void * : GrB_Semiring_set_VOID \ - ) , \ - GrB_Type : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Type_set_Scalar , \ - char * : GrB_Type_set_String , \ - int32_t : GrB_Type_set_INT32 , \ - void * : GrB_Type_set_VOID \ - ) , \ - GrB_Descriptor : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Descriptor_set_Scalar , \ - char * : GrB_Descriptor_set_String , \ - int32_t : GrB_Descriptor_set_INT32 , \ - void * : GrB_Descriptor_set_VOID \ - ) , \ - GrB_Global : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GrB_Global_set_Scalar , \ - char * : GrB_Global_set_String , \ - int32_t : GrB_Global_set_INT32 , \ - void * : GrB_Global_set_VOID \ - ) , \ - GxB_Context : \ - _Generic \ - ( \ - (value), \ - GrB_Scalar : GxB_Context_set_Scalar , \ - char * : GxB_Context_set_String , \ - int32_t : GxB_Context_set_INT , \ - void * : GxB_Context_set_VOID \ - ) \ - ) (object, value, __VA_ARGS__) -#endif - -#endif - //============================================================================== // GrB_free: free any GraphBLAS object //============================================================================== @@ -9193,11 +9251,6 @@ GrB_Info GxB_Context_fprint // print and check a GxB_Context FILE *f // file for output ) ; -// user code should not directly use GB_STR or GB_XSTR -// GB_STR: convert the content of x into a string "x" -#define GB_XSTR(x) GB_STR(x) -#define GB_STR(x) #x - #if GxB_STDC_VERSION >= 201112L #define GxB_fprint(object,pr,f) \ _Generic \ @@ -10752,7 +10805,7 @@ GrB_Info GrB_Matrix_exportHint // suggest the best export format fread (blob, sizeof (uint8_t), blob_size, f) ; fclose (f) ; char type_name [GxB_MAX_NAME_LEN] ; - GrB_get (blob, type_name, GxB_JIT_C_NAME, blob_size) ; + GxB_deserialize_type_name (type_name, blob, blob_size) ; printf ("blob type is: %s\n", type_name) ; GrB_Type user_type = NULL ; if (strncmp (type_name, "myquaternion", GxB_MAX_NAME_LEN) == 0) @@ -10907,8 +10960,23 @@ GrB_Info GxB_Vector_deserialize // deserialize blob into a GrB_Vector const GrB_Descriptor desc // to control # of threads used ) ; -// historical; use GrB_get with GxB_JIT_C_NAME instead. -GrB_Info GxB_deserialize_type_name (char *, const void *, GrB_Index) ; +// GxB_deserialize_type_name extracts the type_name of the GrB_Type of the +// GrB_Matrix or GrB_Vector held in a serialized blob. On input, type_name +// must point to a user-owned char array of size at least GxB_MAX_NAME_LEN (it +// must not point into the blob itself). On output, type_name will contain a +// null-terminated string with the corresponding C type name. If the blob +// holds a matrix of a built-in type, the name is returned as "bool" for +// GrB_BOOL, "uint8_t" for GrB_UINT8, "float complex" for GxB_FC32, etc. +// See GxB_Type_name to convert this name into a GrB_Type. +GrB_Info GxB_deserialize_type_name // return the type name of a blob +( + // output: + char *type_name, // name of the type (char array of size at least + // GxB_MAX_NAME_LEN, owned by the user application). + // input, not modified: + const void *blob, // the blob + GrB_Index blob_size // size of the blob +) ; //============================================================================== // GxB_Vector_sort and GxB_Matrix_sort: sort a matrix or vector diff --git a/JITpackage/CMakeLists.txt b/JITpackage/CMakeLists.txt index 5a8ba31452..6ab6f7e521 100644 --- a/JITpackage/CMakeLists.txt +++ b/JITpackage/CMakeLists.txt @@ -15,3 +15,16 @@ if ( NOT WIN32 ) target_link_libraries ( grb_jitpackage PUBLIC m ) endif ( ) +file ( GLOB GRB_SOURCE_FILES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + "../Include/GraphBLAS.h" + "../Source/Template/*.[ch]" + "../Source/JitKernels/*.[ch]" + "../Source/Shared/*.h" ) + +add_custom_command ( TARGET grb_jitpackage POST_BUILD + COMMAND $ + ARGS ${GRB_SOURCE_FILES} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Generating compressed sources for JIT compiler..." +) diff --git a/JITpackage/GB_JITpackage.c b/JITpackage/GB_JITpackage.c index ab3622e320..39b88bc951 100644 --- a/JITpackage/GB_JITpackage.c +++ b/JITpackage/GB_JITpackage.c @@ -17,15539 +17,15515 @@ GB_JITpackage_index_struct GB_JITpackage_index [1] = {{0, 0, NULL, NULL}} ; int GB_JITpackage_nfiles = 217 ; // ../Include/GraphBLAS.h: -uint8_t GB_JITpackage_0 [56892] = { - 40,181, 47,253,160,202, 40, 9, 0, 52,209, 0,202,188, 20, 34, 45,176, 80, 25, - 55,170, 30, 65,118,129, 89,225, 78, 42,178,204,150, 92,136,206,189, 84,161,211, -252,239,205,132,158,222, 7, 90,128,198,200,108,180, 76,248,167,244,167,193,127, -176, 11,236, 1, 41, 2, 35, 2,253,236, 30,202,181,127,118, 67,106, 24,189, 57, -147,202,165,115,185, 4, 63,233,115,251,106,235, 13,157,214, 78,119, 72, 25, 63, - 80,210,133,220,245,161,236,232,246,159,126, 20,108, 8,157,238,103, 87,242,146, -110,184,208, 63, 56,173, 31,183, 7,232,204,105,140,140,117,178,115,199,169,156, - 91,102, 53,190,175, 89, 91,216,208,157, 81,162,202, 24,241,205,241,220,217,158, -200,249,255,167, 47,181,152,117,231, 90,139, 99,122,238,169,103,204, 85, 11,195, - 0,105,108,125,214,150,151,190, 44,110, 29,167, 92, 72,210,142, 68,111,118,114, -182,237, 93,229,214, 54,139,222,179, 53,176, 72,132, 90,235,178, 76,149,127,210, -109,239, 45,243,223, 89,198,219,155,173,116,110,253,142, 11,213,110,179,175,229, - 38,126,244,108, 72, 74,206,226,220,178,174,251,221, 86, 63,198, 77,207,197, 48, - 52, 22,180,213,248,217,111,185,225,153,205, 78,219, 79,107, 59,237, 74, 13, 59, -153,205, 24, 96,105,230,253,221,140, 92, 39,205,182,101,212,246,227,150,145, 62, -139,149,185,222,234,100, 78,203,158,116, 97, 63,111,246,185,173, 70,167,156, 25, - 43,183,103,219,225,244,211, 28,187,182,237,137,255,237, 29,217,105,222, 31,218, -129,209, 67,157, 83,187, 58, 91,178, 39,118, 23,122,219, 57,139,239, 59, 11,101, -179, 51,182, 0,153,214,133, 29,101,167,195, 59,123,131,176, 43,125,119, 66,117, -242,190,211, 80,237,232,236, 89,216, 53,114, 81,206,110,235, 83, 78, 50,103,198, -239,246, 61,103, 70,143, 92,179,111,154, 35, 25, 54,156, 93, 65,189,147,217,187, - 67, 23, 20,189, 50,183, 95,251,123,203,226,246,217, 7,157,225,228,250, 26, 93, -174,179,185,184, 93, 91,118, 56,154, 45,239,199,165,144,232,109, 90,137,119,212, - 98,157, 13, 45,137,254,217, 89,164, 72, 68,152,112, 72,176, 61,222,223,152,253, -186,113, 34,102,165,156,246, 85, 80, 64, 40, 36, 14, 68, 32, 20, 27,101,143,125, - 31, 61, 60, 89,105,218,208, 86, 41, 23, 51,251, 28,154,195, 29, 25,119,182,183, -186, 78,181,253, 73, 99,141, 51,106, 13, 87,178, 73, 43, 49, 49,225, 0,145, 32, -146,197, 94, 19, 5, 99,235,176,107, 72,250,157, 59, 87,215,216, 93, 59, 49, 17, -146,117,150, 93, 22,171,115, 71,130, 69, 96,136, 68, 64,138, 64, 30,129, 23,177, - 84, 21,235, 67, 21,210,140,146, 36, 69, 21, 15,242, 40, 30, 21,135, 68,179, 43, -213,248, 43,249,250, 93,155,139, 85,130,195,219,145,245,150,121,111,184,110,210, - 79,117, 73,157,206,149, 92, 44,192,176, 44,243,204,157,172,137,245,192,130, 97, - 20,245,192,130,237,126, 39, 59, 89,253,246,200,194, 34,118,192, 70,145, 63,162, -199, 35,122, 60, 40, 64, 42,196,204,184, 66, 33, 25,216, 44,227,116, 25,219,143, -237, 99,225, 99,130,101, 96, 85,163,177,226, 16,217,235,130,161,166, 10,118, 77, - 27, 81,124,254,200,136, 64, 17, 48,176,160,229,166,163, 48,193, 86,140,162,130, -202,216, 5,149,169,212, 20, 72, 36,176,190,213, 45,200, 6, 12,160,176,105,162, -161, 34, 84, 20,216,154,108, 25,183, 90,187,210, 38, 77, 92, 19,157,121, 71,175, -137, 14, 8, 98,129,160,185,238,159, 29, 40, 22, 16, 2, 5, 34, 16, 11, 11,139, -200, 74, 44, 44, 40, 34,145, 8, 5, 18,145, 28,192, 48,203,197,186, 38, 88,123, -120,163,112,155,195, 29,103,178,124, 16,224, 71,168, 69,136, 5, 85, 99, 4,157, -126, 66,221,241,216,175,209,105,149, 29,255, 74,253, 18, 10, 51, 43,133,156,189, -114,212,181,125,147, 46,101,101,166,204, 37, 37,220, 7,134,237,116,167,111,255, - 67,225,140, 16,152,218, 12,230,194, 17,161,194, 40,148,137,134,101,162,104,208, - 64,177, 56, 42, 23, 10,163, 84, 25,139,133, 61, 48,213, 3,140,186, 42,152,212, -137,158,125,195,247, 48,210, 73,185,125, 47,162,168,224,200,192, 46, 13,133,163, - 59,162,180,208,158,145, 36,111,168,116,150, 89, 67, 9,101,194,184, 80, 52,188, -101,212, 34,156, 24, 24,253,154,126,217, 1, 28, 30, 54,233, 1, 4, 2, 69,112, - 76, 4,218,135, 85, 52, 30,187, 27,129, 30,146,196,164,179,251, 83,155,183,239, - 15,221,246,189,236,233,221,225, 93,150,209,111, 10,189,163,116,246,246,108, 63, -205,102,252,125, 31, 42, 37,237,140, 53, 6,112, 98, 98,119,215, 33,218,170, 98, -101, 44, 26, 12,150,177, 26, 96, 0, 86,128,128,141, 30, 75,153, 30, 84,161, 13, - 16, 96, 65, 27,133, 30,232, 65,145,153, 40,239,202,146, 35,152,197,152, 40,153, -169,194,241,108,231, 56,215, 25, 37,165,155, 77,148,112,186,247,130, 77,162, 17, -214, 87, 16,218, 44,108,247,253,139, 0, 14, 27,216, 6,199,132,209, 88,173,225, -212, 98, 0, 72,183,234, 93,237,180,250, 29,141, 30, 26,142, 45, 51, 96, 85,142, -194, 2, 27, 84,102,170, 92,214, 84,185, 76, 30,206,142, 18,128,188,105,142,254, - 38,168,152, 88,180,235, 80, 96, 46, 28, 24,108, 12, 81,242,206,254, 23,145,216, -139, 73, 53,193,162, 76, 22,203,162,249,142, 55, 80, 91, 32,128, 28,216,139, 75, - 51,109, 68,168, 28,250, 59,178,240,226, 99,122,145,189,216, 74,131, 73, 38, 63, - 41,251,179, 15,178, 23,123, 93, 21, 69,105,174, 12, 14,206,155,161,170, 6, 24, - 23, 76, 66,134,163, 82, 77,170,204,197, 82,129, 36, 3,158, 14, 71, 43,199,153, -188, 81,158,231,186,217, 33, 24, 97,133, 20,169, 63,105,199,109,167,220,106,221, -239,243, 71,171,204, 59,189,171,237,147,228, 72,221,163, 90, 99, 79,234,173, 37, -136, 34, 43,177, 17,196,192, 42, 80, 16,121,108,244,120, 96, 64, 12, 84,160,136, - 12,240,216,157,100, 79,253,230,120,132,106, 98, 73,176,157,211,154,125,228, 34, -124,113, 39,215,201,253, 80,151,128, 94,101,178,174,125,213,123, 35,163,198, 74, - 17, 54,196,155,214,185,103,164,204, 56,237,236,180,131, 16,215,222, 13, 42, 16, - 24,187, 18,103,178,132,149,206,111,203,100, 67,216,142,232, 21,123,108,167,149, -133,232,167, 13, 88,202, 88,201, 42, 91, 43,205,174,175,213,153,235, 28,108,101, -223,236, 45,171, 92,108,224,237,205,113,209,193,118,136, 49,251,178, 78,118, 48, - 52,237,235,200,168, 99,172,133,217, 24, 79,242,168,253,143,156,119,103,122,123, - 40,167, 59,198,222, 55,177, 88, 14, 86,130,101,218, 12,107, 98,185, 80,139,185, -236, 85, 77, 24,204, 4, 97, 35, 99, 65,120,151,117, 77, 24,251, 64,225,178,246, - 99,132,237,252,169, 26,173,209,157,195, 31,150,223,114,106, 38,126,130,227, 84, - 98,233,243,249, 76, 10,149,119, 67,119, 59, 42, 97, 87,234,108,114,204, 64, 29, - 98,110, 59, 26,218, 4,209, 3,133, 7, 10,143,125,187,176,186, 44, 21,101, 81, - 30, 38, 5, 41, 84,227,212,108, 69,192,180,207,160,230,204,106, 5,172, 20,179, -107,189,169,218,233,201,174,244, 63, 49, 33,233,212,186, 77, 10, 15, 15, 25,205, - 5, 99,218,120,253,133,168, 29,221, 48,196,115,144, 30, 68, 40,118, 49, 52, 23, -196, 98, 89, 44,230,210, 96,170,236, 59,176, 53,187,100,166,201,195,195, 86,149, -201,130, 69, 17,133,162,129, 64, 32,145,136,104,211,253,115, 58, 35,247,156, 90, - 96,238,241,178, 61, 45,189, 57, 93,151, 87, 82, 93,152,137,227,170, 50,150, 38, - 21, 17,138, 25, 65, 48,177,176,232,177, 7, 28, 88, 52, 27,148,129,107, 35, 99, -249,167,157, 75, 6, 6,157, 55, 2,139,152,221,135,202,167,170,203,233, 70, 94, - 31,155,185,166, 40,178,143,157,224,253, 88,251, 85, 97,106,214,154,214,187,217, - 4, 31,226,143,228,199, 82,157,208,163,222, 24,152,235,111,120,199, 55,233,122, - 75, 90,157,254,107, 8,174,179, 0, 17,151, 37, 63, 27, 82, 47, 78, 33,175,179, -251, 65, 68,113,218, 11, 73,230, 50,105, 41,107,141,210, 55,143,100,131,110, 56, -243,174, 35, 33, 25, 82,202,121, 32, 77,146, 59,227,206,103, 63,193,156,247, 16, -147,126,232, 73, 44,151,235,193,164,193,239, 99,214,240,187, 67,214,237,121,227, - 61, 12,138,220, 74, 30,212,174, 68, 2, 71,132,233,226,202, 80,211,168,175,132, -236,190,125,165,253, 46,211, 58,250, 70,163,115, 90, 59,142, 30, 31,189,235,205, - 59,170,113, 32,207,243, 60, 14,196,205,184, 15, 35, 98,170,147,198,109, 82, 85, - 38,216,146, 72, 93,142,158, 7,187, 82,136, 63,206, 43,231,133,118,126,178,191, -143, 18,207,245, 61,106, 25, 8,199,166, 50,108,111, 24,159, 67,249,235,199, 9, - 51, 66,222,132,139, 72,237, 79,110,110, 35, 23,156,211, 89,251, 95,133,209,100, - 40, 13, 38,115, 57,184,166,202,132, 4, 11,185,160,118, 66,140, 50,143,122, 92, -236,130,138, 2,106, 90, 82,199, 51,215,113,213,226, 82, 59, 95, 69, 77, 20,142, - 10,179, 25,138,102,202,168, 36,210,211,232,225,173, 55,144, 78, 34,182,114,226, -207,238, 9,216, 23,161,168,208, 88,250,153,116, 50, 53, 59,223, 7,181, 57,209, -118,187,182,237,251,178, 23, 85,172, 49,196,127,108,180, 24, 22,241,216,136,133, -145,122, 94, 86,123, 95,198, 45, 40,114,160,243,209,233,182, 58,215,127,160, 30, - 42,209, 63, 62,212, 66,195,161,129, 61,206,140, 43,201,100, 76,152,201,206,215, -176, 88, 14,168, 11, 5,195, 50, 57, 60,153, 91, 10,187,225,236, 78,213, 90,214, -237,223, 74, 25,149,155, 93, 9,247,188, 82,200,169,214,155,157, 81,219, 4, 75, - 53,135, 13, 14, 14,188, 6, 94,129,107, 98,233,116,238, 31, 33, 27,167,163,179, - 55,196,238, 92, 81,147, 69, 89, 25, 25,154, 43,228,148,107,142, 66, 2,230, 82, -169, 42, 88,198, 5,251,208,217, 49, 59, 8,101, 89, 38, 14, 90,119,118,133,178, -163, 86, 93,152,132,201, 84, 97, 40, 19,130, 16,228,118,121, 32, 19,135,200,168, -179, 41,138,152,132, 76,141,204, 72,146, 36, 25,198,147, 64, 16, 8, 18, 15,149, -141,104,115,113, 26, 63, 19,145, 19, 81, 57, 32, 11,149, 20,196, 51, 68, 17, 98, - 8, 34, 35, 34, 34, 18,136,136,136, 72,146,230, 1,160, 76, 64,129, 29,214,225, - 89, 98,137, 27,113,137, 40,170,208,230,111,152,241,225, 75,220,249,180, 95,147, -148, 33, 32, 57,167,140,120,123,231, 24,120,170, 10,102,204, 7, 6, 99,102,241, - 27, 93, 92,187, 58,167,202,141,178, 3,229, 97,161, 1,149,119,107,198,110, 63, - 59,139,243,118,142,217, 89, 3, 34, 93,226, 18,232, 18, 53,184,206, 52,145, 44, - 34, 3,166,100,151,176, 37, 77, 10, 40,246, 68,245,120,124,250,123,143, 50, 35, -244, 6, 20,159, 54,127, 66,122, 12, 59,161, 38, 55,228,187,250, 73,121,186,214, - 41,244,209, 24,170,137, 45,176,128,158,227,161,203,218,109, 30, 50,234, 95,184, -105, 82, 94,177,233, 29,220,224,187, 95, 11, 34,198, 54,147, 8, 34,109,189, 73, - 64, 95,217,187,191,133,182, 52, 16,145,154, 25,170,165, 35, 27,196,238, 75,132, - 82,170, 61, 13,172,206,189, 43,158, 12, 65, 17, 81,242,105, 80,233,250,165,121, - 2,138, 43,197,125, 44,142,171,235,195,215,229,183,107, 3, 23,224,177,171, 82, - 17,167,180, 63,204,103,167,210,157,179,109, 68, 0, 68,107,151, 73,240,234, 52, - 28,145,149,240, 56,153,197,105, 12, 71,189,187,138,115,214, 8,213,101,108,130, -194, 35,156, 96, 9,195,153,230, 34,220,125,134, 34, 44, 96, 49, 96,201,180,163, - 59,237,181,196, 69, 5,237, 15, 17, 32, 17, 19, 66,179, 20, 5, 32,194, 33, 87, - 73, 35, 87,209,172, 42,170, 17,155, 89,209, 37, 96,192,162, 20,118, 69,222,135, - 31,192, 62,228,122,179,134, 90,221, 33,255, 44, 81, 50,254,143, 32,142, 53,187, - 24,117,105,192, 48, 90,158,103, 42,213, 13, 99,131, 78,186,128, 93,120, 18,131, -179,146,232, 31, 18, 95,132,239, 93,234, 30, 65, 57, 28, 62,129,200,143, 80,198, -136, 4,150, 1,238, 37,122, 2, 5,114,246,223,161,213,121,101,101,212, 94,238, -162,106,112,212,234,232, 21,246, 75,120, 81,114,229, 45, 76,104,108,224, 76,208, -226,238,249,157,250,209, 73,208,252, 66, 26, 64,183, 51,203,191,206,137, 39,153, - 20,189,190, 34,147, 17,168, 21,236,247,254,200, 20, 39, 80,143,170, 81, 17,160, -150, 71, 68, 10, 47, 98, 21, 87, 75,144,117, 54,210,199,181,227,150,160,105, 10, - 16,207, 65,201,125,242, 75, 21,172,208, 60,146, 6,165,128,170,232, 75,139,232, -144, 83, 32, 3,212,160,106,215,137, 44,165,119,250,125,217, 59,109,216, 56, 23, - 77,233, 38,118,102, 54, 47, 77, 47,193, 88,132,245, 27, 0, 48, 41, 60,108,170, -100,252,184,220, 30, 44, 75, 30,252,171,198,149,152,241,210,218,216, 84,147, 6, - 3, 72, 76,180,224,189, 17, 68,131, 34, 1,219, 32,197,236,131, 5, 36, 28,158, - 53,242, 32, 23, 33, 17, 91, 77,248,157, 4,202, 51,214,162,135, 59,157,162, 75, -202,148,204, 70,155,101,246, 20, 73,169,251,145,162,172, 18,152,146, 1,117,182, -173, 37, 89,245, 2, 24, 18, 50, 83,228,252,110, 11,235, 45,222, 60, 64, 19, 43, - 59, 25,207, 20,234, 0,112, 86, 3,146,242,216,110,162, 44, 23,215, 1,230,114, - 15, 54,139,227,187,228,222, 44, 40, 86,190,252,244,246, 29, 98,108,227, 54,137, - 79, 20,163, 65,195,117,163,237,252, 4,211,208,217, 2, 9,100, 70,144,171, 68, - 76,212,154,229, 21,193, 9,164,233,246, 61, 67,126, 2,217, 83, 18, 90, 16,138, -228,164, 62, 72,141,100, 13, 56,124,230, 44,127,250, 62,226, 49, 54, 99,252,182, - 85, 52,161,248,150, 23,231,152, 67,224,197,138,215,220, 97, 78,208,222,197, 32, -144,150,230,179, 60, 17, 65,161, 78,203, 72,114, 34,197,100,250,169,218,248, 19, - 83, 94,127,220,201,128, 63, 69, 62,157,160, 59,145,246,220,217,205,118, 77, 42, - 25,172, 26,169, 69, 69, 43,112,193, 0, 13, 79, 92,141, 91, 71,243,134, 56, 89, - 53,145,191,207, 81, 67, 44,200,121,155, 27, 54, 28,144,229,243, 43, 19, 23,184, - 94, 68,202, 31,169, 34,202, 16,191,173,134, 84, 72,232, 80,129,169,183,128, 34, -249,164,198, 8, 65,231,198, 85,203,140, 87,244, 45,201, 45,107, 97, 84,227, 72, - 93, 98, 30,194,237,118,254,242, 41, 8, 41,113,179,250,140,247, 89,206,172,231, -126, 64, 18,231, 96,206, 83, 41,228,106,246, 8, 96,225, 95,179,252,139, 46,198, -254,130,151, 1,212, 43,183, 66,124, 10,227, 81, 10, 20,236, 34,136,108, 37, 65, -184, 45,164, 47,141, 24, 87,122, 28, 42,194,201,119, 59,117,129, 53,112,235,140, - 40,212,184,121, 97,249,247, 91,226, 59, 59,151, 0,100,106,130, 43,191,210, 3, - 65,233,166, 5,166,172,110, 25, 88,193,219,212,176,244, 80,235,233, 16,243, 18, -168, 58, 48,148,192,131, 46,159,154,163, 98,213,125, 19,104, 88,149,194,141, 99, -247, 13, 24,134, 68,225,122, 74,237,104,166,144,161,187,135,118,183, 74,105,221, - 36,220,179,208, 48,224,225,164, 71, 94, 26,192,210,167,144,141, 7, 64, 79, 89, -141,255, 3, 86, 18,104,115,186, 99, 28, 4,136,179,161,152, 75,184, 93,104,156, - 60,183,132,109, 79,113,134,169, 37, 78,102,126,248,109,240,122,228,223,146,230, - 53, 97,222,214,178,212, 63, 96,202,159,144,180, 86,234, 97,167,140,172,168, 26, -112, 10, 52,231, 64,111,248,181,152, 15,113,133,217, 9,124,229,230, 14,192,102, - 41,129, 68,207,213,223, 64,242, 75,148,209, 72,132,128,206, 64,230, 40,131, 3, - 26,225,139,137,199,195,184,233,209,210,134,189,207, 29,129,156,223,190,204,174, - 10, 85,107,115, 26,107,174, 34, 32, 7, 17, 77,248,192, 48,160, 18,245,159, 12, - 2, 14, 70,152,248,158,138,194, 48, 3, 12,161,189,170, 70, 1, 16,109,120,248, - 6, 40,134, 67,173, 89,165, 79,131, 15, 85, 14, 14,102, 65,123,160,187,174, 11, -235,234, 32,187, 90, 23,162, 79, 53, 9,159,233,177,205,122, 15,243,117, 87,171, -144,108,235, 59,214,104, 30, 86, 30,190, 78, 19,148,217,130,248,236,223, 37, 76, -223,170, 54,131,244,172, 80,142, 74,185, 88, 68,152,193,163,134,148, 22,158,226, -107, 65,133,123,101, 52, 74,101, 50,181, 56, 70,112,147, 68,121,159,222, 98,218, -232,247,243, 66,138,154,223, 45,241, 22, 89,162,193, 23,120,132, 40,227,118,229, - 61, 56,224, 31,243, 48, 95, 60, 23,203,149,116, 72,238, 95, 40,243,232, 38, 94, - 32,159, 81, 63, 68, 55,157, 69,199,144,212, 78,143, 25,152,121,216, 12,216,210, -229, 37,116,155, 18, 65,110,171,166,198, 47,171, 79,172, 21, 79,225,149,148,234, -158, 34,144,214, 52, 5,141, 3, 73, 99,196, 7,141,212,201, 8, 21, 94, 44,136, - 1, 92, 2, 20,153,142,248, 11, 43,179,184, 15,151,142, 55, 3,194,202,130,250, -250,238, 32, 96, 44,146,219,236,176,113, 21, 30,148,193, 87,197,176, 83, 58, 3, - 57, 18, 1,135, 59, 33,135,114, 89,203,152, 40, 0, 98, 26,142,153,138, 41,148, -200,230,105, 96,108,148,107,222,204,151,135, 48, 52,209, 82,164, 80, 21,236,163, - 27, 79, 52, 1,198,193, 4, 44, 36,147, 6,158,199, 11,234,205,171,223,103, 51, - 25, 56, 64, 89, 56,149, 66,127,169,174,176, 13,141,144, 63,221,157,156,150,188, - 48, 89, 16, 51,217,238, 17, 13,240,147,191,227,145, 64, 0, 13,125, 35,249,148, - 24,219, 13,243, 87,115, 4,203,236, 37, 13,171, 36,223,120,237,225, 12,148, 78, - 68,233,119,114, 72,100,211,193, 50,146,112, 82, 2, 52, 18, 29,112,158,177,226, - 43,168,205,202, 62,250, 48, 53, 48, 95,240,185, 56,203,115,185, 95,102, 43,196, - 45, 70,222,163, 20,201,236, 71,123,113,139,120, 51, 70,104,200,242,224, 29,143, - 10, 81,131,180,229, 66, 66, 56, 55,234,219,105,223,140,100,117, 34,180,225,162, - 83,141,124,165,116,218, 26,230, 56, 64,189, 87,236, 40, 40, 22,122,201,241, 32, - 42, 9, 24,196,194, 84, 34,208,242,138,220,161, 30,196,203, 36,128,222, 34, 15, - 97, 20, 29, 49, 9, 45,109, 68, 34, 28,243,223, 15,244,193, 15, 98,138, 5, 70, -149, 19, 32,166,241,104,137,191,191, 92, 40, 30,106, 99,120, 39, 85, 62,151, 18, - 62, 20,208, 83, 68,203, 69,136,235,136, 68,112, 36,103,177, 47, 50,196, 34, 91, -240,113, 78, 14,132,179, 98, 37,227, 46,120, 10,196, 22, 18,138, 27,207,232, 46, - 24,215, 27,171, 49, 96,168, 13, 8, 7, 74,184, 18, 59,136, 27,216,229, 55, 59, - 76,120, 28,175, 60,135,161, 48, 14,209, 88, 50, 55, 25,129,248, 97, 57,234, 42, - 39, 80,166,147,183, 0, 61,168,176,123,101,217,212, 50, 27, 65,180, 8, 75, 26, -114, 35, 85, 1,145,165, 71,114, 66,195, 59,204, 46,176,184, 2, 94,147, 85, 35, -169,226,201,120, 33, 36, 5, 53,209, 55, 76,255, 83,233,218,109,215, 97,152,141, -230, 37,206,103,112,249, 88,154,102,137, 27, 31,216, 96,212,176, 43,200,246,167, - 6, 11,132,145,247,170, 88, 77, 5,102, 40, 27,139,247,156,112,201,153, 52,106, -253, 67,188,188,132,136,169,250, 26, 2,125,117,243,104,175,224,247, 1,231, 36, -255, 41, 83, 1,213, 80,231, 41, 96,209,215, 41,104,148,122, 71,148, 58, 74, 60, -212, 21, 2, 45, 88, 28,125,191,128,200, 1,131,171, 9, 73, 27,205, 38, 28, 15, -101,204, 4,198,145, 49, 93,166,200,143, 52, 95,192, 74,183,253,100,227,139,132, - 13, 52, 14, 78,109,147,176, 91,240,115,191,155, 5,109, 0,240, 17, 52,236,167, - 16,202,120,221,119, 28,161, 48,117, 47,139,251,160,130,153,106,240,204, 89, 92, - 29,246,174, 43,231,143, 74,231, 89,204, 7, 24,176, 71, 19, 33, 24,125,142, 15, -115,111,177,156,208,249,186,177, 87,216,251,159, 27,135,130,208,136,227,247,148, -163, 57,185,251, 44, 32,151, 30,242, 81,124,190, 81,194,201, 42, 6, 89,176, 83, -118, 17,199,195,213, 2,125,153, 37,173,236,239,127, 3, 9,108,225,196,150,115, - 22,162, 64,145,128,224,253, 93, 58,252, 24, 20, 61, 35,253,103,164,248,119, 97, -221,199, 57,249,119,136, 62,172,123,105,130,116,197,204, 64, 20,162,149,233,177, -185,216,236, 47,205,193,109,131,249,148,245,122, 45,187,191, 55,143,253,153,218, -246, 27, 32,182, 20,192,176, 44,153,148,225,251, 66,199, 55,251,152,128,146, 76, -111,244, 1,133,146, 72,191, 40,254,156,198, 45, 30,112,226, 59,240,182, 17,189, -230, 27, 2,236,136,183,139, 92,215,242,164, 39, 34,197, 32,203, 89, 39,155,106, -228, 54, 10,239, 43,213,115,168, 55,109,178,226,105,115, 19, 41,158, 16, 93, 68, -112,148,252,199, 98, 37,170, 4, 69,219, 60,183,166,142,191,196,152,145,171,232, -236, 83, 49,199, 14,172,215, 31,189, 42, 38,213,184, 54,217, 99, 41, 25, 38,133, - 25, 32, 7,170,188,177, 30,164,196,163,134, 49,176,114,187,243,166,237,201, 2, -203, 48,164, 43, 37, 16, 59,146,167,161, 62,111, 33, 74, 14,142, 36, 34, 98,197, -184, 72,160, 83,129,191, 77,182, 98,229,150, 31,191, 16,176,217,161,159,158, 57, -148, 17, 55,185,161, 96,144, 88,140,225, 29,187, 67, 95,130,247, 32, 52, 48,128, - 47, 19,197, 18,144,213,180, 17, 10,216,100,122, 48,254,166,104,225,245, 1, 36, -126,149, 73, 91,128,117,158, 29,113,165, 11, 37,197, 79,235,100, 67, 73,254,233, -145,230, 78,105, 68,135, 23,242,136, 19,227, 77, 41, 28,119, 18, 18,234,116,162, -219,203,249,186, 96,228, 38, 64, 44,100, 37, 96, 16,186,197,138,136,140,105,108, - 81,100,235, 42,187,238,146, 44,147, 71,184,172,241,174, 73, 37,167,131,228,147, - 34,198,231,250,223,186, 46,119,166, 52,108, 5,189,109,104,111, 90,133,188,203, -192, 89,242,211,142,133,243, 97,152, 49,100, 91, 73, 24,194,120, 33,241, 2, 45, -154, 51,178, 13, 73,175, 7,112,219,234, 81, 54, 90,231,115,168,136, 50, 27, 62, -236, 96,186,154, 35,168,247, 48,175, 74, 96, 20, 26,231, 73,221,243, 47,147, 80, -144, 5, 24, 27, 74, 13,232,164,193,187,149,117, 4,203,196,218, 62,133, 10, 15, -207, 15, 59,243, 52, 20,108, 2,245,127, 39, 68, 36,180,117,230, 8,140, 29,240, -180, 10, 74, 34, 70, 37, 93, 75, 72,160,206, 98,226, 88, 62,233, 35,236, 46, 75, -105,166,164,132, 38,101,120,138,110,106,231,235, 9, 53, 43, 49,171, 42,111, 84, - 7,147,162,140,255,201, 18,245,213,145, 28, 65,175,245, 12, 79,186,253,238,174, -147,195,225,105, 64,160,138, 92,216, 4,132,135,110,181, 9,228, 97,141, 76, 99, - 41, 87,121,242, 79,119,229, 77, 34, 91,233,178, 13, 10,218,169, 93,153,250,218, -243,206,204, 93, 73, 49, 78,235,217, 15, 32, 97,232, 5,199, 22,132, 70,145, 47, -100,244,218, 16, 14,182,158, 70, 37, 18, 72, 85,149, 73, 28,122,124, 37,159, 77, -138, 35, 54,246, 38, 15,110, 82,103, 70,170, 39,162,102, 97,243, 25, 34,126, 90, - 89,199,111, 28,162, 24,111,215,123,116,136,132,202,175,178, 72,229,231,113,134, - 25,236, 30,127, 32, 10,175,101,179, 55,225, 71,240, 70,186,193,115, 17,110,198, -142, 98,199, 0,176, 65,212, 90,198,205, 99,170,134,207, 76,106, 95, 87, 76,144, - 5, 55, 50,117,139, 44, 5,217,149,130, 41,145,166,198,172, 35,221,189,171,187, - 49,172,240,179, 62, 90,122,242, 87, 78,127,104,136,171,178, 53,172,153,173,158, -249, 64, 70,155,131,239, 76,200,177, 93,123,212,111,244, 70,167, 52, 31,204,104, -122, 26, 27, 10, 55,162,208,173,208,194, 31,244, 0,189, 56,167,119,216, 60, 93, - 30, 28,217, 90, 58,150,190,143, 4,143,156, 16,174, 82, 84, 42, 60,158, 12, 30, - 35,162,180, 14,127, 85, 92, 7,225,245,165,111, 37, 22,176,181,226,111,124, 2, -117, 48,254, 35, 56,161, 46, 12, 2, 33,254, 46,116,194,131,143,120, 67, 35,109, - 2, 9,180,108, 28,247, 96,166,124,223,224,249, 53,158,241,127, 28, 49, 54,246, - 63,234, 37,163,154, 46, 5,153, 61,104, 95,192,205, 43,194,173,194, 88, 97,106, - 3, 48,226, 51,113, 78, 32,235,130,237,183,240,176,132, 3,245,231, 83, 43, 77, -224,135,142,250, 69,232,183, 85, 65,128,184, 50, 46, 46,243, 33,202, 71, 70, 66, - 50,102,163, 32, 64, 34,237, 82,237, 60,159, 72,112, 10,199,244, 22, 82, 29,212, - 59, 23,154,133,185,106, 15,150,197, 85,205,223, 4,237,238,249, 0, 90,163, 67, -246, 33, 57, 98, 79,152, 33,103, 74, 30, 2,189, 35,133, 46,145,251,108,166, 84, -121,147, 55, 3,137,196,129, 63,244,242,249, 20, 27, 49,251,164, 95,125,207, 8, - 41,153,234,103,199,246, 28,159, 43,100,158,174,170, 31, 36,172, 15,192,194,253, -247, 67,178, 35, 40,229, 21,222,250, 4,199, 95,156, 6,193, 42,117,222,214, 24, -244, 22, 89, 6,111, 82,136,115,254, 55,126, 40,219, 72,168,124,216,157,188, 99, -152,217,245, 65, 89,197,227,118, 34,228,182, 63, 40,153,222,152, 29, 52,116,228, -131, 42, 96,219, 51, 67,189, 35,195,170,145,154, 14, 88,211,181, 3, 13, 89,158, - 32, 10,231,205,200, 49, 10, 22,154,250, 68,111,123,220,233, 28, 45,115,242,168, - 61,145,238,216,181,134, 94, 35, 46,180,182,146, 53,249,167, 35, 53,244, 47, 72, -187,182,249, 78, 76,244,226,205,155,117,198,100,174, 51, 65, 35, 58,165,121,221, - 24, 10, 98,149, 22, 84,201,154,204, 50, 18,153, 20,177, 66, 91, 99, 14, 55, 41, -174,242,243,124,226,212, 13,137,222, 22,222, 95,230, 17,211,136, 71,195, 37,120, -107,253,118,223,174, 20,226,121, 73,129, 16,199,180,237, 33, 8,172, 49, 18,234, -178,252, 80,213, 87, 23, 56,187,114, 31,196,166,199,134,162,178,154,132, 22,177, -163,222,207,227, 41, 96, 63, 34, 5,118,249,223,107, 34, 66,193,173,208,186,233, - 6, 9, 96,222, 26,226,128, 83, 48, 38,236,251,117,122, 21,177,115,148,254,148, - 88,220,161,107,166, 34,137, 32,107, 71,179,140, 87,161, 78,247,217,207, 54, 3, - 69,112, 2, 56,203, 34, 1,230, 39,246, 60,223, 75,246,224,175,105,196,169, 3, -157, 84, 49, 27,174, 8, 22, 92,141, 81,184,116, 48,195,199,243,165, 4, 35, 4, - 74, 23,119,141,241,131, 42,138, 51,222, 25,117, 20, 98, 27,255, 13,235, 7,171, -120,133,248, 58, 49,138,206, 13,167,196,196, 7, 55,148, 11, 94,152, 8,223,203, - 58, 26, 91,231,251,228,135,158,241, 71, 30,103,184, 53, 73, 26, 63, 50,140,205, -127, 70,164, 60,216,253,100,237,193, 74, 92,206,228, 25, 42,112,217,232,105, 67, - 34, 98,159,178,246,121,185, 90,199,224,155, 94,192,140, 99, 63,232, 26,125,129, -108,180, 14, 4, 72,117, 24, 6, 23, 40, 10,106, 21, 35, 27,122,109,237, 33,117, - 8, 87, 70,226,253, 2, 71, 48,129, 79,216, 50,105, 27,153,137,195,253,143,244, -237, 52, 83, 88,210,129, 16, 82,223,105, 81,105, 93,216, 82, 3, 55,220,139,169, - 72,118,205, 21, 42, 69,245, 91,250,214,238,224,212,127, 37,231,158, 72, 56,207, - 30, 21,177,101,124, 36, 17, 48,148, 76,112, 85,170,219, 61, 16,191,231, 70,149, - 65, 6,216,119,216,234,203, 0,187, 50, 81, 17, 20, 81, 46, 62, 4, 35, 0, 52, - 91,142,174,198, 15,237,217, 36, 18,172, 69,120,196,247, 53, 22, 29, 9,111,154, - 67,214, 2,250, 54,172, 87, 87, 38,223,110, 14,222,206,135,152,121,103, 65, 3, -200, 63, 72,125,195,231, 9,103, 97,181, 43,170, 88, 4, 85,182, 28,147, 97,233, -217, 4,217, 2, 61,254,250,186, 60, 19,115,185, 16, 6, 22,194,135, 63,220, 19, -164, 80, 37,155, 92,117, 46,117, 33, 62,139, 34, 92,199,193,187,105,156, 65,213, - 81,248,179,140,128, 83, 45, 48, 0,187,235, 25,198,209,225,187,215,255,117,150, - 7,141, 40,128,252,100, 15,225,190, 97, 19, 28,237, 77, 74,165,115, 35,209,106, - 99, 64,150, 66,223, 39, 32,205, 52,205,198, 20,187, 72,148,248,177,252,131,206, -136,252,152,192,194, 61,237,230,254,230,248, 76, 58, 86, 15,207, 55,155,212,249, -110, 95,137, 26,255, 56,166, 52, 61,134,222, 98,192,135,134,117,184,197,241, 52, - 67,130, 2, 12,128,214, 97,232,233,224, 24,146, 24,243,184, 21,145, 76,194,146, - 11, 75, 17,223,244,218, 5, 74,230,237, 73, 14,243,162,119, 51,109, 64,239, 21, - 63,117,218,250, 8, 72, 10,216,102,218,179, 93, 19,132, 9,121,117,178,183, 10, -129,144,212,102, 28,183,147,119,108, 3,235,168, 2,149,103,247,140,212,250,148, -255,145,224,109, 60,175,240, 56,203, 56,223,247,101, 80,211, 56, 3, 73,200, 10, -186,219, 14,190,239,114, 40, 99,193,138,246, 78,232,126,244, 84,164, 74,218,158, -139,211,227, 84, 8,133,245, 17,178,242,118,232,154, 48, 79, 77, 45,255,196,118, - 81,123, 90, 76,197, 12,184,169,175,202,196, 79, 26,251,160, 76,114,176,173, 50, - 72,200,199,229, 17,179,153,229, 26,252,185, 58,148, 27,151,161,208, 37, 28,219, -154,233, 89,195,222, 82, 43, 7,191,252,252,166,244,191,151,124,217,167,179,241, - 40, 25,255,254, 93, 99,248,204,174, 66,223, 4,228,116,126,168, 8,133, 22, 78, - 85,114,117, 0,160, 62, 28, 64,233, 12,249, 68, 52,149,180, 23,114,251, 53, 62, -177, 62,127, 16, 86, 44,110,138,207,120,174,131, 17,247,133, 4,253, 9, 25, 31, -179,236, 59, 73, 3,252,138,181,109,115, 21, 80,212,232,163,139,170, 10,144,144, - 53, 82,185,158,115,101,194,189,246,107, 45,204,155,180, 67, 40, 4, 6,155, 48, -245, 76,234, 76, 5,126,166, 76,125,153, 31,203,134, 56,146, 20,223,255, 29, 99, -195,166, 39,146,136, 45, 60, 12, 67,136, 9,115, 78,123,183,139,238, 35, 67,205, -237,111,195, 24,169,155, 38, 70,229, 95, 56,210,104, 33,184, 3, 66, 3, 77, 27, -171,111, 49,197, 76, 81, 62,191,241,252, 89,241,198, 32,112,109, 43,191,208,165, -190,177,147,137,112,110, 52, 49, 24,175,203,134, 93,239, 54,184,196,183,150,252, - 39, 88, 35,156,137,107, 4,166,120, 16,120,122,162,233, 13,210,179,127,139, 17, -158, 52,227,161,143, 60, 9,230,182, 44,227, 97, 80, 31,157,181, 48, 71, 87, 66, -230, 66,234,222, 28, 9,174,206, 23,216,207, 66, 50, 57, 14,104,133, 20, 64, 8, - 82,239, 99, 63,250,161,242, 13,242, 52, 68,234, 72,232,127,132,221, 45, 27, 59, -143, 50, 21, 41,236,244,151, 13, 38, 88,196, 95, 7,251,253,227, 56, 67,232, 18, - 44,253,172,155,111,204, 12, 46,220, 51,154,159,255,233, 82, 47, 90,175, 67,166, -190, 43, 82,178,159,124, 34,229, 32,221,140,130, 3, 76,203,200, 58,106,222,103, -138, 78, 40,165,118,113, 19, 54,187,127,165,122,197, 29, 10, 98,249, 39, 74,225, - 6,176, 52, 90, 90, 55, 92,138, 0,102,178,157, 40,192,238,204, 3, 72,239,217, - 2, 61,124, 61,125,181,109,217, 48,226,126, 51,113, 81,135, 69,227, 51,253, 22, - 71, 61,248,146,171, 50,178,109,138, 2, 83,116, 32,145, 0,144, 0,147, 0, 46, -141,230, 56,247, 20, 73, 76,195,143,134, 36,226, 38, 82, 69, 42,205, 57, 56,232, - 28,163,105, 22, 22,226, 15, 49,213, 86,188,158, 69,195,177,195,215,130,180,165, - 95,205, 89,146, 30,130, 84,235, 11, 95,171,242,120,255,133, 20,191, 4,227, 56, -204,177,249,134,113,156, 3,195, 28,142, 89,117, 28,140,163, 80,238, 94, 57, 0, -128,165,249,201, 65, 32,135, 68, 52, 21,144, 79,105,105,154,191,201,223,233,228, - 84,164,248,240,114, 44, 46,201,235, 13,184,186, 67,242, 72, 55,160, 66, 16, 79, -244,220, 49,220,159,169, 1,251, 33,141, 35, 19,130, 69,237,137, 88,103,157, 1, - 36,185,162, 10, 12,134, 28, 63,106,146,126,173, 52,167,199,222, 81,146, 81, 48, -156, 11,186,190,164,141, 6,187,210, 61, 43,242, 80,203, 96, 76, 6, 99, 10, 72, -134, 49, 99,111,181,152,234, 23, 41, 70,208, 47, 92,226, 18,144, 8,223, 22,186, -118,168, 71,129, 67,168,177, 67, 65,230, 1,100, 0, 50, 69,170,249, 20,213, 12, -134,100, 43,136,169,166,190, 79,180, 51, 99,170,189,199, 31,242, 14, 30, 85, 72, -131, 44,253,124, 63, 40,157,147,255, 61, 75,210, 17,220,227,124,238,156,220, 45, - 77,194,164,167,228,211, 39,199, 93,186,229,210,148, 28,133,251, 10,252,216,200, -231,232,115,187,103,218, 72, 20,153, 77,102, 81, 8, 93,217,213,113, 26,150, 93, -236,235,124, 61, 91, 31, 26,139,214,109, 12, 15,215,152, 34, 75, 16,233,146,220, - 88, 90,244,158, 39,116,174, 59,192, 62,253,238,157, 52, 68,247,163,245,227, 38, -148,140,230, 42,210,226,119,169,189,160,168,175,237,228,206, 3,108,108, 70,170, - 78,203, 48,215,132,232, 46, 93, 70, 73,120, 16,181, 78,193,234,241,252,168,171, -228,112,132, 0,223,210, 3, 8, 42,106,143, 62, 31, 49,231, 92,113, 4,111, 76, -211,100, 41, 40,130,222, 27, 63, 90, 17,102,138,247,200,247,232, 99, 57,253, 72, - 91,126, 16, 70, 47,186, 21,106, 35,126,187,161, 79, 27, 82, 13,151,132,145, 96, - 26,169, 61, 14, 56,104, 20,174,227,182,139,139,110,248, 18,138, 39, 29,103,187, - 92, 26, 89, 80,101,143,224,130, 52,193, 41,229,198, 57,142,179,118,234,100,239, - 45,195, 59, 27,219,247,104,142,230, 12,239,228,146, 21, 73,119,105,146, 2, 2, - 21,154,185,125,251,177, 53,215,237,178, 92,153,203, 69,217,240,131, 30,172,214, - 66,166, 77, 80, 30,182,198,131,119,106, 75,237,253,156,171,182, 15, 82,252,153, -104,220,169,108,221,149,201, 92, 22,204, 7,235, 7,193, 7,125,248, 53,142,170, -202, 60, 66, 71, 85,129, 15, 44,219, 54, 77,195, 84, 48, 23, 10,230, 89,124,191, - 74,189,135,201,168, 3,125,173,162, 73,146,180, 6, 3,244, 16, 8, 54,137, 76, - 35,162,158,197,161,111, 83,160,130, 88, 37, 28, 7,202, 81, 16, 49, 33, 20, 33, -138, 40, 98, 8, 33, 36, 16,145,128,100, 68,164, 36, 78, 7,232,248, 4,135, 80, -210, 64, 8,199, 0, 23,127, 29,193,177,244,118,212,200, 92, 67,185,143, 16,161, -166,129, 85,168, 74,143,108, 60,243, 12,230,201, 94, 75,187,145,138, 24, 44, 4, -246,129, 74,116, 60,194, 79, 94,176,206, 2,240,197, 14,141, 44, 4,211,235,244, - 46,140,136,135,173, 9,171,112,186,110, 66,220,102, 45,146,108,133,214, 73,117, -132, 73,114,203, 45,204, 46,204, 16, 55,124,226, 40, 3, 43, 15,136, 37, 93,154, - 47,160,145, 99, 21,165, 1,136,151, 84,221,210, 76,115,255,171, 98,194, 80,140, -148, 73, 94,224, 30,226, 4,177, 58,178,108,139,234, 5,170, 20,163, 61, 61,102, -120, 89,200,236, 37,101, 2, 94, 60, 99,107,224, 34,145,195,160,249, 34,163, 17, -178,231,199,157, 26, 13,245,114, 36, 64, 4,143, 11,210, 79, 76, 90, 30,158, 4, -119,226, 31,200,211,245,121, 4, 88,134,152,178,236,150, 91,140,144,105,100,161, -211,254, 87,208, 71, 41, 47, 89, 18,109, 23, 22, 97,176,154,215, 74,172,164, 90, -230, 11,239,136, 59,108,133,153,150,183,226, 61, 66,126, 86, 33,163, 79, 26, 34, -126,182, 2, 86,207,192, 79,253,107,209,213,138,241,212, 91,119,176, 99, 21,222, - 98, 64, 66,144,212,221,157,168, 58, 10, 2,142, 5,184,186, 16, 26,232, 63, 92, - 95,223, 82,221, 6,253,130,125,251,113, 59,193, 84,177,170,135, 2, 55,110,172, - 8, 9,129,228,147, 12, 34, 62, 16,181,234, 71,126,247, 37, 19,188,247,162, 11, - 8, 55,196,166,173, 84,210,133,115,185, 40,229,226, 25, 81,233, 11,120,105, 29, -140,106,248, 32, 24,127, 81,137, 8,119, 81,199, 13, 82,215,162, 20, 74, 83, 87, - 69,114,161,254, 49,170,227, 15,114,140, 47,165,166,204, 94,139,216,150,240, 74, - 41, 5,124, 8, 72,234,232, 70, 42,189, 39, 99, 93,164, 62, 18,233,164, 33, 99, - 72,233,130,221, 26, 41, 48,135,100,207,166,115,112, 84,119,163,140, 75, 12,183, -232,197, 13,185,111, 73,207, 18,161,127,235,183,142,204,250,138, 90,218, 31,207, -191,207, 17, 0,195, 17, 7,252,144,204,106, 78,249,136,132, 52, 42, 82,199,132, -123, 70,141, 50,250, 89, 77,129, 96,216,254, 54, 86,180,143, 95, 34,142, 78,236, -138, 22,105, 38, 53, 89, 52,204,108,194, 5,159, 8,125, 42,134, 29,176, 45,144, - 93, 63,235,222,155,117, 85, 14,120,194, 88,221, 21,231, 10,115, 30, 90, 34, 42, -227,141,201,170,214, 94, 57, 26,217,200,152,216,113,222, 36,188, 80,163,206, 98, -185,162, 75, 67, 72,114, 88,186, 46,103, 82, 10, 75, 82, 51,221,179,231,202,242, -250,212, 60, 4,121, 27, 90,240, 93, 83,217, 38, 19, 40,141,113, 15, 31,119, 23, -125,179, 81, 45,209, 90, 1,255, 32, 70, 88, 99,100,234, 18, 82,124,230,213,115, - 64,145, 86,150,208, 87, 70,204,119, 42, 98,229,155,154, 96, 61,112,100,200,120, -206,168,144,114, 58, 20,204,217, 57,151,232,229, 21,200,238, 44,235,223, 64,170, - 66,110,200, 3, 20, 24,179,126,239, 79,208, 26, 87, 23, 23, 81,152,123, 89,182, - 9, 75,156, 99,179,117,138,230, 67, 92, 64, 6,197, 12, 83,144,195,240,190, 5, -247, 6, 63,105,194, 72,176,176,216, 54, 11,141, 11,229, 14,212, 18,108,209,196, -124,190, 77,219,136,143,129,133, 10,136,171,198,244,129,170,177,166,104,159, 85, -246,119, 87,137,229,225, 12,168, 5, 94,179, 11,137,176, 27, 15, 55,239,241, 68, - 82,140,116, 60, 80, 42, 80, 6,230, 21,136,102,218,137, 85, 66,103, 9,117,234, -249,190,104,142, 90,178, 16, 66,212, 8, 32, 60, 7,152,243,232,161,255,181,253, -245, 60,214,215, 63,103,238,167, 55, 50,230,153,253,218,198,227, 97,253,107,197, -159,164,139, 51, 22,219, 76, 26,218,106,231,223, 61, 17, 11,194,175,148,201, 98, -146,166,165, 17,205, 49,220,253,119,165,152, 40, 59,168,125,227,249,103, 90,213, -110, 92,174, 40, 7,253,206,224,166,105, 68, 33, 24,212,251,236, 29, 4,240,249, -175, 20,201,108, 3,161,116, 66,108,163, 82, 82,142, 29, 88, 8, 14, 44,111,154, - 27, 5,122,101,111, 72,192,129, 53,213,210, 46,153,196,221, 96,169,131,133, 83, - 65,165,235,148, 7,213, 35,212, 80, 65,133, 26, 42,148, 80, 97,133, 26, 79,136, - 40,126,102,248,142,163, 80,155,113,137, 39,204,158,150,132,135, 79,192, 14, 42, -233,109,209,226,223, 72, 26,145,226, 74,175, 70, 56,169, 51,188,196,215, 12,155, - 49,227, 69,206,214, 76,190, 94,100,107,245,116, 59, 96,150, 31,239,166,251, 34, - 95,226,225,150, 32,212,225, 34, 17,167,130,164, 72,220,126,211,203,254,203,143, - 65,224, 49, 43,209,120,184, 13, 65, 71,138,194,202, 70, 42,153, 3, 83,178, 4, - 87,136,146,178,231,174, 12, 79, 73, 73, 46, 88,190,101,118,238,153,190,249, 16, -208,145, 1,242, 19,254,121, 17,176, 17, 45, 7, 4, 77, 94,172,120, 69,167,111, -237, 92,152, 96, 21,205, 37,111, 47,179,196, 2,198,208,169, 18,219,163,150, 23, -174,132,205, 1,133,192, 14,220, 28,152,232,245, 97, 19,195, 6,168,226, 64,130, - 32,148,204, 79,196, 38,167, 95, 81, 84, 0,206,129, 67,188,107,246,186,134,151, - 16,179,147,251, 25, 19, 74, 39,148,238, 25,133,134, 98, 79, 60, 12, 84,220, 28, - 77,190,113,162,238, 25,240,219,195, 16, 10,143,112, 30, 52, 12, 38,219,131, 11, -198,225,224, 48,200,132,200, 39,249, 7, 17, 75,250,107,112,141,236,156,141, 76, -248,229, 86,218,213,194,149,213, 7,133, 45,206, 25,134,247,146, 26, 25, 35,113, -223,181, 81,219,227, 69,227,194,208,245, 93,108,227, 75,154,162,248, 16,174,234, -161,227, 13,131, 78,102,149,125, 75, 52,228, 43,136,190, 97,245,186,238,122,251, - 2,113,178, 59, 66,116, 37, 63, 81,223,218,255, 89,247, 32,152, 9,128,142,243, -253,171,240,127, 71, 52,114,113,162, 77,229,211,109,210,240,145,252,130, 95, 49, - 16, 52,230,216,246,136, 66, 78,147,166, 86, 17,155, 81,183,226,188, 77,112,151, - 68,234, 27,225,197, 33,219,131,152, 8, 22, 41,185,159,244,121,190,133, 9, 27, - 6, 92, 98,212,209,149, 11, 87,244,152, 80, 9, 30,136, 8,173,232,169,210,164, - 82,224,156,161,179,185,162,172, 59,120,193, 54,133,209,224,223, 64,208,206,250, - 62,100,113, 49, 22, 66,255,252, 61, 96,202,110, 46, 7, 74, 70,126,125, 8, 70, - 79, 4,147, 65, 90,100, 10, 67, 33,208,241, 9, 62,162,191,129,184,150, 6,190, -169,152, 2,120,110, 1, 87, 37,186, 60, 3,174, 91, 10,132, 30, 31, 43,222,119, - 48,110, 96,103,160,114, 37, 25,186,133, 98, 27,157, 19,155,115, 69, 97, 24,224, -137, 75, 62,100, 80,218, 97, 0,251,162, 72,228, 35,236, 45,211,245,141,252,242, - 21,232,135,110,136,179, 0,228,119, 58, 67,188, 69, 75,221,173, 47,230,102,110, -250,247,142,119, 4,179,135, 15,175, 59,143,152, 65, 60, 38,170, 36,133,167, 86, - 20,193,241, 89,140,252, 81,201,231, 99, 45,111,139,190, 26, 16, 30,219, 8, 95, -225, 52,192, 4,152,243,180,158,170,187,203,115,202,134,176,248, 33,142, 23,168, - 33,228,236, 57, 58,108, 25, 4, 25,101, 86, 56, 54, 58,253, 72, 26,166, 20,195, -165,190,217, 25,132,148,103,192,180, 7, 98, 5,199, 3, 62,187,165, 66,200,179, -201, 8,128,247,108,164,120,186,211,106, 64, 56, 20,122, 13,143,108, 70,112, 54, -192, 82,244, 29,192, 38, 39,164, 81,129, 2,203,144,223, 40,113, 97,180,106, 16, -182, 48,228, 51,111, 50, 12,135, 84,214,128,166,191,227,204,176,209,129,224,100, - 88,196,237,109,167, 97, 63,169, 28,171, 82, 39,234,173,106, 32,164,216,165, 43, - 71,118,155, 12,129, 0,119,141,179,148,224,215, 46, 83, 52,203,238,218,159,116, -188, 97,193,129,161,165, 91, 19, 11,197,115, 39,237,147,143, 98, 95, 14, 82,229, - 21,118,224,176,224,206, 33, 36, 48,250,243,113,178,154,189,163,168,202,252,247, -142,145,163, 80, 16,146, 54, 79,175,252, 52,230, 2,142,232, 10,225,251, 51, 71, -113, 55,222, 46, 74,213, 7,166,245,203,251,147,213,219, 62,220, 96,184, 48,237, - 33,232,124,196,230,162,197,197,225, 81, 89, 16, 79,249, 64,176,226, 63,181,203, - 29,224, 22,225,245,215, 82,142, 18,132, 46,157, 70, 88, 76,160, 11,166, 72,210, - 39,112,205,209,180,147,167, 4,202,152,230,134,190,126,214,208,101, 54, 7,235, -117, 30, 26,136,218,183, 19,213,247, 21, 34, 94,192,169,192,198,147,106, 32,119, - 57,106, 89, 48,106,232,121, 70, 17, 82, 5,153, 1,186,118, 60,136,175,145, 92, - 30, 91,163,109,189,115,210,106, 62,110,187,245,121, 71, 2, 77, 95,251,180,210, -173,186,127,236,125, 76,162,109,194,160,235,192,101, 52,113, 65,176,179, 51,226, - 57,193,145,210, 84, 48, 17,145,186,226,173, 57,251,180,226, 0, 62, 7, 43,170, - 88,161,239,216,132, 12, 68, 86,135,238,168, 33, 73,234,127, 80,255,128, 4,168, -238,127, 98, 72, 16,158, 48, 15,157,227, 51,111, 63, 52,132,250, 66, 34,233,243, - 51, 35,127,112,238, 74, 96,208,224, 19,109, 81,174,191, 25,238, 14,170,246, 91, -108, 93,171,151,192, 21, 53,193, 30, 29, 98,221,236, 2, 33, 44,146,221, 98,132, - 48,128,239, 95, 70, 58,193,101,148,206, 8,162, 60,245,113, 23,163,192,216, 63, -182, 45,103, 8, 71,245,135,200,147,166, 0, 43,192,223,154,174, 88,105,152,178, - 68,250, 97, 68, 13, 67,195, 37,200, 44,106,153, 45,209, 28,227, 90,134,198,200, -207, 56,122, 15,108,198, 70,166,208, 38,163, 14,217, 9,187,165,110,103,108,146, -229, 32,146,150, 9, 34,212,207, 79,176,115, 69, 4, 33,163, 17,140,153, 4,122, -166,145, 22,166,164, 24,224, 93,168, 62,122,182,201,140, 54,144,252,107,137,213, -151, 60, 40,127,107,249, 37,127, 51, 91, 83,120,209,146, 26,198, 17, 66,249,159, - 62, 30, 44,208,123, 96,158,175, 54,226, 29,222, 52,217,124,162,201, 46, 97, 45, - 49, 34,105,150, 67,112, 87,133, 57,159, 26,120,253, 42, 27, 12,162,217,192,198, - 2, 13, 84,163,199,174,132,181,121, 42, 40,220, 76,158,148,210, 67, 91,158, 56, - 21, 25,136,117,127,102, 4,154,213,125, 3,163, 87, 59, 77, 44, 10,190, 17, 77, - 41,100,155,123,255,184, 60, 43, 25, 45,118,202, 44, 42,200,125, 4,223, 68, 0, -213,243,228,249, 31,144,200, 3,163, 31,153,133,181, 50, 81,165,249, 54, 85,220, - 17,236,205,229,214, 0,231,129, 4,152, 16, 72,118, 47,105, 43,246, 56,102,108, - 23, 92,129,215,196, 92,110, 35,135,118,177, 15,194, 65, 0, 20,129,201, 18, 60, - 37,232,191,104,146,191,168,210,211,175, 99, 23, 37,195,243, 59, 5, 5,176, 42, - 7, 88,203, 6,141,183,100,128, 36,133, 85, 49,177,112, 52,101, 33, 79,250,105, - 25,240,220, 79,224,168, 55,124, 34,194,119,158,186,128,229, 71,141, 90, 42, 35, - 58,210,109,130, 71, 39,155,119,247, 99, 21,133, 68,174,112, 83,225, 0,165,228, - 40,114, 77, 65,139,213, 9, 34, 16,117,172,112, 98,212,167,217,154,147, 20,179, -152,245, 76,174, 50,102,186, 91,245, 66,200, 73, 26, 28,234,242,117, 55, 82,216, - 92, 22,171,123,248,160, 60, 25,143, 76,119, 75,110, 9,246,227,159,196,174,204, -249,216, 59, 96, 62, 2,190, 69, 16,140,189, 40,168,165, 19,196, 11, 26,248, 19, -100, 15, 56,162,154,191,135,110, 2,161,241,246, 71,254, 61,144, 98,103, 59, 86, - 82, 68,128,189,194, 31,215,253,135, 31,103, 91,163,244,245, 33,165, 31, 84,155, -227, 99,162,206, 33, 58,151, 8, 81,161,161,197,242,131, 1, 63, 66, 87, 77,175, - 31,140,176, 66,247,237,190,250,146, 97, 7,221, 53, 61,108,100,216,128, 27, 41, -133,147,190, 30, 88, 76, 25, 91, 62,243, 14,185, 82,233, 92,129, 32,173,135, 22, -155, 64,142,222, 68, 15,161, 79,109,223,211,212,116,104,209, 84, 88,154, 51,161, - 67,203,102, 99, 43, 21,244, 32,202,183,196,143, 94,112,225, 79, 26,221,111, 57, -212, 5,127, 66,222, 68,143,137,100,189,253,137, 12, 16,213, 44,134, 48, 81, 57, -195,186,251,112,253,119,226,165,201,210,124,105,133,180,197, 47, 77,138, 93,153, -190,139,212, 79,197, 34,173, 1,134,158,176,181, 10, 20,245,225, 26,197,125, 74, -126, 33,144, 23, 70, 81, 90,231,110, 55,234,220,199, 89,170,163,103,162,211,210, - 20,124,203,149,148,102, 44, 78,188,130,200,128, 98,237, 98,120,228,220,235,151, - 78,166,225,238, 30, 83, 57, 1,106, 86, 10, 62,242, 76, 85,185,210, 76,121, 11, - 66,171,250, 57,125, 50, 7,103,113,152,126,208,127, 18,215,134, 2,106,101,110, -243,180,194,223,194,160,228,133,224, 41,105,123, 96, 79,229,207,200, 52,247,123, -155,223, 17, 32, 59, 11,218, 51, 18,177, 93,140,188,128, 47,178,251,255,223, 13, -174, 33, 98,104, 75,207,247,196, 44,131, 58,172, 56, 13,233,244, 90,157,114, 43, - 17, 37,113,124,152, 83, 13,113,241,107,124,149, 46,168,124,246,130,138, 38,154, -202,219, 67, 29,170, 26,221, 2, 83,243, 53,110,135, 64, 81,116, 65, 90,232,244, - 77, 85,124, 55, 74,223,109,146,225, 11,217, 26, 15, 0, 99,144,148,234,159, 5, - 54, 59,221,211, 57, 67,206,104,185,248,123,119, 71,108, 22,218, 3,119, 15,190, -129,236,153,132, 21,149,219,122, 81,192,233, 82,170, 73,227, 99, 52,138,232,125, - 56,213, 36, 73,175, 97,194, 15,119, 3, 55,159, 21,151,222, 3, 85,223,251,113, - 58,162,139, 92, 42,252, 12,179,152, 6, 62,237,196,163, 41, 11, 63,151,126, 14, -182,218,101, 87,188, 90,238,113, 13, 69,196, 44,205,229,133, 1, 9,220, 73,210, -249,117, 64, 26,162, 54,215, 18,131, 59,255,205,139,101,114,201,200,177, 9,122, -167, 26, 57,201,238, 4, 43, 53,208, 70, 93,161, 73,166,174, 96, 97,147,132,146, -147, 88,173, 50,163, 60, 98,181,229,138, 15, 33,114,139,212, 38,155, 23,215, 16, - 25,107, 41, 16,231,166,200, 34, 17,184,142,205,180, 49,192, 48,200,201, 19,129, -200,204,241, 42, 40, 51,104,122, 72, 99, 72,124,114, 71, 70, 96,139, 66,160,169, -186,127, 70,197, 81, 96, 46,121, 80, 66,157,166,147,154,238,236, 12,245,165,201, -176,183, 71, 54,181,101,227, 3,186,103,208,167,163,200, 84,161,181,102,128, 84, -211,178,207,164, 21, 84,184,171,133, 14,103,128,128,193, 20, 19,138,148, 4, 56, -147,161,102,134,130, 88,246, 57,189, 45, 21, 32,147,186, 54,169,213, 48, 24, 12, - 84,154,146,220, 36, 97, 27, 98, 56,232,241,203,107,190,113, 66, 16, 19,102, 88, -224,140,204,102,141,100,200,124, 20,133, 42, 99, 99, 50,168,245,120, 57, 91,137, - 82, 58,110, 18,216,240, 55,155, 49,157,237, 1, 51, 56,217,173, 18, 8, 74,145, - 22,140,202,146, 83, 61,208,243, 29, 40,207,102,141,241,190,107, 8,124, 15, 55, -108,103, 91,113,119,252, 96, 82, 85,212, 57, 24,136, 45,167,157, 71, 80,245, 72, -156,222,248, 91,247,233, 44,125,225,205,105, 2, 99,129, 12,244,154,148,100,236, -241, 11,204, 75, 82,125, 17, 60,113,108, 54, 38,241, 29, 40, 12, 99,162, 6,123, - 92,222, 52,208,225, 10,172,137, 42,252, 8,129, 11, 6,254, 11,134, 10,136,183, -138,129, 8,199,178,205, 67,236,168,187,110, 20, 8, 28,235, 12,146, 50,103, 50, -101,139, 99,242,111, 0, 39,115,144,156, 11,170, 82,127, 10, 78, 88,169, 39,163, -155,212,127,107, 44,113,214,210,208, 69,164,113,100,213, 87,170, 24, 18, 45, 98, - 14,227,164, 47,220,239, 34,125, 3,222, 2,233,134, 60,171,139,149, 76,136, 26, -254,111,220, 21,139,179, 54,207, 83, 27,156,140, 3, 77, 22,112, 71, 33,222, 5, - 93, 73, 10,223, 85, 59,229,149,173, 24, 56, 85, 75,206,148,244,140, 51,228, 20, -247,225, 19, 97, 83,122,242,195, 98, 50,249,196,157,220,171,181,132,235,145,202, -102, 24,206,213,245,143,128,125,220,231, 32,116, 54,231,219, 52,158,103,159,150, - 62, 70, 23,229,105,111,235,112, 69, 51,159,183,112,169, 19,177,194, 26,226, 7, -180,163, 16, 11, 43, 33,167,201, 95, 44, 46,163, 59, 39, 37, 99,150,194,161, 83, - 73,238, 40, 42,194, 99, 20, 94, 74, 30,223,167, 50,225, 41,202,112, 53, 27,106, - 3, 48,207,229,102,231, 81,191,246,252, 12, 90,244, 77,209,127, 12,196, 30,137, -151, 69,130, 90, 65,101, 98, 59, 47, 62, 56,158, 25, 80,137,103,125,224,202, 2, -155, 19,156,186,106, 2,172, 84, 54,163, 73,252,106,233, 59,178, 99, 97,225,218, -147, 97, 99, 33, 25, 17, 90, 64,207, 8,251,219, 86, 92, 2, 41,168, 61,108, 5, - 12,181,241,242,136,140, 42, 90, 95,138, 46,140, 35,214, 27,147,113, 35,194,167, -211, 74,138,153, 58,237,232,129,128,182,164, 61,222, 2,191, 16,154,222, 67,210, -119,130,141,207,176,137,247,255,145, 3, 43, 23,107,250, 0, 39, 31,246, 86,154, -203,248, 47,140,136, 61, 28, 24,151,114, 74, 0,156,190,229,144, 4, 36,107,254, - 22,217,240,221, 29, 73,143,192,220,153, 77,180,193, 7,193, 48,223,175,204, 3, - 17,235,121, 83,227,112, 92,241,200,134,180, 12, 37, 38,209, 73, 58,216,173,237, - 39,191,104,161, 91,129,145,101,106, 48,110,193, 92, 14,114, 10, 60, 26, 1, 74, - 73,188, 13, 41,192,212,113, 3,120, 59, 0,177,184,208,226, 21,170, 3, 57, 51, - 2,128, 55, 40, 55, 66, 18,185, 19,144, 68, 53,141,227,198,186,197,211,239, 42, -138, 33, 8, 80, 1,212, 0,211, 0,210, 0,220,140, 9, 30, 8, 76, 17, 16,168, - 84, 96,198, 73, 73,162,236, 68,145,252,229,201, 63,151,205, 37, 35,177, 19,183, -196,226,143, 76,247,232,252,159, 92,127,147,238,241, 51,201, 2,206,161,127, 72, - 60,149,180,178,199,153,242,147,105, 95,210,230,157, 91, 7,117, 85,165, 40, 63, -121,228,222,148,215, 71, 72, 98,155,112,168,244, 5, 85,239, 37,133, 41, 24, 63, - 88,119, 2, 77, 37,239, 72,176,123, 39,150, 61,146,155,254,157,239,103,147, 1, -105, 26, 12,106,244,179,196,193,148,120, 84,190,122, 39, 7,146,125,134, 39, 98, -195, 42, 59, 57,212,165, 66,235, 84, 72,132, 58,158,140,137,110,114,212,101,106, -118, 92, 77,121,181, 99, 77, 10, 63, 29, 14, 55, 55,103, 76,171,232, 66, 64, 64, -127,254,133,176, 61,122,117,148,197,200,211,202, 20,245,148,182, 9,105, 30, 32, - 44,180,107,177,220,249, 40,137,197,203,236,233,164, 94,202, 43,131,115,177, 7, -215, 78,110, 23,122,220, 22, 26,199, 74, 35,183,198,249,112, 95,203,113, 55,155, -182,151, 99, 62,119, 72,195, 29, 45, 12,155,243, 57, 35,185, 49,179,114,122,236, -209,171, 35,226, 49, 90,144, 1, 90,242, 95, 38,136,164,114, 97, 1,161, 1, 33, -182,213,165,124,197,145, 28,108, 50,225, 38,209,205, 0, 59,136,156, 41, 44, 52, -176,166,105,219,228,166,231,205, 78, 69,121, 95, 57, 39, 32,169,140, 49, 70,140, -177,206,165,106,162,120,150, 32,120, 82, 22,233, 42,243,197, 60, 97,153, 98,239, - 35,243,165, 8, 28,244, 63,204,214, 61,176,144, 13,216,224, 78,146,127,198, 68, - 2,192, 88,162,133,228,166, 75, 64, 96,170,160,139,231, 34,226, 67,211,204,174, -185, 74, 37,171, 62,238,165,234,186,232,102, 1, 85, 24,211,246,116,162,136,209, -183, 24,103,136,111, 66,104, 8,196, 92, 86,136,133, 45, 6, 27,133,197, 81, 7, -129,124,175,249,142, 49, 41, 8, 9, 10, 12,147,227, 15, 16,182,101, 89,171,187, -187,187, 41, 94,165, 84,194, 43, 83,220,148, 40,238,134, 16, 30, 92, 16, 15,215, - 36, 99,191,239,251,172,203,218,238, 41, 77,118,118,170,234,163, 90, 1,161,209, - 60,132, 54, 1, 26,231, 2,114,102,161,121,156, 60,205,162,193,205, 48,126, 18, -169, 6, 88, 84,170, 15,226,194,223, 79,221, 37,233,220,228,180,185,153,117, 13, - 28, 98,116, 62, 28,173,221, 92,121,210,115,148,143,228,181,150,243,182, 44,200, -124, 79,150,195, 85,197, 90,234,152,175,228,229,118,238,147, 75, 85, 69,213,209, -129,231,105,161,141, 22,210, 0,116,231,163,105, 72, 72,116, 52,151, 45,226,162, - 55, 91, 22,161,133, 46, 25,237,227,209, 34, 32,223,219,151,239, 5,217, 49,115, - 85, 65, 36,123, 78,226,250,144, 58, 6,195, 25, 67,164,112,103, 82,130, 3,235, - 87,218,125,222,201,142, 67, 70,174,130, 20,166,112,219, 27, 31,172,192,229,183, - 2, 26, 8, 43, 20, 25,138, 76,234, 47,153,203, 85, 71,169,149,197,108,173, 96, -198, 14,112, 69, 84, 34, 39,180, 69,220,213,131,141, 83, 36,182,112,135,168, 75, -122,219,248,208, 67,246, 71, 77,166,206,239,206,239,129, 86, 43,219, 43,231,204, - 51,246,235,182, 28,142,112, 91, 16,138,172,238, 17, 40,226,246, 46, 99, 63,209, -230,241, 6, 81, 32,169, 41,234,216, 27,180,240, 8,115, 54,121, 39,249,127,158, -244,190,190, 55,175, 42,223, 8, 5,136,148,246,234,154,190,122,207,183,133,208, -126,116,114,211,254,107, 35,217,121,118,246, 91,214,178,253,144,210,101,186,170, - 82,125,127, 89,104, 51,150, 63,251,246, 37,143,244,115,102,219,155,154, 55, 31, - 50, 63,203,129, 89,146,127,113,187,183, 34,119,149, 49,120, 77,255,210,136,126, -252,222, 72,254, 37, 71,254, 18,228,101,119, 86, 97,201, 25, 67,142,147,125,129, - 24,114,143,146,168, 20,251,245,176, 54, 32, 8,243,163, 0, 0, 24, 9, 74,132, - 18,105, 26, 42,138,252,180,192,199, 3, 27,134,141, 6, 19, 5,194, 96, 70, 12, - 17, 32, 20,192, 2, 20,192, 0, 16, 0, 0, 2, 20,128, 0, 1, 74, 1,134,217, - 7,165, 49,148,207,205,215,135,133, 9, 21,144, 36,252,137, 65,152,152, 55,228, -176,193, 95, 1, 67, 65, 61,109, 12,147,252,205, 40, 44,203,203, 84, 40,231, 79, - 23,194,180,188, 99,132,173,254, 80,225,253,204,161, 38,221,119,123,234, 18,215, - 81,126, 0, 95,236,236,187,166, 19,106,196,214, 38,183,204,113, 62,212, 63,164, - 52,138,244, 33,250, 56,170, 90, 86,235, 51,245, 72,174,104,157, 65,215,205, 83, - 45,125,172,204, 9, 8,233,123, 32, 4, 33,157,178,145,213,109,167,204, 82,130, -102, 56,183,102, 7, 26,209, 90,253, 35,248,184,112, 38,240, 91,153, 52, 59,219, -154, 80,160, 23,171,240,111,103,176, 39,148, 12,188, 51,168,184, 90, 20, 96,136, - 92, 35, 65, 56, 59,254, 60, 25,168,181, 68,116,178,254,119,198, 47, 64, 15,207, -184,199,246, 82,116, 14, 92, 92,214,164,229,102,223,231,231, 34,123,181,147, 23, -216,148, 20,166, 47,120,108, 5,252, 72, 0,141,207,200, 26,120,201,104, 73,252, -168, 75,182, 52, 86,150,179, 85, 43,168, 17, 2,151,141,137, 8, 49, 48, 57,126, -227, 68,185,215,188, 23,187,183,200, 92,187, 26,227,251,152,190,104, 65,235, 66, -141,165,128,165,250,212, 13, 62,167,151,152,152,238, 22, 47,147, 54, 44,207, 40, - 8, 35,136,248,181, 20,142,150,199,243, 11,203, 74,167,130,138,254,156, 80,228, -123, 67,111,108, 90, 0,238,183, 32,112, 76, 26,216,114,215, 7,184, 10, 70,213, -197, 15,222,158,207,159, 12, 56,196,184,177,112, 75,221,168, 44,134,124,218, 8, - 94, 72, 13,103,154,152,141, 74, 26, 3,147,180, 2,212, 48, 10, 68, 52,140, 74, -151,206,138,188, 56,117, 27, 18,169, 12,172,155,245,174,172,252,182,205,122, 68, -162, 54,110, 22, 41,220,123,224, 56,153,182,190,242,106, 62, 76, 94, 72, 52,250, -101,204, 37, 32,162, 70,178,188, 80,228,182,241, 32, 34,117,144,159,172,140,162, - 36, 58,169,168,118,131,242,194,151, 48,151, 56, 0,230, 23, 54, 97, 38,109,166, - 80,208,128,169,252, 6,121,171,152, 57, 67,140, 14,148,237, 65,240,196,180,145, -202,179, 22,140,126,161, 16,235,166, 9, 8, 36, 21,116,162, 7, 97, 26,163,156, -198,211, 55,171, 71, 90,177, 12, 24,123,152, 98, 41,120,255,202,104, 14, 21,236, - 82,148, 41, 54,162,249, 13,246,169, 1,187,237,253,115, 80, 58,198,230, 69, 15, -140, 21, 43, 21,107,122,142, 13, 30,133,177,170,191,175, 42, 17,249, 23, 1,139, -219, 89,244, 14,135, 4,253, 80, 92,171, 3,167,168,169,160,212,201, 33,163,198, - 37,230,249,132,155,166,238,215, 90,243, 18, 39, 3, 94,220,188,254,211,187, 56, - 74, 72,115, 38,195,203, 32,102,133,152, 10, 31,252,213,200,172, 43, 39,146,124, - 43, 46, 49, 56, 34, 78, 38,106, 24,204,147, 32, 88, 73,153,137, 3, 7,188,193, -184,165,131,132, 10, 81,112,113, 18,173, 33,189, 67,198,119,110, 67,252,174,214, - 72,148,180,158,135,222,197,250,124, 11,179,210,216, 92, 63,240, 12, 47, 9, 73, -108, 12, 74, 5,147, 74,197, 34, 49, 15, 86,120, 29, 35,122,155,152, 71,214,136, -100,153, 23,207, 60,207, 8,251,252,132,173,188, 11, 39, 77,139, 60, 1,154,116, -103, 93, 18,153,240,162, 13, 18, 38, 19, 55,173, 27,203,209,233,154,131,245,221, - 87,250,119,173,111,193,254, 44,228,165, 14,235, 56, 9,172,170, 73,217,114,147, -214,249,163, 16, 67,247, 46, 10,156, 69, 27, 78,174, 53,161, 89, 25, 20,239,224, - 79,240, 98,236, 9,142,169, 7, 65,189,147,153, 43,148, 32, 9, 47,235,146, 97, - 64, 70,143,164,192,249,228,145,245,240,132,105,132,236,145, 68,121, 50,243,246, -219, 34,248, 13, 14,159, 13,151,171, 92,126,187, 39, 15,219,184, 16,170, 45,246, -250,237,143, 35,247,207, 50,119,159,232, 20, 49, 20, 75, 38, 63,121, 22,110,210, - 21,229,254,196, 73, 88,241, 85,210, 2, 20,167,208, 98, 82,209, 43, 80,152,194, - 11, 52, 69, 63, 65, 97, 38, 33,142, 36,240,160, 60,136, 43, 18,138,113,132, 34, -253,149,136, 36, 17,229,125,159,125,171, 59,104, 19, 76,176,162,175,250,179,234, -253,110, 58,156,104, 86, 43,184,188, 9,223, 69, 19, 0, 0,158,155, 96,166, 54, - 74, 80, 32, 99, 83,149,109,162,123, 37,246,175,155,236, 33,147, 39,168, 41,188, -152, 18, 23,165, 20,158,223, 86, 35,119,237,233, 6, 10, 35,157, 21,178, 39,119, - 18, 45,254,182,231,128,146, 92, 84, 70,130,101,251, 19,123,126, 15,233, 87, 92, -177, 66, 98,138,171,162, 71, 81,190,156, 92,170,194,212, 20,147, 60,208,248,170, - 93,146, 20,145,148, 29,100,129,190, 86,240,124, 31,172,130,225,156,226, 25,177, - 24,239,230,207, 85,193,172, 44,135,191,118, 89,233,191,231, 0,240, 10,166, 23, -216,213, 37,183,105,224,199,134, 69,114,104,207,138, 24, 32, 10, 26,125, 6, 66, -252,123, 22,152,199,159, 12,146, 42, 32,210,157, 33, 84,153, 7,128,217,242, 9, - 19, 33, 93, 46,140,155,170,233, 20,241,218,243,145, 59, 77,138, 52,192, 71, 15, -251, 36,188, 70, 98,134,207, 91, 98,151,206,231, 98,250,188,169, 10, 51,174, 98, -216, 30,225,109, 98,220, 9, 89, 72,236, 45, 59,224, 61,201, 96,140, 20,240,133, -235, 59, 78, 14,235, 41,208,228,143, 59,137, 52, 65,249, 36,194, 12,128,243, 59, -191,187,150, 18, 10,189,200, 19,221, 89,247,242,214,133, 95,196,130, 21,137,192, -124,232, 65,176, 63, 4,194,218,250,123,241,205,161, 5, 74, 98, 99, 58,110,248, -133, 57,184, 48, 9,174,153,238,187, 78,208, 6,240,227, 34,137,215, 69, 5, 54, - 74, 97, 11,158,246,119,132,159,223,158,229, 60, 83,203,144,172, 68,254, 71, 90, - 26,107,135,195, 38,232,219, 3,229,143,189, 63, 99, 76, 73, 67, 78,225,194,209, - 5,183,132,188,253, 32,218, 71,132,173, 41,167, 28, 90, 14, 77,151, 67, 2, 28, - 25, 91,233,212,135, 46,126,198,181,144, 43, 11,115, 37, 69,218, 73, 45, 11,215, - 94,184,111, 47,209,211,112,249,151,123,234,228, 84,106, 95,118,119, 66,162, 7, -225, 74, 93,150,166,221,158, 85, 92, 93,193, 61,148, 54,151, 26, 96, 41,123, 68, -170, 80,209, 7,127,184,246, 22,210, 39, 43,122,217,125,149,176, 1, 20, 83,129, -217, 88,134,218,171,174, 10, 47, 90, 18,251,201,122,205,138,243, 24, 16,145, 32, -222,128,147,103,121, 41,216,170,104, 34,105,136,240, 75, 76,100, 83,232, 75, 44, -215,158, 78, 72,129, 77,241, 65,199,229,189, 92, 85,104,208, 44, 0,161, 73, 89, - 46,209, 92,255, 95,150,202,138,122, 77,119,225, 0,235, 1, 95,160,117,155,224, -179, 78, 35,189, 49, 15,172,158,179,107,183, 49,158, 53, 86, 27, 67, 7,226,242, - 50,203,122, 44, 95,113, 37,138,157,207, 96,120, 58,210, 35, 71,124, 93,170,217, - 71,169,111, 99, 54,212, 61,227, 32,180,224,226, 12,162, 38, 66,241, 28,215, 42, -218, 93,119,129, 60, 70,164, 83,175,226,246, 38, 65, 0,136,151, 50, 2,156,209, -238,183, 44,163, 60,238,214,209,139, 48,160,140,174,217, 33, 21, 4, 21,102, 9, -166, 67,236,148, 36,120,135,193,129, 24,152, 81,210,110,111,201, 45, 28,216,128, - 91,183,228,235, 61,165,113,145,176,119,107,126, 84, 87, 22, 22,217,194,181,145, -234, 95,112, 45,105, 65,185,102,157,206,152,230, 98, 16, 21,114,133, 71, 51, 15, - 41, 56,187,142, 54, 13, 72, 79,213, 81,191, 0,165, 5, 92,111, 67, 38,172,123, -180,167,180,153,246,118, 13,202,140,203, 91,218, 82,209,123,153,151, 0,150,227, -152,182,252,100, 14, 76,137,170,105,222, 13,248, 45,229, 4,123,179,234,254, 45, - 86,229,201,170,199, 87,216,191,175,179, 11,215,230, 94,213,135,158, 40, 26,233, -153,236,230, 75,202, 6,179, 65,161, 6, 40,192,104, 24, 79, 38,100,212,135, 89, - 6,182, 23,199, 44, 56,130, 59, 1, 44,213,194,203,236,203, 67, 95,197,236,195, -179,238,201,236,191,170, 82,217, 4, 30,198,166, 94,206, 89,135,105, 70, 45, 45, - 5,196,160, 2, 37, 53,241, 8, 69, 75,132, 65,251,121,147, 96, 84, 74,112, 88, - 83,147,102, 3,198,187, 63,190, 95, 98,240,203,138,142, 47, 84,124,122,121,103, - 85,240,146, 17, 43, 83,118,209, 14,255,117,105,170, 96, 19,237,189, 55,122, 27, -208,142,184, 37, 15,207, 46,144, 31, 96,181,246,183, 32, 53, 67, 89, 74,108,121, - 14,199, 41,153, 53,139, 25,215,108, 90, 73,133,101, 32,166, 44,124,129, 21,188, -175,232,164,144,231, 93,128, 70,174,204, 82, 40,112, 99, 93,100,253, 23, 7, 64, -187, 25, 13, 40, 52, 95,234,226,144,212, 9, 81, 30,245,184,154, 12, 5, 40,171, - 92,117, 52,238, 37,101, 10, 65,123,225,147, 45,161,158,149, 35,235, 20, 89,210, - 2, 50, 81, 83, 81, 83,139, 57, 53,199,203,242,208, 32, 13,107,146, 78,226, 80, -156, 59,198, 35, 64,142,100,100,135,252,196,198,253,246, 15,146, 1, 79,240,144, -145, 46, 19,229,187,100, 7,116,104, 41, 45, 2,164,203, 68,202, 83,216,108, 27, -206,137,145,194,162,109, 68,108, 34, 55, 77, 16,210, 33,147,202, 2,228, 20, 95, - 72,117, 25, 74, 18, 87,220,238, 98,251,229, 62,198,207, 19, 99, 22,187,227,240, - 50, 61,112, 38,118,173, 72,153,134,134,126,121, 9,223,110,123, 3,135,189, 32, -234,154, 51,160,226,149, 96, 62,207,118, 29, 8,127,164,163, 64, 92, 21,196,205, -116, 25, 36,100,197,201, 20,226, 58,136, 27,171, 32, 17,111, 95,109, 78, 10, 37, - 90,184, 90, 72,120, 38, 29, 94,184, 27, 76, 56,196,109,196, 54, 14,183, 72,199, -162,150,157,227,236, 84, 81, 95,156,234,164, 34,205, 54, 30,236, 38,190,179,142, - 47,190,102, 79,193,123,221, 93,118,182,254,103, 0, 28, 25,164,156,178, 71, 48, -122, 39,139,160, 24,164,186,124,196, 6,225,115,211,242,116,144, 75, 83,200,201, -185,201,218, 84,146,174,158,158,205, 72, 6,129,255,175,123, 97,144, 37, 51, 63, -126, 16, 51,171,122, 60,195,159, 84,133,190,119,219,189,220, 39,174,229, 27,194, - 4,106, 51, 10, 3,117,234,143, 69, 71, 24,196, 39, 73, 6,115,131,160, 80,109, -169,181, 15,181,119, 71, 98, 17,202,211, 51,174,156,136,151,135, 68,176, 14,211, - 91,179,229, 23, 85, 89,185, 59,225, 58,246,117, 88, 39, 14,201, 72,174,102, 61, -226,126, 29, 6, 62,142, 5,221,155,246, 9,176, 38,152,253, 24,107,138,127, 77, -189,251,231, 55,109,213,188, 82,206,135, 48,228,115,149, 91, 65, 35,188,109, 46, -230, 29,208, 20,252,241, 85, 28,228,133, 84,174, 60,125, 26,220,210,210,142, 81, -194,185,249,179, 59, 9,107, 87,176, 3, 26,240,240,162, 99, 24, 22, 46, 3, 18, - 86, 20, 88,114, 88,234,114,134, 80, 58, 56,133,247,253,234,223, 14,132, 79,104, -217,153, 6, 90,120,243,207,144,107,154,174,171,186,153,154,143, 68,149,191, 27, -205, 92, 3, 92,147, 70,238,186,204, 0, 66, 4,141,156, 71, 35, 48, 51,120,133, -106, 51, 51,179,193, 95, 58, 43, 90,242, 66, 95,125,239,216,172,240,168, 48,195, -133, 33,137,131,173,241, 34,198, 46,149, 96,119,187,120, 8,151, 17, 28, 73,236, -179,169, 32,163, 26,172,125,247,102, 92, 31, 24,110, 16,144,247,193, 7,145, 1, -127,159, 89,137,231,185,195,146,184,133, 4, 72,158, 62,227, 33, 35, 30, 53, 1, -181, 83, 90,132, 96,172,140, 27, 69,214,197,139,141,116,105,246, 13,222, 55,197, -141,210,246,230, 14,194,101,101,255, 28,120, 13, 95, 19,184, 18,164,217, 69, 27, - 83,167,129, 91,126,235,198,136,127,180,186,127,224,104, 32, 74,156, 4, 32, 64, -212,225,192, 66, 13, 88,225, 64,174, 96,141,254,142, 32, 44,140,128,116,109,213, -184,164,126,153, 31,162,232,135, 2, 1,157, 27, 50,200, 2,142,189, 76,134,233, -215, 24, 20, 58, 83, 74,147, 26, 90,112,193,165,154,236, 36, 70, 63,144, 97, 52, -225, 86,217, 7, 72,254,158, 2, 25, 53,208, 64,240, 73,243,131,166,158,184,162, - 82,238,145,132, 48,108, 5, 6, 57, 25,143, 36,174,155, 33,200,144,176,250,135, -241,111,194,228, 18,235,176, 49,230,134, 73, 10,123, 22,195, 24,224,234, 12,218, -151, 41,135,101, 21,201, 21, 43, 7,124, 92,135, 29, 8,190,105, 55,196, 78,196, -177, 17,234, 30, 33, 74,233,172,121, 67, 88, 47, 88,228,121,113, 52,143, 63,201, -251, 28, 7, 34, 59,105,196, 33,119, 70, 37, 7,139,218,202, 71,129,225, 31,108, - 72,136, 40, 24,211, 60, 48, 43, 66,160,247,207,149,225,217, 56, 79,224, 28,126, -195,216, 1,141,233, 5,189,250, 75,254,131,168,186, 95,188,202,103,132, 40,185, -176,140, 14,156,227,223, 58,155,247, 20,176,160, 71, 66, 42,108, 87, 88,229,151, - 77, 96,187,210, 10,128, 78,236,134,196,238, 86,224, 10,213,230, 91, 67,249,189, -151, 22,184,107, 74, 23, 66,107,125,102,143,116, 60,117, 24, 30, 39,147,220,198, -120,187,249, 46,227,120, 59,204, 19,164, 44,216, 33,101,135, 91,208, 42, 84,124, - 58,184,130, 34,255,165, 53,185,203,130, 20,153,114, 25, 2,152, 36,140, 52, 86, - 7, 77, 98,147,133,246,192,138, 92,106, 60,169, 14, 27,195,202,128,182,115, 40, - 40, 46,255,125,168, 16,184,221,218,127,193, 55,110,119, 84,122,168, 2,204, 64, - 29,105, 76,202,171, 59,183,248, 12,148, 42, 99, 6,147,145, 24, 41,140,197,144, -100, 18, 55,172, 67, 81, 14,159,130, 96, 87,112, 74,247, 26,188, 77, 6,224,203, -190,211,122,127,122,202, 8, 9,241, 10,110,141,128,229,216,245,193,178,143, 79, -221,183,199, 60,152, 23,248,211,163, 96, 99,103,208,243,248, 30, 39,114,121,186, -150,142,225,219, 57, 23,104,211,101,233,143,142, 79, 44,220,231,142, 93,216,114, -110,160, 92,167,104,236,112,144, 71, 71,120,200,173, 39,236,134, 23,111, 48, 4, - 29, 65,124,102,124,143,212,204,199, 50,209,102,146,218,248,142, 36,134, 83,228, -178,202, 48,219,174,121, 96,241,157,145,231, 29,133, 33, 10, 99, 27, 76,105,108, - 84, 50,227,113,249,209,142,156,245, 15,245,202, 56, 17,103,237, 57,216, 82,174, - 88,228,243, 41,134,224,196,116,231, 1,207, 19, 99,225,155,164,152,224, 91,118, -103,193, 18, 83,105, 68,245,132, 63,202, 79,254,203,159,234,160, 34,153,118,196, - 43, 20,140,172, 83, 19,136,169,141,232, 71,110, 23, 50,241,107,106,101, 26, 64, -239, 80,113,210, 24, 91,198, 99, 21, 26, 97,148,152,204,157,195, 96,232, 57, 15, - 5,215,174,189, 15,128, 62, 96, 99, 14, 15,228,226, 34,194, 51,180, 2,180, 83, -153, 40, 99, 67,240,192, 70,123,171,238,192,128, 8, 96, 72, 55,243,136,227, 13, -217,121,148, 73,197,135,150, 76, 69, 1,206, 63, 13, 27,175, 16,112,150,177, 96, -215, 67, 81,167,145,161, 37, 18,253,128, 85,111,190,224,108, 34,247, 75,174,133, -118,160,205,119,128,192,224, 72,197, 87,238,136,117,180,183, 66, 44, 16,101, 36, -226,103,193, 29, 82,115, 0,161,146, 18,114,138, 68, 53,164, 39,130, 68, 73,100, -152,205,135,119,215,206, 60,126, 18, 33,140, 81,115, 63,100,164,227,151, 49, 84, -102, 56,159,223,182,209,165,101, 57,207, 36,204,227,237,133,146,253, 9, 27,208, - 22, 79,137, 96,205,200, 27, 14,162, 54, 3, 36,114, 43, 22, 3,208, 85, 15,153, - 64, 86,141,112,200,238,148,230,136, 18,176,232, 46,245,113,223,127,245,120,136, - 35,194,165,111,114, 12,119,208,135,175,148,241, 55, 68, 18, 17,142,225,152, 55, - 60, 22, 97, 73,115,152,138,123, 39,162,201,230,224,145,148, 92,248, 65,183, 68, - 75, 20,111, 41,139,160, 19,107, 39, 66, 66,203,127,139, 87,158,173, 0, 70,227, - 57, 94, 88,231,197, 96, 91, 59, 58,200,238, 63, 0, 67, 89,248, 48, 70,207,211, -197, 50,184,128,216, 95,199, 10, 97,251, 35,169, 66, 95,218,123,215, 24,140, 63, -119,185, 72, 44,255,196, 94,161,142, 46, 66,101,209, 20, 82,127,189,187,166,184, - 88,245, 22, 11, 74, 85, 81, 97,159,194,191,104,146, 70, 22,146,138,163,211,166, -165, 80,249,217, 16, 35, 58,252, 41, 77, 14,171, 10, 84, 62, 76, 84,227, 50, 7, -134,120,251, 26, 27,122,223,255, 34,248,162,151,116, 36, 20, 73,137,119,164,184, -226,126, 13,133, 14, 10, 59,210, 20,189,121,131, 45,215, 18,162,211, 58,211, 33, -182, 89, 33, 30,218,153, 85,216,241,116,186,228, 82,164, 88,240,235,194, 35, 62, -247, 51,213,210, 28, 45, 30,204,154,178,168,111,148, 41,246,234,137,180,130,206, -186,240,198,200,245,255, 33, 11,237, 98, 36, 64,212,189,188,211,214,119, 84,130, -173,206,105,110,158,202,137,136,145,253,249, 43, 97,116,170,169,153,206,227,210, - 57,255,236, 62, 60,164,114,110,221,174,129, 87, 41,225, 56, 82, 54,172, 30,189, -146,179, 84,122, 74, 95,169,138, 83, 87,197,242, 1,205,168,125, 14,201, 16,168, -105,190,203,218,234, 19,126,229,175, 63,109,134, 5, 48,229, 24, 14, 21, 56, 90, -157,127, 74,228, 88,245,241, 90,134, 53,229, 49,211,201, 61,228,131,238, 30,118, -195, 33, 4,112, 85,171, 53,150,166,195, 42,201, 53,186, 33,137,225,117, 31,145, -144, 44,145, 89, 85, 20, 89, 23, 37,174,179,244,151,165,251,219, 60, 40,125,192, - 83, 73,169,143,216, 98, 14, 80,224, 89,173, 73,127, 98, 81,241,189,201, 78,246, -215,150, 96,201,228,242,157,103,221, 69,122, 98, 53,242,154,147, 88, 45,215,188, -180, 30,224,199,215,178, 8, 18,148,213, 95, 82,105,223,118, 83,165, 9, 61,106, - 15,219,250,160,250,210, 99,140,156,143, 16,231,191,131, 70,185,249, 31,154,222, - 19, 94,137, 76, 26,227, 18, 1,116, 31,120, 52,180,137,197,155,229,184, 87, 65, - 45, 52, 74,160, 76,164,221,151, 26, 61,126,156, 39, 6, 93,195, 85,203, 25,113, -144,100,233,221,222, 18,233,188,174,199, 98, 27, 26, 34,170,237,161, 17,234,247, -106, 35, 81,161,210, 54,158, 9,193,240,196,186, 44,218,186,121,226,234,178, 22, -132,145,170,101, 85,248,213,178,215, 61, 30, 90, 76,107, 35, 0, 15, 71, 70, 66, -120,152, 63, 69,198,246, 67,160, 97,239, 4,231,241, 21,125,203, 80,173,217, 29, -105,130, 30, 8,146,112,131,113,162,189, 7, 28,130, 26,191,223,101,112,255,246, - 62,120, 55, 73, 84,161,224,122,144,175,197,185,150,110, 9, 95,234, 33,114, 50, - 75,151, 61, 72,170,201, 55, 9,222, 57, 34,212, 49, 46,250, 32, 16,151,189,164, - 46, 59,174,241, 24,137,227,156, 7,131,148,242,183,100,231,101, 37,227,100,241, -144,142, 66, 80,232, 5,147,159, 17, 18, 64, 20, 2,174,105,168, 50,184, 8,225, - 12,205,175, 75, 81, 51, 30,107, 31,113,206,246,245,219,225, 16,124,176,112, 58, - 36,180,175,136,140, 27,206, 56,162,117,192, 46,174, 9, 9, 11, 81, 17,104, 13, -121, 48, 84,149, 13,121,175, 5,172,235,241,248,250,159,250, 88, 8,127,224,250, - 42,201,139,221,114,163, 14,138,170,132, 6,180,206,201,161,238,146, 65,169,169, -179,132,204,188, 94, 98,170, 40, 63,168,184,149,103, 64,215,157,216, 26, 56,238, -157, 79,229, 95,116,216,247,156,123, 54,230,199,101,127, 16,239, 51,109,136,239, -193,229, 60,182,110, 6,183,190,107,135, 1,178, 60, 38,231, 41,194, 54,218,122, - 41, 22, 31, 13, 70, 46, 56,183, 99,230,149,131,109,239,171, 32, 23, 95, 91,178, -213, 74, 32,119,120, 15,169, 78, 1, 86,147,219,112,147, 93,148,119,175,198,166, - 75,226, 41, 64,250, 8,199, 1, 67,105, 48,244, 91,252,227,194, 31, 93, 57,166, -210,125, 13,225,223,227, 88, 10,248,239,206, 35, 17, 6,250,202,194, 90,231,169, -126, 5, 35, 83,136, 81, 5, 16,160,217,122,114,157, 86,241,147, 28,104, 26,201, -123, 48,195, 68, 64, 75,181,208,125,198,153, 40, 52, 0,250,214,160, 65, 54, 56, -231,215, 66,107,219, 74,184,221, 43,184,176, 93,241,194, 96, 39, 32, 42, 12,209, -225,111, 0, 55,196, 14,104, 60, 89,133, 25,201, 93, 72, 54, 59, 43,182,155,110, - 10,203,165, 5,167,158, 42, 14, 36,234, 72,165,221,170,228,219, 71,122, 45, 2, - 44,137, 14,151,144,201, 48, 25, 2,193, 96,115, 13,191,124,126,206,148,127,135, -207,247,214,120,244,145, 43, 39,140,135, 12,203, 29,185, 35, 9,117, 83, 47,166, - 79, 98, 65, 28,247, 90,127,103, 90,148,156,201,160, 69, 34,173, 85,201,179,108, - 39,201,211, 69, 10,132, 81,179, 42,143, 11, 36,208, 85,136, 50,244,203, 47, 96, - 89,101,249,147, 86,210,177, 78,207,192, 0, 42,234,115,206, 54, 71,125, 95,245, -173,250,220, 66,219, 84, 9,147,180,220, 82, 92,172, 55,113, 56, 28,169,102,104, - 4,105,251, 0, 84,107,200,228,231,232, 9,197, 67,137, 53,146, 32, 85, 23,153, -237, 35, 38,168,195, 2,197, 78,104, 93,179,168, 99, 67, 96, 7,214, 74, 26,246, -144, 75, 11,176,140, 10,233, 1,253,131, 40, 25, 18, 55,100,255, 81, 59,148,164, -162, 38, 94,179, 14, 33,223, 44, 52, 16,236,205, 6,165, 95, 89, 39, 35, 66,177, - 55, 3,101, 83,250, 63,149, 17,115, 40, 29,132,164,198, 68,182,108, 50,146, 31, - 37,155, 98, 79, 38,124, 83, 52, 72,132, 37,237,189,239, 79,194, 64, 92, 77, 77, - 60, 25,193, 90, 77, 31, 35,207,206,202, 5, 57,249, 20,181,199,201,176, 89, 37, -115,147,133,122,148, 36,155,108, 45, 79, 32,107,251, 88, 54, 25,224,197,101, 23, - 24,111, 27,211,242, 68,209,216,197,148, 93, 68, 55,146, 86, 16,132,168, 27,106, - 31,159,201, 4,219, 69,229,188,201,130,108,147, 73, 41,158, 41,153,150,135,233, - 80, 50,230,186, 46, 61,201,122, 18, 46, 61,244,163,180, 9, 52,235,221,187, 0, - 66,103,235,231,234,203,218,181,145,193,199, 93,134, 93,144, 92, 18,133, 31,100, -198,117, 26, 43, 3, 57,130,156,142, 5,207,250,191, 6,204,215,149,160, 73,178, -133,162, 62,113, 81, 95, 35,212, 28,137,231, 93, 32, 92,211,212, 55,126,151,117, -210,222,104,141, 1,119, 0,139,220, 44,114, 65,218,251, 60, 91,100,157,202, 33, - 92, 56,183,167,182,208, 93, 26,160, 79,112, 4,147, 78,156,154, 62,108,155,225, -134, 38, 27, 98, 53, 2, 53,173, 52,117,244, 80,157,227,143, 49,198,136, 68, 21, -150,184,219,155,184, 43,162,233,248,232, 14,213,147, 19,100,232,169,232,125,232, -229, 99, 5, 25, 99, 13, 63,246,223, 89, 86,206, 33,131, 84,157, 16, 57, 76,132, -233, 85, 2,214, 43, 71,241, 12,213,149,242,176, 24,171,215, 16,180,199, 56, 3, - 36,154,244,239,255, 47, 13, 52,140,114,193,214,108, 70,139,149,137,248, 6,198, - 22, 62,132,129, 37, 98, 31,159,121, 69,108,109, 72,132,198,179,245, 1,197,137, - 0, 2,231, 96,213, 82,151, 65, 55,134, 32, 46,224,129, 98,237,116,109, 83,104, -112,252, 36,159,147,252,127,177, 48,212,225,175, 19, 70,235, 5,129,156,104, 87, -246, 30,177, 6,214, 88, 50,175,115, 29,215, 95,238, 64,186,244, 0, 13,112,157, - 22,130,117,139, 80,250,131, 51,121,115,254,193, 9,112, 58, 41, 10, 87,169,235, -146, 61, 74,238,225,241, 55,176, 47,187, 68,132, 16,132, 71,173,246, 91,165,215, -123, 76,233,158, 22,233,197, 47, 48,240, 16,110,121, 2,225,164, 34,133,185,226, -132,229, 60, 9, 74,149,103,133, 51,208,245,234,221, 85,197, 22, 16, 51, 6,236, -135, 86, 11,125, 22, 53, 18,237, 40,221,141,172,121,241,208, 37, 6, 71,139, 27, - 28,233,135,147,105,165,161, 20,245,137,213, 79, 15,148, 40, 9,192, 90, 63, 74, -176, 93,194,213,243, 47,191,229,102,116,220,205,224, 75, 82,172,236, 13,106,132, -252,101,148,198,163,139, 50,156,169, 8,204,168, 4,213, 50,163, 81,182,183,146, -153,143,144,126,128,239,181,217,162, 44, 66, 60,199, 40,226, 84,132, 60,251, 27, - 1,172, 71,217, 80, 32, 14, 45,238,110,112, 82, 44,130,175,160, 5, 29,239, 91, - 82, 97, 41, 64,162, 35,235,156,195,226,181, 16,243, 26,116,115,126,212,218, 85, -240, 75, 82,127,242, 3,219, 94,222,192, 17,250, 28, 88, 76,180, 16, 16,233, 82, -175,192, 34, 65,249, 19,140,180,195,227, 5,174,162, 48, 56, 66, 10,105,161,211, - 42,157,152, 44,207,238,244,196,125, 91,155, 75, 42,250,245, 30, 16, 5,216, 7, -160, 56, 88,213, 42,121,155,224, 79,218,147, 51,235, 4,183,148, 26,231, 25,123, -249,243,245,155, 14,118,142, 1,113,230,160,164,168,223, 50,140,243,196, 47, 4, -227,207,110, 13, 37, 53,194, 25, 9,211,244,138,255,250,100,165,208, 2,100,153, -144, 31, 10,190,199,194, 22,117,157,246, 71, 55, 76,100,184,250,221,207,156, 95, -212, 5, 14,194, 3,100,162,242, 15,172, 3,189, 43, 54, 77,212, 68,126,216, 92, -209,246,165, 33, 42, 76,123,206,219,109, 92,190, 23,136, 47, 31,243,121,123,197, -238,177,152,254,255, 88, 94,196, 46, 4,128, 1,246,128,198, 14,191,218,142, 45, - 94, 64,244,197,172, 9, 82,253,190, 54, 61, 5,220,188,102,133, 11,158,188,169, -158,135,190, 84, 17,111,101,198, 94, 96, 33, 84,178,246,193,126, 77,113,238, 38, -117, 56, 56,222, 90,238, 27,194,250,191,113,218,228,248,111, 74,141,149,128, 63, -253,240,133,242,249, 83,207, 5,108,177,236, 46,189,134,129,108, 69,119, 25,162, -236,130,128,141,245,149, 32,113,166,239,184, 4,111, 37,135, 43, 34,196,212,187, - 26, 67,239, 78,199,203, 92, 5,223,112,147,199,223,178, 82,112, 19, 65, 27, 60, -176, 9, 23, 45, 8, 52,213,185,241, 6,128,103,116, 30, 98,177, 27,177,109, 76, -123,145, 73, 77, 73, 78, 63,190, 62, 30,150, 16,241, 10,167, 80,181,200, 8, 86, -200,107, 42,113, 92, 58, 61, 73, 65, 71,254,222, 66, 36, 14,150,177,217, 50, 62, -205,251, 84,232,136,123, 90,106,116,220,201, 97, 62,250,211,107, 62,129,209,224, -161, 72,176,244, 4,133,154, 33,234, 2,145,122,181, 25, 46,103, 30,243, 14,147, -175, 2,158, 82,183,152,201, 93,217,132,100,202,181,162,243, 44, 94, 39, 0,175, -255,180,240,127, 73, 29,146,159, 16, 34,251,152, 16,115, 43,219, 37, 14,210, 76, -178,201,199,193, 48,230, 70, 32,238,144,191, 60,102,137,172, 94,228, 60,151,134, - 30,245,245,140, 74,149,253, 73,110,240,102,243, 9, 21, 10, 42, 52, 43,154,227, -222,232, 52,135, 91,122,226, 74,200,179,239,130,117,210, 44,112, 32, 11, 43, 39, - 71, 75, 11, 56,221, 23,114, 11, 55,242, 81, 2,145,186,196,237, 14, 56, 74,112, -199,189, 64, 3,153, 83,217, 20,126,144, 2, 29, 56,124,236,102,199, 39, 16, 55, -101,128, 87,167, 55,246,167, 81, 14, 69,180, 21,131, 82,217, 65,204, 78, 5,205, -193,178,203,240, 31,224, 74, 66,230,153, 97, 69,175,236,184,138,250, 18,251, 79, - 12, 90,159, 60,243, 10,130,168, 0,103, 13, 17, 75, 7, 19,111, 42,202, 44,170, -178, 3,155,141,183,250,101,152, 94,172, 4,216,145,151,207, 27, 61, 55,219,154, -220,167, 44,163, 63,211,179,182,203,118,148,106, 57,218, 56, 44, 26,103,181,215, -148,132,205, 47, 17, 55,190, 74,212, 8,241,192, 26, 6, 32, 97,125,168,186, 23, -109,253,213,127, 84,149, 78,167, 41, 46,145, 59, 40,242,206, 79,245,168,151, 82, -249, 67,155, 49, 89,128, 8,215,244, 78, 53,230, 43, 99,152,226,146, 1,232,204, - 52,231,204, 18,118,235,137,250, 0,110,219, 76, 33,192, 97,224,209, 16,209, 13, -133, 34, 70,231,177,158,137,138,117,130,178,241,164,171, 85, 59,146,232, 62, 55, -212,222,115,138,201,221,177,180, 67, 92,103,112,149,114,242, 40,155, 1,178,141, -173,112,187, 97, 60,223,133, 14,132,223,229,217,249, 9,130, 94,158, 8,142,222, - 51,146, 67,211,154,169, 18,191, 9,246,163,193,168, 96,222,154, 42,186, 39,100, -151, 31,227, 24,141,219,181,245,216, 80,199,247,136,130,220,236,106, 58,184, 16, -152, 65,162,114, 88,181, 61, 76,253,179, 21, 23,236,120, 0, 84, 72,181,192, 39, -208,172,178, 21,202,100,137, 94,127, 22, 11, 81,143,221,157,101,175,102, 1, 52, -187,117, 57, 29,156,207,239,167,118,106, 46,193,214,208,166,133, 30,105,126,177, -165,103,172, 28,139, 23,198,130,133,137, 17,101,230,154, 8, 76, 24, 0,224, 74, - 30, 24,245, 11, 94, 75,217, 95,164,109, 30, 84, 50,214, 96,115,227, 95, 63,224, - 82,172,176,123, 55,159, 73, 92,229, 48,130,129,196,249, 93,148,249,187, 29, 69, - 69, 81, 15, 44,170, 11, 47, 83,187, 1,109, 33,206,187, 67,218, 64, 28,155,230, -156,138, 82, 35, 47, 18, 36,176,144,113, 35, 80,140,222,136,211,104, 89, 55,133, -219, 42,212,235, 85, 46, 43,224, 2,157,194,133,161,241, 48,224,126,124,166, 43, - 40, 9, 7,151,165,195,148, 97,239,167,221, 82,179,152,223, 59,210, 30,213,182, - 8,196,241,213, 20,161, 19, 46,208,156, 56, 64,243,224,204,186, 3,194, 45, 97, -116,193, 21, 81,194,149,240, 73, 13,235,209,108, 42, 79, 79,208, 65,148,138, 35, -250, 54,220, 22,236, 96,193, 7, 63,118, 57,158,232,164,191,191,196,255,211,126, -247, 49, 21,174, 85, 82,146, 81, 61, 19,110,148, 66,248,246,121,127,229,186, 42, -239,124,205,243,148,231,203,100,184, 82, 44,232,191, 62,170, 89,164, 60,241, 31, -197, 49,163,238,221,130, 19,174, 53,192, 75, 84,176,235, 12,194,118, 29,223,176, - 43, 22, 86,152,102,115,121, 29, 93,138,137,237, 3,101,142, 38,129,159, 53, 89, -101,115,158,243,102, 19, 23,212, 45,186,252, 18, 35, 80, 24,118, 6,179,204,127, - 0, 7,113,206,214, 74, 46,153, 15,250, 71,249,168, 9,233,178,251,145,147, 17, -107,143, 25,230, 31, 12, 98, 33,146,111, 11,127,120,254,169,205,168,203,223,232, - 72, 11, 62,249, 25, 94,114, 62,114,192, 75,104,141, 79, 86, 31, 19,222,117, 73, - 80,187,239,239,174, 64,142, 93,111,196, 98, 31, 58,139,196,198,152,145,170, 48, - 24,178, 44, 27,125, 93,239,182, 89, 88, 84,156, 67, 13, 35, 72,184,198,200, 69, - 62, 69,164, 58, 43,166,240, 51, 64, 5,249, 8,135,245,157, 86,225, 84,240,236, -135, 74,251,224, 56, 17,194,164,245, 1,166,108, 37,200,128, 28,126, 42,147,170, - 71,161, 69,174, 76,218,237,229, 77, 85,244,218,161, 35, 35,137,227, 67, 92, 87, -143,160,114, 99,128,202,139,112,164, 41,116, 6,159,116, 32, 43, 57,243,197, 5, -236, 26, 15,121,118,164,235,226,137, 66, 3, 89,143,142, 24,104,103, 8,151, 91, - 9,114, 17,245,107, 40,155,250,209,220,214, 69,177,219, 51,220,219,166,231,136, -230,106, 60,148,184,132, 12, 18,122,235, 82,239,140, 43,153,176,112,100,101, 78, - 66,167, 1,175,228,190,194, 32,166, 83,180,252,230,132, 80, 6,143,113, 1, 29, -147,228, 30,151,211, 32,106,133, 21, 34, 65, 20,133,209,243, 36,146,123, 47, 11, - 70,207,127, 92,250,225, 1, 80,240,154,225,233,188,113,117, 6, 87,210,115, 63, - 60,213,188,147,170,233,115,232, 87,227, 82, 60, 29,216,230, 65,231, 64,173, 15, -179,140,239, 52,192,101,144, 30,139,144, 43, 2,215,118,112,212,227,221,221,205, -235,182,196, 94,139, 31, 36,107,200,110, 85,180, 98, 8,203,122,167,106,123,195, - 11,210, 68, 80,251, 7,158,118, 44,110,184, 10, 51, 46, 59,122,149,233, 66, 45, -206, 99,202, 67, 10, 63,201,111, 20,163, 7,192,105,215, 27,184, 44,229,108,212, -216,124,228, 65,136, 43, 78, 54,152,251,248, 71,149, 13,225,255,108,110,222, 64, -218,195, 49,230,204,107,207,164,225,107,247,140,125, 31,214,181,214,111,211, 29, - 26,136,179, 12, 93,220,234, 32, 96,125, 91,144,206,222, 11, 84, 94,143,113, 20, -109,180,123,135,154,209,156, 47,133, 68,100, 19,139, 9,168,152,120,105,105,164, -143,206,213,115,111,252, 73,160, 54,171, 31, 3,234,101,225,153, 15,187,249,156, - 2, 56, 8,137,101,101,145,121,194, 27, 19, 66,200,215,113, 69,169, 49, 17,147, -105,178,133,255, 15,162,236, 19,138,142,255, 59, 84, 99,233, 72,199,223,216, 5, - 91,229,133, 80,162,165,118, 34,228, 15, 29,248, 55,212,155, 66, 9,169, 4,250, -178, 33, 76,246, 83,150,218,211,165,134, 37, 37, 48, 73, 46,106, 68,201,112,188, - 1, 58,193, 52,218, 39,195,109,227,150,243,200,109,133,171,192, 39,199, 22, 70, - 9, 36, 64, 96, 78,148,174,156,230,203,107,192, 28,166, 70, 37,130,114,180,157, - 22,126,108,123,131,124,249,148,164, 16, 70,118, 4, 48,137,127, 7,245, 36,141, -163,129, 13, 36,253,254, 98, 23, 48,141,116, 12,133, 49,116, 50, 99, 58,117, 69, -117, 51,178, 33,136, 84,173,121, 54, 44, 45,255, 38, 1,230,245,151, 32, 68,164, -245,201, 18,225, 3,112, 99, 62, 16, 68,166,208,248,244,140, 53,210,116, 92, 67, - 15,181,142,111,129,111,106,124,113,132,173,197, 34,147,207, 71,137,233,209, 72, - 34, 36, 94, 58,199, 46, 29,148,182,145,133,206,248,199,149, 9,247, 17, 2,220, -225,128, 80, 32,235,214,140, 63,133, 15,157,200,246, 92,142, 96,200,187,115, 72, -185, 12, 64,105,186, 68, 76,244,108,189,220,145, 5, 67,218, 35,125,151,137, 53, -208,101,185,190,114,133,222,231, 31,251,163, 15, 72, 51, 16, 10, 39, 1, 73,149, - 39, 6,162,235,121, 63,117,147,222,203, 4, 96, 54,219,173,241, 17, 36, 21,129, - 49,139, 4,107,116,183,163,251,195, 27, 88,182, 2,241,249,233,223, 10, 12, 81, -209, 69, 58,171, 85,169,107, 71,195,115, 38, 28, 48, 45,156, 27, 15, 64, 35,152, -114,164,233, 41, 59, 33,165, 46,171,228,192,169,117, 58,209,213,144,200, 49,196, -242,143, 14,115,197,156,213,117, 35,104, 12,153, 78,105,233,193,145, 82,255, 32, - 5,205, 89,208, 88,111,176, 7,125, 71, 70, 42, 56,233, 9, 7,127, 38,100, 36, - 78, 55,200,172,110, 10,184,180, 82,110, 19,210,145,185, 64,102, 76,246,118, 23, - 44,247, 28,233,243,109,175,117, 23,168,213,176,139, 78,101, 66,146, 24,186,166, -158,169,222, 62, 5,198, 86, 50,190, 47,232,222,198,118, 41, 33,208,111, 17, 18, - 33, 14,130, 82, 34, 43, 7,153, 61, 34,102,236,208, 69,135,159, 37, 32, 95,239, - 34,163, 42, 57,203,165, 72, 68,104,142, 73,223,135,154,136,114, 38, 0, 63,211, - 17, 86,163, 56,136,128,171, 96,249,242, 61, 19,112, 83, 32, 16,218, 89, 48,110, - 46, 12,234, 58, 10,156, 96, 39, 69, 0, 71,244,164,177,146,190, 80,213, 17, 66, -252, 25,187, 81,220,102,226, 24, 72, 74,233, 86, 30,255, 8,209,233, 99,239,230, -131,247, 4,209,235, 91,249,184, 19,126,206,240, 72,157,193,196, 40,239,234,188, -202, 77, 51,180,235,187,243, 2, 96,154, 20,252,226, 23,211, 87,229, 73,240, 74, -211,178,207, 35, 29,210,215, 33, 89, 42, 47,194, 76, 32, 63,209, 63,120, 16, 20, -124, 8,155, 4, 13,247,255,253,222, 51, 96,168,192, 52, 87, 8,167,247,173,138, -245, 81, 4, 59,163, 8, 36, 78,172,126,174, 83,102, 61,198, 9,205, 40,158, 33, - 21,136,173, 32, 43, 8, 48,147, 46, 39, 63, 40,240,123,119,164, 13, 65,240, 56, -160,217,250,165, 56,138,113, 93, 7,128, 41,156, 37,132,145, 23,214, 98,191, 32, - 69,147,166, 40,234,178,226, 90,237,178, 62,202,179,149,220, 44,254, 99, 13,136, - 44,181,152,128,139,162, 64, 23, 80,112,243,114,126,148, 11,156, 39,102, 89,114, -246,161, 22,130,117,103, 33,249, 1, 49,137, 7,204, 32, 6,189, 30,184, 69,230, - 85,142,253,249, 60, 33, 95,232,238,237, 66,147, 33, 73, 78, 82, 26,159, 68, 82, - 92, 44,143, 15,210,100, 56,193,163, 13, 5,103,227,130,132,153,237,157,149,232, -243,175,240,206, 84, 11,137,112, 17, 36, 95, 28, 87,132, 57, 86, 17, 3, 57,185, -247,190,137,164,109,226,164, 66, 70,130,178,206,202, 83,180,203,112,107,253, 33, -169,108,137,129, 85,196, 36, 41,253, 47, 74,198,204, 70, 86, 23, 52,181, 85,245, -152, 5, 31,164, 67,194,107,160, 94,215,101,214, 74, 39, 12,189, 43,162, 26, 21, -215,141,241,184,207, 99,192,228,240, 43,103, 73, 69,198,104, 10,150, 95,213, 64, - 17,100,111,140,136,139, 60, 9,183,178, 87, 10,108, 26,141, 6,194,214, 83,124, - 92,243,248,220,195,164,169,205,139, 80,196,105, 86, 4, 69,131,114, 46, 86,103, -191, 57,231,191, 15,200, 7, 20,207,166, 73, 42,207,123, 67,176,159,140,210,197, -249, 43, 5,134,241, 42, 70,188, 88,135,184,167, 83, 88,188,188, 69,134,203, 22, -249,223,155,169, 20, 91, 23,249,186, 51,226,222,229,120, 56,104,164, 8,220,197, -117,248, 74,252,224,195,142, 93,125, 42,221, 17, 77, 96,255,205,181,136,188,120, -251,208, 95,125, 31, 59,121,117,226, 87, 46, 10,164,141,188, 59, 95, 85, 52, 69, - 39,188, 62, 12,229,190,166,237,100, 29, 68, 81,143,237,241,134,101,174,121, 0, -148, 16,180, 56,193,117, 0, 32, 47, 72, 62, 5, 83, 27,174,153,127, 56, 1,245, - 10,147,175, 82,146,187,219,199,156,161, 90,103, 49,121, 75, 37,189, 95, 27,135, - 13,178,159, 32,105,213, 26,157,200, 36, 63, 91,195,219,186, 46,235, 39,173,165, -233,242,174,167, 35,116, 56, 17,161,178, 86,124,184,205,252,166, 96,225, 47,135, -113,194,185,165, 7,117, 65, 83, 99,119, 6,185, 11,109,209,206,133, 26, 15,167, - 16,164,105,136,162, 74,101,244,200, 23, 52, 95, 1, 26,105, 24, 20, 40,192, 16, -237,250, 63,183, 21,222,170,154,220,116,154,139,206, 69, 33, 83,182,111, 89, 86, - 13, 6,105,118, 48,157,148, 98, 34,150, 0,203, 34, 8,154,166,114, 1, 45, 1, - 67, 1, 52, 1,158,186, 1,125, 22,210, 91,146,200, 96,179,202,211, 49, 12, 43, -248, 32, 62, 34,208,107, 13, 18, 91,140,203, 26,153,101,245,126,205, 62,255,138, - 34, 58,240,231, 9,213,168,138,242, 4,179,236,108,178, 80, 94, 65,157, 85, 99, -127, 67,252,217, 77,145, 8, 41,201, 36, 38, 73,118, 18,133,153, 21,193,212,149, -199, 93,243,127,121, 58,202,244,206,106, 55,121,103, 50, 73,172,120, 77, 17,255, - 19,155,170,183,176,145,124,205,119, 11, 99, 49,151,163,109, 84, 62, 77,221,158, - 5, 42,239,247,236, 55,151, 97,165,142,236,205,103, 5,135, 81, 84,148, 40, 42, - 48, 69,206,100,134,144, 97,137, 49, 62, 90, 98,148,237,171,126, 70,179,147, 14, - 25,184,104, 22,198,137,157, 52, 58,113,234,251,100,201, 19, 91,180,155,101,213, - 55,180,100,120, 45, 92,178, 86,201,170,252,113, 53,142, 37,204,113, 38,209, 55, -237,232,113,104,187,203,215,249, 56,189,157,138,150,144, 89,150,113,100,146,124, - 93,151,150,117,115, 96,142, 81,112, 87,188,207,161, 81,207,171,233,190,194,177, - 36, 97,173,208,100,159, 77, 58, 43, 74,145, 12,193, 20,109,150, 37, 75, 74, 50, -238,112,188, 36, 18,247,213,117,198, 24, 84,229,124,241,120,250,211,142,210,154, -177,106,151,214, 76,215, 76,173,102,122,107,169,189,235,170, 46,237, 82,215,157, -119,158,233, 50, 93,249,122, 28,137, 10,161,249, 8, 8, 40,244, 91, 11,195,158, -223, 33, 65, 50, 68,235, 44, 87,150,100,129, 23,216,148,203,199, 24,173, 53, 93, -152,107,175,170,229,248, 86,109,162, 46,208,241,163,223, 58,216,201,199,118,244, -119,204,168, 71, 6, 36,150, 85,171,170,227, 28,215, 0,111,249,183,215, 14, 40, -100, 69, 56,213, 64,197,192,110, 86,213, 90,214,222, 6,118,200,179,175,145,197, -237,215, 60,179,197,132,153,164,203,186,240,130, 31, 9,139,123,229,180,151,218, -209, 12, 84, 66,224,233,102,212,252,132,170, 39,188,161, 45, 71,142, 3,160, 66, -144,113,148,201,128,129,111,174,121, 86,153,101,251, 22,186,152,128, 29, 16,244, -176,230,125, 66, 38, 75,142,178,143,231, 80, 55,164,211,158, 6,176, 6, 80,245, -136,188,134,174,130, 32, 78, 87, 49,222,197, 5,222,103,202,120,116,224,252,135, -161,106, 48, 93,119, 91,247,118,114,241, 62,213,146,137, 60, 34,210,163,227, 69, -214,240, 9,105, 48, 23,103,198,230, 9,211, 48,160,103,132,207, 47,243,129,198, - 2,134, 44,214,245,228,155, 50, 74, 74, 61, 1,219,188, 3, 15,236,130, 9,168, -227,132, 48, 34, 77,245,108,242, 61,117, 60, 27,142,231,233, 20,100,255,152, 84, - 20,144, 32,203,178, 44,124,155,114, 44, 59, 48,208,128,161, 2,235,180, 33, 5, - 34, 34,216, 36,192, 10, 90, 62,205,196,187,116, 54, 13, 31,216, 17,121, 12, 21, -236,128, 64,117, 3,118, 48, 89,126,162,231,201,142, 40, 87, 77, 0,161, 18,206, - 11, 5,185,208, 46, 5,132, 55,160, 76, 97,123, 10, 77, 75,218, 16,119, 0,228, - 10,176, 64, 46, 79, 73, 54,104,173, 40,244,204, 32,173, 10,121,164, 30, 41,148, -197, 98,105,238, 1,121, 60, 34, 15, 79,152,200,168,101,129,212, 54, 47,138,108, - 14,149,146, 40,231,210,240,145, 42,239,133,125, 73, 24,182, 7,234,120, 69,245, -151, 22,121,141,163,197,244, 6, 98,148, 60,169,109,255, 29, 45,236,249,215, 3, -113, 39,182, 41,247, 52, 23, 78,109,192,200,255,255,255,255,255,255,255,102,217, -253,255,255,253,255,223,255,223,255, 15,224,255,223,255,255,255,127, 81,254, 91, -206,113, 92,115,109,185,115,110,113, 23,237,216, 18, 62,184,251, 21,187, 12, 43, -200, 14, 12, 10, 40, 4, 27,170, 53, 7,162,195,105, 0, 97, 5, 26,207,247,148, -111, 67, 80, 59,155,166,122, 32,242,242,117, 56,222, 37,219, 56,207, 38,190,208, - 15, 12, 8,180, 12, 20,226, 58, 16,171,178,157, 8,164,241,176,105, 45,180, 23, - 80, 8, 38, 30,215, 56, 95,102,219,177,137,150, 93, 52,222,135, 17,137,162, 40, - 90, 34,209,135,161, 62,136, 68,237,156, 91,158,137,166,173, 68, 23, 69,176, 54, -116, 18, 34, 72,139,162,115,220,253,199,225, 21,173,152, 47, 36,107,132,139, 6, -236, 64,136, 64, 17,222,200, 68,203,231,206,244,186, 89,218, 15, 4,105,154,130, - 32,144,129,174,195,108,148,141,178, 81, 54,138, 54,209, 38,105,173,165,236, 93, -135,217, 40, 27,101,163,108, 20,109,162, 77,208,137, 52,181, 80, 20, 99,140, 39, - 38,157,180,167,230, 42, 40, 68,143, 7,174,168,167, 41,154, 86,133, 78, 75, 31, -110,207, 88,242,129,226, 74,225, 65,166, 74, 48, 67, 83, 36,218, 27,153,141,141, -111,227,234, 54, 9,145,238,238,239, 71,108,207,139,182,190, 42,213,207, 97, 18, -255,213,113,219,150, 61, 83,170, 10, 86,232, 56,251,231,168,147, 92,121, 14,148, -198,178, 43, 97,235,171, 50,205,180, 93,105,175,152,156, 39,209,196,237, 21, 90, -111, 77,105,131,198, 50,138,207, 56, 77,194, 97, 89,153,177,170, 31, 13,209, 19, -103,209,146, 29,231,211, 62, 23,176, 66, 56,116,213,146, 73, 34,234,198, 75,249, - 42,253,153,201,101,232, 93,172,247,190, 60, 6, 78,253,199,249,194,241, 42, 56, - 31,131, 71,209,159,107,159,119, 66,127,157,218, 51, 99, 92,163,140,195, 27,230, -203,101, 44, 94,139,106,162,121, 37,243,182, 53,154,154,240,113,213, 56,150,217, -250, 10,212, 21,107,129,114,238,150,212,221,146, 78,163,181,231,181,248,246,243, -173,133,229,254,120, 35, 92,104, 35,213,130, 90,116, 37,237,219,126,220, 54,135, -210, 72, 24,137, 68,200,128, 72, 70,195,176,158,202,202,242, 83,217, 89,110,241, -234,167, 50,145, 84,168,180,121, 87,165, 34, 10, 8, 18, 83,243, 0, 8, 12,137, -140,228,242,128, 24,199, 97,201, 61,180,192, 70,132,150, 6, 14, 7, 20, 5,196, - 33,106, 48,112, 8, 8, 5,193, 3, 56,128, 1, 32, 4, 96, 24, 0, 6, 56,128, - 2, 88,200,120, 82, 97, 14,192,228,138, 68,229,159,200, 53,147,228, 48,106, 26, -178,252,193,246, 11,137, 36, 39,214,179,133, 52,142,164,126, 4,236,169,136,231, -133,158,143, 74, 35, 51,124,106, 27,197,175,189, 1, 85,208,100, 30, 95, 46, 13, -163,142,188,120,203,114, 66, 96,104,246,244,161,181, 85,124, 89,138, 12,235, 11, -155,179, 93,252, 1,206,136,176, 4, 72, 43,206, 99,136,187,215,156,113, 96,120, -241,219,245,101, 15,156,209, 90, 17,200, 51, 65,203, 16,124, 97, 44, 93,150,123, -146,155, 92,220, 58, 39, 31, 49, 22,114,212,255, 70, 83, 37, 37, 81,215, 82,190, - 86,209,142, 9, 99,148,116, 48,166,167, 36, 84,236,168, 94,213,232,204, 80,199, -123,116, 37, 92,212,228, 20,146, 58, 96, 45, 33,119,130,165, 16,138, 62, 98, 67, -196,251, 25,253,211, 17,138, 32,142,106, 78,248,122,165,102, 67, 4,135, 82,190, - 98,131,147, 32,235,181, 91, 50,243, 13,161,135,204, 30, 35,236, 39, 16, 21, 79, - 84, 12, 16,254,117,152,226, 16, 47, 78, 60,202,191,136,184,193, 80, 42, 86, 67, - 88,252,161, 27, 60,156, 88, 24, 63,245,220,161, 82, 24,215, 35,112, 87,192,146, - 17, 14,128, 92,246, 10,147, 2,234, 90,161, 39,176,253, 14, 16,113, 65,212,242, -140, 96,148,177,166, 62, 63,230, 0, 8,178, 42, 17,176,107,110,224,236,183,183, -196, 74,195, 37,253,125,108, 80, 88, 77,230, 63,223,173,161, 74,238,242,208, 49, -107,240, 17,244, 83,119,146,127,122,230,106,130, 4,196, 90,147,200,255,168, 33, -163,229, 93, 87,222, 34, 88,214, 38,191, 40, 12,226, 20,162,243,105,192,246,143, - 59, 13,194, 8,207,248, 11, 4, 35,212, 9,146,184, 98,106,211, 65, 24,194,121, -133,142, 41,157, 30, 28, 97, 48,194, 71,231,128, 38, 4,141, 49, 39, 61,189, 95, -176,250,171, 96, 79, 43,240, 59, 2, 37, 60, 40, 46, 4,191, 55,184, 4,132, 17, - 31,134, 48,191, 23, 99, 6,193,136,149,124,163, 66,129,245, 73, 52, 61,208,165, -113, 37,252,185, 5, 22, 9,246,104, 5,192,125,160,103, 27,100, 9,132, 70, 18, - 0, 61, 15, 79, 56, 72,145, 0, 13,199,113,203,137,218,199, 6,177,238,112,102, - 0,131,115,109, 43,225, 69, 62,225,153,190,127,183,207, 64,174,199,140,159, 76, -135,149,168,195, 17,114,164, 90, 5, 47,218,132,133, 80,189,102,170,209,115,141, -242, 18,206, 96,220, 9,132,223, 5, 59,178,104, 25, 91, 50,217,251, 42,173, 17, -209, 61,121, 97, 57, 12, 5,222,197,119, 62, 66,151, 82, 26, 41,175, 83,210,252, -141, 8,176,168,229, 67, 58,255, 78, 50, 62, 40, 68,235, 64,180,113, 45,210,168, -187,145,167,242,178, 54, 95, 64, 74, 99,244, 9, 14,114, 97,129,215, 21,193,221, -212, 41, 85, 28, 18,135,205, 4,218,184,239, 63, 33, 7, 71, 64,165,131,157,202, -122, 83, 80,119,210,220,104, 41, 40, 34,158,227,134,114,108,112, 81,132,209, 41, -133, 98,122,110,253, 24, 6, 82,106, 40,148,234, 7,211,159,143,162,188, 75,203, - 0,138,165,188,123, 75, 63,211,197,133, 91, 20, 28,172,159, 45,215, 3, 94, 5, -174,213, 39,158,196,177, 61,204,182, 76, 42,223, 70,149, 79, 75,173,189,243, 6, - 97,105, 96,232, 5, 3, 65,243,152,118,178,225,151,117,133,167,128,114,146,173, -200,170,102,187, 57, 29, 95, 5,105, 19,186,125, 20, 58, 37, 67, 42, 52,187,156, - 56, 46, 98,201, 94,106,181,158, 49,110,251, 26,172,174, 71,215,132,152,228,115, - 75,119, 7, 28,111,150,210,244,253,138,119, 79,130,152, 4,119,148,102,168,123, -137, 49, 99,153,247,238, 50,161,166, 86,230, 8,224,219, 73,156, 53,161,245,125, - 45, 6,110, 81, 51,218,102, 92,137,164,197, 25, 35, 91,199,136, 7,189, 12,193, - 28,132,208, 68,162, 55, 37, 88, 31,106, 75,184,235,152, 72,158,155,192,102, 3, - 19, 70, 12, 84,227, 47,193, 85, 31, 78, 16,101, 11, 84,138, 11, 11,187,120,188, -204,159, 42, 40,241,211,128, 68,136, 25, 36,122, 18, 82,124,244,190,121,220, 12, - 35, 67,161,215,164, 91, 17, 0,186, 96, 54,172,135,246,247,165, 44,136, 28, 54, - 40, 13,205,246, 64,251, 15, 84, 7,109,222,172, 97,137, 96,134,106,229, 27,236, -138,134, 17, 1, 2,194,224,231,169,154, 68,125, 49, 52, 48, 11,200,203, 46, 86, - 36,118,241,217, 36,146, 14, 7,168, 34,116,231,181, 65,211,215, 42,163, 57,240, - 67,145,118, 9,226,182, 70,151, 32,225,153,191, 69, 51, 56,229,210,172, 83,112, -251, 99,168,238, 96, 99,153,121,192, 23,190,216,238,193,100,206,249, 85,239, 33, - 50, 80,201,134, 24,195,209, 23,173,241, 60, 76, 30,234,105,233, 58,176,188,200, -207, 89,253,214,241, 71,133,113,130,233,192,198, 10, 60, 70, 48,120,196, 72,245, -212,158,201,147,214,199, 56,161,110,208,158,234,166, 30, 22,232,208,243,190,238, -151, 84,162,137, 30,155,123,125,175,230,220,122,161,120, 13, 38,226, 51,202, 84, - 94,210,148,240,231, 78,230, 94, 7, 53, 88,244,102,136,229, 24,184,232,197,193, -135, 76,160, 45,116, 88,107, 51,106, 20,125, 58,130,161,142,246, 40,186,133,255, -142,191,112,169,210,204,151,222,170,212,107,196,156,161, 10,161, 97,113,119,163, -195, 71, 18, 88,217, 84, 3, 62, 0, 22, 48, 38,243,142,193,197,229,217,159, 82, - 28, 26,187,254,193, 12,151,110,215, 81,172,169, 79,169,241, 49,133,194,164, 16, - 6,236, 7,166,109,239,162, 9, 34,200, 28,219,201,180, 56,150,103,246, 91, 47, - 61, 39, 82, 17, 49, 81,138, 56, 22, 4, 80,208,186,105,140,169,101, 40,198, 71, -147,252,100,150,197, 40,126, 34,133, 56,233,173,219, 7,200,213,123,155,121, 66, -175,241, 21,234,116, 86,136,213,237,126,163,172,114, 69, 99,172, 62,201,219, 9, - 40,183, 81, 33, 4, 32, 47, 14,226, 57, 42,200,148,144, 70, 32,160, 65, 72, 34, -229, 86,132,172,217,179,210,207, 36,246, 35, 87, 99, 96,126,141,116,220,222,245, - 26,141, 8,208,249,240, 2,115, 73,246,185, 30,230,152,203, 69,147,117, 53,120, - 22,124,159, 40,240, 65,192,189,238,161, 63, 92,169, 15, 77,189,194,225,178,186, -229,134, 78, 32, 79,129,198,101,224,201, 79,101,129,234, 56, 59, 4, 51, 12,155, -110,157, 76,217,167,186,103, 16, 6,225,248, 50,115,237,126,236,115,151,149, 10, -170,201,175, 49,175,163,129,121, 31,196, 9,155, 25,202,122,125, 99,181, 82,167, - 11,130, 29,250,162, 20,210,240,243,203,103, 94, 12,229,243, 82,113, 18, 46, 16, -253,217,122, 17,242, 99,121,209,137,220,102,112,109,244,135,194,198,218,152, 82, - 92,138, 11,219, 34,235, 31,112, 41,185, 37,159,117,184,164,133,144, 18, 84, 83, -156,126,219,176, 57,227, 14, 7,130,133,244,173,204,217,117, 26,236, 19, 25, 59, -228, 89,216,233,218,215,225,115, 42, 95, 57,134,155, 86,116,229,194,244, 73, 10, -190, 7,214,101,125,194,168,245, 58,195, 33,166,137, 86, 40, 9,117,155, 30,105, -217,173,236, 6, 21, 30, 30, 21,117,126, 4, 98,222,191, 3, 60,167,134,251, 21, -127, 87,113,108, 63, 34, 5, 24,106, 47,112,187, 55,222, 56,238, 24,145, 14, 51, - 70,241,242,227, 53,207,107,202, 67, 62,132,207,168, 55, 85,130, 22,251,231,161, -215, 55,122,212,161, 59, 48,147,121,212, 26,128,119,102,119, 89,233,173, 82,128, -131, 30,101,224,181, 69, 45,198,175,255,104, 1,133, 5,186,221, 53, 7,229,214, -232,247,183, 86, 9, 98,131, 43,142,159, 89,168, 72, 40, 81,145,242,193,183,216, - 25,239,117,200, 40,227,183, 18,217,134,203,238,208, 26, 27,171, 95, 61, 65,140, -198,231, 16,135,103, 41,241, 80,237,254, 14,203, 11,208,184,190, 63, 69, 52, 75, - 20,206,119,188, 42, 10, 71,206,188,130, 79,160,198, 40,254,253,190,254,220,216, -114, 44, 21,156,187,203,208, 14, 16, 15,162,103,212,221,199, 48,169,140, 61,167, -215,247,100, 78, 87, 94, 13, 72,203,250, 82, 98,245,234,156,100, 17,233, 58, 63, - 36,185, 52, 21,231,168,141,141, 2,118,212, 73, 34,193,243, 77, 72, 10, 39,106, -119, 15,237,253, 94,101, 37, 72,170,125,130, 12, 60,181,130, 30,244,128, 50, 67, -186,155,120,110, 35,149, 3, 81, 17,237,124, 52,158,244,220, 56,158, 89,212, 67, -211, 46,192, 21,234,135, 35,241,233,252,195, 20, 28, 35, 81, 43, 83, 2,158, 53, -100,237, 33, 97,232, 33, 89, 49, 88, 64, 76,156,247,180, 75, 62,248,112, 20,254, -186,189, 6, 89,207, 50,123,203,145,160,246,124,109, 93,127,255,139,107,214, 91, -184, 14,113, 56, 33,232, 66, 81,156,165, 43, 57,161, 81,126, 80, 89, 4,115, 23, - 28, 45, 99,188,206,200,231,108, 40,125, 87,186,124,239,224,210,204,125,178,202, - 86,248, 89,205,234,188, 34, 25, 33, 91,167,179,162,205,153,208,244, 45,107, 68, -235, 74,206,213, 21,136, 97, 23,235, 59,128, 42, 59,126,108, 72, 22,208,101, 86, -159,174, 81,239, 58,127,128, 30, 66,161,155, 14, 39, 15,212,182, 84,112,244,245, -200, 9, 57,140,191, 46,217,210, 10,234,122,159, 99, 37,205, 46,190,229,135,180, - 45,185,254, 79, 46, 86,236,124,100, 34,156,203, 21,111,129,246,177, 90, 0, 52, -144,244, 86,223,174,115, 17,241,190,222,245, 79,211,212, 79,209,134,218,109, 4, - 77,178,136, 46, 94,238,151,236,165,123, 64,159,238, 87, 67, 75,239, 82,249, 0, - 65, 92, 13, 16, 5, 8,161, 32,204,105, 39,191,254, 87,179, 47,169, 17,176, 91, -228,141, 53, 72,131,213, 40,162,195,126, 80, 85,108, 49,153,200, 90,127,174,177, -158, 57,243,189,209, 17,169, 91,136, 10,141, 89, 68, 5, 17, 57, 37, 81,218,129, -243,223,111,112,202,133,111,124, 57,122,103, 85, 52,230, 26, 21, 34,194, 78, 27, -213, 83,174,222, 9, 36, 33,245,229, 6, 0,122, 99, 18, 88, 80,224, 28, 57,223, -179, 25,199, 78,100,115, 96, 34,160, 11,222,121,154, 73,163, 25,132,166,153, 4, - 88, 5,144,240,136, 85,164, 14,179,228, 42, 18,240, 96,211,151,160, 2, 88,189, -105,162,170,208, 29, 22, 68,171, 15, 30, 6, 71,139,188,197, 40,145,150, 86, 71, -106,221,102,174,243, 60, 87,215,196,113,185,108, 21, 66, 46,180,243,229, 90,244, - 69,223,216, 82,185,190,116, 39,228,175,188,231, 49,220,169,131,115,118, 67,175, -149, 54,143,168,194,121, 86,246,102, 27, 89,136,221,178, 8,109,249, 36, 12,123, - 96,245, 83,237,113,172, 26,137,172, 3,129, 28,252, 11,224,184, 49,150,192, 15, -146,139,185, 67,229, 36,231,184,141,144, 54, 64,104,183,177,102,151,212,102,126, -190,243,203, 79, 38,199, 79,221,220,147,177,124,156,183,113,147,176,145, 36,128, - 27,132, 59,188,116,143, 28,200, 56,157, 30,224,122,183,210,187, 3, 8, 58, 79, -243,104, 31, 88, 47, 90, 18,108, 83, 74, 94, 51,222,139,212, 91, 55, 37, 19,138, - 90,137, 17,176, 37,223, 30,184, 86, 40,165,232, 47,217,208,222, 65,131, 20, 86, -196,104, 3, 68,191,161, 80,225,115, 5, 3,121,209,180,214,166,104,149, 33,215, -224,196,110,164, 58,203,155,213, 52, 13,128,104,151,149,191,194,139, 91,147,246, -182, 68,176, 10,135,168, 16,162, 93, 1, 77,193, 85,216,196, 69,201,146, 96,237, -133,245,215,253,222, 20, 98,134,226,240, 88, 28,249,196,127, 10,249, 37, 54,252, -193,228,236,206, 27, 56, 25,228,231, 32,195, 3,134,197,208,215, 29,119, 10, 11, -115, 2,247,225, 36,197,121, 86, 74, 88,251,226, 76, 4, 85,206, 71,222, 95, 15, -106, 10,160,116, 38,101,172,158, 93, 28,248,145,190,232,125,186,174, 55, 97,176, -211, 45,125,136, 98,214, 11, 83,244,104, 71,198, 45, 30,137, 58,245,140, 28,168, - 41, 48, 83, 26, 56,172, 48,191, 38,146,249,163,197, 56, 38, 17,158, 27, 20,117, - 62, 51, 85, 26,213,108,198,137, 32, 94, 92,230, 61,192,147,129, 2, 25,197, 93, - 6,245,107,155,121, 82, 69,252,211,154, 71,146,178,237,152, 18, 30,207,143,210, -175,182,120,153, 37,140, 68,217,153,158,226,139, 55, 67,211,101, 37, 26,168, 99, -179,139, 28, 98,241,201,124,244,146, 86, 67,191, 90,173,248, 25,170,162,249, 79, - 95, 78,179, 85, 75,227,221,163, 72, 90, 51,195,165, 62,171, 10, 76, 68,193,149, - 1,251,193,163,229,232,174, 45,163,101, 52, 9,137,172, 74,145, 58,240,188,105, -186, 37,240,218,152,107, 81,179, 12, 69,197,116, 47, 16,150,158,196, 74,234,152, -168,220,115, 41,156, 7,126, 54, 17, 11,250,180,149,230, 38,190,240, 52,226,218, -219,164,166,199, 77, 8,124,246,101,102, 42, 67,218,234, 96,172, 77, 91,198,151, -146, 93, 12,234,144,116,225, 12,190,114,107,142,202, 62,246, 39, 94,119, 14, 91, -149, 64,151, 17,248,113,214, 19,173,180,112, 6, 68, 30,198, 44, 38, 19, 80, 70, - 44,137,145,241,234, 4,197,194,211,234, 9, 14,130,179,106, 8, 76, 90,158, 84, - 23,172,133, 98, 14,167,192, 66,146, 42,135, 82, 39,211, 16, 49, 70,121, 22, 3, - 98,214, 8,165, 86, 86,255, 50,194,167, 89,186,204, 77,196,170,206, 54,176, 47, -237, 30, 88, 73,109,206,203,138,123, 96, 3, 44, 17,134,105, 9,164,102, 95,168, -138, 18,255,148,127,165,225,140,144,123,133, 33, 71,179,125,202,200, 86,167,139, -183,114,201, 12,224,203,208,132,188,141,226,204,204,155,164, 69, 59, 15, 36,155, -145,199, 83, 97,233, 93,242,190,147,194,142,159,171, 90, 55,229,209,188,219, 79, -226,115,200,236,183,200,134, 11,243, 21, 69,229,183,106,122,126,117, 66,213,190, -208, 56,225,202, 3,106,191, 62, 6,220,223, 66, 15,196, 60,190, 10,247, 21, 59, -203,140,127,142, 60,243, 30,116,142,208,235,250, 55,245,185,192, 69,185, 40,230, - 2,225, 22, 88,149,228,185,251,254,118, 98,210,156, 89, 7,210,224, 90, 3,115, -122, 26,110,250, 81, 58, 43,167, 89, 44,244,195,193, 45,196,138,152,167, 56,238, -111,186,167,236,249, 4,194, 72,237, 67,239,157, 60,216,145, 99, 54, 26,170, 34, -207,194,215, 57,129,220,154,211, 53,200,148,144, 57,166,172,116, 26,250, 52,145, -153,116, 98,188,119,112,211,202, 48, 53,216,226, 66, 52,210, 14,243,206,135,242, - 33, 94,144, 60, 4, 65,245,106,145,236,188,244,231,130,184, 62,189,204, 22, 59, -136,163,144,204, 17,209,183,132,115, 29,238, 43,201, 36, 80, 76, 79, 71,194, 80, - 71, 57,126,142, 7, 65, 97, 14,171,243, 94,248, 0, 75, 6,198, 13,128,202,193, -224,254, 38, 12,149,111,213, 57, 45,205,136,166,107,218,102,212, 31, 68,253,140, - 95, 94,174, 42, 14, 96,155,100,182,115,155,235, 89, 3, 75,255,218, 98, 91, 27, -108,236,153, 46,213, 93,205, 48,219,135, 97,113,174,186, 26,119,216,240,194,103, - 57, 93,176, 38,212,189,185,255,163, 19,246,105,240, 33,226,120,223, 15, 66, 23, - 12,117, 85,221, 24,195,180,132, 84, 33, 32,102,106, 76,150, 17,148, 51,171,148, -175,160,139,122, 82, 68,207,232,231, 41, 23, 82,169,159, 88,138, 52,123,175,248, - 21, 85,210,124,209,164,168,204, 52,110, 75, 46, 53,207, 76, 70, 60,111, 14,133, - 44, 75,103,135, 23, 16,183,201,231,190, 17, 92, 19, 55,240,213,221,199, 56,112, -227, 81,119,200,130,255, 93,253,186, 81,144, 11,156,223,179,126, 86,170, 4, 82, - 87,105,136, 34,253,188,116,227,208,176, 65,215,164, 81,120,247,246,121, 97,200, - 26,249,237,181,188,246, 12,236, 27,237,177,116, 79, 62,159, 9,244, 74,199,133, -165,149, 18,212,216, 99,100, 70, 83, 13, 26, 92, 10,114,217, 2,133, 56,168,130, -168, 58, 74,162,162,205,107,243,203,251, 26, 16,224,149, 11, 56,225, 90,119,181, -166,124,177, 22, 29,122,180,239, 63,104,214,248,115,221,240,221,137,160,131,138, - 71,222,247,227, 0, 14,254,240, 66,225, 2, 3, 88, 1,104,234,164,250,150,250, -104, 87,247,223,202,244,235,238,188, 94,245,139,176, 53,206, 49,185, 69,174, 50, - 39, 26, 56,129,159, 40,151, 35,160, 56, 90, 61, 67, 54, 71,214, 36,172,109,147, -121,186,244,197,163,115, 27,180, 44,236,245, 81,182,140, 85, 82,134, 35,243,123, - 6, 68,170,127, 14, 50, 4,130,234,151, 36,233,150,135, 2,186, 50, 1,189, 31, -175,199,168, 96,194,145, 1,160,171,110,154,184,102, 70, 71, 97, 20,165, 1,181, -228,125,247,125, 27,199,252,137,177,105, 31, 16,239,185,218, 67, 53,185,117, 59, - 70,208, 77,152,130,159,107, 30,207,201,204, 59, 25, 65,183,194, 10,134,219,152, -164,102, 74, 39,102, 84, 74, 3,181,202,123,247, 93, 27,215,249, 58, 99,105, 23, - 48,238,217,186, 7,107, 50,115,137, 70,208,237,176, 2, 35,155,117,115,162,234, - 57,141,167, 89,160, 28,243, 55, 38, 84, 51,163,131, 53, 10,211, 81,178, 22,230, -243, 4,232,135,221, 34, 9,135,153, 10,134,101,148, 12,221,181, 17,233, 70,240, -108, 8,162,194,132, 17,105,203, 22, 73,239,187,186, 29, 15,120, 66,167, 82, 10, - 50,116,167,144,224,150, 83, 55, 75, 20, 12,250,100, 49, 68, 81,181, 38, 57, 19, -188, 35, 29,176, 52, 65,178,157,199, 60,145,209, 88,252, 67,154,133,255, 62, 6, -182, 97,215, 72, 60, 86, 29,179,185,100, 79,253,116,111, 56,185,229,161,119,128, -231,172,125, 18,204, 7, 93, 64,209, 10,151, 13,147,135, 19,239,186,186, 8,152, -183,113,233,185,199,129,239, 43,105,170, 62,126,220,194, 99, 25,178,107,176,205, - 69,221,210, 48, 93,254, 86, 57, 28,245, 7, 18, 9, 60,214, 78, 32,237,175,212, -172,246,121,176,255, 6,167,156,141, 0,130,132,198, 43,111, 44,148,186,252,217, -254, 95, 3,116,209, 46,124, 16,148,101,159,180, 97,174, 85,108, 99,228,164,223, -254,244,134,199,253,192,190, 83, 9, 66,128,227, 51, 9,120,125,125, 92,161,225, -212, 32,200, 16,231, 34,235,251,202, 52, 64,191, 96,139,138,250,183, 68,176, 86, -100,195,101,225,115,228, 44,191, 50, 3,232,126, 22,230, 39,129, 70, 1, 32,132, - 21, 49,140, 0,183,135,244, 27,253, 60, 87, 66,101,241,102,222,124,114, 13,175, -252,147,124, 71,123,146, 46,203,173, 10,143, 30, 78,229,113, 75,115, 36, 32, 8, -103,185,205,171, 73,194, 67, 4, 14, 75, 85, 15,138,198, 16,183,102,144,177,197, - 79,153, 96, 25,179,146, 70,249,218,170,210,159, 52, 67, 0, 99,248,232, 17, 4, -168,192,181,144, 73,188, 16, 32, 21,175,133,138, 42, 30, 80,197,122, 85, 52, 30, -242,111,235,178, 63, 74,201,132, 56,176, 42,205,142,150, 36,216,129,213,162, 98, - 23, 3,116, 85,132, 71,212, 11, 97, 51,115,158, 73,201, 64, 90,131,228,160,111, - 81,246, 92, 85,169, 59,218,176, 4, 35,151,188,229,167,138, 65, 13,153,178,162, -248, 66, 81,101,164,210, 12,141,236,218, 20, 13, 72, 89, 83, 64, 35, 9,246,192, - 84,154, 37, 26, 21,105,118, 53, 11, 27, 85, 14, 81,180, 33, 96, 70,106,247, 30, -135,144,240, 11, 0,168,213, 26, 4,178, 94, 0, 16,217, 74,194, 40, 38, 85,100, -165, 32,171,232, 25, 54,242,231,134,187,145, 9, 69, 57, 96, 69, 93, 70, 70,140, -116, 89, 57,196,242, 42,207,106,228,186, 2, 62,244,219, 29,235,176,150,219, 82, - 43, 10,212, 65,149, 44, 9,231, 97, 91,210, 36, 80, 58,176, 78,102,249, 34, 12, -189,170,250, 41, 61,116,116, 42,132, 58,234, 92, 82,162,178, 85, 28,113, 16,236, -135,248, 18,134, 53,131,199,159,143, 6,224, 33, 65, 62,247,238, 33,200, 94, 96, - 25, 21, 37,189, 41,228, 72, 61, 81, 0,177,165,166,237,162, 24,130,192,115,180, -149, 62, 65,166,170, 73, 56,228, 79,203, 12, 35, 37,128,167, 45,135,117,243,189, -168, 37, 52, 73,139, 35,216,245, 82, 79, 94, 68,204,145, 40,116, 24,145,240,187, - 43,174,117, 46,156, 21, 0,102, 60,112,217,106, 35,171, 83,141,225, 0,202,168, - 88, 62, 36, 12, 65,131,237,138,221,175,117, 54,227,165, 51,157, 27,119,253,191, - 85, 2,205,242,200,175,240,136, 42, 7,154, 2, 5, 69,141,204, 83, 31,121,163, -201, 88,149, 47, 81, 51,119,191, 39, 13,255, 83, 11, 93,133,114,183, 10,155,195, - 22,113,198,238,177,173,233,115,184, 68, 92,242, 2, 32,241,231,115,118,251, 11, - 9,248,160, 3,212, 64,162,252, 19, 23,222, 71,129,189, 65, 62,175,215,220,225, - 80,100,234,130, 57,103,113, 66,253,154, 39,238, 78,189,161, 64,104,243,144,107, - 60,112,218,231, 61,107,146,203, 40,238, 88,202, 0, 89,152, 90,114,255,101, 8, - 94, 96,216,117,100, 95, 96,164, 48, 9, 26,163, 2, 80,246,198, 89, 59, 33,141, - 97,173, 69, 16,120,109,170,181,194,155,233, 62,160, 18,247, 11,235, 64, 20,121, - 10,234,163,193, 4,126,163,176,128,146, 72, 60,141, 41, 3,181, 72, 85,185, 46, - 43,141, 68,102,130, 41, 73,128, 30,199,162,216,234,177, 16,242, 0, 43,150,123, - 15,109, 71, 40,211, 29,183, 14,110, 54, 96, 76, 95,220,193,129,128,163, 5,216, -251, 28, 95, 69,234, 67,200, 34, 6, 96,159, 60,168,148, 12,197,194,191, 44,151, -229,111, 15, 77, 11, 11, 77,155, 18,200,196, 39,168,241, 29,139,101, 84,127, 44, -223, 87,224, 70,220, 35,222,120,184,230,234, 88,221,157,177,245,138, 96,246, 9, -235,104,105, 83,200, 9, 40,184,177, 75, 84, 87,134, 19,238,134,163, 92, 17,222, -103, 77,184, 61, 43, 85,224, 68,236,196,254, 59,101, 94,241, 98, 91,145,252,121, -149,233,242,135,234,107,153,180,186, 26,160, 43, 56, 97, 53, 26,109,150, 30,194, -195,192, 78,205,183,142,132, 64, 59,191, 0,141, 49,134, 24,219,125,107, 19, 49, -147,202,116,241, 70,187, 27,210,151, 77,213,150, 2, 85, 91, 16,110,191,177,157, -225, 1, 24,199,174,243, 40, 7, 63, 79,244,166, 1,182, 81,162, 53,133, 16,210, - 89, 63, 4,116,235, 75,209, 21,197, 3, 0,213,104,170,165,195, 78, 7, 84,139, - 12,164, 76, 27,183,136, 64, 79, 47, 40, 73, 70,128, 30,197,210, 91,133,222,137, - 32, 86,142, 98,169,117,163,131, 69, 65,238,225, 10,107, 20,159, 13,173,229,146, - 7,172,101,132,181, 57,142, 32, 90, 30,239,186, 32,242,111, 75, 63, 85,107, 19, -176, 45, 53,135, 68,248,135, 81,184,138,100,161,233,209, 21,237, 34,113, 77, 40, -115,138,150,239,147, 21,212, 60, 36,138, 82,175,145, 73, 52,127, 50,138,241,108, -160, 20, 11,106,114,147, 58, 10,205, 11,101,225,217,173,181,166,171, 52, 29,211, -135, 32,201,157, 39,148, 9, 54,243,146,185, 30,180,160,154,196, 83, 20,186,203, -111,173, 92,155,143, 25,218,128,121, 51,188, 13,117,211,246, 89,141, 4,152,185, -252,153,174,242,191, 29,247,218,111, 80, 35, 11,159,146, 88, 88, 70,218, 12, 19, - 17,134,103, 6, 90,116, 74,126,152,227,216,160,164,166,138,162,188, 74,137,123, -172, 44,116, 62,244,191,133,177, 50,170, 0,207,148, 28,182,162,128, 24,108, 1, - 21, 66, 62, 44, 78,195,118,139, 33, 10, 65, 43,240,170, 2, 0,219, 97,163, 56, -176,243,132,125, 93,225,127,126, 67, 39,221,229, 36, 38, 36, 71, 23,245, 43,189, -160,112,185, 79, 11, 48, 75,189,178, 48,218,112, 64, 32,197,125,218,164,185,234, -253,115, 70, 54,104, 99,158, 70,222, 51,253, 4,123,184,122, 31,192,118,186, 9, - 8, 31, 85,148, 40, 66,167,172,125, 74, 73,224, 39,228, 84, 13,105,214, 17, 36, -165,166, 77, 27,216, 94, 36,223,230,238,182, 82, 67,203, 28, 80,244, 30,195,178, -130,156,223, 16,108,128,156, 13,242,183,147,216,205, 72,144,132, 67,123,110, 88, - 28,252, 28,144, 63, 93, 82,216, 13, 43, 87, 55,146, 96,174, 99, 98, 83, 61, 91, -183,245,136,209, 17,204, 63,149,202,204,107,210, 25,123,198,234, 87,100, 22,131, - 83, 79,213,198,201,202,108,196, 41,102, 45,180,110,161, 89, 75,195, 16, 79, 30, - 91,214, 2,156,104,210,171, 86, 16,108, 58, 8,148,198,174,245, 57, 75,239, 45, - 25,190, 82, 54,125,245,186, 65, 34, 48,124,103,230, 84,243, 53, 30,187,219,120, -132, 72,223,149, 28,201,135,102,183, 59,187,237, 28,194, 99,174,107,184, 6,148, -136,126, 84,220, 89,167, 51,177,225, 6, 66,175,164,142, 88, 42, 23,245, 51, 47, -213,192,241, 58,242,249,150,190,253,210,201,130,104,247,147, 57, 34, 82,168, 88, -122,206,202,108, 45, 40,186,160,109,131,188, 69, 48, 96, 48,120,157,235, 74, 2, -145,255,108, 44,223,106,188,178,191,216,205, 15,157,169,248,178,146,214,136,248, -134, 47, 30,153,140,232, 44,248,162, 34,142, 16,136,253, 94,172, 68,126,231, 29, - 59,201,102,171, 37,217,152,241,249,238,101, 1, 40,254,236,161, 29,246, 12,204, -127, 54,168,202,144,118,157,194,206,223,139,128, 38, 39,225,135,105, 73,180, 72, -158,177,216, 28, 33, 83,201, 90, 63,185, 14, 73, 62,253,165,236, 16, 89,249,123, -216,238,138, 44,193,224,100,138, 60,122,125,191,130,246,149,159, 87,103, 8,107, -151, 55, 66,178, 48,137, 7, 95, 9, 5,142,190,123,133,145,219, 88,143,135,107, -245,162,148,182,119,196,236,221,135, 90, 96,127, 14, 64, 83,105, 81, 49,212,199, -235, 61, 6, 27,167,203,192, 9,155, 78, 66, 11,223,142,183, 74,224, 37, 34, 33, - 79,197,196,237,248, 58,143,154,133, 73,144, 77,108,177,253,182,148,247, 10,241, -124,132, 80,141, 93,139, 94,151, 24, 14,220,167,192, 58, 36,181,170,137,170, 30, -146, 99,238,240,235,159,244,148, 7,167,188, 97,196, 28,190,239,202, 64, 57,147, - 32,244, 87, 65, 64,236, 23,252, 88,133,101,193,185,104,140,232,168, 43,233, 84, - 31,240, 6,169, 42,255, 0,132,156,175, 87,109, 70,162,120,233,159, 15,114,139, -149, 98,223, 4,140,172, 47, 7,162, 47,226,241, 52,202,186,237,245, 69, 6, 37, -206, 10, 84,124,235, 44, 27,214,239,136, 22,168, 2,149,170, 55, 34,157, 52,215, - 1,202,107, 25, 95, 43,113,130,191,106, 7, 95,234,224, 81,214, 91,215,108,100, -202, 92,222,209,102, 70, 75, 98,173, 29, 37, 16, 51,162, 90, 30,135,166, 40,162, - 17, 77,140, 4,142,210,139,184,120,232,204,193, 89, 42, 84,137,212,166, 58,237, - 4,192,187,202, 18,199,117, 47,130,184,101,204, 96,108, 78,126, 12,144,124,153, - 44,195,150, 55, 0,117,157, 31,159, 79, 26,123, 66,140,185, 78,123,186, 53, 16, - 92,143,114,159, 15,196, 64, 19,103,224, 5,203, 59, 92, 9, 82,176, 35,198,195, - 83,160,139, 6,141,140, 62,231,129,236,231, 22,149,143, 53,199,111, 28,218,247, -161, 68,166, 18, 56,159,224, 36,188,183,215, 86,211,118, 33, 92, 71, 40,149, 68, -208, 86, 11,126, 7, 56, 33,128,121,176, 61,197,176, 42, 23,251,241,100, 87,222, - 21,142,251,181, 65,166,237, 83,177, 22, 3,183, 65,107,213,130,205,154, 46,203, -233,196,145,194, 24,115,222,219,100,207,121, 82,157, 49, 18,126,121,253,145,107, - 47,194,125,134,196,169, 0, 58,119, 47, 5, 25,250, 76,173,146, 58,128,193, 20, -163,239, 55, 42,241, 95,208,140,186, 28,178,219,117,132, 67,129,248, 20,121, 61, -167,242, 84,187,114,238,195,113, 89,219, 7,191, 75,161, 11, 86, 11,192,162,181, - 7,243,147,228,163,186,211,210, 18,245,134,250, 58,126,121,176,104,211,157, 70, - 30,168,124,234,224, 58, 82,133, 57, 26,132,255,181, 22, 91,135,228,210, 46,217, -163, 87,151, 70, 93,231, 76,150,142,249,237, 39,253, 31, 86, 92,242,156, 33,128, - 9, 55,187, 33, 92,252, 65,228,185, 99,207, 68, 7,144,119,109, 57,108, 0, 80, -178, 4, 24,244, 37,103,161,211,228,165,212, 48, 71, 76, 77,166,110, 37, 16,183, - 3, 78, 34,199, 93,196, 28,173,233,123, 38, 58, 51,194, 59, 54, 98, 55, 96,207, -228,217, 96,252,179,240,228,108,227, 39, 78, 16,126,152,136, 44,103, 29, 91, 49, -143,252,187,228, 95,116, 88, 50,201, 42,119,244, 77,158, 2,169,207,229, 31,119, -177,129,139,145, 18, 85,160, 84,125,109, 9, 86, 6,213, 81,111,230,168, 24, 74, -192,169, 13,164,164,146, 99,174,240, 98,197,152,211,169,144, 65,216,153, 91, 33, -107, 15, 94, 41, 59,100,135, 29,240, 90,244, 25, 95,245, 69, 73,133,202,129, 66, -138, 21, 98, 70, 42, 91,212, 0, 76, 54,125, 41, 85,144, 31,175,245,137,192,209, -155, 65,254,226,112,151, 24,105, 62,244,201,214,197,146, 36, 68, 86, 35,137,132, -108, 90,230,208, 30, 83, 4, 27, 17, 47,149,142,251,248,122,140, 13,213,111,174, - 93,249, 85, 33, 34, 24,126,247, 13, 98,137,215, 38, 3, 66,197, 93,161,154, 49, - 46, 26,179, 28,178,156, 94, 46,104,221,114,180,117,103,105,251,151, 2, 46,207, -199,215,242,109,185,180, 12,232,234, 30,210,158,139,239, 41, 70, 6, 98, 50,171, - 65, 55,208,160, 2,167, 76,130,211,133,121,253, 54,203,108,245,177, 40,180,113, - 38,104, 52,131,170,123,103,203, 91,192, 31, 61, 93, 4,151, 50,168,184, 49,174, - 13,147, 19, 33, 88, 64,123,114,221, 73, 61,177,121,149,103,226, 4, 27,113, 80, - 17, 46, 77, 21,169, 18,136,133, 97,219,136,147, 22,162,228,243, 32, 28, 47, 70, -114,130, 93,237,115,174,160,187,246,166,171,242,192,162,146, 72,121,142,251,158, -173, 6, 92,160,124, 20, 76,163, 45, 27,246,135, 46, 14,221,213, 72,204,102,137, -173, 82,169, 89,138,174, 28,232,120,148,199, 28,241,109,107,156,142, 12,168,226, - 32,150,214,150, 21,221, 47, 70, 73,131, 21,182,175,166,184,123, 22,137,112,239, -182,116,148,133, 69,151, 83,185,114, 22,104,164, 78,155, 70, 6,150, 50, 19,249, - 60,253, 41,176, 41,108,185,206,218, 36,133,148, 45, 62,251,138,236,218, 7, 89, -112, 96,218,117,164,115, 79, 58, 69,165, 19, 78,106,165, 83,246, 70,104, 13,205, - 31, 39, 89,139,152, 61,196, 38,208,211, 74,115,178,131, 54,164, 68, 28,100, 50, - 72,244, 26, 36, 89, 62, 59,123,163,195,121,189, 8, 34,116, 7,182, 45,124, 38, - 59,227,125,194,132,179,243,175, 5,167,200,217,123, 31,155,254, 81, 4,205,203, - 18,241, 90,252,250, 2, 84,246,235,221,215,111, 31,137, 4,250, 17,203, 8, 63, -173,157, 95,159,172, 63,230,217,160,130, 48, 33,225,251, 10, 35, 98,163,221,232, - 58,249,102,193,209, 36,113, 18,254, 65, 0,238, 39,178, 34,193,222, 67, 89, 7, -144, 90,238, 33, 86,230, 15,132,117, 48, 32, 59,219, 99,144, 78,149, 93, 30, 62, - 81,105, 23, 10, 56,107, 17,146,253, 81, 39, 43, 83,132, 16,140,118, 57, 99, 58, -112,115,242,169,203, 76, 62,196,243,220, 13,240, 96,123,247, 55, 31,255, 37, 34, -205,113,125, 15, 48,112, 9,229, 29,123,231,162, 21,114, 0, 43, 42,162,255, 25, -170, 40, 34,203,117,159, 81,219,104,164,195,193, 17,253, 15,186,208,246,188,245, - 69,241, 74, 99,198,194,177, 16,255, 77,241,148,240,244, 15,166,222,181,182,158, -152, 32, 47, 33,184,197, 59,143,160,225,180, 51, 14,189, 65, 23, 32,240,254, 90, - 29, 24,211,189,242, 64,245, 19, 12,204,146, 26, 76,117,191,218,222,185, 92,212, - 4, 83,252, 91, 42, 15, 91,168, 10, 18,207,146,152, 18,119, 32,188,250, 36, 38, -146,181,130, 66,165, 32,104,229,177, 13, 39, 56,246,232, 66, 51,110, 58,100, 29, -187,232, 97,196,168,121,244,154, 47,174,133,145,242, 98,245, 29,150,105,188,132, - 44,194,190, 67,137,107, 73,164, 12,234,141, 22,165,191,121,124, 53,127,209, 28, -204, 99, 41,140,174, 19,114,183, 72,157, 35, 98, 68,143, 17,157,226,186, 78,223, -182,174,244,219,155, 20,240,188,161,185,189, 88,211, 81, 23, 67, 50,230, 66,238, -152,132,105,162, 39,153,139, 35, 77, 28, 18,202,185,152,109,160, 78, 88,210,148, - 83, 94,153, 90, 1,166,226,170,201,122,156, 89,175,152,133,142,133, 35, 73,178, -183,102,221, 77, 71,107,143, 63, 80,125, 59, 27,158, 93,254,150,172, 1,255,162, - 61,112, 39, 53, 41,101, 98, 92, 3, 73,208, 81, 10, 70,163, 93, 81, 76,197, 53, -237,171,124, 43,147,128, 0, 39, 28, 4, 29,196,236,102,128,136,233,147,208,217, - 87, 71,215, 80, 85, 67,219, 99, 59,137,180, 0,104, 82, 12,241, 41, 66,150,254, -101,246, 8,134,246, 19, 43,203, 85, 14,213,205, 94, 98,232,186,255,119,254, 16, - 50,163,234, 82,148, 7,142,208, 58, 79, 19, 21, 20, 81,172,131, 99,175,105,249, -100, 63,247,203,146,198, 45,150,110, 99, 79, 78, 1,167, 53,202,231,189,163, 7, - 28,146,206,161,207,134,230, 88, 62,198, 66,221,232,122,207,116, 47,224,227, 89, - 55, 51, 19, 13,184, 30, 0,162,184, 42,160,109, 39,160, 59,112, 45,105, 79,201, - 10, 77, 96,248,244,177,228, 92,210,184,227,126,105,150,119, 54,227,223,193,165, -183,157,222,105, 70, 12, 78,203, 64,234, 27,172,207, 12,171,109,210, 15,254, 45, -224, 3,239,146,187,152,143, 16,103,126, 12,185, 38, 44,230,147,226,137,221, 73, -143, 27, 10,195,227,222, 55, 98, 38, 89, 14, 89,185, 4, 61,101, 10,128,220, 82, - 28, 59,130, 18, 98,136,205,212,195, 34,218, 0,153, 53, 6, 1, 26,193,111, 80, -121,160,235,102, 76,116,183, 92,108,128, 72,106,162,192,225,243, 72, 35,157, 79, -177, 0,253,251,103,210, 16,144, 23,103,202,159,224,193,238, 96, 9,219, 19,255, -247, 87,135,201,116, 20,145, 76,201,253,194,208,171, 36, 32,140,239,154, 58,245, -130,166, 16,144,240,116, 16,119, 27,119,116, 16, 44, 82,198, 21, 2,134, 97, 26, -198,234,121,200, 85,245,216,130, 90, 21, 98,124,185, 25,208,222, 43,133,155,192, -189,108, 30, 64, 41,224, 65,125, 10,148, 56, 72,208,255,240,135,108, 76,134, 93, -126, 80,185,198, 98, 74,168,201, 62, 64,208,251,128, 69, 84, 94,249,212, 30,106, - 91, 82,212,144,224,102,208,133,149, 9, 10, 11,119,167, 11,248,226,206,133, 34, - 50,205, 10,145, 22,240,224,253, 56,151,188, 24, 77,231,196, 9,228, 95, 50, 84, -226, 67,216,184,194, 8,211,107, 7, 33,228,239, 79, 74,145, 23,123,203,224,180, -140, 73, 39, 7,198, 65,143, 3,116,155, 18,169,228,249, 48,239,226,189,184,203, - 1, 46,133,214,135,226,238,137, 64, 72, 20, 8, 50,237,134, 85, 19,181,137, 8, - 30, 66,108,171,215, 39, 36, 28,172, 28, 1, 95, 49, 82, 83,123,144, 3,206, 15, - 64,147,231,221, 7,138,192, 40, 82, 21, 16,164, 16,151,166,181, 33,107, 75, 13, - 0,184, 86,250, 70,210, 58,148,152, 48,101,128,177, 78,140,131,137,166,115, 72, -116, 11, 40,145, 7, 0, 77,123,196, 28,118,106, 96,209,103, 39,152,225,151,208, -171, 99,247,190,226,171, 71, 91,250, 93,179, 98,167, 65,245, 10,247, 61,235,127, - 59,122,167,154, 30, 33,231,175,170,173,164,171, 2, 9,229,144,133,148, 87, 61, -193,141, 9,195, 15, 68,184, 43, 24, 2,154, 30, 68,171,172,124,222, 76,213, 3, -171,172, 5,193,131, 7,186,224, 92, 2, 16, 62, 96,136,193, 40, 70, 16,182, 36, - 51, 8, 41, 78, 70,120, 63, 59, 82, 90,198,146, 80,153,183, 14,138,169,100, 11, -202, 98, 29, 26,126, 95,186,100, 52, 14,111, 44,183, 67, 32,246, 78, 41,247,170, -172, 66,235,219, 19, 52,212,128, 84,236, 15,183,250,143,249,238,224, 83,161,228, - 11, 59, 33,136,211, 20,223, 82, 24, 14,149, 84,166, 59,156,207,186, 24,201,204, -248,106, 40, 62,180, 54, 99, 37, 49, 45,132, 35,142,107, 69,249, 71, 40,213,143, - 0,230,184, 89,147, 76,242, 16,182, 23,190, 58, 47,140,195, 55, 97, 47,108,113, -188, 76,135,140,219,216, 33, 34,177,148, 82,201,131,180,225,103,167,176,113,151, -103,152, 28,243, 15, 50,111,194,224,248, 54,195,190, 99,163, 75,231,140, 40, 21, - 43, 80,172,215,196, 49, 29, 79, 91,238,209, 16,161, 24,142,220,204,156,137,150, -190,221,164, 2, 10,200, 1,195,182,207,105,218, 9,215, 11,219, 38,222, 34,215, - 18,199,100, 76,248,208, 7, 94, 88,167,208,233,146,114,251,227, 23,113, 20,228, - 78, 51, 79,172,219, 38,130,216,162, 41, 31,230,235,116,201,171,146,195,127,103, -246, 27,156, 47,179,242, 70, 33,246, 69,225,103,183, 86, 7, 56,171, 24,207,184, -105,134,125, 76,179,163,189,232,247,114,144, 91, 93, 20, 68, 68,214, 12,130, 85, - 5,220,246,122,161,105,160, 38, 55, 40, 64,248,231, 11, 28, 77, 65,140,119, 73, -212,101,179,138,151,169,219, 78, 83,215,154, 23, 83, 43,104,143,212,149,245, 55, -123, 18,182,137,104, 16, 81,254,165,167, 79,181,245,241,117, 73,162,231,213,184, - 0,234, 39,165, 61, 57, 32,244, 3,199,209,201,195,215,127, 93, 83, 23, 57,106, -132,104,193,101, 72, 57,144, 54, 73,109,175,227,117, 0,178,238,245,235,192,208, -219, 34,162,186, 96,120,227,205, 52, 7,243, 36, 54,156,128,206,114,156, 21,136, -191, 26,161, 72, 77,208,116, 95, 88, 13,226, 55,214,144, 38,199, 13, 41,205,147, - 29,168,172,236, 68,195, 52, 66,184, 15,185,193,250, 5, 82,223, 66, 63, 63,191, - 95,160,203, 38, 31, 68, 13,168,148, 11,210,134,151, 19,208,164,233,163, 36, 54, - 81, 49,104, 61,206, 87,165, 64,101,159, 42, 5, 85,148,253,227,163,194,173,128, - 52,208, 33, 93, 84, 39, 57, 73,154,240, 8, 25,249, 92,197, 76, 25, 21, 84, 22, - 24, 79,230, 2, 94,150, 17, 2,156,251, 35,179, 65,116, 51, 25, 29, 55,190, 29, -188, 97, 90,172, 43,217,121, 43, 46,164,213, 51,170,153,195,115,152, 35, 7,139, - 40,152,216,181,102,194,204,219,159, 7, 19, 66,151,217,162,248, 28,143,243,109, - 70, 1,194, 45,181,202,205, 35,101,111, 39,173, 46,116, 57,221, 71,179, 48, 40, - 10, 3, 64,127,237,169,156,225, 23,236,253,139,181,142, 68, 47,240, 49, 27,114, -235,147, 95,133,195,134, 26,235,208, 73, 8,186,179, 80, 26, 46,110, 11,230,153, -202, 56, 35, 17, 18, 98,201, 4, 8, 7,218,136,141,146, 79,213,117,203,199,141, - 20, 56,124, 71,149, 41, 52,213, 86,195, 99, 72,171, 8, 52,122,254,105, 96,226, - 8,198,233, 49, 6, 20,233, 67, 33,104, 55, 23, 50, 42, 4,144,135,241,242,207, -199,160,219, 85,209,144, 8,162,131,244, 79,138, 97,245,140, 51, 54,106,117,152, -231,121,187,220,175,183, 47,238,184,200,206,193,220,130,152, 98,110,247,229,195, - 25, 98,136,202, 13, 22, 80, 34, 64,159, 17,140, 14, 51, 87,149,192, 72, 83, 45, - 57,160, 69,245, 60, 83,176,132, 16,121, 74, 7,170,157, 41, 32, 7,107,146, 49, - 38, 72,236,156,154,244,227, 90,254,235,254, 16,139, 69, 32,125, 44, 72,204,195, - 41,243,192,176,164,168,222,121, 83, 18,213,114, 62, 61,220, 81,198,218,238,148, -166,142, 46, 35,205,122,117,183,150,181,111, 35,164,123, 75,199, 57,225,207, 75, -113,113,253,232,128, 6, 68,131,139,130,122,208,117, 34,208,109,114,249,179,169, -250,223, 84,204, 90,160,194,237,149,251, 49,123,104, 84,162,230, 4,208,121,227, -172, 20,190,233,232,211, 30,217, 54,234,146, 92,253,195,160, 66,180,100, 68,198, -253,144,189,132, 50,161,216,212, 52, 30, 2, 69, 5,249,140,233, 37,166,175, 85, -130, 79,249,150,157, 7,240, 62,107, 78,228,132,111,217, 64,123, 49,144, 12,141, -242,209,127, 53,205,156, 30,107, 90,175, 80, 60,211, 1,249, 14, 62,103,104,180, - 42, 18,105,147,245, 33,235,135, 94, 63, 1,214,113,205,107,218, 5, 54,160,161, -197,163,226,173,232,194,188, 4,209,183,123,251,202, 6,187,214,121,233,131,144, -175, 21, 5,138, 91,181,145,157, 78,157, 1,214,205,228, 80,239,138,123,221,188, -148,239, 63, 75, 92, 19, 46, 66, 5,234,114,132, 0, 9, 73, 12, 80,123,113,212, - 77,147, 91,231,209, 89, 75, 57,134, 29, 23,225, 81,126,163,143,212,151,234, 51, - 68, 47,244,118, 61,168,182,226, 38,125, 0, 5,209, 66, 90,208,235, 16,100,218, -105, 25,146,105, 13,241,172,179, 11,161,170,224,181,186,255,108, 95,130,201, 89, -206, 73,165,199, 88,216,218, 51,111, 27,138, 37, 45, 95,129, 17, 37, 80,236, 27, - 76,245,248,144,139, 16,185,126,223,123, 82,119,241,241,250, 45,194,230, 46,244, -116,178,163,120,131, 43, 95, 16,232,105, 75,208,108,147,187,148,177,126, 92, 23, -130,155, 73, 91, 9, 89, 23,236, 98,122, 49, 12,201,167, 22,138, 19,160, 45,212, - 18, 54, 3, 40,182,160, 52,114,127,161, 89, 64,136,151, 31,114, 77,169, 99,110, - 29, 60, 28, 22,119, 23,243,184,138, 17,129,189,219,126,149,121,150,166, 20, 26, - 39,116,201,215,143,247,181,163, 4,232,184,172, 0, 23, 17,230, 54, 69, 17, 89, -167,248, 46,177,155, 25, 89,158, 75, 81,163, 93,131,125, 46,250, 25,238,109,231, -222,157, 15, 7,211,146,168, 11, 96,139,131, 15,154,235, 42,107,126,231,111,244, -250,229,220, 31,161, 82, 30,126, 13,197,220,251,212,250,208, 96,100, 90,234,123, -119,177,113, 91,165,104,131,203, 7, 66,173,239,179, 79, 52,103, 34,253, 96,121, - 45, 72, 59,248,173, 41, 91,244,212,216, 14, 27,161,217,177, 84,117, 30,238, 88, -225,123,232, 64,101, 78, 80,195,217,166, 3,141,219,209,218, 58,102,160, 62,220, -187,252,171,103, 95,177, 42,218, 19,184,159,125,236, 84,167,127, 97,137, 22, 24, -202, 92, 35,150, 41, 45, 93,180, 48,104,172, 90, 1, 47,197,123,164,149,153,159, -122,197,164, 8,146, 4,125,241,246, 52,240,188,224, 15, 47,132,184,177, 51,182, - 76, 87,132, 87,144,171, 6,144, 95,133, 4,224,152,165, 49,203,190,188,239,216, - 78, 52, 7, 76,221,197,193,195, 21,162,200,184,119,190,172,143,136, 58,205,187, -172,153, 49,119,163,204,117,156,189,228, 27, 4, 33,231, 58, 55, 24, 78,105,162, -136,105, 89,182, 64,164,225,198, 94, 64,132, 69,230,241, 15, 15, 2, 47,183,140, - 50,204,104,106, 34,241,189,230,199, 37, 84, 55,220, 93,220, 10, 16, 72, 85,233, -143,182,188, 9, 37, 23,217,249,203, 13, 84,228,211, 99,114, 72, 49, 54,110, 72, -106,165, 51,147, 97, 76,251, 12,167,253,225, 94, 2, 34,181,110,118, 74,147,225, -161,240,234,208, 93, 68, 28,195,191,190,165, 64,199, 2,207,111,112,119,136,207, - 69,171,192,125,210,240, 1,226,165,102, 75,192,146,208,207,118,192,143,117, 99, -230,221, 44,142,171,105,157,164,183, 43,183, 16,141,177, 7,200,195, 11,117,219, - 11,180,166,252,207,225,142, 59,169, 1, 90,110,130,187, 71, 66, 51, 4,217, 43, -181,240,111, 19, 71,139,243, 53,201,154,109,206, 49,209,161, 74,235, 81, 13,183, -203, 50,232,186,171, 58, 91, 35,121,235,202, 55, 2,178,149,183, 10,237, 12, 71, - 7,236,210, 43,106,232, 26,139,167,171,218,232, 18, 26, 41,125, 99,214, 61, 5, -224,250,205,216, 21, 58,206,127, 67,142,167,200, 31,180,114, 82, 0,253,199, 30, - 13, 62,200, 10, 88,144,180, 27,107, 51,210,243,150,164,158,205,191,236, 3,194, -220,135, 45,207,241,145, 53,112, 29,158, 51,227,158,240,163,196,179,100, 74, 42, -124,181,122, 10, 51,134,231,193, 51,178, 50,249,216,208,189,118, 7, 9, 40, 84, -110,172, 19,154,150,107,105, 9,200,193,106,193, 57,206, 73,137, 44, 45,190,226, - 51,206,110,108,114,196,177,163, 63,132,154,249, 35, 1,159,152,102, 44, 29,102, - 45,215, 69, 22,230,126,226,161,210, 60,236,100,132,144,102,231,141,190,103,221, -111, 25, 82,116,144, 91,223, 96,106,103,187,220, 50, 21,205,118, 21,225, 22,136, -196, 6,204, 5,193,230,248, 52,156,255,190, 60,243, 6, 62, 26, 37,215,202, 8, - 19, 65,251,115,135, 38,121,136, 45, 88, 8,186, 19, 89, 46,209,166, 33, 1, 39, - 20,229,241,143,104,141, 10, 5,230,130,207,216, 69,103,181,227, 24,192,149,205, -138,131,222,164, 86,120, 96,245, 36,229,164, 81,236,190,178, 70, 8,165,249, 37, -202, 3,242, 28,175, 81,180,105,143, 12,103,254,129,119, 9,161,219,127, 39, 54, -159, 41, 67,212,110,140, 7,154,125,183, 10,200,183,183, 94, 32,155, 93, 22, 70, - 83, 94, 5,167,103,157,188,217, 17, 46,158,170,163,177,164, 45, 66,101, 73,140, -178,162,235,101,249, 73,104,147,149,185,119,200,120,220, 77,248,121, 91,184,155, - 60,150, 21,166,209,150,184,190, 62, 69, 88,110,134,239,239,237,138,236, 51, 78, -166, 86,135,103, 8, 57, 81,192,165,191,163, 78,110,219, 77, 82, 21, 82, 47,172, -173, 8,120,168,187, 2,176, 47, 57, 65,234,233, 90,142, 17, 87, 56, 18,176,128, - 99,116,101, 64, 34, 40, 23,193,253, 0, 22,222,194, 74,189, 29,132,144, 33, 18, -211,218,142,157,234, 66,151,230,185,164,112,109, 73, 32,216,114, 29,211,201, 76, -251, 14, 77, 89, 77, 50, 12,218,179, 39,128, 56,182,246, 97, 69, 46, 91, 29,200, -106,180, 59,196,229, 99, 91,194, 86,204,135,195,225, 31, 86, 25, 24,151,187,126, -184, 16, 96,175,161,205,137,119,151, 49, 24, 39, 43, 68,108, 71, 26, 50, 35,174, - 39, 16, 72,124,118, 67,193,210,138, 53,192,204, 64, 90,237, 74,115, 94,136, 20, -115,169, 45, 14, 29, 79, 46, 75, 71, 29,192,226, 28, 86, 25, 45,124, 10,139, 10, -221,179,136,136, 97,143,145, 81, 70,108,254,200,105, 88,157,240, 65, 20,214,212, - 71, 18, 99,177,150, 8, 46,146, 37,171,181, 46,142,129,132, 53,117, 26, 8,217, -115, 87, 53,134,176,206,176,248,229,125,230,130,193, 42,101, 11,126,172,218,238, - 44,216, 85,189,239,204, 3,136, 6,242,217,249, 30, 13,167,186,119, 57,241,151, - 88,162, 90, 9,144,147, 49,192, 37,193,176,177,166,103,147,238,243, 99,154,226, -173,191, 24, 51, 81,106,136,139, 40,149,107, 76, 78,178, 98,197,227, 86, 19, 45, -179,237,157,100,225, 73,138,171,123,137, 28, 52,134, 0, 38,153, 76, 31, 48,147, - 27,182,154,239, 34, 7,196, 40, 90,173,204,180,255,161,174, 95, 45,146,231, 42, -116,205,249,232, 96, 97, 64,224, 4, 63, 0, 65, 0, 71, 0, 31,249,251, 63,248, -224, 71,158,199, 36,221,105,239,189,247,222,222,110,117,189, 73,154,246, 35,127, -255, 7, 31,252,200,110, 78,203,162,140,167, 96,246, 6,201,238,174,181, 78, 91, -171,245,247,247,247,127,240,193, 7,107,140, 53,198, 89,173,142, 7,230,238, 54, - 59,199,221,220,150,182,204,183,109, 87,151,181,129, 36,135,180,149,117,123,179, -151,133, 97, 15,118, 73, 87,245,166,185,172, 73, 81, 20,229,239,255,224, 36, 81, -254,254, 15, 62,248,209,109,129,148,147, 52, 45,229,239,255,224,131, 31, 77, 65, - 59, 39,103,254,219, 86, 81, 74,217,130,105,220,148, 50, 2,129,136, 36,152,187, -226,144,115, 0, 81, 80,220, 3,138,108, 56, 14,231, 66,184,104,151,194,245,185, -180,173, 19, 8, 56,150,153, 38,113,177, 35,212,178, 39, 0,196,174,178, 5,136, -194,223,255,193,134,184, 99, 95, 9,121, 80,164, 5,119,207,208,185, 92, 92,101, -106,205, 16,184, 98,224, 56,104, 13,187, 32,142,134, 40,139,113, 0,177,115,136, -150, 16,131, 57,214,204,134,102, 46,172,110, 4,175,219,113,116,248, 92, 59, 8, -117,150,199,100, 73, 76, 74,146, 50,203, 32, 73, 41,214,169, 24, 79,164,148, 77, -171,245, 15,134,195,168,163, 77, 21, 73,146, 12, 99,243, 68, 17, 8, 6, 6, 8, -162, 1, 81, 18,227,186, 24,114, 7, 67, 64, 65, 16, 33, 40, 8,140, 2, 65, 0, - 18, 8, 12, 2,193, 64, 80, 8,132, 32, 8,133, 32, 8,130,176, 8,132, 64, 8, -202, 32, 32, 5,153,188, 3,242,235,208, 82, 64, 12,116,179,139,164, 5,225, 3, -209, 33,247,196, 71, 81, 98, 87, 8, 77,133,140, 57, 58,249, 82,191,209, 19, 92, -235,141,162,199, 67,201, 41, 71,137, 86,113,181,179, 23,202, 30, 12,163, 67,137, - 93,124,144, 72,237, 87, 72, 51,188,219,106,158,185, 81, 11,191, 53,213, 47,181, -176,129,122,204,130, 59,157,157,126,197, 23,227,145, 43,239, 44,164, 47,124, 72, -157,225, 75, 94, 83,106,247, 49,102,184,119, 46, 77,109, 79,195,100,224,121, 16, - 17,221,253, 8, 64,125, 18,109,170,197, 71, 87,245, 63, 34,210,182,209,253,178, - 67, 32, 4,233,156,120,188,133, 2,119, 99,100,146,161,253,222, 21, 24,185,111, - 72,141,106, 76,205, 78,182, 17,249, 69, 43, 71,104,147,234, 59,111, 56,137,198, -187,132, 36,201, 13,152, 2,106,207, 2, 68,252,154,157,139, 64, 13, 30,178, 18, - 74,220,225, 33,103,112,110, 72,227, 26, 91,175,218,194, 35,144, 38, 19, 14, 91, -139,152,238, 22, 87,150, 53, 10,197,220,148,136,112,234,205, 70,146,210, 75, 61, -147,111, 0,150,228, 96,190,117, 44,139,250, 11,128,102,137, 9,174,229,152,190, - 5, 31,238, 36,220,168,135,148,102,209,250,188,100,175,190,113,149, 53,167, 57, - 66,122, 19, 12,196, 40, 77,202, 6, 80, 33,193,173, 50,118, 39, 77, 87,235,241, - 8,201,171, 18, 42, 87,207, 67,212,241,196,164,246,253,153,249, 53, 73, 37,208, -161,105,147,236, 31,210,208,233,230, 88,231, 20, 98,121,161,127, 25,250,170, 75, - 83, 77, 92, 93, 32,149, 9,157,227,246, 83,171,217, 53,159, 92,243,152, 61,120, -218,128, 92,198, 89,233, 6, 65,230,118, 47,224,240,165, 82, 93,137,162,248, 40, - 5,154,241, 48, 57, 39,215, 60,120, 63,162, 95,185, 76, 10, 35, 3, 34,131, 32, -177,242,253,248,246,201,151,225, 68,231, 23, 62,112,138,169, 9,224, 46,156,120, -248, 14, 92,168,255,103, 3, 16,110,255, 47,200, 1, 11, 98,210,240,141, 93,224, -182, 80, 64, 33,236, 24, 37, 62,106, 58,131, 25,245,163,226, 97,186,181,247,111, - 74,125, 89,130,143,166, 94, 50, 6,232, 19,167,130,221,115, 30,122,226, 16,229, - 16, 6,250,202, 96,156,254,109,217,224, 27,170,160,159, 83,222, 99, 96,213,224, -168, 69, 99,220,152, 91,179,176, 87,165,198, 23, 19,103, 38,166,144,102,194,147, -101,246, 25,197, 53, 34,139, 85,176, 72,157, 2,160, 16, 24,207,109, 6,105, 2, - 66,160, 10,112,189,206,172, 20,210, 24,204,214, 1,179,108,123,157,105,124, 91, - 33,147, 31, 27,123, 71,211, 22,195, 73,190, 35, 22, 60, 51, 46,120,143,100, 11, -188,134,122,147, 88,187, 97, 74,239, 72,105,185,138, 83, 70, 43, 50, 13, 87, 13, - 44,140,239,234, 80,127,225,170, 34,114,139, 14, 2, 71, 47,249,196,226, 11, 7, - 66,110,200,149,106, 46,169,181, 29,112,252,181, 59,157,203, 10,233, 28, 99,209, -238,161,129, 51,174, 25,172,228,196,119,234, 77,241,224,137, 6,141,219,120,240, - 93,227,241, 84, 12, 52,104,152,244, 53, 13, 0,252,164,120, 12,177,167, 29,143, - 2,184, 44,136, 24, 14,124,221,215,182, 13, 72,167,102, 83,105,187, 78,201,206, -178, 79,101, 74,201,236,212, 48,145, 15, 21,148,230, 53,160,229,123,186,145, 94, -238, 28, 56, 66, 49,157,127, 91,157, 4,241,209,107,225,176, 19,157,210,203, 94, - 71, 20, 35,196, 24,245,173, 87,211,222, 34, 16, 11,227, 42, 78,204,212,200, 61, - 12,138,237, 32, 95, 65,200,172, 67,150,136,160,129, 71, 64,173,207,191,172,154, -211,186,120, 97,186,157, 99,150, 36,248,222, 69, 9,212,118,241, 54,127,140, 23, -146,134, 78, 52, 11,188,150,132,107,244, 94,205,217,146,135,140,149,197, 47, 96, -234,203,113, 46, 11,178,134,100,191,131, 73,137, 17,151,204, 43, 74,157, 34, 45, - 34, 25, 98, 17, 28,214,155, 9,106,218,226, 12,243, 53, 36,153,148, 67, 94,123, -162, 75, 54, 99,201,223,172,169,108,119,222,101,121,182, 45,230, 29,194,129, 39, - 66, 9,123,180, 19, 89, 90,250, 26, 81,253, 57, 37, 45,193, 89,180, 97,243, 63, - 23, 17, 95,224,217, 82,120,196,194,191, 20, 25,179,128,138,252, 91,215, 82,196, -228,121,225,132,232,148, 2,138,164, 21,226, 96, 71,111, 84, 16,147, 95,175,143, - 97,175,210, 45,192,121, 58,212,237, 45,215, 41, 49,242,182, 86, 38,190,192,198, -187, 45, 20,134,118,142, 1,207,124, 35, 45,227,192, 98, 27,190,187, 9,197,249, -160,123,107, 44, 76, 90,207,184,156, 31,149,144,100,114,179, 25, 99, 13, 89, 76, -186,105, 58,169,202,230, 76, 88, 46,120,164,138,184,229,156,154,156,229,153,110, -245, 85, 48,166, 33, 22, 34,132,168, 85,226, 81, 82, 65, 9, 15,188, 21,139,224, - 99, 34,157, 92,109,174, 8,136,206, 70,192,175,133,149,139, 32,158,234,187, 56, -205,172,231,121, 67, 89, 82,144,164,205,202,221,212, 6,145, 84,244, 30,130, 93, - 1, 96,138, 69,112, 19, 33,196,200, 89, 13,101, 98,138,247,149, 62, 10, 26,203, -183,126,121,110,212,241, 59, 26,148,104, 59,112,234,157,158,230,148, 70,225,255, -108,224, 74, 22,100,141,255,151,220, 52,219,221,193,207,144, 6,166,186, 83, 55, -233,255,230,111, 29,225, 23,129,183,240,138, 32,191,144,112,198, 47, 45,101, 49, -193,250,157,154,176, 44,127,168,236,106,134, 48, 29, 16, 83,163, 89, 91,239,157, - 68,214,123,209, 1, 37,226,166,247,143,222, 63, 15, 82, 10, 79,218,196, 28,188, - 17, 8, 35,131,164,118,209, 92,240,119, 70,195,250, 61, 75,199,176,149,229, 23, - 6,179,125, 21,202,245, 84, 81, 46, 75,232, 54, 68,101,162,184, 37, 0,124,185, -200, 62, 81,174,253,183, 41, 98,213,150,217,148,125, 47,118, 89,131, 14, 69, 82, -164,185,206, 81,135,222,158, 80,156, 10,230,208,197, 25, 89, 97,249,209,117, 36, -164,230,131,211, 22, 47,221, 1,244, 68,186, 76, 49,126, 64,165,184, 73,222,165, -182, 35,115,251,153, 67, 63, 8,211,133, 82,136, 72,233,215, 16,178,206,185, 41, -235, 62,189,154, 15,147,212, 15,203,252,186,211, 68, 91,210, 37,238,110,186, 52, - 48,134, 28,135,108, 81,180,217,224, 72,205, 26,114,206,176,202,246, 40,234,206, - 46,146,118, 2, 63,176,164, 56, 9,176, 49,138,251,183,248,216,207,139, 82,127, - 7,133, 4,247,241, 53,212, 66,226,140, 79,153,226, 69,192,125, 37,115,233,148, -238,116, 94,174,202, 65,138, 64, 5, 30,225,147, 11, 21,126, 37, 81,222, 6, 37, -227,143, 78, 56,187,199, 24, 11,114,139,143, 45, 47,143,110, 70, 44,211,178, 45, -125,128, 40, 21, 26, 0, 89,127,196,220, 60,114,203, 57,208,163,227, 5,223, 26, - 68,248, 74,102,245,161,158,148,253,146,213,130, 3,225,131,181,116,153,103,124, -142, 35,250,233,227,152,149, 20,183, 51,246,154, 87,163, 44,139, 76,186,113,146, - 2,131, 42, 75, 79, 30,161, 67,249, 72,197, 65,194,131, 1, 12,250,137,244, 31, -165,114, 33,225, 75,210,156,193, 35,204, 15, 52, 67, 54, 9,160, 44,102, 50, 42, -207, 67, 62, 67, 99,179,183,162,235,188, 40,225,208,172,149, 68,126, 82,226,204, -207,134, 60, 93, 57, 65, 18,148, 58, 3, 83,130,126,244, 79,252,137, 14,124,133, -176, 37,145, 30, 52,232,175,190,112, 23,183,128, 50,150,119,132, 23, 65,116, 55, -237, 19, 12,135,244,197,192, 35, 56, 90,112, 66, 14,192, 20, 69, 18,144, 88, 76, - 8, 46, 44,224, 44, 77,167, 2,178, 57, 88, 75,114, 20, 35,114,232,150,246,148, - 21,114, 41, 5,132,255,232, 81, 66,216,165, 25, 1,226,127,190,132, 51, 96,230, -166, 80, 2, 60, 29, 70, 16, 37,226,128,136,195, 32,151,242, 48,169, 62,216, 49, - 24,200,130, 56,160,211, 52, 26,192, 19, 92, 60,131, 65, 42,160, 76,186, 76, 3, -113, 9,204, 4, 10,100,101,184, 93, 3, 46, 45,224, 76,235,108, 3, 42, 41, 0, - 77, 86,231,166,133,186, 55,192,110, 8, 31,103,130,240,195, 32,103,121,229,131, - 34,231,138,242, 33,146, 83,145,242, 1,147,115,173,242,225,147,179, 94,241,193, -148,115, 69,249,208,202,169,164,252, 64,203,185, 86,249,176,203, 89,175,248, 32, -204,185,162,124, 72,230, 84, 82, 62, 64,115,190, 87,124,229,195, 53, 71,171, 66, - 41, 23,188, 57,181,107,132,247,152, 42,149, 95, 47,188, 80, 57,181,168,111, 42, -223,247,138,191, 65,144, 31,149,191, 46,228,127,131,205,190,136,234,161, 13, 96, - 98, 96,135,234,225,182,115,244,160,239,100,225, 66, 46,189,180,188,123,108, 88, -125,173,147,144,218,211,141,182,215, 81, 59, 34, 80, 20, 72,238,150,202,229,205, - 42,124, 33, 81,131,149, 34, 26,181,148, 70,134, 45, 80,108,172, 79, 0, 10, 65, -111,230,132,255,231,232, 97, 34,251, 80,232,136, 21,192,143,237,228, 92,119,225, - 53, 92,133,196,228,120,193,108, 9,166, 66,201, 56, 10, 11,151,112, 98,167,136, - 91, 57, 7,104, 94, 3, 29,243,196, 79,186, 82, 33,192, 52,138,105, 50,222, 36, -141,152,102,181, 62,234,165,153,150, 43,211,130,195, 10,150, 50,250,149, 34,213, -219,164,232,100, 32, 61,164,136, 82, 2, 58,227,227,194,234, 59,109, 92,144,132, - 25, 89,250,193,110, 94,170,146, 34,155,108, 96, 50,111, 7, 4, 59,154,126,165, -248,197,131,176,104, 22,142,129,131, 44, 86,142,230, 78, 26,205,154, 62,231,219, - 16, 50,142,192, 63, 50, 20, 80,242,185, 15,234, 8,191,221, 61, 54,155,193, 94, -182,108, 97,189,227,150,246,244,110,120, 93, 58, 14,254,177,108,229, 26,252,173, -166, 34, 17,208,210,134, 9,119,144,163,190, 25,153,181, 44, 67,151, 44, 86,137, -109, 70, 0,250, 69,234, 22,184, 78,241,214,143, 97,140,186, 51, 67, 0, 60, 82, - 53, 90, 75,210,151,217,124,233, 40, 48, 6, 51,103, 77,120, 48,157,163, 38,101, -117,191, 7, 92, 35,105,153,130,232, 11,166, 89,151, 85,237,199,248,125,143,169, -122, 99, 82,169, 58,180,230, 73, 25, 64,192, 10,166, 63,152,149, 90,151,241, 10, -160, 64,159, 23, 26,178,112,143,129, 91,132,180, 69, 45, 84,254, 94,164,126,169, -235, 12, 92,160,243,119, 22,151,152, 90, 45, 99, 23, 64, 52,120,139,100,229,225, - 11,197, 61,104,139,177,130, 11,134, 65, 24,172, 5, 80,137, 35,134,196, 31,164, -133, 7, 60, 61, 3, 71, 18, 82, 7, 58,224,212,159,139,102,200, 5, 10,204,169, - 49, 26,208,160,255, 73,180, 83, 51, 25,211,160,223,247,162,200, 83,113, 28,176, - 6,176,241,197, 26,205, 14, 63,119,175,243,169,233, 44,180,153,142,222, 83,229, -125, 32,145, 26,244, 17,184, 29,113,216, 33,106,252,117,187, 71,112,131,218, 55, - 53,118,122,100,239,224, 25,249, 11,199, 62, 36,143, 71,240, 3,107,100,240, 51, -157, 59,114, 92,224,101,156, 3,201, 36,132,233,238,194,103,184, 69,208, 95, 98, -168,208, 25, 91, 13,247, 56, 82,164,176, 25,152, 69, 54,186, 95, 98, 56,133,204, -184,131,136,205, 65, 67, 74,169, 13,190, 25, 14, 3,248, 98, 48,115,122, 21, 0, - 31,232, 25,119, 73, 97,252, 25,233, 13,172,241, 9, 85,115, 3,200,128, 58, 85, - 82, 53, 2, 67,178,212,115,125, 45,163,141,247, 72, 92, 12,254,134, 84,124,161, - 81, 12, 21,244,154, 58, 54, 3,137,141,126,129,166,154, 51, 1,137, 88,138,177, - 84,215, 77,105,216, 21,195,250, 43,150,169,194,139, 28,103, 97, 56, 85,244, 22, -157, 49,135,106,215,243,169, 2,134,106, 72,225, 17, 24, 34, 23, 85,243, 12, 57, -163, 81, 71,226,107,168, 84, 93,119,244, 12, 7, 48,100,133,152, 28, 57, 99, 1, -150,147,170, 22, 31, 53, 3, 35,216, 70, 63, 66,204,247,136, 25,203, 5,147, 89, - 68,200,184,180,162,229,202,120,135, 91, 20, 69,109, 63, 60,132,135, 60,112, 46, - 60,156,206, 85,251,135,106,188,173,200, 85, 63,165,207, 1,117,184,134, 8,124, -105,144,136,153, 24, 16,169,188,188, 76,100,240,149, 80,146,188,216, 68,100,231, - 24, 7, 39, 52, 99, 5,252,170, 72,153,179,164,156, 1, 51, 76,174,237, 65,226, -214,158, 53, 75,199, 96,147,250, 12, 23,128,172, 26,181, 89, 73, 26,128,193,185, -152, 22,214,216,166, 96, 80, 62, 16,195, 80, 71,212, 56,113,103, 12,125, 65, 12, - 99,167, 72, 36,195,218, 80,198, 63,101,152, 70, 30,204, 80,216,112, 47,142,154, -225, 82, 57,133, 72,126, 23,210, 16, 39,120, 4, 14,140,146,136,251, 14, 6, 27, -102, 97, 85, 54, 88,205,196, 10, 81,230, 29,107,136, 77,100, 84, 59,186, 64,132, - 41,226,230,209, 27,242, 92,143,243,126,192, 57,156, 69, 32, 5, 4,168, 8, 29, - 64,201, 24, 14, 80,135,236,229, 53,191,114, 8,217,205, 18,166, 7, 48,109, 52, -146,222,149,104, 18,251,157,179, 5, 32, 50,201, 53, 41, 97, 72,128,108, 44, 0, - 40, 17,129,158, 3,198,155, 0,195,199,116,135,157,194,176,143,144,158,162,195, - 19,158,187,123,147, 95, 43,182, 97,208,195, 27, 0,159, 86,111, 18, 66,196, 65, - 70, 44,211, 58,111,178, 20,196,213,232, 34,153,175, 21, 63,109, 99, 74,209,228, - 77,170,176,225, 21, 67,214, 14,203, 29, 14, 45, 55, 70, 69,113,106,222, 88,107, -197,145,223, 68,117, 10, 87,145, 45, 81,254,158, 67, 66,124, 70, 24,243, 53,128, - 55, 41, 33,226,200,130,146,164,182, 21, 59, 13,224, 41, 87, 36, 10,136,253,247, -237,151,148, 5, 11, 19,172,227,169, 91,114, 32,140, 24,217,170,140,222,223,110, - 84,178,114,237,103,146, 2, 23,142, 64,204, 64, 49,201, 24,202, 2,227,226, 24, -149,238,135, 81, 25,230,105,100, 62,147,230,170,143, 94, 94, 47, 83, 27,113,120, -221, 50,218,185,161,132, 3, 42, 51,131,169, 88, 71, 23,161,180, 26,119,126, 94, -175,187, 49, 97,119,150, 18,166,211, 69,131,176,209, 33,211,252,197,230, 13, 45, -201,136, 51,144,178,149,132,201,105, 95, 50,166,246,116,246,122, 31, 50,193, 86, - 25,169,126, 37,102, 99,154,252,196, 53,123, 77, 9, 71,198,172,158, 24, 77,241, -105, 0,124, 41, 86, 36,237,138, 99, 15,108, 73,127,112, 94,225, 94,154, 3,118, -210, 20,210,151,227,132,106, 59,227,107,162,125,235,194, 17, 54,230,186, 95,141, - 69,226, 18, 76,163,104, 3,144,161, 36,237, 29, 34,223, 22, 57, 81,209,234, 89, -230,101,202,147,215, 8,216,100, 32,183,158, 0,249,172,157, 38, 86, 5,122,214, -100,180, 14,206, 60, 12,159,229, 81,250,239,167,221,109, 49,153, 97,227, 53,254, - 68,122,131, 14, 78,105,168,180,117, 1, 19, 16,146,217,215,111, 44,199, 85, 78, -106, 8,180, 3,198, 60,231, 15,178, 87,127,239, 47, 64,114, 2,201,116,130,193, - 66,121, 63, 97, 6, 73,155, 0,228, 74, 8, 38,189,115, 53, 7,209,234, 41, 77, - 75,205,162,215, 40,142,158,208, 73,183,138,178, 4,178,220,197,138,230,209,219, - 1,107, 99,161,171,145, 52, 26,240, 54, 63,213,240,107, 86, 62, 15, 25,130, 0, - 39, 53,142,192, 12,136, 36,214,139,148,160, 1, 97,103, 20, 90, 52, 89, 80,149, -186, 65,233,123,223, 7, 8,215, 52, 16,195,138, 57, 55,162, 1,119,113,192, 18, -247,141,254,199, 77, 62,111,128,239,252, 12,230, 53,166,177,134, 41,249, 76,248, -101, 87,110, 44, 84, 0, 64,184,173,182,150,141,240, 22,189,243, 99,143,242,142, - 60,254, 20, 53,131, 68,239, 96,166,184,239, 88, 0, 16, 14,123,166, 1, 25,222, - 49, 96,188,120, 17,195,149,196, 92, 56,177,150,130,234,185,203,210, 66, 80, 22, -213,176,155,142, 99, 68,208,198, 74,183, 92, 64, 8, 47, 71, 76,159,112,140,198, -197, 17, 4,224, 76,196,254,117, 31, 35,248, 32, 20,106, 35,240,188,248, 73, 2, - 75, 47,118,251, 76, 32,146, 94,137, 12, 23,139, 10,204, 15,176, 11,212, 15, 19, - 28, 43, 12,212, 19,180,153,167,100,133,159, 98,185,129,202,130, 48, 31, 53,214, - 30, 24, 84, 11, 45,245, 44,160, 33, 22, 34, 24, 74,192, 52,249, 48,125,199,176, - 42,193,133, 9,171,164, 14, 45, 74, 61,168, 68,193,183,176,141,148,189,114,213, - 43,168, 11,190, 82, 66, 72, 67,197, 11,142, 11,243, 9, 25, 10, 86, 37,131,228, -133,150,110,169, 99, 89, 27,203, 26, 60, 7,241,202, 88,238,176,198, 65, 17,193, -219, 42, 32,168, 88,237,224,137, 48,191,136,169, 10, 88,247,160, 73,240, 25, 27, -224, 48,205, 41, 60, 89,110, 64, 24, 37,120,201, 81,187,153, 32,187,122, 19, 13, -194, 0,151, 74, 25,154, 65,104,145, 95,123,183,120,229, 58, 56, 3, 16, 91,237, - 26,193, 23,218, 98,220, 14,132,161,113, 58, 90,167, 65,101,105,129,236, 95,131, -149,111,231, 23, 5, 49,144,136,110, 90,115,238,155,105, 61,176, 22,167,101, 9, - 72, 11,189,120,141, 50,176, 11,122,252,218, 82,130, 87, 5, 62, 79,152,173,192, -236,160,157,130,159, 19,232, 11, 98, 0,118,161, 22,255, 85, 81,123, 15, 8,103, -251, 82,176, 28,228, 86,129, 54,111,110, 4, 64,189,235,147,192, 62,236,167, 82, -248,217, 11,141,199,235, 54,179, 87, 53,244,162,119,127, 2, 67,196, 71,243,160, -127, 50,245, 50, 93,241,134, 38,161,130,220,135, 1,210,190,141, 48,172, 90,146, - 17,165,112, 53, 47,144, 53, 90,236,164,228, 99, 24,110, 91,249,202, 97, 24, 38, -250,135, 62,195,149,206, 96,208, 13,171,101, 12, 89, 36,145, 97, 68,165,156, 49, - 36,227,220,211, 30,202,208, 48,114, 25,202,170,173,212,151, 50,204, 25,225,154, -226, 97,120, 16, 78,198,128, 56,197, 67,148,128,123,140,137,213,105,172,129, 91, -198, 94,142,210, 82,115, 77, 53, 40,165,228,151,229, 84, 81, 80, 25, 30,165, 59, - 15, 80, 18,130, 92, 85, 19,188,134,183, 27, 40,185, 49,131,194, 39,171, 86,106, - 10,160,153,131,243,126, 74, 11, 42, 62, 83, 33, 37,255, 59, 99,163,191,156,184, -154, 67,167, 58, 79,100, 8, 96, 34, 73,154, 41,138, 23,238, 4,190, 97,122,221, - 87, 21,130,145,132,105,127,169,154,121, 22,157,123,223,151, 63,110,101,163,229, -225,146,232, 23, 88,131,191,227, 69,122,142,116,100, 57, 9,218, 15,148,208,153, - 72, 74,144,108,214,175,152,205, 84, 64, 0,242, 78, 48, 22, 32,125,113,120,141, - 56,197, 23,255, 16,230,117,175,206,243,108, 50, 74, 0, 72, 0, 56,251, 24, 6, - 33,245,125,101,151, 38, 81, 26,190,183,134,182, 81,142,108,137,170, 42, 10,255, -143,238, 68,210,140,226, 52,139,162, 9,233,147, 30,133,203,255, 1,105,246,188, - 48, 60,191,160,119,176,217,182,253, 31, 70,227,209,163, 99,209, 97,182,151,171, -238, 60,195,120,198, 55,230,248, 22,148, 65,196,209, 91, 47, 77,146, 60,202,194, -132, 47,201,118,213,183, 42,231, 12, 83,105,186,145,130,174,184,238, 86, 12, 85, -238,171,222, 30,237,110,136,240,170,186,186,189, 5, 41,208, 31, 73, 54, 99,182, -250,255,214,143, 27,245,244, 84,104, 79,246,182,194, 48,252,127,145,102, 55,217, -178,100, 74,240,129,246,109,209,120, 33,224,170, 77,123, 88,237,166,168,135,191, - 40,154,151, 62,222,252, 7,131,158,168,178, 94, 53, 73,161, 3, 98, 42,132, 33, - 57, 16,100, 65,170,204,148,200, 61, 66, 96, 12, 19, 2, 49, 26, 98, 16, 50, 33, -136, 16, 67,152, 64, 2, 9, 36, 18, 17, 18, 9,210,164,109,176,157, 43, 43, 83, -209,187,145,252, 75, 25,233,186,114,146, 33,186,154,207, 94,172,193,157, 69, 59, - 39,122,158,113,118,161,205,117, 45,220,252, 86, 89, 40,244,192,142,214, 93, 49, -153, 86, 75,104,144, 48, 90,221,148, 99, 50, 86, 75,209,160, 96,191,107, 38,176, -224,182,242, 96, 8,178,221,173, 19,255,107,216,122,137,134,123,202,178,242,185, -240,223,204, 23,156,107,188,134,101, 75,221, 71, 87, 43, 82, 41, 37, 85, 12,217, - 74,223, 45, 21,165,174,232, 14, 29, 23,107, 72,130, 5,249,115,196,141,126, 29, - 94, 53, 77, 89,161,244, 17,145, 52,122,175,105,239,141, 47, 94,189,117, 68,203, - 51, 54,118,237,248, 68,171,111, 68,105,121,150,134,254, 53,143, 72,245,169, 72, -229, 18, 47,109, 11,140, 60,125,142,173,124, 97, 89,144,211,143,155, 77,140,199, -252,168,171, 45, 21,134,196, 36, 89, 5, 18, 62,165, 83,115,189,238, 29,120, 68, - 49,122, 87, 29,239, 42,202,118, 96,184,218,115,232, 56,108, 67,146, 37,252,103, -166, 91,189, 13,131,189, 14, 57,133, 40,135, 33, 84,177,113,183,214,157,204, 52, -105,107, 74,183, 62,218, 54,231,172, 81,213, 35, 35, 42, 75,188,180, 45, 48,242, - 73, 11, 35,157,220,239,111,203,177, 33,194,162,196, 90, 45,199,158,123, 2,156, -163, 75,119, 42, 88, 89, 59,139,188, 14,235, 58,248, 97, 81,155, 82, 86, 16,141, -240,165, 67, 39,143,123,176,254,107,125, 49,111,235,205, 79, 30, 19, 11, 96,135, - 91, 30, 13,206,238, 45,195,248,182, 36, 9,186, 28,162, 49,237, 91, 95, 70, 24, -245, 99,165,209, 1, 25,190,168,156, 66,119,139,162,179, 36,181, 92, 7,213, 31, -214,106,159, 46, 93,120, 1, 90,183,203, 6,240,205, 75,114,209,150,162,122,254, - 95,226, 6,175,148, 42,105,149, 58,197,233, 98,241, 42,125, 29,167,121, 98,152, -141, 77,160, 82,156, 80,150,109,108,176,114, 99,100,152,125,156, 62,131, 30,125, -160,102,113,209,237,183,233,177,170,196,160,130,120,162, 33, 59, 28,119,225,217, -214,177,133,250, 94, 31, 77,158, 20, 96,127, 53, 57,119,182,231, 35, 26,248, 47, -163,204,110,188, 80,178,217,181,141, 94,213, 43, 27,240, 32,164, 68, 40,199,240, - 53,144,173,151,222,239,239,164,177, 46,166, 3,252, 21, 12,151,239,106,250, 73, - 24,194,178,208,116, 32,173,133,102,173, 37, 38, 19,215, 21,242,172, 4, 69,100, -197,159,157, 33, 73,199,183,244, 94,208,167, 3, 15, 70,220,179,244,234,153, 81, -100,158,160,216, 10, 96,174,103,114, 0,138, 59,239,248, 92,235,132,128,231, 9, - 41,230, 27,231, 99, 74, 42, 71,215, 8, 63,152,236, 75,104,110, 13,137, 15,169, - 29,110,237, 11,166,235,117, 87,149,243,189,127,167,109,105, 83, 6, 97, 72, 30, -244, 22,252, 49, 29,218, 59, 10, 49, 68,142, 66, 96,137,240, 38, 90, 61,160,227, -214, 31,250,239, 57,169, 70, 95, 72, 64,241,222,231,131,197,101,102, 11,169, 83, -191,248,141,234,151, 42,239,238, 83, 63, 31, 42, 82, 26, 68,101, 5,165, 34,169, - 50, 71, 31,147, 26, 43, 50, 80,184,214, 84,178,152, 93, 97,133, 91, 73,246,192, -129,174,105,234,131,174,185,231, 40,133,228,182,250,150,222,184,199,157, 88, 98, -241,205, 19,160, 13,151,115,217, 28,205, 22,232, 22, 45,137,103,233, 57, 40, 22, -104,112, 80, 63,161,133,122, 15,149, 36, 91,244, 98,179,218, 65, 26, 74,174,209, - 48,223, 13,223,183,140,213,218,137,102,252,135, 62,182,171,101, 22,116, 14,245, - 97, 47,151, 24,188, 7,222,183, 84, 95, 75, 9,176,153, 81,215, 92,149, 95,153, - 86,219, 74,134, 96,131,232,104,223, 82,144,208,116, 30, 96, 2,168,206,137, 9, -238,184,246, 55, 33,245, 82,173,226,136,158,148,195,255,162, 77,128, 84,228,153, -152,195,152,141, 48, 49,224, 93,205, 28,223,104,156,164, 36, 79,198,236, 46,102, -229, 47,112, 60,191,110, 46,150, 54,144,183, 91,226,202,216, 18,115,115,139, 45, - 30, 68,218,185,142, 46,111, 0,235,184,137,180, 89,246, 44,127,125,126,146,143, - 18,148,150, 47, 50, 21,161,251, 81, 7, 8, 59,183,207, 90,115,127,127, 93, 80, - 28,206,238,145,246, 72,159,255,226,147,123, 98,255, 93,173,120,139, 43,192,128, - 94,179, 36, 48, 99,187,199,195, 10,210, 45, 88,130,216,109,130,229,227,253, 75, - 77, 28, 98, 42, 29, 90, 89,155, 43,215,114,132,176,232,154, 74,162,220,224, 2, - 5,196,145, 48,158,139, 62,189,138, 41,129,208, 0, 3,240,199, 34, 32, 30,225, -187, 37,240, 1, 88,233,144,151, 35,140,165,142, 49,127,191,100,253,155, 60, 52, -208,255,244,236,108,139,200,181,104,150, 80, 3,189, 25, 8,192, 58, 27,157,242, -248, 92, 79,255,136,184, 37,142,247,200, 13,170, 0,105,194, 15,140, 93,222,251, -230,199,221,159,244, 47,249,191,239,150, 99,205,177,118, 42, 70, 97,150,230,158, -203, 49,227,210,124,252,186, 8,122, 38,129, 71, 32, 83,149,228,199,117, 4,230, - 13,197,223, 63,243,204,142, 11, 53,104, 90,204,158, 89,254, 8, 47, 6, 4,240, - 84,215,239,151,160, 83,164, 53,234,200, 79,110,152,150,135, 49,239, 90,101,143, - 85,146, 17, 55, 38, 64, 12,162, 19, 95, 6, 28,216,104, 71,125,209,158,221, 29, - 61,230,208, 14,210, 48,212,172,115, 46,106, 28,184, 60,128, 75,130, 20,167,124, -252, 32, 0,175, 46, 47,112,175, 12,174, 79,122,112,193,105,180, 99,236,222, 25, - 97, 78, 50,162, 60,155, 25,157,145, 91, 42,139,249,132,141,105,116,111,131, 54, - 7,172, 9, 93,121, 93, 84,116, 93, 20,235,112, 70,212, 23,141,188, 2,190,148, - 95,114,249, 32, 10,172, 59,147,235,123, 19, 99,111,226,126,223,196,152, 80, 86, -215, 19, 34, 72,209, 70, 22, 55,189,133, 22, 64, 79,128,158,192, 99,232, 20,190, -220, 62,239, 0, 68, 78,202,226, 48, 98,190,197,207, 71,207, 69, 95,205,167, 64, - 96, 30,114, 38, 76, 82,164,144, 80,252, 20,188, 74, 17, 75,164, 29, 11,215,106, - 53, 66,236, 35,255, 26, 64,190,158,199,251,203, 22, 50, 71, 19, 62,129, 24, 61, -108,126,224,254,243,246, 3,185, 43,247, 78,154,211,115,173,173,106, 52,127, 78, -146,151,153, 55,100,230,152, 29, 0,200, 99,199, 44,208,185, 72,148,147,246, 17, - 36, 82, 87, 5,181, 49,174, 72,222, 64,181,209, 90,206, 68,110, 60, 85,190, 45, -138,168, 74,208, 71, 15,191,165, 34,240, 4,144,227, 84,206,193,223,211, 93, 49, - 8,243,220,198, 42, 96, 7,254, 24,154, 27, 88, 24,201, 77,142,144,133,138,149, - 73,212,194,240,112,172, 70,198,146,211,108, 44, 16,167,242, 42,206, 67, 4,169, - 91,120,248,194,182, 71,164, 58, 20,248,137,150, 8,132, 15,197, 67, 36,129,149, -162,138, 52, 44, 6,195,185, 30,129, 43,205,154,154,196,176,174,203, 31,243,136, -178, 32, 46, 27,202, 51,200, 73, 44,194,171,148,101, 86, 62,122,113,102, 57,121, -209,185,145,141,195, 88, 24, 67,234, 6,253, 27,189, 97, 92,126,230,203,245,106, -157, 55,183, 35, 61,178,183,126,122, 57, 51, 73,103, 28,156,239,198, 98, 95, 84, -207,106,130,111,128,107,214,115,189,132,167, 41,234,107,175,203, 68,212, 31, 45, -119,200,143, 14, 34,233, 40,150,102, 71,209,203,132,205, 17, 36, 74, 84, 12, 2, - 79,240, 57, 80, 24,137, 15, 9,145,138, 40, 32, 18,145,104,181,140,200, 59,139, - 68, 96,180,147, 77,118, 27, 0,116, 29,183, 19,214,137,228, 82,110, 91, 34,102, -197, 83,148,223,216,251, 61,240,105,242,247, 30, 44, 23,216,235,136, 78, 65, 50, -255,222,115,190,166, 48, 17, 17,228,144,135,204,166, 89,128,142,123,128,166, 77, - 45, 91, 86,246,146, 86,168, 23,250, 81,207, 83,120, 31, 87,116, 96, 75,138,200, -143,141,131, 29,144, 68,244, 57,188, 1, 71,123,200,236, 58,188, 7,132,117,228, -234,112,246, 19, 74,170,217,155,217,132, 50,254,193,186,134, 53,140, 92, 97, 19, -131,218, 90,194, 70, 75,252,182,183, 49,225,188,246,163,246,122,185,157,219,242, -109,164,154,201,160, 30,114, 24,169,230, 1, 31,100,121, 69, 45,145, 46, 74,255, -243,181, 69, 11, 5,210,244,225, 29, 48,154, 9,117, 63, 79,241,192,207,204,101, - 71,117,225,161, 2,155,192,132, 93, 52, 75,252,209, 6, 34, 81,233, 17,142, 26, -190,246, 20, 39, 53,146, 63, 84, 32,244, 18, 0, 8, 82,131,159,168,226, 63, 34, - 22, 34,240, 68, 70,162,166, 57, 34, 40, 4, 32,132, 65,168, 8,131,192, 14,100, - 2, 17,177, 32, 73,253, 72, 7,134, 9, 38, 5, 40,230,186,129,166, 88, 64,158, -184,177,178,226,172,212,176,232, 24, 64,194, 11,149,111,167, 31, 47, 74,181,114, -140, 58,152,222, 10,125, 38, 20,166, 16,142,147,104, 95, 78,188, 10,212,226, 85, - 93,176, 41,251,221, 2,181,120, 85,183, 96,179, 21,235, 18, 40,213,171,186, 5, -155,173, 88,151, 64,169, 94,213, 45,216,108,197,186, 4, 74,245, 42,140,166, 38, -223, 37, 80,185,211, 16, 52, 5, 89,110,129,210,156,134,160, 41,200,114, 11,148, -230, 52, 4,154,130, 44,183, 64,105, 78, 59, 5,155,178,223, 45, 80,116, 73, 87, -104,125,253,114,237, 91,109,214,228,230,236,242,227,161, 18, 23, 12, 15,153,220, -156, 93,241,242,212,209,233, 56, 76,194, 11,149,111,167, 31, 47, 74,230,163, 14, -230,199,173,104,151,119, 60,214,153, 27, 59,235,237,187, 28, 98,228, 5,219,148, - 38,102, 12, 55,195, 30, 30, 93,227, 77, 11, 24,161, 71,215,181, 83, 42,123,134, -172,194, 21, 58, 0,107,133, 62, 11,213,148,210,238,233,167,188, 56, 56,181,245, -113,145, 7, 15,107, 25,154, 36, 59,227, 48, 9,239, 85,210, 78,244, 65, 25, 73, - 31,118, 48,225, 10,173, 51,251,116, 61,160,109,219, 20,119, 1, 41,107,160, 48, -239, 36,248, 85,201, 93, 20, 94,221,207,192, 73, 26, 61,169, 65, 38, 29,154, 45, -177, 58,198, 20,220,253, 97, 96, 67,122,122, 56, 20,181,141, 95,156, 79, 53, 45, - 25,118,198,177,121,192, 42,120, 66,146,115, 40,186,103, 13,119,137, 67,177,198, -143, 43, 84, 75, 2, 4, 21,176, 77,177, 27, 63,225, 76, 77,221, 55,211, 50,165, - 93, 78, 9,108, 33,155, 76,210,121,135, 21,234,254, 28,193,171, 27,211,106,247, - 15, 7, 11,105,244,164,166,238,155, 45,134,207,232,206, 19, 46,134, 11, 14,227, -186, 42, 32, 52, 52,254,157, 42,254,223, 78, 84,104, 41,183,170, 28,153,105,123, -199, 99,157,185,177,179,222, 92, 44, 84, 21, 97, 60, 51, 55,118, 86, 58, 47, 61, - 60,186,218, 80, 9, 27, 36, 96, 69, 3, 74,215, 25, 44, 66, 94, 0,131,118,193, - 1,180,218,113,108,238, 3,127,253, 7, 93, 27,174,231,204,140, 73,131,169, 3, -238,132,221,148,244,123, 58, 52, 83,219,227, 46,171,179, 19,141,126,119, 12, 28, - 73,135,167, 67, 51,181,205, 93,155, 36, 48,229, 9,141,102, 55, 15,105,129,246, -199, 78,252, 86,220,135, 39,165,100, 87,124,217,238,132,132,182,234,253, 78, 49, - 47,152,135,121, 42,119, 35, 83,140, 57, 7, 18, 7, 24,156, 6,168, 51, 17,152, - 91, 49,154,138,188, 52,236,203, 2,191, 21,159,198, 46,111,154,194, 3,196, 40, - 0,162, 3, 13, 18,144,207, 1,156, 8, 32,230, 37,218,189,132, 19, 72, 67,227, - 51,227, 76, 68, 93, 32,154, 73,226, 44, 17,160, 8, 35, 78, 80,126,110,238,223, -181,107, 86,172, 74,165,140, 7, 28,210,162,247,159,251,119, 29,135, 61,168,179, -207, 13,179, 92, 2, 98, 34,166,100, 72, 68,107,232, 51,112, 32,136, 16, 24, 6, - 34, 4,132, 0, 61, 16, 17,145,160, 2, 9, 68,164,140,162,164,233, 64, 64,208, -210,193, 44,202,197, 2, 80, 5,207,224,189, 54, 68,249, 6,243, 9,155,238, 8, - 33, 56, 93,144,207,221,165,231,186, 78,226, 41,149,104, 45,218,146, 34,191, 41, -229,225, 75, 43,171,213, 12,179, 60, 31,231, 44,105,138, 58,251, 64,126,137,177, -127,171, 86,116,170, 98, 17, 42,255, 81, 56, 11,245,254,255,227,121,229,112, 98, - 16, 87, 77,102, 73,236, 63,139,148, 49, 23,105,107,180,102,211, 13, 32, 95,105, -153,171,173,216,143, 57, 75,174, 72, 77, 60, 85, 3,187, 66, 51,237,162,168,169, -185, 70,154,105,166,231,159,162, 15,148,159, 94,209,250,102,253, 70,153,153, 18, -161, 35,219,242,151,145, 74,125,161,168,102,233,203, 66,166, 30, 7, 73,189,234, -110,106, 64, 68,220, 55, 79,127,160,229,250, 80,130, 64,210, 87,218, 70, 85,225, -127, 4,185,137,133, 82,141, 90,182, 55,159,131, 90, 36, 24, 83, 87, 26, 53,175, - 76,170, 88,220,211, 9, 94,194, 51, 61, 21,248, 91,121,184, 51,209,163,106,109, - 19,143,252, 24, 77,169, 22,223, 44, 43,147,129,215, 36,170,186, 55,207, 96,111, - 47,210,253, 81,166,169,216,228, 27, 69, 71, 80,223,212,227, 42,250, 45, 85, 24, - 64,174,235,224, 25,140, 85,179, 88,206,193,186,219,243,108,231, 96,139,116,153, - 45,140, 11,243,250, 79, 48,209,113, 9,239,205, 85,143,173,116,135,133,187,114, -141,214, 89,202,131, 90,204, 92,234, 86,135, 4,154,131, 18,196, 27, 16,250,213, -129,154,118,248,229,209,128, 18,170,174,241,199,153,129,210,105, 69,245,229,138, -148, 77,204,195,121, 12,224,162,139,138, 52,110,238, 56, 36,108,211,250,186,233, -145, 50,209,112, 84,118, 82, 53, 26,210,106, 99,132, 54, 13, 31,141,143,170,226, -243,129, 67,219,134,224,145, 76, 64, 52, 82,250, 9,186, 40,221, 50,173,104, 5, -113, 10, 56,180,200,218,101, 4, 29,134,237, 69, 64,157,167, 45,136, 13,129,192, -112, 65,154, 44,220, 37,141,117,177,155,184, 24,151, 56,214,179,218,186, 93, 56, -221, 40,254,126,135,204,102, 9, 67,128, 55, 79, 16,144, 51, 86, 74,122,150, 57, - 12,162, 81,252,143,123,221, 5, 91, 92, 60,239, 4, 7,168,127,156, 65,143,146, -111, 96,150, 17, 37,103,162, 47,216,144,248,187, 24,166, 65,191,232,217,208,116, -131, 72,140, 68, 9, 9, 64,204, 4, 17,106, 11,207,212, 4, 77, 94, 2,229, 37, -196, 10,227,194, 80,170,137,110,155,164, 21,181, 34, 93,102,181,136,154, 78, 63, - 41, 77, 12, 40,106, 52,162,120,152, 69,179,130,122,130,165,224,112, 64, 17, 38, -210, 75, 86, 44,186,234,104,247,225,181,134,201, 59,178,100,161,171, 58,109,112, -207,155,145,144, 72, 46,210,202,144, 33, 1, 19, 34, 25,147, 31, 14, 66,208, 16, - 30, 6, 80, 65,100,237,137,117, 49, 43,208,197, 82, 11,218,116,250,147,210,196, -128, 98, 15,128,222, 8, 17,145,177, 20, 59,150, 30, 88, 10,174,167, 40,130,169, -117,203,138, 70,175, 58,218,125,120,173, 97,242,142, 12, 90, 92,170, 78,155,168, - 75, 6, 40, 25, 42, 81,120,204,194, 44, 65, 61,194, 82,112, 62,142, 34,180, 91, - 73, 57,102,244,219, 81,109,195, 43, 30,246,119,228,193, 98,161,171,185, 44,116, -155, 99,191, 54,159, 99, 86, 20,250, 9,176, 77,213, 60,115,221, 99,173,146,185, - 52, 42,108,148,169, 92,157,153,182,215,236,153,180, 17, 68, 26, 25,181, 81, 99, - 34, 77,229,234,204,180,189,182,103,210, 70,172, 53, 49,213,141, 79,228,182, 83, - 7,182,160,205,230,254,240,217, 23, 6,182,208,111,179,252,112,220, 45,171,213, - 74,120,177,227,117, 73,173,139,207,139,143,184,180, 55,246,106,121,226, 6,187, -128, 46,254, 19, 6,244,126,223,107,247, 20,113, 70, 48,176, 8,154, 46, 70,123, - 23, 24,224,248,239,237, 24,216, 66,239, 47,235,222, 57,114, 81,251,178,225,162, -243,195,133, 13, 85,132,221,194,249,239, 51, 93,104,150,196, 93, 16, 96,181, 14, -187,166,233, 8,232,140, 34,175, 13,179,212,181,196, 44,170,195,200, 46, 50,245, - 8,200, 8,194,174,192,243,182, 72, 95, 80, 8, 22,157,146, 13, 43, 42,184,139, - 68, 14,201, 69,116,237,185, 82,143,122,188,225,208,252,249,179,175,191,230,248, -194,225,121,110, 31,171, 57,175, 57, 9, 52,122, 59, 54, 40, 55,229,173,172, 86, - 19, 25, 63,205,170, 75,142,216,149, 80,168, 36, 10,213,162, 82,180, 73, 68,161, -148,141, 77, 52,206,100,250, 36, 36,214, 53,239, 64,194,201,194,179, 26, 29, 95, -184, 88,175,185,226,175,164, 98, 45, 59, 16,122,229,152, 27, 47,109,152,109,183, -195,143,221, 85, 62,108, 57, 9,232,107, 31, 54,200,220,188,115,192,255,156, 14, - 0,107, 5, 93, 20, 78, 47,114,201,146,178, 31,251,250,109, 27,199,174,185,166, -186,188,162,252,141,137, 14, 2, 66,250, 71, 13,112,246,216,226,234, 98, 87, 90, -145, 80,148, 36, 67,218, 80, 45,180, 41,161, 80, 8, 26, 98, 39,210, 32,201, 75, -128, 95,217,111,210, 60, 41,230, 21,192, 65, 87, 29,241, 43, 91, 54, 92,169,146, -214, 44,189,159, 52, 49,255,186, 37, 43,202,239,152,248, 32,100,164, 94,213, 24, - 99, 15, 45,174, 46,114,228, 21, 9,166, 73, 50,164, 13,213, 66,155, 18, 88,134, -160, 33,118, 34, 13,146,188, 4,248,149,253, 38,205,147, 98, 94, 1, 28,116,209, - 17,191,146,216,182,204,177,126,116,171,126,153, 96, 27,134,143,221, 85,126,216, -122, 18,242, 87,166, 27,151, 37,226,188, 38, 0,216,202,226,202, 30,134, 14,137, -143,249, 4, 45, 1,148, 23, 1, 38,181,160, 38,224,148,186, 1,200, 70,254,243, - 59, 92,191,207, 11,176, 47,223,255,243,242,240, 76,188, 18,191,112, 5,109, 34, -222,227,223,164, 12,102, 88, 99,188, 16,153, 0,146, 0,147, 0, 15, 71,198, 3, - 2,101,162,179,201,199, 92,224,197,133, 7,117,206,100,247,213, 57,178,179, 85, -136,202, 25,144,200, 71, 97,135,166,108, 90, 87, 53,220, 91,157,204, 95, 7,198, -166,113,186,127, 9,113, 71,102,218,211, 30,153,207,114,123,223,100,228, 86, 59, - 43,123, 16, 83,231,145,174,242,143,162,199,149,206,140, 3, 10,166, 22, 75, 74, -171,253, 89,219, 90,248,103, 69, 28, 97,177,105,156, 77, 59, 45, 68, 52,158,163, -147,163, 76, 89, 13,187,131, 46,107,184,231, 91,204,212, 44,241,159,155, 72,180, - 17,193,240, 81, 73,232, 73,133,187, 17,166,204,165,149, 19,134,127, 13, 13, 80, -101, 50,241,107, 52, 81,197,212, 47, 19,125,225,160,143,193,243,189, 47,132,158, -250,254,192,126,152, 69,193, 1,108,222,113,173,249,233,240, 90,136,175,228,148, -244,203, 64, 23, 54, 6,185, 29,114, 87,144, 91,131,220, 23,204,232,142, 50,197, - 27, 1,189, 9,202,104,128, 76,110,211,206,231,232,180,158,153,156,231,170,126, -112, 0,122, 52, 15,245, 17,238,191,214, 43, 67,157, 95, 5,117, 39,227, 42, 39, -183,250, 36,212,121, 2,205,175,223,230, 70,246,198, 51,250, 77,157, 31,206, 67, -165,164,145,243,234,173,210,238,224,206,131,139,247,172,182,110,192,187,208,125, -168,143,135, 13,177, 63,116,194, 91,252,140, 36, 76,146, 64, 29,248,238,243,118, - 8,249,220,104,151,137,170,202, 90,202, 90,174, 84, 90,107,173,181,110, 59,198, - 72, 69,200, 84,132, 21,196, 24, 99, 36,152,248, 29, 43,112,150, 42,144, 0, 89, - 85, 93,193,200, 27,176, 24,221, 99,140, 81,140,113,179,105, 96,231, 92,146, 6, -251,170, 92,240,186,174,203,189,114, 76, 82, 47, 24,230,152,199, 24,221, 35,135, - 30, 99,124,199, 16,226,135, 56,136, 22,226,155,228, 66,168, 16,144, 6,202,235, -167, 93,223,139, 53,116, 33, 99,216,139,222,244, 60, 28, 69, 44,178,205, 76,165, -221,157, 17,130, 52,145, 18,186,175,110,106,225,157,241,146,101,157,196,229,129, - 59, 1, 21,203,132,226,209, 89,166,138,165, 98,153, 80, 38, 20,203,100,153,252, - 94,127,154, 67,252,120,146,145, 17,159,133, 46, 28, 20, 69,114, 14,177, 70,114, -174, 76,199,169,218,245, 36,201, 69,242, 19, 60,252,249, 44, 61,231,140,225, 48, - 76,164,101, 10,195, 20, 38,227, 47, 31,152, 49,152, 54,240,204,155, 95,110, 50, -178, 49, 45,185, 89, 43, 9,190,129,129,235,215,175,214,224, 0,199,220, 24,234, - 29, 60,104,235, 70,168,119,178,201, 73,119, 12,254,137, 11, 86,173,219,212,154, - 97, 28, 12, 16, 36,138,164, 96,185,170,162, 24, 99,140,177,170, 98,188,174,232, - 30,227,197, 34, 77,199,198,121, 84,185,151, 46, 5,142,123,168,148,187,125,181, -129, 32,160, 1,131,115, 0, 8, 12, 12, 74, 35, 50,137, 68,138,146, 44,229,252, -212,128,134, 66,149, 5, 17,135,152,132,135, 2, 28, 48, 48, 3,129, 8, 24, 64, - 0, 2,144, 1, 4, 0, 6, 12, 64, 4, 33,130, 28, 75, 15, 31,216,125, 63, 10, - 14,237,203, 53,136,204, 46,252,192,243,120, 63, 58,172,143,123, 87, 0,254, 14, - 9,215, 24,208, 81, 31, 59, 29,210,199, 52, 67,191, 45,140,252, 73,244,240, 59, -220,119, 26, 59, 48,156,239, 52, 18, 41,152,198,251,116,219, 12, 88, 50,103, 58, -195, 31, 26, 65,197, 8,195,221,243,236, 50,252, 68,138, 8,136, 96,147,159,168, -113,151,251, 41,152,129,223, 48, 82,125,194, 62,181,108,251,111,178, 17, 49, 63, -117, 72,175,147,192,226, 66,122, 22, 32, 25, 4,196,163, 8, 43,125,210,199,250, - 95,100,146,137, 66,168,213, 54,221,164,215,203,252,249, 22,142,112,126, 64,129, -186,143,117,211,224, 11, 29, 17,162,214,230, 85,199,117, 67, 45,192,118,254,239, -160, 18,154, 47, 56,149,250, 86,222, 34, 9,157,207, 59, 5,225,178,181, 71, 19, - 88,252,222,110, 29, 78,119,150, 92,227, 86,172, 30, 7, 37,143,111, 89,222,210, -199,215,210,183,200, 9,178,110,135,131, 36, 22,236,247, 98, 95, 89,160,116, 38, - 46,160,227, 13,247,204, 67,150,124, 84,190, 77,163,228, 77,154,188, 21,183,217, - 3,147,184, 68,160, 47,252, 4, 43,187,105,136,223, 16, 86,127,150, 3,172,234, -119, 18,166, 30, 12, 86, 36, 63,108,196,159,242,136, 1,171, 32,250, 24, 33,250, -171,252, 42,221, 85,132,139,245, 42, 44,246,136, 36, 13,110, 17,192, 92, 94, 91, - 13,143,189, 84,126,183,165,166,206,107,116, 55,222,138, 93,245,166,184,113, 82, - 78,163, 56, 18,146,140, 42, 37,163,232,197,110, 14,236,104,230, 30,122, 42,228, -237, 33,139, 96,226,240, 58, 96,219, 86,120,167, 16,207,143,106, 51,130,203,147, - 5,251,107, 37,203,105,234,157,174,184, 31, 94,188,154,116, 86,205,229,161,149, - 48, 85, 40,203,235,209,125, 91,192,149, 87, 93,148,207, 3, 78, 41, 35,177,200, -236,166,168,238,178,139,100,137,111, 1, 49,225,147,227, 96,238,229, 81,154,191, - 60, 53, 20,168,220,111,164, 42, 37, 84,239,142,155,184,201,227,193,242, 54, 1, - 88, 69,181,214,111, 23,126,145,162,215, 9, 33, 86,170, 43,223, 46,159,213,105, - 66, 32,214,130, 38,171,244,114,109, 7, 76, 92,229, 29,197,237,185,206,173,230, -235,100,145,181,171,216, 51, 21, 74,189,105,148,152, 53,187, 58,175,142, 97,196, - 22,238, 74, 8,220, 72,219,200, 97,100,116,236, 5, 51,196, 60,184, 65,127, 49, -184, 98,234, 56,154,179,240,234,201,121,241,187, 52,149, 73,135, 27,184,148,215, -249, 62,213,246,208,177,221,152,139,187,115, 33,111, 21, 82,242,248,195,137, 58, -131, 7, 70, 46, 38, 7, 86,218, 29, 42,222,170,230,216,157,218,105,185, 89, 63, - 86,185,130, 60,115,205,171,188,220,252, 35, 3, 52,199,155, 70, 93, 61, 93,184, -142,128, 14,158, 54,246,137, 89, 91,107,168,185,201,219,106,238, 46, 61,108,177, - 90,205,104,117,231, 52, 37,141, 38,174,246,213,158,118,101, 65,114, 0, 29, 42, -115,213, 12,213, 90, 24, 9, 32,176,106, 91, 18,228, 76,195,255, 90,152, 24,194, -150,199, 74,120, 30,190, 8,152,233, 91,133,104,105, 53, 73, 90, 86,174,190,167, -216,139, 1, 21, 36, 39,254,166,203, 33,204,114, 14, 27, 83,194,203, 82, 66,202, - 14,190, 11, 56,254,246,230, 81, 62, 77,106,213, 7, 79, 10,168,223, 84, 33,238, -118, 21,106,184,131, 3,102,163, 71,199,217, 13,203,108, 41, 36, 68,244,208,231, - 36, 12,159, 73,137,158,177, 89,228, 20,134, 93,184,187,162,164,176, 3,152,147, - 68, 29,217,201,234, 79,169,215,135,236,229,101, 29,248, 73,222,254,250, 15,102, - 83,246,131,139, 89, 53, 46,138,209,245, 0,196,249,220, 55,215,228,117,248,248, -197, 46,222, 74,156, 5, 23,110, 34, 22,240,166,158,176,107, 16, 18,165,153,106, -212, 32,203,187, 99,201,190, 20,248, 72,180, 64, 41, 12,144,103,144,255,180,173, - 51, 69,174, 14, 68,118, 80,138,232, 21,171,240,209,116,214,180, 76,180, 59,166, - 72,116,232, 64,155, 78,224, 83,168, 39,137,111, 0, 67,197,228,148,185, 84, 2, - 61,100,253,130,161,196,119, 78,222,169,211, 60, 29,242,156,244, 37,209,100,139, -167,119, 75, 68,103, 28,186, 8,235,118,209,149,138, 10,223,142,189, 87,113, 10, -174, 56,246, 64, 50, 90, 30,211, 99,197, 94, 87,108, 77, 54,163, 40, 67, 62,118, -137, 0, 31,169,251, 8,222, 77,158,116,121, 38,128,118,190,133, 74,208,173, 96, -249,107,112, 20,166, 97, 34,217,184, 52,190,253, 79,219, 79,172,115,151,162,215, -136, 32,145,241, 48,253,177,111,240,124, 81,217,165, 0,246,139,234, 75,159, 78, - 7, 83,143, 0,244, 36,220,167, 5, 42, 42, 72, 8,229,129, 19,191, 23, 30, 40, - 59,140, 11,101,241, 62,253, 60, 24,241, 9, 45, 52,120, 55,142,201,178,223,134, - 77, 1,182,248, 38, 61,166,212,130,206, 33,215,117, 31, 85,184,119, 61,166, 99, -205,114,185,239, 31,146,153, 83, 97,132, 63,142,250,199, 89,169,211,140,201, 48, -100, 90, 51, 37, 86, 77, 20,104,130, 58,116,127, 21,229,119, 65,193,121,197, 75, -231, 8, 0, 41,158,188,139, 75,154,197, 8, 71,119,158,209,198, 27,116, 74,247, -108,194,133, 17, 3, 87,127, 37, 2,121, 51, 87, 48,208,213, 5, 14,173,233,201, - 73,171,102,132,215,169,252, 7, 49,114,173,138,123, 49, 61,227, 29,124,172,238, -251,136, 3,155, 57,233,215,201, 88,249, 74, 90, 39, 7, 73,235,255, 23, 58,172, -236, 42,171, 4,152,196,205, 89, 97,184,202,163,213, 98, 34, 82,214, 18,114,189, -244, 59,230,173, 1,199,238,224,138,119,133,144, 65, 69,213, 1,128,127,159, 79, - 91, 38,175, 87, 51,125, 64, 48, 84,113,175,181, 40,175,159,183, 93,248, 31, 41, -118, 66,240, 41,110, 20,240,103, 1, 67,205, 94,171, 57,205, 40,114,179, 0,239, - 80,163,179,221,232,254,182,124,245,146,171,146,174,246, 62,100, 51, 34, 85, 52, - 31, 76,148,235,106,168, 6,170, 66,123, 94, 52, 71, 69, 67,182, 11, 61,104, 39, -225, 11, 53, 75, 81,226, 73,137,162,159, 49, 72, 0,165,236, 87, 91, 74, 39,101, -193,158, 97,155,190, 13,143,228,239,104,120, 58, 58, 27, 53,217, 48,127, 95, 60, - 5, 12, 6,186, 87,241,175,202,155,229,141,180, 40,134, 24,125, 42,176,159, 30, -216, 2,241,194, 52,130, 0, 69, 47,193,163,220,219, 0,142,167, 0, 22, 14, 87, - 24, 75,209, 64,157, 64, 74, 41, 49,162,117,222, 44, 70, 84,142,109,216,127,254, -136, 21,203,194,178,195, 27,208,175,217, 92,108, 0, 71,195,170,213, 9,135, 90, -206, 25, 42,115, 93,166,174, 9, 13,207,248,170,145,159,142, 91, 28,123,120,129, -241,108,176, 31,136,194,210,189, 31, 22, 27,109, 25, 23,182, 98,167,149,254, 83, - 29, 45,205,244, 55,127, 98,107, 4,160,191,118, 62, 26,179, 94,171, 65,146,116, -143,143,166, 46,225,167,226,105,243,166,223,227,126, 18,205, 61,134, 22,164,120, - 67,186, 66,185,104, 62, 37,107,243, 26, 32, 74, 67, 82,173,205,104,120, 51,107, -111, 81,228,201, 3,167,195, 42, 32,183,136, 43,223, 49,202,189,113,138,131,205, - 22,245,197,116, 58,101, 43,117, 47,125,106,125,204,243,208,234,224,229, 61, 92, -177, 66, 16,211, 50,249,165, 10, 1, 88,124,151, 38,193,121,140,208, 20,106,194, - 84,125,182, 88,139,187, 14,138,136,245, 78,174,227,234, 47, 41,245,127,246,184, -139, 25, 71,207, 66,104, 56,206,230,160,197,107,209, 47, 12,223,192,210,205, 7, - 56,249, 23,140,118,167,129, 31,204,200, 88,183,209,176,163, 74, 53,113, 95,202, - 67, 56,196,188,226, 93, 3, 47, 61,185, 71,115,229, 93, 60,193, 50,193,123, 61, -224,127,219, 53, 60,112,132,176,164,124,192,230, 77,156, 50, 15,215, 79,186,126, -115,144,205,110, 55,186,149,176, 38, 93,188,184, 62,245, 96,209,148, 85,234, 14, -129, 50,217,224,238, 94,203, 67,191,182,111,150, 47,153,191,109, 90,174,240,142, - 15, 39,179,151,210,233,237, 29,204, 35,216,204,125,192,249, 34,127, 3,158, 15, - 89, 35,243,235,208,112, 2, 61,112, 76, 78,142,160,226,146,229,173, 4, 64,168, - 85,108,253, 27, 12,212, 62, 85,216,235,179,107, 5, 98,182,209,125,186, 57, 73, -188, 64, 95, 7, 2, 4, 37, 58,134,142,251,255, 64,170,170,228, 38,106,203, 19, - 79,114,124,215,198,230,134, 20,200, 59, 58,195,237,180,139,164,116, 30,227, 69, - 36,206,234, 17, 28, 56, 99,148,104, 0,190,238,136, 53,196,248,107,193,145,149, -204,215,222, 80, 96,218, 94, 65,132,172, 50, 17, 25,122,186, 85, 49,194,252, 40, - 22,125, 65, 20, 9,107, 98, 60,150,238,212, 91,189, 19,179, 6,121,122,154, 9, -158,207,238,157,112,160,149,138,156, 96, 16,227,102, 1,123,197, 72,121,216,133, -199,180,167,121,130, 73,156,194, 48,108,137,234, 21,236,143,198,135, 11, 79,199, -228,237, 46,124,250,175,193,153,110,120, 20, 89, 52,134, 94, 71,128,233,148,209, -118, 76,104, 21, 97,189, 97,191, 3, 84, 50,190, 22,203,217, 77,234, 90,159,206, - 24, 32, 87, 51, 60,121, 30, 98, 99,221, 41,179,234,221,135,148, 47,123,106,232, -194, 8,190,107, 79,255,167,101, 91, 28,222, 96, 10, 59, 57,248, 7,213,187,192, - 26,174,173, 23,126,249,171,142,120, 26,182, 42, 36, 36,211,199,208,153, 45,111, -122,100,126,176,208,209, 99,238, 73,139,226, 82, 85,165,133, 18,186,153,245,176, -234,122,133,112,150,127,120,145,136,154, 12, 78,155,197, 35, 42,129,201,100,179, -135, 37,239, 64,214,137, 99, 97,130, 80,117, 40,167,206,107, 70, 76,211,144, 42, - 52, 34, 28,216, 89,163,255, 6, 66,125,188,176,145, 60, 59, 53, 90,103, 43, 83, - 48,135, 69,193,225,128,205,222,138,132, 19, 71,205, 13,240,163, 38,190, 90, 81, - 30,140,227,172,234, 22,226,173,157, 26, 96,118, 38,153,210, 19, 10,162,190,214, - 1,236, 39, 53, 28,243, 24, 9,100,178,136, 35,247,145, 59, 48, 18,150,243, 66, - 96, 89, 88,101,151,228,192,112,194, 0, 58,230,218,171, 5,137, 90,111, 16, 76, -249,148, 37,180, 14, 95, 55,224,150,110, 13,215,126,248, 45,152,218,202,128,104, -195, 95, 28,170, 15,123,121, 14,180,204,116, 40,100,179,127,174, 6, 46, 63,235, - 33, 46,226,231,163,182, 47, 0, 97,156,102,146,177,127,213,147, 52,108, 88, 85, -146,208,213,250,184, 19,192, 92, 6, 57, 35,168,237,162,138, 76, 76, 84, 51,175, -162, 57, 77, 38, 78, 50,216, 96, 38,105, 95, 34,199,147,127, 34,213,188, 14, 36, - 81,104,194,226,125,102, 50, 86,185,197,211, 29,188,218,143,191, 81,176,202,170, - 88,229, 53,245, 70,217,215,136,244, 29,183,207, 39, 28,250,200, 29,126,157, 29, -157, 84,124, 14, 79,245,113,185,190,136,161,230,228, 18, 43,170,214,112,109,232, -178,180, 7,242, 97,246, 46,148,217,229, 8, 19,164,228, 72,159, 17, 17,170, 26, -178,140,197, 56, 24,100,224, 14, 57,239, 78, 52, 61,134,137,164,134, 74,174,196, -247,202,113,188,165,235, 38, 94, 14,107, 5,166, 58,123,125, 43, 16,131, 77,152, -255, 9, 84,179,202,145, 38,224,255, 41, 12,210,129,134, 57,238,192,163,188,104, - 88,223,194,129,233,252,133, 82,124,107,141,193,143,217,210,212, 56,233,175,207, -197,101, 81,183, 54, 53, 74, 78, 3,135, 0,176,108,199, 90,151,223,134, 73,193, -135,175,203,158, 78, 63,232,227, 9,173, 33, 79, 75,178,217,230,105,139, 30, 15, - 20, 77,207,129,210,197, 72,239,252, 74, 39,106,199, 62,236,190, 39,140,236, 79, -226, 28,119,199,134,106,202,156,132, 18,157, 43,193,248, 4,161,171,252,253, 53, - 92,186,114, 40,139, 45,156, 76, 38,123,136,196,208,122,151,234,215,106, 14, 94, - 38,227, 18,213,252,153,169,223,135,192, 63,130, 57,162, 81,188,129, 69,207, 76, - 69,124,174,146,133,175,232,253, 26,195,227,133,208,101,194,168,181,196, 69, 5, -107, 36,176,126, 92, 4, 96, 79, 76, 97,109,178, 6,151, 60, 58,134,110,173,135, - 62,235,117,252,177, 70,146,250,212, 10,109,160,192,184,181,112,241,189, 75,104, - 99,173, 53,138,244, 39, 33,119,189,155,241,113,215, 67,238,142,245, 27,230, 86, - 73,228,163,223,210,217,141,203,211,245,158, 34, 53,165,212, 21,199, 27,192,170, -179,129,223, 20,105, 5, 29, 64,218,208,193,196,125,242,130, 27,113, 68,208,116, -128,193, 97, 44,243,193,182,124,254,123,174,104, 31,253,103, 71, 10, 68, 98, 35, -134,104,137,184, 12,133,127, 21,132,163,128,189,166,164,128, 52, 89, 10,200,225, -175,122, 42,244,102, 88,210,209,177,181,237,121,149, 8,194,241,109,141,209, 46, - 96,248,204, 81,175, 13,168,203,218, 49, 27,246,178, 6,126,220,197, 96, 43,133, - 86,222,128,179,129,239,181,181, 58, 77, 5,126, 82,183, 12, 78,221,104,181,217, -202, 93,135, 87,220, 84,224, 70,133,102, 61, 82, 6,204,240, 43,249, 95, 30,104, - 82,227, 97,238,142, 71, 65,224, 56, 34, 98, 1,125,137,112,224, 10,130,186,142, -204, 84, 78, 39,174, 33, 54,186,255, 11, 76,225, 51,105,222,116,163,217,180,129, - 27,152,199, 0, 99,247,233, 65,217, 50, 18,102,186, 58, 87, 11, 34,174,115, 6, -195, 69,239,115,205,254,156,168,161, 1, 30,176, 68, 79,180,147, 33, 13, 39, 86, -154, 75,168,125,238,127,233,121, 99,174,236,155,200, 40,247,122,162, 81,244,142, -140,117, 95,232,213,231, 60,208,115,109,112,201,204, 98,202, 2,236,179, 25,107, -252,192,168, 86, 18,241,237,230,128,137,205, 7,125,253,128, 30,125,119, 50, 22, - 23,244,211,124, 10, 64, 71,231,175, 58,188,228,230,111, 57,197,211,240, 8, 51, - 58, 51, 94, 3, 76,243,172,141,197,248, 64, 38,249, 4,184,137,101, 68,173, 97, -214,160,197,154,129,202,144, 13,219,221,172,223,229,207,146,225, 67,101, 48,135, -220, 29,202,216,204,149,148,200,231,150,249, 19,146, 42,245,113,116, 53,227,190, -193, 85,137, 54, 85,163,218, 25,111, 44, 19,166,103, 8, 11,228,150, 58, 77,242, -148,209, 15,102, 14,218,165, 43,140,174,209,180,209,247, 38,153,189,253,138, 91, - 58,236,121, 36,215,119,191,196,221,136, 49, 69,110, 69, 55, 63, 71,198,181,111, - 22,228,112,226, 80,123,128,147,172,167,233,254,182,127, 72, 53,162,161,213, 32, -237,224,182, 26, 46,233,172,252,113,203, 73,186,233,162, 80,185,220,222, 19,215, -219,132,115,226,246,247, 94,199, 53,216,114, 48, 82, 90, 77,199,253,178,193, 5, - 87, 92,163,136,219, 48,112,128,184, 61,124,217,253,231, 50, 34,114,102,150,156, -127,192,237,183, 12, 6, 57, 60,165, 19,141,234,106,151,183,221,104, 69,182, 48, -181, 19, 64, 3,111,128,224, 46, 9, 22,238,246,154,100,245, 23,238, 99, 10,191, -119,155, 84,193,146, 46,192, 45, 83, 44,144,243,189,162,224, 85, 39, 91, 14,218, - 50, 34,163, 22,135,250,149, 54, 0, 16,147,216,151,177,115,109,255, 48,146, 17, -106,182,230,236,128,140, 26,140, 63,196, 61,164, 76,222,138, 29, 63, 84, 38,182, - 60, 25, 63,131,109,135,188,237, 59,144,217,189,255, 57,245, 96,227,234, 24,223, - 23, 71,185,150,116, 41, 92,244, 85, 53,106,181, 33, 87,171,230,162, 95,120,184, -215,167, 5, 28,231, 40, 78,167, 6,188, 9,163,114,207,101, 67, 65,193,176,188, -249, 97,209,206, 80,207,135, 60, 68,220,109, 28,220,237, 44, 68,192,198,165, 32, -166, 15,169,204, 7,100,195,206,159, 59,200,124,230,219,138, 33,214,151,118, 95, -228,201, 60, 75,108,131, 80, 52,190,173,134,221,240,195,213,101,142,140,249, 48, -177,116,141,173, 17,131,243, 53, 19,154,151,244,165,172,138,122, 24, 85,214, 41, - 26, 8, 83, 11,160, 45, 8,163, 28, 68, 72, 23,187,100,222,131,123, 35,180,155, -202, 76,241,173,229,242,255,105,109,209, 71,185,255, 56, 25,112, 35,200,249,102, -237, 36,218,212,233, 51,205, 40, 37,147, 22,122,199,115, 22,167, 95,251,143, 58, -233,145,199, 90,159, 61,182, 57,200,167,227, 51,131,106, 51, 39,120,146,103,183, - 45,204,150, 70,150,212, 84, 98,217,101,136, 68,183,115,137,108, 36, 48,174,217, - 11,127,152, 71,159,160, 12,194,140,147,184,151,128,190, 57,254, 99,226,214, 89, - 84, 33,226,207,130,173, 11,125,248,132, 38, 18,151,225,139,218,207, 28, 3,165, -172,107,176,112,238,108, 81, 55,222,223,255, 25,145,222,246, 96, 64,150, 37,145, - 78, 52, 75, 49, 6, 75,237, 97, 97, 74,211, 82,111,175,114, 33, 58,192, 34,126, - 79, 17,183, 25,247,181,227, 62, 52,184,170, 12, 64,215,234, 63,131,112,133,188, - 49,169,106,165, 5, 81,124,160,132, 51,140,137,108,175,102,143,217,203,155, 27, -184, 43, 58,209,129, 45,224, 42,243,178,201, 90,115, 4, 30,241, 8, 86, 51,130, - 73,118,181,131,165,236,140, 23,147,106,247, 28, 4,242,204,176,175,166, 22,221, -114,249,123,219, 87,221, 21, 20,131, 78, 97,183, 93, 47, 11, 20,159,135,243, 14, - 64,186,239,254,122, 53,209,138,163, 67,227,246, 18, 44, 51,201, 65,117,242, 30, -185, 91,139,141,176, 22, 43,223,218,241,110,119,217,246,140,236, 35,168,186,182, - 18,203,116,116,119,184, 3,243,111, 58, 70,208,107, 58,174,144,116,138,103,255, -246,154,254,243,117, 7, 5,241, 16, 18,226,140,222,134,127,204,193,145, 80, 37, -244, 25, 62, 26, 6, 11,127, 40, 83,148, 46,188, 80, 30,218, 56, 40, 46, 12,144, -239, 48, 78, 50,229, 92, 33,237, 12, 69,141, 42,166,203, 32,202,249, 48, 1,208, -204,109, 26, 19, 47,141,142, 75,180, 81,109,205,209, 34, 23,208, 51,151, 56,136, - 36,183,196,223,165,137,197, 76,204, 56, 33, 2,103,126,185,179,212,184,243,228, - 16,227,251, 4, 96,113,167, 59,254,198, 8,122,238,140,106, 12,123, 11,235,168, -232,139,189,190,161,113, 70, 21,168, 53,206, 84,153,106,201,200, 16, 29, 68,244, - 5,162,169, 71,213, 44,154, 96, 21, 8,153,154, 60, 99,209,116,175, 81,126, 5, -251, 80,250, 51, 44,161, 85, 83, 89, 35,220,188,156, 0, 18,227, 7, 69,126,154, - 62,247,110, 20, 4, 97,172,131,181,163, 28, 80,227,212,249, 98, 54, 41, 64,105, - 2,196,210,199, 73,248,121, 53,131,175,138,244, 86, 81, 52, 47, 43,126, 37, 64, - 3, 51,243, 4, 27,149, 69,198, 37,227, 86,101,158, 58, 51, 75,179, 19, 70, 67, - 18, 30,192, 46, 46, 67,189, 20, 78,132,251,221,221, 48,122,210,226,108,249,217, -123,126, 82,149, 28,104,180,118,153,187, 45, 48,101,212, 30, 18, 76,133,108,232, -106, 88,205,148,236, 30,196, 2,142, 33,192,122, 6,248, 80,242, 11,167,168, 21, - 15, 47,142, 13,155,144,125,137,184,151,174, 44, 42,106, 81,100,138, 12,102, 52, -188, 17, 51,185,252, 16,181,173,162, 53,185,140, 56,254, 40,160,163,179, 61,169, - 34, 56,137, 50, 74,172,166, 10,128,251,141, 94,196, 89, 82,112, 79, 45,247,126, -195, 83, 80,203,117,207, 82,133,192, 10, 98,101, 61, 70, 31,156, 89, 50,254,168, - 96, 1,125,204,210,179,250, 48,148,238,123,251,207,165,181,147,222, 7,122,184, - 93,192, 47, 42,154, 40, 24, 21,199,134, 81,177,247, 85, 66,111,242,242,123,203, -166,137,168,150, 14,135,179,202,129,233, 55,126,196,121,188, 93,209,242,255, 74, -250,228,113, 3,194, 75, 5,167,165, 10, 55,200,114,182,203, 53,164,214,246, 92, -206, 49,115,159, 55,220,240,145, 49,243,134, 38, 67, 96,197,144, 54, 72,178, 17, -194,149,131,226,197, 96, 82,227, 89,249,104,185, 33, 84, 4,246, 60,102, 89,133, -113,197,222, 37, 16, 59, 79,185,241,219,166,179,252,182, 52,137, 59, 42,164, 7, - 84,232,156, 19, 77, 93,113, 93,122,218, 28, 37,108, 66, 15,166,117, 43,219, 32, -233,186,215,142,211, 56, 41, 20,139,219,119,125, 96, 80,232, 32,115,195,190, 99, - 78,254,148,228, 21,212,214, 91, 55, 5, 78,101,195,246,130,190,230, 9,246,178, - 79,140, 55,245,179,178,232, 54,242,225, 45, 23, 37,250,227,222, 45, 69,240,225, -148,176, 89,247, 80,144, 16, 84, 13,129,174,110, 86, 76,221,172,122, 38,145,140, - 33,195,194,229, 76, 68,139,158,155, 33,181,173,186, 39,168, 49,165, 83,196, 5, -168, 25,236,136,196,252,198,152, 11,210,135, 58,121, 35,171, 24,157,142,186,170, -164, 90,126, 7, 64,228, 75,250,118, 56,206,159,153, 71,212,146, 0, 24,220, 15, -175, 65,165, 74,172, 56, 36, 60, 90,191, 79, 53,239,155,106, 78,160,154,202,178, -180,127, 86, 96,136, 30,145,232,183,150, 75, 0, 4,186,116, 95, 37, 80,102,208, -234,100, 47,109, 14, 72, 36, 24,123, 47,175,193, 42, 68,215, 84, 99, 85,222,216, - 69,158,228,241,110,161,210, 71, 91,222, 47,188, 95,106, 58, 53, 58,217, 18,141, -243, 89,226, 62,194,185, 93, 17,222, 37,189,224, 68,199,150,253, 52,187,151,241, -221,163, 61,113, 83, 94,215,155,159,141,172, 67, 52, 41, 33, 13,204,249,198, 50, - 36,186,111,145,104, 85,196,244,166,232, 45,156, 57,241, 19,199,177,166, 26,225, - 66,193, 40,166, 97,150,232, 10, 47, 65, 53,189,168,141,243,237,163,146,226, 7, -221,175, 79,139,220, 79, 97, 88, 70,121,251, 12,146,127, 36, 77, 71,232, 41,252, -226, 58,160, 44, 77,201, 20, 42, 77, 37, 16,157,172,134, 42,199, 92,208,168,141, -202, 53,250,203,213,179,196,168,169,231, 7,225, 69, 48,169,120, 53,135,104,146, - 53, 64, 24, 66,198,210, 9,234, 55,187,161,103, 25,211,153, 53,245,182, 91, 26, - 61, 67,198, 62, 25,226,129,132, 31,158, 12, 56,142,109, 10,203, 45, 88,115,218, -122,122,128,217,198,224, 80,251,169, 8,118,162, 81, 32, 98,254, 54,109,226,253, - 83,233, 89,226,178, 60, 10,185,179,133,202, 66,175,120,174, 20,179,179, 67,127, -168,118,175,126,223,218,212,206, 67,208,164, 91, 58,115,130, 83,176, 25, 93,188, -192, 24, 52,127,214,215,120, 57,231, 22,169,198,185,166, 7,111, 96, 67,250, 88, - 49,114,106,102, 96,186, 51, 47,147,249,156, 84,193,150,164,230, 21, 76,184,128, - 28, 35, 7, 1, 28,117,231,153, 6,236, 46,222,160,185, 68,109, 45, 71, 20,234, - 66,109,153, 20,122, 48,182,200,243,160,240, 75, 83,129,169, 99,177, 5,193,201, -185,179, 67,204,130, 59,253,149,139,176, 58, 16,103, 32,185,236, 78, 39,230, 70, - 38, 13,239,206,173, 32, 31, 91,191,133,134,115,244, 95,176, 10, 97, 18, 66,112, - 33, 87,239,120,154, 98,145,184, 23, 94,106,161,194, 20,150,169, 49,253,240,167, - 89,162,226,185,161,157, 56, 68,110,163,238,235, 79,200, 66,174, 7, 19,111, 96, - 42, 97, 83,130,151,125, 68,196,164,160,157,121, 78,188, 76,205, 26, 25,211,128, - 78,152,128,174, 48, 4, 43,187,209,166,210, 1, 85,168, 52, 87,244,108, 39,100, - 27, 94, 33,117,140,238,148,118,171,254,226,205, 28,120, 29, 30, 82,178, 55,221, -194, 10,101,111, 80, 12,179,148, 52,144,192,181,112,146, 56,232,115,162, 12, 37, -137,179, 40, 66, 20,107, 25, 62,139,240, 59, 85,100,190, 97,150,203,102, 54,113, -221, 48,205,104, 9,153, 15,129, 25,178,221,125, 80, 40, 95,101,194,208,176,241, - 29, 60, 10,198,210, 66,214, 47, 32, 92, 50,181,170, 62, 69,151,244,128, 4,145, - 12, 62, 41, 19,251,107, 77,202, 53,149,221, 28,111,112,230,228, 62,114,119, 38, -252, 10,154,224,188,172, 17, 66,205,156, 40,196,166, 20,197,184,114,166,155,144, -100, 76,169, 73, 47,179,237,129,161,130,227, 86, 2,231,218,164, 20, 96,147,254, - 49, 33, 80,252, 84,166, 98,151, 36,215,137,148, 57, 52,184,111,164, 22,177, 57, -210,227,196,124,222, 16,101, 35, 65, 3, 64,220, 92,187,233, 28, 97,105,200, 79, -160,248,197, 6,148, 54,227,192, 85, 25,142,167,100, 69,223, 73, 34,121,137,129, -218, 58,165,178,134,121, 66,122,162,206,203,208,152, 99,232,200,112,174, 48,163, -205,114, 40,155, 35,207,202,155,127,175,187,131,129, 90, 75, 32,141, 87, 86, 53, -139, 16, 86, 20, 60, 68, 53, 10,169,130,149, 33,167, 27, 42,250,216,244,113,190, -131,186,154,111,185,180, 84,110,161,125,133,206,221, 24,160, 6,238,144,242, 61, - 85,129, 27,184, 87,243, 34, 63, 73, 87, 93, 11,255, 89, 48,152,224,195,196, 14, -124,183,157,109, 11, 33,210,232,255, 2, 49,218,118, 13, 88,182,152, 41,234,210, -192,187, 25,143,177, 69,164,114,198,224,177, 27,255, 28, 31,135,188, 68, 60,100, -230,249, 36,100, 6,124,127,101, 98, 30, 80, 39, 78,119, 22,113,103,127, 74, 57, -169, 66,174, 87,186, 72,247,128,204,194, 11,211,135,139, 24,125,160,242,107,162, -173, 31,224, 69, 11, 7, 45, 38, 46,240,193,215, 98,214, 78,167,148, 76, 74,218, -173, 11, 23,156,148,142,149,103, 40,150,218,242, 92,185,179,225,211,106, 42,127, - 58,168,247, 73,225,165,244, 81, 80, 91,196,156,191, 7,162,192,221, 49,249, 8, -231, 59,219,140, 76,204,247,120,219, 27, 25,248,177,229,138,228,214, 76,229, 77, -214, 8,116, 83,180,246,201,114,187, 73,197,250, 43,245,197,250,145,166, 85,243, - 51,209,102,111, 24,110, 11,190,169,207,230,135,194, 8, 35,162,114, 25, 56, 83, - 62,223,183,182,236,169,148,123, 60, 83,248, 84,139, 72,203, 19, 8, 31, 72, 54, -159,166, 74,169, 47,200, 94,184, 73,155, 87,232, 78,188,212, 64,110,181,155,100, -230, 71,197,230,235,145,147,120,198,170,147, 66,157, 62, 18, 17,222,174,232, 65, -170, 17, 12, 73,232,149, 47, 49,137, 55,185,249,184, 31, 12,101, 14,224, 73,144, - 65,136,160,252, 60,156,246, 71,235,251,233,249,148,207,249,136,116, 53,162,188, -213, 56,153,140,200, 16, 39,175,179, 84,180,180, 71,118,244,103,155, 92,236,152, - 22,172, 56,104,202,183,148,108, 61, 47,171,123,133, 20, 95,248,131,237,215,196, -153, 85, 98,111, 93,158,236, 87,114,168,169,135, 47,214, 24, 38,127,226, 11,213, -156,253,240,200,120,104,166,229,126,158, 43,134,151,162,149,219,121,112,242, 58, - 71, 22, 64,241, 8,210,231,155,254,124,197,217, 30,251,121,142, 82, 36,179, 68, -193,204,229,117,156,168,236, 76, 20,248,241,148,196,185, 20, 79,210, 73, 18, 98, -181, 64, 62,169, 34, 48,217,103, 27,195, 95,221,190, 45,171, 77, 41,196,180,107, -234,128, 33,143,184, 75, 30, 89, 81, 94, 96,221,101,187, 66,107, 11, 27,133, 50, -113,202, 38,194,149, 78,128,206,230, 34,203, 13,255,178, 8,223, 40,222,108,234, - 19, 90,147, 8, 63, 56,215, 81,237,108,172, 90, 11, 10,143,152, 65,110,166,111, - 56, 66,200,211,173,178, 15, 29,112,178, 5, 12,177,139,197,194,116, 20, 99, 73, -169,137, 70,154,180,217,140,214,195, 71,156,156, 77,145,157,230, 25,192, 3,246, -224, 90,128, 55,161,243, 88,172, 67, 24, 21, 74, 30, 81,160,241,243,115, 93,235, - 64,237,222,255, 13,210,216,145,226,252,112, 16,203,245,184,141, 62,193,255, 26, - 7,240,120,159,254, 56,153, 70,166,245,133,176,218, 93, 63,105,161,114,162, 44, -142, 36,198, 18,114, 15,155,181, 36,107, 95,163, 7,226, 65, 66,212,134, 85, 65, - 34, 59,241, 37,148,203, 13,187, 93,221,158,216,223, 66,172,241,160,182,130,211, - 7,245, 68,244,201,192,124,206, 47,238,191,178,146, 23,184,236,190,164,214,137, -177, 19, 11, 49, 99,255, 89,203, 51,153, 64, 73,237,212,252,237, 43,246,253,103, - 30,106, 36,132,124,222, 44,190,149,176, 43,105, 98,165,168,111,130, 60,175, 86, - 87, 15, 85,184,164, 86,211,175, 3,224,235,243,235, 85,133,119,120, 17, 1,109, -214,220, 51,239,108, 73, 84,185,139, 21, 32, 63,123, 94, 7,213,235,243,184, 97, -143,160,177,117,198, 83, 65, 33,196, 89,235, 68,107, 20,196,196, 34,169,176, 45, - 30, 4,223,250,118, 39,144,144, 67,141, 74,128,107, 28,163,152,228,208,154,245, -141,201,104,178, 60, 49,157,228, 3,208, 4, 95,212,161,112, 91,202,175,224, 51, -219, 48,237, 93, 80, 8, 3, 15,222,109, 53, 17,197, 82, 96,253,221,150,244,247, -133,163,190,182,134, 71, 33,108, 39, 9, 76,244, 77,163, 22, 35, 43, 70, 80, 59, -130,115,230,149,105, 70,213,206,145,150, 28,115, 61,199,234,193,203,241,142,222, -116,160, 35,243,123,190, 22,103,166,161, 49, 1, 12,190, 35,228, 49, 11, 88, 82, -111,145,202,197, 94, 74, 6,214, 32, 23, 88,181,200, 66,106, 40,121, 7, 46, 36, - 49, 23,185,140,182,232,143,233, 38,220,210,248, 74,184,220,186,189,100,177, 84, -138,173,156, 7,125,113,141, 15, 12, 83,184,124,111,220,189, 24,215, 66, 36,214, - 87,233, 8,194, 70, 54,102,175, 61, 44,194,233, 5,140,139, 28,165,152,114,211, -242, 4, 96,162, 43,186, 26,161, 35, 15, 63, 42,156, 44, 55, 11,145, 35,130,121, -119, 41,116,102,188, 66, 99,102,233,227,132,220,199, 8,135,158,216, 31, 88, 23, -182, 25, 81,191,241,103, 18,175,222,120, 18, 14, 44,120, 30, 31,152,125, 86, 52, - 51, 90, 41,190,187,100, 59,207, 75,232,189, 2, 5,222, 94, 96,214,244,181,174, - 80,100, 87,225,197,194,203,104,209, 59,111, 77, 92, 97, 7,102,137,117, 37,153, -129,155,184,225,177,213, 99,190, 2, 64, 16,137, 98,164, 83, 0, 67,218,206,254, -207,249,128, 78,171,188,221, 30,189,233, 98,127,183,234, 94, 14,236,118,218, 42, -184, 33, 86,222, 97,142,210, 87,162,190, 92, 38,153, 96,215,234, 56,114,225,130, - 22,108,178, 29,153,160,163,133,170,187,170, 19,198,131, 50,152,253, 4, 41,246, - 72, 45,240,133,125,131, 1,120,133, 5,153,176,163, 6,225, 80, 66,146,241,162, - 49,135,101, 2, 17, 38,106, 58,245,123,153,139, 27, 77, 27,145,153, 35, 65, 4, -154, 8,101,239,141,140,249,140,124,133, 31, 93,191, 70,225,208, 62,131, 78,230, -104, 75,161, 61,141, 85,199, 52,101,251, 24, 84,223, 34,204, 47,130, 13,135,124, - 63, 45,243,231,207, 88, 38, 77, 71, 29,253,243,234,174, 61, 24,210,172,111,123, - 99,124, 69, 72,207,214, 10,171, 18,116,196, 87, 39,151,246,141,189,115,178,160, -185,118,197, 89,160,154,137,123, 92,242, 66,167,128,246, 84, 62,129, 41, 35,233, -242,251, 47, 30, 25, 84,115,155,119,244,155,238,248,182,233,180,162, 42,249,183, -110,159, 91, 51,229, 89, 50,251,195,136,108,105,146, 94,131, 93, 29,248,123,140, -162,196,252,114, 81, 38,113,192,172,184,188, 90,131,206, 51, 68,174,132, 91,151, -175,116, 13,251, 52,255,116, 86,103,100,194, 55, 9,149,175,244,105,141,121, 96, -208, 51, 95,160,214,155,154, 46,242,239, 72,138,145, 62,242,146, 49,162,224, 50, - 23,121,109,169, 81,225,235,121, 16,224, 28,180,251, 34,157,118, 3,248,212, 97, -229,194,108, 11,144,120, 77, 21, 80,212, 92,209, 73,161,138,149, 98, 58, 75,203, -131,150,174, 27, 72,213,178,144,225,109, 64,142, 53, 35,129, 99, 55,178,151, 43, -129,246,111,252,254,208,166,128,150, 40,148, 1,145, 25,248, 14,140, 10,113,153, - 53,155,161,239, 70,121,155, 86, 78,251, 44,123,165,174, 94,176, 49, 66,151, 37, - 26,163,125,140,146, 9, 37, 25,159, 15, 43,215,136,164,117,102,221, 16, 37, 29, -124,101, 43,171,218,169, 98, 39,150,121,198,219,237,213, 21, 38,109,195, 46,147, - 89, 0,176,128,164,157, 34,232,185,166,197, 79, 86,123, 34,203, 37,237, 81,243, -185, 8, 21,245,108,255, 19, 68,164, 5,150,134,234,130, 24,105, 33,173, 60,223, -183,192, 47, 60, 21,106, 93,173, 59,125, 56,129,242, 33,148,197,249, 39,203, 13, - 59,165,113, 52,189, 85,156, 47,204,181,236, 84,110,190, 53,190,234, 53,134,110, - 72,245, 34, 69, 82,196,107,222,255,114,117,149, 77, 44,116, 54, 10, 44, 38,100, - 77, 68,120, 43,105, 37, 22,142,193, 49,254,193, 7,234,113,156,154,141,211,202, -240,255,239,205, 81,109, 58,206,148,142,241,216, 70,238,159,114,250,238, 83,104, -102, 23,216,126,196,174,133, 22,155,231,243, 61, 32,252,205, 78,208,186,238,184, - 91, 69,167,171, 41, 17,218, 18, 11, 65,152,225,117,209, 66,216, 55,170, 20, 25, -133,147,110,250,161, 83, 69,241,100,231,152, 22,220,174, 71, 15, 88, 26,140,173, - 95,225,203,131,121, 40, 64,255, 7,206,222, 99, 56, 35, 16,111,208, 19, 44,209, - 27,130,159,112, 53,232, 6, 76, 90, 52,128, 97,217,227,141,204,183, 28, 35,168, - 48,100, 18, 26,155, 45,140,219,110,175, 50,102, 28,185,206,161, 41,211,131,222, - 63, 31,232,122,138, 38, 6, 1,192, 33, 94, 40,226, 26, 42,190, 18,182, 16, 69, -129, 52, 89, 6,168,129, 14, 45, 50, 30,178,212,130, 2,248, 18, 78,227, 8,164, - 2,203,235, 40,101,203,207, 6, 71, 25, 89, 60,191,192, 52,163, 53,176, 39,181, - 26, 50,228,241,248, 29, 57,106, 55, 47,151, 2, 19, 20,193,168, 72,140,170,191, -140, 86,189,103, 99,131,190, 15, 3, 76,205,128,212,124,239,114,137,238, 24,124, -118, 22,221,197, 11,248,118,218,163,187,135,168,128, 19, 60,135, 19, 13,146,107, - 52,177,163,101,235,210,116,149,148,237,167, 89, 66, 65,203,154,191,164, 41,102, - 0,254, 84, 8, 73, 14,102, 29,114, 25,156,121, 89, 89, 56, 48,131,118,199,226, - 64,109, 69, 17, 55,104,227, 67,152,105,204,129,242,179,246, 52,224,243,195, 95, - 73, 67, 10,187, 68, 26,105, 1, 14,118,127,126,130,171, 41,127,131, 32, 84,109, - 7, 18,111, 13,225,240,231, 17, 52,218, 74, 46, 3,113,222,129,204,173,110, 34, - 13,196,104,122, 30, 52,250,221, 5,164, 63, 38,112, 93,196, 19,127,155,193,195, -235, 7,176,123,158, 90,243,176, 71, 34, 57,104, 69, 99,184,155,132,140,130,132, -231, 13, 24, 71,129, 33,105, 5, 51, 37, 42,155,193, 91,203, 7,161,123,159, 90, -243,176, 70, 34, 57,106, 69, 99,152, 45,220, 72,179, 98,180,241, 6, 1,249,166, - 0,102, 53,155,177, 50, 2, 99,116, 63,151,171, 27, 43,179,133,159,221,114, 66, - 2, 66,179,163,187,230, 81, 32, 32,227, 3, 16,173,208,242,193, 74,143,204,187, -140,247, 11,204,191, 27, 50,144, 28, 5,252,206,169,213,148,228, 55,157,106, 71, -196,200,138, 7,160,221,124,133,227,217,144,197, 8,128,213, 42, 76,195,140, 75, - 4, 0,210,189, 75,252,239,200, 42, 80,132,190,134, 0,170, 13,102,166,186,208, -246, 30, 17, 84,216,168, 30, 47,193,201, 74, 74,224,240,167,145,104, 28, 78, 85, -121, 96,134,225, 2,243, 17,112,151,170, 39, 39, 55, 16,136, 82, 87,159, 26,160, -181, 67, 3, 25,252, 38, 39, 17,199,169,211,129, 15,252,184,102, 79,195,196, 52, - 12,171, 41, 60,200, 61, 1,216, 84,121,129,193,226,131, 81, 44, 2,166,185,222, -160, 3, 37, 92,128, 13,201,173, 70,237,173,182,164,129,144, 87, 45, 25,198,115, - 90,123,150,177,100, 20,230, 9,119, 45,184,152, 9,148,188, 50, 56,168, 2, 94, - 37,191, 69, 35,115, 0, 8,252,115,115, 3,120,197,158, 21, 96,164,225,233,150, -220,173, 85,179,164, 25,193,136,236, 47, 64,219,170, 82,128,130, 77,209,238,232, -131,203,243,198,110, 55, 66, 42,242,113,244,151,111, 87, 42, 64,120, 79, 88,214, -159,167,172, 38, 88, 66,171, 44,168,112,182,213,138,196,196,165,209, 35,209,117, -102,189,149, 23, 9,160,199,236,139, 2, 48,136, 84, 16,100, 3,219, 2,252, 88, -152,201, 13, 74, 98,203,213, 84,192,130, 19,204, 66, 48,206,139,234,180, 60,111, -112,128, 11, 18, 2,131,238,110, 84,228, 63, 65,161,102, 49, 66,214, 2, 81,185, - 51,212, 37,157, 42,124,203,222, 54, 44, 98,128, 15, 28,134,173,141,208,194,239, -145, 25,141,200,218,187,223, 48, 0,214,194,237,163,145,206,104,219,204,191, 19, -147,119, 29, 74, 46,174,191, 34,106,152,136,229, 32, 67,160,182,108,162, 92, 91, - 56, 82,214,244,194,181,104, 39,193,173,180, 35,249,160, 67,249,179,209, 42,213, -179,225,226,242,208, 46,238,127, 75,154,234,160, 97,142,103, 24,236,190,224,172, -207,105,134,234, 2, 92,210,140,125, 15, 68,223, 33,236,246, 49, 1,141,191,242, -191, 17,180,175, 43, 57, 15,212,245,252,124, 19,248, 69,103,114,250,229,146, 17, -131, 6, 85, 53,131, 84,145,254,121, 50, 30,252,136,199,144, 57,125, 69,110, 65, - 80, 21,250,161,211, 41, 83,247, 60,146, 17, 20,187,208,134, 55, 83, 73,209,159, -201,177,155,143,166,145, 28, 6, 47,197, 18, 41, 96, 16, 88, 18, 5, 45, 91,199, -128,246, 49,146,100,120,101, 96,164,129,115,228, 89, 93,132,235,192,209,106,131, - 1,149,127,237, 23, 87,175, 25, 54,175,168,177, 36,198, 82, 59, 20,185,211,202, - 29,185,192,146,170, 77,186,138,104,247, 49,104,209,218,255,233,168, 71, 52, 0, -133, 34,197,111,192,200, 99,101,123,142, 62, 95,202,194,242,160,181,143, 90,209, - 84, 57,102, 32,159, 3,244,219,188,147,153,175,110,252, 15,242,106,159,223, 34, -126,204,182,202, 32, 4,225,211,111,196,166,246,140, 32,193, 5,132,242,131,212, - 26,124, 73,189,161,204,205, 24, 87,200, 62,238, 21, 5, 29,233, 94, 75,201, 55, -164,144,225, 73,168, 54,242,126, 87,152, 53,147,201,123, 26,117, 5,229,121,252, - 35, 13,111,191,158,146, 96,209, 32,172,237, 6, 76, 60, 59,235,210,118, 82, 67, -238,248, 47, 64, 78, 27, 62, 96, 56,145,119,213, 90, 48,112, 13,154,153,242,153, - 56, 44,180,193,122,247, 69,223, 73,246, 10, 63, 88, 43, 32,172, 34,132,130,173, -169,239,186, 67,118, 63, 75, 55, 61,104,189,134,117,131,120, 51, 3,146, 61, 47, -214, 89,192,243,180,149,119, 95,254,248,186,197,210,196, 23,101, 0,165, 54, 64, -190,155, 87,138, 19,106, 24, 99,163, 61,208,190,219, 91,107,244,129,220,215,157, -246, 95,155,177, 98, 5,196, 98,172,201, 31,122, 87,244,177,108,224, 34, 9, 30, -235,210,139,249,140, 55, 86,212,148,252,196, 43, 44, 77, 94,167,180, 84,206, 77, -180, 51, 37,234,154,213,214,169,170,234, 93,152, 42, 12,253, 1, 1, 6,186,174, - 40,192,146,209, 3,116,103,175,165,216,226,239,100,228,234, 41, 34,203, 72,139, -238,123, 97,229,166,229,180,226,143,148, 45, 48,171,131,235, 42, 10,211, 85, 0, - 2,167, 0,160, 0,163, 0,174,101,154,155,247,111, 68,110,134, 22,240, 25,113, - 30, 49, 46, 57,186, 66, 84,160, 10, 26, 99,154,205,231,207, 38,242, 9,101, 17, -231,215,106,152, 14, 56,203,244, 73, 37, 34, 22,141,252,214,121,179, 92, 79, 54, -120,130,181, 21, 97,217,238, 68,114, 34,144,180,148,247,103,145,253,104, 36,105, -106,109,239,208,254,139, 23, 48,198,150, 7,128, 62,123, 24,171,238,163, 80, 63, -155,223,207,193,252, 33, 12,187, 91,213,239, 88,197, 28,103,239,119,114,180, 25, -179,247, 90,214, 83, 35, 25,140,101, 34,214,146,160,219,247, 29,156,235, 10, 16, -165, 34, 43, 89, 81, 42,148, 10,165, 34, 43, 89,201,170, 66, 85,168, 23, 37,141, -117,192,180,120,244,237,108, 19,169,123, 25, 52,209, 16, 23,128,137,226,205, 56, - 57,122, 89,171, 63,108,222,176,175,238,225,207,125, 71, 83,247,174, 22,191,218, -134,223, 85,223,215, 98,112, 98, 32,212, 39, 84, 71,127, 14,226, 45,229, 36,165, -164,168,138,114, 41, 41,159,100, 53,185,156,156,154,222, 70, 40,227, 48, 21,105, -233,175,180,251,212,182,133,218,209, 19,154,207,140, 63,238,150,136, 15,221, 93, -179,223,218,122,228,145,244, 24, 70,119, 57,215,163, 72,224, 18,130,106, 89,149, -154,160,154, 77,131,141, 79,124,221, 59, 26,157,109,135,243, 14,119,195,217,221, -178,181, 53,142,168,220, 64,186,251, 68, 77,156, 1,227, 64,185,128,240, 72,175, -251,185,163,109,222,239, 10, 22, 57,226, 72, 47,254, 92,243, 47,205,225,115, 95, -186,106, 28, 23,124,181,255, 39, 65,201,155,206, 69, 74, 18, 53,164,205,140,126, -189,203, 73, 36, 18,244,205, 71, 40, 93,115,195,167, 38,187, 40,213,137,181, 71, -176,234, 9,225,252,160, 20,178, 65, 93,131, 62,211,161,150,183, 60, 21, 94,139, -121, 42,168,102,250,237,165,205,167,171,214, 30, 90, 4, 97, 18,169,146, 4,173, -140,115,181,122, 75, 88,143,109,217,166,161, 16,245, 61, 28,107,197,135,171,218, -156,241,247, 40,231,124,122,130,191,202, 73,138, 75,144,154,200, 73,105, 88, 34, -161, 88,110, 35,115, 45,195, 94, 51, 78,205, 90,192,128,139,150,213,220,138,213, - 76,246,142, 2,161, 36,113,131,236,253,234, 24,198, 92,220,191, 11, 31,207,227, -123, 80,226,207,121, 72,211, 60,204,123,211, 39,172, 31,195, 31,136, 62,232, 54, - 74, 69, 86,238, 16, 8,134, 82,145, 85,133,202,234,221, 30,161, 79, 40,185, 22, - 59, 66,215, 99,135,191, 14, 80, 84,224,113,236, 47,155,120, 60,158,247,120, 96, -198, 88,107, 20,122,186, 48,187, 68,173, 50,220, 31,224,248,235,197,233,104,164, - 55,188,113, 48, 86,239, 83, 64, 88, 45,206,246, 34,116, 45,216,251,248, 44, 54, - 95,216,178,154,246,151,206, 56, 86,143,215, 69, 77,114, 68,253,197,251, 14,125, - 90,124, 90, 46, 8, 22, 4,127,159, 7,217,252, 71, 39, 55, 96, 62,168,239, 54, -231,252,249, 26, 18,113,238,199,107,194, 55,113, 77,115, 0,127,250, 1,140, 5, -172,228,186, 85,175, 36, 0,160, 0, 99,129, 0, 0, 12, 12,139, 36, 18,154, 56, - 78,244, 48,143,248, 1,236,245, 89, 11, 34,212,209,251,114,141,234,157,188, 52, - 17,246,156, 66, 76,159,148,148,172,129,244, 60, 33,237,235, 68,228, 15,209,195, - 8,248, 34, 21,231, 83, 38, 76, 64,218, 28,119,173,111,185,102,181,144,122, 41, -207,186,184,215, 49,190, 66, 85,227, 62,166,229, 33, 85,161,104,253, 42,101,115, -192, 1,169,184, 53, 54,240, 26, 85,159,216, 95, 9,207, 58,119, 47, 18,161,203, -244,233,135,169, 5,218,227, 35, 25,126, 0,231, 65,134, 54, 70, 25,144, 92,104, - 78, 39,142, 2, 59,244,203, 27,178, 16, 5,142,187,242, 98,131, 47,139, 67, 27, - 1,116,162, 14, 85,224,227,123,223, 70, 82,200, 41, 60,207, 70,134,113,134, 66, - 52,109,199, 63,208, 56, 73, 0,235, 19,108,201,202,195,226, 83, 56,240,129,154, -170,233,157, 29, 33, 82, 45, 14,167, 59, 88,187,214,181,140, 33,222,152, 4, 1, -234,150,117,195, 22, 75,173, 66, 5, 41,141,239,255,251, 94,229,115, 89,125, 55, -101, 65, 72, 2, 42,250, 5, 43,230,246,182,163, 90,150,129, 86, 45, 72, 93, 63, -122, 5, 22, 60, 66,167, 7,140, 32, 16, 28, 47, 24, 59, 91, 58, 64, 9,132, 26, -177,136,160,138, 55, 49, 83,226,160,147, 75, 27,240, 20,159,136,207, 51,249, 50, -125,182, 14,208,125,204,171,195, 20, 74,124,254,132,252,148, 34, 84,140,138,163, - 41,246,131, 31,130, 43,214, 42,125, 78, 0,204,209,250, 24,244,153,208,139, 22, -243, 60,232, 95,180,124,179, 13,111, 42,157,190, 16,173, 16, 30,254, 25, 13,182, -171, 10,227,132,130, 50,243,237,154, 24, 32,105, 47,177, 31, 80, 12,195,233, 83, - 84,201,103,237, 43,114,250,200,124,142, 21,136, 93,210,236, 6,128,114, 14,230, -234,212,120,197, 80, 70, 39, 23,191, 67, 23,212, 37,248,191,204,132, 71,124,129, -233,135, 72, 71, 11, 19, 62,201,150, 1, 15, 25,135, 3, 45, 48,142, 33, 6,145, -246, 49,145,230,174,254,175, 85,106, 75,133,239,201,186, 18,187, 37,148,189, 70, - 30,254,124,238, 58, 55,105,225,162,107, 62,194,141, 61, 63,205,123, 37,163, 65, -189, 78, 27, 54,101,119,236,121, 60,217, 21, 64, 8,214,249,206,115,188,231,225, -121, 71,127,230, 20, 58, 0, 81, 39, 40, 55, 13,252, 16,105, 59,185, 10,119, 25, - 69,102,153,162, 44,244, 1,202,227,128,244,130,106,230, 75, 62, 45,242,184,126, -125,230,174, 65, 71,212, 9,244,234, 7,120,179,177,197,105, 41, 17, 42, 36,189, - 73, 39, 90,231,246,126,195, 25,118,219,110, 91, 97, 39,103, 35, 65,238,181,127, - 96, 82,167,219,160, 88,114, 34, 78,152, 66, 48,208, 26, 39, 24,173,187,203,137, -238,125,210,252,226,255, 86,220,136,177,143, 20,131,148,233,126,195,156, 64,150, -186,192,199,236, 39, 95,192,244,166, 44, 4,183,141,160,176,218,102,239,174,222, -168, 43,175,239, 96, 8,179, 23,225,158,133,193,206, 71, 18, 11,141,215,163,127, -223,138,248, 3, 85,172, 5, 3, 80, 24, 36,218, 37, 90,238, 61,231,195,161, 7, -184,236,105,222, 8,188, 80,178,211,145, 15,106,157,167,136, 94, 49,135,116,143, -189,153, 41,232,146, 46,100, 64,180,187,213, 32,174, 85,238, 36, 31,250,244,160, - 9, 2,165,242,168,253,226, 17,146,185,153,131,230,219,189, 10, 46,109, 65,170, - 24,149,211,104,192,127,214,212,173,145,252,188,233, 48,237,220,209,158, 90,177, -110, 7, 15,116,148, 65,176,160, 60,184, 17,151,245, 56, 80, 64,221,109,111,102, - 51, 29,170,127, 77,147,238, 5, 88,250, 1, 51, 27, 73, 70, 41,166,124, 7, 82, - 46, 37,185,169,162, 63, 5, 54,170,141, 6, 86, 14, 62,197,175, 91, 47, 10, 43, - 4,179, 5, 83, 34,107, 83, 32,234, 49,209,209,242,245, 61, 30,185,161, 44,238, -238, 80, 53,253, 39,236,227,107,113, 96,175, 48,146, 10, 67,236,181, 83, 38,155, -227, 88,166, 95,146, 28,249,181,132,104,111,216, 35,201,145,210, 28, 97, 73,223, -105, 97,183,147,175, 11,171,108,133, 75,106,101,135, 33,181,190,116,173,169,251, -134,236,155,166, 51,234,251, 50,117,140,116, 74,193,106,158, 42,113, 10,115, 8, - 26,133, 32,113, 33, 93, 77,189,174,194,235,171, 3,113,246,244, 7,175, 30,191, - 10,102, 23, 83,181, 62,240,142, 66,238, 97,224,228,206,146, 98,177, 82, 99, 73, - 37, 83,109,168, 20, 52, 51,100, 49, 7, 60, 79, 70,159,214, 12,241, 4,234, 33, -194,203,110,197,235,125, 7, 13,217, 16,209,229, 92,228, 8, 25,157, 11,233, 73, -154, 87, 4, 10, 6, 84,101, 10,145,105,247,211, 58,195, 5, 34,248,219, 24, 0, - 80, 4, 18,190,152, 24, 8,224, 1,197, 85, 60, 74,100,227, 5, 48,209, 68,134, -242, 64, 97, 47,192, 74,230,148, 83, 56,228,138,211, 92, 37, 87,123,192,116,101, - 15,184,199,166, 45,158, 73,220, 89, 87, 86,191, 70,112,196,174,245, 69, 69,167, - 23, 13, 59,231, 94, 23, 97,175,141, 1, 85, 46,127, 10,198,168,134,170,212, 27, -205,253,252, 82,127,217,112,148, 0,160, 33, 87,182, 47,143,224,151, 52,151,118, -121,138,129,241,145, 84,215, 70,194,177,252,166,124,164, 49,115,232,115, 54, 11, -168, 7,176,119,192,237,158, 89, 56,149, 65, 12, 97, 37,204, 46,176,244, 88,125, -142, 26, 76,225,154,159,144,237,112,221,182,188,251, 95, 71,221,194,125,193, 17, -236, 15,217,223,225,245, 41,217, 65,167,226, 35,147, 75, 95,165,247, 90, 13, 68, - 71,192, 27, 40,157,215, 93,255, 12, 40,149, 97,138, 80,148,147,202, 13, 51,136, -254,155, 2, 24,206, 88,114,138,150, 10,225,185, 15,179,159, 86, 81,224,142,194, - 85,162, 67,210,197,165,158,173, 74, 46, 53, 7, 60,205,138,112, 30,183,135,228, -247, 19,159,213, 88, 40, 75,254,233, 50,168,198,211,238,242, 61,247,121,134, 47, -160, 92, 4,206,229,248,126, 13,127, 57,171,186,104, 20,127,231,112, 38,200, 76, -191,225, 78, 96,222, 45,114,160,212,170, 5, 47,131,224, 78,114,181,244,195,129, - 92, 21,178,141,121, 92, 59,159, 47,129,227,218,129,130,210,193,210,176,115,114, -240,233,215, 5,234,118,184, 46,156,110,207, 16,235, 66, 73,108, 38, 1,158,200, -131, 69,119,198, 1, 95,174,145, 93,237,154,111,245,208,174,148,201,121,185, 89, - 10,245,212, 79, 86, 67,204,153,241,111, 91, 31, 43, 16, 83,144, 36,171, 51,241, - 36,150,138,122,140,189,241,186,226, 11, 37, 33,163,220,244,209,102,189, 31,202, - 66, 76, 85,175, 55,253, 59, 46,209,135, 82,221, 27, 86,128,190, 70,199,224,206, -215,161,103,239,253,244, 77, 5,189,187, 94, 84, 7,147,144,247, 24,232,184, 17, -132, 55,187,213,230,156,187,114, 78, 56, 41,136,246,175,131,219, 38, 47,187,147, -108,181,240, 20,246,216,207,115, 17,140, 23,135, 8,179,235, 70, 98,143,229, 37, - 10, 34,118, 36,164, 96,100,171,102, 22,223, 52, 83,111, 74, 82, 61,168,254,103, - 65, 4, 58,212,131,202,151, 56,120,167, 62,152, 63,103,148,206,136,120,187,176, - 65, 12,128,168, 69, 87,137,113,138,109,118,119,167, 54,106, 14, 42,171, 63,198, -107, 65,192, 85, 41, 29, 69, 98, 97,212, 60,158,200, 35,128, 43,129, 8, 81,226, -203, 41,147,193,173, 98,193, 70, 92,150,233,126,203, 39, 10, 97,129,245,144, 31, -157,186,177,152,111,143, 43, 90,119,175, 3,174, 7, 80,181, 15, 89, 37, 45,242, -155,228, 28, 34, 79,210,124, 61,189,204,126, 53,209,232,232,195, 83,221,163,152, - 9,185, 94, 81,182, 61,139,247,156, 84,115,253, 21,207,201,199,129,146, 10, 89, -187, 12,195,229,145, 43,139,154,115, 76,223,168,133,107, 59, 90,247, 17, 97, 68, -237, 81,212,177,233,125,215, 65,160, 52, 93, 4, 8, 70, 36, 55,132,128, 24,114, -195,104,182,235, 88,222, 20, 95,143,173, 37, 87,213,197, 92,236, 8, 52, 98, 97, - 17,234, 1, 61,241, 87, 95,108, 50,103,135, 76,133, 74,167,243, 11,115,245, 54, -226, 25, 20,152,193,212, 19, 47, 99,255,104,179,210,254,114, 2,193, 20,112,254, -207,102,179, 89,116,249, 15, 8,116,169, 63, 26,130,148, 15,232,110,220,159,229, -157, 26, 12, 18,254,235, 66, 85, 14, 88,155,226,110,107,140,145, 39, 32,128,243, -149,148, 48,148,178,207,209,127, 3,102,246, 26, 27,200,170,115, 34,118,161,175, -101,212,172, 65, 43, 29,210,162,138,252, 76,213, 22,206, 28, 67,135,224,154,232, -176, 26,215, 90, 3,188,212,180, 75,130,185, 23, 71,126, 39,123,223,213,194,175, - 92, 0,189,231, 53,228, 68,118,117,219, 13,123,216,183, 43, 96, 63,234,200,113, -178,104, 72, 7,179,193,238, 7,149,160,126,135, 56,244,145, 69, 76, 16,191,147, -152,165,208,178,253,149,192,199, 72,183,228, 34, 45,179,237, 33,119, 42, 64, 16, -121, 94,243,100,137,105,223,198, 28,164, 6, 96, 92,222, 85,111,132,204,255, 61, -229,120,194, 5, 97,206, 17,166,221,212,101,246,164,126,169, 59,145, 15, 34,254, - 51,130, 32,251, 91, 31,111, 97,143,192,117,184,154,204, 96, 19,201,170, 77,108, - 58,157,183,212,122, 15, 96,134, 14,189,201, 50, 85, 27,231,235,137,144,134, 87, -164, 23, 13, 28, 82,155,210, 96, 9,123,232,237, 36,193,144,204,160,135,127, 53, -141, 90,137, 14, 62,166,165,159, 91, 17, 16,228,153, 72, 40, 8,103,168, 39,239, - 40,158, 51,219,242,138,182,195,160,102,230, 21, 11, 17, 76, 34, 69, 19,208,142, - 23,252,223,166,252,142,197,158,167,118, 44,161,212,179,194,175,178, 73,143,155, -212,248, 91,185, 89,153,101,224,143,216,203, 11, 63, 37,169, 3,110, 55,182,109, -193,188, 91,252,137,169,154,182, 38,189,153,199,225, 92, 11, 10, 4, 93, 83, 96, - 53, 19,164,151,247,252,171,175,183,218, 29,237,181,217,127,107, 35,190,145, 52, -199, 49, 33, 15,111,184, 42,205, 23,245,140,110, 98, 83,232, 96,216, 10, 30,174, - 42,126,250,137,166, 99,112,164, 43, 56,210, 38,105, 49,246,111,196, 3, 82, 12, -215, 12, 38,152,193, 41, 50,252,184,142,150, 99,196, 24,192, 61, 33,190,220,208, -153,120,104,106,175,143,228, 93, 8,158,174, 7,138, 57, 29, 75, 54,130,161,139, - 51,157, 3,202, 59,253,227, 26,169, 11,102,211,182, 37,170, 1, 62, 49,168,104, -124, 59,239, 13, 6,222, 78,233,110,121,166,147,107,107,108,210,197,237,252,190, -193, 80,133,238,240,233,186,223,247,236,223,213, 58,144, 91,212,117,241,183,228, - 5, 17, 76, 24,235,216,234, 19,128,200, 93,234, 1,108,104,202,139,147,232,126, -110, 48, 59,223,108, 81,242,112, 29,226,140,165,123, 91,169, 79,171, 3, 81,218, -234, 11,172,207, 98,156, 32,147, 49, 28, 61, 72, 51, 25,118,250,214,156,114,219, - 70,171,148,107,129, 38,147,227, 3, 67, 13,181,237,154, 88, 68,148,238,184,166, -200, 10, 15,119,102, 26, 8,230,195,199,164,197,150, 41, 95,205,147, 2, 9,204, -199,225, 57,194,224, 64,149,202,153,146,187, 54,170,201,135, 35,114, 35, 81,155, -171, 79, 47, 40, 46,205,177,166, 1, 12, 54,169,172,233, 95, 25,237,177, 32,148, - 40,181,212,175,235, 63,125,199, 52, 80,203, 81,173,150,193,255, 19, 1,157,247, - 16,166,124,152,194,109,125,244,199,147,145, 79,238, 16,248,121,253, 80,164,183, -195, 91, 13,107,187,229,253, 50,205,193,199,173,144,162,141,147,212, 48,235,231, -146,254,190, 28,195,103,162, 87,169,247, 19, 72,164, 17, 72, 9,151,141,197,202, -185, 12,163, 71, 57,234,124, 68, 5, 57,118, 12, 99, 53, 63, 37,230,167,238,195, - 56,166, 1, 11,130, 51,203, 30,173,170, 98,102,171,112, 94,154,195,123, 39,197, -195, 19,235, 56,124, 50, 6, 52,164, 77, 6,211,169, 78, 81,242,250,253,200, 30, - 12,198, 36,228,107, 81,103,223, 78,233,178,128, 93,102,157, 85,112,177,125,196, -108,152, 8, 29, 73,233, 72, 72, 55, 32,222, 28,123,147,142,120,251,124, 67,124, - 76, 86,181, 47, 52,171,152,159,231,146, 49,219, 73, 62, 62, 17, 47, 71, 12, 44, - 31, 69,122, 66,191,160,193, 30,116,191,165,171,100, 21,204,204,253,254,212,223, - 31,173, 54,241,110, 61,240,190,249,114,194, 8,167, 20, 77,102, 68, 67,236, 78, -225,116,142,163,220,148,103,187,155,224,132,136, 59, 80, 84,122,222,190,187,110, - 69,237,225, 49,133,119, 31,142,113,166, 29,170,151,189, 5,206,178, 34, 33,181, - 92,137,191,149,130, 81,154,244,199, 56, 74,204, 38,118,214, 57, 9,195, 91, 50, -167, 51, 95, 68,103,185, 76,243,184,205, 97,132,220,196, 45,145,234,130,146,166, - 9,196,218, 51,154, 48,155,189,153, 2,189, 26, 24,112,138,122, 22, 81,245, 5, -208,162, 29, 55,204,184, 51,182,220,144, 84, 40,119, 98,121,226, 47, 36,226, 30, -163,226,157,245,122,119,210,128, 42, 41, 48,175, 6,231,112,236, 53,250, 94,108, -223,111, 14, 58, 13, 21, 73, 12, 43, 64,158, 37, 57, 87,136, 47,247, 57,180,191, - 12, 97,120, 5,122, 15,244,160,142,175,159, 81,144,101,171,180,175,122,173, 9, -145, 59, 71,248,144, 22,117,227, 87, 5,230,133,145,199, 13, 37,193, 35, 99,112, - 89,173, 32,173, 82,232, 71, 96,226,104, 31, 6,254,146,108,248, 61, 46, 50, 95, -215,146, 26,211,204,241,140,173,134,228,237,167,221, 71,166,145,109, 34, 79, 82, -203,248,114,168, 64,102,190,238, 84, 76, 95,137,157,159,194,200,112,150,220,178, - 61, 92,244,233,125,228, 58,114, 71, 40,170, 41,239,138,115, 41,114,117,143, 54, -224, 86,132,163, 67, 58,250,222,207, 78, 10,144, 33,127,237, 41,194,172, 0,133, - 44, 71, 17, 61,232, 25,220, 89, 71,189,218,135,229, 73,137, 89, 65,180,204,127, - 64, 28,198, 29,159, 6,183,162, 81,129,175,169,103, 56, 38, 39,138, 82,228,126, - 15, 4, 6,252,129,221,158,169, 97,223,103,120, 12, 60, 7, 13,175, 16, 76, 83, -212,236,135,205,133, 59,222, 51,207, 48, 4,233, 26,216, 38, 50,230,239,117,106, -133,223,254,104, 80, 69, 48,232,255,235,224,118,109, 83, 76,130,114,197,123,147, - 87,228, 69,181,118,210,149,120, 28,149, 36,177, 12,132,237, 22,180,234,162,215, -250, 27,240,159, 14, 50, 25, 71,137,134,146, 70,147, 33,211, 64, 76, 47, 68,156, - 84,159,240, 52, 90, 4, 44, 60,162, 60, 88, 45,105,167, 91,120,241,172,238,109, - 71,179, 49,222, 9, 16, 75, 35,125,120, 87,149,251, 98, 71, 88,159,183, 85,255, -248, 15,121, 13, 6,115, 25, 31, 80, 91,126, 63,187, 80,125, 7, 40, 64,212,182, -255, 17,159,229,118,172,245,196, 20,143,230,255, 41,235, 56, 49,128,118, 54,136, - 38,197,118,132,180, 22, 19, 59,188,126,173,115, 47, 62, 71,236,237, 41,220,170, - 83, 2, 55, 46,141, 90,197,200, 68, 56,103, 30, 72,191,154,203,159, 8,107,237, - 48, 66,216, 80,135, 75, 71,249,225,117,159, 98,139,183, 81,155, 30,160, 18,113, - 25,166,127, 27, 88, 34,249,150, 61, 15, 64,115, 74,128,155,170,152,193, 74,140, -113, 65, 90,150, 77, 38,191, 95,154, 63,199,208,132,229,110, 26,148,240, 2,155, - 73,182,118,114,255,181, 7,171, 70, 88, 21, 45,130, 4,236,144, 70,107,207,219, - 53, 42,255,129, 94,115,213,253, 72,111,174, 26,157,164,140,237,251, 26,129,162, - 82,253,162,101, 95, 72,237, 76,177,233, 43,213,103, 83,175,205,173,162, 38,128, -247, 96, 39,181, 19,214, 98,244, 99,115, 17, 89, 16,150,161, 66,145,156, 17, 54, -217,192,242, 22, 71, 7,116,207,114,176,249, 12, 80, 68, 86, 70,173,234, 1,196, -211, 54,150,136,234,174,122,157,208,162, 99,105, 80,229, 7, 68, 89, 61,226,208, - 37,255, 86, 38, 72,192,223,222, 85, 18, 79,215,212,162,130,123, 17,102,143,163, -125,220,171, 11, 62, 43,241, 21, 39, 15, 49, 9, 38,231,106,122,140, 8,125,141, -152,110,208,108,230,143,226, 71,133,254, 44,178,150, 67,244, 55, 33, 73,189,162, -118,187, 20, 88,149,204, 6, 39, 46, 46, 10,236, 97,208, 28,211,235, 15,184, 38, - 22,224,185,144,253,105,168,171, 18,231,226, 42,106, 74, 86, 65,158, 2,130, 87, - 44, 27,247, 23,224,235,225,197,130, 99,162, 4, 70,203,252,116,216,216, 30,148, -121, 7,109,185, 14,201, 63, 34,131,123, 60,164,135, 15, 71, 78,100,159, 15,251, -199, 99,252, 56,221,225,110,135, 61, 50,182,217,244,215,221, 88,225,151, 14, 18, -179,192,170, 25,137,208,112, 32,160, 63, 69,179, 14,219, 39,221,179,135,173,151, -233,106, 36,225, 39, 87,248, 14, 98,213,227, 66,214, 53, 97,247, 73, 4,236,193, -242,191,149,112,149, 70, 44, 8, 62,114,147, 21,197,167,103, 1, 21,236, 52,100, - 89, 76, 20,215, 41, 45, 98,128,230,233,195,158,172,138,193,169,115, 57, 31, 34, - 1, 66,244, 38, 44,106,132,198,137,129,235, 50,167, 4, 99, 18,243, 47, 82,174, -171,119,219,183,197, 60,220,106,146, 80,210,139,101, 27,219, 35, 8,220,190,150, - 34, 95,216,135, 15,216, 61, 48,251, 78,225,224, 48,136, 31,116, 97, 94,111,216, -175,165, 25,197, 98,155,159,133,123,112, 96, 68, 50,247,142, 87, 86,134, 39,144, -169, 75,208,231,133,148, 49, 42, 47,118, 46,111, 38,136,163,191,201, 68,154,186, -122,193,145,212, 99, 98,201,240, 33,143,178, 73,125, 84,147, 61, 10,253, 32,219, - 37, 61,132, 33, 61, 16,168,238, 49,189,113,157,247,134, 52, 56,163, 46, 86, 83, - 37, 34, 21,211,215, 53, 34, 94,220,184,169,184,106,232,163, 81,162,224, 83,249, -102, 53,255, 27, 40,157,242,152, 56,205, 88,193,175,209,123,164,130, 99,143,128, -173, 24,248, 90,172, 6, 6, 79, 12,235,199, 41,231, 56, 74,227, 27,213,118, 34, -240,121, 76, 97,218,180, 90,204, 23, 46, 34,114,241,182,236,135, 88, 52, 67, 58, -146,148,134, 31, 16, 98,153,194,218, 32,102, 96,242, 48,153,246, 94,201, 46,254, - 78,131,126, 84, 66,254, 13, 98,162, 4,170,211, 34, 39, 41, 16, 24,190, 56,118, -203, 49, 91,122,158, 76,170, 18, 95,238,143,249,164,216, 63, 68, 94,235, 32,194, - 93,194,110,120, 85, 17, 73,206,251,148,245,178,189, 3, 27,160, 89,105,110,234, -203, 19, 3, 58, 21, 20,138,163,100, 40, 40,207,146,191, 47,164,173,233,100, 23, -105, 66,198,209,228,130,208,171, 28,205, 5,125,174,192,213, 41,137, 54, 41, 33, -187, 55, 18, 68,118, 96,192,166, 89,167,116,148,105,154,198, 58,222,184, 24, 31, - 86,134,141, 26,233,221, 15, 73,147,241, 32,199, 48, 84, 36,239, 44, 74,189, 74, -118, 44,140, 28, 72, 67,244,140,204,121,117, 41,114, 30,213, 88,159, 96,187, 96, -253, 80, 22, 37,218,118, 7,189,179,140, 56,220, 93,179,157,112, 9,125,231,169, - 74, 92,189, 22, 83,243,113,178,196, 91, 81, 61, 28, 59,252, 5, 7, 7, 57, 18, -193,150,130,246,196,247, 70, 40,224, 88, 92,157, 37,163, 23, 86,250, 89, 66,232, -139, 14,247,137,237,115,201,228,113, 10,160,210,169, 6, 13,130,233,152,222,163, - 97, 53,110,234,174,109, 35, 6,252, 6,249,132,245, 18, 26,115,120, 40, 18,222, -148,218, 36,218,120,194, 40,197,169, 83, 9,253,251,100,148, 20, 99,104,148,207, -195,225, 16,244, 72, 66,196,219,251,141,151, 83, 55,144, 78,152, 42, 31,158,196, -129, 5, 8, 95,136, 22,126, 19, 26, 99,155,240, 29,154,114,104,254,220, 75,109, -250, 89, 51, 53,218,142,144,157,246,116,252,223,143,165,108, 98,167,248, 71,142, -137, 12, 78,177,177,150, 18,165, 48,135, 34, 5, 88, 51,176, 71,218, 73, 21,244, -164,192, 55, 2,143,173,224,142,205,244,250,222,145, 63,149,213,245,100,179, 56, -134,157,155,208, 19,109,237, 98, 93,199,162, 0,152,204, 7,213,190,130, 11, 41, - 95, 20,185,198,196,103,226, 46,236, 52, 12, 44,235, 75,111,156,151,164, 93,215, -118, 33,174,202, 72, 91, 94, 47,173,167, 41,245,194, 82, 27, 53,155, 3, 82,109, - 1, 0,230,220,128, 78,173, 99,147,187,201, 51, 92, 10,185, 32,236,131, 56,233, -197,163,207,154, 65,202, 32, 57,210,174, 96, 36, 50,131,106,239, 51,213, 93, 2, -170,140,125, 32,223, 13,123, 58, 10, 8,197, 61, 33, 64,237,222, 0, 60,161, 65, -212,184,127, 84,219,201,249,245, 20,144,113, 56,195, 0, 8,240, 43,250,222,199, -244,225, 5,108,116,115, 8, 38,158,240,186, 89,119,229, 69,210,238,169,198, 40, -133,192, 82,185, 68,209,173,253, 9,169,163,231, 64,111,137,109,239, 16, 71,190, -133,134, 3,228,166,196,205,207,202,134,179,125, 72,198,206, 57, 5, 89,216, 8, - 52, 34, 59,106,220,234,243, 55, 25, 92,134, 46, 91, 42,238,247,103,210,111,150, - 49,247, 31,235,179, 87, 84,202, 4, 95,233,106,209, 15,121, 2, 95, 14,229,214, - 43,200, 43,155,182, 95,129,161,120,133,128,186, 30, 91,202,108, 9,143, 54,229, - 68, 41, 0, 38,229,194, 8,143,136, 14, 80, 25,130,140, 65,169, 52,248, 64, 91, -100,203,148, 28, 19, 98, 14, 67,233,217,186,112, 49,174, 76, 0, 79,175,233, 77, -171,251, 74,246,141, 39,204, 11,213,161,118, 36, 42, 41,100,201,160,206,132,229, -182, 14,136, 46,105,220,226,165,169, 24,167,171, 46, 46, 88,215,111,215, 65,199, -211,143,194, 53, 82,115,121,253, 7,175,138,110, 91,240,241, 71, 12, 74, 47,226, -237,150,113,119,253, 11, 24,222,240, 65,241,244,216,219,207,228, 63, 84,162,106, -162, 86, 96,119, 47,135, 96, 77, 89,233,186,246, 38,186,131,191, 11, 54,113,251, - 35, 24, 85, 29,211,220,206,138,183, 78,244, 12,141,232, 15,185,131,111,217,105, -220,126,148,238,223, 81,107,139, 93,170, 90, 7, 42, 90, 56,236, 68,172, 81,101, - 60,230,150, 32,237, 15, 76, 10,184, 48, 8, 84,144,209, 53, 20, 74, 72,143,179, - 40, 67,145,220, 66, 91,128,111, 64, 25,124,222,151, 20,173, 23,132,242,116, 12, -121,168, 77,213,155,238,138,224, 86, 41,208, 80,106, 81, 48,175,110, 51, 82, 6, - 56,225,115, 60, 27,250, 84,146, 63,212, 38, 98, 11,137,192,166, 0,226,165, 29, - 40,196,242, 33, 99,141, 29,100,181, 59, 26,126, 90,213, 82,131,172, 87,170, 68, -243,188,154,136,104,163,229, 6,111,170,123,198,203,166, 81, 63,146,243, 31,117, - 55,132, 36, 26,153,251,195, 27,131,136,104,106, 36,134, 95, 20,233, 66,121,163, -188, 94,229,201,240,159, 39,229,232, 61, 51,128,254, 68, 72,236,252,200, 64,118, - 89,143,220, 61, 55,152,244, 8,115,243,143,162, 63, 24,154, 0,149, 92, 56,200, -142, 17,140, 7,199, 80,172, 23,148,151, 15, 87,104,167,105,230, 76, 85, 84, 38, - 47,248, 39,174, 14,198,121,180,222, 73, 7,109,179, 42, 63,103,101,211, 16,154, -204,159,227,189,253, 24,157, 76,247,121,200, 50,185, 77, 27,207,253,167, 70, 29, -219,190,219,102,100,219,103, 74, 72,157, 83,191,123,255, 68,203, 82, 53, 28,109, -222,110,116, 78, 23, 45,141, 41, 35, 64,183,139,173,145,171, 43,190,176,216, 33, -145, 13, 79, 39, 92,252, 13,123, 84, 36,242,193,122, 28,112,107,192,185,192,216, -168, 55,233,214, 8,242,218,191, 74, 30,126,242,183,103,168, 52,223, 26, 86,226, - 41,185,250, 81,194,234,203,156,123, 60, 88,119, 1, 34,154,197, 66, 30,106,123, - 83, 26,147, 61,109,151,201,193, 14, 20, 81,133,219, 59,208, 35,214,237, 46, 29, - 10,250,110, 45,170, 76,133,246,100,189,129, 76,111, 84,212,134,245, 80,217,175, -218, 2,146, 17, 49,235,132,234,168,122, 8,229, 29,159,136, 64,244,139, 9, 90, - 44,195, 91, 60, 23, 18,170,254, 27, 10,198,239, 84,230, 53,242, 73,243,156,175, - 78,112,187,225, 90,140, 12,134, 29, 53,181,225, 53,245, 41,183, 1, 41, 70,179, -153,235,165,236, 6,117,144,131, 41,233,146,245, 52,252,239,121, 66, 10, 30,200, - 43,227,135,216, 20,195, 16,193, 65, 72, 47, 79,172,251,117,208,198,192, 13,236, -202, 76,127, 93, 14,221, 84,157, 7, 57,168,248,211,131, 38,173,164,152,102,193, - 11, 81, 75, 17, 94, 70,178, 91, 47,189,131,113,242, 78, 59,180,244, 64,229,149, -133,244,214,201, 42,195,152,151,168,189,114,158,186,163, 72, 28,205, 81,170,120, -107, 48,208, 69, 43, 20,228,152,233, 33,139, 30,131,153,130, 86, 94,184,243,186, - 43, 24, 22, 39, 27,168, 75,116,132, 5,176, 21,105,170,239,142,202,233,175, 10, -166,105,209, 32, 12, 19,245,146, 73, 89,151, 54,117,179,206, 59, 59,146,124,121, - 35,154, 76,174, 14, 2,187,155,221,148, 22,158, 53,162,124,201, 12, 84, 31,134, -163,139,171,225, 52,121, 60,215, 86, 27,249,126,166,123, 21,100,119, 5,220,228, -176,230, 89,214,205, 84,252,245, 78,137,123,125,178, 92, 67, 98, 36,243, 26,150, -158, 89,208,130,206,243,170, 3, 34,185,104, 65,255,133,138,183,129, 20,155,239, - 5,162, 48, 27, 78, 96,126, 30,211,201, 26,144,136, 62, 7,184,163, 82, 74,162, -228,151,125, 2,220, 11, 74,248, 47,220,233,178,231,243, 75, 45, 67,107, 95, 81, - 22, 27, 66,181,104, 15,202,115, 27,158, 7, 87, 1, 97, 84, 12, 18,126,118,243, - 12, 50,252, 14,215,228, 1, 8, 38,231,143,129,181,210,243,151,252,227, 70,168, - 83,200, 70, 54, 8,124,214, 34,208, 70, 83,204, 78,100,115,254,247,103, 42,153, -216, 87, 27,210,233,179, 87,190,156,187, 85,209,224,192,162, 3,243,165,209,138, - 0,194,240,168,224,152,118,142,183,102,238,193, 18,242,238, 31,181, 92, 6, 16, -252,176, 7,196, 81, 10, 51,127, 43,181,116, 94,204, 89, 84, 34,228, 75, 69,107, -102,151, 27, 26,135,242, 34,121, 97,155, 92, 84,192,113,118, 1,162, 48,169,236, -238,145,236, 64, 88, 88,248,153, 0, 51,237, 88,114, 53,147,114, 99,245,144, 2, -167,161,233, 54,124,116,228, 49,136,130, 3,200,230, 26, 58,136,222,139,155, 44, -136,145,184,163, 89, 46,136, 79, 99,206,100, 69,235, 63, 39,112,211,207,151,145, - 22,234,127, 68, 23, 75, 48,150, 0,197, 85, 84, 16,238,236,178,217, 35,170,144, -108,162,121, 94, 87,124,199,195,230, 18,101,124, 71,148,222, 5,225,191,177, 81, -240, 17, 12,200,216,233, 91, 24,190, 25, 55, 60,240, 93,178,162, 73,210,201,251, - 96, 96,152, 70,186, 16,102,159, 51,252, 51,169, 1, 6, 72, 59, 71, 49, 57, 93, -134,125,153,105,180,109, 58,254, 82, 94,152,178,165, 29, 48, 10, 20,228,139,170, - 24,129, 80, 16,245, 37, 27, 22,216, 28, 35,101, 91,239, 96,224, 36,152,157,118, - 88, 48,150, 25, 78,194,156, 4, 1, 40,117,123,197, 75,113, 8,160,164,220, 42, -228, 22,218,184, 13,112,161,232, 7, 93, 15,215, 0, 95,107,207,141,143, 0, 82, - 99,206,193,184, 96, 9, 87, 14, 99,146, 65, 44,165,143, 1,137,130,122,100,243, -150,239,247,162,160,196,145,184,137, 3, 79,152, 24, 4, 88, 71, 83, 24,197, 94, -242,143,163, 90,190,184, 87,147,112,223, 98,216,253, 34, 84,197, 61,106,133,193, -119,151,160, 21, 43,171,161,249, 34,140, 42,243, 45,241, 32, 61, 18,232,115, 77, -184,108,231,207,249, 80,178, 98,161,190, 21,173,211,168,246,210,207,128,254, 1, -166,218,138,203, 42, 98,125,110,184, 46,132, 35,214,174,155,193,214, 97,155, 80, -109, 27, 5, 32,114,125, 57,129, 33, 96,102,180, 50, 32,107,107, 92,183,186,139, -238, 59,206, 66,130,116, 35,148,142,214,179, 70,137, 42, 94,108,136,203,151,255, -206,124, 46,217,155, 11,178,253,144, 97,111,209, 81,109,137,245,219, 71,175,160, -145,191,147, 9,126, 77,219, 7,151,118,234,151, 57,226, 61, 59,221, 9,232,201, -159,123,202,155, 17, 10,123, 40,173,218,220,249, 60,251,126, 2,141, 26, 86, 12, - 89,103,172,122,159,118,177,163, 21, 74, 22, 35,117,245, 82,181,107,141,111,153, -170,207, 14,135,181,193,140,254, 31, 84,101,216, 92,239, 43,132, 91, 27,104,207, -175, 85, 9, 16, 44,157, 11,196,184, 4,118,247,242,200,171, 73,138, 49,154, 11, -218,101,199, 74, 23,206, 1, 71,243,155, 98,170,198,106,199, 79, 26,197,120, 89, -254,249, 66,152,125, 30,128,197,188, 6,118,128,176,103,169, 16,198, 64, 65,239, -189,172,223,227,177, 56,166,195, 89, 69,209,135, 75,216,217, 56, 33,117,154,129, - 75,159, 25,212,218,242, 53, 37,190, 64,108, 15,143,218, 75,119,185, 41,185,217, -164, 16, 95, 79,142, 69,197,101, 44,195, 68,159,205,183, 91,248, 26,139, 57,229, -106, 78, 3,117, 5, 99,186,196,108, 58, 91, 54,180,202,167, 3, 65, 75, 49, 94, -229,142,115,234,224, 42,135,246,209,227,211,247, 30, 74,168,114, 30, 92,114, 75, - 84, 45,152,150,218,111, 88,140,234, 16,150, 51, 42, 22, 56,229,166,174,232,221, - 22,193,191,110,128, 62,139,135,176,207,194,190, 82, 5,125, 48, 65,249, 36,114, - 47, 49, 10,176,190,233, 43,213, 92, 1,116,177,148,251,209, 0, 76, 28,135,154, -160,140, 97, 5,152,114,135,240, 20, 22, 14, 57,218,180,248,149,200, 2,125,117, -164,212,253, 3, 70, 76,143, 73,179,147, 60, 87, 91,236,189,212,224, 48, 56, 54, -174, 25,164,237, 60,159, 19,192, 93, 63,247,194,101,180,129,197, 79,151,156, 94, - 44, 0, 9,100,180,146,144,119,210, 46,178,223,182, 31,224,114,187,173, 95,121, -213,243, 70, 0,100,110,208, 95,219,158,105, 64,180,222,120,156,128, 18,206,161, -209,235,180,194,143,225,131, 93,161,242,100, 60, 70,247,125,116, 80,145, 45, 87, -155, 21, 62,136, 50,176, 42, 82,222,176,144,113,203,124,192,239, 45,231,107,126, -110, 25,189,150,142,173,189,114, 34,241, 99,229,114, 20,151,218, 92,123, 38,122, -117,196,127,100, 99, 57, 96,130,169,160,137,185, 1,148, 41, 33,174,188,211, 47, -222, 50, 24, 99,205,133,222, 12, 14, 13,177,158, 40,222, 8, 48,161,113, 58, 86, - 67,255, 62, 98, 71,226,224, 3,172,236,191, 25, 57,171, 38, 56, 92,101, 46,160, -121,230,204, 60,250,119,216,114, 20, 8,171, 70,216,106, 32, 16, 54,187, 2, 93, - 27,179,193, 99, 83,235, 72,129, 22, 65,107, 5,182, 58,129, 1,123,219, 30,222, - 98,101,197, 33, 1, 47,219,232,103, 62,195, 65, 22,211, 65, 22, 6,145, 40,208, - 87,168,160, 71, 58,145, 39, 27, 10, 57, 46,117, 20,170,175,206, 98, 36,228, 1, -220,225, 47,236,253,179, 62, 8, 66,163,232,219,184,126, 41,158, 99,232,199, 54, -143,208, 92,122,111, 28,232,209,250,235, 92,127,242,147,235,202,234,214,244,215, -175,204, 28, 50, 96,106,139,144,131, 4,128,126,172,145,204,186, 1, 23, 47,159, -241,134,232, 43,168,181, 17,226, 45,255,221,157, 6,204,102, 79, 72,119,227,167, -171, 24,192,130,156,102,166, 13, 80, 52, 5, 42,117,245, 75,163,121,106, 22,244, - 73,225,197,245,197, 16, 26, 41, 26,238, 86,223,137, 64,213, 20, 24,243,254, 62, -219, 72,127,251, 39,253,129,165,146, 61,210,140, 45,104,130, 1,231,121, 49,146, - 84,240,208, 49, 60,200,162, 13,212,206, 53,207, 14,173, 68,144,133,155, 67,134, - 21,236, 9,238,181,140, 0,163, 8,218, 41, 55,167, 62,174,245,191,136, 48, 80, - 9, 78,240,151, 90, 78, 60,178,143, 90,159,246,118,107,120,204,228, 25,140,254, - 15,136,151,160, 4, 59, 81,156,248, 50, 0,158, 48, 7,217,129, 51,155, 64,215, -195, 46,211,169, 5, 5,147, 71,195,165, 50,177, 99,103,226,223, 78,139,220,202, -107,135, 88,231,227, 83, 27,232,237, 26, 64, 70, 65, 86,230, 69, 43,164,220,158, -143, 91, 53, 47,213, 34, 45, 15, 17, 59, 61,196,191,212, 67, 21, 60,170, 21,113, -254, 16,149,202,190, 88, 11,237,184,227, 41,169,146, 20,199, 16,115,102, 6, 48, - 26, 29,215,212, 84,141,224, 65, 98,143, 53, 69,244, 23, 26,105,172, 32,158, 32, -218,206,177,128,219,128, 13,153, 46, 86,213,101, 55, 69,135,218, 35,165, 22, 13, - 3, 17,128, 54, 38,129, 63,213, 12,147,198,117, 25,162, 88,151,101, 2,159,175, -114, 51, 36,161,235,162,183,192,210,184, 43, 81, 96,146,169, 19, 76, 3,193, 26, -213,248,120,170,235,238, 77, 95,160,129,101,150,111, 72, 99,105,111,178,149,128, - 93, 9,252,123, 67,129,126,170, 93, 47, 41,237,179,179, 90,143,143,219,173,131, - 98,134,135, 95,196,178,219,232,147,168, 86, 31,152,207,201,186, 56,145, 45, 60, -117, 76,162, 69,185,229, 1, 27, 72,157, 91, 10,196,182,212, 1,182,148,178,122, - 16,169, 21, 60,229, 65,106,238, 63, 92, 40, 85,117, 8,253, 71,189,120,113,244, - 2,202,227, 80,193, 15,145,125,164, 41, 49,132,151, 19, 36, 38,110,120, 3, 59, -186, 1, 48, 35,136, 12,178, 22, 58, 49,188, 1,196,145, 95, 67, 83,191, 33,161, -217,254,232, 40, 75,210, 27,189, 20,115,172,113, 29, 61, 13, 67, 35,156,220, 71, -118,232,240,121, 60, 8,252,211, 68,238,224,143, 5, 79,163, 82,161, 89,218,129, -113,163, 16, 76, 16,244,137, 20,135,162,215,105, 87, 79,152,232,158,179,117, 50, - 54,229,105,223, 33,169,131,217,127,177,161,196,223,124,145, 86, 35, 58,240, 58, - 28, 62, 97,167,243, 27,130,160, 79, 34,158, 12, 9, 12, 35, 76, 48,244, 19, 41, - 13,185, 73,120,238, 4,177,215,244,235, 25,155,236,116,239, 35,172,131,174,130, - 53,162,203,107,253,232,227,220, 20, 32,194,131,109, 58, 45, 63, 56, 76,114,128, - 8,126,225, 67, 85,213,198, 8,209,137,243, 80,183,200,187, 5, 72,155,252,252, - 13, 72,146,128, 88,160,129, 86, 69,138, 47, 16,154,206,222,175, 99,145, 93,152, - 73, 21,235, 74, 6, 73,103,114,137,232,103, 11, 68,135,149, 74, 68,108, 12, 33, -251,221,200, 37,101,139, 44,146, 57,237, 9, 33,128,139,192, 46, 3,106,175,216, - 2,238,121,154,155,165, 14,119,133,191,203,113,245, 93, 97, 78, 59, 25,219,198, - 79, 92,120, 52, 86, 61,123, 15, 3, 76,106,172,156,138, 43, 13,241, 51,238, 65, - 63,135,149, 50, 9, 75, 80,153, 83, 58, 59,129,193, 53,219,232,151, 77,226,188, - 44,176,179, 39,157,196,252, 68, 29,196, 29, 34,255,131,107, 91,238,107,216,172, - 35, 99,124,132,173,114, 55, 84, 89,189,243,181,249,119,165,156,236,153, 34, 70, -190, 59,203, 41, 63,138,147, 85, 89,181, 52,201,216, 15, 2, 24, 74, 52,148,252, -213, 21, 36,199, 2,183,215, 54, 46, 66, 69,184,104, 32,251,144, 4, 36,159,172, - 95,186,176, 13,200,221,208,175,126,150, 8,245,172, 63, 8,171, 49,202, 90, 86, -161, 0,192, 59,143, 24,177, 81, 34,226,194, 27, 11, 66,231, 46,224, 61,179,248, -130,236, 1,227,239,105, 47,232,183,208,158, 10,105, 75,160,254, 17,113,148,209, -125,240, 84, 24,175,200,197,249,228,201,169,224, 92,104,111, 98, 28,191,119, 65, -124, 68,161, 77, 4,163, 33,214, 34,124, 91, 2,105, 59, 47,204,151, 67,166, 5, -244,249, 80,233,225, 62,251, 80, 64, 47,160, 60, +uint8_t GB_JITpackage_0 [56682] = { + 40,181, 47,253,160, 55,246, 8, 0,180,210, 0,202,186,212, 33, 45,176,174,172, + 27,186,140,104,187,228, 76, 62,247,248,153,136,243,110, 92,153,138,157, 64,114, +219,231,255, 7, 86, 85, 78, 24,194,179,248,215,172, 23,254, 41,253,105,112,118, + 60, 3,233, 1, 34, 2, 32, 2,254,221,111,187,255,217,233,161,254,232, 30,235, +181,103, 76,183,211,155,171,150,178,173,236, 85,120,107,110, 63,105,181,143,237, +124, 59,189, 65,233,252,104,212,178, 22,251,190, 70, 63,219,253,167,161,166,185, +229, 15,115,228,169,229,120,161,119,112,208, 60,114,157,161,243,214,232,241,227, + 44,143, 77,229,157,240,175,108, 10, 28,203,117, 58, 46,157, 16,223, 94,172, 92, +219, 51,185,255,127,251,116,155,178, 59, 24, 95, 24,234,189,183, 46,163,119,175, + 76, 2,194,224,251,113,227,200, 22,202,217,117,220,122, 33,106, 59,142,230,112, +141,146,219,191, 27,123, 99, 57,189,107, 99,100, 16, 72,117,227, 87,203,237,221, +105,254, 91,202,200,205,225,107, 43,223,255,188,208,253, 56, 12,155,114,230, 79, + 15,135, 40,141,114,214, 78,246,229,255,186,251,115,114,186,114, 38,193, 96, 80, +119,231,135,191, 41, 39, 86, 89,191,141, 63,189, 49,197, 60,181,246, 81, 89,103, + 0,182,210,251,191, 58,227,173, 86,114,211,185,241,207, 78, 51,189,244,186,187, + 53,114, 77,187, 90,214,250, 35,135,223,235,238,116,203,213,121, 99,187,228, 13, +183,159,246,162,111,220,158,249,223,222,161,223,230,253,177, 29,109,122,172,115, +247,187,181,105,244,204,175, 66,115,123,148, 19,126,203,144,172, 45, 35, 5, 45, +218,203, 90, 79,218,233, 68,174,221, 57, 96,158,190, 59,161, 91, 35,191,219,208, +237,233,209,195, 90,223,233, 77, 90, 63,190,111, 61, 26,185, 58,255, 99,248, 92, +157, 62,189,142,206,105,142, 70,173,181,218, 23,212, 92, 99,244,238, 88, 6, 77, +191,209,227,191,253,221,201,217,125, 24,106, 30,181, 26,239,111,150,227,173,237, + 77,238,219,180,227, 89,201,145,127,178,132,163, 59,138, 35,222,115,155,183,182, +118, 57,250,107,203, 73,113, 60,152, 96, 38,173, 61,222,223, 25,254,219,113, 51, +195,148, 82, 12, 39, 36, 30, 18,142, 3,144,135, 4, 75, 50, 98,248,211, 19, 39, + 60, 81, 28,234,174,245,166,134, 97, 67,115,113, 67,198, 14,119,119,217,237,198, + 95,237,188,179,206,173, 53,142,116, 19, 59, 34, 34, 26, 30,211,196,132,128, 49, +138, 34,233, 58,209, 49, 34,253, 30, 59, 88,223,249, 97, 28, 17, 17, 60,221,249, + 28,249,251,125,219,155,215,193, 69,222,144,221, 73,111,142,247, 85,251,185, 78, +173,219,202, 17, 11, 5, 89, 38,165,167, 50,117, 77, 46, 13, 75,150, 85,149,134, + 37, 99,254,143,118,228,253,118,233,202, 32,120, 0, 75,146, 71, 82, 20, 73, 81, + 36,225,113, 31,170,140, 21,137,201, 0, 75,201,125, 23, 12,129,244,103, 28,177, + 22, 77,178,139,236,110,118, 86, 26, 32,140, 93, 50, 21, 85,201, 48, 42, 67,154, +208,163,139, 7, 21, 1, 3, 10,154,114, 62,171, 85,240,205, 36, 38,170, 11, 86, +112,163,165, 91,130, 72, 68,187,127, 41,144, 3, 6, 84,217, 3,139,178,209,166, +147,239,197, 60,117, 83, 4, 22,209,210, 63,139, 69,116, 64, 17, 16,252, 5, 96, +136,136,134,204,194, 50, 20, 6,179, 52,215, 6,147, 62, 13,210, 16,189,181,221, + 63, 25, 49, 53,217, 84, 15, 10, 4,237,125,255, 13, 20,138, 7,129, 2,144, 7, + 5, 5, 5,132, 35, 20, 20, 18, 16, 8,132,242,128, 68, 14, 64,170, 44,179, 92, + 46,108,146,181, 39,118, 86,227,230,226,199,213, 72,161, 3,237,167,182,205, 7, +197,157,146,230,246, 19,234,141,134,136,221, 94,250,197,231,169,255,206,250, 73, + 19, 7,115,145, 90,239, 56,224,196, 77, 29,105,120, 10,121,244,251, 28, 61,235, + 27,195,234,210, 80, 26,140, 82,141,163, 44,227,234,246, 94,183,144,255, 99,181, + 58, 29,196,138, 53,153, 11,230,129,149, 81, 40, 19, 12, 11, 69,193,128,129,114, + 97, 42,151, 42,163, 88, 26,203,149, 69, 25, 75, 35,171,176, 74, 54,117,166,203, +111, 13,190, 54,109,181, 30, 67, 40, 73, 76, 96, 46, 50,108, 67,193,244,198,164, + 20,218, 39, 26, 57,150,122,164,178,181, 8,133,146, 92, 40, 24,222,116,110, 83, +171, 18, 73,255,166,159,118,128, 6,135,110,114, 0,129, 64, 15, 60, 35,129, 24, +102, 21,140,136,153, 37, 80, 52, 57,170,173,221,159,219,177,251,254,216,142,225, +211,174,222, 27,254, 73,105,191,173,230, 61,169, 71,111, 15,247, 91, 89,231, 51, +252, 88, 74,109,203,184, 45,208, 34, 34,152,153, 27, 36,182, 42,151,198,178,201, +100,154,139, 65, 6,128, 5, 8, 96, 41, 98, 10,165, 97,133, 56, 64, 0, 6,177, + 20,130,160, 72, 66, 67, 85,222, 55,210, 8,201,176,132,162,104,168,138, 23,107, + 59,231,241,214, 73,173,229,112, 38,213,170,123, 43,232, 38, 59,181,251, 9, 66, + 28,214,218,157,223, 34, 64, 67, 70,150,129,161, 50, 24,188,181, 86,183, 25, 64, +179,221, 13,149,203,228, 45,231,179, 4,180,200,105,207, 62, 87,192, 9,199,228, +178, 95, 71, 34,115,193,100, 90, 91,152, 52,114,237,135, 16, 7, 91, 76,172, 8, + 23,133,178, 92,150,205,127,177, 3, 53, 5,130,199, 1,182,192, 54, 84,198, 3, +171,161,191, 37, 10,112, 70, 20,132,176, 5, 91,155, 44, 82, 35,165,253,129, 15, +182, 96, 12,179,170,106,131, 93,104,240,200,154,202, 98, 32,185,100, 16, 52,152, +138, 53,177, 52, 23,139, 5,154, 12,120, 58,158,189, 30, 87, 99,231,121,239,171, + 29,210,166, 54, 49, 65,238, 87,219,147,219,173,199,219,247,252,241,179,221, 24, +185,250,119,219,105,156,214, 93,186,119,118,181,222, 91,133, 4, 97, 7, 75, 15, + 3,156, 32, 1, 36, 98, 41,138, 36, 15, 3, 19, 36, 32, 3,124,246, 71,163,231, +126,115,254,192,154, 88, 42,248,115,123,229, 79,111,106,112,114,245, 62,202, 31, +235, 17, 16,172, 80, 23,198,240,122,115,232,196,152,166,214,252, 0, 41,246,216, +117, 82,120,179,117, 82, 92, 59,221,128, 67, 94,123, 51,168, 60, 72,152,167, 13, +105,221,139, 20,106, 75,184, 26, 33, 48,245, 88, 49,140, 62,219,109,133, 31,250, + 45,131, 26, 41,157, 21, 89,225,123,173,196,254,222, 88,145, 31,253, 36, 92,167, + 22,162, 96, 4, 86,252, 63, 61,239, 78,245,246, 88,174,123,206,102, 56,177, 92, + 13, 24,130,133,226,139,107, 98,185, 84,156,185, 48,102, 81,153, 12,229, 32, 67, +115, 57,128,216,133, 81, 18,118,144,128, 93, 83,107,143,159,121,167, 59, 23, 63, +145,126,211,186,137,248, 8,206,237, 20,167,207,231, 83, 37,220,200, 28,203,252, + 89, 8,204, 83,203, 26,103,157, 18,212,161,232,241,103, 67, 92, 33, 57, 72,112, +144, 16, 49,100,214, 44,204, 98, 85, 23,197,161, 74,152, 66,119,214, 13, 87, 4, + 80,252, 17,212, 92,181, 88, 0, 79, 83, 98,236, 93,221, 78, 79,152,167,255,136, +136, 72,231,222,174, 74,112,112,208,108, 46, 18,138,195, 15,247,179,156,248, 0, + 27, 38, 13, 9, 72, 1, 8,123,172,229,193,204,146, 13, 54, 97,185, 16,112,230, +194,128,170, 48,124, 76,176,236,137,134,154, 56, 56,176, 85,161, 44,153, 36, 81, + 40,155,199,227, 1,129,144, 56,223, 67,183,117,122,208, 45,133,232, 69, 79,219, +211,212,155,235,203,145, 35, 17,246, 72, 63, 57,175,199, 78, 36,123, 16, 31, 19, +129, 9,242,128, 4, 32,196, 98, 85,174, 15, 77, 76,117, 78,211, 36, 77,192, 7, +148,136, 44, 76,100,195, 1, 21,239,225,246, 79, 66, 38, 32, 18, 21,130, 96,114, +101, 82,196, 7, 26, 88, 54, 25,149, 1,108, 66, 89,153, 12,141,229,223,118, 46, + 26,237,121,145,105, 30, 25, 34,131,168,223,199,210,175, 44,204, 45, 75,126, 35, +214, 96,148, 4,225,136, 35,120,127,214,142, 89,153, 43,123,219,154,171,213, 56, + 92,241,161,248,161, 49,226,170, 19,130,214,219, 66,140,215,222,207,240,158,176, + 90,246,166,246,186,253,126,240, 62, 10, 15,147, 99,228,107,107, 21,156, 84,200, +111,237,134, 15,210,164,216, 34,162,105, 74,239,157,212, 61,145, 12,203,137,210, +191,142,131, 70,205, 90, 78, 99,162,104,108, 25, 59, 47, 63, 34,114,240, 31,170, +253, 16,140, 88, 46,152, 6,133, 17,225, 79,217,218,247, 6,189,221,199,140,247, + 68,208,244, 56, 18, 85,204, 17, 8,152, 7, 20, 22,111,212,182,205, 58, 59,232, +247,237, 60,241,127,114,235,233, 28,140,207,237,253,162, 20,253,244,175, 59,255, +236,230,129, 60,208, 3, 61,144, 87, 39, 67, 9, 4,117,171,157,221,196, 2, 81, + 90, 71, 32,151,227,244,104, 48, 79,161,248,161,245, 98, 59, 95,163,195,159,142, +143,247,125,110,154, 7,134,115,163,214,222,218,124,206,198,191, 63, 35,212,249, +128, 17, 44,102,197, 95, 99,123, 12,177,240,220,214,219, 15,173,204, 70, 83,109, + 50, 26, 12, 54,192,168, 74,132, 10,126, 88, 84, 21, 17,166,164,129, 85,100,193, + 10, 42, 9,170,122, 77, 27, 31,189, 47,222,109,114,197, 21, 82, 48, 86,198, 45, +107, 40, 27,234,194,154, 68,166,183,211, 19,187,230,104,118, 2,193,151,155, 95, +191,169,126,206, 26,183, 57,137,187,125,227,118,134, 18, 74, 55,107, 11,243, 35, +150, 56,203, 32, 34,134, 96,109, 90, 15,148,183, 25, 74,143, 65, 82,131,173, 81, +231,227,235,241,190, 67,229, 80,145, 62,250, 88,138, 13, 6, 35,131, 92,157, 28, +209, 92, 80,153, 9,215,199,176, 92, 13,170, 11, 69, 98,169, 92,172,209, 99,171, +117,231,110, 77,237,237, 30,242, 36, 45,229, 48, 71,188,143, 60,133,236,214, 28, +230, 10,182, 91, 67,134,134,134,200, 6, 96, 1,108, 98,233,124,238, 63, 31, 29, +247,217,218, 28,138,238,209,170,168,171,186, 46, 46, 54, 88,200,173,215,158, 4, +132,204,165, 98, 85,178,139, 75,246,177,117,163,126,143,234,178, 80, 24, 4, 33, + 45,182,211, 3,154, 13,166,147, 6,174,235, 89,173, 64, 70,165,161, 42,216, 69, + 5,135,234,168,195, 41,138,148,132, 78,141,204, 72,146, 36, 25,198,147, 64, 16, + 8, 16, 16,149,141,168, 99,117, 25, 63, 19,209, 19, 57, 69,154,134, 50, 14,242, + 8, 81,132, 32, 66,132, 68, 68, 68, 34, 17, 17,145, 36,205, 3, 20,202, 92,133, + 53, 14,195,217,177, 63,128, 87, 90,240,111,155, 8,132,166,120,160,169,232,196, +124, 4,104,104, 94,138,126,240,121, 14,186,140,128, 55,202,137,211, 64,133, 32, + 36,215, 40, 51, 34, 66,143,151, 20, 59,230, 23, 30,178, 97,139, 16, 49,211,147, +188,216, 47,237, 23,129,154,133, 68,232,158, 91,102, 83, 3, 20, 76, 34, 52,225, + 66,170,208, 25,214, 90,109,224,224,198,249, 66,100, 85,120,150,249,254,219,225, + 81, 28,242, 41,185,196,142, 16,208, 57, 95, 70,164,190, 97,138,206,189, 10,116, +136,233,240, 98,120,240,123, 93,188,111,103, 22, 45,102, 46, 24,106, 90,144, 87, + 52, 87,215,192,183,229, 49,138, 98, 63,214,131,104,118,105, 12, 33,190,109,215, +145, 38,159, 68,150,128, 77, 99,178,186,164,153,194,116,132,248,202,135,207,125, + 44, 76, 77, 68,221,160,240, 42,230, 79,144,158, 92,176,163,248, 93, 56,185,156, +238,228, 20,160, 52, 2, 53,239,212,249, 2,175, 59,180,196, 52,254, 66,210, 40, +248,202,146,115,197, 45, 15,254, 7, 15,240, 74, 16, 53,182,161, 65, 16,130,214, + 83, 2,242, 46,155,251, 45,200, 73,195,134, 84, 57, 80,217, 27,201,246,231,221, + 3, 1,152, 22,247, 29, 50,121,118,193,147,241, 40, 26, 34, 77,131,166, 66, 63, + 52, 99, 78,113, 71,220,143, 5,232,138, 62,232, 86,254,123,237,213, 0,238,112, + 85,227,229, 84,193,178,114, 59,241,244, 25,100, 83,166,181, 97,186,165, 20, 23, + 86,125,199, 20,130, 48,113,215, 28, 27,223,141, 91, 49,110,146,234,106, 54,161, +225, 17,186,111, 9,112, 0,222,198,184, 43, 25, 34,236,103,195, 99,137,181, 91, + 59, 93,104,137, 71, 5,177,238, 20, 18, 16,111, 4,142,132, 3,144,228, 16,163, +164,213, 87, 17, 19, 36, 37,136, 33, 84,212, 21, 48, 44,161,196,171,171,237, 65, +220, 71,173,112,107,128,103, 11, 17,207, 94, 37, 23,126,252,225,166,179, 11, 74, +151, 78,134,113,179, 37,166,112,221, 79, 27,147,210,185,233,162,147, 96,192, 86, +114,255, 41,203,131,122, 57,132,250, 8,178,225,196,240,132, 28,191, 32,218, 3, +160,182,194,207,224,252,144, 5,226, 87,221,185,238, 89,176,178, 27, 17,143,168, + 58,142, 96, 29,203, 34,253, 10, 62,147, 92,193,133, 25,189, 86, 51,252, 76,219, +205, 26,166, 38,156,228,206,119,210, 48,218, 50,117,249,248,115,119,242, 74,193, +175,209,196, 65,135,138, 13,126,127,161,228,230,132,123,197, 26, 29, 2,164,239, +187, 44,150, 41,171,185, 90,160, 45,136,145,201,213,162,180,132, 38, 84, 48, 63, + 7, 39,245,121,164,154, 20, 84, 99, 21,204, 34,115,144,226,149,169,115,137, 34, + 14,209, 6,226, 19, 51, 0,220,120,154, 75,213,159,158, 44,140, 82, 22,191,115, +124, 29, 26,197,217, 53, 42,217,153, 94, 32, 67, 20,214, 26, 80, 96, 66, 11,216, +212, 37,120, 70, 78, 28,172, 90,222, 85,153,196, 74,110,136,186,218,252,248,120, +198, 3,192,126,180,228, 94, 9,146, 65,249,173,213,150, 66, 54,128, 11,201, 72, +130, 22, 11,168, 73, 75,219,131, 74,216, 5,185,202, 8,197,152, 89,144, 77,121, +162, 7,153, 89, 90, 51, 96,159,146,112,234, 36, 74,242, 43, 79,166, 20, 32,134, + 45, 51, 74,176, 95,232,133,116,118,218,158, 23,104,201,158, 69,167,135,207, 96, + 85,217, 56,102, 61,246, 94,207, 33,144, 44,195,118,129,114,239,164,124, 49,159, + 99, 80,196, 21,193, 82,133, 89, 12,183,130, 12,115, 37, 14, 0,176, 45,182, 65, +121,226, 26,205,134,134,235, 11,243, 90,152,192, 97,163, 74,160,186,128,252,112, +192,164,117,150,131, 24,206,145, 73, 55, 84, 24,114, 3,100,101,233,195, 29,101, + 72,116,138,239, 81,195,202, 78,131, 26,200, 11, 63,194,130, 42, 84,100, 64, 65, + 83, 35,154,132, 42,235,123, 22, 69, 55, 40,187,226, 8,119,179, 83,240,133,250, +252,126,221,180,224, 60, 97,148,203,163,100, 88, 52,155,197,171,164,168,130, 83, +185,145,112,206,105,201, 35,164,165,151, 37, 92, 90, 31,195,237,197, 86, 59, 73, + 82,202, 54, 35, 23, 81, 76, 1,137,125,190, 34, 0,171, 81,213,163,209, 16, 87, + 9,164,127,237,239, 28,132,134, 51, 94,183,165, 26,215,102,110,120,133, 39, 2, + 13, 23, 11,230,199, 83, 69, 72, 38,254,236, 19,137,215,208,143, 2,131, 91, 71, +129,249,164,110, 7, 65,189,113,169, 46,227,212,243,130, 78,242, 45, 95,160,198, +189,204,232, 59,146,226,217,131, 75, 76, 88,127,191, 49, 7,196,168,164,209,226, +122,240,135, 26, 56,191,225, 60,172, 66,154, 1, 15, 7,151,203,168, 29, 54,208, +157,227, 6,189,116,175,232, 27, 30, 38, 56, 27,131,161, 61,118,167,238, 50, 68, +198, 79,228, 99,131, 78,175, 31,201, 1,107,216,205, 8, 33,227, 99,214, 53, 86, + 62,121,173, 40, 66,229,232,193,194,144, 76,200, 50, 60,231, 46,100, 57,113, 55, + 25,161,206, 59,207, 77,255, 13, 40, 80,125,176, 45,159,130,159,124, 9,107,115, +168,113,245,170,152,176, 89, 32, 25, 10,154,136, 89,244, 27,189,212, 97,187,165, + 56,192,209,241, 6,150,123,159, 82, 61,159,246, 64, 38,255, 24,101,186, 42,182, +239, 63, 11, 36, 17,208, 87,115,111, 17, 82, 59,117,172,141,184, 22, 40, 3, 2, +224, 58, 33, 3,126, 0,175,180,102,158,153,246,164, 0,153,182,204, 2, 18, 25, +131, 24,167,230, 35, 80,100,217,114, 22,183, 9, 25, 51,109,124, 9, 4, 31, 81, +102, 37,136, 59, 77,183, 53, 33, 53, 4,133, 81,201, 36, 11, 95,234,241,178, 37, + 20, 92,204,172,130, 19,120,160,139,176, 19,145, 32,171,128,112,222,192,178,180, + 3, 24, 88,138, 15, 25,180, 42, 10,131, 5,182, 97,183,228,253,146,169, 94,224, +247, 99, 98,195,189, 16,231, 51,110,248,187, 79,154,103,184, 40,197,132,192,237, + 37,202, 45,204,182, 19, 75,239,205, 64, 44,146,237, 19, 14,197,207, 66,225,191, +253, 63,239, 68, 4,134, 97,113,149,185,205, 66,114,128,218, 30, 31,141, 36,168, +208,107, 51, 20, 67,234,115, 62, 43,169, 93,161,231,251, 87,189,108, 96, 15, 99, +185,177, 9, 82,146,220, 25,107, 2, 69,241,228,244,175,152,184, 2, 99,134, 6, +123,126, 33,234,143,144, 31, 12, 28, 17,249, 41, 4, 89, 36, 93,146, 81, 19,120, +244,149,191, 52,246,126,119,128,201,231,225,188,198,106,187,119,185, 38,247, 47, + 21,179,251,166, 95,160, 8, 35,248,192,156, 46,251,199,114, 17,185,142,125,199, +120, 76, 26,254,128,113,254,164,221,207, 59,254,216,201,249, 85, 87, 39, 26,197, + 83, 8, 68,138,108, 79,159, 58, 47, 27,210,140,231,201, 51, 98,254, 71,238,148, +208, 85,186, 15, 37,128, 29, 64, 17,222,209,124, 97,107, 86,123,184,139,245, 41, + 80, 93,182,158,239, 7, 7, 26,198, 22,184, 89,199, 18,159,230, 61, 33,206,176, +108, 59, 33, 50, 44, 69,130,211,177, 32,127,248, 56,189,214, 16,244,251, 39,193, + 16,169, 88,171,164, 54,111,198,141,160,188,215, 38,139,252, 9, 3, 16, 5, 69, +252, 85,153, 39, 31,247,194, 27, 64, 66, 44,144, 66, 24,110, 92,178, 66,145,154, + 89,253,123, 90,166, 11,167,193, 22, 77,164,228, 4,183, 27,180, 0, 10,242, 78, +161,233,217, 66, 23, 31,213,113, 36, 19,216,158, 21,188, 28, 48,189,161, 27, 48, +218,221, 70,196,175,108,187,140,206,171,141,128, 68,242,210,194,233,114,187,112, + 59, 60,130, 4, 37,154,189, 62,246,144,202,182, 37,127,218,158,122,189,198, 90, +135,129, 95, 94,176,101,216,140, 92,187, 32,201, 59,156, 53,233, 10,132,154,202, +209,155,108, 61, 1, 70,140,153,241,160,196, 21,252, 63,241, 6,111,180, 99, 78, +230,147, 5,215, 98,177, 14,181,159, 77, 33,178, 33,115,162, 13,157,127, 76,157, +213,103,145, 54, 20, 61,216,152, 15,140, 40,223,172, 43,247,126, 55, 28, 7,129, + 89,135,135, 54, 14,202, 34,196,138, 1,234, 68,240,243,199, 7, 11,169,159,194, + 75,194,251,177,128, 92, 19,218,217, 39, 0, 77,250, 58,225, 51,255,171,248,158, + 92, 19,125,213,132,117,136,148, 19,222, 94,177,128,150, 55,201,153,112,236,111, +109, 24,105,191,127, 76, 40,136, 8,135, 44, 18,154, 37,243,226, 68,115,128,194, + 99,118, 95,107, 36,100,212, 70, 90,184, 31,167, 88,216,154,237, 58, 96, 66, 99, + 3,130,196,154,231,107,135, 74,236, 98,255, 69, 86, 85, 37,223, 89, 9, 66,110, +148, 42, 0,159,251, 96,208,252, 20,236,225,245, 0,133, 40,154,158, 25, 0,103, + 16, 28, 14, 30, 88, 82,234,108, 80,107,115, 44, 70,230, 30, 81, 5, 35, 91, 31, + 47,201, 87,227,145, 95,144,166, 21, 26,245,229,215,100,153, 45,107,199,158, 20, +168, 71,111,177,254,243, 34,102, 51, 93,199, 48, 29,155, 39,122,135,184, 98,100, +196,143, 65,109,252,120, 61, 81,147,130,144,243,103, 22,203, 11, 86,211,207, 66, + 26, 21,228, 4, 70,179,247,128,136,229, 96,214,107, 45,130, 56,138, 12, 66, 81, + 78,187, 91,119,133,214, 46,126, 20,224, 76,157, 31,182, 10, 8,159, 58,155,194, +176, 62, 19,193,220,186, 75,168,148,159,241, 48, 31, 1,240, 48,180,236, 22, 18, + 13,150,152,191, 54,160,219,152, 49,214,244, 62, 99, 68, 48,193, 27, 83, 44, 5, + 58,122, 59,137,251,174,206, 19,252, 44, 38,184,202, 14,145,186, 77,196,174,254, +207, 28, 60,219,195, 1, 32,206,119,104,158,160,138,176,223,191,142,240,120,231, +119, 17,135, 65, 85, 58,125,144,246, 9,186, 10,101, 21,165,181,179,107, 63, 53, + 37, 5,116,216, 35,137, 8, 6,241,231,212,160,180, 25, 78, 52, 62,105, 14, 43, +199,190,198, 6, 80, 32, 5,214,248, 58,133,244, 72,232, 94, 68, 80, 22,250, 80, + 92, 4,241, 77,127,168,115, 89,139, 35,243,195,164,152,224, 89, 8, 64,154,153, + 77,147,243,169,218,215,203,251,236,164,202,185, 4,142,144,236, 33,228,248,238, +117,134, 52,165, 85,195,243, 35, 82, 87,227,200,152,244, 42, 10, 59,134, 78,170, + 47,105,144,252,197, 92, 21, 72, 25,149,232, 88, 7,104,169, 31,183, 12,179, 13, +105,143,120,122,170,102,127,205, 27, 90, 42, 34,253,139,152, 60,141,160, 48, 69, +179, 73, 73, 58, 37, 28, 26,210,166,244,219, 97,250, 34, 10, 81,142, 68,242,139, +247, 99,149,120,149, 33,142, 69, 7,107, 61,226,156, 42, 70, 53,184, 98,241,138, +173, 45, 58,121, 54,142, 68,102, 61, 49,243, 93,158,146,150, 2,254, 74,235, 50, + 61, 79, 77,186,199, 12,121,132,151, 23, 38, 32,186, 94,162,200,255,104,138,189, +193, 70,173,202, 61, 38, 7, 72, 91,251,237,178,189,187,244, 82, 76,141,249,117, + 80,114,100,163,116,186, 23,187,160,241, 98,167, 48, 52, 16,161, 19, 27,213,121, + 20,164,243, 36, 25,198, 54, 14,183,105,166, 54,107, 9,135, 46,133,167, 32, 70, +169, 82, 90,207,232,103,205,154,107, 0, 51,133, 94, 50, 8, 81,126, 70,120,213, + 89, 16,114, 87, 31,143,191, 22,115,144,137, 28,108, 26,200,131,195, 0,239,130, +169, 94,221,155,146, 81, 98, 58,122,152,104, 28,213, 54, 46,134,201,201, 6,105, + 74, 78, 58, 89, 29,189, 37, 24,172, 19, 9, 54,201,190,128, 13, 15,143,137, 40, +203, 97, 4, 21, 12,210,179,143, 37, 21,112, 87,208,142, 60,217, 53,166,227, 74, + 45,110, 64,102,156, 32, 27, 7, 6,172, 91,146, 31,129,155, 99, 23,139,236,160, + 50,122, 87,161,101,127,228,235, 53,226, 52, 89,209, 14, 46, 81, 82,222,248, 82, +255,134,115,186,217, 64, 49, 25,247, 22,154, 61, 46,198,116,141, 15, 33, 74, 15, + 64,251,240, 9, 12, 66, 51, 71,138, 18, 48,171,175, 44, 47,240,162, 49, 43,179, + 97,241, 26, 2,105,136, 35,158, 6,132,101,142,116, 40, 83,231,233,127,192, 85, +219,135, 90, 13, 75,170,188, 32, 38,182, 18,220,112, 76,204,129,204,100,150,187, +100,236,135, 2,250,244,223, 16,142, 46,184,163,145,166, 17,157,100, 65, 97,129, +159, 63, 66,234,120, 28, 12, 66,133,127,218,223,196,193,186,164, 4, 70,106, 56, +137,130,216,136, 81, 73,143, 18, 34, 56,125,220,175,149, 0, 88,164,211,125,149, + 68,179,132,211, 78,226, 4,211,201,244,190,108,132, 90, 56,117, 79,161, 41, 10, + 18,133,150,255,123,201,127,172, 71, 56,110, 85,223,244, 34,154,163,241,182,105, +205, 23,253, 24, 80,197, 46,108,194,164, 7, 19, 3, 98, 34,186,142, 94, 99,171, +226,178,254, 79,159,169,194,172,173,164,208, 13,206,129,144, 14,152,162, 59,210, +245,216, 97,169, 24,170,165,130, 13,138, 53,233, 4,237,247,253,244,103, 27, 62, + 80,198,103, 11, 65,100,185,168,174, 21,145,233, 37,154, 83, 70, 87, 70,242,136, +169,128,196,232,108,246,224,118,181, 55,186, 25,225,155,118,251,225, 15, 47,170, +210,117,201,149,195,216,246, 5, 49,192, 79, 69,164,243,190, 52,166,143,203,121, +232,240, 29,233, 0,182, 64, 35,135,175, 74,212,149, 42,245,182,210, 61,227,138, +101,249, 56, 39,171, 20,143, 98,215,121,171, 39,227,199, 74, 13,129,114, 28,248, + 31,184,169,105,119, 39,234, 66, 88,250,182,107, 4,150, 56,201,129, 84, 39,180, + 62, 86,138, 70,174,254,167,204, 91,153,228,164, 57, 23, 99, 21,148, 98,117,217, +129,143, 39, 8,133, 25, 33,135,101,194, 57, 91, 27,174,139,212,122, 22,253,159, + 99,190,140,171, 5,143,166, 6,148,211, 59,122, 41,212,250,139,206,195, 71, 59, + 12, 47,212,252,141, 23, 30,143, 22,196,210,214, 71,170,115,223, 80, 90, 73, 11, + 37, 29,108, 70, 79, 54, 72, 93, 11, 93,113,128, 8, 74,107,169,158,176,125,109, + 31,200, 91,154,168,187,156, 10,132, 25,107,138,148,160,146, 31, 21,206,130,113, + 70,210, 97,159,182,129, 8, 69,230,245, 88,109, 76,167,180, 80, 75, 23,196, 88, + 31,103, 44,117,131,188,173, 73,117,162,119,161,124,118, 92, 97, 62, 57,159, 70, +155,151, 85, 52,208, 5,167,222, 9,108, 50, 61,158, 89,182, 43, 51, 66,137, 72, +247, 79,203, 40, 33,138,130,141, 20,149, 47, 86, 55,133, 95,146,193,216,222,104, +197, 45, 37, 93,107, 53,217, 99,167, 86,246, 53, 78, 25,188,165,225, 49, 45,210, + 91,107,184,162,104, 14, 71, 89,114, 50, 54, 72,136, 11, 46,107,251,251,226,211, + 19,206,143,195, 14, 20, 26,117,148,176,144,147, 54,238, 8,102, 79, 50,155,242, +232, 99, 36, 40,240, 62,212,244, 18, 27,132,231,229, 69,249,250,140, 82, 77, 9, + 0,245, 13, 1, 36,101,150, 99, 14, 22,131,241,185, 26,230,131,169,250, 70,123, +110,192, 44,186,119,190, 44,186, 47, 34, 12,124,182,204, 63,212, 40, 59, 49,166, + 97,186,192,104, 12, 10, 35, 7,139,154,135,193,181,199, 60,157,214,130, 24,154, + 55,210, 85,191,199,249,102, 57, 97, 58,223,235, 6,131,182,236,186, 36, 63,155, +104,195,122,249, 12, 15, 78, 8, 81,166,133, 54,182,154, 38, 60,235, 65,194,168, +125,180,228,231, 9,111,134, 20, 77, 57,205,113,188,155, 82, 5,237,172, 43,115, + 50, 41, 17, 73,103, 71,148,132,215, 49,174,118,173,217, 36,199,216,196, 19,104, + 34,137,221,124,124,117, 28, 5,176,240,205, 90,145, 98, 53,219, 7, 25,238,188, +217,195, 72, 21, 69, 29, 45,114, 52,215, 53, 98, 40,241, 20,177,182, 91,126,193, + 55, 41, 90,252,187, 92,202,184,209,131,127,197,171,140,211,211,156,178,242,183, +116,104, 45,111, 63,237,202, 96,122,216, 33,201,202, 25, 75, 17, 97,149, 17,255, +132,101,178, 17,249,128,248, 24,249, 0,122,202,206, 71,123,149,126, 77, 45,246, + 79,194,179, 27, 8, 42, 43, 70,141,167,228,128, 25, 9,126,150,163,179,161, 68, + 7,163,228, 38,175, 31,254, 97,126,197, 73, 49,132, 63,225,247,235, 52, 98,151, +121,235, 47,156,163, 56,210, 35,235,146,126, 88, 62,165,244, 45, 8,189, 1, 67, +138,122, 83,110, 27,113, 5,163, 84, 13,213, 89, 71,215,153,172,106,247,254,197, +118,160, 0, 79,209,100,208,177, 67,214,192,202, 40,180, 72, 65,204, 54, 84, 47, +188,174, 59, 60, 1,175, 2, 25, 8,130,239,128, 27, 20, 37, 39,140,211,156,132, + 95, 43,213,155,226,219,218,237,120, 27,120, 43,175,148, 28, 60,160, 14, 16,157, + 63,119,234, 37, 34, 74,204,254, 95,135,255,101,204,198, 67, 46, 66, 30,179, 54, +177, 46,189, 5,112,163, 15,206, 12,133, 26, 72,121, 3, 53, 14,197,187,156,194, + 62,254,237,183, 35,174, 17,128, 30,184,120, 9, 73, 34,198,158,173,231, 73,230, +254, 45,229,118,240, 34,166,218, 81, 50, 93,213, 77, 70,189, 51,171, 31, 84, 54, +195, 65, 15, 97,139,167,126,236, 16,104,238,173,219,228,151,132, 98, 27,186,180, +145, 53, 22,213,175,218, 5, 15,130,193,210,233,165,165, 3,156,105,156,139,195, + 26,225,140, 76, 77,170,116,126,249, 80,130,240,116,250,173, 21, 99,233, 58,248, +193, 31,105,194,112,170,125,162,152, 29,247,113,144, 78,164,158,191, 16,212,226, + 59,143,171, 20,161,104, 98,218, 12, 48, 97, 22, 89,145,156,155, 91,187, 36,226, +135,184, 94, 98,131, 15, 87, 75,149, 91,153,112,159,253,240, 32,250,145,252, 12, + 77,178, 54,155,119, 31, 67,142,240,189,166, 68,148,131,109,195, 22, 88,182,197, + 20,156, 74, 20,145,225,130,148, 77, 8,128, 92,243,107, 56,192,180,157, 77, 34, + 46, 45, 34, 72,124, 89,163,205, 67,190,255, 60,180, 62, 80,231,101, 11,105,154, +131,212, 42, 61,236,175, 38,115, 79,183,141,246, 0,204,244,129, 4,109,207,150, +162,190,161,196,100, 78,101, 55,255, 61,196,182,106, 83,181, 45,189,125,249, 74, + 61,143,188,189,158, 14,154, 24,195,255,200, 41, 75, 13, 28, 6,185,136, 92,245, +161,128,242,152,114,162,133, 58,104,180,228, 85, 74,184,116, 76,159, 83,163,190, +240,187,251, 12,199, 40, 55,133, 4, 43,141, 11,155,161,171, 9,252, 52,130,112, +247,176,157,138, 17,106, 37,137,221, 77,116,102, 27, 40,164,208,131, 62, 96, 50, + 84,163,163,140, 41, 82, 46, 30, 84,251,185,116, 34,237, 27, 28,113,189,231,185, +206,241,242,147, 44,172,126,192,207, 94,210,245, 61,214,159,210,144,248,107, 53, + 27, 78,217, 24,223, 71,131,255,242, 26,108, 58,143, 4, 66, 24,138, 47, 66, 48, +238,154, 71, 80,140, 53,130, 63, 73,158, 29,235,229,131,136, 39,123, 79, 5,194, +138,111,144,179,217,145,165,169, 9,208, 23,133,135,191, 14, 60, 34,119, 4,108, +214, 1,179,177, 26, 74,132,104,112, 22,102, 60,110, 36, 53,240,222,209,147,203, + 97,207,210, 50, 65,122,151, 61, 49,182,232,237, 67,167,204, 44,127, 88,180,241, +175, 90,174, 13,167,111, 66,233, 24,245,105, 86,122,219,126,130,239,116,189,199, + 97,155,102,105,196, 35,183,230,120, 74,137,159,217, 75, 92,151,205,153,189, 8, +228,247, 61,160,121,148,149,147,194,170, 54,161,196,124, 86,185, 92,250,248,116, +244,190,125,163,104, 26,142,183, 43,155,234,116, 53, 60,221,111,187,134,153,110, +191,243,236, 2,204,119,111,124,116, 25,135, 38, 46,205, 27,233,100,143,245,244, +154,154,157,122,133, 71,167,221, 86, 66,202,166, 6,232, 63,145,243,216,117,199, + 98,102, 50,139,209,219,200,144, 12,192,132,226, 9, 72, 4,191,106,214,216, 28, +172,123, 59,165, 70,206, 33,180,136, 3,131,146,137, 42, 17,233,205, 58,234,250, + 67,139,153, 91,110,172,198,170,160,131,162,172,112,169,152, 98,205,241, 26,238, +145,164, 26, 37, 54, 62,164, 50, 96, 62,122,240, 75,172,201,218,172,124,209, 51, + 30, 41,226,193,128, 22, 75,165,216,183,242, 42, 8,199,218,125, 91, 40, 45,161, + 5,191, 16, 57,155,236,246, 12,233, 70, 5, 14, 38, 73,253,153,159, 84, 12,105, +148, 42, 46,253,216, 96,250,230, 6,162, 96,221, 51,128, 29, 64, 13,211,226, 53, +202,246,148,103, 90, 98, 10,101,197, 39, 98, 48,117,123, 78,221,176,207, 59, 62, + 47,206,192,205,172,218,165,106, 43,192, 80,162, 58,111, 49,214, 16,173,142, 12, +142,138,136, 28,105,131, 76, 12, 48, 65,171, 13, 81,244,195, 19,176,253,234,195, +102,237,124,209, 18,225, 4, 60,114,103, 47,128, 96, 21, 29, 68,154,103,152, 14, +127, 42,108, 55, 49,128, 39,245,120,114, 35,120,192, 12, 45,107,128, 24,116, 66, +247, 19,146,232,106,212,220, 25,179,183,129,224,138,122, 1, 47, 89, 53,233, 56, +131,139, 73, 85,248, 17,127, 32,165,126, 28,207, 79,150, 15, 26, 79, 82,132,185, +132,153,143,218,251,186, 97, 99, 20, 84,233,153, 14,216,178,117, 73,136, 88,109, + 69,125,241, 56, 14, 13,186,100, 70, 31,229, 70,235, 49,135, 11, 55,143,230,247, + 63,248, 20,105,214,187,201, 4,118, 37, 72,246,182, 79, 77, 9,160, 27,135,112, +221,220, 26, 85, 71,205,155, 79,209,173,164,212, 46,110,194,166,251,227,170, 87, + 60, 66, 65,172,252,228, 41, 12,248,149,186, 72,235, 6, 76,144, 0, 70,244,162, + 40,192,206,206, 3, 24, 97, 50, 34, 2,115,170,248, 5, 30,168,153,151,203, 37, + 7,202, 58,248,102,151, 19,188,204, 86,208, 49,173, 31, 96, 89, 4, 1, 34,168, + 64,150, 0,150, 0,149, 0, 20,234, 42, 93,189,208, 21, 59,159,154, 79,251,191, +182,157,159,143, 78,106,210, 78, 63,144,182,164,104, 61, 18, 77,169,137, 80, 17, +138,111, 16, 16,188,199,108,155,133,145,101, 6, 45, 75,154,158,206,184,115,197, +187,119, 4,253, 72,142,150,243, 75,103,139,226,128, 85, 36,173,174, 18,172,235, +176, 7,247, 28,214,117, 15, 12,123, 60, 40,229,109,176,174, 50,253, 63,245, 0, + 86,166, 74, 21,244,171, 72,198, 2, 49,248,223, 18, 83, 75,157,206,125, 91, 69, + 14,150,190,190,149,222,150, 22,149,204, 27,133,207,239,160,239, 63, 34, 14,244, + 7,147,167,226,217, 36,123,221, 19,173,116,201,193, 82,243,205,119, 18,173,130, +217,228,241,249, 21,105, 50, 88,134, 30,196, 31,142,109, 52,104,163, 65, 7,160, + 6, 51,171,165,133, 57,126,198, 75,126,162,146,248,142,193,239, 55, 65, 12,170, +201,252,166,138, 34, 68,126,242, 21, 65, 37, 69, 40, 90, 39,203, 27,141, 90,235, + 24, 85,204, 39, 81, 44, 49,221,218,114,176,234,234, 1, 17, 32,148,135,119,176, + 21,191,215, 17,218,148, 70, 37,196,193, 46,208, 27,223, 57,215,246,194,130,208, +249, 57, 14, 90,125, 57, 17,244,147, 7, 55, 97,150,160,167,112,153,195,252,172, +230,120,127,229,190,168,251,247,190,153,139, 95,125, 43,243, 94,130,196,105,244, +244,233,230, 31,122,235,163,184,242,157, 65,124, 33, 25,133,205,227, 26,186,135, + 60,215, 22, 59,170,160,143, 32,141,197, 63, 20,124,223,218, 3,112,181, 98,206, + 20,199, 39,139,246,138, 29,165,162,109,118,223, 15,191, 31, 47,197,252,111,113, + 30, 75,158,241,183,191,218, 49,234,109, 26, 38,187,104,132,119,241,180, 74, 66, +199,226,183,251,142,215,228, 55,122,252, 36,224, 59,244, 1, 5,212,212,207,126, +195,176,244,246,182,252,228, 29,146, 36, 97, 59,150, 29, 93, 43,104,138,246,130, +220, 86,247,179,211, 51,180,112, 39, 12, 39,231,151,111,145,155,169, 43,214,216, + 73,103,201, 17, 81,190,171,253,140, 35, 74, 57,207,193,217, 12, 15, 91,165,243, + 58,238,242,159, 76, 86,137,213, 20,111,195, 93,174, 12,128, 5, 25, 80, 27, 44, +200,163, 77,120,107, 59,147,154, 38,189,223,165,244,222,123,239, 39,153,105, 22, +118,122,210, 16,234,253,164, 39,149, 62, 2, 1,240, 71, 18, 52, 48, 96,121,171, + 61,174, 56,196,119, 95,238, 82,184,178,139,174,157, 58, 94,139, 65,219, 40, 42, + 16,156, 99,204,148, 99,139,115,221,251,114, 92, 71,171, 67, 10,215,159,133,243, +174, 44,187, 20, 48,161,230,117, 28,107, 71,212, 53,243,160,168, 12, 66, 62, 40, +106,132, 96, 26,199,109, 27,198,130,185, 84, 48, 16,235, 44, 94, 11,102, 26, 77, + 97,193,227,185,180,203,235, 54, 76,187, 4,135,234,168,243,156, 49,170, 73,210, + 1,195, 3, 17, 12, 46, 10,203, 99,114, 49, 12,115,241, 3, 83,176,130,112, 53, + 22,137, 75,113, 12, 37, 49, 16, 33,138, 24,226, 8, 33,132, 16, 9,100,132, 68, +100, 72,164, 14, 98,100,219,199, 18, 96, 40,128, 16,220, 17,205, 34,184,142,154, +100, 80,166,125, 20, 44, 84,184,165,147,252, 18,103, 87, 24, 33, 3,112,241,168, +215, 36, 96,245, 32, 32, 65, 78, 57, 65,133,178,170, 52,131, 17,183,113, 98, 7, +245,167,174, 87, 32,114, 16,161,177, 30, 40, 74,133,209,104,112, 25,125,202, 84, +110,117,204, 72,198,122, 81,108,217,143, 75,131, 33, 66,250, 34,212, 88,132, 45, + 0, 33,141,125,137, 92,233, 98, 7, 46,136,141, 2,193, 68,199,216, 8, 88,120, + 68,153, 93, 33,138, 68, 18,153, 2,239,169,202, 86, 79, 98,147, 64,173,104,192, +249,208, 72, 79,156,193,123,225,214,188, 20, 73,215,112,107,109, 51,185, 67,176, +100,152,211,157, 5,227,240,180, 38,189,220, 37,190,179, 99,191,188,128,206,136, +169, 82,181, 40,132, 3,238, 79, 11,175, 33,168, 77, 5,198,245,216, 14,220, 16, + 65,230, 55, 34,214, 90,195,220, 16, 68, 11, 54,210, 73, 0,123,142,142,151,177, +172, 85, 31,251,180,141,171,101,126,176,218,183,218, 5,126, 90,205,123,163,233, +178, 26, 93,109, 49,150,128,163,127,103,116,188,253,216,128, 47, 54,246,202,181, +226,162,248,137,131,205, 82,170, 19, 64,215,232,202, 53,136, 27,126,116, 92,107, + 10,253,153,136,140,183,214, 23,141, 47,215, 6, 20,181, 6,248,114,134,172,209, + 99, 13,120,119,102, 30, 88,131,186,169,219, 93,142,121,156, 93,110,237,105,193, +176,171,144,121,194,204,222, 50,169, 40, 70,247, 54,177,197, 88, 91, 48,160, 27, +163,174, 13,253, 20,255,135,249,120,157, 46, 75, 80, 0,162, 63,136,159,166,240, +214, 88, 27,244, 14, 65, 41, 12, 69,186, 81, 38, 88, 11, 37, 43,163, 56,255,241, +161, 86,164, 60,137, 5,220, 13,254, 61, 40, 10, 72,205,112,204, 66, 41, 37,197, + 58,246, 48,120, 12, 43, 34,101,150, 68,245,181,174,103, 94, 93,186,127,188,100, +250, 4,231,239,240, 35,251,225, 28,139, 86, 18, 61,113,118,117, 71,167, 22, 5, +228,132,220,106,190,197, 23, 56, 1,249,153,232, 97,140,161,223,176,107, 80, 54, +236,107, 86,190, 2,205, 74,169, 81,189,138, 94,113,127,231,241, 38,241,138, 58, +246,100,186,179,140,207,136,141,128, 25,245, 14, 69,106,143,103, 82, 43, 45, 99, + 36, 78,111, 67, 8, 72,156,159, 11,208,212,223, 44, 5,169,202,114,249,243,233, +202,206,237,200, 73, 67,199,178, 67, 1,138,168,195,108, 56, 55, 13, 31, 95, 48, +239, 30,152,113, 94,246, 78,187,129,122, 31, 21,168,130, 45,111,198, 69,147,185, +175, 97,164, 7, 65,103, 55,128,107, 84, 49, 44,187,195,139,130,161,134, 24, 4, + 83, 2,245, 61,103, 81,142,102,131,150, 51, 48, 87,187, 88,137,234, 9, 69, 55, + 77,109, 61,113,176, 50, 18,204, 40, 82, 59,215, 58,146,179, 19, 21,119,202, 34, +127, 9, 92,179,158,105, 47,124,132, 58, 1, 29,120, 7,186, 94,244,153,186, 35, +138,132, 80,144,123, 74, 90,237, 37,148, 98, 99,192,136, 62, 33,174, 80,151,194, +199, 12, 90,152,241,110,243, 86,158, 60,165, 29, 82,183, 9,180,205, 48,154, 5, + 81, 14,249, 68, 81,116,142,207,151, 9,108,226,199,144,133, 50, 20,173,113,234, + 17,113, 75,178, 90, 61, 30,221,227,221,175,249,148,250, 5,119, 96,219,243,129, + 45, 14,185,221, 36,241,147,155, 39,154, 48,172,104, 71, 25,243, 24, 54, 91, 32, +184, 53,118,155, 50, 54, 21, 86,162, 30,225,129,110, 10, 37, 18, 33, 48, 93,198, +204,193,196, 44, 65, 56,128,170,213, 29, 39,101, 92, 62,131, 99, 42,121,119, 48, + 91,198,163,111, 16, 54, 52,119,129,251, 84, 41,152, 25,123,250, 40,133,230,186, +207,131, 56,195,131,217,138,249,112,244,250,221,143,238, 49,186,167,186, 30, 12, +125, 39,117, 28,105,251, 19,135, 0, 27,195, 17,202, 25,207, 51,227,211, 52, 22, + 33,152, 51,247,209,121, 4,177,225, 93,121, 73,221, 13, 92, 81, 37, 4, 70, 1, +187, 70,222,176,112, 56,128,111,209,197,216,228, 1,222,144,252,148, 53,101, 18, +109, 66,186, 29,178, 20,137,134, 83, 47,168,117,202,207,107,210, 21, 35,139,163, + 7,153,197,104,105,164,112,228,201,240,167,223, 6,235,248,238,148, 9,168,212, + 9, 3,113,248,232,238, 9,176, 9,137, 0, 84, 41,252, 87,146,126,101, 27,166, + 84, 59, 72, 70, 32,112, 44,214,118,156, 78,114,106,131, 13,114, 10,231, 0, 97, +199, 2,104,195,209,202, 35, 8, 72, 80, 95,133,253,150, 60, 66, 6, 91,190,183, + 37, 40,151, 24, 84,213,107,250,101,247, 45,222, 85, 90, 98, 95,113,134,157,206, + 47,175,176,126,145, 20,201, 29,148, 7,254, 16, 74,147,237,185, 87,202, 67,126, +176,135,176, 92,150,105,200, 83,227,182, 43, 89,132,140,142,159,152,109,200, 52, + 40,200,147,119,118,129, 5, 89,175,248,248, 2,127,220, 18, 59, 21,165,105,137, + 61, 37, 1, 57,140, 34,148,136,197, 92,114, 3, 26,139,124, 75,113, 65, 71,211, +119, 62,145,241, 79,147, 44, 5,240, 40, 41,113,145, 37,136,107,179,169,144, 22, + 20,162,251,241,121, 26,205,189, 74, 94,179,117,210,189, 48, 62,129,152,244,232, + 77,100, 48, 35,149,161,124, 2, 15, 55,151, 11, 67,123,107,132,225, 67, 79,196, +198,193,208, 74,142, 10,114, 19, 27,137,134, 30, 79, 80,196, 7, 67, 55,158,234, +152, 72, 71,224,125,237,123,222,160,234,144, 99,168,183,188,216,193,139,141, 86, + 76,119,210,142,183,102, 12,146,100, 82, 51,204,245, 35,141,134,218, 23, 9,250, + 56,233,101,136,175,186,153,112,247,236, 72,245, 35, 2, 72, 53,250, 98,122,169, +167,234,240,232,242, 66, 96,240,165,107,171,157, 67,183, 74,147,139, 14,130, 56, +151,174, 9,218,183,246, 37,230, 6, 0,174, 98,201,133,153, 94,185, 52, 66,113, +252,123, 73,187,109, 54,241,201, 78,193, 47,109,141, 25,251,182,209, 19, 37,220, + 14, 42,172,222, 73, 70,134, 13,120, 23,192,193,128, 42, 58, 35, 96, 58,236, 9, + 2,151,100,209, 23,224,170,242,188,100, 41, 6, 63, 18, 52,192,111,185,119, 81, +135, 31, 83, 41, 21, 2,145,225,160, 85,226, 84,226,164,220,101,235,208, 61,148, +162, 27, 43, 91,240,246,151, 54,202,193,127,235, 64,234, 13, 21, 47,139,149, 1, + 18,248,141,246,165,196, 67,254,217,195,139, 35,250,240, 22,169,109, 20, 31,137, +102,170,150, 58, 66,120,240, 97,236, 33, 74, 73,172,250,109,172, 36,192,214, 81, +184, 47, 50, 45, 27, 74,106,117, 9,253,122, 99, 77,122, 22, 35, 65,250, 45,174, +172,220,210,189, 21,162,237, 28,201,156, 31,106, 9, 21, 50,241, 45,249,172, 91, +123, 72, 32,190, 47, 19, 35,126,236,208,232, 47,130, 50,248,203,181,157,101, 48, +199, 0, 80,198, 7, 24,212, 65, 52, 37, 60, 8, 65, 28,152, 75,249,197,195, 9, +202,252, 67, 22,143,155,199,210,231, 81,207, 94, 36,141,147,202, 6, 27,137,198, + 97, 4, 63, 19, 43,215,162, 53,194,196,146,138,103,151,184, 28, 14,235, 31,184, + 15,120,226,130,152, 79, 91,170,217, 53, 52,158, 74,162,137,124, 3,236,205, 71, + 47, 8, 39,164,251, 66,103,143,168, 51,210, 4, 16,117,193, 52,121, 12,237, 41, + 0, 43, 84,255,129,236,254, 8,133,220, 72,134, 56,166,135,175,164, 46, 3, 25, + 77, 36, 15,133, 10, 73,199,193,136,174, 90, 70, 9, 74, 29,254,173,135,129,198, +101,146, 81,199,207, 55,132,200, 89,141,194, 8,135, 25,164,150,135,226,204, 33, + 18, 25,102,133, 23, 10, 39, 65,147, 17,226,176,147,204, 96,157, 78,182,142, 19, +147,246,198, 71,147,122, 43,103, 33, 70,248,107,138,182, 9,206, 45,214, 52, 64, +164,161, 59, 75, 77,169, 46, 92,163, 76,109, 75,140, 59, 1,173, 13, 73,107,124, +198,194,154,223,253, 3,167,175, 87,130, 44, 59,221,186,153, 49, 48, 92, 92, 86, + 50,224,217,113,230, 72, 15, 4, 99, 80, 80, 37, 9, 95, 44, 68,119,222, 40,209, +150, 37,197, 82, 31,192,209, 12,235,152, 70,159,193,141,190, 92, 51, 90, 14,179, +238,166, 91,242,109, 83, 70,200,187,249, 35, 88,118,154,212,246, 8, 71,158, 21, +249, 23,122,167, 34, 25, 94,254,201, 9,202,198, 56,203, 69,164, 78,146,174, 75, +162,114,171, 45,251,210,105, 88,141, 37, 6,100, 63,236,107,191, 67, 93,128,209, + 19, 67,188, 5, 29, 68,193, 62, 67,245,110, 27,118,145, 22, 38, 37, 81, 19,252, +164, 17,145, 58, 65, 85,124,163, 87, 69,144,180,128,217,121, 74,178,126,115,218, +102,240,145, 3,164, 49,166,150,157, 81,200,249,177,165,251,236,253,180,115, 14, + 35,209,176, 26, 15,146,105,112,224,195,200,208, 22, 80,169,103, 15,109,231, 45, + 13,106,237,190, 89,184,144,249,192, 59, 53, 90, 33,229,244, 95,241,214,124, 86, +209,215,128,122,200,159, 6,212, 8,112,241, 31, 9,168,220,126,153, 94, 80, 2, +183, 94,178, 3, 98, 40, 22,197,235, 11,160,139, 19,253,107,103,200, 65,117,192, +177,233,145,120, 54, 36,137,242,103,147, 69, 95,212, 32, 54, 32,243, 75,227,114, +186,232,169,197,127, 15,209,175, 70, 94, 15,175,110,135, 43, 67,216,192,111, 68, +102,253,253, 70,239, 91,116, 60,254, 24, 49, 90, 60, 18,181, 0, 19, 52, 33,112, +204,196,130,239,239, 86, 53, 34, 66,210, 64,235, 74, 1, 67,204,236,136, 24,210, +234,153, 11, 39,168,122,243, 4,205,144, 94, 0,219,255, 96, 63,192, 96,100,173, +196, 99, 3,209,140,132,142, 62, 88,146, 17,111, 52, 97, 17, 22,113,210, 70, 80, +104, 64,166,157,236,175,210, 18, 31, 99, 84, 37,115, 33,192, 94,198,123,215,117, +230, 74,105, 42, 36,111, 24, 99,116,157,169, 70, 48, 22, 59, 50,175, 59,152, 52, + 10, 15,252,177, 12,104,143,243, 48, 24,236,140, 92,133,241, 40, 70, 61,222,205, +204,239, 8,225,232, 37, 41, 56,144, 42, 50,156,190,237, 22, 72, 57,144, 18,249, +137,217,126,150,113,129,121,105,179, 46,161,120,106,136,211, 96, 32, 12,170, 15, + 12,159,176,131,132, 79,230,185,205,101,221,188,130, 62, 2,192, 71, 80,104,189, +152, 64, 99,165,144,221,151, 25,207, 10, 32,142,111, 14,128,237,159,225, 4, 88, +109,111, 92,149, 37,197,122,133,215, 83,116,219, 92,255,114,184,209,166,182,216, + 68,243,154, 15,188,121, 95, 39, 65,117,104, 24, 18,145, 68,136, 71,175,159,130, +101, 87, 23,228, 92, 67, 9,188, 51,192,131,247,238, 70, 23,120, 3,206,172, 89, + 72, 3, 6,206, 12,245, 68,146,155, 53,226,221,104, 76,193,162,231,246,154, 71, + 22, 18,142,209,221,151,197,193, 77, 3, 8, 24, 72,181,208,126,191, 52, 20,153, +194,209, 73,117,182, 29, 56, 91,152, 82, 84,253,120, 84, 65, 99, 85,215, 8, 36, + 16,144,161, 79,216,170,131, 26, 63, 95,150,112,110,214,189, 25,221,133,207, 41, +143, 20,182,176, 48, 57,213,211, 63,236,167,161, 55, 47,246, 52,162,133, 75,110, +200,129,141, 2,254, 83, 67,190,102, 55,181,185,197,226, 97, 88, 25,171,114,172, +249,180, 49,116,105,155, 5,175, 46, 16,214,206, 35,136,129,144, 17,240, 91,224, +242,248, 53,244,103,182,178,185,160,234,202,235,160,207,225, 80, 76, 70, 0,238, +250, 41, 16, 58, 97,193,243,134, 88, 9, 1,241,150,150, 47,200, 99,175, 32,196, +194,129, 91, 11, 97,255,226,157, 70, 38,222, 40,253,204, 99,200, 37,172, 83, 37, + 41,182,156,111,105,172,102,149,135,118,109, 6,166, 33, 92, 30, 7, 68,101, 19, +232,203,105,209,135,205, 2,185,107, 75, 30,183,141, 73,179,129,219,131,173,132, +249,244,115, 92,157,153,247,128,221,221,220,123,196,190,198, 49, 51,121,101,169, +225,178,110,135, 48, 20,148,150,158,180,141, 61,139, 54,225, 0, 46,150, 30, 16, +120,222, 17, 44, 22, 97,123, 34, 68,114, 73, 80, 69,220, 51,232,137,124,235,197, + 77,252, 0, 51, 65, 48, 13,150, 5,240,155, 49, 15,153,128, 85, 19,174, 23, 6, +242,145,180,142, 84,218,206,236, 17,128,179, 46,215,240,140,160, 35, 43,123,243, + 41,187,108, 51,252,185,127, 29, 64, 46,109,118, 42,112,105,255,169, 39, 96, 84, +200,251, 13,252,217, 19,240,146,206, 30,160, 87,244, 62, 66, 42,114, 3, 66,136, +235,167,216, 26, 82,131,176, 74,156,171,242, 51,243, 50, 35,114,110,202,250,191, +221, 66,134,140,194,227, 3,235,160,215,213,221,206, 79, 62,204,252,188,176,199, + 15,172,161, 18,172, 3,237, 58,147,230, 40, 0, 81,231,231,146, 75,132, 8,206, +245, 89,239, 7,106,191,192,130,236, 91,191, 46, 27,137,208,130,231,213, 71,216, + 45, 90,156, 93,195, 94, 71,242,226,120, 47, 63,253, 95,192,178,245,178,187,229, + 27, 84,240, 94,191,130,108,246, 13, 21,198, 79, 57,110, 3,189,114,168, 3, 61, +140,209, 51, 96, 81,145,237,173,180, 97, 38,134,208,103,215,173,214, 49,134, 80, +180,176, 3,250,220,101, 20,210, 80, 76, 23,213, 85,112, 61,121,227,114, 76, 61, +217,127, 57,100, 40,171, 38,126,230, 18,218,213, 81, 13, 91,194, 55, 4, 46,206, +192, 69, 65,190,101,194, 54, 42,182,216, 83,175,244,213, 88, 64, 52,185,189,167, +213, 68, 0,165, 64,174, 17,234,167,132, 20, 34, 8,176,107, 4,125,235, 5,224, + 91,247, 96, 33, 70,147,201,186, 35, 83, 4,232,163,123, 68, 45, 86, 63,196, 62, +114, 88,235, 80, 70,150,123,176,244, 97,132,171,123,146, 74,233,162,249,236,225, + 67, 57,237,198,149,144,228, 69,128, 95, 53, 63,139, 77,238, 97,195, 11,253, 86, +101, 56,217,134, 8,181,245,137,197, 22,202,218, 99, 86,159, 76, 48,125, 35,169, +226, 70,227, 48, 19, 9,231,111,144,190, 58, 0,246, 4, 40,146, 84, 1,255,145, +138,157, 35, 5,172,255,136, 62,251, 84, 25, 83,227,210,237,170,173,252, 28,211, + 77,116, 40, 75,163,138,228,197,249, 66,164, 37,145,203,130,138, 1,117,156,145, +190,161, 48,230,243,133, 38, 77,196,152, 45, 59,169,110, 61,240, 22, 45,165,163, +125,162,174,212, 28,150,192, 9, 9,218, 3, 52, 54,183,215,221,255, 93,185, 41, + 65,160,179, 34, 42,174,208, 74, 77,143, 90,146,130,251,133, 77,244, 92,132,123, +192,139,190, 53,129, 89, 13, 39,115,214,236, 97,141, 94,163, 22,112,113,157,114, + 22,207,134, 38, 74,245,101, 12,140,130, 21,141, 22,167,250, 4, 23, 29, 51,224, +177,128,140, 61,158,133,162, 20, 85,182, 94, 49,195,104,173, 71,208, 19, 26,137, +232,233,134,214,208,137,145,148, 9,159, 15, 11, 33,212,197, 29,254, 54, 64, 46, + 9, 54,241, 27, 64, 14,207, 80, 64,214, 45,240,252,242, 82, 72, 6,188, 15, 5, +226, 78,210, 36, 35, 52, 33, 50,188, 72,107,116, 21,212, 77,189,233,224, 81, 61, + 90, 3,255, 72, 50, 47,182, 95, 72, 75, 24, 15, 46, 91,204,213, 74,226, 40,136, +164, 42, 58, 24,151,100,190, 35,233, 36,188, 89,177,158, 69,211, 69,143, 44,178, +191,205,176, 25, 63,145,161, 0,144,224, 81, 8, 68,160,237,243, 69,141,194, 92, +117,103,130,148,195,212,120,155,119,250,224, 98,182,217,218,119,158,201,194, 35, + 83, 86, 78,190,251, 12, 0,129,147,172,140, 82,105,112, 18, 19,155,156,176,244, + 84, 17, 92,205, 59, 85,194,214, 12,254, 26,124,239, 51,104,173, 68, 54,213,189, +118,230, 21,145,178,204, 4,163,184,136,195,232,106,188,182, 15, 83,251, 83, 53, +249, 58, 21,241,112,159, 36, 97, 51, 78, 9,130, 52, 53,167,207, 11,221,162, 12, +242, 36,121,155, 84,115,130,208,150, 25, 57, 57,114,217,112,195, 25, 53, 27,179, + 40, 3, 57, 38, 3,161, 39,192, 49, 72,134, 33,156, 39,217,225, 44, 70, 96, 18, + 68,131,206,235,127,111,166,228, 7,102, 59,213, 74,209, 92, 20,132,162,243, 97, + 73, 46, 37,161, 98, 16, 37, 1, 89, 33,131,180, 5, 18,185, 0,238, 1,160, 13, +135, 30, 94, 73,204,199,248,121, 14,191, 52,132,130, 15,216,139,153, 65, 8, 21, +214,136,184,186,221,196, 60,171,252,137,133, 65, 40,120, 69,181, 95, 72,253, 4, +118, 6,108, 49,165,213, 19, 81, 67,238, 79, 28, 9, 53, 68, 17, 74, 35, 4,205, + 70,129, 19,146,147,208, 51,124, 11, 11, 58,247, 33, 95, 11, 96,174,147,200,175, +188, 67,231,130, 29,199,112,167,187,113,165,196, 61,205, 46,194,175,136,237,233, + 34, 76, 58,155, 34, 20,172,215,152, 14,212, 53, 47,110, 25,200,249, 87,172, 75, +198, 8,168, 39,234,187, 54, 38,194,134,233,160,166,166, 95,180,123,114, 93,224, + 78, 83,139,114, 22, 61, 72,102,136, 52,206, 54,215, 34,156, 16, 0, 28, 99, 54, + 2,135,149,134, 21, 89,206, 83, 4,243,157, 36, 91,238,224, 13,194,248, 71,157, + 7,245, 50, 96,239,236,226,242,231,146,252, 0, 7,253,229,181, 63, 20,222,164, +222,135,213, 48,142,198, 68,142,108, 52,194,107, 44, 48,146,168, 84, 96, 60, 46, +168, 83, 24,177,139,163,201, 15,214, 84,172, 19,137, 61,108,251, 95,131, 93,216, +104,140,134, 79, 36, 51,156,203,228,100,209,175, 89,216, 27,229,250,102, 50,176, +100, 94,104,218,192,138, 43, 97,118,101,152,151,187,218,232, 91,205,197,223,254, + 18,178,142, 81, 29,193, 74, 8, 25, 29,105,105,234,201,133,144, 6,114,180, 53, + 63,212,182,197,212,110,100,205,154,178,147,140, 53,132,125,197,150, 76,144, 73, +232, 73, 34,180, 73,107,131, 12, 90,194,207,246,224,131,189, 66,109, 4, 4, 90, +212,163, 99,110, 39,101,127,247, 3,106, 7, 49, 3,147,211,185, 0,211,152, 73, + 10, 12,128, 53,125,233, 65,180, 91,239,238, 23,151, 2, 51,231,205, 0,246,202, + 21,199, 8, 40,192,210,129,128, 38, 21,240,238,141,221, 73,144,129, 59, 50, 4, +155,216, 68,195, 53, 70, 35, 4,235, 48,119, 23,222,100,125, 77, 14, 28, 58,126, + 98,176,114, 58,192, 57,216, 23,221,228, 68,225, 96, 28,250,150,129,213, 54, 21, +195,111,128, 42, 6, 30, 52, 71,121,164,254,133,205,153, 30,217,126, 89, 57,200, +145, 57,238,138,125, 44,120,194,142, 67, 61,145, 27, 32,180, 2,211,222, 50,183, +144,190,126, 32, 17, 45, 65, 15, 70, 64,101,105,249,163,196, 30, 1, 10, 75, 8, + 14, 40,192,150,113, 3,120,185,133,101,149,145,128, 56, 73, 8,166, 83,128,165, +194,200,227,193, 65,191, 76, 24,153, 68,180, 73,115, 24, 93,236,191, 41, 74,182, +233, 64,216, 0,217, 0,217, 0,149, 86,102,180, 84,111,142,216,105, 26,189, 44, +249, 39,211,201,108, 36, 86,226,150, 23, 22,255,100,250,200,163,243,127,114,253, + 77,186,199,143, 36, 9, 56,135, 46, 18,241, 84,210,202, 22,110,249,250,201,180, +239,104,155, 29,119,110, 29,163, 43,234,116,253,100,145,123, 83, 90, 34,160,136, + 77,130,161,161, 47, 70,245, 94, 94,150, 47,140, 29, 44,144, 68,226, 29, 10,118, +175,197, 50,123, 35, 39,253, 59,223, 79,103,131,161,113, 52, 38,209, 79,146, 10, + 77, 10,135, 52,124,245, 78,110, 36,123, 14, 11,136, 14,163,236,228, 76, 25, 10, +205, 67, 17, 1,242, 88,112, 72,116,147,163, 46, 79,179,227,234,201,171,158, 14, + 83, 77, 10, 63,158, 10,110,110,206,152,214, 80,102, 96,128,254,252, 11, 97,123, +204, 98,228, 73,253,164,117, 64, 28,135,135, 11,237, 98, 48,118,190, 73, 98,220, + 85,158,241, 50, 91,120, 78, 47,165,117,169,180,151,107, 45, 87, 99,131,184, 88, +215, 98,111, 65,208,227,190,208, 56, 86,154,194,173, 85,124,184,175,253,184,157, + 78,219,251, 49,159, 27,196,225,142, 21,134,205,249,156,161,100, 55,102, 86, 78, +143, 61,106,121, 98,172, 32, 3,180,228,207,204, 17,153,144, 96,176, 96, 16,187, +234, 78,158,170,144, 21,152,197,194, 61,162, 91, 1,118,137,156, 33, 36, 44,176, +166,105,219,228,166,231,205, 14,117,189,167,156,171,200,247, 92,198, 24, 25,139, + 24, 99,157, 75,212, 52,241, 36,121,224, 73,217,164,171,204, 22,179,133,229,137, +189,143,204,151, 26,124,208,255, 48, 87,247, 98, 33, 23,220, 57,242,223,144, 70, + 0, 26, 76,196,140,156, 36,250,254, 14, 12,144, 42, 70,230, 90,100, 64,136,104, +156,217, 53, 87,233, 75, 70,125,220, 75,148,101,209, 13,131,209,192,154,182,165, +210, 68,140,190,197, 56, 75,188, 83, 82, 2, 53, 86, 85,130, 97, 76,193, 54, 81, +141, 64,190,214,124,223,152,151,193, 1,130, 2, 63, 55,227, 65,136, 1, 95,149, + 74, 15, 14,150,101, 99,191,175,178,172,237,158,146,100,103,135,170, 46,170, 20, + 15, 28,142, 3,168, 19,160, 85,100, 64,206, 46, 52,190, 60, 90,158,102,177,224, +102, 24,255,104, 84, 3, 48, 40,212,247,144,241,145, 80,233,157,199,239,165,110, + 18,233,156,165,148, 85,183,192,225,135,163,181,155, 41, 79,122,110,114,145,188, +124,239, 85,171, 74,229,242,134,231,163,117, 58,158,141,229,188, 43,200, 21,223, + 82, 87,185,114,152,106,176,150, 58,230, 41,121,185,157,187,228, 18, 85, 77, 85, +116,241,188, 10, 85,161, 6,234,104, 32, 14, 64,123, 62, 90, 71, 68,132,135,147, +217, 32, 50,186,179,101, 16, 26, 40,179,209, 62, 22, 26, 4,228,191,247,222,123, +175,181,214,102, 90,223,203,215,170, 40, 92, 51, 83,117, 68,178,231,163, 19,230, +250,144,186, 70,195,153, 66,188,184, 51, 25, 81, 1,235, 87,218,125,222,201,142, + 75, 68,142,130, 23, 95,220,246, 70, 7, 91,185,252,182,194,121,168,110, 27, 43, +192, 13,161, 20,105,161, 29,226,174, 94,182, 17, 99, 24, 36,212, 41,189,121, 60, +232, 33,251,155, 38,191, 59, 63, 70, 42,101, 59,229,156,249,198,126,221,149,195, + 19,238, 10,194, 80,213,125, 2, 67,220,222,109,236, 23,218, 60,174, 66,166,145, +211,188,161,142,189, 65, 12,159, 48,103,150,255, 60,233, 61,215,247, 84,167, 26, +190, 19,140, 3,133,145,210, 78, 89,211,223,226,219, 66,104, 63,110,182,181,255, +154, 72,118,158,157,253,149,173,108, 63,188,186, 77, 87, 81,168,239,173,101,161, +221, 88,254,236,219,254,246,166,230,205,127,152,189,192, 36,145,159, 81, 69,238, + 42, 99,208,154,254,158,123, 34,249, 86,149, 34,127, 57,242,178, 59,107,120,249, +126,137,108,198, 29,199, 73, 11,131,223,217,251, 37,201,250,174, 42, 91,117,119, +119,119,247,229, 85, 74, 37,188,242,196, 77,105,170,184, 27, 66,120,177, 2,143, +213,168,244,250,245, 82,141, 64, 16, 0, 19,164, 0, 8, 28, 9, 10,100, 18, 53, +205, 20, 65,126,180,160, 72,131, 23,139,137,136, 21,130,162,224, 70, 16, 14, 32, + 32, 66, 1, 36,128, 0, 12, 0, 8, 0, 8, 48, 64, 0, 82,128, 97,246, 45, 51, +232,248, 74,102,129,219,234,170,188, 25,229,211,106,123, 33, 85,156, 57, 98,182, +181,128, 12,139,214, 60,192, 74, 36, 75,105,152, 73, 10, 60, 91,231, 50, 71, 55, + 44, 85,115, 97,117,176, 89,119,134,183,205,176,123, 19,173, 58, 32,146, 90,195, +155,119,180,111,155,225,174,102,203,100,171, 19,193, 8,124,185,101, 68,188,164, + 81, 48,148,168,153, 15,126,185,137,150,144,151, 29,154, 68, 85,213,176,221,185, +108, 32, 38, 76,150,131,128, 85, 37, 91, 48,115,146, 41, 35,229, 94,128,126,131, +200,200,205,173, 61,133,161, 37,243,111, 94, 23,156,140, 99,161, 98, 64,197,229, + 94,158,102, 76,208,109,221, 9, 24, 84,211,158, 23,252,138,201,217, 1,165,157, +196, 5,253, 67, 93,166, 40,198, 95,137,102,246, 76, 44, 55,121,132,188, 29, 67, + 2,223, 31,176,100, 94,128, 3,160,229,104, 54, 30,101,172,162, 84,222,216,233, +126, 48,253, 74,178, 62, 23, 89,241,200,143, 8, 88,131,232,163, 88, 52, 50,233, + 7,115, 29,240, 40,100,179,231, 56, 90, 6, 0, 62,212, 52,252,156,107,204,142, +154,233, 89, 26, 96,228,252,184,233,224, 5,224,159, 52, 1,229,120,101,141, 86, +170,169,176,132,191,230,190,188,138, 34, 85,114,117, 39,110, 51,205, 25,137,206, + 6, 3,169,153,119, 82,156,227, 48, 0, 87, 8,119,231,140,217, 66, 8, 28,159, +164, 55, 20,120, 1,174,108,199,161, 54,201,117,198,234,226,107,226,187, 96,223, + 26, 66,165, 60,234, 59, 75, 33, 56, 31, 56, 38,140,195, 70,136,143,141,182, 22, +123,220, 89,236,123, 68, 65,147,103, 28,230,233, 35,123,226,222,163, 72,129,177, +159, 57, 75, 98,180,107,184, 88, 0,239,165, 72,118,187,202, 7, 47, 70,153, 88, + 25,115, 9,151,167,227, 41, 82,202,199, 53, 93,182,152,111, 69, 46,142, 55,239, +226, 31,124,120, 83,165, 18,108,157, 74,169,182, 87, 44, 79,164,212,195,209, 53, + 74,144, 21, 54, 60, 64,109,226, 63, 41, 20,215,128, 64,249, 17,209, 39, 97, 56, + 18, 81, 54, 79,198,177,156,224, 82, 4, 45, 67, 22,155,255,103, 41, 42,142,198, + 71, 50,215,147,157,177,253,145,240,216, 19,163,183,223, 67,240, 99, 72,184, 62, +136, 37, 52,227,229, 62,105,252,132,235,109, 41, 99,234,239, 61,158,138,122,204, +140,254, 68,108, 72, 62, 49,220, 1,101,138,176, 77,194, 84, 15,148, 5, 66, 59, +127, 49, 71, 80,226,133, 23,231,101,255, 65,201, 21,130,163, 11, 64, 8, 69, 42, +153, 76,146,203, 10, 37,134,200, 55, 45,111, 54, 20,129, 33, 33,178,112,114,253, + 62,150, 53,246,208, 42,162,192, 9,245,189,149,249,222, 10,218, 33,214,125,223, +149,247,202,125,127,210,159, 34, 21,189,178, 60, 65, 16, 66, 9,133,204,122,241, +138,238, 43, 1,126,189,146,147,155, 61,193,162, 66,107, 10, 48,179,165, 36,125, +218,218, 12, 73,160,250, 0,142, 98, 89, 1,178,229,138,229,172,129,107, 9, 76, + 82, 93, 33, 73, 59,200,160,120,123,200, 46,205, 34, 88, 76, 36,184, 92, 22,233, +140,226,208,105,103, 53, 58, 55,169,100, 3,141,207,222, 5, 79,231,148, 98,135, + 16,233,219, 9,193,248,137, 43, 24,222, 44, 78, 69,210,241,150,254, 92, 64, 91, + 82,207,241, 83,151,139, 93,123, 14, 63,189,210,235,132,118, 13, 95, 3, 8,222, +222, 97, 16,254,212,103,150, 71, 46,130, 10, 93, 23,113, 25,120, 60,160,150, 63, + 57,169,197,176,161, 99, 34, 16, 52,119, 6, 91,204, 47, 19, 18,122, 92, 48, 78, +178,102, 50, 66,121,207, 71,183, 63, 41,221,112, 52,189,234,247,242,218, 93,102, +152,241, 20,168,232,188,122, 21,208,131,172, 48, 41, 67,196,232,128, 38, 65,228, +155, 80, 88,131,191, 6, 28,106,164, 76,100,164, 54, 48,156,223,105, 98, 88, 88, +115,167, 86, 36, 82,190,201,239, 72,105, 76, 46,240,196, 83,236, 69,165,164,208, + 71,190, 15, 99,118,199,189, 22,201,139,248,124, 83, 24,217,136, 36, 17, 54, 24, + 96, 94, 67,118,127, 74,233,163,208, 92,142,206, 84, 46,228,161, 82, 47,179,145, +235,184,155,139, 19, 53, 2,188, 40,203, 14,177,165,214,148,130,219,175, 61, 38, +236,201, 33,155,247, 89, 30,174,238, 96,146,239, 16,180,155,200,164, 61,116,216, +156, 8,201,200,183, 26, 29, 8, 57,166,108, 32, 59, 79,197,245, 69, 33, 19, 79, +200, 96,200,231,145,105, 82,150, 55,180,100, 52, 93,190, 69,164,178, 31,219, 50, + 13, 93, 12, 66,117,155,171,205,239, 26,143, 36, 39,179,177,110,125,205,180, 44, + 41, 69,113, 24,114,185,103,237, 40,106, 19, 6,216,206, 85,212, 86,134,237, 47, +143,168,178,236, 13, 97,237, 52, 11, 97, 94,151,122, 97, 41, 87,191,213, 72,157, +140, 94,223,197,201,234, 50,105,254,114,248, 85, 59, 23, 67,156, 70,152, 75, 1, +209,130,209, 83, 49,136, 37, 48, 2, 99, 74,154, 65,187,156, 40, 48,196, 68, 60, +188, 11,226,235,178,253,225,137,212, 33, 33, 82, 21,100,252, 50, 77, 52,188,166, +151, 64, 5, 63,145,169,239,254,125,188, 76, 37, 72, 75,248, 31, 25,225,103,137, +127, 13, 15,193,174,223, 47,217, 39,129, 88,195, 38,141,213, 46,155,242, 28,162, +221,111,214, 58,204,206, 27,145,100, 14, 85,217,175, 57, 39, 6, 38, 15, 79,231, + 42,147,187, 68, 4,164,186, 46,230, 35, 47,117, 27, 22,109, 51,197,247, 81, 25, +117, 78,168,208, 45,222, 36, 58, 53, 38,243, 38, 76, 23,254, 30,194, 47, 31,158, +238, 86,211,139, 80,112,228, 55, 70,153,206, 35, 91,183,193, 80,129, 82,152,104, + 24,245, 34,219,231,179, 1,187, 99, 24,152,147,213, 17,104,135,150,140,160,157, + 81, 74, 25, 17, 47,169, 29,240, 93,198,140,222, 29,172, 25,110, 7,164, 59,184, + 20,137,187,131,132,179,192,221, 73,194,118,174,221, 33, 21,239, 5,138,187, 10, +235, 29,191, 78,180, 2, 48,211,230, 93,211, 7,244,197,218, 60, 14,150, 19,210, + 1, 53, 77,107,208,130,228, 20,143, 12, 93,106,184,136,173, 54,185,165, 30,215, +145, 87,198,143,219, 92,175, 16,180,160,241,153,203,222, 2,228,230,100,180,135, +175,120,136, 92, 20, 32,195,129,228, 50, 36, 25, 50, 70,233,100,114,123,191, 97, +228,232,108, 25, 9,180, 53,243, 25, 56, 38, 94, 23,149,129, 82, 12,183,171,106, +147, 8, 71,119, 8,246, 29,109, 92,246, 29,236,118, 23,175,204,140, 38,111,140, +209, 10, 72,210,110,197, 56,168,222,141,215,104,195,128, 69, 10, 45,139, 55,101, + 2,233,225,110,106,158,162, 12,222, 22,248, 89, 99,223, 36, 5,216,134,134, 9, +168, 52, 43,210,178,164,187,171,216,113,181, 69,103, 56,163,162,246, 95, 91, 83, + 90, 68, 36, 40, 89,107,139,218,207, 50,216, 79,177, 44,148, 41, 75, 85,110, 44, +237,112, 97,121, 71, 56,190, 18, 16, 35,232,186, 18, 78,254,117, 42,158,120, 39, +122,132,130,235, 88,141,200, 36, 81, 34, 94,113,125,196,140,248,175,210,249,204, +154, 18, 66,149, 36,113,166,146, 92,167, 4, 98,213, 66, 40, 66, 82,172, 59, 42, +161, 20, 66,213,107,199,152,102,120,224, 9,228,201,133,154,137, 13,247,214, 97, +139,127, 95, 2,233, 55, 95, 80, 18, 13,246, 86, 28,172, 34, 1,253, 43,175,134, +211,145, 39,138,232, 61,143,181,103, 98,136, 72,110, 47,175, 96, 69,218,207, 25, +107, 94,109,138,164,134, 76,180, 84,180,121,209,118,206,113,183,148,187,163, 36, + 29,114,152,197, 21,231,186,144, 72,240,133,188,210,129, 51, 34,126, 60,183,136, + 16,228,103, 15,195, 72,229,169,192,113,200, 14,101,139, 41,139, 54, 36,129, 19, +156, 36,177, 53,236, 6, 71, 66,198,139,148,249,200, 9,145,247,115,172, 61, 18, + 44, 83,144,141,115, 30,201,110,152,147,130,172,135,175,189,191,202, 81,182,109, +202,130, 33, 84, 74, 66,229,237,179, 2,239, 87,191,179,232,135,192, 53, 59,206, +208,241,209,118,240,235, 4,187, 16, 59,242, 67,148,161,161,235, 32,222, 14, 73, + 16,166,180,131,204,196,230,226,241,197, 25, 74,107,189, 35,140,181, 67,255,116, +112, 18, 12,113, 83,218,212,178,218,167,234,233,214,108, 67,203, 49,142,116,213, + 47,115,219, 1,167,206, 17, 4,233, 8,252,155,237,232,120, 71,196, 62, 67, 50, +190,204,107,195,242,190, 34,141, 7,220,119,250, 88, 51, 33,236,192, 8, 48,160, + 60,186,224, 20, 67, 58,202,215, 54,132,235, 89,202, 68,104,132, 50, 47,226, 19, +230, 51,154,193,212,159, 74,196,190, 30, 55,219,198,221, 29, 31, 40, 25, 7,169, + 11,202,154,244, 5, 95,246, 36,171, 73,179, 94, 5,208,105,120,161, 97, 8, 71, + 25,156,145,230,215,105,116, 38, 29,119,137, 79, 84,101,115, 99, 83, 40, 53,179, +111,223, 41,120, 1,158, 48,151, 7, 27,196,121,162,143, 5,137,160,112, 96,130, +148,157,168,168,184, 0,119,194,251,216, 87,188,215,100,208, 25,195,168,174, 71, +209, 79,243, 38,126,185, 96, 70, 70,252, 14,188,207, 62, 23,198, 90,186, 7,149, + 94,161, 55,132,159,170,208,193,142, 9, 36, 7, 89, 98,172, 29, 56, 97,135,135, + 79,183, 35,184, 62,255,120,237, 33, 50, 33,135,179,237,118, 35,110,100,238,193, +105,161,177,243,151, 38, 29,216, 22,159, 23, 88, 16,215, 15,236,136, 47, 4, 0, +176, 83, 21, 99, 35, 82,219, 83,151,180,187,160,118,222, 60,213,221, 60, 33, 10, +113,106,135, 25,158, 27,219, 35,104,164, 56,199,232,235, 82, 53,252, 73,155,252, +185,233,225, 26, 34,157,186,235,110, 54,123,129,211,206,109, 90,222,146, 72, 69, + 4,140, 8, 4,231, 34, 0,189, 60, 86, 36,176, 11,107,230,132,234,238,248,174, + 81,155, 79,230,210, 68, 50, 76,118, 92, 92, 19, 68,102,167, 97,207,113, 51, 15, +163,170, 0,230,140,113, 54,223, 53,236,113, 92,205,124, 37,244, 56,227,232, 36, +129,113,111,136, 10,175,109,203,211, 73,248, 91,106,158,143, 60, 84, 11,163,211, + 90,154, 35,207, 76, 85, 98,245, 80,120, 53, 31,220,253,195,219, 85, 27,227,197, + 91,182,216,234, 69, 62,174, 30,209,103,113, 1, 16, 17,172, 5,230, 60, 4, 0, +157,140,115, 61, 50, 18,154,178,102,100,108, 14,149, 31,126,157, 72,228,160,209, + 41, 37,202, 95, 49,133,132,111, 86, 49,242, 15,149, 12,189,217, 85,157, 74,211, +160, 60,134,100, 74, 23,238,205, 96, 70,230,138, 16,205, 20, 11,133, 19, 61, 38, +153,246,113, 33, 37, 19,190, 52, 50,150, 12,141,156, 81,184,176,223, 52, 17, 70, +165,239, 16,149,225, 27,112,146, 63,232, 42,191, 32,171,112,146,186,200, 74,114, + 5,232,161,189,154, 72, 80,236,113, 48, 97, 14, 85,158,104,169,137, 47,208, 38, +137,208, 13, 92, 39,245,147, 84, 82, 0,113, 20, 36, 36,198,108, 17, 2, 54, 22, +248, 35,146, 20,147,172, 59,150,240, 48,139,203,154,177,126,243,209, 83, 98,228, +140, 85, 55, 32, 36,224,101, 49,242, 45,183,142,161, 53,167, 17,139,227,100,105, +117,163,218, 87, 58, 46,241,219,195,232,222, 42, 65,110,187, 78,169,161,192,163, +158, 59, 58, 9, 95,235,160,155,113,196,164, 81,104,228, 73,207,132, 70, 37,121, +251,109, 13,203,157,163,126, 43, 31, 73,204,178,194,162, 99,217, 78,214, 77,244, + 13, 47,147,190, 46,116,217,111, 27,156, 33,217,246, 63, 60, 50, 75,189,119, 70, +203,246,139,144,203,173, 52,192, 21,119,240,228, 60,153,134, 40,160, 78,195,137, +139,225, 8, 85, 7, 14,166,136,154,139,196, 29,136,178,116,153, 75,165,159,163, + 42,203, 76,199,232, 98,211,242,249,126,101,118,209,200,195,165,221, 14,194,137, + 66,189, 79,147, 75, 4,251,211, 15,209, 89,240,182, 53,125, 16, 32,135, 27, 63, +167,209,124,166, 42,162,215, 8,249,154,170, 50, 20, 3,191,116, 54,151,239,173, + 28, 45,184, 90,185, 33,182, 97,245,215,244,188, 21,128, 27, 22,208,174, 64,171, +195,190,160, 72, 33,201, 60, 64,118,183,224, 93, 66,132,121, 34, 3,180,247,155, +146,215, 97, 3, 28,159, 78,181, 7,152,203,138, 83,206, 58,212,107, 91,143, 88, +115,143,255,181, 88,113, 64,204,148,102,105,230,228,112, 75, 60,189,104,196, 8, +114, 6,208,183,128, 28, 7,166, 2, 0,226, 65,129, 9,236,247, 99, 87, 4,206, +116,191,140, 21, 18,188, 98,102,123, 38, 1,250, 65,227, 47,203, 32,119, 72,229, + 40, 16, 11,158,213,195,226,180,232,157, 56,188,133, 74, 62, 14,136,115,112, 39, +139,229,140,129,180,158,117,149,196,145,136, 92, 7, 80,228,129, 57,199, 83, 14, +199,189,110, 83,184,105,151,228,163,148, 44,146,242,124,201,102, 57, 3,122, 37, +179, 77,237,120,243,213,224, 14, 29, 94,129, 60, 33,241, 49,152,238,168, 79,175, +107,199,109,188,203, 19, 38, 28,219, 68, 14,160,195,131,207,131,252, 11,242, 71, +136, 14, 90,132, 53,184, 58,193,178,111,156, 78,190, 2,229, 94,231,227,124,145, +167, 30,179, 55,212, 36,122, 20,243, 5,234,100, 30, 99,218,161,142, 61,199, 20, + 63, 93, 32,126,210,229, 36,203,128,142,210,149,182, 18, 13,149,139,171,198,114, +142, 24,237, 9,143,185,157,158,187, 1,207, 91, 33,153, 99, 3,159,189,232, 51, + 53,211,177,225,181,217,172,198,236, 33, 80,151, 20,189,172, 42,180, 58,228, 51, + 2,247, 1,214,109,156,104, 97,125, 97, 44, 5, 59,114,191,176, 53, 38,215, 14, +218,232, 49,137, 33, 95,169,203, 28,186, 31, 18,124,169, 62,228, 77,183,150,161, + 56, 85,153,196,226,199, 73,250,255,195, 74, 2, 31,214,101, 77, 32, 8,244, 43, +145,136,159,247, 67,186,191,252,246, 7, 20, 88, 71,214,142, 65, 2, 23,163,235, +116, 9, 98,249, 70,155, 71, 67, 79,130, 24, 54,163, 50,184,224,251,162, 8,112, +100, 59, 56,154,119, 39,140, 20,115,250, 14, 65, 26,174,231, 73,229,181,145, 29, + 72,217, 29,224,245, 11, 8, 25,117,177,111, 36,175, 34,224, 45,235,234, 36,172, + 32, 79, 58, 99, 69,166, 35,233,238,114,234, 66, 94,179,101, 36, 2, 14, 55,201, + 43,210,146,239, 31,209,142,179,202,201, 71, 7,176, 25, 65,229, 31,109,234, 96, +164, 18, 75,251,127, 71,114, 56,176, 56,248, 10,237,115,195,176, 24,109,164, 3, + 77,202,140,171,174,121, 44, 68,109, 71,245,156,207,236, 43,146,200, 31, 75, 35, + 59, 64,135, 40,235,138,203, 24,147,158,255,244,230, 52, 70,218,219,135, 64,218, +210, 38, 15,141,208,151,117, 84, 9,182,233,198,105, 43,122, 99,207, 99,134,100, + 9,100, 72, 68,161, 39,177,135,218, 15, 33,215, 10,135, 67, 92,216, 82,198,154, + 76,223, 72, 64, 20,110,172,224, 21,172, 1, 19,199, 21, 66, 41,132,134, 8, 7, +243, 40, 2,105, 40, 17,250, 77,199, 30, 55,200, 47,121,161, 60, 22,202,194, 72, + 29,195,203,231,163, 87,202,112, 60, 65,139,188,224,142,146, 29, 30,106, 97, 41, + 4,172,138,158, 26,169,201,166,229,129, 34,185, 24,157,140, 76,182, 40,122, 85, + 22,237, 19,158, 14,129,132,221,132, 70,168, 48, 44, 90, 27,111,158,161, 69, 43, +120,113,186, 86, 7, 95, 82,197,215, 80, 54, 42,110,103, 24, 15,166,133,207,115, + 1,121,203, 78, 87, 18,156, 7,195, 57,240, 75,109,171, 24, 82, 42, 42,104, 61, +220, 41, 76,127,158,213,211, 25,137,248,204,134, 18, 52,127,209, 92,131,121, 1, +187, 22,139,220,160,161,130,107, 5,186,192, 58,128,139,148, 84,204, 5,108,145, + 86,185,201, 23,163, 62,134, 83,250, 41,220, 38, 50, 18,166, 42,248, 32,162, 25, +235,219, 55,250, 17, 32, 80,187, 53,130, 92, 11,198, 71,156, 72, 23,172, 88, 60, +165, 1,163, 3,208, 81, 36,150, 23,129,234, 22,137,153, 97,168, 90, 58,152, 45, + 41,240, 74,109, 38,200,218, 43,174, 80,163,112, 73,190, 3,116,124, 34,204, 25, + 38,186, 5, 13,231, 7,210,110,184,184, 83,214,197, 87,168, 6, 99,197,205,154, +207, 9,144, 90, 11, 27,219,179, 63,210, 47,235,206,150, 22,193, 52,133,201, 7, + 66,189, 77, 93,131, 54,219, 98, 53,132,225, 69,161,111, 80,231,193, 25,180, 8, + 3,207,162,205,128,192,118,176, 2, 8,200,106, 6,205, 74,247,173,190,123, 69, +217, 36,255, 17, 35,196, 51, 51, 14, 81, 8, 3,117,188, 82,121,233, 60,215,118, +174, 82,152,172,163,127, 37,235,255,200, 22, 1, 3,185,157, 93, 7,238,112,140, +146, 37,233, 44,195,113, 19, 50, 7,121,206,101,168, 15, 9,210, 59,169,157, 24, + 2, 4, 50,131, 0, 67,169, 86, 86, 27,157,132, 27,147, 40,203, 21,159,202,162, +247,101, 21, 83,140,142, 78, 55,170,161,138,243,255, 40,216,139,244,109,106, 93, + 71,210,105,180, 26,128,234,234, 13, 74, 59,165,148,244,250, 98,187,255, 80,236, + 14, 75,222, 92, 19, 60, 11, 39,102, 76, 50,197,238,187,214,250,153,218, 39, 16, +188,166, 95,136, 45,246, 56,164, 27,127, 1,188, 36,144, 21,253,250,158,214,244, +245,144, 95, 18,106,245,158, 28, 79, 85,134,146, 40,200,227,244,188, 94,226, 9, + 48,201,155, 50,247, 92,111,255,164,254,136,218,186, 11, 25, 95,255, 38,137, 64, + 50,183, 43,212,184,122, 40,191, 34,242,100, 92, 53, 81,158,160,245, 1,188,237, + 45,145,177,186,123,120,108, 68,125,167,134, 29, 14,133, 10,224, 82,228, 53,127, +218,173, 31, 16,182, 79, 21,150, 84,211,176,227, 63,209,253,190, 37,133,207,118, +109,197, 31,245,214,142,110,100,190,216, 38,162,136,248,198,211,252, 62,212,173, +159, 71,113,222, 16,177, 39,195, 21,184,157,198,149,206,185,179, 6,197,207,145, + 2,144, 26,136,230, 18,144,209, 96,219, 25,193,217, 36, 63, 11, 5,127,206,244, + 46,206,213,243, 4,204, 9,160,103, 92,191,183,237,225,208, 78,236, 73,246,132, + 3,240,253,161,166, 31, 43,145, 69, 44,187,121,104,248, 67, 50, 39, 30,123, 59, + 33,244, 58,225, 61, 63, 86,193,204, 4, 39, 15, 31, 86, 72,209, 60,111,249,177, +165, 41, 69,231, 64, 57,106, 64,148,105,123, 70, 79, 71, 45, 41, 29,225,218,213, +231,155, 6,203, 95,110, 89,194, 70, 57, 28,176,223,189,109,249, 75,127,200, 22, + 60,197, 79, 20,107, 0,139,223,111,246, 97, 36,168, 82,133,137,236,130,173,251, + 17,121,126, 39, 64,234, 11,230, 92,205, 32, 55,107,130, 27, 52,162, 51,150, 26, +196,252, 81,132, 56, 44,108,158,176,183, 73,123,149, 22, 74, 7,210,184,157, 58, + 3, 44,163, 9,250,131,130,161,208,189,195, 91,185, 87,255, 93,183, 65,254, 87, +236,211,117,191,174,105, 47,198, 29, 23, 40, 19,153,114, 27,209, 13,111,217, 71, +243,243,243,122, 58,242, 2, 28,136,136,100,169,197,101, 93,229,140,223, 54, 18, +252, 89, 21,197, 21, 63, 41,219, 84, 57, 52, 33, 87,199,112, 94, 77,200,129,134, +209,141, 20, 44,178,123,115,122,221,227, 32, 7,242, 35,218,178,174, 76,226,178, +230,181,126,175,231, 40,103,221, 85, 33, 30,230, 92,151,109,148,231, 30, 80, 68, + 80, 12, 90,255,152, 73, 54, 81,229, 4,211,241, 78, 50,146,183, 17, 56,130,184, +206, 83,134, 64,156,174,119,247, 48,129,227, 1,180, 14, 9, 18,161, 87, 88, 60, + 54,170, 31,168, 6,137,139,163,105,176,108, 56, 22,197, 91,248, 50,135,145,155, + 7, 43, 41, 35,163,200, 5, 59,149,105,142, 31, 26,234,183,118,148,174, 0, 87, + 61, 84,249, 51,151,115, 10,183, 9,253, 65, 71,187, 47,208,173, 79,125, 40, 59, + 81,208,241,247, 39,166,117,197,147,105,139, 33,140,156,232, 8,131, 1,206,108, +148, 1, 20,110,173, 76,131,211, 43,246,164,191, 87,182, 84, 62,158,161, 69, 45, +189, 94, 24,157,161, 79,224,233,163, 17, 79,166, 87,157,107,125,115, 75,201,171, +162,111, 60,186, 78, 90, 49, 72, 61,220, 87, 52, 53,213,137, 26,174, 61,177, 82, + 41, 82,127,100, 47,133,216,193, 5, 8,187,161,205,128,220,113,193,121,224, 22, + 55,169,159,194,133, 10,132,214, 83, 45,170,174,209,196, 9, 79, 39,237,168, 14, + 24, 83,224,212,154,236,203, 80,105,162,174,108,217, 81, 76, 28,209,209,167,230, +250,133,174, 8,166,162,192,196,255, 20,244,115,159,115, 67,118,212,191,104,112, +216, 97,217,186, 15,159, 67, 12,101,171, 50, 8,158,238,114,159,195, 68, 56, 55, + 61,196,250,110,235, 67, 40, 56,135,104,249,242,173, 9,166,175, 78, 85, 42, 95, + 94, 19, 3,151,224, 69, 78,169, 12, 57, 47,176, 93,191,167,192, 42, 88, 15,194, +212, 28, 55,169,183, 32, 73, 25,172,219,147,218,228,125,248,177, 42,154, 15,247, +147, 65, 39,248,238,173,129,176,141, 82, 70,114,118,205, 78, 7, 30,159,104,189, +109,233, 9,198,202, 59,117,119,108,247,155, 50,156, 13,229, 18, 39,217,250, 11, + 47, 32,149, 30,108,146,150, 93, 24, 58, 56, 94,207,253,157,191, 35, 54, 61,179, +187,152, 32, 88, 44,105, 0, 1,217,168, 39, 48,176, 82,212,219,187, 13,218,125, +174,167,249,162,158,236,129,180,118, 16, 2,250,214, 70,132, 24,165,214,167, 45, + 27,192, 92,199,211, 84, 47, 78, 27,207,129,200,169,156,153,234,102,242,144, 97, +244, 1,170, 62,121,107,204,188,228, 16,234,230,204, 72,228,132, 64,242, 18, 56, +207, 83,146,248,113, 67,250, 70,142,161, 14, 45, 35,183,166,226, 36,228,113, 45, +137, 90,150,104, 23, 5, 67, 14,159,112, 76,196,233, 49,191,203,231, 74,254, 41, +148,119,225, 19,228,130, 91,186, 14,228,240, 18,182, 52,103, 43,228, 23, 52,184, +244, 56,160, 95,109, 13,194,253,244,183,190, 5, 25,166,227,130, 63, 57, 85, 29, + 63, 24,156,116,102, 38, 64,147, 28, 9, 13,196,151,242,136,255,140,105, 27, 71, + 50,108,196, 21,147, 26,232,115, 56,142, 25, 97,111,185,113,226,198, 61,206, 46, +227,109, 92,144,177,113,111, 35,243,139,251,243,158, 67, 47, 46,118,173, 12,119, +113, 64, 51,183, 92,250, 81, 62,105,175, 10,106, 44,116,100,126, 30, 15, 89,235, +236,200,143,184, 25,176, 27,144,235,140,194,104, 70, 84,173,198,164, 69, 34,171, +156,110, 11,207,122, 94, 3,229, 23, 64,208, 18,225, 2, 47, 95,178,104,205, 20, +234,133,196,211, 45,192,190, 41,235,219,186, 3, 59,153,110,158,198,239, 59, 64, + 82, 55,173, 13, 72,139,175,126,123, 99,174, 51,194, 64,193, 55, 56,204, 55,223, + 10,134, 15, 91, 5,211,108,156,126, 60,140,159,112, 11, 39, 43,100, 53,174, 52, +173,207,230,232,173,230,184, 97, 12,148, 34,241,148, 37,222,242, 38,222, 42,143, +206, 63,208, 56,116, 80,206, 93,119, 79,215,251, 72,148,143,234,206, 24, 21,252, + 40,242, 78, 29,114, 14, 62,200, 25,203,247, 51, 31,166,150, 32,224,134, 55,138, +142,206,240,250,235, 98,200,189,134,163, 61, 51, 26, 32,126,210,231,245,111, 26, +160,193,208,130, 16,182,151, 94,200, 79, 68, 42,144,102,131,232, 15,114,150,163, + 69,228,221, 68,114, 38, 17, 23, 94,146, 15, 75,133, 4, 27,220, 21,152, 74,157, + 20,221,208, 66,118,189,135,164, 53,148, 97,156,209, 27, 37, 72,148, 79,246, 63, +243,105,168,167,191,142,170,224, 23, 4, 69,161, 13,252,123,100,216, 58, 84, 63, + 53,123,233, 53,134, 59,128, 47, 61,246,225,139, 90,200, 97,221, 32,168,199,224, +220,140,108, 39, 92, 3, 78,135, 69,225, 2,107,188, 20, 91, 37,151,246, 56, 28, +216,241, 20, 2, 36,173,125, 54,204,222, 37,163,237,247, 24,114, 91, 13,233,247, + 23,216, 97,200, 51, 94,173,240,174,201,202, 4,197, 78,229, 8, 25, 74,117,100, + 66,209,213,117, 92,215, 85,190, 5, 72, 62,134,128,135,118,124,109, 45,106,209, +117, 32,218, 48,100, 94,228,116,137,246, 40,210,212, 50,253,135,100, 64,169,157, +208, 0, 40,213,167, 54,164,184,150,220,122, 44, 29,118, 57, 73,144,127, 80,179, + 80, 59,168,161,182, 95,234, 98, 44,151,211,214, 2, 95,166,110, 60,124,202,176, +169,170, 59,248,202,157, 72, 56, 61, 87, 38,182, 9,167, 67,241, 0,142, 94, 51, + 68, 89, 94,124, 14,147,196,243,182, 34,164, 25,231, 15, 97,129,104, 91,132,169, +237,154,125,198, 9,136, 30, 25,140,187,245,250, 58,230,178,176, 28, 72,148, 34, +235,202, 97,251,181,136, 53,109,222, 94,121,212,234, 85,128, 22,169,143,249, 81, + 96,175,199,102,168,182,108,254,226, 47,132,143,116,239,139, 88, 72,188,126, 2, +185, 59,212, 95, 80, 47, 10,183, 71,221,146,230, 62, 77,214,185,247, 0,166,239, +217, 45,255, 29,244,169,194,175,167,128, 30,224,111,203,234,128, 53,108,146, 29, + 15,139,208, 94,120,142,255, 81, 47, 81,167, 8,176,209,230,252,197, 74,208,195, + 49,247,206, 9, 16,194,212,223, 52,201,121,224, 11,173, 1, 26,196,163,140, 23, +158, 12,156,244, 88,209,146, 26,149,168, 32, 1,112, 36,180, 45, 20,144, 15,133, +109,185,227,246, 49, 54,160,190, 10,239,197,231, 65, 46,187,232,110,237, 72,249, +120,252, 3, 43, 25,219,248,238, 18,101,224, 75, 76, 56,226,208, 52,244,132,153, +193,121, 8,227,231, 71, 2, 56, 14,247,228,143,221,200, 1, 28, 21, 90, 37,193, + 51,212, 66,240, 97,128, 32,155, 41,238,215,196, 34,135,121, 84,118, 7,215,172, + 6,238,187,214, 83, 28,150,151,175,192,227,152,223, 85,143, 92, 75, 41,119,158, + 48, 52,252, 11,155, 18, 61,216,227, 61,252, 85,164, 38,120,164, 91,145,125, 64, + 88,255, 47,253,155,100,254, 12, 9,126, 48,241, 22,239, 92, 90,221,222,119, 45, +192, 19, 55,247,208,249, 88, 50, 39, 56, 11, 83,242, 84, 14,102, 38,232,150,141, +107, 16,177, 76,198,193, 16, 17, 22,146, 90, 1,208,221,121,240,242,168,194, 92, + 31,228,246, 91,226, 20, 92,130,104,138, 14, 10,124,209,126, 81,106, 52, 55, 78, + 0, 88,123,231,251, 22, 91,153,109, 18, 20, 46,178, 0, 10,241, 64, 78,137, 7, + 57, 9,196,232,225, 52, 55,149, 62, 84,215, 30,233,101,167,242, 92,218,115, 18, +200, 65,141,107,161, 49,109, 51,144, 25, 28,207, 39,125,202, 45,196,253, 86,106, +172,220, 73,239,143, 22,233, 13,157, 64,196, 58,212,102, 80, 54,172, 80,153, 17, +101, 0, 32,189, 22,185,203,121,242,121,135,132,143, 32,158,198,119,248,129, 93, + 41,132, 28, 17, 93,161,238,151,225, 5, 32,246, 63,169,249, 47,169,234,228,167, +179, 72, 29, 19, 8,119,116, 19,203,139,219, 58,155,152, 59, 88,172,198,173, 2, + 76, 40,150,136,218,139,212,249,224,208,179, 53,122,198, 84,101, 29,146, 27,177, + 89,176,205, 90,207, 71,170, 21, 13, 46,111, 58,154, 83, 38, 61,117, 76, 44, 80, + 37, 8, 23,164, 89, 80, 69, 22,210, 38, 71,185, 90,194, 50, 36,228, 46,110,164, +167, 8,244,145, 75,111,156,240,169, 35,152,167, 62,160,227,234,141,219,198,164, +144,192, 67,220, 29, 78, 44, 37,233, 38, 48,120,212,245,230,182, 20,252,128,162, +168, 77,172,198, 37,157,206,124,106, 93,164, 45, 35,199, 3,140, 34,100, 28, 83, +218,230, 9,121, 19, 81, 63,118,255,197,195,242, 46, 9, 68,105,135,240, 11,247, +115,162,255, 96, 62,185,184, 8, 38,108, 85, 96, 75, 73,237,225,203,160, 80,104, + 59,141,245,232,169,213, 71,166,207,203, 63,254,107,154,181,181,108, 39,188, 49, + 69, 64, 21, 19, 56,195,122,205, 82,216,172, 94,226,246, 86, 53, 26,201, 33,214, +145, 0,117,107, 29,213, 99,145, 60, 94, 77,113, 85, 99, 18,166,204, 18, 33,230, + 35, 35,163, 84, 88, 77,145, 74, 28,218,201,201,130, 66,128,229,245,212, 5,128, + 66,161, 40,174,135, 2,186,150, 57,182,255,137,135, 99,226, 7, 2, 63, 6, 76, +195,177,137,103,128, 54, 14, 58,229,141,254,244, 82,187,105,115, 54, 15,174,236, +119,105, 34,159,110, 26, 17, 30, 45,120, 48,128, 12,156,136,178,129,187,146, 35, + 34,217, 4, 88, 7, 21,138,248,172,200,147, 19,157, 81,252,126,207, 78, 73, 16, + 96,120, 82,187, 92,158,209, 15, 77,183,222, 42, 9, 68, 72, 81, 13,129, 11,239, +184,169, 30,126, 66,173, 60,213,205, 45, 57,156,240,132, 4,105, 14, 2,176, 51, +205, 78,218,238, 12, 65,191, 85, 24,212, 40, 49, 21,189, 95,184,226,189,156, 30, +128, 6, 18, 45,203, 9, 20, 89,217, 32, 65, 50, 71,143, 58, 75,108, 63,224,130, +243,177,171,105, 10,228,208,186,139,142,224,249,205,122, 59, 42,135, 4, 59, 68, +162,103,229,240,206,225,167, 69,122,207,220, 88,102,152, 11, 22,156,162,206, 14, + 58, 66,224, 15, 0, 96,144,230,104,100, 95,176,191,148,133,144, 86,236,193, 74, + 6,113, 98,110, 10,159,215,117,169,136, 94,215, 6, 29, 20,111, 54,124, 79, 90, +240, 27,166,241, 29,181,228, 84, 58, 98, 25, 45,108, 33, 23,253,108,195, 9,179, + 20,162, 41,181,233,183,154, 30,181, 93, 27, 54,161, 95,161, 74,214, 74,115,214, +169, 55, 69,119,174,169,101,203, 84, 94,133,226, 98, 2,105, 58, 32, 48,134, 35, +132, 1,209,199, 7, 95, 11,165,231, 81, 68,113,216, 3,236,221,221,210,106,112, +100,215, 29,190,207, 29, 19,193, 58,126,105, 69, 99,164, 72, 51,197,219,106, 55, +230,155,227,193,113,143, 10,141, 14,189,240,132, 79,206, 4, 1,144,237,237,244, +252, 28, 80,143, 33,179,111,203, 54, 92, 90,225,110,163, 44,226,120,208,175,175, +132,243,252,183,235,206,254,164,147,103,235,123, 25, 84,100,194,164, 19, 66,177, + 79,135, 86,174,230,188,211, 53,230,187, 30, 52, 15,210,192,136, 59,188, 27,180, +150,122, 78,248, 79,103, 81,154,123, 44,231, 12,206, 10,245,165, 45, 29,111,178, +143, 52, 31,165,169,162,176,154,205,102,150, 30,202,173, 23, 27, 79, 2,145, 65, +122, 62,107,168,202,198,145,243,198,110, 23,194, 22,162,181, 16,143,177, 71,171, +228,201,154,255,159,240,133, 37,230, 97, 69,137, 63,245,183,222, 39,233,116,213, +253,134,107, 30, 23, 95,148,178,184, 11,106,132,100, 52, 68,221,248,254,169,158, + 81,184,223, 44,164,221, 62,121,191,188,228,147, 28,144,214,235, 44,213,173,194, +196,220,117,201, 69,237,214,162,187, 24, 57,246,211, 40, 61,132, 41, 38, 21,222, +216, 19, 85, 25, 97, 40, 83, 54, 90,254, 30, 60,225, 25, 58,225, 81,210, 14, 39, +213,177,125,220,194, 41,114,102, 26,146,186,135,174, 52,228,131,206,155,142, 85, + 11,170, 66,163,126,168,235, 27,212, 18,117, 34,173, 99,111,232,245, 64, 86,127, +248,233, 37,105,116, 50,106,115, 84,177,100,199,116,213, 93, 59, 63, 50,146,144, +252, 16, 56,173, 71,120,218,168, 35,160, 28, 6,225, 68,103,109, 15, 29, 42,149, + 39, 71, 44, 41, 59, 78,172, 32,123,202,207,198,132, 37, 67,118,240, 94, 26,180, + 16,162,232, 96, 69, 14,140, 90, 31,202,198,219, 99,110, 51,220, 97,183,141,191, +183,185, 22, 58,151,213, 13,228,215, 73, 42, 97,242,214,147,156,100, 5, 47,108, + 81,209, 22,167, 17, 97,192, 41,181,235,171, 10, 93, 40,134, 19,146,147, 87,238, + 53,151,243,117,177,112,222, 93,152, 93, 4,186, 51, 19, 18, 96,132,218,103,194, +121,247,251, 97, 86, 56, 71, 76,196, 15, 91,135,198, 71, 8, 79,193,229,163,102, +176,212,115,238,240, 12,185,102,229,166, 82,161, 95, 53,151,226, 56,176, 25, 15, +114, 0,245,122,126,121,199,225,142,203,118, 61, 70, 65, 38, 9,136,219,220, 90, + 15,190,251,146,215, 50,137, 13,132,121,144,170,134,116, 58, 63,188,179,142,195, + 90,213,102, 21,254,185, 76, 36,195, 63, 2, 58, 28,106, 78,222, 40,227,210, 73, +111,210,215,191,101,236,177,209, 38,133,151, 37, 52, 45,198, 23, 86,235, 13, 89, +171, 69,163,114,231,173, 14,135,174,224,223, 96,139, 75, 68, 21, 30,204,254,172, +228,223, 64,162,233, 88,253,230, 25,133, 77,241,202,116,198,246,135,189,175,245, +123,116, 49,165,231, 66,209, 5,150, 12,194,157,183, 65,242,229,189, 64,122, 61, +193,142,235, 70,236,142, 45, 76,115, 32, 84,200, 59, 9,219,184,163,158, 83,221, +139,148, 46, 72, 87,224,254,248, 83,238,109,198,225,108,172,150, 5,233, 44,172, +102, 4, 67,144, 5,206,105, 23, 37,236,233, 30,137,167,106, 22,149, 73,188,163, + 85,153,140,196,118,236,255,168,246,171,184, 58,126, 43, 7,206, 95,115, 29,111, + 99,231,180, 5, 68,234,135,145, 90,101,244,169,224,109, 69,241, 98,226, 10,227, + 49,248, 21, 76, 88,121,252, 63,224,209, 76,145,173, 18,132,139,226, 27,173,228, +145,113, 49,208, 5,195, 81,157, 55,142,154, 1,212,109,105,173,148, 41, 22, 59, + 91,154, 8, 16,192,174, 37,149,102,125,145, 13,192,199, 74,221, 65, 17, 8,109, + 81,137, 35,109, 24,100,179, 83, 98,116,124,230, 4,192, 48, 27, 68,145, 36,105, +184, 29,163, 17,243,189, 34,182, 1, 42,244, 24,180, 76,163,139,131, 49, 78,132, +212,253,212, 70,216, 88,223,211,111,128,145,158,145, 3,204,212,215, 69,236,141, +201, 3,234, 90,130, 65, 52, 62,160,223, 86,161,251,200,118, 54,211,204,223,208, +179, 90,183,104,129, 7,149,108,162, 33, 91,147, 69, 47, 23,145,142,246,104,146, +104, 70,238,122, 48,209, 15,166, 64,182, 0, 49,251,227,225, 48,232, 4,136,232, + 30,144,132, 78,187, 75, 99, 62,225,203,167,176,107, 39,124,124,177,238, 24, 41, +220, 97, 31,232, 50, 82,233,122,118,217,115, 77, 87,164,165,245,235, 39,194, 90, +160, 26,141,237, 40,116,229,251, 28, 51,235,178,110, 40, 61,214, 13,187, 43, 87, +154,121, 85,165, 66,226,230,248, 47, 15,100, 14,229, 38, 43,221, 69,190,198,162, +234, 39,216,235, 33,183,219,109, 92,199, 87, 37,248,159,182,196,142, 23,113, 84, +127,152, 28, 89,149,195,158,222,183, 3,162, 39,178,159,225,249, 3,128,151,103, + 36,168, 62, 45, 62, 33, 16, 18,115, 83, 58,245,155, 60,117,201,207,204,145,242, + 95,224, 10, 63, 36,109, 60,129, 16, 77, 95,215, 22,199, 51, 56,184,234,143, 39, + 57, 43, 18, 26, 9, 60,246,160,187,109,116,119,243, 61,232,224, 51, 33,107,239, +180, 7,159, 21, 76, 97,237,189, 70, 8,126,174,157,120, 95, 4,238,239,113, 28, +236,243,194, 94,227, 16,232, 98,216,117, 77,205,134, 64, 24, 79, 83,233,212,249, + 79, 28,186, 55,246,131, 82,120,116, 27,155,249,160,244,254, 80, 56,175, 56,130, +210, 20, 38,117,202, 65, 68,121,144, 39, 60, 0, 63, 63, 17,175,183,120,163,194, + 73,139, 96,200, 86,117,198, 36,225,131,156, 58,110, 37,247, 67,136, 87,169,113, +207,152,116,210,191,124,241, 18, 62, 78, 40,248,182,236, 28,133,154,211,100, 0, +159, 39,184,193, 13,105,225,150,206, 98,208, 25, 75, 88,239, 73,138,217,137, 61, +133,199, 46, 20, 12,201,110,114, 23,163, 9, 66,228,253,211,225, 11, 42, 62,196, +102,120, 55, 70, 5, 29, 51,191,252,221,207, 14,152,228,157,212,215,182,233, 89, +185,179,103, 94,144, 72,244,130,131, 50,166,148,169, 92, 11,190,211, 36,171, 33, + 89,132,240, 57,210,148,138, 53, 81, 65,184, 39, 52,121,224,220, 70,112,134,169, +250,151,166,240,171,123, 47, 14,168,120,201, 21,113,215,175, 87, 37,171, 2, 17, +213,136, 6, 18, 78,112, 4,180, 78,249,123, 12,174,104, 6,192, 76, 42,254,183, + 66, 36, 65, 24,156, 32, 57, 41,129, 2,216,239, 68, 90,194,230,102,220,244,112, +177,119,131,139, 7, 46,146,118,236,212, 48, 50,133,181, 38, 58, 43,132,118, 83, +192, 51,140,201, 86, 83, 90, 75,227, 57, 73,121,215,255,115,139,138,242,235,134, +158,163,136,118, 92, 80,197, 14, 94,143, 60, 70,149, 18, 29, 57,105,182, 93,145, + 67,186, 39, 46,238,128,142, 68,129,121, 69, 6, 43,128,203, 98, 30,179, 63,191, +189, 8, 38,162,230,251, 25,189,237, 37, 0,163,228,206, 37, 30,119,165,150,106, + 57,218,149,144,249,135,141, 78, 83,200, 44,119,185,134,204,189, 51,137, 46,240, +104, 60, 48, 85, 61, 39,128,193,228,197,211,215,154,108, 73, 49, 80, 30,226,196, +218,184,109,163, 39,108,129,163,156, 54, 11,136,117, 82, 86,208,214,117, 41,175, +116, 98, 47, 68,211,109,240,255, 32,143,249, 66,122,206, 51,234, 47,247,104,247, + 62,152,223,112,226, 80, 49,136, 97, 54, 94,175, 22, 90,159,209,243,149,235,182, +233,241, 19, 52, 77,118,190, 75, 90,132,178, 44,206, 4,204,247, 54, 4, 5,116, +191, 18,112,120,232, 9,203,170, 93,242, 99, 51, 11, 75,133, 13,162,194, 68,180, +220,123,117,147, 40,155,115,136,237,118,143,239, 7,105,186,139, 89, 56,130,215, +157,128, 65, 69, 7,168,156,231,149, 40, 46, 88, 35,160, 27,250, 57,111,236,222, +129, 94,132,107,242, 18, 67, 88, 78,161,241,130,137, 32,203, 46, 32,191,135, 18, + 20,219,157, 94,195, 24,193, 37, 83,125,253,176,244, 42, 10,240,108, 41,154, 92, +135,218,131, 38, 65,140, 37, 57,103, 2,240,105,238, 24,242,184,136,165,108,192, + 22,243, 80, 35,100, 95,151, 8,160,237,218,186,162, 81, 90, 7, 71,152, 79, 24, + 20,191,102, 19, 37, 29, 94, 36,101, 51,119,113,172,123,179,137, 66, 19, 65,198, +203,194, 14,238, 65,223,100, 44,238,166,198,166,141, 6,244,226,116,188, 60,180, + 44, 54, 29, 78, 3, 37,129, 57,161, 70,246,133,103,156,163,158, 85, 98,218,152, + 94, 57, 33,160,108,201,210,192,172,252,242,224, 33,253,128,164,198,142,103,140, +143,170,195, 29, 73,236,211, 59, 79, 99, 28,177, 25, 97, 83, 88,112,232,209, 78, + 68, 59, 14,197,175, 46,236,152,236, 98, 76, 30,113,177,215,171, 39,222, 38, 26, +126, 52, 40, 35,121,121,195, 81,121,104,120,161, 68,230, 34, 79,239, 90,216,136, +182,191, 8, 95,220,113, 26, 31,110,161, 52, 64,176,106,254,109, 20, 21,148,209, + 99, 26,151,155, 92,114,195,187,125, 8, 31,129,188,114, 66,138,125,189,152,211, +170, 28,239,117, 88,148, 33, 24,105,241,241, 52, 55, 78, 16, 13, 48,168,194,185, + 47, 68, 3,141,227, 73, 73, 25,224,225, 59, 10,163,123,209,176,102,120, 22, 64, +126,224,147, 69,159,177,110,183, 3,116,234, 28,192, 48, 36,215, 52, 13, 14,138, + 22,161,120, 75,185, 83,252,242,129,223,200,174,143,116, 92, 1, 42,103,196, 19, + 41,192,240,108, 3,250, 31,141,146,212, 35,245,104,138, 81,190,178,156, 50,111, + 1,189,255,118,143,244,230, 0,223,157, 36,227,247,168, 33,219,166, 40,186,174, +115, 1, 36, 1, 63, 1, 47, 1, 10, 88,244, 78,180, 36,182, 22,151, 89,234,191, +166,111,125, 69,241,180,122,159, 80, 71, 43,250, 20,179,244,108,170,208,159,160, +155,114, 76,223, 16,235,252,166,199,131,132,100, 16, 19, 36, 63,137, 98,102, 61, + 48,249, 68, 99,175,158,181, 46,247,163,230,123,166,247, 76, 38,136, 21,175,233, +241,122, 99, 19,165, 69,246,145,175,169,191,194, 88,204,229,104, 29,205,219,228, +254, 89,128,122,145,103,215,159,255,230, 50,156,212,145,189,121,131, 50, 8,217, + 97, 19,160,210, 4, 8, 79,228, 76,102,139, 12, 75,139, 81,159, 37, 70,173, 95, + 85,159,202,252,228, 91, 17,139, 86, 89,108,252,164,209,198, 21,218, 79,150,220, + 88,228,111,150,148,223,208,146,225,173,112,201, 86,165,138,122,141,169,113, 44, + 97,143, 51,121,106,211,142, 52, 14,173,123,249,218, 26,167,151, 3,114, 8,153, +101,153, 70, 6,201,215,117,105,153,187, 6,246,216, 68,119,197,171, 53, 48,234, +190, 25,247, 43, 28, 75, 18,230, 8, 78,250,118,210, 6,149, 30,217,194, 19,110, +150, 37, 75, 66, 50,246,112,188, 36, 18,251,229, 57,246, 80, 57, 95, 60,158,244, +182,163,180, 98,170,106,122,169, 87, 76,173,102, 90, 75,254,158, 71,165, 94,114, +239, 49, 30,198,195,120, 24,143,212,213,171, 86, 57, 34,209,202,189, 66, 41,128, + 2,213,227, 75,185,128,255,134,222, 56, 56,227,183,164,198,118,164,239,152, 79, +255, 71, 4, 82, 81,156,239, 58, 7,208,218,255, 43,199,243,169, 30, 27,145, 63, +165, 69,147, 2,187, 85,148,107,153,127, 27,200, 33, 67,219, 1,174,145,197,254, +215,212, 86,239,108, 53, 78, 8, 51,136, 23,222,255,201,182,150,202,201, 68, 38, +218, 7, 60,221,124,154,157, 79,109, 8,111,104,203,113, 28, 59, 13, 0,128,199, +182,207,224,123, 2,137,199,219,124, 18, 66, 30, 39,147,169,213,100, 32,235, 56, + 73,193,111,175,125, 70,153,165,255,246,161,144,128, 28, 16,252, 58,237,235,124, + 76,150, 28,101,157,143,161,106, 72,219,158, 34,152,196, 83, 27, 66,223,130, 87, + 65,207,198,171, 9,223,197, 4,223,197,148,241,200,176,209, 29,133,154, 73,240, +220,243, 50,109, 37,150,175, 83, 43, 89, 40,195,225, 52,132, 72,250, 28,179,133, +206, 39, 67,177, 51, 54, 79,152,150,224,217, 92,192,134, 17,222,186,204, 6,153, + 10,248,169, 84,151, 38, 77,249, 36,165, 79,105,208,228,123,226, 52,104, 54, 95, + 3,135, 32,227,192,129,108,203,178, 75, 67,205, 66,109, 43, 30,203, 12, 10, 50, +224,135, 96,219,144,211, 14, 9,229, 3, 21,181, 69,128, 21,172, 92, 50, 55, 44, + 37,159,133,163,137,232,188,142, 23, 1, 59,175,121,170, 6,228, 36,100, 13, 85, +227,185,148,251, 49, 12, 35,184, 60,116, 66,224, 7,208, 93, 29, 1,192, 8,159, +244,241,120, 60,200,128, 71, 62,195,176,158, 74,170,250,206,191, 58,149,221, 87, +158,187,123,245,149,175,127, 42,253,247,185, 79,118,196, 93,149,226, 65, 41,251, + 66,173,235,244, 82, 64,120, 3,116, 89,129,237, 41, 52, 45,105, 67,236, 1,214, + 21, 80,177,174,135,104,206,138,158,251,130,180, 28,167,127,133,163, 2,173,132, + 21,239, 28,150,195,241,112, 60, 69, 34,159, 85,197,170,110, 94,180, 67, 83, 18, +253,110,135, 14,125, 41,172,134,124,247, 21,117, 77,150, 19,234,202,248, 1,252, + 70,136,190,163,200,110,125, 55,182, 21,223, 89, 79,125, 25,203, 70,103, 81, 20, +197, 80,168,163, 0,214, 80,117, 8,133,188,251,234,186,174,207, 68,211, 82,150, +181,205, 82,103,217,195, 95,100, 89,239,127, 89,161, 15,189,101,158, 34, 43,181, +100, 40,107, 11, 52,225, 34,139,116,165,118,103, 11,253,214, 44, 77,129,167,172, +221, 26,107,141, 67,191,162, 21,243, 21,223,202,252,230,242, 0,224,178,100, 64, +206, 67,200, 3,241,141,204,179,212,221, 78, 47, 5,214, 5, 47, 34, 68, 89,140, +106,220, 22, 68,184, 44,146,111,197,189,126, 64,227, 48,241,205,210,234,124,191, + 77, 39,162, 62,100,202,221, 17, 16, 64,112,109, 43, 11,187, 53,135,100,101, 75, +243, 44, 83,150, 84,129, 20,216, 44,115, 73,185, 30,173, 53, 93,248,234,206,159, +170, 1,233,198,109,220,198,109,156, 38,209, 36,154,196,236, 58,179,235, 76,252, +221,128,251,119,239,213, 64,154,166, 30,203, 26, 71, 27,241,188,132,141,219,184, +141,219, 56, 77,162, 73,210, 90, 75,249, 61, 47, 97,227, 54,110,227, 54, 78,147, +104,146,243,252, 72,164,105,117,158,216, 98,220,120,132,211, 39,237,201, 59,208, + 68,200,225,192,245,252, 52, 61,211,138,224,105, 9,251, 99, 44,233, 56, 49,133, +224, 32, 43, 74, 48, 59,201,211, 51, 48, 25, 25,151,140,203,211, 80, 30,126,209, + 35,182, 20, 94, 93,168, 10,215, 29, 38,177,190,188,238,183,252,152, 82, 69,168, +194,199,249, 47,127, 62, 89,238, 72,105, 44,189, 18,174, 46, 84,166,153,214, 39, +254, 32,201, 62,137, 38,246, 7,105,190, 57,231, 5,142,101, 19,126, 71, 89,167, + 65, 58, 44, 43, 51, 70,185, 62,195,115,227, 44, 90,210,219, 92,180,142, 5,172, + 15, 12, 94,173,100,144, 10,162,106,190,148,175,146,222,152, 92,134,159,229, 2, + 82, 42,237,215,167,176,169, 22,103,203,230, 3,109, 46, 10, 95,229,242,218,229, +157,146,203,107,148,113,120,195, 42,204,183,203, 88,188, 34, 74,162,253, 4,147, +201, 84,202,165,163,198, 49, 87,154,242,248,196,138,206,238,191,146,254, 91,210, +105,180,118, 95,145,246,223,218,138, 42, 87,143,247,209, 61,106,165,114,138,188, + 90,215,216,109, 14,144,147,168,212,217, 86, 41, 27, 18, 0, 20, 0,179,178, 0, + 8, 10,139,141, 69, 18,137,156, 7,138, 82,123,148,128,199, 67,149,140, 9,137, + 20, 3, 6, 3,211, 96,224, 0, 12, 18, 3, 3, 48, 1, 6,128, 16, 2, 6, 0, + 64, 0, 3, 32,128, 3, 1, 73, 35,242, 1,144,198,118,200, 75, 37,144,105, 6, +161, 76,127,238,121,247, 38,234,224,135,128,201, 86,203,136,224, 11,189, 98,220, + 54, 0,133,198,120,224, 72,210,131,202,198, 20, 80,244,175, 65,112,219,217,116, + 65, 12, 51, 68,183,141,100,174,216, 76,235, 7,222,113,186,190,128,180,228, 62, + 94, 11, 28,216,133, 47,191, 70, 11, 4,137, 93, 0,180, 19,186,184,128,110, 31, +212,187, 64, 20, 39,184, 40,136,129,208,133,218,243,175, 7,106,231, 12, 72,152, +237,234,130, 23, 32,119, 73, 1,187,155,251, 10, 96,250,174,111, 9,176,135, 61, +171, 65,254,217, 11,177, 60,184,174,248,116,171, 33,128, 62,206,159,192,240,120, +163,121, 56,159,108,251, 6,195, 24,142,214,169,228, 15,140, 64,122, 68, 35, 12, + 79,125,147,138,251,224, 72,193,136,166,209,194,148, 20,249, 97, 1,146,109,217, + 43,135, 33, 53,250, 51, 52, 96, 90,172,180, 7, 9,186, 55,175,101, 12,245, 74, + 34, 67,157, 74,138, 49, 80,133,115,107,163,135, 50,212, 27,185, 12,245,213, 54, +210, 75, 89, 8, 96,154, 41, 30,214,129,116, 60,114, 32,192,195, 79, 0,247,201, +177, 58, 5,105,135,114,245,149,163, 84, 82,174, 41,255,148, 82,241,194, 54,169, + 90, 42,147, 28,165, 25,106,160, 36,244, 64,145, 38,208,248, 74,223,160,200,154, +103,112,231,100, 30,176, 85,200,250, 16,232,125, 54, 40, 40,146,104,101, 14,154, +176, 65, 53,138, 47, 27,184,115, 40,212,253,195, 98, 68, 48,121, 63, 52, 83,232, + 69,125, 46,190, 1,186,206,188, 2,137, 56,110, 15,124,218,237, 44, 38,204,182, + 3,160,113,112,233,173,201, 25,203, 51,238, 57,210,102,128,225,112,139, 68,102, + 34, 9,164, 4,165,209,233,174,200, 87,240,137, 68, 23,144, 28,192,164, 33, 63, + 9, 38,241, 66, 18,229,244,198,182,144,175,189, 6,113,244, 34, 47,206, 34,132, +246, 87,105, 38, 25, 62,120,164,248,117,161, 32, 29,167,207,241, 69, 48,140,112, +243,241,214, 13, 66, 92, 33,244,169,176,181, 5, 89,150, 60,105,248,194,228,111, + 23,133, 80, 34, 17, 54,143,180,162, 43, 62,113, 71,230,140,149,132, 23,107,213, +174,106,113,198, 34,139,170, 31, 30,166,150, 97,106,136,112,158,112, 50,110,235, + 92, 37, 98,172, 29,183,179,149,180, 43, 98, 35,215, 82,250, 87,145, 46, 9, 35, + 43,157,189,233, 41,137, 35,118, 84,185, 26,197, 50,164,241, 30,193,132,139,226, + 76,161,242, 14,192, 37,132, 78,176,212,228,232,227,102, 16,102,126,244, 61,157, + 1, 13,226, 40,128, 18,190, 94,188,217,128,118, 40, 37, 81,108,108, 16,100, 61, +178, 75,134,169, 1,236,144,105,152,132, 80, 9, 33, 65, 19,141, 58, 68, 55, 30, +194, 49,136,236,137, 71, 21, 21, 17,225, 49,148,146,104, 8,199, 63, 93, 5, 15, + 80, 23,198,111,202, 29,136, 11,227,246, 8, 41, 5,238, 25,129, 47, 32,104,175, +104, 82,128,165, 86,160, 13,140,239, 0, 57, 46,136,162,205,136,208, 26,107,175, + 86,173,107,130, 32,171, 18,193,195,205, 13,217,254, 50,142, 88,145, 96,146, 65, + 59, 54, 88, 74, 83,173,118, 94,107, 88, 64,227,168,211, 16,214, 80, 27, 42,222, +157,202, 63,195,105,152, 32, 62, 44,106, 96,216,131, 82, 80,192, 74, 85, 69, 67, + 9,226,218,100, 48,133, 65,176, 24,211,194, 13,150,245, 66,212, 33,140, 8,217, + 43,164, 22,132,101, 9,226, 83,200, 66, 96, 17,134, 8, 84,161, 99,242,142,164, +214, 12, 70,216,136,180,245,129,160, 49, 97,147, 92, 41, 21,172,181,254, 80,168, + 10,211, 66,160,120, 15,161, 18, 65,151, 54,216, 57, 66,244, 15, 67, 56,218,213, + 98, 79, 48,130,100,158,117, 92,144,107, 18, 21, 6,186,188, 44,185, 99,193, 66, +220,250, 13, 41, 2,216, 87, 55,244, 12, 86,155, 77,129, 11, 66, 40, 60,128, 73, + 62, 9, 97,186,201, 94,114,244, 2, 65,119, 56,179,214, 8,118,216, 20,145, 8, +104,100, 38,126, 48, 52,183,214, 84,198,236, 17,195, 33, 43, 17,221,217,104, 79, + 93,137, 69,155,196, 25, 0, 46,141,106,112,242, 68,246, 98,142, 3,119,242,246, + 93, 9,245,211,141,100,139,147,201, 1,116,180,248,221,223,119,204, 55,223,119, + 31, 90,205,235, 86,107,155,167, 52,251, 71,241,167,179, 31,253,174,249, 78, 74, +126, 80, 84,235, 68,147, 33,239,164,233,254,250,154,229, 69,190, 12,149,122,161, +232, 5,119,246,183, 64,203,149,233,157,118, 74, 21,134,150,118, 3, 3, 31,110, +117, 92, 39,114, 2, 80,185, 25,129, 74,242,148,148, 93,185, 36,138, 20, 8,140, +103,162,123,112, 13,174, 9,142,233, 99, 81, 76,204,161, 25,195,152,165, 22,252, +148, 57,152, 47,249, 17, 5, 93, 90,201,130, 88,253,175,183,238,103,218,184,112, +235,229,242,134,217,146, 61,142, 30,112, 45,126,127, 18,184,123,176,210, 50,209, +190,249,151, 79, 75,172,213, 1,131,184,108,228,228,192, 64,160,122, 69, 59,189, +112,214,176,130, 53,160,196,107, 75,242,215,104,110,102,241,145, 38, 45,227,181, + 79,154, 70, 73,220, 9,125, 44,231, 21, 68, 4, 58, 75,138,150,158, 12,183, 85, + 13, 70,247,145,109, 59,176,133, 75, 61,203,129, 32,143,128, 5,105,247,149,218, +158,232,156,183,188,105, 79, 47,168, 23,196,121,179,204,246, 14,188,138,166,133, +121, 88, 89, 13, 39,142, 99,160, 21,115, 13,158, 44,106,187,183,103, 82,162,100, +209,197, 48,165, 99, 66,101, 7, 13, 73,131,172, 72, 34, 35, 60, 5,179,208,222, +226, 3,232,179,143, 72, 2,229,230,223,100, 38,236, 24,180, 14, 92,162,212,125, + 36, 53,242, 92,198, 97,119,232,106,252, 73,198, 82,213,134,120, 49,125,198,141, +131,156, 39, 10,224,191,103,193,113,115, 3,201, 96,219, 3, 53,148, 0,138, 34, +165, 66, 30,113, 95,195,129, 51, 39,145, 73, 8,197,157,230, 15,208,223, 7,130, + 60, 53,180,108, 88,220,140,248,184,253, 6,210,163, 33,131, 14, 1,241,236,103, +161, 56, 18,255, 90,223, 45, 86, 12,172, 74,176,154, 22,137,198,141,230, 13, 18, +240,144,174, 8,168,133,155, 67, 94,235,184,250, 1,255, 20,201,137, 77,174, 26, + 93, 48, 8,223,250, 22, 6,225,128,163,168,152,169,219,255,163, 58,162,141, 69, +193, 3,130, 11,162, 51, 94, 32, 43,232,175, 39, 18, 25, 24,226, 30,220,225, 40, + 24,170, 66,169, 13,189,177,110,233, 10,240,186,242,115, 78,208, 9,249,225, 50, + 78,130, 83,194, 86, 6,210,163,149, 23,174,204,236, 33, 78,193,210, 74,142, 19, + 16, 19, 24, 24,116,211, 30, 22,236,204, 19,181,118, 37, 61,209, 36,110,125,214, +178, 52,199,115, 82, 36, 72, 76,132, 13, 40,227,121,137, 78, 49,190, 50,179,118, + 4, 84,145,112, 97,131, 5,128, 2, 42, 23,169, 32, 57,128, 21,162,196,252,126, +234,170,171, 0, 87, 85,122,234, 57,128, 86,191,168,128, 17,117, 8, 85,105,240, + 75,227, 61,133,119, 62,103, 36, 36, 20, 32,248,110, 56,218, 17,195,102, 42, 85, + 63,207,225, 2, 10,160,249,180, 41,113, 95,250, 83, 68,135,214, 65, 68,111,139, +140,160, 82,214, 44,190, 7,172, 57,138, 31,147,250, 26, 20,204,179, 77, 95,113, + 90, 8,254,198,234,102, 90, 77,150,123,198,208,181,243, 11, 82, 33, 39,242,129, +135,151, 32, 70,216,164,166,145, 3,134,242,120,228,226,147, 23, 21, 35,191, 68, + 10,167,165,183, 14, 15,102, 61,235,118,121, 66, 68,235,167, 41,136,179, 66,119, +183,187, 98, 89,229,146, 27,243,158,228,216, 9, 68,217,168,136,128,237,253, 14, +239, 68, 34, 67,228,127,172, 88,176, 12,180,124,202,175,244,216,236,253,254, 51, +233,250,129, 92,149, 24,182, 70,147,142,238,250, 26, 65, 9,176,252,224, 59,184, +168, 50,207,141, 76,145, 42, 23,149,165,247,226, 91,120,123, 81,200,139, 64, 84, + 13,121, 86,152,212,143, 38,170,112, 0,172,174,123,227, 15,244,150,161,148,160, + 56, 71, 91,217,203,187, 23, 14, 33,207, 2,253, 46,129, 86, 13, 62,158, 77,132, +109, 78,192, 75,147,138, 15,155, 86,133,120, 1,184,188, 50, 54,160,175,230,247, +161, 50,177, 33,210,182,198,133, 59, 16,208,233, 43, 69,157, 33, 45,225,196,114, + 33, 50,155,139,251, 4,113, 33,238, 19,130, 35, 72,198, 26, 69, 72,100,125,224, + 84,123,158,125,217,151,223,249, 83,197,239,143,133,182, 63,176,147,112, 82,195, + 58,165,212, 52,200, 2,163, 68,137,192, 54,222,103, 94,195, 70,193,240,250, 39, +114,150,121,169,245, 9, 32, 48,217, 57,226,163,213,197,200,120,229, 24,238, 7, +110, 82,200,102, 55, 41,138,158, 77,103, 73, 14, 99,187,219,226,218,169,190,146, +212,244, 89,102,234, 72,235,111,173, 55,134,190, 44, 85, 88, 7,219,173,240,221, + 28, 80, 61,142, 72,165,240,255,198,177, 46, 65,244,184, 81,245,199,207,131,201, + 72,113, 40, 24, 43,192, 8,181, 7, 99, 82, 22,215, 5,147,163, 70, 82,125, 19, +216,206, 28,107,125,178, 90,212, 37,208,129,125,209, 16,128,222, 49,219,133, 82, +207,252,101,208,100,204, 85, 85, 5, 64,121,140,211,138, 89, 80, 82,189, 80, 80, +237,125,183, 63,110,204, 23, 72, 18,145,174, 81,163, 76, 13, 82, 32, 7,233, 5, +216,109, 92,253,149,186,196, 24,147,138,204,146, 99,111, 94, 15, 29, 68,143,138, +116,238, 97,220, 55, 43,156,176,195,162, 57, 76,210, 83,176,239, 1,150,243, 87, + 5, 38,238, 84,103, 72,222, 27,181, 38,125,163,215,140, 20, 91,151,188,202, 49, +134,106,182,189, 34, 49, 79,222, 5,181, 21,226,123,115, 32,193,105,242,151, 8, +185,188,137,248,205,199,137,192, 91,136,197,148,242, 67, 80,183,190,115,114,157, + 16,157,245,144,207,165,109, 69, 10,161, 55,112,139,141, 19, 34,193, 41, 57, 26, + 99,162,241,174,195,236,236,213,139, 35,169,250, 9,146,126,166, 10, 84,230, 26, +128,228,144, 76, 61,154,192, 89, 85, 77, 17, 50, 90,226,115,161,176,188, 87, 81, +191,174,249,224,182,133, 18,157,164,135,101,242,238, 71, 6, 6,149,107, 74,128, + 73, 67,208, 94, 44,134,168,197,138, 5,176,139,185,105, 79, 19,198, 9, 57, 92, + 97,191,158,140, 65,214, 79,102,239, 97,146,110,175, 23, 91, 71,239,127,157,102, +221, 19,231, 58,175, 3, 6,157, 51, 74, 54,186,146, 39, 66,249,109, 42,112,107, +202, 5, 39, 55,198,174, 51,207,115, 54,135,175, 62, 93, 70, 62,184, 52, 69, 62, +127, 75,248,144,137,103, 5, 17, 35, 25, 57, 43,178,178, 18, 19, 29,125,160,177, +203, 68,160, 67,114, 16, 84, 0,190, 69, 49, 55,193, 2,203,125,152,138, 53, 72, + 83,118, 71,163, 81,111,178,239,190, 71,131,204, 72, 71,228, 84,218, 22, 86,153, +203, 40, 58, 37, 43, 94,100,137,102, 91,193, 46,206,157,248, 91, 61, 18, 39, 47, +122, 11,139, 74,174,150,147,139,241, 63,126,104, 36,249,156,236, 50,166,251, 68, + 39,152, 42,183,237, 79,117,185,169,206,184,143, 48,222,103,183,246,255, 50,136, +239,254,108,225,224, 37,160,195,224,162,251, 17, 51,165,212, 76,132, 22,185, 14, +163,222, 32,158, 12, 32,236,132, 38, 1,216,105, 39,203,255, 37,178, 16, 35,176, + 48,167,232, 83, 10,122,176,137,183,132,131,131,130,167,118, 65, 27, 37,195,156, +171, 70,168, 57,103, 77,116, 16,181, 51,170, 34,202,138, 66, 95, 18, 5,249,212, +208, 63,229, 7,241,164,223,144, 15,185,175,146,252, 64,163,176, 68,168,219, 70, +121,148,161,119,106, 37,184,253,122, 2,200, 74,250, 19, 88,252,112, 42,128,239, +217,172,176, 19,240, 29,152, 8,148, 22,220,154, 38,211,104,132,157,233,130, 62, +255, 20,203,132,250, 88,158,243, 79, 37,239,159, 48, 2, 27,111, 9,230,131,234, + 13, 86,171, 10,203, 91, 16,173,186,137,254, 31,173, 19,203,190, 32, 45, 24,243, +232,148,202, 92,222, 62, 23, 39,194,107,185, 68,160,200,197,142,249, 90,116,244, +133,108,216, 43,170, 47, 33, 88,228,175,160,103, 53,119,106,172, 57, 45,161,155, +179,205,118, 85,104,205,149,183,243,141,108,112, 55, 0, 50,149, 73, 36,182, 33, + 7, 91,151,106, 15,223, 8,167, 25, 12, 71, 24,124, 20,137,165,198,244,218,116, +188,247,230, 14,140, 46,112,244, 54, 56, 40,138, 13,245,120,220,144, 17, 52, 1, +212,210,122, 3,169,201, 19,121, 5, 44, 22,146,176, 16, 85,240,183,152, 95,163, + 92,215, 86,184, 57, 89, 72,231, 27,104,204,109,204, 54, 29,130, 46, 71,163,221, +110,187,139, 4,141, 73, 42, 81,147, 63,139, 45, 0,195, 56, 62, 20,249,240,158, +129, 11,213, 57,196,194, 99,220,108, 62, 64,186, 62,168, 36, 5,141, 98,179,129, +198,254,167, 64,243,169,128,129,179, 51,173, 53,222,224,100,200, 53,210,197, 62, + 85,157, 23, 54,171,147,126,245,168,110, 87,133,249, 45, 59,247,148, 9,117, 10, +103, 93, 33,173, 93, 55,153, 2, 91, 97, 46, 46, 48, 75,225,168, 90,213,239,143, +111,147, 98,134,229,213, 67,194,242,169,241, 10,249,105, 37,252, 52,114,108,231, + 81, 96,208, 16,228, 70,140,113,148,132,168, 26,152,140, 34, 88, 25,239, 62,108, + 75, 1,149,169, 76, 51,103,232, 94, 42,138, 1, 55,164, 21,223,208, 14,160,102, +142,233,184,133, 7, 93,170, 22,195, 16, 78, 37,122,241,208, 90, 94,148, 35,196, + 39,107,161,191, 28,137, 70,167,191,104,134, 61,189,127, 82,148,208,160,181,185, + 74, 88,241,102, 24,238,218, 66, 44, 51,255, 14,106,223,229, 80, 45, 93,130,184, + 81, 45,130, 56,145,216, 72,203, 60,104,105,207, 64,177,142,130,175, 45,133,108, + 35,213,172, 34,252, 12,230,201,165,244,237, 3,169,233,154, 90,174,244, 75, 45, + 52, 40, 43,141,208, 44, 54,176,139, 15, 38,154, 69, 43,146,197,160, 5,201,239, + 66,176,152,165,179, 45,168,165,105,112, 43,212, 26,170, 72,253,181, 19,165,177, +160, 0,198, 51,163, 0, 7, 3, 69,251,152,251,207,206,228, 51,215, 84, 17, 21, +252,106,154,106, 80, 63, 51, 85,166,130,178,112, 72,228, 82, 15, 68, 89,183, 60, +132, 72,219,178,102, 25,183, 74,249,168,151,182, 61, 95,235,225,108,162,167,231, + 83, 98,236,252,108,146,205, 52,209, 74,163, 68,195,114, 49, 32, 69, 10,153,248, + 77, 9,252,227,109,198,165,112, 78, 35,141, 61,253,221,224, 18,182, 75,219, 13, + 81, 66,188,172,202, 91,163,118,132, 7,163, 76,132, 1, 9,130,155,105, 86, 35, + 4,126,188,121,178, 92,147, 36,131, 68, 51,179, 92,153,176, 16,177,104,169, 4, +188, 34, 42, 2, 50,173,238, 28,134, 13, 86,125, 37,199, 56,169,238, 99, 41,212, +111, 78, 29, 5, 51,121,216, 40,197,102, 27,140, 98,148, 18,133, 1, 33, 6,161, +210,135,179,191, 4,194,167, 16, 14,184, 41, 25, 85,178, 2, 58,107,216,130,149, +138, 57,233, 85,227, 3, 25, 88, 42,238,222,180,109,179,145,170,206,224,254,158, +124, 37, 62, 4,205,123,245,230, 84,130, 15,181, 87,182, 84,180,184,133,147,236, + 62, 46, 35,162,108,183,213, 26,153,185,104, 93,180, 64, 9,187,153, 2, 57, 37, + 38,192,185,250, 60, 28,189, 52,111,174,238,180,206, 78,119, 92,244,237, 78, 87, + 58, 84,153,117, 12,180,169,244,157,243,246,174, 43,157, 86,108,151, 58,161,224, +177, 92,133, 71, 65, 87,219, 57, 59, 71,192,172, 22, 85, 94,203, 9,210,139,148, +113,250, 62, 7,147,153,173,157, 67,122, 93,208,249, 18, 30,184, 60, 42,240,139, +184, 47, 91,221, 92, 96,116,164,135, 26, 20,253,252, 14,212,222,126, 59, 40,102, +175,121, 73,124,161, 89,217,125, 52,222,204,214,121, 87,129,136, 2, 81,231,227, + 26,169, 8, 69, 15, 58,144, 25, 4,204,198,216,137,152, 7, 79, 24,173,186,200, +195,141,106, 92, 33,183,230,104, 77, 46,159,182,203, 80, 68,193,181, 44, 46, 50, +127, 69, 84, 74, 32,253, 90, 41,251,102,191,131,218,246, 94,216,159, 50, 73, 32, +217, 23, 8,210, 65,139, 96,232,165,235,141,218, 61, 61,202, 19, 55,107, 46,219, + 0,250,190,163, 54, 78,122,175, 84,224, 70,197,180, 79, 52,150,170,239,174, 84, +188, 75, 18,204, 82, 79, 38,232,211,195,231, 49, 0, 37,240,233,214,193,208, 30, + 18,214,130, 8, 14,246, 45, 84,220,149,119, 82, 39, 24,214,171,228, 54, 47, 94, +224,244, 49, 91,178,122,220,232, 63,203,168,152,161,182,243, 29,165,234,230,153, + 78,101, 45,105, 96,162, 15,155,166,185,146,196,191, 88,249, 68,105, 17,187,200, + 22, 29,246,205,231, 71, 40,218, 33,161, 70,167,169,121,132, 74,198,164,110,209, +205, 82,176, 90,252, 84,144, 29,227,140,209, 30,141,214,210,173,186, 58,231,194, +210,176, 13, 83,168,246,218,192,231,143, 68,232, 55,225, 23,140,190, 79,149,154, + 95, 41,102, 37, 48,104,105, 2,255,211, 97,145,218, 60,155,253, 8, 58,215,129, + 31,173,119,112, 21,193,181,234,237, 74, 59,177,246,216, 75, 42,166,186, 13,204, + 85,130, 57,217,120, 56, 11,206, 87,102, 98, 2,145, 88, 44,223,156,217,150, 99, + 69, 61, 62, 49, 27, 78,186, 68, 82,107,240,225, 2, 23, 21,153, 74,137,117, 44, +216,185, 98,244,181,236,117,182,217, 42,152,209,118,234,207,164,191, 18, 83, 3, + 97, 0,173, 15,185,202, 99,232, 23,255,238, 92,117,204,145, 34,191, 43,184, 59, + 7,151, 35, 80, 39, 79, 77, 82, 65,191, 21,230, 54, 75,237, 93,146,145, 1,100, + 50, 51,112,167, 46, 8,160, 20,241,161, 19,166, 38, 22,164,171, 12, 43, 11,214, + 15,145,169,171, 70, 56,232,147,223, 18, 99,168, 34, 10,242, 26,226,182,196, 26, + 32,122, 93,209,148, 64, 56,194, 11, 3,193,158,160,132,112,106, 2, 5,201, 65, + 91, 46, 19,243, 9,190,131,167,172,215, 12, 50,223, 66,242,230, 40,143,137, 42, + 48,124, 31, 21,229,120, 45,157,226,183, 19,180,225,186,186,163, 99,190,178,175, +201,218, 79, 47, 63, 8,132, 66,122,162, 70,171, 71,134, 97,254,187,234, 29,245, +133, 46, 33,105, 36, 98, 66,197, 5,197, 29, 86,248, 83,228,189,216, 34,255, 94, +221,206,168,154, 79,101, 72, 8,140,123,184,248,150, 9, 76, 48,156,218, 96, 27, +220,156, 27,206,226,204,107,125, 15, 96,197, 15, 78,218,105, 37, 48, 96, 11,170, +208,102,143,196,165, 94, 58,219, 81, 25,173,147, 86, 8,132, 4,200, 51,199, 64, +175, 93,251, 8, 96, 54,158, 23,232, 1,220,111, 48, 66,116, 90,131,139,100,141, + 14,139, 45, 23,224,173,236, 30,169, 4, 80,209, 45,127,166, 3,243,153,166,113, + 80,220,229, 40,243, 39, 55, 30, 42, 20,213,117, 51, 92,136, 19,209, 30, 2, 41, + 55,185,155,225,200,184,105,113, 47, 34,178,155, 92, 81, 24, 12, 39,230,109,218, +246, 20, 75, 40,222, 96, 27,194,121, 16,189,107,177,132,186,191, 32, 89,103,154, +114,125,170, 57,145,101, 50,126,173,147,154, 7, 45, 86,156, 18, 65, 90,251, 3, + 25, 16, 62,157,137, 72, 9, 64, 81, 16,166, 52,127, 96, 46,229,200, 5,117, 25, +223,148, 52,101,126,211,254, 50,137,191,117, 95,243,160,195,176, 30,202,128,251, + 97, 94,125, 67,168, 26,208,176,248,129,172,123,200,238,128, 91,211,174,208, 57, + 36,160,107, 64, 24, 13,137,247,195,231, 38,177, 9,113,157, 59, 8, 39,125,231, +181,105,191,100,167,233, 37,102,172,132, 47,167, 68,164, 62, 53, 75,187,190,253, +229, 53, 8, 30, 81, 55,246,144, 28,210,128,110, 39,245,249,139, 60,232, 60, 72, +141, 12,186, 10,176, 20,152, 1, 82,242,100,222, 70, 12,200, 66,247, 81, 10, 17, +148,135,248, 64,253,240, 64, 24,132, 61,199,228, 10, 96,106,254,178, 66, 91, 85, + 3, 11,104,113, 80, 85,204, 38, 80, 6, 17,207,162,252, 88,207, 45,207, 7, 0, + 75, 98,221,108, 58,132,151, 22, 27,144, 56, 29,148,200, 5, 56,101,143,207,183, +217, 59,250, 50,154,164,229,162,143,131,144,142,134,158,117,210, 20, 4, 79, 6, +161, 14, 83, 26,154, 40,210, 34,196,133,131,149,129,250,198,200,139,189,164, 98, + 13, 92, 49, 49, 99,168, 3,221,144,169,216, 4,166,187,146, 36,247,209,249,118, +154, 30,103,102,146,174,232,224, 93,109,196, 80,174, 28,149, 58,175,105,155,145, + 13,133, 31,162,211, 59, 86, 63,168, 2,226,224,141, 4,218,128, 82, 40,135,201, + 3,175,210, 17,152,124, 14, 75, 15,160, 9,124, 46,104, 69, 16,127,194, 65, 48, +235,128,139,193, 92,224, 0, 31, 82,201,161,223, 8,108,100,186, 56,221,185, 12, + 13,210, 18,172,248,104,198, 1, 97, 43,146,240,240,173,163, 49,233,221, 3, 28, +222, 42,252,192, 49,187,171,109,115, 68,166,232,180,193, 29, 66,138, 15, 35,202, +131, 69, 66, 12, 27, 15,214,231, 32,158, 65,117,131, 81, 24, 59,136,127,243,133, +180,231,223,205,234,113, 9,199, 95, 23, 87, 53,245, 94,192, 25,160,140, 18,130, + 98,234,114,232,114,201,155,101, 64, 96,187,107, 66, 55,146, 18,226, 24, 83, 56, +139, 24, 94,235,194,165, 22,254,218,176,164, 29, 47,121,224, 75,135,144, 12,178, + 57,194, 84, 7, 82,231, 67,185, 24, 49, 15,197,254,138, 73,181,128,106,228,115, +236,234,108, 42, 79, 64,105, 43,225, 78,162,242,166, 79, 5, 98,208,101,164, 48, +168,244,223,146,146,131,142, 15, 62,242,142, 78,167, 92,163,138, 94,224,160,204, +219, 73,250, 77,143,241, 15,128,140,128, 99,119, 18,168,157,241, 38,182, 4,124, +132,171,200,172,122, 56,157, 22,121, 22, 98,114, 22,113,217,128, 21,171,120,131, +135,140,115, 25, 19, 87,241,103,132,253,138,248, 12,161,204,143, 9,221,221,171, + 54, 65, 48,205, 89, 98, 54,169, 88,252, 97,250,200, 30,195,157,177, 37, 50,245, + 96, 94, 94,183,130, 93, 18, 49,157,113,173,221, 87,208, 82, 19,104,187,222,157, +227,175,232, 14, 68, 68,144, 97, 95,111,166,132,152, 10,131,174,164,146, 30,171, + 1,235, 26, 39, 22,189, 54,112,226,114,101,143,251, 81,185,128,132,108,123,216, +175,116,168,117, 34,126, 69,121,129,247, 26,141,234, 65,174,216,225, 44,104, 2, +221, 96, 44,150, 47, 84,225,254,142, 9, 19,170,255,196,211,221, 46, 62, 18, 63, +196,204,221,201, 86, 88, 96,126,193, 79,244,161,229, 22, 30, 59,104, 57, 52, 32, +134,138,161,193,108, 89, 13,231, 37,216, 45,156,181, 29, 55,102,148,230, 92,200, + 60,191, 57, 57,135, 10,142,153, 31,180,135,205,117, 41,115,135, 56, 85, 57, 12, + 1,208, 26, 95,227,102,223,196, 41,128,104, 32, 7, 43,106, 85,105, 0, 56,132, +148, 49,216, 84, 34,108,240, 66,150, 25, 34,241, 57, 12, 36, 48, 45, 4, 61, 51, +160, 64, 42,170,107,155,132,116, 21,222, 2,218, 16, 63, 86, 49,127,143,236,189, +196,163,170,218,226, 95, 82, 70, 7, 32, 77,209,185,137, 25,159, 68,129,216,165, +215, 82, 55, 30, 68,183, 21, 89, 22, 39,132, 99, 14,253, 30,198, 98,105, 20, 56, + 73,164,249,222, 43, 74,149,113,225,111,195,188, 0,167, 54, 29,251,165,214,100, + 39, 47,161,113,167,224, 28,125,227, 54,162, 77,249,153,214,199,206,146,145,149, + 48, 87, 76,229, 27,190, 63, 53,137, 1,106,141, 20,159, 32, 86,121,219, 72,130, +199,184,234,205, 92, 0, 94,253,142, 70,209,145, 86,133,249, 75,224,155, 9, 52, +162, 43,157,184,166,222,249,125,236, 57, 91,158,234,139,121,137,141,179, 59,179, +162, 36,202, 29,252, 77, 29, 49, 64,233,163,255, 39, 30,248,177,141, 78, 0,166, +241, 9, 89, 95,132,164,146,112,144,171,123, 41,132, 78,130,122,210,162, 56, 84, +171,100,205,118, 8,196, 75, 22, 79,103,172, 32,231, 92,237,210,181, 83, 90, 69, +143,185, 31,101, 81,216, 52,188,157,106,112, 88, 43,131, 63,144,199,238,158, 27, + 42,220,123,171,227,143,239, 79, 4,168,127,156, 35,182, 68,215, 33,243, 83, 73, +105,240,143, 38,110, 72,108,195, 57,141,108,204, 43,251, 95,125,212, 11,225,170, + 20,161,165, 8,201,178,195, 77,101,134,245,156,234, 10, 77,125, 65,188,192, 22, +201,184, 72, 99, 34,145, 12,100, 89,227,161,163,229,106,103, 4, 55, 40,110,247, +234,250,217, 62,239, 73,165, 93,142,238,116,131,141,219,152,173,147,220,214,254, +188,178, 99,148, 11,108, 17, 36, 25,142,184, 19, 8, 70,101,141, 61, 42,178, 32, + 31, 71, 84,180, 48,106,157,179,222,182,127,203,233,193, 11,242,154,238,202,250, +200, 85,243, 5,200,224,147,180,107,103, 98,163,231, 27,236,193,137,120,102,127, + 8,183,252,197, 15, 8, 43, 70,203,247, 11, 6,156,165,243, 60,164,205,213, 12, + 6,171,192,126, 33,219, 5, 32,149,127,215, 91, 14, 68,198, 59,105, 36, 38, 40, +102, 98,237,199, 6,119,143,212,116,192, 89,185,148,112, 98, 18,225,207,101,202, + 37,157, 5,226,202, 31, 90, 12, 48,118,169,116,150, 90,144, 28,147,203,149, 13, + 88, 83,135,241,105, 1,209,254, 37, 72, 59, 63,161,174, 54,221,162, 92, 66, 76, +110, 9,138, 28, 39,218,228,114,100,240, 25,147,239, 7,248,203, 76,171,165,117, + 41,185,144,111, 49,247,124,244,202,146,191, 24,118,190,172,227,200, 19, 27,227, + 79, 22, 49,215,106,153,220,108,122, 88,162,139,159,192,169,236,195,111, 93, 93, + 55,208,231,211,150,214, 11, 4, 23,224,139, 7, 15,218,166,143, 84,189, 57,171, +117,149, 45,142,205,183, 60,231, 66,204, 79,202,249,158, 13,110,205,234,213,215, + 35,236,190,135,120, 60,228, 66,171, 96,175,183, 37,125,186,158, 10, 30,215,240, +251, 33,177, 59, 22,171,228, 1, 27, 1, 75,143, 93,112, 46,110, 17,103,203,217, +158, 68, 5, 82, 70,122,218, 24,113,208, 44, 6,246,237,214, 27,143,146,100,167, + 68,195,249,199,186, 5,156,198,120, 11,213,121,112, 44,134,184,201,207,223,224, +192,241,190,102,144,140, 20, 57,182, 4,185, 7, 70,239, 44,106,189,229,237, 66, +101,225,218,211, 55,205, 83,142,197,220, 8,243,186,124,145, 67,243, 76, 90, 28, +234,154, 12, 51, 90, 12,174, 16, 87,110,126,141,123,138,211,139,142,250,228, 72, + 54, 69,170,225,231, 5,194, 73, 5,196,179, 6, 24, 78,229, 93,152,188, 90, 51, +164,208, 86,109,230,143,228,208,146, 68,139,226,150,121,135, 53,199, 54,190, 73, +140, 90,103,209,194,118,192, 50,194,108, 84,149,145,202,215, 42,140,164, 50,179, + 86, 72,206,101,247,217, 56, 71, 48, 41,198,146, 31, 99, 87, 89, 57, 68, 27,218, +185,202, 75,244,238,187,135, 89, 59, 67,146, 19,105,126, 59, 76,192,102,157,253, +253, 64, 7, 34, 90,172,128, 23,217,189,128,230,217, 51,128, 81, 48, 70, 2, 84, +183, 71,229, 14,227,249, 43,182, 1, 65,158, 68, 16,216,128,244,184, 15,190, 69, +157, 42,155,113,195,219, 11,102,143,203,254,170, 59, 67, 5, 36,205,241,188,228, +199,163,169,207, 41, 64, 26, 35,151,222, 13,206,232, 35, 54, 17, 31,156,187,181, +148,251,117, 5, 37, 59, 35, 43,126,131,146,201,189,182, 77,177,128,159,158,209, +234,222, 50,222, 81,167, 68,223, 55,103,121,158, 6,163,147,139, 85, 28,166, 36, +102,151,183,134,132,232,199, 68,187, 70,237, 66, 18,119,131,123,219,128, 72,128, + 71, 41,102,105,247,234, 57,163, 46,150,223,135, 62,207,122,151,252,214,162,247, + 25, 89, 76, 96, 64, 93,174, 50,124, 72,203, 34, 88,219,109, 29, 15,166, 47,116, +184,166, 19, 99, 14,127, 28,131,148,141,126,185, 6,241, 30,189,104,255,153,109, +239,224,252,198, 85, 71, 16,214,241,165, 68, 75,227, 29,222,211,254,151, 99, 64, +139, 72, 78,254,143,189, 56,200,166,211,200, 11, 62,168,138,122,140, 17,111, 31, + 3,195, 49,117,125,122, 56, 74,101,202, 82,102,195, 85,253, 61, 77,195,199,123, +108, 2,230, 7,183,224, 92,237,141,178,221,207, 23, 76,125, 39,104,157, 81,237, +180, 41,230,188, 37,215,149,120, 49,177, 75,219,158, 58,181, 27,158,126,128,100, +216,220,225, 88, 88,102,232, 63,133,250,242,175,145, 6,183, 67,155,104,238,122, +212,146, 72,238,121,148,243,135,141, 60, 76,128, 88,108, 10,102,136,161,148, 18, +178, 47,169,205,236, 13, 65, 52, 58,147,132, 27,232,220,158, 54,153,127,119, 41, + 99,113,167, 76, 57,144, 73,195,227,158,154,232, 81,145, 40,107,203,124,150,113, +215, 28, 44, 68, 39, 85,208, 95,160,220,239, 95, 92, 96, 43,186, 48,227, 98, 67, +225,163,226, 57,189, 98, 16, 18, 6,154, 87, 84,209, 91, 18, 44, 3,253, 53, 33, +200,239, 15,119, 2,207, 69, 81, 92, 23,198, 58, 11, 21, 16,229, 79,159, 60,164, +148, 70,128,169, 1, 94,235,139,123, 51,122,146, 25,232, 16,231,170, 27, 36,131, +178,174,177, 92, 74, 22, 71, 46,114, 84,157, 82,132, 50,170, 97, 97,221, 32, 89, +138,206,108,214,251, 65, 75,118,220, 12,238, 7, 67, 90, 63,219,212,153,192,173, +117, 43,140, 3,137, 76,158,148,104,144,166,146, 18,235, 72,182, 84, 65, 89,199, +125,215,212,189,245, 4,140,129,239, 88,107,120, 86, 6,190, 29,106,199,134,117, +117, 97,211, 30,188,127, 76,201,170, 19, 37, 97,245,163,111,234,123,138, 13,126, + 68,213, 73, 2, 76, 82,171, 53,133,238,200, 42, 7, 96,132, 4,148, 80,208, 5, +123, 17, 76,156,248,193, 14,179, 12,234,182,141,138, 73, 68,111, 93, 72,141, 61, + 35, 9,112, 18, 99,226, 92,223,133,165,161,184,211,146,198,232, 37,139,166,134, +186, 83,199,233,120,244, 36, 92, 31,129,140, 54, 21, 65, 97,104, 78, 78,233,192, +145,183,216,187,102,169,246, 53, 71,202,211,196,161,179,135, 75, 58, 93, 61,173, + 32,176, 92,232, 49,245,168, 1,195,239,107, 36,157,176,210, 0,165,200,207,226, +201, 87,192,177, 84,182,165,173, 29,246, 66,234,199, 97, 12, 38,161, 44,190,199, +195,246,211, 3, 24,224,131, 4,142, 86, 8, 93,131,234,214, 21, 83, 13,124,135, +103, 56,128,105, 98,181,141,248, 92, 10,109, 28, 0, 58,237, 45, 35,118, 77,152, +196,147, 12, 38, 49,252,216, 22,123,106, 60, 74,222, 17,120, 60,240, 77, 92, 11, + 42, 38,179, 28, 43, 18,223,210, 65, 40, 19,112,133, 63, 82,130,101, 10,171, 85, +135, 10,230, 59,228,189, 64,157, 0, 41, 63, 34,152,122, 81,253,183,167,100,183, + 77,157,241,232, 28, 45, 53,156,216,127,212,209,119,161, 16, 45, 22,137, 45, 25, + 56,115,202,143, 40,158,219, 48, 13, 48, 29,169,171,122,241, 8,215, 35,151,210, + 93,149, 4, 14, 49,135, 98, 21, 84,239,128, 30,130,140,203,176,167, 80, 49,244, +242, 43,245,213, 88, 66,248,117, 27,219,199,114,113,201,194,204, 80,193, 15,179, + 48,125, 51,152,244, 58, 75, 74, 40, 67,162, 41,192,161,146,232,164,148,161,188, +164,121,104, 20,133, 87,214,249, 66,149, 37,185,234, 65,133, 65, 4, 58,158,228, +180,120,189,200, 67,196,170, 74,202,233,229,135, 52, 34, 68,123,211,178,125,239, +250,250, 5,109,139, 29,186,146, 44,202, 58, 53, 17, 2, 74, 40,128,197,203, 59, +240,220,208, 32,122,192, 92,224,204,132, 41, 27,176,232,143, 33, 77, 38,132,225, + 67,167,149, 73,111,242, 36, 54,207,243,230,162, 18,115,100,103,141,225,117, 75, +192,130, 4,234,215, 68,152, 5,163,102, 73, 75,122, 87,162,251, 98, 97, 8,168, + 11, 42,242, 37,114,202, 84, 34,191,155,161, 94, 71,121, 19, 97, 5, 76, 47,223, +109,109,245, 83,135,224, 15,116, 5,180,118, 30,244, 41,149,252,187,233,175, 21, +132, 15,230, 31,181,239, 27,117, 76,224,214,240, 85,225,251,183, 59,136,182,188, +213,135,145, 45, 16, 90, 49,145, 98,120, 67,222,142, 78, 36,210, 4, 9, 42,105, +197,188,171, 43, 51, 94,137,216, 11, 13, 50,159,250, 82, 18,194, 26, 74,250, 2, + 56, 98,124, 59,106, 30,178,150,228, 59,153, 18, 44,196,104, 36,252,234, 25, 87, +153,100,153,126, 45, 20,103, 72,161, 78,180,162,123, 88,105, 74,222, 13,162, 33, + 21,134, 51,207, 2,217,177,168,174, 39,139, 8, 41,153,148,138, 6,117,119,139, + 18,151,104, 89, 60, 89, 74,106,130,133,124, 76, 1,249,156, 93,150, 56,207, 56, + 59, 13, 84,168, 28,183,132,131,170,180, 14,210,217,141,181, 28,234,232, 60, 33, +172, 44, 25, 99,230, 1, 83,234,242, 62,148,238,197,164, 40, 48, 33,139,252,232, + 68,231, 87, 18,221,150,163, 75,220,233,190,201,242,214,213,225, 98, 57,175,146, +137,251, 86,245,210, 13,151,248,220, 5,108,124, 25, 23, 47, 97,100, 50,124,232, +209,206, 68, 7,198, 69,160,136, 68,228,101,136, 17, 60, 73,144, 17, 58, 12,157, +228, 11, 20, 52, 13, 64,236,236, 45,255,165, 17,172, 91,184, 71, 27,190,110,161, +135,157,151,150,214,234, 49,226,219,146,157,218, 89, 18,161,122,125, 3, 11, 18, + 99, 18, 68, 78, 29, 31,134, 56, 77,196,197,241, 56,107, 49, 26,160,226, 4, 4, +242, 23, 95,184, 5, 66, 75,185, 51, 24,136,191, 11,131, 31, 59, 81,126,183, 9, + 86, 67, 97,144, 89,137,240, 37,162, 78,225, 40,134,163,133, 73,165, 4, 99,124, +192,191,104,121,165, 0,160, 19,153, 13, 20, 2,215, 73,162,232, 42, 64,199, 92, +166, 12, 14, 64, 96, 14,199,223,182,120,248, 66,248,107, 69,191,215, 18,190, 33, +229, 31,181,137,211,154, 48, 21, 81, 92,152,202,185,162,133, 5, 14,171,157,132, +208,202,212,206,112,170,235, 58, 50, 12, 14,241,119, 24,180,188,235,239, 71, 12, +138,204,119,171,177,122, 98,228,200, 20,213,226,214,174,251, 44, 83, 27,104,108, +221,140, 96, 6, 71,143, 93, 87, 63, 20,125,161,208,119,155, 46, 87, 62, 4, 53, + 89,219,215, 64, 52,195, 80, 31,254,236,184, 12,211, 64, 68,135,187, 94,165, 51, + 14,164, 82, 82,180,192,106,214, 41, 31,245,232,198, 29, 57,108,144, 44, 54,108, +108,136,207,228, 16,241,134,112,161, 11, 3, 38, 77, 12,139,169,145,150, 82, 34, +230, 0, 41,228, 79, 50, 1, 80,180,124,237,136,112, 17,103,175, 70,118,178,100, + 32,155, 51,164,144,127,107,203, 15,151, 71, 35,174, 97,212, 74,203, 41, 1,253, +224,125,136,177, 66,199,174,163,126,239,216,153,198,244, 88, 83,246,178,235,235, + 61,156,114, 68,170,203,102,202,215, 74, 82,137, 5,135,186,158,216,241,235,151, + 27,113,237,198,154, 80,134, 48, 23, 71,104, 28, 97,106, 17,243,229, 93, 16, 92, + 78,132,227,239,169, 19, 7,211, 15, 3, 27, 39, 70,149, 62,240,222,144, 29,127, + 15,121, 87,159,157, 93, 20,195,238,233,192, 58,212, 67,208, 22,135,205,143,100, +135,196,189, 19,172, 18,219,156,244,114, 92, 50, 63, 54,140, 68,151, 12, 84, 82, +208, 99, 10,187, 66,222,245,180, 29,161, 10,141, 31, 86, 34, 10, 57,136, 92, 94, +145,255,228, 32, 65,220,163,147,247,223,140, 29, 33,155,228,141, 23, 51, 38, 80, +183,249, 74,112,189, 40, 65, 21,111,145,117, 12,175, 61, 41,167,218,210, 63, 87, +131,222, 93,188,209,106, 49,123, 9,197, 20, 46, 83,179,215, 60,125,130, 30, 93, +112, 29, 14,122, 93,148,168, 27, 26,158,160,221,229,212, 62,110, 2,132,163,195, +128,179,218, 98,216,173, 23, 52, 9,102,182,149,108,112,190,237, 26,181,225,191, +203,165,194,191,130,105, 85,146, 29,235,147, 4, 23,192,113, 28,203,150,211,235, +254,192,188,137, 30,245, 77, 79, 68, 28, 94, 41,249,211,107, 95, 39, 50,145,136, + 35, 64,172, 95, 55,187, 4, 30,175, 91,224,106, 5, 71,213,226,203, 45,255,147, +213,150, 87, 58,210, 16,158,112,175,170,137,180,254,168, 70,254, 8,112,130, 59, + 12, 4,162, 51, 55, 30, 1,130, 73,115, 98,220,177,138, 74, 34, 89,113,128,148, +105,244, 59,125,124,186, 14,118, 39,164,215,134,167,233, 73,212, 4,245, 37, 18, + 20,172,150, 58,177,215,212, 28, 50,235,136,125, 32, 15, 43, 70,140,160,168,165, +209,141,190, 82,203, 86, 52,172, 44, 3, 57,254, 9, 45, 32,219, 0, 90, 28,181, + 29,160, 82, 34, 66,249,220,166,187,164,176,210, 26, 38,230, 70, 66,234, 23,251, +205,138,231,202,175,210,161, 67,255, 72, 8,171,143,183, 97, 72,252, 46, 39,122, + 38, 1,202, 12, 35,137, 76,128,133, 18,224,219,225, 16,198,210,149,226,139,148, +213,167,120, 38,103, 90, 40, 95,213, 84,146,134,237,132,181, 84, 32, 19,243,215, +181,141, 47,248,178, 13,121, 1,169,115,181,208,218,220,134,183, 22, 58, 8,195, +222, 55,185,193,205, 85, 65,202, 65, 52,217,244,114,190,193,251,134,117, 60,250, +250,124,115,176, 61,235,127,112, 22,136,214, 80, 7,214, 44,181,161,188, 1,250, +142, 77,166,125,178,250,217, 1, 62,158,253, 54,149, 8,203, 28, 24,126, 6, 15, +105, 69, 65, 59, 84,235,150,130,125, 66,189, 77, 28,106, 27, 72, 80,121, 92, 38, +128,115,144, 63,156,153,184,123, 45,130,235,126, 26,112, 97,200,192,102,232,254, +174,243, 84, 48,149,144,181, 11, 82, 51, 23,117,132, 8, 29, 84, 59,176,231,115, + 92,218,211,179,196,116, 71,217, 26,179, 30,128,138, 88,228,252,193, 58, 0, 30, +240,170, 67,234,209, 32,142, 9, 10,144, 18,160,120,145,235, 42, 80,121, 63, 73, + 88,128, 48, 82,120,175,170,233,163,227, 34,123, 88,148,226, 87, 13,232,133, 33, + 45,251, 21,166,107,166, 83,219,194,170, 91,230,238,191,148, 10,109,201,137,140, +115, 32,123, 10, 74,218,106,211,205, 16, 47,248, 23,196,120,167,115,204,224,120, + 2, 28, 59,151,178, 36,111, 51, 52,216,146, 97,242, 20,112, 47, 24,148, 36, 22, + 61, 12, 68, 98, 66,211,195, 13,197,107,166, 82, 28, 27,188, 43, 76,141, 68, 36, +202,194, 72, 81,161,157, 38,240,222,120,249, 0,194, 50, 6,170,183,116, 45, 36, + 16, 52,211,155,200, 77,176,191,117,100, 21, 90,252,148, 54, 15,252, 80, 1,102, +178,235,215,177,123,149,211, 69,122,229, 58,251, 21, 93,239,177,124,198, 26,120, +126,100,180, 45,113,231, 3, 18, 4,145,244,174,252,159,136,124, 39,215, 6,196, +233,198,113,156,202,106,200, 38,190,118,249,212,202,122, 98,137,150,235,241, 58, +120, 25, 87,248,209,180, 55, 50, 33,176,112,152, 69,164, 25,249,128,140, 2, 45, +182,108, 8,129,112, 97, 64, 73, 54, 27, 34,196,221,216, 42,138, 97,219,176,143, +181, 4, 57,142,180,173, 17, 34, 40,165, 8,248,180,234, 34,210, 92, 16, 36, 91, + 76,132,165, 95, 59, 83,100, 45, 76, 23, 23,200,156,158,166, 41,108, 30, 3,120, + 41, 65, 73, 83,114,253, 24, 53,153, 57, 11, 11,242, 43, 29,252, 2, 99, 84,158, +188,208,240,203,137, 25,124, 20,183,139, 22, 49,230, 32,188, 90,241, 58,185,208, + 24, 19,198, 1,115,239, 5, 24, 41, 77, 64, 88, 83,115,140,223, 9, 56,142, 69, +188,100, 78, 82, 81, 69,156,116,211,161,176, 59,209,188,101,227, 74, 87,190,107, +219,107,147, 16, 20, 31, 27,197,151,125, 54,139, 34,141, 90, 2,130, 95, 34,167, + 58, 66,147, 11,161,145,233,134, 63, 42, 58,196, 22, 37, 88,189,211,215, 87,210, +200,204, 11, 16,190, 53, 79,136,154, 12,212,239,251,109,164, 62,126,122,132,139, +196, 39, 21,195,164,219, 50,199, 31, 42, 68,189, 39,141,127, 46, 30, 53,165, 16, +233,114, 29,114,170, 21,120,134, 68,139, 37, 66,176,207,241,138,244, 95,105,178, + 2,130,110,133, 24,195,118,247,141, 24,213, 43, 33, 30,121,147,199, 12, 99,188, + 9,152, 78,113,122,167,113,121, 81,185,157, 3,174,203,249,145, 63,146,187, 70, +182,139,190, 4, 88,105,207, 65,235,100, 99,214,189,118,195,135,164,198, 51, 78, + 50, 21,140,135,245, 20, 18,106,123, 19,121, 33, 54,102,126,244,170,239, 40,104, + 50, 24, 94, 90,147, 18,115,186, 65, 12, 25, 4,110,207,232, 37, 94,193,226, 75, +183,220,128,138,118, 38, 88,197,248,140,139, 3,243,224,163,134,194,252, 70, 61, +177,115,232, 24,168, 82,148,135,184,249,127,101, 53,177, 95, 92,166, 1, 29, 39, + 79, 64, 61, 27,206, 49, 0,166,115, 93, 68,223,188,198,145,210, 54,166, 61, 12, +222,185,174, 87, 16, 70,205,202,203,234,207,129, 20,175,160,152,122,205,171, 69, +172,219,252,128,208, 15, 70,253,175, 54, 78, 72, 0, 82, 68, 18, 72,191, 76,184, + 85, 97,113,252,196,185,107,242,185,146, 8,130,140,133, 32, 82,153, 86,148,209, +176, 23,113,231, 64,126,176,111,242,165,130, 78, 59, 96,118, 30,185, 95, 7,215, + 35, 28, 59, 95,218,184, 71, 21,130, 39,139,121,174, 40,160, 98,190,155,253,122, +242,211,197, 84,250,145, 52, 70,151,113,172,139,146, 59, 14, 4, 27,108,212,201, + 48,160,248, 92,198,233, 3,236,194, 80,165,112, 12, 25,110,255, 95,186,227,238, + 56, 0,236, 45,158,247, 72, 52,207,246,182, 93, 51,131,219, 8, 61,130,118,191, +107, 95,157,179, 67, 91, 52,110,121, 45,177,151,243,232, 63,179,125, 89,211,141, +235,249,186, 42,217, 32,179,207, 59,179,163,173, 96,108,173,150,222,198,233,244, +147,120,125, 95, 83,215,234, 35,117, 71,193, 90,223,211,187,114,250,179,176,193, +225,125, 54,101,253, 61, 65,130, 66,100,209, 68, 18,196,128, 12, 25, 73,221,152, +235,195, 81, 29, 82,147,234,104, 47,168,128,130, 45,188, 64,245, 24, 30,144, 14, +156,250,108,233,171,240,230,212,100, 87, 18,181, 20,236, 34,102, 11,130,219,212, +211,205,228,211,132, 78, 52,239,110, 64,135,145, 39,118, 34,161, 9, 82, 75, 23, +180, 21,213, 40, 3,181, 52,145, 82,141,159,248,128,154,162, 54,199, 47,154,250, + 43,197,244,154, 20, 96, 32,152, 22,232,180,177,124,225, 97, 89,252, 9,156, 95, + 58,224,169, 56,122,105,144,209, 19, 22,254,111,251, 15,174, 97,193,175, 13,111, +183,233,115, 19, 84,151, 46,177,140, 91, 11,249,180,163,207,100,139,133,250,101, + 0, 71, 71,101,113, 34,109, 22, 42,180, 59, 68,208,254,110,162, 89, 80, 99, 99, + 37, 31,253,144,248, 51,219, 68, 79,192,249, 21,173, 57,192,108,109,243,139,230, + 46,197, 28,133,118, 53,148, 12,224,106, 58,203, 56,188,169,237, 31, 26, 14, 49, +115, 58, 80,124,100, 89,175,109,105,239, 18,141, 67,204, 57, 61, 40,218,248, 72, + 50,254,107,104,164, 19,236,134,139,125,130,159,213, 64,252,229, 24,109, 99,103, + 30, 21,166,228,240,191,194,205, 40, 22,108,121,194,162, 56,185, 56,225, 5,130, +140,229,186, 4,155,251,112,154,164,169,148, 60,191,220,190,132,180,204, 26,154, + 77,205, 88,240,224, 47,142, 21, 28,190,150,173,169, 65, 27,237, 84, 92, 15,216, +131,243,116,192, 20,156, 7,184, 64, 89,101,135, 81, 0,251, 48, 20, 94,164,147, + 72,251, 4, 5,143,167,150,115,134,145, 20, 60,178,128,125,128, 41, 78, 26, 81, +157,128,219, 49, 41,207, 78, 20, 18, 58, 22,197, 16,102, 3,214,205,229, 15,254, + 40, 84, 20,195,123, 95,175,121,214, 5,126,209, 34,242,202,123,106, 41,215, 10, +192, 37, 43,119,143,225,187, 37, 49,166,126, 84,151, 9, 35, 90,149, 59, 4,215, + 92,160,128, 40,219,203,176,226,226,154, 67,222,141, 58, 13,135,241,237, 62,188, +142,153,110,104,162,109, 69, 33,145,185,149,195,207, 93,123, 14,250, 20, 63, 89, + 86,202, 56, 62,126,181,157, 52,180,247,179, 74, 32,181,248,201,225, 11, 48,123, + 27, 96, 30,233,101, 35,158,163,216, 28,135, 32, 83,140,165, 76,135,114, 9, 15, + 60,128,189, 13,178,208, 90, 68, 54,150,229,176, 39,218,207,188, 99,104,254,179, +148, 22, 52, 33, 91, 65,118,216,195,254,216, 38,120,255,166,152,196,188,253, 51, +232, 8,116,221,145, 1, 63,246,106, 48, 36,216,251, 84, 5,239, 99,103,225,108, +233,221,129, 97,143,157,188, 13,159,156,183, 95, 26,192,176,225,104,230,232,249, + 10, 5,147, 81,156,203,215,189,151, 63,125,139,154,107,165,128,112, 35, 88,136, +126, 90,171,190, 88,139,236, 76,176,134,173, 98, 93, 14,110,153, 70, 58, 70,248, + 87,174, 41, 58,253, 13,158, 54, 68,114, 16,145,233,182,132,122, 25,184,120,236, +185, 20,151,172,244,194, 29,135,214, 42,117, 75,152,174, 32,142,135,202, 73,123, +201,245, 79,232,226, 48, 28,105,180, 4, 41, 18,236,120,116,127,228, 44,249, 10, +194, 24, 7, 53, 28,221, 75, 40,232,128,171,239, 88, 56, 62,104, 11, 20, 18,211, +170, 81, 18, 26, 34,194, 3,239, 78,102,173, 14, 16,186, 81, 12,109,142, 79, 62, + 32,209,114,108,146, 50,210, 0,105,167, 23, 74, 32, 66,208, 55, 97,130, 88, 62, +104,142, 23, 65,207, 57, 31,112,203,128, 63, 77,237,102, 43, 19, 44,150, 87,130, +217,157,133,150, 54,162,227,163,106,155, 80,170,215, 67, 72,113,233, 79,114, 21, +254, 61,143, 54, 39, 28, 42,217, 74,244,160,203,103,138,104,203, 38,205,186,148, + 92,144,205,108,122, 85,107,207,237, 22,193,121,183, 56, 96,124,108,205,210,128, +225,239,104,166,229,136, 37,233,179,174,119,129, 25,232,194, 37,143,139, 46,231, + 91,151,134,195,200, 41,227, 52,215, 39,247, 6,204,155, 49, 39, 15,199, 86,161, +242, 23, 75,164,231, 23,201,230,122,219, 73, 67, 33,130,113, 54,252,171,235,178, +164, 40,156, 59, 43,117, 81, 71, 40,164, 77,230, 67,130,249, 73,198, 55,186,145, +183,253,153,226,145, 9,182,222, 79,192, 43,113,159, 59,213,232,133,192, 9, 96, + 33,158,236,139, 18,167, 44, 97, 73,223, 44,222, 75, 9, 88,121, 60, 65, 6, 97, +106, 29, 90,212, 7,139, 21,175,111,154,144, 21,216,235,111,235, 34,221, 79, 7, +176,111, 1, 91,234, 2,238, 35, 31,142,203, 60,224,107, 87,112, 38, 83,240,133, +251, 30,185,151, 96, 1,108, 96, 0, 70, 82, 57, 30, 48,145,115, 6,152, 92,230, + 51,121,235,211,155,168,114, 93, 49, 39,214, 93,162,203, 94,207,131, 8,165,129, + 1, 15,226, 47, 0, 47, 0, 47, 0,236,158,123,252,100, 24,159,162,215, 88,107, +173,181,214,207, 90, 89,110,138, 34,229, 7, 50,100,247,220,227,135,206,150,105, + 30, 13, 20, 5,159, 78,230,106,103,255,253, 49, 12,195, 34, 13, 22, 39, 90, 52, +173, 42,245,147,254, 32, 69,166,205, 92, 86,183,234,147, 18,165,148, 18,242, 20, + 73,200,238,213, 11,186,167, 40, 82, 9, 25,178,123,238,241, 19, 5,111,173, 35, + 63,144, 97, 86, 54, 49, 27, 8,180,109, 77,230,104,208, 33,231,253, 9,224,108, +211,204,138, 22, 36, 4,100,200,238,221,217, 67,151,108,109,137, 1,137, 18,109, +107,219,127, 47, 57,173,167,175,172, 74, 84,255,194, 12,176,107, 31,221,125, 10, +163,144, 33,187,231,222,172, 40,138, 90,201,149,237, 41,106, 13, 6, 67,227,176, +251,200,162,227, 64, 66,200,253, 0,210,138,118,185, 76, 8,147,108,242,130,181, + 9,132,193,168,227, 77,149,179, 27, 19, 53, 17, 8, 6,134, 70,130,241, 72,146, + 99,195, 26,238, 1, 83, 80, 81,216, 48, 28, 8,140, 65, 65, 96, 10, 64, 40, 8, + 4, 4, 97, 16, 18,130, 32, 16,130, 48, 4, 8,132,112, 8,131,112, 20, 66,113, + 12,151,126,171, 54,236, 68,138, 20,161,135, 16,197,149, 97,140,134,234,213, 62, +113, 81,110,194,144, 80, 68, 67,147,245, 77,146,133,118,144, 76, 76,156, 74,144, +151,160,189, 62, 35, 89,245, 62,107, 56,133,117, 54,235, 49, 75, 24, 78,244, 69, + 1, 31, 32, 38, 56,198,155,209, 32,247,181,192,195, 72,184,126,155, 87, 71,182, + 4, 37, 99,227, 54, 50, 48,173,229,106,222, 7,178, 6,204,139,169, 71, 74,140, +164, 37,180,107,127,138, 52, 98, 94,184, 91, 28, 4, 86,179,222,198, 2,132, 87, +169, 73, 50, 73, 92, 1,247,132,236,199,201, 66, 64, 1,171, 24, 33,120,178, 60, + 51,131,102, 9, 81,219,251, 80,250, 21,169, 34, 69, 38,137, 17, 29,189,215, 52, +144,167,228, 54, 70,254, 19,101,103, 9,214, 45,133, 94,221,254, 15, 53,198, 78, +126, 94,111,221,166, 29,166,113,124,123,135,171, 34, 9, 55, 56, 67,208,245, 28, +196,207,245,154,230,242,190,235, 15, 14, 59, 67,125,174,165, 39, 37, 70,214,181, + 98,153, 1,108, 86, 28, 82,120,211,183,155, 62,131, 26,105, 27, 7,191,219, 32, +238,198,157,213, 7,173, 49,183,112, 90, 79,150,118,126,212, 66,146, 73,166,102, +212, 26,114,166,212, 77,244, 68,226, 51,180,176, 88,252, 48,149,233,208, 30,154, +133,106,198, 73, 98,171,141,234,103, 3, 74, 90, 40,220,192,235,225, 24,124,144, +200, 77,170,133,245, 3,162,205, 8,170,107, 19,229,226,116, 84,125,173,154,198, +213, 83,188, 66,141, 83,168,168, 45,117, 55, 85,172, 72,146,167,135,124, 43,198, +105, 49,241,110,146,111,118,207, 42,228, 76,134,241, 6,233, 89, 26, 47, 44, 75, +134,167,165,157,196,104,208,157, 6, 54, 78, 53,210, 83, 17,227, 40, 60,154,205, +151,101,221, 25,227, 15,146,187,171,221,189,255,217,186,129,169,202,171,235, 50, +189,241, 40,100, 47,226,241, 22,146, 17,228, 7, 8,159, 48, 75, 75,177, 17,177, +254,127, 19,176,229, 15,213, 93,133, 66, 12, 6,196,212, 64,113,235, 65,167,122, +120,142, 6, 1, 37, 80,167, 83, 70,207,173, 30, 55,181, 46,156, 59,245,218,104, +228, 9,115, 84,102, 72,186,238,131,180, 97, 57,141, 88,163, 53,157,253, 8,130, +209,212, 10,134, 94,255, 97,208, 59, 72,113,228, 82,162,220,146,164,129, 92,201, +233, 48,174,249,183, 29,177,198,229,151, 41,131, 24,237,219, 0, 29,226,232,130, + 87,229, 22,135,186,145,208,207,149,158, 92,167,219,155,170,129, 46, 1, 57, 13, + 15,193, 90,100,184, 3,176, 40,210, 37,106,252,128,225, 58, 34,236, 82,119,240, +126, 63, 52,173, 31,132,213, 80, 10,101,191,179,218,129, 65, 35,164,206,230,103, + 23,209,171,209,153,250,211,185,109,105,246,250, 80, 41,233, 50,116, 7,222,184, +124,216, 1, 93,101, 8, 52,209,144,180, 21,215, 5,231, 33,218, 10,226, 84,209, +234, 94,238,151,218,192, 18,155, 5,192, 70,174,244,111,205, 2,142,121, 57,188, + 11,212, 23,220, 15,186,160,228,152,117,130,102,252,152,150,111, 8,247,149,112, +169,223,219, 25,252, 29, 53,232,128, 8, 84,112,227,191, 46, 84,240,227,146,159, +190, 65,204,216,227,194,123, 55, 48, 99,131,209,197, 27,145,167,140,110, 22, 44, +174,199, 2,131, 2,105, 65, 52,184,217, 33, 98, 52, 79,151,115,198,130, 71,183, +207, 71,119, 89, 87,161,102,125,144,212,129, 62,172,106, 17,132, 40,120, 45, 89, +202,171,225, 68, 66,231,168, 23,178, 18, 86,219, 25,251,236,171,113,202, 34,163, +130, 56,201, 21, 6, 85,120, 23, 97,164, 92,160, 68,147,131,164,172,223, 6,253, + 45, 81,141,113,114, 33, 57, 21,105,206, 0, 2,131, 9,215,188, 54, 9, 34, 47, +190, 54,226,231, 81,159,161,177, 57, 94, 51,117, 12, 34, 57, 52,200, 87,252,108, + 0,249, 9,190,210,171,165,138,214,142,173, 9,138,118, 3,207, 54, 48,250,103, +102,174, 47,190, 66, 67, 73,116,131,134, 38,172,207, 98, 81,211,222,170,127, 42, + 70, 21, 30,251, 4, 92,178,167,108,122, 4, 55, 18,156, 96, 21, 29, 32,186, 5, +164, 75, 76, 8,108, 10, 56, 75,191, 84, 32, 18, 14,214, 82, 22,133,156, 28,186, + 37, 22,168, 65, 46,169, 1,225,191, 10, 57, 8,187, 36, 1, 64,252, 47, 42, 54, + 3, 68, 23,227, 63, 32, 83, 24,241,148,152, 3,234,134, 65, 45,229, 97, 10,125, +216, 49,224,151,133, 56, 32, 46, 26, 50,224, 9,133,207, 64,167, 10, 40,147, 58, +211,128, 89, 2, 51,105,129,172,204, 41,215, 64, 27, 22,112, 38, 93,182, 1, 53, + 20,128,166,198,230, 12,236,230, 13,248, 53,132,143,243, 74,249, 48,200,113,171, +252,160,200,249,160,124,136,228,120, 86, 62, 96,114, 58, 81, 62,124,114,184, 43, + 31, 76, 57, 62,149, 31, 90, 57,254, 41, 31,104, 57,175,148, 15,187, 28,111,149, + 15,194,156, 15,202,135,100,142,103,229, 7,104, 78,126,197, 81, 62, 92,115,230, + 42,130,114,193,155, 83,111, 35, 60,142, 24,168,124,146, 17, 51,170,130, 86,153, + 77,165, 84,188,178,101, 4,105,127,166,135, 86,249,127, 80,127,141,168,126,111, +218,102, 13,178, 67,117, 53,217, 57, 58, 9, 68,210,186,212,176,226,107,198,158, + 73,199,175,117,117,195,178, 11,118, 29, 76, 71, 75,138, 2, 62, 76,233,149, 55, +251, 89, 87, 22, 53, 12, 80, 68,143, 35,141,102,171, 13,212, 48,166, 79,160, 60, +232,205, 92, 85,227, 28, 29,194, 46,183,116,196, 42,202,143,145,200, 7,118, 49, + 29,125, 69,234, 95,116,145,128, 42, 68,140,211, 91,184,172,230,238, 44,120, 13, +117, 32,110,104, 3,113,184,139, 89,169,208, 75, 50,154, 19, 25,148, 43, 73,115, + 16,172,127,240,165,132,150, 53,137,225, 67,239, 74, 42,155, 7,172, 20, 53, 0, +155, 20, 77,119, 66,138,130,103,132, 99,198, 57,244,134,103,174, 85, 38,109,140, + 45,133, 50,212,251,131,189,153, 87,181,115,246,153,196, 71,122, 14, 8, 7,104, +195,139, 95, 92,217,250,100, 91,161,196, 90, 8,179,142,230,116,108, 52,151, 77, +130, 43, 21,212,252, 99, 60, 0,183,231,128,235,193,141, 71,172,118,175,108, 0, +116,188, 79, 25,250, 26,231, 91,106, 82,245,126, 93, 24, 68,125, 85,177,242, 23, +254, 0, 91, 67,241,194, 61, 14, 31, 97, 24,153,251, 3, 76, 87,130,152, 74,108, +229, 15,202, 95,164,198,128,255, 40,146,100,135, 49,128, 50,243, 25,121,164,182, + 55, 20,164, 47, 99,185, 39,207, 10,131,217, 72, 77, 18, 48,157,176, 95,237,240, +223,235,128,164,157, 36, 24, 5,131,128,234, 89,151,215,251, 39,223,247, 5, 10, +228, 24,147,218,180,121,252,141,151, 25, 0,172,240,254,115, 89,169,134,140, 87, +200, 2,193,185,152,147, 5,137, 13,220, 66, 15, 22,181, 0,248,123,193,125,169, + 23, 25,184, 16,251,119, 22, 4, 49,149,158,177, 11,119, 51,120,139, 88,169,241, + 5, 96, 15,218, 34, 85,202,130, 1,120,131,181, 8, 86, 26,196, 0,134, 65, 90, +228,205, 83, 4, 74,182,169,208,133, 50, 80, 3, 77,194,169,186,139,102,120, 5, + 58,115,170,173, 6, 52, 36,254, 64,237, 84, 45, 99, 26, 8,125, 47,108,243, 84, +229,128, 53, 80, 27, 95,130, 97,118,161, 38,181,178,124,170, 54,232,206, 33, 21, +239,169, 49, 62,144, 80, 4,125, 36, 60, 33, 14,123,160,198, 95, 64,247, 72,110, +144,193,166,134, 66,143,240, 13,158,177,223, 81,236,123,228,120,196, 62,176,134, +213,146, 65,220,145, 93,129,151, 97, 11, 36, 86, 33, 21,247,133,207,176, 17,193, +254, 18,171, 66,103,212, 52,204,113,196,174,176, 25, 2, 69, 54, 44,191,228, 95, + 11,153, 97, 74,244, 14,194,138, 33, 58,248,143, 42,123, 24, 64, 30,180,116, 24, +139, 10,224,129,233,226,199,211, 51,242, 28, 88,195,109,149, 79,137, 55,160,142, +122,179, 66,247, 33, 25,249, 25,148,150, 97,105,244, 72, 32,198,114, 83, 26, 86, +116,166, 59, 25,109,109,176,190, 64, 82,131,199,106,170, 48, 9, 72, 80,165,194, + 82,117,226,148,134,221, 23,235, 47, 59, 83,245, 22,225,144,229, 57, 85, 39, 46, + 58, 3, 39,173, 29,250,169, 98,135,106, 92,224, 17,217,204, 47,170,174, 12, 57, +195, 82, 71,204,117, 95,170, 34, 31, 61, 99, 4, 86, 94, 33, 85, 71,206, 16,194, + 26,167,170,170, 71,205,176, 0,219,216, 70,200,212, 29, 49,195, 1, 48, 20, 69, + 95,140,131, 40,210,171,146,119,216,168, 8,212, 78,194,195, 15, 85,206,185,120, +243, 83,174,154, 28,170, 33, 91, 17, 81, 62,229,190, 3,234,208,165, 5, 91,133, + 72,164, 97, 98, 80, 60, 69,121,153, 8, 70, 80, 66,113,178,216, 68,202, 28, 69, + 14, 78,180,199,206,248, 85,215,161,146, 16,116,129,201, 39,215, 30,133,114,107, + 17, 86,146,253, 98,219, 0, 70, 5, 64, 86,149,108,214, 86, 13,192,160, 1,112, + 97,141,149, 9, 6,188,129, 24,134, 46, 34,198, 9,139, 49,244, 7, 49, 12,109, + 47,145, 12, 28, 67, 25,110,202, 64, 34, 20,204,128,212,112, 47,102,205, 96, 53, +204, 17,115,242, 67, 6,113,207, 31, 35,192,144,142,136, 87, 6,216, 64, 10, 81, +217,192,173,140, 65, 68,152, 59, 44, 16,213,136,142,118, 4, 66,212, 83, 38,230, +241, 24,154,214, 99, 82,112,192, 57, 48,139,174,128, 0, 41,161,195,191, 50,146, + 1,234,160,147, 60,242,215, 3, 33,187,153,166,122,192,215,224, 51,232,245, 91, +147,216,143,154, 77,221, 51,201,100,164, 36,201,164,170,200, 21,148,164, 94, 16, + 1, 36,175,121,249, 49,221, 79, 51, 24,102,128,164,161,104, 15, 96, 86,232, 77, + 88, 95,177, 13, 38, 79, 26,185, 39,236, 77,152, 17,113, 20,176, 28,158, 85,111, +210,134,184, 26, 88,215, 8,177, 34, 62, 79,230, 40,226,120, 18,131,141,169, 8, +174, 58,207,214, 33,181,218,124,217,138, 68,239,230,195, 41, 18,202,197,175, 55, + 1,197, 29,159, 65, 4, 72, 64,100,168, 23, 18, 97,219,155,196, 16,113, 16, 64, +137,169, 91,209,132, 1, 60,158,142, 20, 5,214,222,215,194, 18, 13,191,110, 2, +116,218,164, 36, 7, 2,199,208, 86, 8,124,135, 45,163, 49,248,219,188, 76, 18, +115, 33,223,140, 54, 20,147,144,208, 13,140, 57,211,168,116, 63,162, 50,204,164, +145,221, 76, 14,170, 30,189,220, 6,166, 54,246,171,222,186,218, 57, 90, 9, 7, + 35, 51,155,105,174,163, 11, 43,173,198, 85,126, 86,207,239, 76,207,136,126,206, +100, 74,148, 30, 54, 28,153,222, 43,153, 55,188, 36, 7,156,193,194,214,103, 38, + 69,124, 77, 48,197, 41,237,245,102, 98,170, 86, 36,169,102, 37,130, 49,237,147, + 68, 52, 59, 90, 9,199, 44,171, 79,219,148, 72, 26,136, 99,105, 5, 93, 82, 85, + 7, 95,113, 47,153,140, 45,101, 90, 48, 11,226, 91,142, 76,251,114,204, 78, 53, + 99,118, 77, 87, 56,190,176,230,141,185, 6,236,159, 53, 33, 3,130, 48,181,110, +200,248,169,251, 14, 98,157,238, 70, 66,165, 99, 88,102,198,148,245,185,158,237, +144,121, 58,229,237,224, 57,143, 92,231, 15,148,136,100, 86, 23,156,133,133,124, +252, 16,202,207,229,118,183, 75,220, 37,199,120,108,153, 27, 80, 48,148,134,186, + 72,228, 54, 1,225, 17,123,238, 99, 57,174,114,210,148, 64, 85, 49,139,241,101, + 97,215, 33,239,143, 46,112, 2,211,117,214, 11, 11,221,253, 84, 16, 50,121,174, +203,149, 12,102,211, 59, 87,159,121, 74, 55,232, 35,135,163, 39, 84, 83, 80, 96, + 9,100,185, 49,140,135, 49, 59, 32,222,249, 46,154, 72,163,147,144, 47, 13,139, + 5, 9,138,230,222, 45, 65,128,123,197,204, 56, 3,110,105,232, 68, 74,208,128, +121,110, 20,242,105,114,242,113, 54,192, 17,176,239,103,168,191,153,152,136, 31, +243, 64,135, 6,236,162,163,105, 27, 92,161,243,213,149,111,172,150,102, 10,193, +115, 86,182,194, 69, 86, 4,240,180, 74, 27, 33, 14, 6, 27,176,188, 3,179, 32, +246,109, 53,245,198, 7, 14,252,113, 64,189, 77, 3,126,131, 24, 80,115,188,136, +204, 44,114, 46,132, 88,179, 82,198,115,151,246, 66, 16,169, 47,173,110,186, 39, + 16, 65,137,149,110,106,128, 33,188,238,152, 62, 43,189,160, 66, 71, 16,228,108, +178,247,175,235, 64,240, 93, 33,137, 17, 40,180, 94, 73, 2,157, 23,229, 0, 38, + 80,194, 43, 17,228, 96, 81,129,245, 96,191, 64,181,194,100,141, 21, 6,218, 4, + 47,243, 0,105,225, 57, 44, 55,144,100,129,204,133,130,181, 7,170,199, 66, 75, +241, 17,112,131,133, 8,142, 18, 48,113,126, 24, 51, 99,172, 74,208,110,194, 42, +125,161, 69,233, 27,149, 40,136, 22,180,145, 82, 30,173,122, 5,213, 66,103, 41, +233,120,169,120,193,120, 97, 62, 33, 33, 85, 85, 50,232,180,208, 18,206,169,195, +145,197,178, 6,243,160,188, 50, 32, 73, 88,227, 32, 66,240,108, 21, 28, 80,172, +118, 16, 34,208, 95, 68,170, 29,235, 30,228, 9,242, 50,127,109, 76,142, 20, 14, +206, 13, 8, 63, 37,200,153, 9, 39, 57,234, 88,217, 58, 92, 87, 0,102, 85, 69, + 32, 16,181, 27,149,166, 60, 86,192, 89,132, 59,143, 99, 71, 2,136,201, 20, 31, +180,223,237,133, 8,182,220, 20, 17, 0, 0, 80, 32, 60, 0, 59, 0, 62, 0,217, + 10, 90, 67,117,230,217,212, 49, 30, 21, 74,101,210,185,119, 90,196, 87,118, 70, +209,207,124,146, 61,167,194, 19,178, 35,221, 89,182,159,207, 94,156, 63,128,202, +125,118, 86,171,233,243,155, 93,133,235,182, 5,134,145, 72,252,203,196, 23, 84, +229, 87, 7,247, 63,206,159,131,205,113,141, 16, 52, 55,114, 94,175,139, 62,230, +208,151, 50, 54, 26,163, 98,102,217, 25, 11,176, 44,153,248,122,210,178, 81, 58, +139,155,158,222,186, 94,165,168,205, 35,167, 95, 81, 32,239, 54,199,230, 98,198, +158,247,174,103, 65,237, 81,200,131, 66,168, 63, 10, 25,103,198, 12, 85,104,111, + 11,171, 42, 67,181,174, 78,100, 57,215, 11, 51, 14, 41,189,174, 77,210,152, 38, +189, 26, 10,121, 29,144,174, 23,142, 29, 69,183,205,113,113,159,154,236,236, 3, + 78,152,166,249,201, 22, 86, 85,140,186,119,230, 3,251, 93, 11,122, 24,130,226, + 63,232,149,214, 87, 45, 96, 86,237,128,246,156, 12,138,246, 31,160,149,192,230, +186,238, 31, 63,219,219,165, 95,140,255, 69,112,244,101,240, 19, 4,132,194,168, +163,109,147, 36,133, 76, 7, 99,228, 16, 16, 28,142,137,131, 2, 77, 73, 41,168, + 12,247, 1, 99,128, 81, 16, 73, 40, 24,151,193, 65,160, 19, 4, 67, 24, 12,161, + 8, 40, 1, 33,132, 8, 12, 33,142, 40,193, 16, 99, 82,167, 3, 32, 45, 16, 50, + 98,181,146,103,150,180,163,243,194,168,184,213, 13, 32,188,108,166, 14,218,175, +170, 93,159,148, 92, 99, 29, 76, 62, 23,238, 70,121, 7,135,199,109,216,244,118, +116, 5, 87,216, 69, 42,131,153,248, 65,177,149,177, 91,186, 93, 93,249, 29, 81, + 73,211, 48,195, 6,246, 83,123, 40, 76,148,102, 19, 37, 62,241, 74, 29,144, 90, +215,153,221,156, 21, 95,136,148, 71,160,178, 33,165, 93,184, 51,212,144, 38,119, +250, 32,121,216, 10,132,203, 85, 29, 33,213, 14, 72,208, 26,132,195,165, 15, 1, + 70,175, 36,196, 2, 54,209, 76, 4,109, 2,136, 43,159,156, 92,195, 68, 86, 57, +129, 44,166, 99, 61, 74,147,121, 44,160,201,183,201, 11,118,149,205,118, 9,184, +106, 59, 64,143,169, 21,136,219,243, 51,230,169, 4, 35,219, 84,202, 47, 6,229, + 48,137,175, 86, 37, 80,247, 23,166, 28,169,107,187, 94,173,182,166, 18,158, 16, + 41,160,132, 22, 69,147, 46, 71, 6, 21,164,157,149, 78,136, 67,218,192, 56, 61, + 97, 81, 56,151, 78,196, 33,218,192,156, 80, 65,164,178, 97,138,110, 39,115, 77, + 47, 52, 94,251,162,253,201,188, 75, 35,220,235, 88,228,177,198, 67, 13,173, 87, +219,247,252,252, 29, 57, 30, 6,118,141,201,163,155,216,211, 50, 12,221,118, 66, +155, 73, 49,104,126,115, 43, 42, 35,172,158, 47, 13, 13, 72,133,165,218, 80,212, + 45,238,121,114, 50,175, 37, 32,186,128, 22,213, 29,149,184,189,165,179, 83, 6, +240,131,151, 63,162, 45,229,125, 62,198,211, 13, 6, 89, 61,157,226,239,156,239, + 36, 94,101,136,127, 90,125,140, 26,177,121,103,255, 30,207,165,114, 27,102,119, + 12,106, 25,133,143,220,160, 95, 31, 20,195, 93, 68,251,109, 18,172,182, 0, 21, +148, 85,228, 48,135,167, 46,156,237, 97,185, 66,144, 13,135,120,166, 5, 8, 31, +143,110,238, 26, 59,111, 53,254, 46, 35,201,224,240, 85,178,239,172,237,167, 42, +103, 27, 62, 88,114, 16,243, 0,159, 6, 24,244,210, 70, 81,251,208,172,203,199, + 10, 54, 82, 53, 83,176,114, 15,116,183, 96, 89,200,120,176,171, 22, 90,114, 16, +153,233,221,245,244, 68,194, 72,111, 82, 75, 47,144,215,121,183,116, 19,187, 31, + 3, 7, 39,188,103,105, 78,111, 65,215,120, 55, 55,102, 64,186,105,221, 53, 15, +184,131,130,127, 56,215,119,175, 43, 49,137, 56, 97,166,164,166, 63, 66,255,193, +228, 59, 9, 27,214, 58, 30,133, 3,145,200,171,135, 64,234,102,196,249,222, 95, +119, 90, 94, 92,242, 52,206,213,227,111,115, 84,225,249, 78, 47, 57, 35, 98, 9, +251,217, 42,199,101,202,250,243,162, 75,179, 46, 70, 58, 73,128,231, 61, 50, 14, + 62, 93,197,105, 73, 18, 89, 78,176,170, 95,183, 58,214, 96,207, 62, 65,148, 55, + 23, 68,116, 99, 63,156, 58,115,188,194,242, 83,126,102, 48,130,122,178, 92, 48, +172,128,135, 91,130, 61,112,235, 90,232,105,129,190,221,191,160,224, 32, 30,240, +146,108,238, 93, 39,150,240,244, 49, 74, 25,146, 57,126, 5, 67,182,224,170,168, +154, 56,129,174,182, 88, 16,246,240,234,135,150,206, 61,116, 24,179, 61,138,201, +211, 59,124,108,222,140,249,190, 45, 89,185,166,104,158,121,232, 37,192,100,245, + 15,159, 23, 11, 13,160, 32, 7,253,204,166,118, 32,169,165,196,113,162,207,126, + 87,101,243,170, 90,167,201,234,176,213,118, 54,216,170, 55,207,237,138,197, 74, +152, 98, 37,184,171,102,186, 39,182, 70,216,170, 40, 70, 79,146,241,199,208,180, + 64,118,242,236,137, 38,191,230, 56, 21,251, 14, 96,206,206,104, 68, 11, 50,140, + 89,252,246, 24,252,101,166,231,143,146, 93, 39, 10,209, 98, 74,102,193, 71,226, +103,110,177, 9,238, 34, 89,151, 66,204, 11,250,207,217,211,249, 76,233, 89,222, + 58,191, 32,188, 18, 12,230, 23, 1, 41,182,254,136, 8,136, 56,183, 98, 61, 93, +127,255,191, 84,128, 63,219, 12, 51, 14,142,253,234,114,244,196,223,101,181, 82, + 23, 87,156, 1,236,102, 1,200,124,123,143,215, 59,144, 90, 88,170,253,216,228, +238,215,149, 47, 25,182, 16,211,161,160,167,171, 68, 90,101,120,166, 42,130, 37, + 68, 17,195,197,189,139,163, 75,188,117,230,148, 20, 75, 10,161,111, 70,130,191, + 21,144, 8,225,198, 42, 97, 12,160,222, 69, 29,129,228,205, 66, 12,127, 32, 89, + 27, 77, 94, 26, 83,190,146, 93,216, 26,114,127, 43,187,106,192,192,116, 0,114, +108, 80,168, 44,152,235,233,136, 1, 90,234, 71,222,152, 6, 43, 92, 73, 57, 80, +108,219, 61,108,190,252,254,120,127,213,127,235,185,156,111, 14,216,254,175,137, +162, 52,223, 94, 94, 24, 97,231, 99, 45,228,246, 25,112,255, 33, 83,110,156,165, +245, 10,204, 5,197, 73,125,230,134,243,225,225,167,221, 98,246,148,249, 35,236, +237,177,101,104, 10,203, 22,118, 67,241,224,228,102,135, 89, 82, 28, 29, 6,211, +153,188,253,174, 36, 35, 28, 79,192,135,194,246, 14,108,244,171,114, 77, 46,253, +123,172,203,206,157,251, 83,139,150,244,225, 43,176,169, 49, 60, 90,195, 59, 92, +142,197,139, 51,254, 26, 90, 46, 6,141,252, 90,189,192,249, 96, 90,101,116,127, +132,113, 54,231,200, 65,147,205,181, 15, 27, 97,151, 17, 79,178,129, 68, 1,239, + 61, 75,110, 54, 32,218,195,132,244, 51, 75, 90, 90,107,244,179,214,240,158,145, + 77, 93,152,205, 31, 83,132, 19,191, 40,141,205,235,174, 36,124,111, 62,177,247, +138,190,239, 76,152, 16, 38, 64, 79,136,194, 92,100,100,237,202,225, 81, 39, 58, +218,175,128,135,225,192, 76,201, 0, 58, 68,158,216,130, 59,154,118,139,231,223, +186,191,183,169, 79,225,173, 54, 44,157, 40,125,154, 84, 2,218, 79,161,124,225, + 55, 71, 10, 35,189,188,226,138,140,143, 45, 31, 26,114,112,138,199, 95,102,219, + 28,217,230,253,241,160,162,230,219,239,241,236,177,144,220,220,203, 72,175,116, + 86,123, 87,181,154,205,146,182,101,249, 30,249,241,152, 12, 0,240,100,199, 4, + 68,199,145,184, 72,239, 72, 18,233,113, 70,215,190,175,208, 72, 44, 61,184, 22, +205,159, 52,121,170,231,145, 89,121,148,138,207, 26,126,147,105,241,212,221,227, +164,117,238,216,195,103, 49,168,228,185,104,213,115, 7,217, 64,116, 0,172,158, + 73,200,220,200, 26, 69,108, 3,106,209,242, 97, 89, 35, 73,203,169,247,148,183, + 83,104,238,232, 76,184,244, 26, 30, 46,109,248, 17,137, 80,177,252, 17,106, 4, + 66,206, 39,136, 37, 34,120,148, 14,205,142, 95, 57, 87, 10, 89, 6,168, 73,162, +117, 70,182,152,191,148, 5,189,223, 4, 76, 35, 13,114,202, 22,153,151,218, 55, +174,246,136,131,116, 46,170,137, 62,150, 69,116,197,156,212,160,193,184, 95, 34, +190,196,148,255, 92,114,168, 82,157,112, 95, 64,156,203,225, 41,210, 33, 25,156, +151,177,216, 31,235, 89, 89,248, 13, 26, 31,148,187,190,106,180,136,250, 8, 19, + 74,243,213,209,146, 93,248,217, 2, 65,135,151,200,236,112,122,154,176, 60,205, + 43,162,132,160,225,193,190, 61, 10,176,113, 39, 1,187,224, 5, 98, 35, 31,237, +228, 26,147, 85, 21, 21,167,104,169,185, 45,142, 21, 2,141,174,144,232,150,136, +181,118,138,242, 30,246,238, 88,110,154,244,189,222, 69,175,246, 98, 17,253,178, + 45,238,125,178,133,131,140, 18,207, 28, 19, 0,173, 84,246, 17, 46,136,117,158, +182,210, 72,162,171, 23,247, 71,179,151,192, 62, 18, 22, 53,178, 75,249,113,195, + 14,241,195,233,205, 49, 7, 24,237,157,145,233,144,139, 13,107,207,242,158, 9, + 72,188,195,183,173,166,140,119,116,117,195,140,102, 89, 97,179,129,232, 44, 97, + 19, 25,126, 52,187,103, 34,158,206, 10,123,221,216,206,173,249,109,220,199, 84, +166, 30,126, 55,169,138,242,217, 74,217,191, 37, 82, 43,232,107,111,219, 80, 93, + 96,215,167, 13,199,200, 90,161, 60, 52,143, 1,153,247,203, 96,188,182, 73,242, +234,174, 79,250, 52,178,121, 72, 40,236, 57,136, 8,109,176, 79,134,132,147,122, +181,149,132, 0,128,113,127,179,212,241, 7, 17,114,209, 89,175,241, 49, 82,102, + 67,184, 38,196,113,244,176, 18,143,209,153, 59,149,163,232,229, 64,201, 45, 81, +162,211, 52, 69, 83, 33,216,246, 27, 13, 62,219,207, 71,149,132,106,225, 52,199, + 77, 67,242,228,140,152,132,237,255,243,145,147, 15, 45,153,166,231,140, 45,118, +106,154,103,148, 35, 63, 19,164,144, 82, 70, 73,221,174,100, 29, 13, 49, 31, 20, + 59, 59,124,169,177,157,179,239, 38,207,114,145,194, 22,247,130,170,211, 49, 87, +206,215,142, 30,242,161,200,141, 6,111, 7, 1,137,214, 82, 60,144,119, 2,243, + 71,168, 57,180,193, 88, 96, 34,167, 1,112,213, 24,122, 94,239, 68, 14,181, 59, +189,105, 7, 73, 77,172, 65,170, 17,107,144,234, 68, 44,216,130,225,254,232, 66, +243,118, 4,113,100,183,131, 10,249,160, 14,159, 7, 25, 20,231, 23,141, 8, 39, +164,152, 54, 5,210,240, 8, 54,138,138,137, 58,188, 98,132,145,253,108,252, 40, +179,147, 66,166,145, 98, 42,245,220, 30, 93, 32, 9,149,130,138, 88,226, 36,206, + 38,141,223, 36, 53, 69,130,139,183, 96,236, 98,178, 58,229, 67,138, 11, 40, 82, +146, 96, 6, 53,174, 25, 89, 69, 56, 32, 73,171, 51,226, 70,202, 58,200,158,192, +168,116,182, 41, 20,181,158,162, 74, 34,230,249, 43,208, 53, 33,163, 8,119,133, + 41, 21,133,111,145,148, 45, 17, 81, 65, 15,233,230,194,142,243, 96, 41,175, 52, +138,240, 60,123,180, 45,245,130,210, 57,131,113,110,176, 95,190,160,121, 12,179, +248,244,202,173,140, 35,226,222,248,227,138, 95,192,217, 49,213,232, 12, 85, 31, +217, 48, 35,138, 61,215,190, 17, 66,126, 63,164,203,193,121,103,100,168,201,202, + 47, 63, 46, 63,185,112,156,232,108,227, 3, 35, 53, 53,201,121, 89,115,226,217, +195, 3, 23,220,253,179,193, 3,225,233,191,238,242,128,197,174, 52, 92,233, 46, +172,104,235, 14,138,219, 49, 24,251,104,211, 25, 12,226,135, 68,152, 61,163,189, +127,227,250, 5,203,190,166, 94, 76,190, 0,125,162, 23,202,181,121, 18,177, 0, + 82,150,146, 98,115, 48, 78,220, 22, 13,195, 55, 20, 74, 7,178,188,199, 24,218, +224,104,104, 60, 79,239,214,224,233,171, 82,247,150,153, 56, 51,153,206,217, 73, +176,255, 25,174, 17,143, 42,150, 42,166, 0,201, 4, 21,224, 54,131,200, 29,161, + 73,160,249,198,153, 21,186,217,254, 8,201,237,202, 76, 99,207,221, 48,119,204, +241, 52, 26,178, 27, 78, 18, 89,172,167,102, 13,225, 61, 8, 5,175,156,232, 77, +122, 26, 14, 83,122,122,153, 11, 41, 19,116,205,135, 68, 8,125, 93, 6,127,119, +117,138,127,174,171, 34, 84, 64, 6, 89, 80,189,164,215, 42, 74,112, 32,172,134, +252,196,205, 37,116,219,191,203,253,218,245, 28,203, 10,135, 0,198,194,137,112, +104,176,126,208, 12,178, 37,137,239,180, 80, 60,226, 68,251,179,241,160,227, 15, +229, 20,148,105,208,144,113,170,105,196,139,239, 40, 30,113, 22,106,199, 35, 18, + 44,219, 19,195,145,240,220,215, 62, 61,228,163, 52,174, 20,184, 78, 57,182,160, +169, 35, 75,171, 64,150,184,124, 44,167,172,189,134, 82,186,103, 47,244,178,122, +240, 27,232, 56, 86,185, 58,217, 73,147,227, 86,164, 27, 0, 72, 82, 71, 84, 76, + 76, 71, 69, 76, 76,134,143,168,243,207, 1, 99, 77, 68,192,142,208,136,154,230, + 35, 64, 16,224, 65, 32, 40,168, 8, 18, 1,216, 3,153,104, 2, 9, 72,146,242, + 74, 27,232,225,110, 0, 26,129, 66, 44, 41,220, 33,200,170, 83, 9, 75,138, 73, + 13,238,184, 42,128, 86,163,179,163, 92, 44,227, 74, 38,155,148,106, 14, 50,171, +247, 33, 5,148,148,200,180,162,104,103,164,232, 19,146,176,166,158,214, 29,120, +232,157, 3, 94, 44,104, 11,176, 86,139, 81,133,147, 81,107,233,168,173,192, 4, + 67,132,221,154,137, 71,105, 21,164,159,144,132, 53,117, 81,107, 51, 81,159,211, + 53,157, 5,155, 37, 37, 37, 15, 49, 25, 47,212, 28,234, 8,200,170,221, 75, 47, +137, 9,107,234,105,221,217, 47,152,107, 58,244,163,165, 0,215,232,247, 65,138, + 23,117,196, 65,206, 0,201,239,164, 43, 98,116,169, 77, 88, 83, 23,181, 54, 19, +103, 57, 93,211, 89,176, 89, 82, 82,242, 16,147,241, 66,205,161,142,128,172,218, +189,244,146,152,176,166,158,214,157,253,130,185,166, 67, 63, 74, 10,112, 13,226, +170,192,128, 51,242, 51, 34,149,218, 29,163,181,132,135,218, 9,234, 10,136,214, +121, 36,152,171, 34,253,173,138,162,101, 15,163, 74, 38, 75, 74, 53, 7, 41,105, +222, 1, 16,150, 18,153, 86,108, 34,245, 81, 62, 76, 72,194,138,114, 90,199, 58, + 30,170,214,202, 5,173,173,209, 91, 45, 70, 39, 20, 93, 35,136, 85, 1,222, 66, +246, 47,139,138,144, 75,147,220,135,221, 50,129,202, 60,213,229,107, 62,202, 51, + 16,168,232,107,199,126, 77, 65,121, 6, 2, 21,125,237,216,215, 20,148,103, 32, + 80,209,215,246,181,242, 92, 3,129,234,189,182,175,149,231, 26, 8, 84,239,181, +125,173, 60,215, 64,160,122,175,237,107,229,185, 6, 2,213,123,237,248, 90,225, +140, 65,160,232, 12, 93,161,211,235, 39,137, 2, 84,134,120, 82,112,192, 49,250, +145, 72,197,110,133,164, 61,210, 7, 89, 73,232,162,246,107, 49,197,183, 42, 33, +180,182, 70, 85,183,186, 76,209, 98, 73, 73,201, 65,102,245, 62,164,130,130,146, +152, 90, 54,162, 53,128, 0, 75, 39,132,102, 5, 98,107,196,195, 26,178,162, 91, +208, 22, 96,173, 22,163, 11,213,152, 81,100,216,165, 96,192, 65,196,117,141,212, + 35,117, 20, 92,113, 73,224,166, 91, 45, 32, 90,196,213, 51,212,182, 70,184, 90, +188, 50,232,209,122,128, 62,112,235,220,169,164,166, 69, 21,210, 39,172,172, 82, + 83, 33,101,220, 9, 70, 2,164,140,225, 52, 65, 59,216, 28, 73,191,202,213,243, + 22,179,115,146, 30,115, 5,208, 14, 54,207,124,134,110, 74,184, 67,232, 81,199, + 42, 34,176, 84,201,173,238,100,193,202, 37,213,221,227, 10,125, 33, 1, 66, 13, +161, 23, 38,169, 79,224,185,202,211, 10,103, 35,165,175,210, 18,117,141,145, 36, +164,163,131,174, 0,183,103,115, 36,189, 19, 37,229,232,194,207, 75,218, 24,106, +192,180,231,185,198,103,160, 69,210,222,130,124,117, 97,108, 57, 79, 68,184, 80, + 33,183, 78, 92, 35,120,162, 66,135,231, 86, 69, 81,153,113, 5,147, 37,167,146, +133,152,141, 38, 43, 14,117, 36,188, 72,125,148,111, 81,191, 8, 31,120, 16,141, + 58,209, 38,143,176,115, 60, 0,205,197, 34, 7, 64,171, 34,135,182,126, 51,134, + 62, 27,167,230, 28,157,176, 50, 76, 34, 80, 83,112,123, 49, 18, 34,173,167, 90, +188,157,200,230,213, 61, 98, 5, 99, 23,124, 6, 82,245, 80, 15,218,195,230,133, + 73, 37, 98,133,176, 15,198,130,123,181,184,148, 76, 47,248,108,221, 77,139,149, +203,158, 25, 25, 77, 90, 28, 9, 22,115, 71,223,237, 12, 87,125,166,184, 19,181, + 71, 76, 31, 99,110, 52,105, 6, 24,156, 11, 85,122, 80, 96,111,133, 33,204, 89, +165,235,141,228,170, 91,217, 9,115, 86,233,122, 35,185,170,104, 64,206, 85,157, +174, 51, 13,169,138, 2,163, 92,171,116,189,145, 92, 37,218,144, 15, 62,101, 99, + 26,194, 86,234, 90,137, 68,233, 70,242,250, 86,141,250,225, 71,153, 17, 2,164, + 56, 0,130, 69, 20, 24,128,205, 3, 32,248, 29,213,214,227,236, 37,152,164, 21, +126,178, 37, 30, 7,236, 95, 98,116, 37, 2,191,184,152, 3,247, 56, 12,197, 60, + 66, 90, 41,153,211,137,204, 34, 62, 87,107,115,188, 76,171,181,200, 27, 96,187, +177,108, 89,214,234,179, 0,248,223,222,254,159,120,226, 77,155, 70, 80,116,116, + 91, 90, 51, 69,229, 3,134,144,168,115,111, 51, 28,115,122, 4, 8, 83,194, 24, +131, 10,205, 76, 74, 7, 51,144, 32,136, 32, 16, 6, 34,130,132, 32, 59, 32,136, + 16, 70, 38, 48,129,136,136, 72, 32, 18,164, 32, 77,218, 72, 92, 22, 28, 98, 81, + 11, 76, 20, 83,201,201, 5,194,255,168,203, 60, 53,160,203, 15, 94,102,130,254, +200, 97,125,200,245,234,174, 49,129,135, 28, 84, 92, 29, 21, 30, 32,111,184, 83, + 71, 82, 46, 51, 32,107,112,125,241,221, 58,199,183,213, 13,100, 77,173,215, 62, +173,234,134,210, 85, 80,132, 27,235,131,250, 27, 28, 59, 20,175, 64,249,214,161, + 72,128, 72,249,199,117, 32, 92,143,172,252,120,169, 5,228, 36, 80,184, 58,150, + 80,130,215,208,174,153, 15,170, 73,222,200,151, 59, 80,153, 56,224,232,138,227, +170, 7,112, 26, 88, 95,124, 89,149, 61, 90,157, 0,181,181,213,218,199,117,251, +122, 93,189,250,188,186, 64,221,250,234, 2, 16,156,106,164,126, 96, 0,132, 64, +178, 48,112,185, 73, 37, 38, 15,116, 12,216, 82, 33,216,128,177, 82,219, 73,190, +200, 27,164, 11,210, 10,220, 36, 24,162, 32, 72,170, 77,113,195, 22, 88,170,155, +108, 65,233,148,238, 54,223,200, 26,151, 14,181,195, 24, 91, 91,227, 2,153,145, + 25, 31,178,246,151,223, 58,192,218,204,157,161,233,157,161,126,211,169, 57, 65, +253,174,123,202,197, 21,237,163,168,161,110,150,131, 20,186,218,178,220,229,218, +232, 88, 41, 91, 46, 60, 84, 26, 20,193, 43, 74, 60, 66, 61,200,121,218, 56,140, + 40,213,179, 16, 23, 7, 50, 4, 55,238,195,250,178,160,123,252,133,187,104,151, + 61,118,109, 3,206,234,251,244, 55,213,133,207,175,150, 38, 36,161,144, 8, 72, +128,223, 13,248,192, 73,156,223,102,187,253,103, 74, 76, 19,168,131,198,103,138, + 1, 9,136,110,171,180, 19,188,100, 62, 46,230,156, 21,230, 40,138,239,159, 55, +189,162, 43, 67,139, 39, 25,122,132,145,149,187,115, 46,244, 91,105,167,204,198, +243,104, 37, 60,223,114,211, 27,118,189,176,171,254,140, 5,160,187,195, 67, 6, +174, 12,208,232,250, 91,247, 66,131,224,180,200,178,169,223,133,213, 40,249,182, + 75, 12, 43, 67,139,103,224,129, 98, 86,151, 59,193,100,141,187,168,202, 7,247, +139,249, 20, 11,206,184,242,120, 44,137,170,164, 48, 20, 89, 36,139, 28,201, 5, +165,150,138, 47,153, 84,196,112,246, 55,121,125,168,105,119,255, 2,221,161,108, +157,180, 1,227, 98,186,232,108, 95,156,118,152, 23,204,242,161, 20,183,205,139, + 66,170,114,182, 46,249, 28,224,187,125,160,142, 29,128,124,173, 6,251,201,139, +208, 53,208, 59,116,126,227, 36, 22, 44,243,188,105,220,213,255,216, 54,155,251, + 10, 18, 54,131, 2,211, 80, 45,157,167,117,141,231,155,202,157,123,139, 97,178, + 74, 72, 31,207,235,190,141,239,218, 99, 70, 2,129, 80,120,219,208,232,220, 58, + 12, 20, 82, 55, 32,203,172,131, 35,114,110,235, 19,167,114, 72, 0,215,178, 46, +240,197,204,100,208, 54,140,229,205,233, 61,160,183,187,140,249,128,186, 44,116, + 64,235, 64, 60,219,188, 54, 86,223,123,205, 76,250,165, 27, 6,248, 24,248, 12, + 11, 71,230,207,151,133, 42,109,101,224, 47,215,239,131, 83, 19,255,208,157,174, +205,235,229,178,243, 9, 21, 66,204,117,115,124, 61,187,136,181, 38,195,174,251, + 79,204,239,255,211, 98,197,130,255, 98, 44, 40, 23,250,247,220,199,130, 30,112, + 81,193, 99, 89,237,139,121,246,141, 85,252, 40,121,196,116, 44,151,156,188,155, + 90,101,205,192, 61, 53, 62, 94,105,220,117,248,248,151, 96, 85,145,199,253,250, +143,158, 43,204,198,219,189,211,141, 47,106,117, 60,184,149, 58, 43, 87,150,191, + 84,190,165, 69,141, 42, 22,198, 9, 31, 91,236, 44, 90,175, 50,160,252, 88, 82, +241,186,136,108,141,207,194,216,116,101,213,207,134, 37, 84,224,163, 56, 86,234, +253,103,168,121, 85,120, 47,248,139, 44,179, 4,110,201, 34, 77,143, 92,218,250, +247, 24,220, 48,241,149,190, 92,109,197, 47, 56, 75, 34,127, 38, 78, 40,212, 62, +242,164,255, 98, 61,104,240,149, 25, 50,121,127, 52,109, 85, 62,126,165,204,219, +144,222, 50, 78, 61,208,138, 30,220, 59,136,228,102, 69,213,166,188,158,100, 42, +173, 91,106,162,224, 58,114,145,133,223,201, 63,178,157,239,144,248, 82, 88, 85, +220, 73,108,251, 22, 34,122, 14,148, 98,172,152, 77,225, 0, 8,162, 99, 74,215, +219, 92,175, 47,169,137, 56, 29,240, 18, 95,107,130,124,231,253,193, 82,100,244, +134,180,129,228, 80,207,182, 78,182, 97,180,162,197,105,211,237,212,184, 13,149, +253,119,105,236, 84,212,164, 53,229,116,116,132,105, 43,208, 64,250,211,212, 12, + 32,177, 7,167,201,170, 17,254,254, 8,210, 64, 62,208,157,131,253,117, 50, 63, +143, 11, 3,227, 79,152,232,228,194,123, 43,236, 49,195, 28, 22,229, 94,105,165, + 43,240,160,114,241,165,158, 46, 18, 8,174,219, 94,142,159,129,126,155,109,152, + 26, 48,220,141,196,134,170, 98, 86,177,225,131,196,176, 60, 81, 21,142,235, 14, + 16,188,119, 90,168, 27,117,181,220, 10,142,172,120, 12,184,215, 65,117, 44,134, +209,211, 98,161,234,180, 80,181,158, 7, 97,254,113, 82, 53, 77,128, 90,199,225, +109, 39,188, 7,163,249,204,156,197,219,166,195,249,147, 9, 40, 64,205,205,239, +167, 42, 33,198, 34,169, 10,249,224,202,190, 81, 63, 24, 92,235,145, 94, 24,220, +229,105,166,201, 8,220, 19, 69,154,252,191, 89, 23,185,118,147, 66,112,192, 88, + 23, 24,189,232,110,110, 20, 4, 47,208, 12, 52, 0,213, 67, 82, 0, 57,177, 82, +174,180, 12,118,136, 70,113,214,225, 50,199, 13, 22, 11, 24, 9, 14,254, 60, 76, + 57, 27,152,194,151,228, 12, 55,106, 67,130,232, 46, 76,195,141,194,146,144, 93, + 67,242,205,113,189,190, 2, 38,116, 87,145, 51, 50,168,230,100,116, 13,141, 12, +185,197,204,102, 9, 51,138,170,125,178,154, 99, 87, 26,193,113,157,161, 19, 11, +125,200,181,207, 78,228,152,240, 9, 62, 44,250, 42, 30,229,167, 83,140,104,138, + 17, 39,210, 17,220, 34,162, 52, 85,211,224,124,213,136, 26, 46,189,232,108,227, + 71,122,146,200,166,109,112,121, 17,207, 92, 61,228, 70,106,154,146, 5,157,171, +216,182, 9, 6,138,216, 22,179, 38, 97,199, 52,193,112, 69,163,147,131,175,128, +115,206, 46, 25,197,142, 96, 72, 95, 50, 49,211,192,248, 34, 56,253, 52,161, 79, + 19,244, 23, 77,224, 74,164, 26, 96,214,122, 30,212,164, 29, 55, 90,232,116,192, +143,112,237,187, 21,120,162,106,131, 28,201,245, 9,243,240, 93,180, 96,133, 22, +172,168,106,132, 83, 68, 13,109,213, 20, 62, 31, 53,178,197,113,233, 53, 23, 75, +215, 28, 35,185,105,103,133, 73,249, 90,251,143,141,193, 25,108, 36,209,197, 21, + 44,165,136,119,246,160,234,238,146,155,101, 62,176,205,170,245,136,150, 20,134, +173,234, 65,213,125, 50, 53,203,206,103,203, 80,235, 21, 41, 53, 85,201, 71,147, + 11,118,102,189,198,172,112,218,102,128,189, 46, 94, 67, 66,156, 52, 89,107,101, + 9, 82,232,139, 32, 9,168, 95,247,178, 54, 23,186, 87,183, 34, 17, 54, 53, 30, +116,145,156, 48,240,109,218, 45, 61,196, 96, 4,128,240,175,244,164,175, 93,140, +192,145, 48, 53,176, 20,240,157,186,172, 73,231,127,225, 64, 72,206,240,195, 77, +130,106,132, 93, 37,161,218,171, 43, 40,251, 96, 93, 89,169,165,201,237, 69, 71, + 16,162, 18,168,145, 35,234, 76, 98, 86,168, 27,170, 75,153,158,133, 68, 16, 50, +164, 64,203, 34, 93, 4, 33, 88,209, 33, 27, 86, 33,184, 43,248, 11,201, 21, 11, +240, 97,177, 81,143, 92, 81, 67, 45,124,169, 69, 95,153,232,215, 17,186, 39,136, +246,162,163, 86, 1, 99, 28,232, 18,104,212,113,239, 96,254,253,173, 24,171,233, + 11,165, 89, 69,171,157, 39,186,150,225,108,104, 43, 6, 92, 12, 1, 86, 54,164, + 38,224,148,232, 1,112, 98,217,166,252,186,190,238, 5,248,152, 29, 52, 60, 61, +186,108, 89, 31, 78,165, 62,108, 52,245,128, 74,235, 24,198,152,102, 8, 33,157, + 0,149, 0,149, 0,246,127, 94,141,109, 7,119, 30, 88,188, 71, 53,245, 29,237, +218, 31, 58,225, 41,158,136, 36, 84, 40, 2, 19,141,204, 3, 66, 52,241,209,228, +111, 52,208,194,130, 3,115,190,228,246,210, 61,242,163, 81, 8, 90, 13, 72,228, +139,216,161, 35, 4, 45,219,104,167, 62, 83,181, 98,159,203,223,198,133,150,121, +182,127,233,248, 35,175,236,177,247, 22,153,207, 82,219,222, 71, 56, 82,163, 27, +117, 61,199,152,179,200, 54, 65,208, 99,138, 69,166,208,184,128, 51,115, 64,177, +196, 40,101, 75,155, 90,248, 71, 65, 28, 81,161,101,124, 77, 59, 43, 66,158, 49, +183, 97,111,238, 50, 73,135,123, 62,197,152, 89,226, 63,181, 16, 40, 35,130,193, +227, 18,119, 66, 8, 20, 11, 37,161,106,170, 49, 11,161, 16,231, 59,163,230,186, + 54, 9,205, 3,127, 38, 90,163,129,253, 5,207,119,203, 23,186, 9,125,159,192, +126, 22, 85, 1, 58,211, 53,223,106,119,126,250,179,142,225,181,142,175,244,148, +244,227,184,182, 32,183, 67,238, 9,114,103,144,187,130,153,238, 45,170,196, 27, +225, 94,197,101,250, 51,151,212,166,157,255, 21,155,214,103,135, 51, 61, 95,167, +126,112,192,105,114,210,153, 96, 46, 82,255, 41,173, 56, 88,117,231, 55,185,254, + 92,149, 86,169, 81,128, 39,221,231, 9, 50,175, 94,155, 35,178, 71,252,194, 26, +115,158,120, 38,152,164,116,228,172,180, 25, 10,150,121,154, 98,140, 49,198,105, +138,177,170,220, 99,188, 86,231,194,170, 85,135,104,125,233,148,206,132,239, 62, +111,135,110, 78, 13,219, 56,208, 52, 89,139,177,150, 41, 38,173,181,214, 90,183, + 29, 99,196, 68,200, 24,200, 42,136, 49,198, 88,225,118,171,192,153,242, 17, 32, +167,169, 39, 8,181, 55, 88,149, 34, 70,247, 24, 35, 20, 99, 28, 25,105, 96, 15, + 37,131, 93, 93, 42, 88, 85, 85,229, 78, 43,147, 80,141,101,185,229, 49, 70,119, +200,161,199, 24,227,187,133, 16, 31,196, 63, 50, 16,175, 32, 24,144,143,134,232, +245, 99, 91,223,107,181,187,144, 45,235, 65,175, 50,153, 48, 4,133, 64,157, 25, +124, 47,146, 37,186, 72, 23,233, 34, 89, 34, 75,100,137,164,138, 84,185,125,208, +152, 13,110,248,224,171, 30,170,161,123, 90,188, 24, 18, 23,201, 18,113,108, 82, +229, 34, 93, 36, 75,100,137,164,138, 84,241,123,253,101,254, 28, 75,176, 37,147, +137,214,105, 52, 48,145,172,238,248, 43, 69, 81, 0,154, 85, 79,146,104, 36, 63, +193,195,159,207, 27, 15,131, 69, 90,198,108, 24,179,225,248,203, 7,230,141,220, +180, 52,184,188, 31,124, 57,194,145,189,145,117, 98,148,122, 38, 10, 28, 24,184, +126,189,234, 12, 14,212, 13,247,102, 0,115, 61,247, 28,128,182,137, 96,254,185, +102,149,238, 23,252, 19, 21,164,217, 54, 66,233,181,113, 48, 8,141, 32,168, 4, + 59, 70,107, 3, 1, 65, 3,211,114, 0, 0, 10, 11,138, 35, 82,153, 72, 10,163, + 40, 6,253,196, 32, 7,194, 23,140, 11,138, 24, 67,132,128, 5, 16,143, 97,104, +134, 2,128, 0, 1, 24, 6, 32, 0, 48,160,136, 49, 72, 17,227,152,250,214,150, + 2, 79,243, 63,207,164,148,104,132, 80, 16,243,148, 69,169,185,255,238, 66,129, +223, 33,212, 27,213,139, 41,162, 23,127,143, 67,200, 79, 77,246,211, 16,254, 62, +229, 0,236,197, 13,245,216,221, 18,128,161, 21, 49,227, 47, 58,208,143,180, 19, +249,248, 26,247,126, 87,132, 6,115,196,156, 47,132,161,205,244,139, 26,187,232, +105, 88, 8,132,227,243,200,206,120,166,192, 99,136,127,108,197,157, 90, 45,232, +123,146,129,195, 79, 59,244,121,118,128,186,160,241, 19, 43,247,208,215,113,168, +135,196,237,145, 90, 71, 20,167, 60,232,158,130, 58, 67, 9,108,227,204, 63,197, + 69,226, 42,218, 82, 77,129, 79,242,168, 90, 23,252, 58, 17,247,206,227, 27, 14, +130,212, 79,223,116,252, 45, 21,220,121,190,167,235,215,113,154,236, 88,233,223, +174, 14, 94,130, 26, 95,231, 41, 98, 89, 52, 53,203, 73,122, 48,142, 14,196, 15, + 77,146,220,132, 77, 86,117,168,152,186,207,147,215,157,111,120, 47,159,161, 13, +116,235, 5,164, 79,179, 28,163,117, 69, 34,118, 16, 19,119,118, 14,109, 46,187, +152,155,164, 86, 43,241,143,218, 1, 18, 65,152, 55,208, 33,250, 80, 34, 70, 51, +148, 17,131,113, 39,101,204,211,182, 87, 55,200, 26,242, 44,189, 2,123, 6,181, +215,135,162,223,243,196,104,150, 46,120, 67,132,227,126,101,127,228,180,105,192, +182,205, 91, 46, 78, 66, 99, 39, 41,161,147, 98,105,182, 77,165, 24, 26, 34,242, +120,211,157,202,228, 44,137, 92, 77, 1, 39,100, 25, 92,251, 70,207,211, 16,142, +184, 5,118,116, 18, 40,134,150, 40,187,144, 37, 34, 97,130,235, 36, 44,236,107, + 2,188,143,176,183,232, 42, 42,159,220,121,229, 66,147, 74, 50,164,205, 50,242, +221,207, 83,137, 20, 99, 85,147,181, 28,111, 60, 18,132, 20,202,222, 16,115, 33, + 93, 79,226, 46,144,188,234,101, 8, 21,139, 2,129, 36,146, 16, 64,234,125, 78, +113,161, 54, 84, 26,135,213, 15, 15,161, 94,221, 34,194,108, 86, 70, 7, 21,186, + 91, 62,121,108,163, 94, 2,214, 69,115, 11,222,220, 43,207,193,197,103,140, 30, +230,190, 87,124,193,180, 48,130,128, 17,174, 10,218, 48, 89,140, 10,127, 39,194, +218, 72, 78, 69, 99,161,189,111,222,251, 30,198,224,131, 14,104,154,148,134, 88, +145,235, 89, 19, 72, 31, 89,152,143,133,116, 34,160, 47,159,210,195,251,156, 62, + 14, 26,190, 67,251, 64,231,206,250,153,125,233,138,199,151,223, 97,125,185,157, +121,229,175,187,220,199,236, 29,245,105,237,144, 62,185,134,126, 58, 50,253,255, +208,195, 79,235, 79, 52,144, 97, 56, 31, 35,162, 85, 96,136,163,241,102, 25, 69, + 35,103, 43,195,159, 63,132, 7,232,214,195,121,172, 99, 72, 69,106, 18,128, 25, + 97,206,214, 4,137,126,102, 48,240, 75,138,136, 33,236, 75,195,217,102,188, 54, +116,252,150, 67,250,220, 9,238, 4,217, 86,128,151,241,109,168, 55,165,244,129, + 62,214,214, 34, 3,134, 51,194,176,218, 36, 48,154,120,150, 45,111, 25,118,228, + 7, 32, 25,211, 26, 70,121,223,232,136,176,109, 59,153, 4,233, 22,181,224,145, +122,126, 71, 7,137,104,250,201,245,173, 84, 78, 56,132,190, 55, 49, 16,150,173, +128, 77, 96,187, 4, 12,131, 75, 22, 37, 84,170,244,165,144, 52,121, 52, 51,126, + 75, 79,153,179,213,184, 32, 76,245,112,118, 71,170,213, 38,246,144, 33,159, 13, +197, 21,245,185,145, 62,219, 74,144,201,170,100,141,112,151, 62, 98,189,225, 54, +111, 96,207,107, 48,250, 2,177, 32, 53, 43,168,102,221,127,225, 0, 5, 80, 80, +112,132, 56,169,235, 95,180,171,129, 90, 51, 63,234,138, 85, 9, 4, 45,140,167, +157,160, 38,107, 35, 40, 14,111,179,202,122,123, 68, 46, 4,183,130,193, 92,193, +187, 12, 75, 47,203,189,219,170, 73,211, 53, 15, 25,111,241,160,250, 28,175,180, +103,160,241,208,132, 4,144, 10,249, 81, 20,113, 29,223, 85, 49, 99,149,222, 16, +234, 56, 95, 57, 91, 28,218,132,211, 48, 22,182, 87,200,248,143,234, 9,193,133, +192,130,206,107, 37, 51,245, 89,161, 72,154,190, 80,188,122,208, 89, 33,121,139, +210,112, 21, 10,251,250,110,183, 86,240,202,110,211,235,135,128, 83, 53,137,133, +137,115, 55,245, 3, 73, 68,238,212, 21,179, 94,170,101,160, 60,170,234,234,229, +254,165, 92,195, 60, 9, 94,182, 84,149,135,218,249,164, 9,232, 71,166,236,174, + 98, 21,229,253,229,250, 26, 44, 50, 88, 81,195,225,240, 94, 2,241, 78, 51, 1, + 54,211,132, 8,160, 5, 38, 82, 5,189,108, 59,244,208, 85,154,138, 75,231, 58, + 23,212, 63,144, 42,134,174,143,103,104,104,116,211,182,152, 19, 92,187, 87,151, +118,196,134,118, 21, 0, 55, 98, 54,122, 48, 50, 58,246, 80, 12,177, 90,206,207, +234, 12, 46, 77, 29, 11,115,198,160,220,102,171,124,151,158,198,100,194,176,222, +200, 58, 17,126, 53, 59,180,181,251,165,114, 55,205,231, 77, 21, 37,127,255, 22, +221, 6,120, 96,242,162,222,192, 74,238, 80,199,219,101,142,194, 41, 24, 45,223, +173,223,167, 21,188, 48, 79,189, 74,223,230, 95,108,207, 32,239,155,184, 74,189, +121,108,163, 14,106, 53,118,138,197,213, 26, 10,207,228,221, 23,231,101,143,230, +179, 90,166,209,202,221,105,153, 52,138,138,218,215,248,173, 80, 4,201, 35,174, + 80,217, 83,148,227,176, 48,115,128, 32,204,182, 18,200, 89, 65,255, 49,103, 54, + 7, 8,123,221, 52,167,200, 34,160,219,183, 98,227,165, 85,189,235,229,114,233, +158,226,121, 6,184,186,156,222,166, 27, 3, 83,164, 2, 54,225,132,151,172, 4, +223, 14,190, 0,112, 60, 76,242,244, 79,147,170,122, 59,120, 44,241, 26,109,168, + 87,132,162,235, 86, 2, 53,228,239,128, 37,162, 43, 99,234,254,203,141,116, 19, + 94,122, 8, 47, 9, 75, 51, 21, 14,166,220, 44,164,145, 39,137,177,187, 34, 11, +187, 66,192, 38,149,150,141,109,173, 34, 37, 22,141,238, 41,107, 60, 35,111,171, +232, 63,196, 80,118,214, 23, 11,229, 45, 70, 69,215,222,140,143,251,155, 10,139, +128, 63,104,177,127, 98, 18, 63,203,113,107,192, 0,182, 93,180,147,212,148, 68, + 73,166, 26,109,124,121,187,166,218,151, 16,153,239, 62,184,226, 14, 8, 53, 8, + 59, 0,120, 66, 71,153, 3,145, 47,234,163,116,161,171, 9,104,197, 90, 5, 19, +202,142, 96, 18,221, 28,104,155,196,116, 10,110,147, 8,158,111,172, 88,174, 15, +233, 89, 80,140,236, 73, 28, 20,228, 92,146, 92,234,116,158, 14, 62, 47,127,194, + 50,105,240,244, 16,168,181, 65,210,245,186,219, 21, 37, 21, 44,190, 29,206,174, +194,141, 43,142, 62,137, 25, 45,191,200, 88, 33, 69, 87, 48,206, 51, 49, 41,203, +124,164,201, 31, 95,207,113, 8,222,105,164, 72,219, 58, 21,110, 11,169,229,174, +135, 20, 53, 36, 5,167, 97, 32,187,212, 8,174,243,159, 61, 36, 7,115, 24, 4, +201,143,231,233,143, 98, 48, 59, 63, 20,188, 0, 99, 69,141,227, 54, 53,192, 11, + 35, 0, 63, 71,124,214, 66, 69,253, 16, 50, 62, 47,243, 11,234,161,117,135, 87, + 24, 74,220,159, 74,192,115,138, 35, 21, 27, 20,143,227,184,209, 60, 69,190,145, +160, 35,216, 12,131, 62,145,123,128, 15,145,184,215, 62,166, 11,103,233,239, 75, + 14,137,166, 84, 88,150, 73,233,120,147,149,218,204,142,100, 89,166, 85,163,196, + 71,178,218, 76,168,254,155, 14, 57,242, 11, 47,152,183, 46,223, 71,216, 66,145, +129,187,209,171, 34,143,112,249,243,140, 30,201,109, 14, 71,122, 54,193, 19, 74, +110, 35,206,226,100,108,200,217, 84,250,192, 33,164,254,155, 84,144, 58, 77, 67, + 81,127, 16, 3,215,170, 51, 57,173,102,250, 77,127,215,135,199, 56, 28, 92, 23, +174,225, 28,211, 67, 82,246,228, 32,137,174,255,134,134,141, 93, 85, 9,128, 1, + 27,176,168, 15,219, 60,178, 45, 1,217, 80,130,146, 51, 48,111, 99,103,157,109, +170, 7, 87, 56,137, 53,187, 70,133,186,222, 19, 95, 58, 37, 61, 39,235,213,204, + 19, 80,216,168, 96, 97, 77, 92, 85, 87,105,125,172,218,141, 15, 62, 85,195,149, +158,148,161, 6,165, 86, 19,112, 20, 17,179,102, 58, 84,236,215,110,230,127, 86, +206,124,105,188, 94,156,162,204, 69,148, 5,244,167,141,106, 61, 27,154, 68, 77, +222,158, 11,243,145, 31,136, 4,232, 68, 97,198,133,202,165,146,123,102,162,146, +107, 48, 23, 64,237,250,135,128,178,110,173,188, 17,216, 81,219,181,145,188, 27, + 13,159,142,142,180, 38,211,236,239, 11,219,224,192,202,246,234,141, 65,180,116, +190,148,168,162,152, 42,126, 74,247,126,186,199, 5, 24,139,173, 55, 5, 82,125, +101,123,238,189,121, 1,135, 25, 56, 1,126,153,230, 54, 70,157, 91,233,163, 2, + 66,242, 25, 95,236,168, 6, 25,246, 50,253,248,101,117,217,105, 27, 0,190,197, + 28,218, 12,122,134, 77,120,206, 80,180,110, 25,154, 64, 48, 84, 91, 33,155,154, +191,164,104, 43,142,223, 28, 64, 41,108,210, 5,132,155,236,222, 27,139,141,222, + 44,107, 7, 64,231,166,154, 1,133,117, 67, 28,104,141,197,251, 75,118, 61, 22, + 29, 95,153, 33, 3,236, 12, 96,168, 75,244, 63,233, 0,217, 72,175, 35,186,163, +180,115, 58,249,143,234, 65,176,194, 25,208,202,201,211,206, 77,160,148,210, 87, +237,202,232, 99,123,194, 46, 82,228,169, 47, 78,234,154, 0,162, 96,235,129, 99, +212,175, 41, 24, 42,187, 81,229,197,244, 48,117, 41, 81,200,117,164, 89,203,105, +180, 60,120,233,235,205,137, 77, 16,147,205, 23, 6, 6,129,239,166,128,230,155, +155, 31,204,137, 8, 77,133, 98,127,158, 14,182, 19, 45,139,181,134,107, 80, 94, + 25,118,174, 14, 87,183,164,164,255,211,168, 93, 92, 56,250, 82, 67,195, 97, 91, +205, 22,191, 92,191,100,188,129,245, 82, 31, 64, 76, 45,184,227, 30,200, 13,230, +201, 82,230,195, 29,161, 10,234,112, 95,156, 33, 28,170,158, 18,215, 32, 51, 79, +238,111,174, 60,116,188, 78, 38, 56,127, 7, 60,145,188,134,163, 59,194, 36,208, + 62, 48, 12,143, 35, 20,207,203,136,111,102,165,191,249,195,158, 13, 52,186,185, +110,210, 47, 75,123,198,206, 28,103,181,249,244, 1,164,110,240, 47, 83,203,129, + 47, 5,156,229, 21,205,223,152,148, 43,132,226,103,119,236, 43, 29,250,215, 15, +142, 15,155, 17, 11, 56, 63,153,191, 13,207, 23,172, 65,251, 26,209,156,128,107, + 28,127,146, 35,144,114,197,242,148, 2, 16, 38, 41, 58,255,166, 10,245, 78, 21, +244, 70, 84,172,224, 51, 27, 93,214,155,147,194, 22,104,196, 64, 16,163, 84,197, +176, 85,241, 15, 92, 85, 37,175,149,182,236,131, 26,225, 59,219,153, 27,116,150, +197,168, 21, 66,132,251, 34, 49,227,113,226, 67,226,204, 30, 49,184, 51,134,136, +170, 20,208, 93,201, 12, 49, 41, 70, 45, 89, 97,126,237, 36, 3,166, 61, 71,132, + 38, 49, 17, 25, 86,242, 93, 69,250,250, 81,140,123,130, 40, 9,214,196,252,216, +180, 83,220,253,157,254, 16,121, 26,207, 4,148,143,232,154,112, 0,171,234, 72, + 48, 8, 65, 91,192,186, 25, 41,143, 0,164, 85,246,116,158, 96,179, 41,160,129, + 45, 1, 61, 4, 69, 60, 60,198, 41,203,127, 9,241,219,191,136,249, 99,112, 38, +246, 60,138, 20,173,144,234, 53, 0, 55,166, 68, 59, 2,182,138,176,148, 97,191, + 66, 42, 25, 83,132,232,204, 36,149, 18,159,206, 0,144,203, 83,232,254,199,127, +213,206, 41, 47, 99, 0,254,163, 60, 83, 47, 61,167,137,224,165,254, 48, 21, 45, +251,144,225, 77,252,178,147,163,199,161, 42, 8,169,195,171,215, 88,156,252, 0, +164, 58, 54,175,193, 26,188, 76,210, 67,231,196,219,244, 24,125, 10,206,163, 71, +112, 64,122, 46,170,170,110,225, 60,186,217,240, 48,213, 82, 5,103,146,122,196, + 19,145, 32,131, 51,110, 33, 69,245, 53,153,220,225, 87,249,239,133,115,200, 88, + 84,144,166,190,228,235,188, 22, 98, 26, 21,149,178, 35,226, 48,147, 51,241,111, +184,168,125, 18, 19,228,121, 12, 41, 45,194,250, 20,184,225, 89,112, 32,177,217, + 32, 20, 20,184,115,195, 90, 31,135, 75, 91,193, 15,230,117, 79, 83, 20,162,180, +253, 33, 48,155, 76, 2,197, 19,248, 40,118,237,184,241,211, 48, 71, 64, 12,244, +216,131, 28,203, 15,242,129, 97,180,156, 8, 2, 27,198, 42,121, 66,170, 25,139, +220,218,185,130,124, 95,255,145,158,135,226, 16,111,129,159, 17,232, 18,184, 82, +141,143, 46,206,124, 47,196, 86,135,213, 2,216,202,164,115,192, 75,126, 67,170, + 5, 18,168,149,172,252, 4, 65, 55,226,231, 88,237, 36,160,111,124,109,226,101, +117,211, 33, 77, 67, 86,146,180,223, 53, 60, 48, 10, 80,129, 32,233,153,153,193, +171, 72,195,137,234,249,250, 60,167,201, 78,244,133,237,241, 1,166,156, 74,120, +242, 62,246, 56, 40,129,164, 1,173,205,188,207, 93,198,234, 45, 63,206,121,181, +154,252,171,131,213,224,197,170,126, 74, 62,202, 26, 68,164,151,108,159,233,224, +208, 32,119,168,246, 76,158, 84,164, 22, 60, 85,243,229,122, 41,176, 49, 91, 98, + 13, 43, 4, 32, 31, 93,165,230,161, 62,124,159, 3,101, 74,231, 94, 0, 62,178, +167,197, 32,144, 15,164, 84,198,158, 44,108, 50,152, 71,202, 59,226,166,185,160, +136,212, 0,230,150,110,248, 74, 92,123, 26, 67,236,219,240, 40, 48, 87,243,215, + 55, 37, 49, 88,219,100, 5, 40,205, 42, 73,144,240,230, 19,130,107,182,176,246, +184, 49, 30, 71,137,134,119,118,141,132,163, 23,214,166,146, 99, 11,121,212,175, +223,135,147, 90,224,227,236, 50,168,184, 85,148,220,137, 57,164,141, 59, 26,107, + 37,151, 13, 56, 25, 38,252, 90,176,227,180,130,129, 75,104, 51,253,180, 48,155, + 83, 72, 91,190,118,160, 72,110, 14, 84, 54, 70, 90,231,198,122,162,216,109, 88, + 74, 15,140,204, 73,226, 92,178, 11,240,106, 38, 77,222,140,206,153, 48,206,133, +208,101,255, 94, 54,151,110, 18,148,227, 22,130, 38,147, 87, 71, 98, 72,183, 75, +149,109,117,232,151,121,231, 18,158,125,102,238, 61, 63,155,251,193, 28,227, 83, +188, 47,213, 14,145,136,248, 51, 36, 11,243,167,231, 28, 12, 19, 23, 78,201,132, + 37,107,201, 87,193,214,168,205,122, 90, 19,128,189, 57,192, 26,101, 13, 19,199, +163,159, 35,144,108,214,166,215,121,223,105, 15,169,241, 86,204,199,182,125,172, +205,134,239, 17, 85, 7, 43, 98,252, 79,238, 36, 68,156, 79, 83, 27,119, 61,229, +238,152,127, 3,105,149,242, 62,242, 91, 28,227,178, 53,219, 85,173,200,170,148, + 11,237,120,243,160,157,141,197,230,104, 55,232, 96,187, 67, 7, 45,255, 84,131, + 19,132,231,160, 60, 75, 93, 48,136,198,232, 86,143,218,185, 34,111, 5, 61, 59, +132,102, 9, 27,129,143,193, 80,216, 8,115,242,122, 41,218, 92,156, 21,109,116, + 45,218,226,248,253, 17, 21, 98, 94, 45,149,119,108, 12,237,121,249,184, 65,141, +109,141,233, 46,112,239,204,137,194, 53,212, 77,116,204, 54,120,121,167, 44, 94, + 12,182,119, 3,173,126,214,205,192,247,218,218, 82,211,225,159,212,213,128, 27, + 34, 90, 13, 95, 82, 76,190,142, 59,109, 41,211,209,108, 71,202,174, 25,220,133, +254, 45, 2,154,159, 60, 44, 43,154,121, 6,254,128, 34,218,242,100, 92,128,171, +121, 79,204,112,175, 4, 8,215,140, 54,182,251,155, 41,124, 34,154, 55, 93,154, +113,218,196, 6,208, 51,192,235, 44, 61,149, 43, 70,122,142,187,249,107, 65,252, +206, 63, 98,254,245, 62,119,225,148,124,134,134,172,192, 18,123, 81, 29,204, 24, + 80, 3, 97,146,189,218,207,254, 75,159, 56,215,210, 19, 82,163,238, 93, 19,136, +162,135, 50,190, 80,169, 87,159, 3,160,199,208,180,179, 38, 36, 87,123,147, 94, +108, 8,252,241,195,114,237,195, 84, 69, 38, 2, 38,138,230, 55,212, 17,237, 50, + 9,101, 14, 87,213, 79,132, 41,232, 31,152,143,231, 90,184,121,223,210,221, 7, +225, 17, 62, 62,219, 60, 21, 80,227,185,225,117,248,201,121, 55, 38,235, 41,222, +150,125, 68,153,115, 22,214, 2, 51,224,234,178,145,237, 34,205, 39,249,193,196, + 41,173,222, 37,225, 22, 35, 3,155,209, 66,178, 59,171,101,242, 8, 67,165, 62, +236, 70,205, 24,102,184, 24,177, 83, 53,152,157, 49, 73,217, 16, 61,131, 65,144, +239,134,105, 18,253, 72, 16,204, 28,185, 78,170, 48, 90, 76, 29,210,244,102,202, +222,110, 5,247,139, 13, 68, 81, 91, 71,244, 37,174,223,232,146,114,235,109,122, +110, 25,119, 39,138,110,140, 52, 64,248, 66,186,133,155,152,176,218, 1,116, 18, + 52, 53,184, 13,134,139,155,149, 69,220, 82,147,138, 9,224,142,175, 52,124,137, +219, 58,189,133,184, 69,222, 75, 78, 26,108,107,198,202, 72,237,184,161, 54, 83, +130,219, 92, 29,226, 34,140, 29, 27,110, 23,191, 28,241,185, 55,140,126,141, 62, + 57, 27,112,251,174,193,205,211,117,110, 26, 78,183,171, 37,144,172, 25, 90, 42, + 53,205, 71,186, 1, 12,106,147,177,163,177, 69,164, 50, 93,184,235, 18,137,185, + 91, 16,197, 44,110, 12,220,106, 43,129,156,233, 39,130,255,117,210,249,160,109, + 47,250,213,226, 16, 90, 41, 34, 32, 56,137, 69, 82, 57,215, 34, 78,145,140,219, +102, 43,154,221,128,125,193,248, 67,210, 59, 4,206,246,177,236, 15, 41, 34,226, +208,249,137,129,237,117,222,222, 59, 82,236,202,190, 48,245,132,113,197,140,117, +197,163, 92, 76,186, 41,188,250,106, 9,181, 47,144,123, 87, 99,227, 47, 68,162, + 83, 1,219,193, 24,139, 83,160, 1,154,169, 85,121,185,145,209, 51, 96, 24,101, + 52, 77,180, 2, 40,239,145,169, 33,119,235, 14,126, 16, 11, 49,224,198,229, 33, + 54,128,170,242,105,219,192,180,231,198,178, 93,232, 86,219, 16,175,233,227, 85, + 34,177,208, 18,207, 13,197,123,111,123,204, 13, 67, 72, 13,230, 98, 98, 98,149, +146, 48,163, 11,253,184,159,135, 4, 78,180,210,231,224, 42, 30,195,152, 97, 93, +124, 33, 76,159, 2,173,200, 48, 60, 69,168, 24,196,225,176,102,235, 45,253, 74, +232, 12,144,232,205, 13,110,249,149,181, 54,179,141,156,255,229,108,217,142, 96, +221, 45,218, 63,208, 38,250,207,116,255, 82,242, 66, 0, 5,207,237,117, 77,181, +207,191,244,136,147,221,228, 30, 87,157, 26,165, 99, 1, 3, 48, 51,119,119, 62, +102,135, 80,152,216, 6, 70,234, 55, 57,236, 58, 0, 98,237, 45,241, 69,194, 1, + 45, 81,244,135, 57,246, 4,101, 14,102,234,196, 93, 9, 56,238,230, 63,182,103, +157,178, 10,225,123, 86,182, 50,232,198,175, 66,147,184,204,255, 40, 61,115,108, + 88,179,174,222, 82,231,152,241,120,145,223,255,222,150,222,237, 97, 64, 86, 23, + 68,185,205,138, 0,131,215,122, 88, 57,176, 82, 4,223, 43, 98,136,214,191, 40, +229, 81,235, 53, 67, 22, 15,176, 31, 62,174,254, 1,252, 90,197,201, 72, 92,209, + 92,222,156, 90, 89, 32, 0, 29, 80,184,122, 52,228,120,172, 94, 28,178, 17,208, +201,187, 18,136, 26, 30, 60, 92,213,157,129,158, 65, 83,152,184, 18, 16,236, 50, + 53,217,149, 5,139,169, 19, 53, 76,170,209, 35,130,123,223,201,190,234, 45, 72, +222, 5,162,177, 85,221, 21, 64,159, 78,208,229, 36, 45,201, 88,154,148,167, 32, +233, 83,140,220,201,252,198,147, 26,136,213,150, 96,233, 37,167,185, 83,219, 15, + 47, 45, 82,159, 24, 14, 30,181,177,183,177,178, 53, 24,121,113,200, 93,155,137, + 9,245,180,235,219, 52,176, 35, 56, 68, 16,229, 58,175, 56,234, 36,216,186,157, +156,254, 62,221,249, 65,184,128,127,168,117, 42,114, 75,196,113, 52,171,162,124, + 62,159,169, 65,230, 31,197, 4, 70, 93, 24, 95, 29,145, 94,146, 84, 67,194, 59, + 16, 72, 62,206, 17,210, 41,235, 21, 1,218,118,249,157,114,188, 75, 16,157,180, +253,103, 2, 89,156, 92,157,205,124, 75, 57, 98,222,126,116,114,201, 39, 50,180, + 37, 59,121,238,122, 76, 92,152,102, 97, 62,218,203,130,113, 98, 87,204, 33,213, +196,233,204,206,214,119, 60,127,180,246,156,136,234,198,120,171, 4, 86,196, 69, + 28, 71,202, 28, 58, 69,108,213, 54, 57,128, 21, 81,132,168,199, 68, 25, 68, 95, + 50, 65, 23,209,112, 85, 16,121, 98,212,165,160,157,189,166, 1, 29,148,170,192, +112, 24,167,213, 15, 88, 92, 88,111, 37,136, 60, 93,151, 40,241,166, 53,184,203, +194,127, 24, 99,178,118,130, 1,205,166,241, 23,171, 87,234,219,136,248,189, 3, +133, 16, 11,146, 12, 29, 68,218,188,220,254,181, 79, 3, 20,248, 4, 91, 42,118, +199, 60,119, 96,208, 49, 85, 14, 75,183,114,189,249,144, 12, 0, 31, 39, 66, 29, +197,211,223, 90,132, 52,140,101,165, 37, 22,160,237,125,252,159,176, 23, 3,245, +140,226, 42, 18,174, 29,229, 67, 10, 87, 8,117,221,179,171,245,146,228, 65,241, + 5,188, 96,178,191,133,163,100,204,231,135, 51,226, 21,227,107,115,181,160, 89, +226,244,138, 43, 75, 68, 45,154, 76,213,139,187, 1, 29, 49,217,205, 31,146,190, + 72, 89, 11,194,128,249, 19, 2, 29, 75,172, 8, 32, 31, 13,212, 44,146,170, 43, + 46,232,245,240, 24, 14,238, 9, 20, 10, 32, 33, 46, 36,156, 40,207, 52,209, 21, + 36,251,103, 75,205, 14,115, 58,211,195,252,113,102, 67, 48,153,101,253,249, 59, +108,182,202,174,131, 55,151,147, 78, 25, 41,220, 23,215, 28, 80,187,139, 14,168, +189, 58, 32, 26,175, 30,115, 47,243, 29, 56, 28, 89,236,124,238,228,116, 16, 56, +196, 30,246,126,228,205,215, 91,152,231,171, 77, 90,228,210,124,117,141, 17,177, + 76,144,250, 37,233, 70,220, 3,205, 85,191,136,188, 33,225, 38, 84,253,238, 80, +152, 7, 20, 26, 18,158, 16,239,130,196,125,230,176,122,105, 45, 57,250, 16,253, +149, 71,178,170,152,173, 40, 31,225,215,143, 80,170,118,133,187, 15, 13, 96,165, +129,215,112,176,172, 5,213,177,186,229, 40, 61,201, 73,123,221,121,185,217,200, +172, 33, 94,171,188, 27,104, 61, 24, 7, 90,165,223, 28, 6, 84,251,131,117,186, + 6,191,100,158,226, 89,249,188, 84,215, 81, 94,218,154, 91, 23,126,196,189,211, + 48,225, 40,179,126, 42,134, 51,152,119,244, 95, 93,209,121, 44,170, 37,192,233, +176,132, 15, 7,181,136,177, 66,168,131,158, 73, 81,158, 73,201, 51,229,211,152, +221, 22, 46,208,249, 32, 18,216, 2,193, 22,237,158, 8, 26, 78,136, 81, 92,198, + 30,149,207, 62,152, 32, 65, 42, 89,231,254, 40,106,163, 51,121,215, 50, 41,176, +191,211, 40,210,146, 12,142,190,243, 23,204,163, 90, 86, 0,186,141,173, 63,104, + 78,165,226, 48, 93,251,109,170,249, 11,180,177, 7,166,212, 64,105, 63, 89, 17, + 19, 93, 43,245,168, 70,151, 0, 84,178,179, 14, 78,208, 78,138,101,109, 99, 90, +145,205,128,203,236, 32, 94, 99, 64,154,124,166,172, 25,232, 80, 83, 44,129,203, +127,226, 95,191,149,250, 60, 48,205, 82, 90, 45, 61,137,186,181,203, 31, 9, 91, + 8,113,183, 25,188, 31,189,120, 31, 29,235,241,207, 0, 58,100,198, 95,159,152, + 19,153,114, 71,239,131,169, 78,152, 43,169,158, 9, 6,248,121, 30,238,220,229, + 72, 84,192, 65,100,174,222,165,212,228, 22, 16,199, 71, 83, 89,184, 38,172, 91, + 88,100, 10,130,133, 21, 4,211, 95,210, 6,230,219,190, 82,124, 6,205, 93,149, +138, 78, 7, 57, 47, 62,190, 85, 0, 6, 66, 2, 89,140, 78, 89,172, 80,210, 4, +217, 20,121, 81,210, 95, 56,238, 17,242, 29,219, 72, 28,217, 30,229,172,255,218, +195,190, 51,154, 42, 12,114, 28, 43,200,126, 48, 25, 11, 65, 4, 96,183, 49,124, +162,110,195,198,156, 24,101, 46,215, 71,114,148,169, 99,209, 40,115, 78, 76, 52, +153, 67,226, 27,207, 71, 29, 71,121, 10,250,150, 91,115, 84,248, 9,153,192,215, + 72, 77,251,198,254, 8,136, 54, 38,196,171,119,104, 23,174,158, 71,239, 59,193, + 16, 37,180,215,214,195, 36,189,142, 92,112,101,103,141,191,244, 5,192, 67, 91, +181, 27,101,243,126, 39, 59,117,206,146, 32, 5,171, 66, 39, 9,178, 56,253,140, + 79, 89,195,156, 81, 56,176, 98,237, 16,168, 97,130,130,227,218,193,200,221, 29, +238,114,175,225,228, 18,214, 84,170, 87, 80,192, 5,127, 12,111, 4, 12,107,157, +174,136,108, 45,123,131,166, 18,219,122,180,177, 7, 10,217, 74, 20,162, 58, 29, +233,232, 65,245,123, 80, 65,206, 33,162,245,203,196,148, 55,209,227, 85,165,126, +101, 18,214, 57, 16,255,172, 59, 13,185,116,208,141, 68, 27,126, 62,229, 5, 1, +102,126, 98,105,104,206,200,170, 21, 98,145,160,131,155,222,186,249,105,212, 34, +201,219,213,152,161,194,200,243,176,220,213,113, 35,173, 54,116,194, 93,192, 99, +213,214, 6,130,222,204,117, 2,226,133,193,225, 45, 10,173, 70, 81, 17,237, 84, + 66,240, 78,226,148, 24,138,190,157, 99, 79,130,161, 61,215,163,131,101,165,145, +131, 50,183, 85, 28, 28,184, 38, 79, 37,124, 35, 93,165,135, 29,187,167, 4,118, +110, 32, 23,198, 60,229,212, 4,158, 20,227,221,240,229, 92,115,111, 28, 24,228, + 18, 8, 15,184, 71, 92, 35,246,107, 89, 72,170, 17,192, 79, 11, 16,171, 96,152, +168,208, 51,129, 64,252, 17, 22,181,152, 5,192,182, 54,186,200, 8,176, 34, 16, +134,233,122, 14, 15, 82,213,105,231, 31,204,205,153, 99,243,174, 42, 0,121, 13, +225,118,211, 67,109,148, 90, 58, 97, 8, 48,100, 88,165,204,236,167,154, 60,107, + 82,103, 57,145, 73,119,194, 29,185,132, 38,240, 10, 79,112,233, 12, 17,171,102, + 22, 83,144, 43,117, 48,158,108,211, 77,146,252, 41,114,218,133, 43,181, 6,164, + 96,218, 10,231,156,159,244, 6, 92,234,159,238, 52,129,210,102,142,221, 31,106, + 68,164,202,161,180,186,209,181,200, 34, 91,116,147,125,124, 16, 83, 99, 43, 67, +146,196,185,118,185,230,215,126,104, 35, 53, 65,197, 1,114,155,192,200,155, 19, +133,164, 29, 47,215,106, 88,229, 68, 18, 57, 49,109,152,204, 89,139, 47, 1,218, +170, 43, 5,171, 35, 94,126,129,139,121,214, 70, 81, 57,189,125, 23, 30,146, 96, + 21,251, 7,148, 61, 21, 40,193,187,249,135, 64, 97,101, 32, 83,178, 71, 65, 17, +158, 12, 1,184, 25, 80,127, 70,159,238, 34, 15, 40,163,165,211,180,242,119,109, + 5, 24,171,103,172, 55,166, 33,239,197,106,242,128, 7, 52,241, 96, 32,196, 36, + 25, 4,159, 15,108, 98, 96, 19,249, 46,156,245,222,106,197,106,253,103, 38, 22, +180, 97,208,190, 37, 15, 81,163, 84, 14,194, 90,220, 59,147, 10, 24,131, 9, 55, +182,231,104, 15,121,206, 65, 64, 35,187, 19,110, 38, 61,182, 60, 93,152, 45,168, +139,146,188,141,184,115, 10,231,117, 72,129, 35,234,187,178, 59, 96,134,218,210, +209,142, 89, 70, 39,168,249,166,107,230, 15, 50,136,218,199, 78,209, 44,228, 97, +138,241,158,211, 24,146,165, 37,229,238,226,254,227, 74,240, 25,206,177, 50,224, +215,112,231, 76,199,154, 14,245,201, 20, 64, 41, 75, 2, 58, 23, 37, 32,211, 78, + 29,184, 25,129,254, 4,178,243,204,120,196,198, 30,170,187,178,185,253, 49, 73, +186,251,154, 33, 74,188,105, 10,244, 51,133,125,159,192, 34, 49,165,233, 5,117, +129,193, 81, 8,212, 77, 44, 49,217, 63,210, 91, 90, 55,251, 19,105,137, 2,197, + 16,198,233, 81,100, 78,246,248, 24,133,227,138, 64,143,145,212,188,102, 81, 3, +237, 92,242,193,184,235,142,182,108,154, 65, 88,148, 43, 92,199,166,215,105,204, + 44,127,139, 19,175,233,253,129, 54, 63, 38, 34,201, 51,182, 57,205, 17,209, 62, + 52,230,232, 3, 37, 98, 68,165, 51,226, 4,165, 77,153, 28,226,224,223,156, 23, + 30,145, 42,255,129, 27, 68,251,114,241,160,136,193, 44, 71,208,123,146,255,167, +112,208, 57,142,252,199, 19,194,219,194, 52,167,135, 28,157, 77,195,225,129,170, +179, 25,156,196,236,224, 89,246,237,138,124,163,142, 53, 92,187, 9,104, 92, 9, +245,108, 12,131,104,215,100, 30,200, 19,208,223,201, 66,251, 46,209,172,195,132, +212,168, 9,204,179,145, 99, 48,198,118, 53, 94, 44,142, 33, 47,211,132,201, 8, + 84,225,106, 57,248, 75,211,237,238, 17,251, 7,122,151, 38,149,102, 36,220, 39, + 59,247,193, 97,206,151, 35, 70,149, 31, 10, 3,250,171,173, 55,116, 78,192, 65, +151,241,167, 18, 15,169, 50, 36, 58,105,235, 48, 81,173, 56,171,217, 41,104,123, +254,129,121, 38,131, 3,198, 34,159, 45,112, 45, 43,226, 54, 87,204,132,110,101, + 1,145,166, 82, 46, 29, 38,235,139, 41,126, 80,100,168,120, 23,205, 15,163,236, + 10,250,132,217, 38,242,125, 33,233,203,246,195, 86,205,133, 79, 14,106,115,100, + 72, 90,134, 95, 68, 44,178, 45,118, 21, 5, 58,106,132,151, 86,232,213, 61, 70, +129,192, 65, 55, 89, 65, 64, 81, 74,161,168, 59,159,168,188,181,233,176, 19,225, + 91,254, 33, 55, 46, 57, 32, 38, 26,237, 47, 72,105,141,239, 8,139,190,248,193, +187,224,212, 24,129,149, 93,252, 52,200, 96, 71, 20,163,189, 91,236,150,106,225, +115,219, 10,164,126,254, 24, 16, 49,119, 58,153,137,207,121, 64,209, 78,103,243, + 40, 9,180, 60,169,117,250,220,216,170,134,224,131,207, 0, 1,229,248, 73, 40, + 66, 19,194,126,230,252, 26,121, 62,158, 55,192, 17, 71, 4,202, 97,150, 69,119, +131,145, 86, 60,188,107,254, 21, 46, 7,231,196, 73, 0,194,250, 60,205,181, 84, + 29, 94,212,193, 39,237,120, 70,157, 81,146,236, 5,152,130,101,230,247, 74,243, + 64,101,225, 75,206, 26,174,238, 87,154, 24,188,182,133, 15,112, 13, 84, 76,252, +165, 44,204,153,196,241, 58,205, 1,147,101, 13, 45,171,213,236,253, 16,151, 17, +154, 1,196, 84,104,170,175,148,151,192, 7,114,185, 17,213,161,152,118, 47,231, +129,143,218, 70,133, 92,181, 21, 34, 12,222,217,212,228,168, 57,210, 99,139,125, + 86, 32,254, 69,243,218,162,124,120,214, 42,226, 52,235, 60,184,253,204,202, 11, + 42, 78,112,198, 44, 4, 75, 39, 51,157, 21, 21, 3,236, 25,253,138,244, 75,167, +206, 1,117,184, 89,228,123, 30, 45,110,173,161,141, 3,253, 37,157,237, 7, 5, + 73,234, 48,162,186,208,150,202,109,153, 27, 1,150,162,152,161, 15,165,213,105, +156, 36,252, 38,151,113,208, 44,244,223,132, 43, 48, 95,201,212,173,123, 91, 22, +149, 24, 3, 85, 5,167, 52,236, 83, 72, 48,116, 69,187, 70,121,197, 7,245, 34, +240,127,243,142, 18,219, 73,149,246,254, 48, 26, 78, 34,116, 49, 92,162, 4, 94, + 95,167, 67,225,159,121,133, 91,163,100, 36,226,231, 2, 65, 87, 18,180,231,235, + 73, 67,141,114,159,168, 89, 61, 44,145, 13,228, 46, 23, 1, 0, 98,127, 59,185, +209, 86, 68,177, 77, 37,228,157,204, 54, 23, 14, 44, 42,121,124,249, 58, 46,224, +103,171, 8,181, 83,178, 29,240,150,144, 39,129,142,187,205,162,121,147, 41,236, +174,216,138,122, 81,233,124,178,215,157,183,175, 34, 28,161, 96,150,214, 30,102, +205, 36,150,242, 20, 61,230,120, 0,116, 68, 13, 80,163, 14, 32,246,182, 57, 29, +160, 16,232,106,247,118,131,218,155, 12,251, 29,169,187, 85, 96,241, 4,167,224, +218,175,252,128, 96,138, 13, 16, 53,115, 54, 55,136,176,129,121,193, 78,215,108, +210,142,140,232,188,194,231,174,234,121,123,193,146, 44,235,111, 10,126, 75, 61, +139,235,214,134, 1, 24,168, 49, 36, 54,105, 68, 70, 66,190,242,130, 49,176,101, +171,232, 17,246, 58,149, 73,201, 63,128, 74, 79,192,163, 68,162, 19,141,165,238, + 95,179,228,177,255, 86, 35,205, 65,150, 14, 14,189, 57,244, 9, 71,219, 0,238, +126,182,136, 15, 94,221, 33, 13,136,104, 18,232,124,235, 62,181,204,248, 31,135, + 76,218,135, 90,253,143, 54, 14,118,110, 44,179,200,223, 24,199,101,210,235,230, +198, 92, 18,212,195,169,157, 72,247,125,118, 78, 39,232,132,181,124, 92,102,178, + 18,151, 28,169, 82, 64,191,238, 19,216,126, 36,237, 18, 42,219,125, 6,213,127, + 69,147,181,223,185, 97,203,129, 77, 67,234,201,198,235,115,119,166,224, 61,153, +125, 80,168,192, 31, 73,184,179,106,191, 35, 81,236,132, 59,213, 60,224, 18,150, +210,142,247,107,224,119, 70,203,149,112, 11,240, 85,173, 97,223,221,203, 28,227, + 12, 73, 8, 92, 80,190,214, 61,173, 77, 15,140,161,248,242,121,135,121, 87,228, + 95,110, 41,141, 20,231,117,185, 17,145, 93,214, 66, 94,139,142,176,184, 62,176, + 1,124,170,221,247,239,244, 54,160, 82,238, 44, 45,204, 76,186,240,218,244,147, +162,230, 51,243,211,105, 31, 24,197,180,153, 7,109, 4, 25,135,133,173,110, 81, +180,126,145,220,160,166, 89,160, 27,249,117,117,160,253,235,193, 86,114,165,119, + 17,244,126,152, 13,206,234, 3,227,151, 97, 75, 45, 25,250,102, 46,111, 71, 96, +157, 30,123, 37,123, 24,120, 30,191, 93,156, 41,100,242, 89,148, 54, 41, 30, 7, + 62, 8,217,110,145,180,130,171, 27,185,116,112, 52, 82,217,220, 46, 8, 33, 59, +177,249,207,113, 94,176,112,106,101, 73,119,142, 26,227,117, 0, 80,144,117, 76, + 67,189, 54,190,119,162,246,137,254, 9,167,188,218,159, 2, 47, 87,166,177,191, +217,190,233, 65, 26, 34,100,230,223,180, 84,241,191,179, 64,184,248,235, 59,197, +160,226,248, 12,209,229,148,178,184,252, 57,115,195, 10, 29,103,254,173,226,119, +140,208, 62, 78,229,192, 91,227, 55,199,142,174, 63, 18,219,212, 13,132, 11,208, + 87, 17, 73,149, 70,119, 97, 14, 25,119, 37, 41,175,208,245, 70,173,196,135, 16, +212,255, 31, 92, 67, 61,246,225, 89, 52, 43,217,237,127,111, 94,222,172,237,198, + 34, 29,227,239, 77, 28,126,202,233, 18,132,158, 43, 98,210,185, 66,139, 14,139, +217, 60,117,248,133,178,217,100, 92, 55, 93, 16,135,115,122, 20, 68,104,191, 47, + 4,132,201,234,162,237,229,213,168, 82, 26, 34, 74, 25,185,220,156,212, 51,143, +183, 97, 90, 48, 23, 62,158, 85,104, 68,176,126,101,226, 21, 83, 42,152,243, 15, + 60,146, 99, 10, 72,145,190,161, 39,248,216,211,154, 63,225,111,120,221, 0,181, +104,224,114,217, 67,213,204, 7,198,192,183,155, 56,147,170,217,109,139,219, 62, + 92, 53,133, 17,226,154,177,181,122, 78, 61,160, 77,172,204,128,114, 1, 80,246, + 66,209, 81, 6,171,171,212,117,220, 6, 90, 7,198,140, 26, 88, 90,132, 58,100, + 41,254,138,157,171, 43,251, 50, 36, 24,131,139, 67, 7,162,135,145, 5,168, 23, + 92, 49,154, 7, 53, 39,133, 20,145,199, 59,234, 15,176,178, 47,151,184, 12, 30, + 90, 61,135,142,170,122,232,207,187,173,177, 65,170, 97,128,209, 98, 64, 48, 34, + 42,209,163,230,229,162,250, 44,186,226,224,142, 55, 57, 24,239,115,209, 9,158, +131, 68, 35,140, 53, 26,215,209, 18,115,105,114,105,198,126,154, 5,147, 1, 34, +206, 71, 82, 84,147, 1,106, 42,132, 29,194, 89, 7,165, 12, 11,243,130, 94, 56, + 84,197,160, 72, 33,203,182,162, 23,190, 26,242,143,129,151, 50, 26,151, 50, 26, + 23, 97, 32, 29, 77, 41, 27,173,105, 77,181,234,189,181, 20,112,222,186,247, 15, + 77, 37, 42,216, 64,181, 2,237, 96,184,158, 48, 97,123,138, 94, 43,205, 70, 75, +239,154, 16,196,251, 80,203,157,102, 54,224, 62, 80,176, 23, 35, 44, 97, 58, 65, + 58,187, 41, 65, 61,228, 10,103, 47, 3, 9,111,147,201,110,186,232, 47,226, 32, +125, 85, 45,125, 79,225, 85, 41,164,119, 41, 9,198,213,173, 2, 6, 22,240, 84, + 51,176, 12,236,140,216, 2, 42,117,144,170,117,218,212, 55,114, 16,243,148, 30, +253,142,216,213, 16, 8,210,183, 84,105, 30,221, 43,176,187, 57, 61, 0, 57,213, + 37, 76, 30, 13, 44,235,234, 90,139,163,236,186, 42, 10,142, 93,135,122, 26,181, + 84,163,102,146, 91, 45, 1, 17,218, 72, 64, 12, 43,171,124, 7, 62,251, 39, 29, +213,211, 23,248,186, 27,242,118, 60,234,242, 19, 98,221,212, 10, 81,235,169,106, +101,221,179,194, 6,137, 85,127,181, 64,212,186,172,234,234, 23,181, 80, 91, 47, +224,186,128,182, 30,219,181,248, 81, 35, 84, 52, 68,190,174, 65,127, 26,108,175, +186,228,254,244, 35,248,159,183, 87, 38,171, 91,166,140, 79,128, 21,152,192,148, +144, 43,117,146,157,243, 0,230,118,165, 40,224,208,232, 1, 52, 2,127,225,100, + 89,191,195, 77,134,165,233, 69,250,165,232,111,225,155, 8,133,116, 97,237,127, + 57, 65, 75,183, 41,131, 25,102, 24, 94, 8,155, 0,153, 0,153, 0,121,115,107, + 70,243,222,250, 62, 68,220,224,114,247,202,146,124,225,194, 32,177,112,112,137, +105,246,115, 71,215,140,237,119, 11, 69,150, 87, 98,149, 99, 78, 99,243,126, 25, + 89, 12, 45,224, 51,122, 15,147,113,225,149, 44,221, 34, 45,110,209,119,211,108, + 54,209, 39,196, 69,207,109,197, 23, 27,120,148,233, 19,139, 50, 44,218, 58,119, +153,107,105,115,165,171,179,105,227,118,103,186, 42, 2, 42,239,231,166,250,209, + 80,212,212,161,253,246, 42, 92, 8,122, 14,222,141,190,143,133,126,252, 65,240, +197,252,161,109,203, 84,191,111,244,114,252, 85,251,157, 44,107,222,170,181, 81, +230,110,153,168,102, 84,124,219, 62,131,158, 8,150,110, 52,195,253,147, 60, 44, +136,220,160,167,219,189,120,229,237,202,249,127, 21,128, 74, 2, 78, 89, 61, 76, +171, 29, 53,119,219, 83, 14,135,239, 59, 26, 74,241,183,184,187,255,168,111, 91, +183, 56, 67,219,229,129,185,132,105, 41, 29,190,120,247,117, 85,215,117, 89, 86, +196,242,235,178,188,186, 34,149, 95,149, 91, 21,196,132, 46,147, 43,211, 31,209, +238, 19,119, 10,180,163, 35,176,207,124,101,173, 81,116,129,215,238,127,151,126, +220, 41, 31,178,155,114,191,117,245,201, 39,234,239,140,119,203,103, 57,214, 39, + 73,224, 16, 2, 58, 89, 19, 68,185,105,176,241,233, 29,141,206,181,195,121, 6, +219, 93,206,118, 1, 28,251, 82,155, 17, 74,142,177, 3,248, 99, 63, 95,211, 26, + 62,183,166, 41,158, 26,149,107,241, 63,132,192,249,158,180, 32, 50,131,218, 76, +233, 26,212, 30, 4, 66, 69,223,188,140,148, 54, 49,157,237, 83,147,159,124, 15, +138,206,171,245,140,113, 70,239,192, 48, 12,230, 26,244,153, 14, 70,249,204, 67, +163,173,155,135,130, 40,167,191, 78, 60,161,166,186, 2,127,132, 32, 69,148,162, + 98,190,153, 86, 13,145,253,214,113,157, 6,115,160,239,225,212, 76, 54,104,180, +230,140, 67,104,189,231, 51,193, 97,228, 93, 18,167,162, 37, 93,211,194, 23, 2, +145,100,255, 36, 15,195, 57,230,174, 83,142, 67, 51, 14,144, 89,213, 4, 29,208, + 37,132, 17,226, 16,190,231, 33,172,129, 23,201,228,138, 64, 56,189,186,250, 47, + 28,130, 48, 24, 95, 39,153, 92, 17,247,199,227, 34,153, 92,145,137,197, 81,187, +101,244, 25, 41,199,114, 35,100, 93,110,108,128,166, 2, 15, 39,121, 60,158,247, +252,243,120, 98,190, 87, 99, 9, 93,217,200, 85,186,141,196,116,193,254,128,198, +107, 80,206,135, 77,186,187, 29,231,110,212,190, 68,140,180,222, 92, 45, 66,150, +178,193,151,144,162,221,172, 98,252,154,214,159, 47,117,169,105,150,148, 39,204, +161,180,239,209, 39,197, 39,165,130, 64, 65,240,127,247,121,192, 77, 76,178, 1, + 19, 70,109,187, 57,231,207,154,233,199, 20,139, 58,172,196,250,101,145, 48,128, + 0, 35,113, 0, 8, 12,141, 75, 68,130,161, 56,158,231,105, 30,210, 15, 43, 10, +195,122,202,126,214, 22, 93,105,172, 81,188,231,225, 24,101,145,211,206,244,169, + 70, 81, 36, 72,220, 28,210,204, 44, 34,122,136, 92,136, 64, 43,231,216, 91,148, + 3, 46,181,183,214,183,128,102,120,145,122, 73,125, 93,196,139,222, 87,155,127, +179,100, 72, 63, 52,191, 20,209,175,231,169,156, 20,128, 70,183,246, 76,117,157, + 18,158,221,175, 24,228, 58,199, 69, 74,176, 28,226, 3, 82, 34, 49, 75, 15,115, + 82, 73,157, 85, 30,146, 80,198,104, 67, 1, 15, 77, 31,233,106, 22,126, 9, 4, +234,135,224, 74,135, 20,252, 79,101,100,180,161,166,154,144, 4, 79,207, 15,141, + 96,112,135,126,204, 71, 83, 1, 61,139,136,179, 65,253,161,177, 72, 96,245,137, +211,193,149,140,245, 20, 66, 18, 75,120,252,233,157, 98,127,175,154, 3,167, 59, + 33,236, 50,110, 25, 38,174,156,132, 11, 6, 17, 93, 48,255,183, 48, 0, 39,150, + 91,227,168,170,124,247,167, 63,143,149, 95,115,128,226,245, 51, 99,178,211,214, + 70,181,176,145,170,106, 29,101, 61,238, 5, 10, 58, 94, 53,241,253,207,152,236, + 72,139, 87, 56, 78,195,249,236, 18,114,221,139, 8,155,240,177, 53, 45, 17,205, +252, 72, 55,240,190,151, 48, 62, 7,171, 90, 86, 31, 35, 64,232,143,157,198,235, +134,222,210,126, 26,254,233,199, 20, 89, 28,122,138,239,121,181, 79, 35,147, 76, +236,105, 36, 48,212,198,103,185,159,127,122,235, 9,193,123,189,237,188, 64,105, + 23,162,151, 42,102,200,138,175,134, 18, 82,130,158,120, 3,227, 4,160,204, 48, +238, 36,107, 67,185, 89, 78,161, 9,134,177, 38,167,150,239, 83,154,227, 57,228, +151,110,124, 10, 4, 87,210, 4, 0,160,166,252,150, 11,175,233,197, 16,221,157, + 92, 57,149,192,222, 37,122, 79,174,112,235, 11,238,129, 92, 45, 52,169, 20,196, +100, 25,224,145,113,184, 33, 22,198, 1, 56, 7,106, 95,192,108,238,206,255, 53, + 25,109,107,254, 61, 50, 86,138,108, 26,195,214,200,147,206, 31, 93,255,239, 32, + 62, 80, 67, 41,110,236,218,215,140,154,100,180,203,117,186, 19,167,124,199, 46, +235,147,149, 0,226,192, 38,201,121,206, 83, 30,158, 37,228,100,126,110, 72,172, +167,168,115,119, 22, 31,126,248,238,230,184,210, 74, 25, 69, 3,153, 34,169,251, + 0, 5, 52, 32,175,188,154,129,188, 1,184, 60,254,137, 13,191,107, 95, 69,212, +137,110,250, 33,190,217,174,223, 96, 74,158, 10, 65, 33,233, 68,161,185,253, 82, +113,134,212,214,193, 86,196,147,211, 88,144,123,253, 74,153,212, 73, 58,168, 15, + 36,179, 9,211, 57, 9, 90,191,143,209,218, 5,158,232,240,146, 50,223,249,111, + 53,123, 24,251, 56, 49, 38,114,120,222, 48,181,206, 82,151,253,152,189,132, 11, + 70,216, 80, 38, 88, 51,131, 44, 80,155, 11,119,137,173,174,188, 46, 15,134, 25, + 95, 84,188, 21, 6, 27, 98,130,216,221, 53,100,226,190, 69,164, 7, 98,174, 60, +241, 44, 65, 14,193,209,114,239, 67,158,201, 1, 94, 40,165,121,151,207, 11,124, +116, 58,210, 89,173,107, 20, 17, 47,102, 43, 23, 41, 1,203,215,203,150,123, 33, +232,129,221,169,179,114, 45,229,160, 49,202,193,248,196, 98, 36,246, 93, 80, 69, +178,219,153, 71,243, 13,171, 2,200,181,182,115, 14,202,242, 21,131,127, 96, 18, + 62,217,255,121, 51,126,217,249, 68,123, 54,186,110,121, 60,219, 50, 8,150,180, + 84,195, 43, 68, 92,144,197,223, 2,162,218, 94,176,194, 68,149,252, 43,189,244, + 62,192, 64, 57, 96, 37,253,213,164,107,202,115,143, 49, 38,151, 95,170, 2, 46, + 48, 87, 61, 26, 24,192,155,164,218,122,217,162,176,126,176, 83, 48,157,100, 39, +253,163, 30, 44, 29,232, 42, 31,158,145, 6,251,165, 98,237, 42,178,125,194,118, +125, 61, 52, 68, 10,161, 84,152,153,171,137,130,112, 74, 2,203,245, 75, 36,238, + 94, 75, 10, 5, 27,150, 84,138, 73, 90, 31, 97, 45,190, 29,192,221,118,172, 46, +204,222, 90, 42,169,116, 59,204,215,138,138,107, 13,101, 53,228,221, 12,125, 70, +252,190,168, 79, 35,157, 82,218,218,159, 42,158,140, 45, 14, 53,213, 48, 61, 35, + 93,245,120, 93,237,232, 43, 29, 33, 83,202,155, 32,198, 6, 22, 78,159, 38,219, + 56,146,139,206,162,182,249, 36,197, 66,187,177, 28, 18,123, 26, 42,133,135, 14, + 89,250, 23,158, 39, 34, 84,248,224, 69,211, 3, 15,101,183, 38,162,125, 13, 13, + 57, 19,145,187, 46,202,132,152,114, 33, 47,191,194,115,233,185, 74, 65,136, 12, +107, 95,204, 25, 48,193,206,251,199,204,132, 2,137,240, 5,191, 64,144, 16, 80, +156,174,145,145,205, 94,128,220, 77, 4, 42, 15, 62, 46,216,111,153, 83,222,115, +200, 53, 78,199, 5, 33, 84,194,152,149,253, 54,153, 77, 43,113,193,226,206,163, +212,237, 71, 8,167,199,242,253,162,180,211, 43, 18,118, 64,186, 46,186, 94,235, + 17,170, 72,148,227, 35, 75, 13, 55, 49,111,100, 62,243, 43,253, 37,128,163,104, +128,117,228, 0,246,110, 4,154,164,185,115, 39,166,168,189,177,217,146,207,200, + 54, 44,212,148,136, 52,102, 15,250, 16,207, 82,235,221,216, 14,216, 43,130, 11, +167,110,196, 16,185,132, 49, 11, 12, 56,139,204, 81,107, 20,238,252, 73, 99,123, +169,155, 24,222, 61,175,163,108,184,175,221, 8,206, 15,144,223,225,153,148,108, +119, 66,233, 35, 46,151,132,210, 35,109, 52,104,154, 96, 53,224,247,174,155,249, + 85,135, 45, 51,153,141,124, 7,253, 6,208, 58,224, 41,161,200,206,122,104, 42, +132,254,125,152, 30, 40,198, 7, 42, 68, 71,228, 11,237,138, 75,222, 45,155, 92, +178,206,171,154, 25,225,228,213, 30,146, 87, 86,158,246,191,171, 36,227,167,251, +216, 20, 79,215,193,247,222,121,134, 64,129,178, 33, 80,136,199,135,214,168, 98, + 92, 5,136,166,243,119,190,103,218,157,233, 31,123, 2,163,184, 22,185, 88, 41, +190,224,245, 33, 30,141,228,250,183, 0,213, 22,177,251,121,220,135, 47,210,129, +227, 66,141,130,175,206,110,178, 14,228,160,181,175, 91,169,179,203,117,123,250, + 36, 64,172,187, 98,177, 16, 9, 72,136, 64,124,116,103,200,228,203, 5, 91,203, +170,153,165,198,126, 87,250,115,182,155,165,100,143, 86, 67, 66, 20, 33,131,245, +212,235,249, 74,138, 91,228, 62, 20, 77,103,138,165, 55,251,177,151, 83, 79,251, +194, 42, 0,200, 77,139,108,214, 43,167,204,164,169,234,141,166,127, 1,183, 67, +220,213,189, 90, 2,232,139, 34,182,216,249, 34,211,236,141,159,190,139, 68, 47, +161, 23,245, 0, 18,242,130, 1, 49, 14, 66, 49,208,174,111, 57,103,158,200,128, +162, 82,105,255,208, 96,251,228, 97, 77, 26,171,247,167,176,118, 87,203, 69,232, + 95,124, 37,206, 51, 54, 88,251,172,150, 82, 49,208,206, 11, 82,188,158,207,107, +246,100, 66, 42, 88,178,213, 53,250,236, 5, 49,179,135, 60,138,209,196, 1, 8, + 24,130,255,103, 81,233, 0,153,175, 77, 61,136, 17, 33,210,116,149, 64, 20,223, +148,224,221, 43, 27,117, 14,149,213,195,152, 84, 16,112, 54,138,142,146,196,104, +231,213, 23,178, 8,224,140,143,156,110,162,235,148,182, 13,102,177,176,142,248, +208,169,132, 45, 95,155,194, 2,233, 33,246,209, 78,136,145,207,246,216, 77,235, + 52,164, 14,114,136, 88,132, 91,189,178, 91, 87,231, 16,231, 16, 43,249,202, 87, +227,101,110, 87,223,111,116,156, 97,155,238,177,164,105, 46,151, 40, 48,182, 71, + 78,171, 23,198,250,217,121, 14, 48, 0,128,108,193,206, 95, 46,250,242, 8, 86, +202, 80, 57, 82,220,232,194, 19,221,122,188,111,124,163, 94,141, 30, 27,201,239, + 58,197,194, 32,130, 96, 66, 24, 83, 11, 66,130,248,126, 99, 52,186,236, 95, 47, + 32, 94, 73,205,152,182,235, 98, 5,235, 8, 42,241,217, 34, 10,152, 63, 29, 87, +159,226,145, 57, 29,100, 40, 42, 49, 78,155,176,143,177, 17,204, 55,195,159,169, +167, 40,140,253, 95,205, 74,225,146, 19,196, 75, 65,231,183,109,182, 45,137, 20, +254, 45,129,195,234,183, 19, 36,241,128,229, 42,228,150,136,141,193, 72,191,174, + 59,226, 9,195, 87, 41, 76,203, 68,171,227, 79,133,177, 47, 41,210, 80, 14, 10, + 71, 99, 13,208,100, 29,218, 80, 86,221,144,137,221,232,107,247,172,254, 23, 58, + 4,224,170,231,113, 96, 91,149,185, 54, 52, 10, 14, 68, 7,196,248,243,225,193, + 19,160,193, 75,138,180,163,183,224,100, 79,187, 10,229,119, 88, 0,197,125,141, + 61,145, 18,249,220, 1, 30,178,237,202,218,143, 25,228,174,128, 52, 62, 1,110, +164,250,180,234, 93, 63, 43, 14,145,200,130, 36,208,163, 73,209,196,181,211,190, + 95, 64,209,209,237, 93,145,160,217, 54, 61,222,105,127,223,254,163,249,180,113, +137,255,235, 33,167,144,218,208,184,146,251,111, 3, 50, 83,233, 41, 10, 8,223, +121,206,145, 43,221,100, 23,201,147, 90,224, 43, 82, 31,132,196,103,196, 88,246, + 68, 30, 87,194,222,151,174, 98,213,228,163, 19,105,174,134, 22, 53,118,187,165, +154,123, 96, 16,218,194,188, 50,149, 51, 42,190, 48, 3,113,190,196,245,172,205, +227, 16,101, 30, 60,123, 59, 41, 96, 80,161, 39,172, 32,178,161, 86, 18, 97,154, + 90, 34, 81,139, 64, 4,192,108,255,230,156, 74,100,168,255,112, 20,247,160,225, + 2,121, 27,174,161,198,244, 46,225,184,130, 36, 20,130,128,253, 94, 88,245, 54, +227,111, 45, 86,120, 65, 50,213,185,231,178,100,189,150,142,152,212,116,186,242, +233,203, 44, 4,127,228, 83, 94, 75,146,102,250,246,187,177,210, 23,204, 21,226, + 59,102,215, 36,153,232,101, 78, 37,231,120, 82, 88,232,108, 2, 86,133,205,215, + 7, 22,211,106,204,106, 18, 51,125, 78,251, 91,196,181,227,231, 81,108,118,190, + 19, 69, 7,160,150, 3, 50,226,203,180,218, 3,200,136,103,101, 21,169, 97,250, +152,220, 63, 94, 48,108,141,155,156,166,114,110, 48, 30,122, 98,184,150,153,152, +227,166,152,196, 71, 18, 90, 86,128, 1, 37,238,249,136,185, 63,103,130, 99, 26, +226,117, 95,189,139, 36, 61,109, 28, 80, 0, 58,126, 55,200, 5,202,112, 54,199, +235,151,102, 13, 11, 49, 11, 24,105, 75,140,228,220, 74,253, 82,180, 20, 60,239, +215, 7, 30, 73, 72,171,197,212,133, 63, 43, 54,240,152,119, 46,131, 96,112,184, +114, 36,172,130,227,123,118, 43, 87, 55, 33,247, 19,235, 76, 89,156, 74,130,233, +183,110,173, 94,167, 65,100, 82,159,226,218, 8, 69, 94, 1,160,190,132, 46, 55, +178,217,250, 89, 11,251, 27,198,178,144,173,244,164,131, 64, 43,218, 18, 5,214, +220, 99, 92, 67,155, 48,104, 61,192, 76,242,237, 12,120, 83, 57,109,179, 42, 21, +182, 52,147,121,114, 75, 80,227,144,106,251,137, 12,248,127,244, 18, 55,247,112, + 48,211,241,147, 14,171, 81,210,147, 89,151,113, 2,236, 76, 96,124, 28,171,242, +245,155, 84,161,184, 41,217,181,119,185,120,163, 17,217,185, 56,133,228,191,176, +147,104, 78,149,233,203,164,170,211,255, 50,182,141,233,161,189, 84,185,253, 98, +126,122, 39, 46, 55,218, 39, 90,142, 58,126,134, 8, 8,221,131,146,242, 57, 16, +182,242,145,134,199, 11,159, 67, 17,248, 89,127,250,109, 61,232,173, 65,125,187, +253,251, 53,223,227, 51, 28,201,187,227, 4,102,192, 12,115, 82,127, 27,254,140, + 79,196, 84, 41,218, 79,244,113,235, 73,137,230,198,111,141,185,102,104,166,183, +106,240, 73,131,121, 59,115, 88,237, 12, 25,167, 9,225, 48,157,137,166,133,224, +204,154,113,118,176,228,114,197,237,189,166,136,176,164, 64, 60,183, 79, 79, 74, + 74, 80, 14, 52, 9,137,195, 6,125,178,150,105,248,229, 65, 48, 6,210,215,118, + 92,131, 61,180,123, 20,210, 55,134,153,212,159,170,219, 78,246, 66, 18, 94,137, + 68,209,157, 51,162,207,186,211, 47, 94,150,111,184,142,169, 6,126,220, 18,191, + 63, 96,172,163,129,125,158, 13,138,248, 94,136, 73, 92,218, 21,195,162, 5, 85, +201,158,127,211,211, 50,127,149,210, 28,252,125,240,254, 18,235, 93,231,110, 85, + 77,102, 1, 56,222,165,144, 92,116,164, 79,100,130, 85,189,215,241, 61,138,161, +124,166,136, 18,129, 40,116,238,168,142,183,115,169,117, 33,193,115,158, 39,132, +147,160,140,147,118, 80,107, 68,161,192, 89,253, 9,201,151, 59,104,167, 65, 73, +102, 2,135,211,186, 68, 39,179,179, 58,145,204,155, 50, 95,116,230,213, 98,236, +159,215, 60,216,249, 67,200, 35,187, 36,167,234,226,122,197,130, 66,246,119, 15, + 81,134,205, 76,241,251,167, 20, 90,121,177, 47,222,250, 2,206,237,232,232,112, + 50,134,179, 75,151, 8,228,154, 88,128, 9,228,152,184,167, 88,241,168,189,252, +189, 32,172,148, 20,244,136, 37, 64,208,210,156,154,191, 88,199, 32, 64,232, 27, +142,144, 24,184, 64,215, 24,211,200, 34,248,161,128,208,124,171,248,122, 65,246, +102, 3, 83, 27,129,117,105,105, 1, 45,174,239,151, 61,133,143,221, 31, 55,165, +149,242,227,184,216, 3, 15,217,159,160, 14,142,144,215, 47,189,139, 56,129, 89, + 13, 31,165, 40,146,161, 93,243, 62,174, 49, 2, 24, 51, 89, 75,112,214,236, 68, +141,229, 98,241,109,149,187, 17,228,232,109,123, 78,210, 73,227,233, 15,248,127, +202,238, 84,192,223,113, 71, 85,130, 95, 10, 36,183,224,192,112,129,211,240,201, +117, 2,144,240,230, 24,125, 84,156, 94,241,204, 61, 78,245, 91,113,222, 62,198, +168, 15,253,236,220,130, 25,227,120,191,195,151, 5,232,236,212,212,143,232, 25, +208,255,163,168,218,247,172, 73,121,180,130,117,153,255,192,105,136, 59,237,121, +183,138,188,192,215,116,211, 14, 38,252, 68,230, 69,254, 89, 9, 60, 10,237,130, + 71,163, 1, 25,207,240, 50,207, 9, 54, 60,146,152, 47,170,217, 31,155, 11,147, +187,247,151,203, 16,212, 17,232, 36, 30,236,239,117, 65, 12, 95,250,137, 87,197, + 18,244,142,233,200,118,237,229,166, 83, 42,231,117, 28,117,121,113,132,129,204, +123, 76,174, 12, 18, 49,119,195,209, 69,175,152,165,240, 75, 7,144, 1, 97, 56, + 13,217,178,201, 16, 61, 32,247, 23,186,155, 84,146,240, 27,209, 16, 44,172,140, +242, 80,237,106, 71,193,139,116,201, 15,155,190,141,217,118,128, 88, 14,233,195, +203, 42, 83,200,142, 48, 86,160,173,122,119, 63,204,163, 30, 0, 57,255,251,188, +229,199, 15,245,170,247, 9, 5,136,116,123, 49, 98, 92,126,194, 90,171,159,239, + 58,254,207,186, 30, 78, 12,164, 80,221,213, 36,227, 14,185,153, 50, 38, 13,175, +205, 69,211,139,247,191, 42, 47, 10,183, 50, 65,224,134,212,108,174, 24,193, 74, +206, 41, 51,193, 87, 35,247, 19,223, 55, 44, 31, 32,236, 51,248,165,211,137,240, +154,140, 58, 49,157,216, 22, 77,101,176,188, 48, 75,199, 8, 23, 56, 75,160,139, +205,226,177,232,156, 36,185, 77,140,153,125, 96,116, 10,199,124,108, 20, 5,107, +110,252, 57,230, 75, 88, 88,174, 5,227,107,179,153, 75, 58,128,107,175,121, 97, +100,194,116,196,226, 59,192, 14, 45, 91, 82, 9,144,163,108,241,244,121,109, 6, +124, 70,115, 18, 45,230,164,220,150,191,126, 80,116, 89,141, 13,204,180, 72,181, +243,168,109,161,180,159, 21,241, 58, 37,190,122,159, 21, 70, 74,170, 67,179, 78, +163, 15,155,148,224, 71, 55, 6,253,139,176, 24, 37,148,221, 43, 15,190, 39, 98, +147, 3, 7, 75,221, 1,210,205,234,126,117,203,128,104,218, 76, 18,176,245,171, +203,250, 43,199,210, 4,232, 39, 76,145, 28,113, 12,130, 95, 99, 10, 19,112,104, + 87,161,241,218, 39,106, 63,130,195,134,217,134,163,172,184,167,214,143,175,194, + 20,254,200,132,216,181, 38,199,107,214,184, 8,213, 59, 76,135, 75, 54, 51,171, +112,112, 16,232,228,220, 54, 62,132,254, 21, 18, 91, 19,133,164, 42,212,213,153, +104,112, 48,227,162, 16, 79, 47,205,113, 94,127,250,107, 2, 36,177, 75,122,159, + 70, 96,210, 59,215,175,138,117,201, 90,103, 37, 64,232, 0,150,209,251,139,248, +250,183, 98,207, 49, 81, 29,138, 70,170,105,159, 23, 24, 61,122, 65, 94, 23,133, +210,227, 23,122,160,241,139,250,251, 52,217,203,122,165,134,237, 14, 32,121,123, + 78,206,227,221,223, 9,196, 16, 53,126, 80,135,194, 42,139,173, 34,121,129, 0, +164, 60,132, 12,140, 37,221, 59,142,192,171, 20,214, 72,199, 79, 46,115, 35,188, + 34, 89,174,109,111,227,149,143, 60,192,252,166, 40,107, 37, 63,139, 74, 18,185, +118,103,161,149,181,128, 98,118,102,100, 26, 33,193,238, 16, 45,114,221,235,111, +139, 15,231, 98,128,212,203,212,249, 72,132,125, 68, 37, 81, 36, 59,188,230,247, + 47,114,238,148, 26,166, 82,255,226,193,245,158, 38, 41,167,155,190, 84,254,209, + 1,244, 91, 87,132,180,150, 42, 11, 79,160, 4,131, 29, 40,201,168,162,231,144, +250, 31,212, 45,175, 49,172,215,210, 92,248,203,111,102,197, 47, 56,144, 35, 57, +126,199, 52,252,119,237,101,250, 31,244,185,198,240,133,183,115,232, 64,203,107, +205,147, 9,201,137,239,135,183,132, 63, 38, 16, 12, 63,229, 17, 49,225, 32,105, +237, 81,228,215,103, 25,219, 31,137,204, 86,224,100, 52, 51,101,157, 7,235, 56, +193, 66,157,250,128, 21, 35, 89,241,191, 14,161,123, 81,126, 2, 43, 33,182, 46, +137,234,130,183,140,152,210, 92,222,249,206, 23, 18, 16,238, 17,230,207,220, 91, +134,245, 27,175,117,134,177, 94,203,163,161,253,137,231,143,117, 66,121, 10, 21, +123,163,218, 90, 66, 20,246,225,178, 54, 32, 68,182,130, 38,145, 29,115, 83,172, +253, 18, 9,127, 10, 42,220, 43,250, 66,132, 41, 52, 24,247, 50,166, 12, 65,123, +223, 40,209,252, 98,137, 32,108,224,242,173,135, 70, 75, 33, 93, 60,218,246, 30, +125,108,249,241, 17,168, 73, 1,239, 91, 41,232,246,114,117,140,243,112,254,209, +182,255, 60,112,219,189,145, 5,131,121, 72, 81,235, 86,245, 7,184,220,176, 62, +179, 56,148,186,143,213, 83,209,162,232, 2,160, 42,230,201,242, 69, 33, 45, 16, +125, 35,194, 52,218, 6,123,180, 67,193, 58,187,186, 79,130,148, 62,119,237, 8, +194, 45,177,128, 22, 98,183, 41,202, 46, 89,203,237,200,196,172, 34,177,237,188, + 6, 61,137, 73, 25,140,201,220,119,195,109, 65, 97,141,245, 32, 87, 73, 1,234, +171,116, 50,200,125,208, 74,135,142,191,251,209,129, 62,207,236,208,133, 95,227, +247,201, 89,151,255, 95,105, 81,134,214, 38, 66,255,150,127, 25,173, 68, 66,152, +204,215, 5,222, 36,166,207,144,135, 81,155,165,240, 86, 2, 44, 29, 66,171,254, +165,136, 28, 34, 24, 5,208,166,243,222,110, 10,140, 75,252, 50,138, 54,185, 46, + 59,167,172, 71, 7,161,167,228, 29, 88,167,172,147,103, 74, 49,248, 98, 27,103, +175,161, 87, 2,138,205, 9,104,109,221,253,225,201, 84, 71,174,119,234, 40,194, +235,150, 48,181,212, 11,214,253, 19,138, 73, 29,214,150, 88, 98,198,248, 14,161, +105, 22,228,196,195,114, 4, 60, 18,141,250, 56,208,110,191,191,113,171,238,248, + 74,136,135, 32, 48,101,225, 91,182, 26,111, 34, 25, 27, 32,236, 35,123, 19,201, + 43, 33, 18, 92, 36,215,177,155, 81, 8,193,104, 87, 5,103,134, 43,190,141,162, + 19, 57,204,254, 67,209, 21, 27,103,151, 87, 92,126,196,234,123,156,115,103, 0, + 84,162,138, 19,162,124,115,195,198, 63, 62,154,138, 36, 41, 63,183,173,202, 85, +220,197, 1, 34,129, 6, 84,162,101, 91, 76,131,205,154,237,140, 51, 45,150,127, +255,182,202, 72,187,177,206,188,191, 44,140, 93, 3, 43,245, 5,184,231, 21,221, +215,181,229,137,139, 76,164, 45, 55,145, 22,106,115,112,194,210, 25,153, 7, 3, + 52,164,196, 3,198,206,142, 78, 27,111, 83,233,125,113,151, 48, 92, 76,122,113, + 58,233, 30, 15,148,245,131,212, 55, 57,186, 40,193, 72,198, 1,213,248,152,162, +186,136, 86,161, 90, 65,158,244, 37,248,163,240, 26, 59,129, 38, 92, 52, 27, 96, + 77,221, 29, 71, 58, 35, 53, 70,138, 22, 62,205,177, 16,202, 48, 82, 16,136, 6, +125,212, 99,177,227,156,210,104, 62, 89, 74, 60, 1, 45, 40,189, 11, 32,175,175, + 20, 93, 39, 40, 39, 21, 19, 38,161, 34, 48,124,134,144,202,126, 80,149,111, 0, + 13,162, 28,235, 0, 64,103,233, 20,254,103, 92, 70, 69, 80,173,140, 39,105, 66, +158,141,199, 11,183, 70,163,122, 28,231,235,152, 65,239,146,173,129,220, 92,152, + 48,203, 24, 71,145,244, 73,130,227,249,111, 74,159,124, 66,103,207,117, 64, 21, + 80,171,148,191, 68,219,116, 42, 5,113, 18, 34,163, 85,179, 69,252, 46, 12,209, +242, 41,209,240, 96,106, 16,185, 7, 99, 84, 66, 1, 72, 64,136, 28,174,191,177, +146,230, 59, 5,149,159, 15, 83,143,145,209, 63, 48, 21,240, 4,192, 74, 35,160, +201, 53, 71, 46,153,122,208, 79,152,133,229,176, 58,138,119,146, 24,194, 9, 56, + 55,182, 64, 56, 7,253, 30,205,152, 10,113, 45,220,177,194,196,203,167, 3,148, +188, 63, 52, 72, 35,205,231,255,159,192, 85, 70,237,135,191,121,155,116, 29, 9, + 45,129,240,112, 17,107, 18,100,222,240, 82, 89,230, 3,174,181,202, 55,240,213, +130, 0, 33, 80, 55, 76, 28,109, 29, 82, 41,186,133, 19,122, 66,129, 11, 72,145, +106, 87,188, 24, 65,151,185,104,135,149, 10,147, 19, 69, 69,124,136, 97,205,155, + 73, 69,181,207,236, 13,229,111,142, 28,116,130,220,110, 28,197, 64, 84, 38,202, +237,190, 84,196,172, 18,172,255,191, 11,161,253,211,193, 20, 30, 28,168,187,118, + 28,162, 92, 76,101,158,221,216,209,196, 41, 4, 4, 16,133,182, 99,235,171,139, +127,128, 42, 29,129, 13,155,202,138, 24,197,175,209, 24, 66,210, 28,163,184, 22, +227, 32, 58,233, 9, 59, 76,147,177, 49,217,183,162, 0,160,109,226, 4,133,121, +105,190, 9,113,177,200, 24, 20, 7,185, 30, 95,171,108, 42,114, 33,224, 96, 82, +223,205,246, 42,235,156,230,198,186,185, 56,229,178, 7, 70, 67,100,232, 56,138, +223,180, 8,209, 31,214, 28, 23, 0,105, 8, 87, 99,159,182,188,175,102,206, 97, + 40, 89,167, 50, 50,222,204,147, 66,239,133,228,215, 66, 72,146, 79,187, 23, 32, +193,199, 99, 87, 54,134, 2, 74, 52,227, 96, 99,236,119, 14,173, 47,192,108, 46, +147,157, 62, 16, 42,111, 30, 75,218,177, 31,208,159, 49,105, 83, 44,132, 39,241, + 79,138,142,159,227,141, 83, 4,105,187,106,229, 52,230,187,253, 10, 82, 51,247, +122, 51, 89, 42,115,186, 59,202,104,113,187, 67,187, 25, 31,213,142,159,246,119, +155,146,218,118,157, 7,180,181,251,238,250, 55,154,126,213,222,186, 81,119, 96, + 90, 20,115,193, 90,101, 54, 32, 76, 91, 49,178,106,216,107, 73, 85, 94, 62, 74, +107, 92,153,219,187, 22,242, 50, 45, 41, 42, 65,110,224, 49,179,140,175, 71,233, + 8, 18,108,142, 45,150,132, 43, 45,120, 17,255,148,230,243,201,126, 30,176,165, + 32,174, 26, 12,221,113, 8,171,198, 80, 93, 22, 31, 60,160,246, 83, 9,203, 93, +253, 47,211, 52,220, 26,162,238,110, 43, 32,207, 89,160, 63, 54,136,210, 69,113, +186,228,110, 75,198,255, 22,247,198, 44,251,233, 22,168, 98,205,160, 89,134, 70, + 50,146,100,179,155, 76, 32,191, 20,141, 75, 68, 2, 57, 38, 83,254,154,194,226, + 67,200,157,251, 15, 80,236,237,173,236,140,167, 94, 15, 45,141,179,127,121,136, +142, 68, 33, 17,227,188,254,202, 76, 89, 51,200,213,225,198,158,241,153,204,161, +130, 41, 24,112,247,228, 98,148, 35, 71,226,210, 53,109,100, 48,182,100,120, 30, +134,162, 12,241,145,242, 24, 83, 83, 66,180,127, 97, 49,192,236, 3, 11, 48,174, +155, 12, 1, 58, 0, 37,253,137, 59, 39,214,127, 12,117, 81,143,159,105,219, 98, +230,102,159, 78, 97,199,194,240,183,222,160, 85,237, 49,193,185,146,225, 66,101, + 44,190,243,245,104,115,108,101,203, 9, 96, 89,231,202,215,204,191,129, 79,132, +217,223, 45,125, 83,109,120,150, 61, 70, 32,180,197,229,111,166,216,201,166, 67, +229,185, 65, 84,204,198, 26,137,151,164, 74,175, 81,110,232,100,239, 40,105,186, + 38, 68,146, 15,212,106,100, 55, 49,118, 32, 34,171,133,177,208,233, 48,192, 80, +171, 18,107,132, 88,111,230, 92,160,196, 64, 8, 79,176, 54, 34,194,187,182,115, +194, 82,198, 9,188,152,198,168,175,222,134, 36,136,137,129,127, 89,156,151,144, +249,112,115,138,198, 37,143,144,176, 21,192, 87,227, 52,201, 10,154, 41,103,111, +133, 64, 63, 74,141,136, 70,198,129,240, 81, 93,142,254, 61,237,249,101, 65,146, + 88,247,165,100, 20, 82,243,141,248,140, 66, 31, 27, 4,120, 17,208, 38, 67, 34, +221, 25,224,236, 50,230,143,245,242,144,232,163,121, 78, 2, 87, 30,106,129, 3, + 70,169,237,170,234, 37,179,243,179,191, 98, 90, 25,210,110,154, 56,241,168,121, +153, 98,159, 0,124,249,172, 48, 16,160,131,123,243,247,250,203,140,173,152,164, +215, 27,214,130,214, 72,241,197, 51,204,115,182, 50, 23,196,136,253,228, 65,212, +238, 80,202,158,140, 35, 85, 72,183,130, 97,131,193, 60, 11,151, 78, 5, 22,233, + 20,229,250,172,112, 13,199, 47,162, 30,214,241, 4, 94,193, 50, 90,113,170, 49, + 46,111, 89, 27,231, 6, 7, 72,212,185, 16, 80, 22, 43,112, 49, 53,181,106,208, +102,133, 29, 47, 57, 54,128, 68, 41, 37,209, 54,203, 78,118,220,181, 74,106, 41, +220,234, 97, 69, 99,188, 85,134, 14,223, 94, 43,142,211,212,194, 9, 79, 86, 61, + 89,198, 48, 10,216, 71, 53, 61,120,100,215,108, 4, 8,114,170,153,220, 4,193, +165,153, 51,240, 53,189,232,197,153,219,200,129,136,175,161, 32,247, 13, 55,143, +164,195,230,188,246, 55,145, 95, 26, 73, 31,197,105,154,237,229,190, 62,213,191, +161,138, 70,202, 87, 40,191, 34,114, 48, 60, 52,216, 68,158, 59, 79, 19, 15, 88, +178,223,253,163, 86,219,231,231,124,248, 12,182, 30, 5,112,189, 53, 49, 92,233, +167, 97,147,178,228, 18,219,153, 89,183,141,153,161,153,132, 23, 66,244, 94, 96, +113,152,183, 0,134,175, 17, 90,200,112,129, 37,218, 12, 19, 4, 12, 84, 75,222, + 37,178,104,132,185, 40, 64, 8,253,163,134, 3, 10, 27, 67, 77, 82, 10, 25,202, + 11, 45, 70,127,207, 77,251,136,177,240,246,243,162,130,103,130,240,253, 12,197, +179, 4,212, 0,160,202, 80,247,135, 81,227,226,223,253,153,137, 22, 61, 40, 43, +106, 75,141,104, 17, 82,223,103,186,171, 6,180,235,216,116,156,108,109,135,178, +167, 32,100, 32, 54,232, 63, 98,161,238,176, 26, 11, 27, 66,103, 44, 92,114, 24, +115,248,159,247,211,189,240,141,244, 74,153,193,103, 72,193, 9, 88,103, 0,193, +112,196, 98, 48,200,244, 11,134, 39, 67, 2, 46, 27,121, 1, 47, 27,166,127,185, +190, 8, 23,173,248, 8, 33,105,230,230,149, 53, 20, 17,164,188, 51, 22,126,153, +112, 21,208,176, 24,161,140,183, 26, 76, 92,144,224,169, 59,191,208, 44, 82, 61, +109, 81,190, 44,233, 52, 57,126, 17, 61,108, 79,178,113,207,251,173, 66, 57,177, + 81,103,214,168,145,230,238, 89, 48, 4,121, 97, 36,229,154, 1, 48, 58,100, 35, +165, 71,176,136, 43,201,215, 36,202,100,161, 57,145,243,220,197,230,193,212,164, +167,108, 15,182,228,253,191, 74, 89,190,117,207,149, 8,203,162,188,190,136, 51, +178, 27, 90, 5,120,179, 8,196,224,202, 80, 83,190,192, 5,228,141, 73, 28,219, +181,175,122,173,202,183,199,223,110,253, 88,113, 75,111, 93, 62,199, 83,202, 84, + 84, 78,103, 54,190,234,207, 66, 69, 16,134,219,246,156,238, 85, 71,121,182,196, +104, 11,122, 89,169,145, 15,230, 15,103,100,203,173,217, 64, 89, 87, 47,227,196, +170,222, 66,158,203,153,143, 32,227,173,238, 72, 16,120,185,167,244,118,120,127, + 20, 7,237, 84,247,140,255,244,192,111,109, 81, 45,190,143,150,160, 55,170, 26, +126, 27,127,255,150,172,160,181,221,239,128,160,155,161, 50, 38, 63,246,253, 68, +191,155,231,191,102, 44,218, 46,230,183,120,254, 62,161,157, 90,240, 11, 29,216, +169, 10,160,237, 63, 65, 43,166,137,153,106,244,177, 10, 89,179,116,185,234, 78, + 18,175, 10,132,250,190, 17,149, 2,251,128,245, 82,119,115,131,221,228,202,143, + 59,181,227, 66, 46, 32,249,233,178,234,243,225,177, 41,132,192,232, 77,120,228, + 88,146,131,135,157,205,251,125,169,142, 97,142,233, 52,146,237,103,251,243, 73, +248,115,158,135,198,182,134,238, 25,195,208,100, 65, 25,131, 32,198,125,181, 6, + 59,143,242,236, 88,179, 14,169,200,160,105,198, 51,209, 63,153, 71, 23,128, 25, +127,224, 10,146, 27,126, 46,194, 34,174, 75, 40,145,196,236,149,103,149, 51,195, + 59, 47, 9,244,149, 6,137, 79,249,204, 88,203, 58,252,114,197,146, 82,139,175, +192, 95, 98,160, 43,203, 27,129, 91, 51, 98,157,203,240, 21, 93,188, 86,201, 48, +250,208,142, 30, 18, 2,103,115,231, 35,240,184,174,206, 79,251,237,103, 3,140, +170, 9, 75,118, 13, 10,228,230, 54,161,230,107, 27,252, 81,208,227, 35,198, 26, + 99, 22,126,138, 42,236, 54,137, 86, 78,198,240,114,152,128, 10,134,124, 37, 63, +152,103,173, 86,238,164, 9,104,224,120,204, 68, 15, 3, 1, 48,170, 89,132, 15, + 95, 40,144, 67,117, 23,109, 55,174,126, 66,229,200, 45,249, 7,189,152, 95, 68, +117, 56,121,174,110,137,123,115,191,113,230, 80,104,178,127,237,192,217,203,207, +214,231,152, 22,145,211,137,175,240,207, 68, 41, 97,241,109,211,134, 33,166, 47, +217, 38, 36,145, 22, 40, 84, 50, 4,186,141,114,149,171,242,216, 0, 64,211, 75, + 93, 27,116,166, 9,102, 89,239, 17, 42, 72,112,168, 61,223, 90, 21,190, 5,174, +236,218, 18,145, 58, 6,201,222,160, 33, 27,154,166,118,233, 13, 65,229,168,102, +206, 78, 23, 4, 87,112, 80,226,189,144, 55, 50, 3, 12, 58, 66,101,229,151,223, +103,164,229, 64,141,218,221, 78, 67,243,242, 39, 29,190,102, 78, 14,218, 59,169, + 48, 96,130,158,175, 6,241,129,242, 59, 47,203, 0,113,240, 5, 10,186, 13, 36, +190,130, 81,212, 16, 12,156, 65,243,165,105, 79, 59, 2,253,195,217,172, 85,217, + 56,195, 72, 44,101,215,233,114, 28,215,122,179, 93,230,243, 15,194,181, 81, 88, + 44,147,223,174,177,199,112,144, 37, 76,123,143,171,208,112, 89, 3, 33,251,102, + 74, 34,179,130,166,154,160,152,222,214,125,183,128, 7,186, 24,234, 33, 45, 6, +157,119, 51,116, 71, 46, 17, 97, 0,117,202, 81,197,243,157,247,141,154,236, 77, + 3,120,153, 60,201,149,183, 84, 44,220, 91,189, 33,250,225,105, 82,146,231, 21, +155, 11, 48,216,140,198,210,235,168, 18,211, 31, 3, 41, 46,209, 10,155, 13, 93, +192,218,107, 6,252,137, 67, 90, 40, 67,160,166,161, 78,200, 12, 72,247,114,179, + 93,187,173, 1,219,157,254, 41,213,187,223, 15, 21, 99, 27, 14,120,140,119,150, +104,254, 19,233, 11, 1,251,111,119,145, 31,174, 96, 78, 97,175,240,200,204,103, +211,132, 98, 3,123,174,154,205, 40, 38,204, 66, 40,132,187,136,170, 72,151,138, +244, 88,240,228,171,140, 21, 10,157,106, 77,222,103,179,114,130,135, 45,164,126, +164,233, 83,190, 9, 42,156,247, 98, 72,210,210, 67,165,240, 32, 63, 77,119,116, +227, 48, 58, 19, 22, 61, 9, 85,143, 12,203,176, 39,136,109, 25, 57, 97, 20,128, + 16,154, 73, 23,137, 63, 72, 43,155, 7, 46,124, 79, 29,243,170,120,218,134, 88, +163,195,236, 96,193,200,255, 95,251,146, 51,212, 26,196,137,194,192,251, 94,150, +155,105,123, 23,129,140,134, 93,148,169, 5, 51, 76,168, 6,160, 44,195, 78,226, +164,230,180,181,162,193, 21,102,208, 73,242,137,124, 84, 93, 3,208, 23, 32,235, +125,169, 10, 34,183, 71,138,130, 70,165, 2, 44,228, 9,108,176,124,240,203, 59, + 79,193,162,233,198,189, 55, 81,117, 63, 35, 44,196,205, 21, 79,171, 71, 82,252, + 41,230,180,208,150, 96, 58,234,103,186,129,214,129,112,143,101, 15,149, 90,214, + 83,169, 38, 2,110, 52,224,194, 28, 86,184,205,158,103,225,122, 94, 36,153,185, +105, 96,158,152,188, 64,216, 55,205,148,104, 18,201,116, 49, 76,208, 23,230, 30, +145, 89,145,177,125,190,180, 81,246,250,235,242,188, 13,179,235,101, 66,172,163, + 88, 39,152,166,129,172, 84, 81,237, 20,168, 43, 21,107, 64, 3,109,132,182,154, +105,209,190, 41, 82, 9, 24, 15, 12,144,219,251, 62,232, 42,218,205,148,219, 93, + 59,171, 53, 51, 46, 99,137,139, 58, 91, 27,204, 21, 16,183, 82,159,112, 70,164, +173,243,156, 76, 71, 39,194,149, 7, 35,243, 22, 69,236,162, 36,116,176,218,160, + 99, 3, } ; -// ../Source/Template/GB_AxB_dot2_meta.c: -uint8_t GB_JITpackage_1 [2052] = { - 40,181, 47,253, 96, 55, 47,213, 63, 0,150,252,182, 41,176,146,217, 28,170, 70, - 99,199, 27,154,246,231,168,157,119,146,207,118, 82, 3,243,132, 49, 82, 91, 51, - 80,138,156,226,249, 32,142, 31,244, 31,244, 95,120, 40, 1,170, 0,170, 0,175, - 0,249,222,230,167, 96,177,195,209,119,177, 69,109,223,226,124, 37,173,119,118, -126,146,207,125,241,255,135, 64, 58, 32, 24,148,219, 2, 62, 60,218, 49,224,221, -141,149,179,212,162,121, 52,109,169,215, 93, 4, 66, 81, 44,147,254,184, 25,202, - 95,196,166, 30,205,182,187,205,164,177,109,142,114, 38, 20,154, 15,165,107,145, -216,184, 65,199,249,187,160,160,215, 42, 63, 25, 88, 40,203, 36,161, 66, 89, 46, -225,164, 79,152,138,166,230, 20,249,209,151, 47, 72,181, 79,153,228, 84, 95, 56, -197,135, 75, 99,113,134, 89,103, 58,102, 16,156,185,177,187, 98,248, 79, 42, 2, - 16,239, 51, 24,131,245,169, 34, 24,144, 24,235,151,153, 27,220, 44,249,118, 91, -181, 33,183,234,225, 5, 5,144, 73, 65, 65,159, 10, 8,128,234, 24,207,189, 50, -144,252,100, 21,165,161, 48, 51,169,194, 10,226,209,206,118,142,145,142,169,247, -134, 26,215,182, 54, 76, 55,139,115,117, 64,151,196,166,109, 34,188,238, 60, 26, -177, 93, 69, 25,135, 50, 19,235,152,135,172,103, 14,183, 72,160,176,112, 9,135, - 51,225,112, 15,143, 75, 44,233, 31,137,105,155,106,203, 54,210, 53,208,149,101, -114,225,212, 49,199,117,138, 44,247,188, 29, 32, 80,218,222,238,182, 63,141,207, -223,108,233, 51,184, 25,194,180,214,209, 43, 8, 39,152,105, 72,195,246, 82,108, - 27,164,157,216, 32, 62,158,223, 55,168,152, 39,120,235, 25,139,212, 59, 40, 94, -239, 26,183,214,249,225,237,230,119,157,237,229,166, 60,134,150,222,222,143,250, - 11,154, 43,243,124,178,142, 4,105,155, 38,101,135,164,107,124, 67,108,167,152, -183, 77, 86,238,233,216, 49,146,179,237, 16,252,181,159,142,233,173,183, 56, 89, -127,135, 71, 33, 1, 28,165,243,172, 33,216, 57,224,203,116, 67,168, 32, 84,164, -118,213,105, 41, 40,118,230,144,174,101, 29,142,236,108,176,237, 2, 73,142,117, -105, 36,210, 37,146,132, 97,191,188, 1,147,176, 15,230,177,254, 16,188,156,102, - 77,128,180,108,147,200,228,184, 97, 88, 4,203, 68, 24,172,133,144, 61,193,155, -163, 21, 79,123,204,113, 6,158,217, 94, 90,150,101, 65, 30, 58, 27,208, 6,187, -178, 13,180,169,232,200,170,170,170,106, 67, 34,109,104,154, 38, 63, 0,151, 82, - 74, 41,165,148, 82, 74, 41,165,148, 82,134,114,122, 7, 93, 1,144,138,203, 76, -172,143, 10,149,153,100,240,121,107, 14,138, 1,198, 94, 56,192,229, 82, 73, 23, -217,209,107, 47,248, 47, 83,141, 91, 58,201,149,142,161,215, 58,127,193, 34, 5, - 27, 95,186,122,191,119, 23,150, 94,143,190, 59,166,215, 92, 22, 27,142,220, 88, -215, 39,171,147,114,157,153, 48,201, 53, 27, 79,199,131, 29,195,176,105, 82,232, -122,172, 83, 28, 37,121, 98,131,124, 59,233,185, 67,183,216,193, 47, 18,201, 54, -216, 21,187,116, 93,239,187,134, 40,190,165, 66,141,166, 70,157, 17,134, 14,200, - 72,188,153,155, 30, 69, 85,100,133,170,100,117, 1,129,227,198,147,187,193, 79, -153, 62,170,153,114,148,118,247,203, 13,222,114,204, 79, 85,168,143,234,212, 43, -150, 53, 77, 50,130, 71,168, 98,212, 78, 41, 26, 25, 25, 41, 72, 82, 88,214,146, - 41,132, 1,105, 22,136, 97,106,249,194, 88, 52,201, 16, 9,196, 97, 12, 33,136, - 17, 39, 32, 4, 9,136, 34,129, 72,100, 18,200, 4, 51, 10,212, 28, 52, 39, 74, - 35,200, 92,169, 75,101,112, 96, 77,121,195,185, 12, 80,153, 43,131,212, 61, 45, -176,150,227, 87,105, 77,117,173,227,194,191,186,161, 66,128, 25, 11, 16, 50, 18, - 82, 24,134,243, 17,148, 99, 12,176, 54,249,180,170,164, 9, 10, 40,156, 77,161, - 10, 44, 52,211,236, 11, 91,209, 57,161,202,238,102,255, 38, 27, 74,172,255, 32, - 4, 38,227,145, 46, 4,194, 98, 73,246,176, 45,161,113,195,109, 83, 41,126,168, -251,222,158, 80,143,216, 59,246, 85,228, 81, 20,226, 40,237, 77,163, 81,153,168, - 70, 20, 63,138,238,119,152,133,195, 28,184, 50,241, 92, 50,154,102, 54,145, 75, -177,225, 40, 59,149,188, 9,187,144, 88,174, 87, 4,140, 18, 97,176, 33, 16,129, - 86,224, 75, 54, 5,194,209, 27,144,237,218,188,110, 72,139, 41, 3,229,100, 58, -163, 69, 25,209,171,142,240, 13,201,197, 37, 9,154,146,185, 91, 66, 85,245, 83, -120,101,216, 3,212,187,156,101,115,166,176,138,162,188,151,143,212, 98,216,186, -120, 34, 98, 39,112,197,148,180,247,118,168,198, 54,248,170,193,193,120,147,167, - 96, 69,120,178,252,192,253, 50, 72, 64, 93,190,152,215,170, 5, 57,230, 85,149, -182, 49,120, 84, 69,249, 49,169, 14,181,198, 88,179,172,221, 41,236, 72,198,201, -245,157, 23,112,211,127,171, 59, 93,147,220, 85,112,108,112, 27,217,155, 56, 75, -216, 65,116, 10, 52,118, 38, 61,232, 39, 61, 93, 25, 46,132,115,167, 50,191, 50, -152,214,212, 2, 43,116,223, 83,185,122,139,241,227, 48, 36,213, 83,158,212,174, -171,225,162, 80, 53, 74, 67, 57,128, 89,160, 58,227,213,206,130, 49, 14,138, 95, - 16,202,107,215,241,179, 85, 12, 51,111, 47,203, 93,223,150, 83,248,151,131, 82, -157,165,135, 95, 84, 25,110,248,102,114,146, 54,229, 87, 43, 56, 91, 91,130, 2, - 49,124,202, 93, 56, 18, 56, 45, 86, 36,158,225,231, 79,181,255, 86,110,174,101, -109,218,168,180,247,232,175,149,195, 44, 58,173,190,142,149,184,131, 72,154,248, -216,248, 1,121, 12, 2,153,224,112,120, 48,161, 61,254, 37,226,131, 31,187, 19, - 3,121, 51,220, 68,249, 55, 7,251,199,195, 28, 87,111,104, 19,152, 21,178,148, - 17,102,216,116, 77,108, 92, 71,149,173, 41, 68,162,195,112, 7,105,223,167,179, - 1,196, 20,223, 1,158,205,128, 30, 29, 68, 89,165,216, 27,202, 50, 58,214,128, - 11, 82,206,162, 62,247,133,224,243, 11,189,162, 77,202, 19,213, 59,170,179,164, -119,146,132,216,155, 31,151,129,182, 91, 99, 39,226,102,186, 16,101, 17, 31, 31, -196,229,144, 78,229, 26,125,138,129,170, 53,251, 28,225, 17,156, 84,103,176,244, -208, 36,201,253, 38,172,237, 11,115, 21,130,163,246, 71, 67,231, 33,244, 14, 57, - 53,106,227, 54,173,123,128,119,212, 70, 93,134, 36,165, 80,229,231, 37, 63, 85, - 93, 41,111,130, 81,212,229, 34, 19,172,151,140, 46,191, 83,210,252, 68, 72,218, - 72,188,112,194, 33,105, 14, 9,121, 81,132,169,215, 33,114,222,150, 79, 72, 54, -144, 64,120,158, 12, 42,136,200,122,117,118,123, 66, 61, 48,143,242, 64,155, 79, -141,139,207,187, 44,105, 38,186,143, 66,151,240,253, 53, 23,222,177, 92,220,169, - 35,217,202,229,102, 58, 49,213,245,130, 81,143,184, 53,200, 63,102,136,125,237, -249,145,218,110, 65,165,125,126,218, 75, 20,130,131, 26, 19,207, 11,186, 68, 29, -141,130,205,201,129, 4,102,242,149,168, 55,107,232,129, 39,109,183,135,224,114, - 21,152,124, 79, 46,123, 31,188,198,212,233,181, 65,254,189,217, 81, 79, 34, 37, - 81,212, 46, 46, 23, 20, 5, 64,110,210,174,110,102,213,121,160,148, 79,213,106, - 89,211, 84,137,117,186,137,162,100,131,192, 25,181, 30, 57,200, 68, 63,201,118, - 91,252,228,201,222, 93,252,245, 21, 19, 78,100,237,215,168,132,211, 66, 27, 9, -248, 8,131,182,249,125,140,202,185,223,164, 62,127,134,160,177, 73,202,211,192, -139, 79,123,124,156, 69,130, 26,214,165, 11, 66,144,235, 90,174, 0,212, 83,222, -140,201, 38,143, 64,165,108,204,169, 32, 7,231, 87,106,250,128,244,184, 10,132, -125,193,114,195,103, 43, 29,188, 97, 49,228, 73,227, 10,172, 30,254,248, 77,236, -200, 95, 36, 22, 53,148, 57, 16,231,194,174,127,118, 20,198,237,159,108, 6, 98, -104,132, 3,251,150,216,168,146, 18,131,222,191, 1, 1, 5, 87,213,223, 35, 77, -224, 60,240, 37, 86,230,104,110,183, 28, 45,125,226, 64,204,167, 0,204,174,221, - 66, 99,126,236,193,143, 54,181,115, 67, 22,139, 20, 58, 83, 42,246,184,129,200, - 26,227, 67, 31,152, 11,170,104, 55, 16, 84,211,118,191,135,170,146,151,240, 33, - 10,208, 75, 96,246,168, 69,245, 49,194,235,193, 63, 12, 32, 27,202,144,187,109, - 2,247, 69,151,149,128,152, 73,209,221, 67,100,226,105,112,174,209,149, 66,189, -231,194, 38,247, 59,219, 68,232,108, 50,110, 2,181, 7,229,123,130,223,132, 63, - 8,184, 38,247, 91, 93,183, 5, 20, 43,163,250,175, 99,111,205, 84,252, 53, 30, - 31, 23,136,178,248,170,133,156, 50, 72,133,157, 19,145,198,128, 14,158,190,101, -250, 33,114, 15,229, 94,208, 62,209,229,212, 4, 7,189, 6, 59, 41,122,138,100, -253, 88, 60, 55,100, 80, 98,223,249,253,255, 88,132, 3, 80,137, 41, 83,236,115, -205,208,205, 5,241,107,112,227, 27, 63, 33, 65, 51,152, 90,239, 61,111,167,180, -213,129,202, 49,169, 71, 47, 66, 40,218,134,110,116,223,202, 31,144, 85, 44, 38, -233, 87, 45, 33, 63, 64, 42, 94,207,144,108,250, 20,202, 78, 82, 25,115,148,247, - 90, 46,167,183,133, 26, 7,163, 65,243, 66,203, 76,217,141,248,207, 53, 96, 33, -129, 4,123,130, 25,108,217, 71,171, 35, 95, 14, +// ../Source/JitKernels/GB_jit_kernel.h: +uint8_t GB_JITpackage_1 [562] = { + 40,181, 47,253, 96, 31, 5, 69, 17, 0,118, 28, 89, 32,240,182, 30, 12, 8,146, +156,149,114,253,188, 89,180, 32,243, 52, 16, 18, 84,205,240, 96,113, 46,253,204, +133,197, 97,128,230,189, 81, 0, 78, 0, 80, 0,122,123,158,123,113,140,165, 31, + 26, 12, 5, 3,225, 88, 40, 24,110,176, 5, 63,232, 59,170, 16,167,164,151,188, + 13,134,238,230, 7,140,196,166, 23,214, 28,121,188,206, 53,196,252,190, 34, 76, +212, 24, 87,207, 96,231,207,137,176,253,174,192,125,187, 38,238, 15,143,194,255, +229, 7,209,125, 63,116, 70, 60,145,136,136, 68, 34,191, 43, 14, 67,191, 5,226, +127, 87, 16, 37, 20,179, 42, 23,139, 66,187,231,190,238, 10, 98,164, 50, 90,229, +239,109,255, 64,215, 24, 87, 7,247,119,157, 35,232,235,143,111,231,250,122, 91, + 84, 80, 12,196,123,182,134,210, 31,249,111,119,247,247,220,133,120,253,189,189, + 24, 98, 3,209, 40,238, 71,249,245, 95, 60,181,131,113,181,159, 53, 43,187,182, + 74,230,210, 93,238,123,141, 95, 16, 13,190, 51, 24,146, 30, 99,206, 11,110, 63, +212,216, 62, 71,169,127,249, 55,233, 29,147,211,130, 69,220,221,163, 33, 82,145, +216,233,132, 93, 90,102,169,182,202, 69, 11, 0, 31, 12,220,112,177, 52,180,194, +100,180,224,156,131, 27,204, 33, 13,120, 84,113,195,200,202,210, 56, 91,150,101, + 89,150,101,217,156,115,206, 57,167,148, 82, 74, 41, 37, 4,179, 36, 24, 76,106, + 42,180,162,155,121, 73, 42,170,137, 4,209,243, 93,173,223,218, 74,145,110,222, + 53,228,246,118,158,173, 31,122,211,197,245, 58,184, 75,157,207,254,185,186, 6, +179,173, 33,127,253,222,214, 32, 27, 90,160,241, 92,163,148,144,136,104,138, 82, +144, 66, 99,176, 36,144,170, 49, 15,150, 82, 40,141,139,205, 35,122, 26, 3, 87, +142,220, 57, 38, 89,112, 30, 51, 55, 7, 92, 57, 38, 95, 56, 19, 35, 55,199,220, + 28, 72,110,224,196, 41,228,114,227,206, 81,190,224,110,174,114,198,103,139, 69, + 14,236,184,104,176, 62,254,189,134, 54, 0,186,177, 91,201,175,171,239, 88,112, +184, 71,108, 50,187,180, 53,129,136, 2, 85,120,181,129,196,197,115, 59, 45,222, +214,170, 52, 51, 10,104, 57,208, 86, 70,116, 48,216,131,110,155, 75, 60, 26,212, + 37,128,180,180, 85, 57, 96, 16, 92, 2, 27, 95, 91, 8,235, 17, 0,240, 75,238, + 54,156, 6,240,178,144,165,228,106, 22, 40,160,231, 16,208,100, 72,103, 52, 61, + 18, 5,186,105,254,252,204,196,206,129, 21,123, 3,136,185,115,147, 50, 70,138, + 2, 49, } ; -// ../Source/Template/GB_AxB_dot2_template.c: -uint8_t GB_JITpackage_2 [2026] = { - 40,181, 47,253, 96, 53, 32, 5, 63, 0,170, 69,252, 12, 45,160, 78, 25,235,184, -194, 44, 82,108,249,122,136,121, 98,176,241, 11,253, 82, 96,190,194,181,190, 6, -247,144,161,156,105, 67,140, 81, 0, 68, 30, 94,193,235,240, 58,104, 29,158, 42, -193, 0,202, 0,193, 0,207, 69, 88, 78, 77,242,199,194, 37,243,126,155,213, 99, -251,214,100, 97,198, 8, 63,246,205,171,241,149, 51, 11, 77,117, 74, 44,103, 93, - 47,220, 46,136,202, 62,127,238, 61,215, 31,169, 76, 67,159, 87,214, 96,121, 42, - 70,144,135,194,237,118,231,147, 61, 87,248,234,154,132,119,142, 73, 36, 2,194, -159, 12, 82,119, 74,229,246,244,149,172, 93, 16,182,146,179,190, 64, 32, 84, 52, - 17,141, 53, 42, 91,222,220,222,207, 69,111, 30,163,251, 68, 32, 98, 18, 1, 57, - 0, 49,137,184,148, 69,159,108,107,192,202, 35,238,161,207,157, 91,115, 62, 97, -238, 82,125, 40,172, 9, 40,108, 43,164, 24,223, 6, 97, 14,123, 51,144, 54, 43, -253, 97,107,188,122,168,243, 83,245, 48,192, 77, 80, 96, 28, 36,172,159,194, 23, - 70,186,241,125, 17,119,106,175,218,112,175, 74,112,137,196, 1,145, 72, 2,212, -181,190,191,178,185, 2,144,176, 44, 7, 6,135, 84, 9, 16,240,141, 69, 19, 65, - 1,128, 71,111,216, 26, 94,103,173, 12, 48,135,121, 21,153, 12,148,132,113,176, - 11,130,229, 69,246,218,222,224,223,190,173,243,182,207,160, 67, 57,167,189,133, -150, 53,160,253,164,245,148,115,123,157,158,202, 85,145,169,192,188, 8, 25, 23, -234, 60,164, 65,174, 17,222, 90,142, 18,244,201,211,154,124, 60,108,132, 26, 50, -123, 25, 22, 94,234, 16, 29,139,109,100, 7, 71, 6,234,146, 69, 63, 77,209, 45, - 78, 3,141,228,225, 20, 44,106,241, 13,235, 15,146, 99,152,240,255,142,203,165, - 1,130,135, 93,207,106, 7,135, 4, 57, 56, 48, 58,251,196, 37,140,169, 35,235, -148, 5,151,245, 44, 14, 28,246,176, 8,238,193,197, 85, 44,219,119,103, 11,229, -181, 89,151, 26,203,246,176,230, 80,177, 96, 21, 26, 44,227, 54,156,199,169,200, - 4,152,187,146, 45, 87,154,249, 35, 23,178,219, 78,122,202,194,116,187,118,253, - 41, 41, 48, 14, 18, 16,139,247,235, 52,140,215,214,246, 80,159, 59, 93, 6, 6, -201,190,210, 52,249, 68,225, 33, 32,250,101,187,241,214,177, 94, 33,199,236, 82, -206, 54,248, 83,232,210,141,167,246,121,159, 81,167,133, 79,121, 12,144, 11, 18, -163, 3,241,192,176, 56,141,110,193, 54, 78,131, 85, 21,117,201, 81, 35,187, 69, - 41,145, 37, 65, 77, 28, 67, 2, 80,117,170, 10,226,241, 83,176,184, 21, 94,251, - 92,198,239, 43, 96, 32, 64,135, 58,103, 29,109, 71, 94,242,224,181,117, 94,218, - 53,179,172,253,242,197, 31, 15, 43, 47, 65,125,242,137,136,242,136,228,108,174, - 18,196,148,245, 6,101, 72,139, 56,130, 52,254,100,246,146,140,236,231,190, 13, - 36, 35,199, 8, 43,164,167,219, 60,220, 46, 96,165, 1,142,170,170, 42,141,195, -112,174,106,226,209,144, 69, 94,195, 89, 3,197, 76, 78, 18,100,174,205,133,177, - 96,239,226, 44,155,183,185, 92,131,139, 70,178,108,220,197,178, 84,216, 70,232, -121, 24,157,213,121, 12,221,253, 11,111, 47, 81,174,229, 75, 59, 67,154,156,194, -185,134,109,113,234,156,227,206,231,165,216, 86,128, 56, 69, 84,249, 94,152,217, - 75,230,206, 45,252, 76,137, 47,180,221, 62,113, 48,103, 97, 62,129,209,219,227, -156, 29,137, 22,186, 29,170,176, 86,120, 10, 70,194, 76,248, 84,132, 21,116, 51, - 80,189, 22,115, 74,196, 94, 9,121,235, 11,225,216, 17, 78,217,229,103,251,209, -109, 98,206,153,108,251, 41,194,206,152,218,219, 51,210, 13,214,152,229, 45, 79, -237,145,101,229,140,115,174, 5,210, 43, 22, 9,215,197, 93,150, 69,131, 69,143, -209, 57, 27, 11, 22,130, 5,168, 82,164, 16, 42, 52, 83, 34,133, 5, 73, 74,141, - 1,162, 32,132, 1,105,170,232,129, 78, 31,210,112, 72,136,130, 12, 4, 98, 2, -226, 8, 49,134, 24, 34, 5, 34, 50, 18,136, 4, 20,148,164,196, 57,146,123, 75, -104, 91,149,114, 6,164, 54, 98, 62, 29,138,201,159,188, 30,113, 54, 49,122,148, -249, 45, 93, 81, 99, 96,243,184,160,146,200, 69,129, 42, 24,221,136, 34, 63,241, -207, 83, 77,228,175,179, 55,187,113,149,203, 44,198,171, 55,199, 31,210,170, 6, -137, 9,110,166,201,116,168, 17,152,254, 66,234, 11, 26,221,197,131,123, 5, 37, - 78,227, 33,245,176,222,237,139,131,135,190,114, 6, 28,240,193, 70, 91, 29,194, -211,131,148,190,135, 67, 75,173, 3, 20,208,142,171,207,147,128,195, 89,133, 9, - 96,250,242,189,252,234,251,237, 97,115, 71, 23, 53,116, 70, 43, 17,124, 74,131, - 78, 83,223,159,101, 91,204,158, 97,150,232,115, 15, 16,223,143, 23, 34,156,146, - 32, 82,114,109,183,233,209, 4,213, 25,190, 23,225, 15, 20,229, 9,131,139, 53, -190,246, 45,141,177,243, 14,213,131, 80, 0, 71,140,160, 72, 50,251,127,252,165, - 42,191, 83,242,158,122, 61, 61, 81,117,254, 17,112,210,248,233,116,154,194,176, -225, 75,183, 88,155, 64,224,182, 21,167, 90, 74,181, 41, 16,101,143, 73,122, 66, -100,120, 1,113, 22,145,139, 29, 61, 24, 77, 58,117,131, 17,131, 4, 38, 93, 61, -113,162, 1,144, 35,235,244,212, 70,110, 3,114, 5,101,117, 68,100, 71,204,250, - 1, 34, 57,180, 68, 24, 41,190,140,172, 82,137, 85,166, 73,178,114,118,234,196, - 84,186, 78,185, 95, 12, 12, 61, 5, 79,223, 98,110,182,107, 65,190,167,154,106, - 1,239,206,134,250,180,190, 95, 40, 46,119,107, 76,142,161,223, 0, 8, 65, 84, -112,208,248,133, 70,222, 69, 52,103,142, 82,171,237, 63, 48,244, 76, 91,190,142, -230, 36,140,188, 30, 3,161,255, 42,210,120,179, 36,225, 32,123,158,227,220, 4, -252,185, 62, 32,218,221,122, 0, 71,159, 88, 60, 65, 3, 36, 96,176, 1, 36,176, - 44,114, 41,232, 53,215, 51,194, 85,105,213, 10,240,170,208, 29, 53,192, 33,199, -206,107,157, 57,134, 91,157,199,215,152,171,100,105,113, 90,139, 47, 68,180,223, - 28,140,199,210,206,209,191, 85,131,209, 30, 27, 81,149,165,240, 47,109,137,103, - 46, 3, 60,177,147, 6, 11,253,125, 28, 20,205, 74,133,205,143, 38,251, 90, 61, - 20, 16, 78,225, 94, 58,232,225,115, 54,241,115, 7, 95,162,109,201, 90, 10, 34, -170, 87,138, 23, 68,225,206, 80, 77,190, 83, 62,173, 98, 20,191,104,232,191,118, - 42,195, 67,208,228, 23,152,229,200, 76, 17,118, 39,168,145,170,254,194,233,131, - 42, 51,116, 16,133, 41,230,173, 30, 35,231, 24, 21,236, 21,216,111, 30, 34, 33, - 48, 95, 83,208,220,128,165,231,138,111, 77,138,255, 38, 96,116,205, 95,150, 62, - 21,109,232,193,128,226,198,106,190, 3,127,186,150,244,115,169, 86,124, 65,189, - 97, 37, 20,171,222, 61, 93,143,104,229,184, 56, 91, 18,238,212,126,241,167, 24, - 73,253,135,249,210, 97, 80,114, 39, 80,183,253,246, 51,189,167, 32,105, 20, 4, -114,138,247, 51, 23, 27,172, 31, 39,207,180,154,134,181,229,138,190, 2,127,132, - 68,239, 20,140, 58, 82,118,221,171,225,177,167,144, 31,149,133, 88,160,127,120, - 67,174,154, 40,141,116, 19, 38,209,216,170,244,119, 57,128,102, 34,176,224,204, -169,217,128,107, 42, 86, 76,200,131,167,191,116, 13, 78,103, 26,206,167,216, 96, - 21, 63,166,143, 33, 12, 72,226, 14,179,154,178,160,138,196, 44,172,111, 14, 67, -255,150,124, 36, 18, 48,144,177, 40, 2,181, 12,118,100,165, 89,240,121, 45,241, -207,173,177,239,175,205,185,160,135, 69,157, 1,119,185, 88, 53,240,242, 79,130, -168,206, 15,134, 0,186,106,248,252,125,232, 67,121, 10, 13,165,100,182, 53,210, -183,246, 98,188, 52,152, 16, 30,200, 69,163, 53, 79,118, 17, 31, 92,174, 94, 82, -148,137, 27, 64, 52,134, 17,117,139, 87,205, 21,232,137, 98, 54,238,191,254,120, -252,155,212,211,184, 84,157,222,145,208, 35, 93, 94, 43,140,140,251,187,199, 6, - 59, 68, 60,134,201, 38, 65,112,102, 40,246,170,239,123,180,211,178,218,204,103, -120, 24,116,187, 50,129,222,195,183,213,134, 65,107,200, 86, 94,104,140, 48, 16, -188,224, 38,168, 98, 12, 28,161, 43,196,158, 79, 13, 69,145,242,176, 50,138, 43, -172, 19,195,228,166,137,105,239, 53, 96,155,121,216, 79,129, 88, 87,215, 58,112, - 6, 85,120, 61,161, 58,160,201, 48,106, 47,138,157,154,233, 94,255, 61,209, 62, - 5, 49, 12, 43,204,197, 92,186,151, 8, 79,131,225,171, 5,134,242,128, 84, 53, -129, 81, 73, 61, 35,169,219,117,223, 42,197, 2,150,202,123, 2,118,118,254,153, - 71,203,166, 36,107,193, 16,210,119, 72,117,213,229, 8,207,239,133,213, 92,211, - 91,167,153,119,163, 45, 7, 89, 8,196,174,172, 49,198,161,130, 70, 40,126,212, -117,215,178,252, 78,244,246, 91,240,230,228,207, 37,114, 4,219,228, 28, 35,183, -197,200,227, 25,196, 54, 97,175,219,165,183,166,248, 99, 99,210,241, 34,188, 68, - 34, 34,132,182,210, 73, 94, 85, 40, 3, 11,179,233, 10,218, 25,173,187,103,112, - 92,234, 72,141, 81,217, 52,241,129,153,252, 51, 18, 34,199, 40, 94,136,216,143, - 52,160,234, 40,234, 3, +// ../Source/JitKernels/GB_jit_kernel_AxB_dot2.c: +uint8_t GB_JITpackage_2 [308] = { + 40,181, 47,253, 96,165, 1, 85, 9, 0,230,209, 60, 33, 0,243, 54,238, 78,242, + 32,143,127,186,137, 18,168,232,192,189,172,128,254,165, 22,246, 61,177,180,201, + 33,170,170, 22, 4, 2, 4, 51, 0, 52, 0, 50, 0,111,106,175,228,126,231,147, +163, 31, 9,238, 23,221,109, 65, 80, 25,141, 73, 96,113,185, 38, 51,238, 29, 36, +226, 22,158,170, 77,126,215,122,234, 13,127,212,207,185, 59,111,174,197,156,162, +168, 68, 81, 1, 56,103,210,197, 81,153,190,239,232, 55,127,115,115,131,154,188, +121, 24, 86,143, 16,149,161,146, 18, 7, 67,229, 4, 60,240,200,204, 29,207,225, + 83,245, 15,184, 73, 49,119, 30,113, 53,179, 96,233,105,204, 10,148,237, 33,241, +172, 90, 45,195,238,181, 24,141,194,240,204, 80,165, 39,238,140,113, 51,251,229, +209,198,231, 71,234,210, 45,106,152, 42,233, 65,236,149,213, 45,253, 57,147,247, +248, 31, 68,122,115,252,148,134,168,194, 9, 28,247,184, 46, 11,119,173, 30,245, +185, 95, 3,240,228,237, 23, 47,192,255, 59, 67, 60,230,128,187, 59, 5, 81,133, + 19, 6,174,117,218, 86,185, 85,167, 57,174,189,212,155, 61, 2, 18, 0, 66,128, + 82,212,229, 11,130, 8, 1, 88, 0, 66, 26,141,215,105, 49, 25, 31, 36,128,156, + 69, 55,116, 40, 72, 14, 25, 96,210,252,121,102,138, 54,140,173,214, 47, 6,185, +162,214,146, 78,236, 41, 10,134, } ; -// ../Source/Template/GB_AxB_dot3_meta.c: -uint8_t GB_JITpackage_3 [1635] = { - 40,181, 47,253, 96, 69, 24,205, 50, 0, 54,123,180, 40,176,210,117, 14,106,193, - 12, 1,125,105, 71,198,186,177, 31,149,185,172,153,227, 61,126,237, 21,191, 6, -228, 55, 47, 42, 56, 36,106,127,208,127, 80,255,211,225,166, 0,168, 0,164, 0, - 13, 54,199,233, 41,223, 92,206, 52, 94, 11,134,220,195,123,155,162, 31, 47, 56, - 88,223, 17,116,103,250, 56,176, 10,188, 47,253,196, 82,223,219,234,105, 18,140, - 69, 83,105,143,163, 34,127, 51,118, 37,213, 11,118,231,169,180, 5,155,171,159, -202, 69, 39,100,233,250, 52,182,109,209,237,245, 56,170,232,223,199,183, 10, 52, - 24, 77, 5, 33,131,209,188,226, 38,183,108, 61,209,206, 45,252,148,119,195, 82, -213,110,101,252,145,158, 72,199,135, 77,214,183,154, 50,201,216, 98,202,187,180, - 29,169,104,111,235,231,123,108,239,227,150,189,156,169, 11, 71,241,167,245,116, - 73, 33, 96, 14, 3,182, 48,191,161,183, 75, 91,193, 13,187, 77,162,120,147, 15, -191, 92, 36,149,203, 37,163,201,193,177,239,165,226, 83,183,118,137,218, 62, 81, -239,216,156,239, 64,122, 75,222,226, 91,216,111, 72,149,105,153,231,226,154,252, -214, 91,164,218,129, 61, 82,235, 84,120, 53,197, 91,214,228, 83,163, 8, 93, 40, -223,152, 98,198, 81,243,148,139,194,219, 52,222,115,110,175,173,168,222, 30,162, -241,255,151, 72, 36,230, 5, 49, 55,210, 57,175, 58,172, 58,153,223, 68,120,230, -118, 85,112,182,101, 24,108,241,225,173,163,114, 1,158, 53,129,166,128,107,174, -140, 33, 66, 91,129, 54,209,121,131,149,212,157,128, 68,194, 89,182, 91, 59,110, -141,248,198,227,154, 39, 66,242,219,187,183, 40,246,107,112,108,137,212, 24, 94, -142, 58, 84,156,101,187,104,223,116,161,119,174,142, 1,153, 87, 94,170,221,105, -130,177,158,165, 30, 10, 85,235, 55,111,120,245,249, 80,128,206,225, 28, 99,130, -177, 49, 51, 51, 51, 51, 51, 51, 83,102,102,102, 22, 57,148,156, 47, 12, 71, 19, - 97,136, 49,205, 35, 69, 90,186,117,180,217,186,201,119,141,170,164,139,146,159, - 11, 36,186, 36,182,238,184, 62,129,163, 58, 26, 37, 72, 41, 69, 9,246,119,226, -106,245, 60,145,161, 50,197,249,203,217, 30, 41,175, 68, 87, 8, 3,226, 34, 34, -147, 95,153,136, 67, 30, 77,116,101, 25, 43, 28, 3,254,110, 6, 7, 23, 44,245, - 39,254,134,224,109, 61,246, 91, 70,165, 16, 36,228,122,244, 20, 45,125,158, 20, -222,118, 29, 47,216,191, 98,115,168,182,170,143,225,123,164,247,110, 24, 5, 10, - 35, 36,134,202, 29, 57,104,146,210, 1,243,103,222,185, 52,208,133, 93,159, 16, -166, 77,128,182,206,135, 69, 20,146, 45,107,243,209,202,181,104, 31, 82, 73, 30, - 24,192, 48,108,132,179,212, 91,183,131,204, 65,134,181, 11,251, 40, 88, 75, 99, - 95,144,201,181, 12, 52, 49,183, 15,131, 60,216,118,137,248, 51,175, 78,136, 69, -147, 26, 89,149, 6,175, 38,243,177,181,174, 77, 31, 61,125,116, 52,217, 30,197, -143,142, 14, 98,155,174, 63,175,100, 41,247,254, 70,213,218, 80,188, 1, 69, 77, - 38, 24,134, 97,165, 6,169, 22,195,180, 73, 33,210,178, 77, 34, 99,108,243,176, - 20,171, 36,207, 57,231, 3,200, 35,242, 96, 87,182,137, 60, 24, 32,150, 82, 74, -137,170, 52, 77,227, 16,192,165,148,168, 42,165,172, 2,129,162,168, 49, 85,100, -104, 68, 68, 68,146,130,130, 36,173, 1,241, 8, 49, 74, 66,198,208, 58, 66, 73, -152,133, 57, 20, 65,136, 25,130,136, 33,132, 24, 70, 36,152, 96, 68,100, 72, 10, - 10, 82, 72, 7,122, 86, 65, 14, 44, 35, 84,155, 3, 18,134, 82,125, 16,206, 13, - 73, 21,189,153,204, 80, 65,123,113,143, 89, 66,167, 31,140,229, 49,147, 71,125, -102,141, 96,111,110,132,218,134,126,139,200, 84,244, 31, 27,192,100,141,243,241, - 71,115, 75,225,107, 57,153,198,234,137,243, 86,135, 96,132, 57,213,151, 66, 95, - 90,213,144,138,227,141, 1, 66, 38,237, 9,149,102,254, 3,229,101,114,210,150, - 97,228, 10,160,186, 54,249,213, 8,207,183,115,198, 39, 98,166,251,104, 73,255, - 35,152,208,120, 86,160,164,160,142,172, 81,128, 62, 22, 31,132,246,125,193, 50, - 97, 27, 58,191,183,106, 95,134,157, 40, 12,201, 55,184,146,123,168,160,239,165, - 35,242, 73, 52,121,244, 95, 74, 55, 7,232,253,192,244,137,179, 91, 10,174, 39, - 0, 36,185, 73, 2,199, 40, 29,144, 84,224,100, 4,135,120,208,104, 3, 82,154, -137,148, 80, 55,244, 67,115, 51, 59, 80, 40,104, 87,144, 18, 32,223, 18,191,114, -191, 1,136, 67,123, 46,243, 36, 46, 69, 35, 6, 14,145,121,146, 2,240, 2,174, -121, 26,127, 12, 90, 93,101,172,151,104, 72, 12,123, 60, 64,178,223,239, 88, 47, -131, 70,105,105,252,158,128, 60, 18, 43,220,234,215, 84,126,224,118,161,224,238, - 36, 96,183, 79,225,124, 71,143, 29,169,177,178,255, 15,141,163,209,246,139,212, -143, 52,168, 69,202,160, 30,247,191,122, 40, 42, 96,151,182, 56,173,177,110,251, - 16,241,105,179,215,181,202, 20,154,198,131,118,147, 16,143, 61, 53,222,200,127, - 69, 9,182,239, 52,173,119,235,185,153,214, 96, 36,222, 17, 72,224, 27,170, 57, - 99,126,128,211, 70, 81,241, 11, 82, 78,152,220,117,146,171, 44,157,129,242,124, -179, 33, 85,194,253,154, 54, 87,221,137,152, 61,223,130, 14,189,212,159,246,178, -135,185, 18, 59,128,103, 2, 94, 45,201,134,121, 67,114,152, 26,237,173,141, 39, -192,123,158, 13, 42,129,131, 11, 66,143, 41,121, 42, 6,100,162,156, 74,200, 12, - 69,245, 77,121,141,219,228, 30, 86, 73,164, 90,156,112,145,166,172, 99,218,108, -232, 59, 7,151, 94, 89,242,250, 25,215,228,225, 95, 22,248,126,179,248,115,230, -194, 54,124,166,176, 62, 79, 23,129, 67, 86, 2,228, 73, 15, 99, 7,152,237,106, -115, 1, 26,195,106, 65,224,210,206, 3, 38,122, 12,228, 71, 96, 26,206,161,244, -235,225,200,218,129, 2, 9,191,202,101,136, 80, 31, 52,134, 36, 39,223,116,201, -239,100, 49, 96,217,230,124, 45,182, 6, 28, 75, 99,133, 81, 83,191,216, 35, 44, - 92, 30,144,192,218,195, 2,232,164, 5,171, 81, 81,138, 74, 72,115, 29, 51,241, - 24,178,223,134, 19, 51,183,171,146,113,109,114,132,176, 57, 29, 0,243,244, 73, - 74, 55, 66,140,207,105,114,201,168, 47, 43, 68,245,122, 97, 89,228,218,132,182, - 39,249,166, 45,165,227, 45,177,121, 57,111,140, 79,207, 28,251,232,152,194,103, - 27,107, 4, 50, 38,149,242,119,157,166, 54,185,150, 37,114,172,196,111,234,154, -198,216,146,179,123,126,165, 79, 73, 58, 72,176,183,218,176,119,197, 25,242,160, - 84, 53,147,114, 42, 13,152, 70, 3, 88, 33,186,216, 25, 91, 22,212, 63, 4,143, - 98,242,243,195,147,205,171,113, 41, 30, 5,144,109,173,123, 12,225,210, 80, 44, -169, 63, 30,237,216,240,217,213,166, 35,239,168,186,231,143, 42, 80,108,235,120, -254,210,204,105,180,130,162,195,106,156, 87,188,174,144, 47,153, 68,154, 7, 83, -150, 49, 1, 13, 44, 57,198,166, 33,186,246, 11, 80,232, 24, 12,247, 33,123,135, - 77,121,152,212,255,109, 24, 16, 91,139,226,158,248, 41, 35,141,128, 73,159, 32, - 30,212, 51,167,193,252, 69, 24, 4, 93, 19,168,123,146, 21,182, 53,242, 19,129, - 97,245, 90,209, 33, 83,105, 47, 77,167, 30, 0,232,166,185,171,193, 84, 90,145, - 50, 72,184,225,163, 65,177, 14, 86,201, 1, 40,165, 1, 99, -} ; +// ../Source/JitKernels/GB_jit_kernel_AxB_dot2n.c: +uint8_t GB_JITpackage_3 [328] = { + 40,181, 47,253, 96,200, 1,245, 9, 0,166,147, 65, 33, 0,145, 55,238,114, 98, +128,176, 60, 70,153,234,234,188,106,113,127,144, 94,234, 79,122, 57, 48,107,232, + 17, 85, 85, 11, 2, 1, 2, 56, 0, 56, 0, 56, 0,119, 60, 63,141, 81,143,234, +239,236,126,231,180,171,161, 57,238,199,184, 95,130, 93, 48, 32, 1, 69,229,218, + 20,221,189,134,195, 41, 48, 42,167,109,134,248,106, 44, 38,191,212,127,193, 59, + 91,240,197, 92,146, 42, 36, 73, 1,159,197,188,203, 15, 27,208,163,229,131, 57, +131, 38, 86, 36, 10, 63,163, 31,125,206,209, 61, 86, 50,231, 36,105,253, 57, 76, +133, 9, 66, 24, 10,147, 15, 64,129, 63,104,206,124,150, 71,214, 55,227, 54, 49, +217,243,167,179, 89, 3,129,111,222,198, 69,176, 54,121,155,133,239,196,226,236, +210,184,235,225,153,189, 91,134, 97,124,177,250,144,100, 42, 74,231,135,217,153, +226,104,246,202,159, 13,166,161,169, 79,167,106, 33,154,160, 31,193,239,180, 78, +233,181,118,106,194, 7, 93,119, 85,149,164,195, 87, 99, 2, 47,117,186, 95, 3, +192,232,219,143,193, 23, 3,248,135, 41, 9,150,217,186,186, 45,210,105,150,243, +176,183,105,216,126,153,197, 15, 3,238,238,149, 83, 19, 30, 18, 0, 69, 9,174, + 67, 20,111,168, 89,190, 6, 42, 65, 72, 3,228,117, 70, 76, 22, 7, 9,200,103, +145, 12, 29, 98,146, 67, 48,152, 52,127,158,153,162, 45, 99,171,117,140, 65, 92, + 81,162,110,231, 64, 20, 5,110, +} ; + +// ../Source/JitKernels/GB_jit_kernel_AxB_dot3.c: +uint8_t GB_JITpackage_4 [320] = { + 40,181, 47,253, 96,178, 1,181, 9, 0, 22,211, 63, 33, 0,243, 54,238, 78,242, + 32,143,127,186, 97, 87,225,121,226,111,118, 64,255, 82, 11,251,158, 88,218,228, + 16, 85, 85, 11, 2, 1, 2, 54, 0, 55, 0, 53, 0, 96,137, 53,102,189,169,113, +201,253,206, 39, 71, 63, 18,220, 47,186,219,130,160, 50, 26,147,197,229,154,204, +184,119,144,136, 91,222,132,216,228,119,173,167,222,240, 71,253,156,187,243,230, + 90,204, 41,138, 74, 20, 21,121,143,255, 65,164, 55,199,247,114, 38, 93, 28,149, +233,251,142,126,243, 55, 55, 55,168,201,155,135, 97,245, 8, 81, 25, 42, 41,113, + 48, 84, 78,240, 6, 30,153,185,131, 29, 62, 85,255,128,155, 20,115,231, 17, 87, + 51, 27,219, 67,226, 89,181, 90,134,221,107, 49, 74,245,151, 31, 80,147,110, 58, +184, 73,140,191,198, 62,241,111,196,126,121,180,189,243, 35,117,233,223,115, 76, + 44,186, 69, 13, 83, 37, 61,232,225,178,186,165, 63,103, 2,148,134,168,194, 9, + 28,247,184, 46, 11,119,173,198, 6, 62,234,115,191, 6,120, 19,222, 47, 94,128, +255,119,134,222,152, 3,238,238, 20, 68, 21, 78, 24,184,214,105, 91,229, 34, 58, +205,113,237,165,222,236, 65, 9, 18, 0, 69, 9, 38, 33,136, 16,128, 5, 32,164, +113,122,157, 22,147,113, 72, 10,144,204, 12,240,127, 14,104, 45,227,236, 22, 38, + 77,155,103,166,104,187,216,106,221, 98,144, 35,106, 85,233,196,136,162,192, 13, -// ../Source/Template/GB_AxB_dot3_phase1_template.c: -uint8_t GB_JITpackage_4 [1489] = { - 40,181, 47,253, 96, 11, 20, 61, 46, 0,170, 66, 28, 12, 40,208, 84,113, 14,228, -122,244,178,178, 92, 31, 73,141, 47,109,220,128, 0,166,144,247, 39, 86, 19,239, - 40, 36, 35, 56,238, 50,166,194,139, 92,205,192, 22, 79, 16,184, 0,184, 0,187, - 0,191,178,255,127, 50, 50,153, 88, 66, 22,114,151, 50, 22,194,159, 44,119, 17, -138, 62,146,240,214, 50,134,193, 59,229, 45,219,222, 60,191,133, 11,225,174,170, - 66, 92,155,207,230,118,153, 59,111,247, 88,199,249,225, 70,246,163,200,181,187, -152, 92, 44, 7, 21,222, 48, 72,223, 25, 42,183,214, 87,114, 38, 81, 97, 43, 25, -107,138,138,198,195,133, 37, 99, 81,101,203,156,219,187,129,154,243, 24,223, 39, -132,131,203, 65,101, 1,115, 57, 56, 5,147, 62,217, 22,193,135, 91,222, 71,219, -157, 92,123, 62,117, 30, 69,181, 81, 88, 33, 24,216, 86, 72, 59,124,187,235, 76, - 42,130,129,119,234, 14, 86,131,230,153,215,169,253,182,237, 40, 66, 9,207,192, - 23, 70,202,241,189, 48,108,225, 70, 47,132, 59,179,171, 10,121, 87, 5,113, 3, -131, 73,197,192, 32, 22,229, 15, 27, 79,197,198,218, 80, 92, 88, 22,154,203, 99, - 81,113, 61, 84,188,139,226,113, 48, 60, 26, 12,142,167,115,109, 58,156,119,209, -185, 38, 58,207,146,158,113,118,173, 3,172,103, 18, 94,179,221,208,228, 65, 53, -216,222,238,101,223,198, 8,207,183,163,220,196, 74,142,177,232, 28, 65,178,181, -121,198, 58,218,195,203,121,203, 23, 86,166,243,240, 35, 20,233, 26, 5, 83, 57, - 69, 73, 23,203,214, 30,231,252,252, 90, 24, 51,150, 14,142, 95,219, 20,158, 83, -191,182,182, 22,250,189, 18, 20,234,188,180, 43,102, 57,251,101,208, 63,153,140, - 20, 20, 88,249,134,103,126, 57, 37, 81, 48, 19,214, 28,148,163, 76,226,216,101, -188, 97,246, 20, 41,217, 12,114,221,238,197,117, 50,114,140,176, 66,122,202,205, - 67, 14, 4, 43, 13,200, 60,235, 27,178, 3,153, 17, 98, 94,112, 10, 9,201, 39, - 18, 18,233,178,185,219, 38, 24,160,116, 75,154, 95,172,203,102,165,191,146,177, - 55,170, 87,242, 55, 12,242,188, 15,213, 9,194, 23,114,125, 45, 87,168,139, 72, -143, 15, 69, 58,193, 61, 98,236, 52, 10,185, 14, 76, 65,230, 29, 30, 28,167,213, -169, 71,129,201,222,254, 84, 83, 72,111, 92,180,250,132,177, 72,126, 62,109,149, -116,218,133,230,140,215, 53,221, 10,175,189, 42,186, 89,184,125,195,161, 82,117, -207, 24,108,191,226,108, 46, 54, 34,174,142,196, 85, 81, 60, 38, 6,169,146, 28, - 69,220, 39,106,125,202, 36, 95, 22,253,100, 81,233, 28, 11,143,102,147,113,121, - 54, 16, 90,103,146, 18,250,180,105,164,107,174,136, 10,162, 50, 29,109,243,219, -157,159, 87,222,110, 51,219,200,153,123, 92, 43, 39,102,207, 53,147, 73, 73, 9, -219,142,230, 56,125,167,222, 36,189, 66,194,146,160, 10,222,107,248,250,189,247, - 30,124,211,123,175,173, 83,111, 10,139,180,229, 66, 44,233,158,206,211,216,219, - 15, 97,188,101,204,242, 83,126,138,176,118, 23,235,234,181, 0, 70, 48,167,222, - 97, 81, 14, 77,195, 45,250,204,185, 63,220, 20, 57,180, 16, 4,163,118, 91,118, -183, 28,130,247, 49,246,181,191,253,219,125, 62,205, 27, 35,131,220,194,107, 62, -237,167,209,165, 28,143, 92, 78, 89, 46,148,213,103, 89,241, 91,160,173,208,182, -136,235,212,248, 83, 33, 83, 10,185,181,190,112,202,219,175, 22, 19,228,130, 42, -115,135,147, 54,191, 97, 21,178,253,168, 66,217,159,195,115,237,238,131,235,179, -216, 77, 44,194,238, 98,240,156, 5,129, 40,168, 97, 41, 67,200,144,140,136,136, - 36, 73, 82,104, 12, 97, 12,130,144,146, 92, 66, 59,146,136, 88,148,101, 80, 2, -203, 24, 35,112, 6, 9,100, 36, 16, 17,161, 64, 36, 16, 9, 10,139,226, 28, 25, - 21, 23, 1, 38,122,247,169,175,241,182, 13,148, 7,206,242,195, 79,228,144,202, - 40, 79, 90,220,184, 9,229,109,163,182,139, 22,253, 43,215, 8,146,122,113,242, -193,169,170,204,194,132,133, 26, 16,117,151, 6,211,163,210, 97,133,191,223, 11, -128,147,221, 87,204,244,151, 69, 2, 24,183,233,113, 81,159,252, 92, 59,204,218, - 1,119, 30,121, 88,168, 29, 84, 84,235, 27,228,138,250, 29, 99, 6,124, 78,166, -200,243,162, 6, 17, 2, 79, 72,223, 6,129,183,186, 4,136,210, 50,170,240, 14, - 33,124, 40,209, 71,216, 36, 77, 82, 19,165, 85, 52,154, 12,177, 65,156,162, 10, - 25,146, 63, 43,146, 99,222,156, 13,255, 83,197,250, 49, 91,217,247,167,153,136, - 62,201,207, 9,162, 90,186,214, 38,215, 71,136,209, 50, 7,171,229,195,208,227, - 83, 83,122,208,203,144,241, 31, 14, 83, 36, 22,106, 16,193, 77,116, 12,179, 83, - 90,160,210,138,210,248, 6,221, 55, 49,230,184, 14,252,121,239, 3, 44,172,160, - 2,192,223,233,212,235, 54, 24, 1,118,216,203,106,202, 89, 84,202, 89,196, 63, - 58,114,145,143, 8,122,198, 62, 13, 33, 66,110,151,122, 2,247, 17,145,240, 60, - 61, 38, 0,236, 23,162,135, 20, 60, 84,101,209, 81,244,192, 53, 68,201,247,168, -149, 26,103,214,206, 51, 79,129, 72,179,146, 72,211, 52,155,222,172,215,188,187, -248, 11, 54, 72,121, 34,117, 77,162, 21,112,232,167, 22,142, 22, 33,190,225, 37, -208, 26,214, 20,118,214,188, 76, 44,124,157,194, 88, 78,159, 79,190, 14,217,173, -189,249,230,135,223, 69,170,136, 43, 18, 65,215,246, 73, 4,239,139, 49, 99,155, -130, 62,229, 29,131, 4,234,105,157, 66, 38, 68, 86,114, 70, 5, 67,152,123, 20, - 10,127,130, 56, 8,224, 81, 2, 54, 57,238,124,244, 98, 86,177,182,232, 25,190, -118, 59, 81,198,200,178,186,169,217,203, 69, 43,236,211, 49, 70,250,188, 8,201, - 29,166,200, 84, 79,252,160,204, 19,241, 27, 1, 24,194, 46,194, 58,250, 20, 75, - 67,252,128, 8, 13,173,211, 77, 32,135,208, 24, 9, 40,212, 98,225,198, 35,151, - 63,194, 91, 74,135,200,236, 81,226,225,112,221,135,110,174, 0,207, 62,104, 47, -251,182,245, 10,173, 40, 35, 49,126,194,129,106,136,120,130,166,176, 15, 49,236, -233,171,115,111,135,167,199, 40,207,219,193,119,128, 88, 43,218, 65,210,159,234, - 55,117, 60, 52,209,253,185, 39,187,107, 28,102,203,115, 0,188, 21,124, 49,181, - 72,194,223, 61, 6,179,228,118,233,176, 81,167,191,183,198,132,143,255,164, 87, -107,217,210,170,192,227,139,125,151,239,191,218,207, 63,254, 45,175, 26,145,224, -239, 24, 87, 96, 64, 58, 53,110,149,229, 97,244, 73,221, 95, 61, 94, 71, 1,210, -231,248,171,182, 86, 24, 62,125, 39,191,244,176, 13,202, 79, 61, 44, 49, 60,121, - 65,208,212,240, 19,253,130, 70,130,110,154,255,103, 38, 45,141, 15,224,153,183, -100,170,163,126, 73,169, 35, 96, 2, } ; -// ../Source/Template/GB_AxB_dot3_template.c: -uint8_t GB_JITpackage_5 [1639] = { - 40,181, 47,253, 96,151, 25,237, 50, 0,150, 58,177, 40,192, 84,117, 14,228, 92, -191,111,207,225, 76, 30,190,102,206, 71,161,139, 8,157,240,134,216, 94, 63,253, -231,100, 42, 39, 78, 73, 24, 48, 77,130, 64, 6,225, 46,163, 0,159, 0,172, 0, -191,155,223,227, 91,169,101,240,187,174,111,245,163,175,106,151,183,125,238,161, - 98, 81, 96, 61,232, 12,202, 95,159, 84,222,154, 28, 88, 18, 42,204,105,242,139, -191,128,220, 91, 95,202,115, 83, 97, 75, 89,107, 78, 37, 3,162, 99,153,252, 1, -178,101,207,237,229, 60,218,243,174,139,167, 20, 18, 14, 18, 42, 13, 8, 7, 9, -159, 52,233,148,237, 15, 9,113, 75,252,136,187,213,235,207, 41, 44,114, 42,238, -147,160,196, 5,227,219, 33, 54, 1,249, 27,113, 6,108, 65,249,217,219,190,117, - 6,153, 3, 57,101,175, 22,206, 10,126,191,236,143, 87, 5, 4, 49,243,112, 57, - 88,191,240,149,221,231,241,205, 20,110,157, 89, 21, 18,179, 74,226, 6, 6,147, -138,129, 65,159, 76,123,227,249,173, 5, 38,209, 69,154, 68,212, 69,178, 50, 14, -180,111,193,122, 53,254,120,215,201,243, 13,109,115,247, 35,208, 39, 13,235, 38, -240,108, 82,182,190,204,250,100,135,177,116,108, 52,231,243,204,175, 5,123, 19, -253,102, 11, 12, 96,189, 95,131,154,229,249, 51,119,127,217,227, 20,138, 21, 89, -121,233, 29, 48, 63,120, 70,154, 44, 55,200,171, 34,244, 66,145,104,109, 6, 63, -225,248,132, 64,105,237, 73, 58,154, 18,119,225,100, 78,179,159,168,100,167,100, -144,187,153, 23,210,237, 29,119,242,251,165,231, 33,193, 79, 0,243,217,247,151, -246,255, 79, 38, 35,147,137,165,147, 96, 8, 94, 59, 57,236,228,199, 25,244,145, -244, 2,116,164,146,185, 8, 13,129, 38, 18,146, 75,148,187,143, 23, 60,212,117, -225, 63,233,133, 54,158,121, 55,112, 42,116,202,222, 6, 85, 84, 72,107,100, 95, -117,138,130, 78,113,149,244, 47, 20,213,218,101, 25, 85,113, 86,114,215,120,168, - 84, 30,180,109,248, 73,123,251,197,246, 43,143,166,163, 49,145, 97,161,202, 98, -249, 74, 78, 9, 37,221, 98,115,109, 48, 20,164,111, 71, 43, 38,226, 35,153,139, -164,111, 8,148, 99,222, 33,218,248,103, 93, 80, 94,187,245,164,147,232, 20,103, - 73,183,178, 9,144,185,219,204,182, 99,204, 67,215,210,170, 93, 63,132,230, 99, -161,185, 52,156,206,117, 97,101,159, 11,139, 12,194, 34,102,156,232,193,248, 88, - 24,158, 15,150,105, 48, 79,236, 96, 89, 5, 22, 47, 41,147,170,226,112, 48, 34, - 58,241,250,108, 42,158, 52, 20,160, 80,176, 15,182,201,208, 0, 4,104,150, 44, -224, 60,195, 78,163,205,182,227, 67,140, 45, 99,199, 24, 99,148,145,138, 49, 78, - 6, 89,144,234, 77, 19,139,180,245, 78,133, 92,210, 63, 88,180,172,189,125,145, -198,156, 54,153, 41,181, 53,192, 86, 47, 97,177,241,108, 46, 13,166,241,100,158, - 77,196,224,116,164,107, 60,145, 99,105, 32, 50,138,141,197,182,147,219, 51,183, -215,118, 8,103,161,214,222,213, 10, 42, 32,152, 58, 62, 92, 14, 86,165, 2, 53, -109, 76, 21, 99,228,144,246,237,108, 56, 17,150,245,109,188,175,150, 45, 89, 20, -138,131,149,161,220,143,181, 16, 62, 53,186,159,199,117,190,222,139,192, 10,242, - 26,129,149,168,209, 45, 67, 35, 35, 34, 41, 40, 40, 40, 72,161, 49, 97, 12, 98, - 20, 99,218, 65,234, 1, 34, 81,164, 68, 65, 10, 81,132, 48,162, 8, 39, 34, 66, - 34, 18, 72, 36,129,144, 20,148,233, 6,152, 45,113,181,212, 21,236, 92, 61, 18, -117,225, 35, 69, 76,179,249,106,224,212,106,168, 53,112, 81,143,255,234,243, 60, - 86, 76,132,182, 5,114, 82,218, 51,241,201,246,236, 63, 37, 84, 89, 0, 1,102, - 49,141,226,142,161,242,176,183,201, 67,220,217, 13,173,176,133, 43,241,146,114, - 62,201, 29,161, 11,112,163,123,150,232,128, 57, 20,239,103,201, 56,159,126,135, - 48,173,173, 44,175,177,252,158, 17, 79, 51, 21,245, 69,241, 81,125, 8,141,182, - 30,235,236,105, 43, 3,141, 36, 3, 52, 40,233,143,134,168, 41,152,132,151,144, -146,243, 68, 59, 12,222,167,255,148,136,179,132,191, 58,243, 58, 82, 22,246,158, -114,239,148,150,183,247, 41,217, 77, 63,207,201,197,228, 41,137,253,133,157,218, -233,203,216,131, 71,128,202,246,177,119,166, 69, 3,170,121,250,201,170, 34, 79, -167,234,229,146,154,166,236, 88, 34,223,253, 39,208,254, 44,150,186,210,144, 46, - 78, 31,139, 98,148,118,203,168,198,202, 81, 33, 81, 58, 69, 83, 14, 23,165, 36, - 33,214,220,246, 15, 37,220, 39, 47,138,226, 97, 3,102, 82,128,246, 81,245,156, -129,148,141,245, 52, 94,248,215, 91, 91, 29,198, 26,125, 51,246, 25,135,247,146, -140,172,120,140,180,180,144,155, 74,237,146,103,240,216, 2, 73,238, 39, 7, 53, -183,132, 87,221, 9,208, 3, 50,239,230, 42,123, 84,171,170,211,221,239,128, 2, -232,208,128, 58, 29, 12,169, 44, 36, 38, 26,243,194,168, 82,172,189,154,232,184, -253,119,196,127,153,178,255,156,202,224, 40, 80, 82, 1, 17,127,148, 83,250, 24, -146, 69,137,170, 55, 92,202, 94, 88,128,185,172,137,111, 34, 95,180,186, 24,123, -202,250,162,111,241,202,128,137,168, 42,121, 64,214,187, 90,126, 95,226,134,231, -227,238,109, 78,198, 53, 59, 3, 76, 20, 44,192, 37,188, 88, 98,129,170, 46,206, - 77, 17,190,133, 58,159,163, 51,113,128, 74,214, 80, 26,228, 2, 0,201,143,132, - 24,148,139,141, 67, 29, 20,202,174,170,154,169,108, 48,235, 91,230,245, 50,130, - 18,219, 39,195, 55,114, 6, 56,141,195,131,134,143, 45, 15,159,135,145,223, 84, -162, 12, 97, 51,234, 60,185,198,155,161, 33,222, 74, 29,156,137,189, 18,163,174, -160,170, 41,118, 20,143, 39,160,131,132,121, 3, 4, 78, 58, 30,123,162,176, 0, - 50, 50,204,221, 43, 49, 89,227, 96,168, 17,187, 28,232, 86,150, 46,172,234, 55, - 20, 62, 75, 6,203, 84,142, 31,182,103,124, 35, 54, 81, 79, 89, 67,200,113,224, - 34,131, 11,209,249, 56,112,224, 86, 91,163,119, 53, 6, 2, 75, 82,128, 13,224, -225,140, 2, 57,128,227, 86,139,195,167,120,144,225,168, 12,165,208,154, 21,144, - 7, 73,248, 45,135, 34, 68, 98,232,229,206,208, 65, 8,150,224, 2, 4, 50, 49, -145, 34,118,211,168,101,244, 85,197,127, 58, 37, 99,138,212,179,164, 75,150,111, - 76, 35, 12, 54, 9,189, 34,148,163,100, 45, 80, 2,183,105, 20,201,228, 83,107, - 65,120, 91, 97,106,220, 2,170, 44, 4,189, 1, 56,151,176,116,134,125,227, 1, -245, 98, 45,192, 14, 6, 20, 48,168,174,157, 42,108,209, 84, 67,208, 68, 37,179, - 71, 57, 29, 58, 94,215,131, 12,174,142, 22,136, 49,222,204, 21,139, 75,246,127, -124, 9,207,165, 89,165,174, 86,177, 45,103, 23,222, 57, 4, 50, 25,102, 89,177, -123,145,225,235, 15,204,210,227,188,249,134,182, 59, 56, 83,102,205,155, 63, 25, -177,149,186,218,124,204, 93,152, 87,224, 50, 90,207, 37,208,127,132, 23,199, 15, -149,235, 86,226,184,191, 59,250,254, 47, 21,120, 81, 54, 59, 45, 84,134, 12,122, -148,151, 31,100,144,139, 84,237, 73,232, 38,198, 83, 77,180,162,136, 71,125, 15, -108,147, 63, 39,126,208, 36, 44,249, 56,177,106,235,238,159,151,110, 10, 48,244, -183, 87,234,158,134,105,107,177, 70, 83, 36, 92, 38, 79,129,192, 5,204,135,110, -154,248, 15, 38,121, 85,115, 34,191,119, 30,210,126, 0,128, 74,105,214, 19, +// ../Source/JitKernels/GB_jit_kernel_AxB_dot4.c: +uint8_t GB_JITpackage_5 [386] = { + 40,181, 47,253, 96,116, 2,197, 11, 0,182,149, 71, 33, 0,213, 54, 86,202,107, + 21, 76,190,213,101,130,244,224,112,163, 64,194,227,210,238, 57,128,113,138,226, +140,252,255,223,186, 4, 16, 61, 0, 62, 0, 63, 0,223, 30,195,204,249,180,209, +172,126,160, 78, 99,140, 39,117, 7,218,126,231,114,155,222,248,237, 15,221,107, + 65, 64, 29, 6,136,235, 17,187,115, 19,138, 51,110,165,216,163,103,171,136, 90, +240, 69,253, 31,187,179,199, 86,204, 45,107, 82,150, 21,163, 6, 57, 99, 30,170, +139,250,239,118, 32,234, 12,253, 25,231, 45,190, 55,161,158, 20,255,230,140,218, + 68, 50,149,247, 33,253,228,107, 78,238,175,147, 53, 7, 65,234, 83,226, 58, 92, +212, 2,113,184,156,112, 7, 62,145, 57,212, 69,188,162, 62, 10, 29, 7, 4,187, +235,251, 59,110, 89, 18,203,132,187,104, 52,252, 30,206, 1,119,247, 73,154, 13, + 39, 12, 28,195, 97,180,140, 85,112,152,136,173, 27,106, 51,201, 69,147, 84, 60, +163, 21,147, 97,214, 86,108, 78, 32, 88, 98, 39,179, 67,124,218,183,244, 2,115, +150,102,195, 9,219, 38,129, 64, 52,155,173, 26, 27,184,168,203,253, 26,112,171, +110, 87, 12,224,239,149,224, 21, 39,206,158,248,129, 59,134, 13,127, 80,118, 20, +186,195,177, 29,233, 49,252,208,254,107, 76,138, 99,222, 87, 44,177,127,110, 33, + 32, 32,130, 71, 93,121,165,160, 55,131, 96, 46, 5,125,147,153,180,131,209, 3, +160,105,176, 29,240, 21,168, 2,140,129,250, 49,176,146,142, 63,137,130,234,167, + 45, 20, 98,163,109, 91,247,253, 0, 40,141,185,156, 22,203,184, 93, 1,226,137, +227,155,133,179, 17, 17, 38, 77,205, 51,211,219, 42, 88,173, 83, 66, 78,188,190, +244, 98, 79, 81, 48, 4, } ; -// ../Source/Template/GB_AxB_dot4_cij.c: -uint8_t GB_JITpackage_6 [1108] = { - 40,181, 47,253, 96,196, 19, 85, 34, 0,198,108,139, 33,208, 92, 23, 3,152,106, -251,250,230, 58,198,210,204,165, 70,110, 0,234,204,179,160, 25, 68, 82,166,126, - 25,165, 30,184,224, 2, 2,130, 0,121, 0,134, 0,249,188,190,190,247,180,196, - 97, 97,176,169,177,162,222,187,108,111,121, 55,182,100,104,176, 26,219,241,106, - 12,163,138,231, 64,218, 86,182,218,126,174,119, 10,117, 63, 55, 77,239, 28, 99, -145, 88, 24, 30,138,196,226,131,113, 59,167,111,171, 86,126,240, 14, 75,237,147, -117, 67,231, 64,158,230, 75,161, 53, 99, 58,171,115, 69, 65,118,223, 20,164,145, -103,106, 91,214,159,207,178,219, 62,130, 96,112,185,110,243, 62, 41,124,160,226, -238, 6,190, 27, 15,170, 59,138,141,125,146,226,247,242,196, 15,115, 4, 66, 51, - 32, 16, 1,226,183,189,188,128, 61,166,228,153,209, 91, 19,133,175,126,125,247, - 1,136,158,219, 14, 54, 66, 22,140,197, 67, 10,137,160, 9, 68, 75,127,129,223, - 53,242,157,235,214, 98,225, 32,250, 45, 54, 28, 27,223,111,141,207,241, 96,241, - 73,186, 48, 7,219,247,147,171,238,248,109,245,223,133,194, 12,190,103,165,227, - 88, 15,195,245,101,122,155,218,174,211, 52,235,187,206,230,116,167,229,182,168, -255,191,166,201, 52, 13, 60,137,235, 57,180,178,246, 61,153,102, 90,126,231,178, - 69, 97,169, 7,117,191,203,132, 64,159,240, 34,114,194, 77,195,209,112,160, 42, -235,114,219,246,210,172, 54,143, 11,198, 72,227,217,128, 98, 6,243,178, 38,202, - 58,199,131, 23, 4,162, 96,205, 83,122,110,215,211, 44, 49,225,183, 96, 44, 24, - 14,133, 67,113,185,104,157,158,131, 64, 64, 34,141,199,180,179,129, 70,241, 74, - 60,240,189,125, 16,121, 12,223,250, 59,126,176,109,159,124,167, 40,124,243,101, - 89,253, 1,121, 79,124,178,126, 92,173,121,158,167,237, 50, 12, 39,252,132, 27, - 11, 72,252,132,158, 71,252,116, 70, 26, 12,226, 26,141,232, 34,130,194,154, 54, -211, 34,147,163,240,221,186,142, 22,133,193,114,205,251,158,114,221,110, 90,156, -237,234, 54,219, 20, 73,218, 86,213,147,194,200, 51, 24, 40,213,156,173,170,205, - 39, 83,233,167, 47,223, 82,211,202, 75,226,213,170,240,161,231,208,115,171,237, -161, 78,197, 84, 40, 92,114,244,145,123, 40,186, 85,194, 14,167,179, 17, 57,157, - 48, 4,138, 42,150,143, 88,217,132, 32,209,219, 96,188,143,199,234,145,167, 48, -144,216,138,213, 28,121,171,144, 5,116,185,116, 10, 55,121,104,233,215, 91, 37, - 78,193,247,176,188,177,253,214,138, 85,128,228,168,193,157, 51, 52, 35, 51, 19, - 36, 5, 41,165, 49, 64, 68, 32,198, 20, 86,231, 82,248, 64,198,210, 12, 50,142, - 16, 68,136,128, 8,145,184, 33,113, 50,129, 80, 5, 66,230, 1, 0,145,139, 68, -186, 52, 72, 20, 26,185, 55, 44,252,103,100, 89,207, 86,107, 69, 26, 2,169, 70, -210, 14, 0,178,165, 31, 77,145,145,162,176, 19,101, 79,180,251, 19,179, 91, 54, -231, 87,136,247,178, 48, 6,136,236, 42,121,139, 28,150,193, 21, 11,119,195,161, - 30, 47,161, 67,122,133,138,125, 21,218,223,126,234,130, 95, 30,204, 86,255, 57, - 20,233,109,241, 11,245, 17, 48,148,177,215, 24,129,184, 36,142, 20,245,148, 33, - 45, 28,209, 71, 88,201, 77,106,136, 2, 32,107, 65,210, 48, 43, 9,237,100,192, - 60, 57,164, 88,243,167, 78, 24,129, 23, 51, 33, 5,208,241,170,135,111, 21,238, - 80, 25, 9,132,123,207, 7, 6,163, 98,183,246, 97,181, 27,230,217,246, 46, 65, - 65, 32,112,210,134,120,176,165, 74,202, 10,171,117,164, 82,185, 65,101, 36,171, -248,111, 87, 54,172,103, 98, 88, 21,222, 25,209, 23,249,151, 68,157, 10, 38, 98, - 73,128, 24,126,245,165, 8, 64, 72,218, 87,210, 26, 71,134,171,189,170, 71, 11, -182, 5,195,140, 67,191,147,177, 55, 47,209,198,180,254,141,142, 30,148, 18,111, - 88,179, 93, 41,128, 22, 78, 62,149,176,127,217, 1,215,116,157,150, 11,226,101, -250,184,250,124,174, 2,236,191,119,154,110,157,180,151,198, 79, 72, 27, 23, 12, -173, 39,227, 47,138, 1,150, 64, 58, 44,139,147,120, 61, 66,174,224, 24,111,101, -166,118, 34,102,143, 51, 44, 14,174,185, 86,161,137,213,244, 57, 33, 90, 84,251, -114,249,236,102,211, 59,208,193, 10,213,227,225,123, 28,177, 8,238,181,178,108, -154,202, 30,120,253, 8,188, 55, 56, 64, 59,162,217, 12, 33, 92,198,245,250,165, - 50,241,127,115,124, 66, 7,234, 6,173, 74,180, 79,212,173,204,159, 75, 53,156, - 29, 77, 74,144, 30, 65, 19, 83,185,245, 14,200,206, 30, 27, 27,107, 72,142,130, - 18, 34,103, 1, 28, 79,101, 1,203, 82, 60,112,168,225, 4, 5, 72, 33,234,197, - 72, 23, 78,167,239, 59,178,177, 64,137,188, 69, 23, 3, 66, 36,102,170,154,174, - 10,127,231,140, 72, 30, 32,238,147,254, 55,201,165,158, 69,225,228,252, 56, 35, -158, 80, 15,238,199, 53, 25, 71, 72,185,105,190, 63, 51,105,202,137,251, 4, 54, - 12,233,176, 70, 41, 77, 2, 60, +// ../Source/JitKernels/GB_jit_kernel_AxB_saxbit.c: +uint8_t GB_JITpackage_6 [377] = { + 40,181, 47,253, 96, 70, 2,125, 11, 0,214,213, 70, 33, 32,179, 27, 83, 56,173, +253,220,102,234,232,185,216,213, 22,152, 64, 2, 96,167, 25, 44,241, 51,167,202, +226, 50, 32, 4, 7, 0, 2, 59, 0, 62, 0, 64, 0, 30, 56,239, 35,225,248, 78, +112,243,252,225, 22,239,127,142,219,235,198, 62,238,217,215,211,117,168,130,159, +107,248, 53,232,111,158, 95,119,130, 78,249, 53,160,137,229, 5,178,100,117,123, +189, 35,243,115,228,245,104,138,138, 18, 69, 5, 30,157,160,213,137,235,223,125, +182,206, 65, 36,199,214,233,103, 82,198, 97,153, 56,255, 92,199,174, 53,206,222, +230,181,174,213,106,194,161, 42, 84, 18,194, 80,168,122, 64, 5, 77,192,255,153, +142,158,172, 14,121,217,243,253,165, 9,155,149, 93, 1,216, 4,114,161, 96,180, +206,185,238, 3,221,221, 81, 20, 21, 61, 16,116,229, 82,209, 44,155,188, 50,150, +204, 48,138,134, 73, 58,179,174, 74,246,144, 23, 72, 36, 70,128, 55,121,158, 21, +252, 60,203, 67, 8,188, 30,128,118, 46,172,212,126, 32, 22,166, 74,242, 49,142, +162,162, 7,219,134, 53, 26,152, 77, 94,215,222, 48,251, 5,208,216, 61,103, 93, +209, 12, 73,134,190,142,139,238,228,245,156, 39,197,114, 34,193,249,229,215, 96, +235,249, 76,109,216,117,135, 78, 77,173,147,118,246, 77, 83, 84, 30, 32, 48, 2, +162, 36,179, 30,108,160, 44,191,248, 45, 62, 0,224, 20, 10, 46, 81, 54, 29,208, + 28, 8, 68, 62,142, 16, 25,152, 17, 57, 58,232, 96, 11,222,232,182,237,247,253, + 18, 32,141,221, 15, 43, 0, 0,128, 20,101,190, 55, 88,103, 33,210,160,217,121, +102, 90, 91,136,171, 57,136, 40,155, 11, 8, 90, 3, 81, 20,184, 1, } ; -// ../Source/Template/GB_AxB_dot4_meta.c: -uint8_t GB_JITpackage_7 [1390] = { - 40,181, 47,253, 96, 73, 16, 37, 43, 0,102,186,173, 40,208,210, 56, 7,104, 33, -108,194, 55,174, 67, 96,233,196,246,146,228, 40, 58, 88, 83, 81, 40,240,111, 50, -144,140, 88,224,203,162,244,186,140, 82, 15, 13,176,188,161, 0,150, 0,168, 0, - 50,222,122,204,174,221,177,229,237, 62, 68,175, 53,157,116,187,254, 11,203,200, -121,150,217,215,248,126, 94, 71,229,181, 25, 79,234,122, 99,119,237, 81, 82,112, - 57,176,240, 38,163, 7,223, 80,185, 67,125, 39,107,150,133,237,100,217, 28, 75, -134,230,226,162,241,168,178,229,207,237,221, 60,250,115,142,131,159, 16, 14, 10, - 14, 44, 11, 6, 5, 7,167,200, 73,143,162,230, 23,248,210,118,105,215,215, 39, - 16,228, 80,155, 23,171, 68, 3,219, 26, 61, 16,223,254, 64, 18,142,251, 66,183, -253,234, 92,121, 3,249,100,175,252, 52, 90,189, 63,246,232, 84,101, 0,102, 8, -170,191, 33, 94,238,176,132, 75, 53,140, 34, 65,140,146, 56, 6, 35,177, 96, 48, - 1,245, 78,142, 28,249,218,105,209,217, 32,149,183,235,249, 47, 26,135, 52, 23, -251,246,236,251,233,227,226,104,178,149,189,210,118,174,241,212, 43,197,192,135, - 44,147,206,211,235,145,248,147, 57,179,113, 59,233,193, 82,201, 26,185, 40,237, - 38,123,202, 62,221,143,158,218,174,254,203,236, 87,203,241,172, 44,250,101, 81, - 68, 11, 87,175,196, 77,122,173,255, 98, 43,223,217,212,155,180,175,156, 95,200, - 14,148, 60,217,113,119,217,149, 39,123, 84, 26,186,198,246,251,213,232,118,185, -187, 84,223,110,131,156, 39,213,206,217,103,148,215, 70, 73,231,111, 12,169,216, - 43,221,169,210, 27, 43,123,244,221, 39, 3, 24,232, 24,103,211,249,108, 42,176, -203,162, 8,181, 64,215,218, 40,163,186,183, 45,203, 24,188, 7,139, 71,253,202, -174,215,114,173,220, 33,243,201,220, 72,254, 98, 9, 10,119,246,175,157, 84,194, - 95,246,184, 68, 50,242, 73,164,209,192,139,131, 97, 65, 81,159, 62, 68,217,228, - 20,230,212, 54, 6,189, 79, 36,248,169, 69,113,114,200,169, 54, 26, 76,229,153, - 76,168, 47,138, 92,179, 87, 48,119, 56,133,139,179,187,202,175,128,155, 15,133, -113, 96,199,178,248,108, 46, 44,194,250, 47, 34,225, 56,133,242, 38,232,125,126, - 2, 18,202, 7,245,202, 41, 61,137, 38,240, 25,130, 39, 92, 30,205,236, 16,107, - 2, 18, 73,149,177, 59,197,155, 62, 90, 78,170,132,107, 35,209,165,236,165,165, - 74,175,140,161, 0,121,225, 27, 57,175,227,139, 5,108, 23,219,152,130, 65,188, -220, 5,156,181,143,147, 83,193, 0, 94,155,202, 33,155,175,156,101,115, 54, 78, - 43,178,241,206,223,217,111,128, 56, 69,150,110,107, 92,214,213,217,104,172,142, - 53, 27,171,108, 4,233, 79,239, 40,216,224,237, 86, 85, 85,253, 20, 69, 81, 20, -137, 50, 33, 93,157, 11, 94, 0, 76,126,129, 58,158, 42,192,222, 74, 61,239,179, - 1,175,180, 86,141,229,233,120, 44, 48,141, 14,132, 16, 66, 8, 33,132, 16,194, -138, 50,249,245,217,128, 64, 16, 70, 8, 33,132, 16,194, 80,107,211,129, 82,147, -103, 56, 74, 51,182, 28,123,232, 6,244,129, 23,160, 11,104,113, 89,148, 23,187, -219,217,103,115,161, 49, 17,129, 71,168,129,189, 81, 72,102, 38, 72,146,130, 36, -141, 1,209, 12, 49,136, 90,203,138, 7, 50,177, 76, 5,147, 16, 35,202, 40, 66, -200,136,140,140, 72, 48,129,136,164, 32, 5, 37,133, 7,120,172, 69,196,159, 3, -196, 82,223,124,247,191, 34,228,188,182,241, 96, 36,173,127, 71,166,184,217,239, -151,154,180, 89,199, 79, 26,243, 82,165, 29,179,125,169,146,205,138, 41,163, 12, -159, 19,126, 99, 10,247,215, 48, 94, 69, 12, 55,153,142,110,217,181,124, 70,245, -245, 57,184, 34,182,193, 71,115, 16,213, 77, 69, 26,244,133,174,128,218,127, 64, -200,114,182, 69,127,163, 91,221,147, 74,247,172,154,101,175,241,188,168, 49, 93, - 92,135, 14, 10,208,159,113, 14,110,181, 23, 41,144, 63,217, 17,254,157, 38,182, -147,181,136,167,144,141,146,181, 20,214, 41,161, 28, 81, 89, 22,140,191,208,188, -192,159,156,245,211, 99,176, 65,140,133,107,184,122,196,186,128, 82,232,161,130, -240,231, 17, 66,226, 10, 64,157, 55, 16, 94,169,110,100, 46,206,209, 22,151,248, -143,146,137, 68, 21,141,186,179, 9, 9, 1,202, 32,205,160,217,115, 41, 94, 34, - 52,102,208, 8, 50,254,127, 49,255,176,205, 74,200,136,168,155,128, 58, 16,133, - 46,136,209, 47,108,138, 29,176,203, 25, 35, 16,110,157, 78, 6,126,217,213, 41, -204, 41,112,195, 47, 99,236,153,161,159,156,136,150,160,221,136,112, 21,252, 25, -180,157,119,172, 84, 66, 97, 65, 36,177, 11, 19,222,201,242,248, 32, 91, 12,234, -192,177, 63, 9, 22,140,239,198, 45,135, 67, 39, 62,158, 94,150,129,152,117, 14, -149,135, 84,102, 68,235,196,215, 76,249, 71,107, 27,185, 88, 65,232, 90, 49, 78, -144,168,142,254,117, 85, 15, 89, 94, 3, 40,205, 37,136, 17,216,119,161,216, 27, -153,149,215,195,161,191,213,163,142, 44, 98,217, 12,239,193,234,143,252, 35,240, -184, 8,107,183,132,233,110, 80,224,225,102, 58,132, 15, 62, 96, 85,154,126, 36, - 21,253,179, 42, 57,182,183,252,166,188,212,131,207, 95, 27,137, 59,211, 19,163, - 70, 72,120,144,183,190,247,188,162, 69, 35, 73,170,122,244,100, 37,104, 73, 80, - 54, 41,238, 71,199, 3,232, 93,178,247,180, 59,254,222, 38,255,125, 91, 34,130, -220,217,179,142, 66, 16, 93,136,224, 75, 17,115,166,129, 30,253,222, 87, 34,105, - 61,161, 70, 73,132, 96, 5,114,236,250,137,223,103, 29, 70,175,169,153, 39,232, -208,216,124, 82,218,139,205, 94,247,169,227,222,142, 39,252,249, 98,199,248,188, -161,180, 40,216, 11, 43,113, 56,193,161,193,188,225,229, 88,184,247,225, 35, 8, - 28, 7, 4,168,196, 35, 62, 53,181,107, 28,110, 9,214, 96,136,161, 63, 99, 44, - 61,125, 11,200, 3,156,138, 92, 22,251,145, 38, 33,130,156,147,131,118, 56,111, -151, 29,157, 22, 63, 66,151,150,110,115,137, 89, 60,165,193,203,124,153,138,191, -210,254, 74, 85, 80, 77, 34,197, 95,224, 11,170,215, 27,229,237, 27,160, 72,122, -122, 25,187, 22,166,116, 56, 48, 61, 71,108,154,183,218,244, 87,142,140,149,159, -119,167,232,213,173,107,233,225,114, 2, +// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy3.c: +uint8_t GB_JITpackage_7 [466] = { + 40,181, 47,253, 96, 70, 3, 69, 14, 0, 54,219, 86, 32, 0,151, 30, 27, 67,185, + 80,252, 66,160,155, 55,227,224,188,158, 88, 11,124, 1, 57,211,207,202,120,144, +103,233,255,189, 62,132, 75, 0, 77, 0, 79, 0,151, 84, 33, 94,144,110,250,108, +145,119, 55, 39, 76,105,185, 62, 96,205,145,197,235, 92,193,249,251,134, 51,230, +235,189,246,199,158,239,106,175,158, 69,157,155, 48,120, 55, 14, 61, 47,221,188, +171,231,190,176,133,132, 9, 44, 85, 77,175,146,164,248,191,252, 33,186, 47,136, + 94, 17,183,172, 88, 89, 86,219,220, 54,204, 91,103,151,204,131, 86,166,188,184, +131,158,200,210,144,174, 23,255,239,118,207, 5,162,161,128,168,254, 99, 43, 40, +125,145,255,118,119,127,207, 77,170,215,223,219,107,169, 54,144,172,192, 61, 41, +191,126,205,245,254,120,174,230, 24, 75, 39, 36, 16, 6, 68,165, 56, 24, 16, 62, +176, 2, 39,232, 95,216,121,200,214, 14,198,213,250,126,143, 91, 22,118,153,108, + 24,141,214, 61,215,221,128,187,123, 60, 69,134, 15, 4,158,217, 50, 90, 70, 19, +156,108, 35, 39,189, 54,146, 90, 48,140,134, 85,220, 34,175,140, 37, 66,183, 9, + 37, 70,192,167,240,187, 98,208,251, 77,175, 8,192,159, 11,177,253,110, 32,110, + 15,141, 22, 49,166, 34,195, 7,115, 98,143,135,102,210, 43,127, 57,220,159, 1, +118,160, 97, 25, 71,226, 40,148, 15, 30, 2,199,166, 38,179, 73,231,100,211,176, + 57,101,236, 46,247,125,160,163, 7,186,179, 72,143, 26,222, 81, 43,194,184,210, +210,237, 48,220, 81, 81,147,231,177,225, 29,245, 66,237,133, 86,127,162,187,109, + 41, 32, 48, 2, 98,160, 82,122,228,160, 44,113,161,130,112, 32,191,203, 66,253, +142,235,104, 91, 57,130, 1,113,232, 8, 16,242, 0, 50,206,168, 12,142, 3, 56, +200, 88, 56,222,140, 48, 37, 8, 6, 31, 79,135, 12,204,136,206,199,216,202, 80, + 88, 70,255,110,127,226, 75,184, 52,250,247,140, 64, 54,123,128,186, 42, 38,188, +128,132, 68,230, 35,107, 7, 77,135, 48, 19,116,132,186,134,131, 30,189, 51,131, +135,242,240, 20,189, 67, } ; -// ../Source/Template/GB_AxB_dot4_template.c: -uint8_t GB_JITpackage_8 [4767] = { - 40,181, 47,253, 96,160,183,173,148, 0,170,119, 44, 22, 45,160,172,174,115,218, - 2,183,125,243,219,143, 33,195,235,246,190, 99, 56,189,138, 94, 50,174, 94,209, - 64, 84, 37,154,162,112,183,138, 29,208,114,106,194,235,240, 58, 24, 11, 94,169, - 79, 1, 87, 1, 87, 1, 16, 38, 48,141,115,241,186,155, 1, 58,158, 29, 6,120, -165,181,178,128,134, 2,237,210,185, 76, 92, 36, 34, 20,112,180,204,131,140,199, -221,244, 90, 64,163,225,240, 73,198,217, 95,229, 43, 65,122,135, 51,161,161,104, - 24,108,226,146,217, 84, 58, 90,101,131, 97, 40,149,136,107, 89,182,247, 2,220, -133,146,155, 45, 96, 70,206, 86, 79,246, 74, 27,176,123, 18,250,246, 99, 82, 6, - 69,252,201,188,217,232,185, 8,226, 65,225,106,148,145,179, 30,174,169,237,212, - 13,233, 39, 61,181,253, 75,103, 40,234,106,217, 70,238, 50, 54,199,160,253,157, -241, 86, 10,126,125,174,241,150, 67,125, 35,215, 18,236, 43,195,239, 11, 58,156, -205, 69, 98,115,193, 40, 24, 36, 80, 24, 28, 93,170,210, 27, 43,131,244, 95,200, -113,209,222,248, 97,204,174,253,177, 61,123,238, 61,250,174,233,164,223,217,211, -249, 25,152,123,204,126,199, 55, 4, 63,202,189,155,241, 13, 8,131,245, 96, 15, - 23, 65,236,146,202,237,245,157,220, 93, 30,108, 39,115,141,121, 60,136,160, 96, -232, 56, 84,217,242,230,246,122, 48,122,115, 41,177, 83,151, 5,177, 30, 7, 42, -136,245,137,147, 78,217, 14,197,136, 51, 96, 31,121, 46,253,186,115,138,131, 97, - 50, 15, 24,171, 69,194,182, 70,144,195,183, 67, 78, 67,202,208,187,237, 83,206, -149, 61, 25,167,236,229,194,142, 86,240,143, 29,122,182, 80, 0,155, 56, 40,191, -132,111,148,224,199, 87,139, 92,218,105,153, 8,211, 50,203, 27, 26, 26,143,134, -134,119,242,175,173,237,129,226,189, 68,139, 24,128,156,146,164,123, 50,114,229, -172,235, 1,134, 34, 67,209, 22, 88, 68, 44, 41, 18, 21, 28, 44,183,144,118,175, -244,212,141, 84,122,150, 75,102, 93,214,101,160, 50, 80, 73, 72, 88, 27,158, 66, -128,128, 83,129,161,144, 92, 97,194, 84, 34,200, 9,252, 74,159,164, 27, 78,159, -145, 37,165,155,244, 9,150,137,203,230,146,169,112, 52,109,163,121,128,201, 88, - 98,204,182,143,151,252, 21, 10, 8, 29,141,114, 65,185,209,193,241,161, 90,162, - 52, 54, 53,214, 88, 99,157, 57,124,178, 12,113, 95,248,135, 2, 78, 31, 74, 34, -101, 15, 14, 91,150, 85,142,243,133,197,173,241, 90, 13, 3,221,192,128,205,225, -204,181,180,219,124,131, 22,175,157,148,171,244,130, 93, 57,203,221, 47, 99,220, -225,176, 32, 27,239,252,131,195, 33,159, 72, 83, 69,113,253,197, 57,234, 36,150, - 30,206,126,154,146,237, 34, 87,207,213,190,112, 74,150, 50,130, 31,125,252, 48, - 98, 5, 5, 56,188,187,179, 25, 98,189, 31, 85,250, 49, 87,203,178,111, 39, 67, -154, 81,249, 94,108,222,201,205,181,231,241, 71,178, 70, 25,114,125, 59,234,185, -252,221,182,167,115, 73,101, 83,209,169,144,104, 0,227,119,123,251,246,137,227, -148,255,127,163, 49,161, 49,101, 39, 64,224, 19, 6, 83, 33,113, 10, 20, 78,129, -101, 58,151, 76,146, 46, 64,139,139, 40,151, 60,193, 39,106, 91,155,173, 81,164, - 79,254, 9,164, 62,205, 73, 2, 26,148, 72,167, 98,121,165,222,187,136,139,102, - 66,147,209, 2,167, 40,233, 12, 54, 26, 7, 26, 69,131,193, 96, 16, 19, 92,215, -107,185, 46, 88,154, 3,201, 51,210, 83,153, 36,131, 72,168,198, 39, 11,192, 49, - 4,120,129, 71, 71, 16,115,192, 64, 22,247, 52,246,201, 32,149, 94,142, 67, 94, - 55,178,233, 1,147,166,132, 25,165,115, 48, 88,131,137,200, 41,201, 33,213, 39, -147,127,221,133, 54, 9,204,176,208,251, 59, 43,181,209, 50,199, 69,107,111,243, - 86,192, 98, 39,119,103,136,247,112,161,149,178,103, 80, 41,163,101,218, 77,214, - 39,230, 64,149,102,220,193, 89,194,140, 93, 57,131, 61,233, 83, 37,253,146,209, -140,212, 13, 59,227,212,118, 41,251,218, 59, 99,215,218,150,122,112, 88,189,203, - 36, 1,184,132,209,108, 38, 42,248,107,217,159, 25,116,130, 44,157, 84,118,138, - 55,236, 18,219, 73,234,249,164,125, 41,149,191,150,206,236,108, 41,104,103,172, -157,145,156,244, 49,111, 4,255,233, 19, 29, 14,101, 12,253,209, 35,138, 31,109, -246,215,176,112,144,126,180,176,169, 92, 48, 20,151, 14,166, 34,115,185, 20,225, - 27,141, 86,225, 96, 23, 74,133,161, 99, 41,105,157,225,121, 59,189, 29,243,252, -165,115, 70,206, 70,239,163,202, 33,182,146,134,249,141,130, 10,103,131, 81,112, -164, 70,133,201, 57, 20, 45,134, 61, 30, 16, 21, 64,145,235,118, 97,241, 45,155, -253, 12, 3,221,145, 57, 48,240, 20, 72,122, 71,227,112, 60, 28, 4,162, 84,104, - 17,153, 11, 71,195, 50, 22,108, 67,193,214,241,234, 17,229, 3, 12,212,169,112, - 36, 36, 52,147, 67,140,106,141,134,215,221, 28,221,254,226, 13, 67,209,147,101, - 89,150,125, 98, 75, 58,126,182, 10,140, 81,249, 59,189, 87,196, 19, 4,154,128, -113,107, 8,233,157, 77,133,195,193, 38,138,186, 2,202, 6,131,176,193, 38, 46, -153,150,185,108, 58,245,122, 44,171,199,214, 18, 41,227,187, 26, 57,219,221,214, - 82,118,174,212,227,237, 12,130,177, 31,182,152,129, 24, 40,157,101,123, 50,232, -125,183,112, 4,135, 24, 93,240, 3,163,164,191, 5, 46, 46, 30, 48, 6, 43,163, -173, 28,138,245,222,118, 53,102,128,184, 24,121,210,142,251,232, 35, 25,185,222, - 25,210, 73,169,141,163,237, 84,199,183,169, 4, 69,108, 39,142, 63, 30, 16, 25, -120, 81, 61, 28, 89,132,100,159, 13,204, 50, 14,209, 45,182, 60, 53, 35,119,127, -202, 1,129, 74,101, 35,193, 92,175,235,186,174,235,138, 68, 34,215,117, 69,174, - 43,114, 93,145, 72,196,138, 92,215, 21,177, 44,203,178, 44,235,186, 44,203,186, - 44,235,178,172,235,186,190,112, 89,150,117, 85, 19,135,163,186,197, 82, 77, 86, - 37,153,125,235, 49,218, 44,150, 10,213, 29,211,133,197, 45,213, 31, 50, 9,132, -235,235,224,123,100,208, 90, 57, 52, 29,149,117, 49,233,136, 8,140,173,140,222, - 41,208, 41,234, 3,202,192, 83, 34,236, 20,104,241,126,131, 30,192,105,161, 79, - 65,184,238, 8,142,139,178, 79, 7,201, 43,201,175, 12,227,231, 15,233, 30,206, - 82,145, 91,159, 87, 15,235, 35,169, 34, 85, 85, 77, 16, 54,154, 76, 37,163,117, - 42, 52, 90, 86, 45,210,103, 13, 47, 87,143, 18, 8,133,106,168,147,249,130,212, - 41, 52, 51, 50, 34, 73, 82,144, 52, 6,163,113, 8, 80, 72, 68, 50,145,147,134, -218, 34,235, 3,163, 49,226, 65, 80, 16, 24,194, 32, 12,129, 16,144,128, 65, 16, - 20, 65, 24, 4, 65, 17,129, 33,132, 24,129,145,134, 24, 3, 85,154, 7, 3,170, -162,222,231, 73,109,228,120, 48, 25,235,110, 59,190,122,219, 72, 85,250,129,243, - 33,124,230,130,173,216,240,166,155, 44, 38,153,103, 12, 94,138,134,184, 55,100, - 24, 21, 70,107,101,232, 47,223,138,134,140,160, 82,233,177,203,180,149, 14,205, - 72,145, 36, 2, 74,153,175,241, 86,170,124,161,104,122,185,232,137, 19,161,184, - 63, 19, 71,227, 54, 0,146, 87,160,201, 12,202, 96,227,252,218,185,166,105,254, -139,221,214,183,164, 44, 82,196,202,137,194,213,162,157,116,121,127, 90,144, 57, -245, 67,211,159, 55, 60,180,188,124,151, 6,110, 48,192,242,125, 80, 49,132,189, - 29,111, 8, 55,182,203,101, 3, 4,105, 71,101,224,173,234, 43, 90,217,109, 51, -198,196, 3, 52, 65,172,113, 79, 10,156,223, 95,129,254, 18,125, 72, 12,226, 82, - 47,199,171,118,203,152, 59, 85, 98,188, 79,230, 62,137,110,185,162, 77,167,226, - 56, 30, 52,106,156,149,255,145, 46,173,254,172,240,152,100, 81,156, 41, 29, 74, -230, 53,170, 36, 60, 36,178, 55, 0,136,200,211,182, 29,124,195,218,183, 96,170, -142,195, 59,180,166, 47, 85,210, 42,220, 2, 39,169,196, 81, 34, 28, 62, 7, 36, - 22,235,171, 59,169,241,152,214,153, 78,118,210,254,124, 76,215, 33,211,131, 52, - 95, 43, 46, 38, 64,122,237,111, 76,203, 58,194,129,248,152,161, 18,136, 22, 26, -106, 82,225, 71, 19, 27,113,218, 69, 2,234,213,114, 99,122, 56, 63,131, 12, 93, -100, 26,133, 44,240,144, 10, 65, 74,240, 24,137,191,210,116,111, 19,227, 25, 8, -216,146, 94, 38, 30, 46, 96, 72, 19, 79,103,169,210, 46,225, 26,235,233,103,107, - 54,179,109,145,197, 91, 43,133,175,230, 66,193, 84,212,218, 59,247, 37, 9,226, - 69,174,220, 67,127,182, 86,135,137,252, 58,112, 17, 50,242,164,200,231, 86,214, -205,119, 1,108,126, 75,175,171, 30, 17, 98, 91,237, 29,242,102, 65,141, 98,175, -204, 86,140,148, 49, 35,149,138,248,231,231, 70,252, 21,107,216, 38,221, 1,228, -126,246,132, 28,141, 17,185,163, 77,149, 21,146,123, 86, 84,161,152,220,137,156, -156,104, 2, 94,147,244,159,128,123,222, 61,129,162, 95,148,211, 15,209, 28, 65, -187,227,100,242,126,153,142,128, 60,168,216,190,211, 9,233, 78,131, 94, 43,220, - 78,164, 13,204,244,170, 64,148,252,223,108, 40, 73,206,205, 46, 35, 69,120,148, -229,217, 58,170, 73,226,146, 49,218, 39,242,213,159,197, 16, 81, 8,217,179,150, -139, 38,138, 44, 91, 77,160,133,140, 91,208,204,248,194,170,115,212,207, 78, 33, -159,191,182,112,235, 88,232,155,106,171,147,233, 23,176,170, 54,130,244,189, 4, -228,113,121,245, 3,255,239,231,209,167, 99,108,140,181, 39,188,189, 45, 12,214, -100,229, 31,130,192, 47, 85,145, 33, 9,224, 73,123,212, 30,113,252, 71,153,213, -227,100, 50,144,227, 79,178, 65,227, 11,178,219,226, 30, 72, 24, 28,126, 99, 89, - 94, 19,214, 32,158, 20,197,129,139,227, 22, 95,180,243,240,190, 58,110,142, 3, -197, 13, 13, 56, 55,102, 87, 50, 91,172, 96,164,193, 82, 25,101, 43, 67, 34,181, -248,235, 69, 19,252, 93,243,188, 11,112,140,221,224,159,177,239,213,247,155, 36, -176,191,118,114, 29, 14,230,134, 17, 4, 35,219, 48,221, 96, 94, 27,190,176,133, -103,195,171,211,109,216, 41,187, 97, 29,153,173,204,184,243,244,163,148,102,113, - 19,108, 20, 10, 8,250,254,241,226,195,118,105,105, 67,151,205,158,134,209,199, - 47,240, 40,126, 69,201,153,143,145,109, 86, 65,235,159,236, 82, 24,135,249, 45, -198,247,235,147, 80, 78,205,249,201,119,159,231,253,174, 94, 74,217,227, 98, 3, -112,245,166, 11,202, 46, 94, 53,213, 88,227,128,169, 82,183,189,203,204,166, 34, - 13,106,208,155,185, 15, 17,126, 40,190,130, 62, 18,151,146, 23,213, 87,148,115, -107,174,170, 56, 2,142, 69,235,176,134,121,158,220, 72,254,240,127,229,209,210, - 49, 21, 90,239,167,244, 1, 25, 34, 40, 9,251, 28, 33,150, 41, 78,137,148,162, - 28, 65,160,147,128, 11,215,231, 59,133, 53, 36,153, 35,171, 96,212,211,222,186, -242,179,251, 7,178, 71, 62,234,113,239,123,237, 16, 95,249, 76,123, 17,154,138, - 69, 20,181,156,153,226, 37, 46, 6,107,177,122, 88,163, 35,238,119, 82,252,192, -119,169,134, 39, 95,176, 35, 41,245,207,106,136,148,136,137, 8, 98,213,144, 83, -102,183, 0,138, 99, 76,236, 87,146,160,152,245,194, 49,116,218,154,134, 45, 65, - 92, 4,224, 72,250, 66,120,165, 0, 68, 90,123, 67,110, 21, 96,212,144,182,186, -206, 13, 36,156, 69,205, 94,236,250,149,151,197,219, 53,115,173, 20, 57, 20, 42, -117,149, 72, 37,156,122,184,168, 10, 76, 39, 96,148,234,151,183, 70,229,250, 17, - 25, 22, 38, 79,196,240,245,102,151,239,211, 27,133,113, 38,176, 38,197, 54, 73, -161, 56,208,130,202,232,226,196,151,100, 93,160, 66, 97, 19, 29, 88,155, 33, 76, - 90,226, 70,162,128, 9,203, 51, 15,254,160,206,240,157,163,141,135, 54,246,243, -117, 52, 96,230, 7,150,219,228, 91, 63,122,184, 48,143, 45,119,127, 58,149, 77, -200,200, 11, 64, 12, 62,162,238,214,152, 99, 9,189,228,231,127,180,248, 1, 99, -147, 35, 27,103,251,248,218, 5,174,242, 14, 20,219,173,122, 0,245,192,171,254, -126,226,188,181,165, 20, 95, 30,150,154, 65, 84, 23,106, 12,211,135,125,190,143, - 18, 7, 97,201, 13,126, 54,206,199, 27,128,116,253,197,235,112, 93, 74,139, 77, - 8, 73,218,150,129, 58,235, 72, 7,107, 4,160, 6, 38,110, 32,190,126,176,241, - 1, 67,216, 5,203,223, 34, 73, 82, 54, 39,132,107, 86, 36,208, 17,235, 77, 34, -235,231,178,247, 19, 27, 48, 28, 34,129,128,160, 96,149, 83,237,237, 95,181,172, -147,168,215,143,105, 32,217,213, 2,174,154, 82,169,249,253, 15, 37,197, 38,221, - 31,235, 15, 36,135,189, 20, 33,240, 55,131,252,213, 53, 42,105, 96, 18,240,113, -127,209,151,158,170,168, 50,143, 20,218,142,212, 75, 25, 58,160,177,252,148,130, - 13, 65, 99, 35, 0,174,202, 12, 35,192,110,204,193, 51,134,224, 61,121,212, 5, - 56, 45,163, 71, 12, 20,132, 6, 77, 74, 72,105, 64, 51,134,115,171,117,224,216, - 27, 63,188, 67, 48, 83,112,131,240,107,214,253,248, 28,238,191,227, 48,102, 94, - 61,199, 17,207,182,250,145,190,101, 10,163,144,169, 35, 8, 81,129,228,194, 61, - 98, 61,135,201,151,124, 50,126,195, 57,249, 71,150,115,156, 66, 42,187,154,242, -187,220,122,230, 74,148,237, 38, 36, 85,234, 12, 10,210,170, 84,250, 70, 95, 26, -230,185, 84, 62, 44,193,249, 93,142, 81,152,170,162, 90, 42, 76,182,148, 20, 64, - 48,214,214,163, 20,103, 63, 62, 2, 93, 8,132, 41,103, 61,102, 91,143,222,119, - 15,122,126,155,228, 38,219, 38,163, 75, 12,213, 17,180,206,167,138,127, 23,128, -142,184,205,162,223,198, 38, 77, 64,255,199,182, 90,239,196,146,207,122,238, 36, -149,184, 33, 2,237,242,181,208,160, 63,207,174,127,244, 65,176,227,207,213,163, - 33,212, 73,194, 63, 53,194,125,102,253,144,233,133,241,192, 23, 86,188,120, 29, -151,183, 42,234, 9,177, 60, 43,197, 59,233, 62, 3,120,134,160,109, 45,134, 78, -218, 70,102, 42,217,161,174,250, 77, 45,162, 86,252,168, 11, 57,148, 79,200,246, - 45,113,232,240,120,194, 23,106,190, 34,181,150, 79,197, 88,161,220,210,198,182, -221,109, 96, 80, 50, 6,149,212, 95,255, 55,116, 15,134,181, 63,183,139,183,162, - 26,104, 20,113, 55,200,177, 71, 57, 66,210,150,204,254,192,211,220, 70, 71,221, -186,157,133,151, 74, 17, 81,102,124,117, 44,124, 47, 73,172, 71,209,223,221, 98, -202,205,125,232, 96,114, 50, 42, 10,233,139,114,115,105,154, 25, 45,127,177,212, - 42,101, 79,112,255,245, 60, 54,188,187,229,142,201, 50,183,244,110,253,184,252, - 76, 51,104,253,153, 62, 30,204,182,125,119,253, 19,233,115,149,121,231,118,213, -108,109,240, 42,218,170, 22, 20,227, 21,176, 17, 26,123, 75, 7,183, 58,208,145, - 52,101, 78,182, 87,178,156, 76,144,122, 82,156,237,110, 50, 61, 71, 17,154,183, - 57, 34,174, 77, 74,103, 19,100,133, 33,135,132,158,223,237,193,251, 45,160,144, - 97, 23, 70,146, 23,197, 72,144, 62,165,204,238, 39,243,232,145, 91,168, 97, 82, -180,191,162, 65, 64,129, 93, 15,247, 97,185,234, 16,215, 42, 77,214, 66, 94, 43, -155,153,125,190, 39, 52, 99,180,176,220,151,216,226,181,144,193,193,225,114,232, -108,196,105,220,189, 58,209,194,102,201, 87, 12,156,163,181, 48, 73,122, 98,102, - 26,117, 5, 83,204, 96, 44, 35,139, 54,109, 88, 56,193,141, 24, 7,252,119, 28, -108,169,240, 63, 29,174,148, 11,220, 99, 97,217,183, 27,169,244,202, 18, 38,179, - 45, 91, 66,121, 46,187,133,107,107,190,118,176, 97,180,153,233, 80,242,132,191, -169,130,154,134, 56,237,209, 35, 78, 29,108, 18,244, 55, 36,191,150, 60,187,165, -105,118,130,108,202,166,135, 6,132,255,205, 75,142, 22,136,244, 75,123, 64, 31, -154,117, 10, 26,222,229,123,100,172, 63,109,146, 40,137, 89, 16,142,223, 63, 56, - 25,202, 97,112, 73,135, 78,149, 76,159, 39, 68, 75,117, 72, 95,204,113, 45,224, -220, 32, 46,169, 89,135,191, 41,180,252,154,175,104,214,178,157,164,255, 47, 19, -108, 47, 17,168, 98, 7, 91,170, 31,248,219, 79,105, 92,234, 5, 78, 6, 34, 54, - 78,142,234, 32,227,180,132, 3,242,247, 2, 65, 46,101,117, 92,218, 67,104, 85, -243,128, 91,171,120,239,233, 99,250, 41,191,232, 24,153, 47, 41, 64,110,131, 63, -206, 57,138,247,213,142,213,170,140,156,122,156,158,169,254, 3, 63,229,245,122, - 50,123,110, 68,160, 37, 35,134, 67,104,121,109,127,187,109,223,214, 64, 92, 49, -216,133,137,162, 85,180,175, 27,111,196,210,220,225,119,119,218,216,191, 84, 31, -169, 41, 96,136,248,212, 81,132, 90,170,226,158, 16, 35,112, 46, 83, 42,121, 44, -160,119,167, 88,166,127,246, 63,166,171, 92, 53, 52,244,192, 94,230,241, 49,167, - 30,232,194, 94,212,117,129, 60,187,131,173,253,222,250,187, 31,154, 47,112,151, -172, 88,237,228, 84, 73, 0,165,143, 83,198, 58,248, 67, 84,231, 0,167, 67,228, -128,235,130, 60, 25,182,186,147,173,118, 99,173, 57,156,172,200,144, 48, 64, 39, -180,234,113,193,137,166, 34,196,138,196, 33,240, 56,251,131,196,112, 21,192,102, -177,129,120,139,106,147,246,184,186,119,191,112, 46,110, 42,222,164, 11, 87, 32, -237, 61,154, 61,126,238,163, 20,149, 42,164, 98, 6,217,213,252, 59,120,161,239, -221,174,238,139,177, 13,159, 7,219,222, 65,164,192,233,214,203,215,181, 46,198, -182, 50, 27,169,105, 29, 78,182, 26,231,116, 73,196,126,234,178, 8,103, 53,254, -102, 56, 97, 3,173, 72,137, 4, 23,209,208, 31,174, 64,138,255,241,226,144,239, -205,214,110, 63,226,166, 43,123, 91, 18,193,157,120,152, 79,205,204, 9,163, 29, - 49,147,173,201,216, 48,208,164, 1,187,124,201, 97,145,190, 37,112, 89,166,192, -129, 81, 39,118, 42, 77,169,239, 99,158,206, 53, 61,197,100,230,130,221,225,179, - 55, 5,147,180,245,182,231,169,145,220, 83,140,182,154,118,161,133,149, 86,148, -187,140,188,150,138, 17,231,152,170,237, 44,224,250,161, 11,186,233, 70,140, 73, -182,203,178, 89, 98,166,230,104, 12,214, 90, 28, 62,160, 13,240,160,155, 66, 75, -249,214, 68, 24, 17,207, 11,174,176,189, 90, 17, 44, 3, 83,180,134, 35,213,131, -215,225, 98,110,139, 1, 31,150, 53, 29,209,250,178, 79, 37, 43,208, 76,196,182, -133, 24,236, 64,165, 86, 40, 81,132, 47, 69,180,125,107,193,241, 30, 60, 9,248, - 77,142,227,142,172,196,157,116, 39,216,120,122, 0, 2,182, 12,133,209, 51, 13, -251,183, 18,220,204,185,219,111,208,181, 75, 12,187,231,108,123,245, 18,102,127, - 25,243,128, 79,164,153, 39, 79, 98, 8,240,173,190,117,106, 91,220, 58, 54, 1, - 51, 74, 65,168, 50, 32,163, 64,231,123,209,238,249, 78,205, 40, 27, 27,117, 29, - 18, 86, 72, 77,165,158, 10,172,110,148,171, 82, 74, 38,124, 16, 36,150,204,182, -145, 95, 23,145,147, 73,136, 30, 29, 8,161,126,192, 61,112, 69, 90,207, 90, 23, -152,170,140,247,126,128,139,170, 86,196, 15,144,222, 2, 10, 74, 65, 37, 8, 20, - 59,156,244,228,238, 27,206,194,133,123,158, 76, 19, 87, 64,178,114,115,216, 45, -248, 16, 14,148,119, 46, 35, 85, 39,148, 80,108,235,217, 44,190, 59,123, 90,179, - 7,108, 99, 91, 7, 41,242, 73,209,114,149,238,149,177,142, 40, 52,242, 59,168, -112,126, 80, 11,162,177, 46,252, 25,120, 1,152,230, 98, 29,228, 54,251,170, 6, - 35,117,169,180,191,134,240, 52, 85,236, 11, 68,148,241, 97, 83, 62,185,204, 7, - 36,194,199,197, 15,195,116,113,120,170, 40,114, 93,237,209,186, 62, 40, 44,215, -182,223, 71, 46,195, 32,149, 51, 87, 69,192,184, 9, 29, 69,192,173, 64,195,203, - 28,221, 0,242,188,114, 69, 55,120,140,231, 78,195,151, 14, 45,113,208,215, 43, -218,195,202,123, 0,215, 45,111, 39, 64, 94, 14,173, 50,239,132, 17,176, 66,250, -243,122, 30,177,226, 57,235, 25,228,223,252,149,249, 69,196, 21,182,192,151,197, -122,209,122,133,220,176, 37,138,136,189,188,171,145,120, 30, 28, 11, 97,140, 85, - 27, 18, 11,125,246, 32,225, 35,187,240, 10, 57,168,107, 27,166,167,172,167, 9, -167,228,139,108, 4,103,161, 4,222,129,133, 83,225,166,253,221,245, 18, 42, 98, - 27,212, 74,246, 61,253, 69, 61,115,183, 38,236,115,116,159,137, 84, 40,130,114, -253, 94, 51,207,132,255, 43,200,167,103, 36, 71, 17, 49,155, 34, 74, 28,107,181, -200, 60,222,123,213,145, 68, 85, 42,120,229,108,193, 53, 8,118,227, 45, 81,246, -106, 15, 72, 15,183,177,215, 70,203, 73,113, 49, 79, 28,250,136,135, 97,124, 46, - 63, 42, 14,226,242,153,244,217,206,168,166, 84,202, 30, 37,189, 92,162, 29, 1, -161, 11,219,195,167, 56,220, 97, 53,215,150,199,196, 69,141, 65,219, 73, 88, 38, - 2, 9,217,108,180,245,184, 60,224, 78,125, 97, 38, 4,145,122,111,214,105,233, - 77,169, 80, 51,152,140,165,141,113,117,226, 63,102,237,212,191,116,199,118, 40, -133,203,155, 98,228,179, 13, 6, 30, 14, 4,226, 1, 32, 60,152, 48,204, 40,127, -142,156,168, 23, 74,132,100, 81,151,205, 91, 35,221, 64, 2, 48, 0,211,132, 20, -100, 43,197, 83, 27, 61, 98,156,205, 75, 34, 65,226, 31,206, 0,185,111,136,249, - 53,245, 68,254, 16,210,254,234, 6, 13,157,199, 24, 24, 46,223,117,249,244,173, -240,197, 97, 44, 31,122,181,169,190, 36, 20,149,232,138, 34,231, 65,222,155, 31, - 68, 77,166,116, 11, 99,137,251, 76, 47,161, 74,104,125,148, 76,248, 60,226,210, -229,235,165,195,201,244,140,211,164,201, 93, 48, 19,108, 38, 2,200,142,137,137, -254,179,122, 90,241, 82, 30, -} ; - -// ../Source/Template/GB_AxB_dot_cij.c: -uint8_t GB_JITpackage_9 [2904] = { - 40,181, 47,253, 96,149, 87,117, 90, 0,186, 86, 40, 16, 41,192,146,117, 14,106, -166,126,159, 61,135,219,228, 88, 54,247,173, 34,237,169,111,132, 51,228, 6, 14, -151,236, 98,102,232,194, 69,151, 1,211, 36, 8,162, 73, 14, 2,243, 0,242, 0, - 5, 1,111, 18,205,147,163,160, 72, 51, 56,134,199,243,162, 52, 61,192,105,129, -224,232, 93,218,242,249,245,250, 43, 86,129, 0,117,145,231,168, 20,211,174,186, -174,212,235, 78, 32,163,193, 64, 33,236, 35, 69,153,150,129, 62,154,188, 71, 43, - 9,183,197,210,168,239,188, 71,156, 97,166, 27,230,181, 71, 30, 71,168,244, 0, - 93,157, 17,158, 7,204, 43, 9,129,249, 5, 55,158,220,187,239, 40,207, 95,235, -189,107, 60, 98,250,206, 19, 20,195,206,199,116,148,253,149,204,141,157,189,226, -143, 63, 41,233,199, 24,201, 65, 5,129,210, 35,110,138,242,151,219,212,163,185, -118,119, 81, 26,215,230,104,135,130,145, 9, 85,186, 38,221,198, 45, 58,206, 35, - 14, 42, 58, 8,202, 87, 9, 8, 7, 8, 20, 6,203, 1,194, 41,110,122,133, 41, -105,102, 94,145, 47,141,178, 13,105,246, 10,147, 29,107, 36,206,203,185, 52,190, - 83,196, 58,211, 17,147, 80, 29, 86, 1, 1, 69,171,203, 36, 15,113,170,163,162, - 19,230,157, 71, 49,180,220, 47, 29,148,211,178,237, 52,235, 67,106, 22,231, 6, - 6, 18,138,129, 65,147, 4, 67,147,249, 92,154, 28, 61,218,213,128, 58, 6,220, -219, 2, 18, 9,237,202,174,207,181,201, 72, 96,154, 7,195, 83, 61, 42,192, 85, - 56,106,144,189, 27, 79,183,167,192, 9, 50, 61,195, 62, 32,140,214,145,159,203, - 35,210,100,154, 70, 36, 59, 24, 77,166, 65,234, 17,116, 55,130, 92,165, 2,221, - 40, 90,177, 47,189,214,160, 4, 86, 91, 65,104, 72, 51,206,248, 25,143,225, 40, -219,141, 66,152,222,217,112,187, 52,108,252, 14, 8,100,105, 90,198,125,237, 12, - 79,249, 40,120,156,185, 41, 2, 97,220,195,130,158,189,173,225,136,241,124, 69, - 77, 32,181,190, 68,113,133, 85,116, 66,161,189,222, 45,159,111, 16,164, 30,175, -121,138,165, 82,247,198, 86, 20, 71,252,234, 54,169, 61,172, 4, 56,111,215,230, -168,186, 58,246,102, 71,165, 44,134, 77,169,182, 86, 75, 51,215,185, 82,122, 11, - 68,198, 71,118,212, 86,235,125,255,190, 73, 30, 55,189,158,253,165, 83, 28,113, -121,134, 47,213,170,171,125, 30,237,113, 6, 39,229,186, 67,139,143,187,163, 36, -209, 37, 67,191, 54, 79, 27,210,147, 73, 38, 46,140,166,177,144,152,134,101,200, -139,142,252, 50, 25,105,125,223,228,251, 38, 20,214,198,163,255,102,223,201,228, -193,225,150,111,202, 92,160, 15,200,163, 97, 42,180,140,231,194, 52,233,225, 72, - 81,168,224,213, 1,229,166,103,157, 10,143,101,189,234,248,182,233,150,197, 84, -147,226,171, 15,249, 42,211,112,232, 55,167, 75,170,195,122,193,193, 36, 27, 79, -110,161, 76, 16, 67,122, 50, 13,182,217,128, 50,190,212,235,111,230, 95, 38, 50, - 76,116,109, 52,133,133,106,154, 48, 58, 33, 15, 70,155,224,124, 52,136,217, 52, -184,141,182,202,147,115, 89, 8, 9, 8, 9, 11,150, 5,203,102,131,241,248,170, -161,161, 99,249, 56,248,192, 79,141,211,148,105,152,137,170,179, 65,107,183,169, - 3,246,136,197,199,220,193,118,183,185, 62,132,243,185, 68,151, 71,131,113, 66, - 6, 6,222,233, 84,108,232,148, 18,164,118,108,212, 69,154, 80,134,132,136,200, - 53,152, 72,134, 48, 13,187, 52,107, 58,117,240,136, 79,207, 68, 26, 12,147, 14, -207,119,102,172, 65,220,210, 20, 22,254, 75, 66, 64,252,249, 11,213, 24,164,106, -131,164,130,137, 20,167, 83, 95, 18,201, 72, 41,211,112,230,209,110,243, 77,154, - 35,203,178, 44,171, 99,210, 11,157,205,113, 59,252,232,122,231,247,125, 27, 61, -196,100, 66, 68, 80, 85,117, 9,140, 72,102,136, 44,205,115,137, 50,202,136,131, -222, 73,246, 26, 20, 45,148,141, 94, 38, 61,135,105,183,209,110, 81,220, 62,169, - 37, 74,113,122,131,116,228, 97,243,187, 82,193, 27,176, 12,187, 48, 52,154,197, - 1,192, 77, 39,204, 29,196, 9,218,103, 2,109,163, 21,124,109,230,154,116,207, - 30,156,248, 54,105,226,238, 78,143,143,155,219,231, 71,153,122,188,171,237,222, -219, 59,112,180,220, 75,125,123,244, 18, 56,251,230,103, 91, 95,193,165,106, 45, - 62,158,207,165,237, 85,215,153, 90, 80,252,104,220, 88,254,151, 82,126,147, 95, -138, 84, 82,147,248,138, 66,137,184,148, 84, 30, 98,227, 15, 23,197,239,167,190, -107, 39,207,254,163, 59, 15,123, 29, 54, 44,148,174,182, 54,249, 6,181, 40,171, - 64, 30,226,152,201,128,250,166, 83, 40, 17, 35, 95,143, 55,227,140,233, 71,107, - 27, 26,223,172,131, 74, 31, 10,131, 34,168, 66,156,208, 49,101,136, 68, 36, 73, - 82, 41, 52, 6,226, 32, 4,130, 64, 32, 75,114,141,221, 6, 66,137, 32, 8, 52, - 16,131, 17, 48, 66, 8, 49,132, 16, 67, 8, 33,136, 8,132,136,136,200,136,140, -200, 12, 59, 18,161,164,188,225,157,159,153, 54,218,159,114, 93, 57,215, 92,224, - 52,160, 62,241,195,164, 86,133,245, 10,173, 59,121,212,195,190, 76,176,168,203, -104, 90,173, 21,166,110, 12,182,207,128,198, 20,243, 61,110, 90, 77, 3, 76, 82, - 3,169,243,134, 1,107,167, 26,239, 21,130,183, 32, 35, 46, 96,175,237, 80,196, -225, 18,187, 64, 44, 1,147, 42, 76,228, 31,207,249,130, 75, 75, 45, 61, 24,183, -224,242,114,246,195,183, 25,239, 64,148,203,109, 53,251,162, 16, 39, 31,203, 67, -201,179,212,109,234,229, 22,220,217,171, 4,250, 17, 67, 11, 53,125, 74,156,240, -220,206,108,165,155, 92, 96, 76, 53,124, 25,166, 30,136,226, 13, 41,147,105,114, - 2, 12,217,229, 22,143, 33,172, 71, 74, 15,227, 1,235,181, 25,170,198,106, 8, - 41,110, 39,223,149, 90, 3,201, 12,111,248, 21, 44,249, 81,187, 62, 45, 27, 15, -152,188, 55,154,231,140,222, 37, 16,182, 34, 75, 40, 95,138,198, 27, 27,122,246, -211,194,254,168,102,187,212, 22,215,214,116, 5,106,237,189,247, 87, 1, 75,162, -153,182,249, 29,234,196, 93, 49, 51,207, 30,214,184,164,122, 34,156, 95, 11, 74, - 71,102, 61, 22,109,237, 43, 86, 69,155,181,147, 38,245, 95,195, 92,212,216,136, - 64,126,213,235,238, 82,213,167,227,175, 98, 15,227, 36, 74,140, 0,232,242, 28, -165,128, 10, 85, 14,235,201,177, 24, 65, 52,138,146,117,181,146,111,248, 43,126, -236,110, 66, 52,213,148,120,241, 5,225,249, 33,145, 7, 33, 76,194, 65,143, 10, -197,184,219, 67,123,208,167,162, 26,225,165, 64, 97, 14, 22,207, 65, 26,241, 23, -162, 0,163, 29,231,116,194,227, 47, 42, 61, 56, 67, 80,213,225, 42, 18,251,161, -197,204,102, 19,131, 45, 79,248, 84,241,101, 71,229,102, 2,122,192,166,234,237, - 42,149, 17,117,119, 43, 34, 54,180, 29, 91,187,148,186, 58, 43, 0,126, 16,234, - 58,140, 3,137, 89,120,202,210, 24, 53,246, 22, 57,239,189,185,208, 89,187, 88, - 59, 43,221,253,118, 97, 44,188,207, 55,216,255, 97,235,186,188,185,223, 22,118, -254,136, 74, 29,139,124, 23, 58,212,111,119,123,254, 80,199, 38,199,165,185,185, - 24, 8, 54,225,204, 73,158, 91,213, 72,174,185,221, 51,245, 90, 83,199,239, 12, -164,131,217,157,212,178,165,115,212,232,237,156, 57,118, 56, 99,206, 28,142,151, - 83,195,185,242,147,177, 29,103,162,200,117,237,113,225,177, 49,252,187,127,181, -162,225,245, 79,167,184,160, 27, 52,248,182,149,230,207, 62,179,194, 31,177, 10, -109,184,129,174, 10,195,134, 5,106,217, 46,116, 69,237, 84, 42,154, 26,217,152, -118,108,172, 64,223, 75,140,239,187,209,167,146, 30,190,198, 39,205,212,225, 94, - 61,103, 30,253, 16, 35, 1,143,239, 66, 27,126,186, 9, 18, 1, 7,119, 77, 85, - 5, 82, 48,251,253,101,151, 19,158,153,224, 84,125, 88,104,115,201, 73, 82, 58, - 70,117, 48,109,217, 3,254, 14, 13, 72, 7, 41,189,101,225, 69, 67,153,120,119, -182,155, 30,134,112,233,121, 62, 46,117, 48,160,112, 26, 13,133,186,103, 88, 46, -186, 0,132, 3,207,169,130, 82, 77,111,225,222, 36, 52, 78, 22, 60,135,227, 14, -111,132, 16, 65, 78,163,104,112, 29, 57,161,143,153, 48, 92,177,132, 7,182,178, - 31, 17, 98,245,168,106, 90,150, 78,115,185,208,133, 63, 30,160, 61,158, 85,252, -223,131,110,179,236,177,183,184, 64, 61,209,175, 67, 8,149,200,123, 0,197, 18, -227, 49,130, 62, 32,123,213,136, 50, 59, 64,113,145,223,106,216,217,227, 64, 10, -204,224,166,148, 45, 31, 35,166,135,115,182,220,233,140, 53,115, 59, 95,206, 26, -142,149, 7,145,224, 57,127,244, 47,233,165,107,249, 23,114,231,171,120, 64, 19, - 43, 72,115, 7, 30,116,193, 66,135, 34,209,250,141,141, 2,137, 32,218, 6, 23, -132,158,148,160,179, 14,232,235,160, 45, 71, 74, 97, 39,209,160, 2, 92,208,118, -159, 58,213, 91, 86, 5, 61,127,241,127,105,139, 59, 51, 88,180, 69,192,170,245, -113,185, 94,227,120,252,160,224, 20, 9,113,117,229,236,230, 5, 9,175, 39, 5, -186,189,239, 26, 93, 12,113, 93, 44, 18,126, 11, 49,177,168,106,149,230, 33, 70, -234, 8, 22,244, 83,229,127,117,152, 63,110, 61, 91,142,220, 84,158,140, 41,113, -185,146,181, 43,144,223, 48,108,143, 58,126,165,133,207,107, 23, 50, 87,171, 14, - 33,151, 5,152, 29, 24,159,238,245,156, 83, 86, 56,160,152,230, 66, 1, 33,179, -190, 11,194,165,156,127,171,125,216,160,148, 15,205,178,226, 73, 79,243, 66, 47, -177,204,240, 16,161,232,190, 67,200, 37,251,179,193,193,224,216,104, 15, 73,137, -195,180,135,212,132, 9, 46,135, 49,207,224,116,192, 83,119, 24,152,149,253, 45, -166,145, 68,225,126,104, 50, 92, 71,133,144,201,217, 70,217, 13,207,106, 12,215, -145,148, 97,168, 21,107,144,219, 99,151,106,158,171, 15, 90,213, 36,213, 79, 32, - 17,213,117, 14,179, 86,241, 39, 75,172,133, 5,203,254,115, 72, 65,131,165,230, - 0,241,193,226,162, 42,240, 19,234,251,248,119,233,186,214, 18, 65, 90, 86,134, - 17, 35, 11, 17,228, 23, 34,178, 9,220, 51,184, 98,252,139, 46, 59, 52,113, 60, - 75,116, 19,177, 73, 26,243,192,150,103,213,251,243, 11,117,185, 2,182, 10,140, - 53,177,161, 74,106, 5,172, 43, 46, 17, 90, 87,205, 15,191,178,179,102, 43,179, -198,180, 70,189,138, 29, 37,192,211,252, 7, 12, 50,203,204,112,232, 20, 32,212, -254, 4,253, 31,142, 35,100,153,154, 29, 33,157, 11, 57,195,113, 34,223,155, 84, -168,237, 42, 86,115,116, 26,108, 54,243, 20,197, 72, 58, 43,138,203,142,226,209, -234, 44,197, 40, 0,175,194, 45,103, 69, 59, 57,171,255,195, 89,227,209, 93,101, - 22,170,236,152, 61, 7,108,254,170,219,186,105, 14, 44, 27, 46,149, 51, 2,121, - 21, 29,240,245, 31,194, 60,120, 41,213,233,161,221, 25,235,199, 30,220,153,103, -215,254,175,106,239,235,241,214,188, 42,100,150, 54,164, 97, 22,229, 98,137, 89, - 24,128,243, 2,225, 58, 98, 7,162,158,201, 53,249,214, 61, 85, 56,201,214,229, - 14,184,198,193, 20, 85,145,200, 6,245,153,195,171,149, 52,157,143,127,106,177, -111,173,103, 43, 63, 1,234,122, 44, 35, 26,178, 54, 33,192,157,129, 3, 11, 12, - 80, 70, 54, 82,231, 74,227,236,197,242,166, 4, 65,150,188,168, 5,148,121, 5, - 68, 11,250, 52, 70, 84, 7,129,120,236,121, 58,134,129,236,139,125,114,133,253, - 72, 1,194, 73,105,222,212,223,202,169,156, 68, 56, 84, 13,117,132,149,121,152, -235, 60, 77,246, 94,194,159,128,153, 77,109, 95,172, 64, 76, 73,217,210,136,140, -109, 43,189, 1,201, 2,200, 83,196,122,151,222, 40, 95,149,215,199,207, 2,231, -145, 60, 11,118, 25,199, 65, 14,200, 65, 79,239,182,151,198, 31, 77, 79,115,122, - 82,233,199,249, 21, 36,207,234,137, 71, 30, 65, 67,118,136, 13,234,135, 61,126, -232, 31,146,204,106,127,235, 51, 80, 18,104, 67,212,146,225,136,195, 85, 88, 93, -124, 22, 44, 78,134,130,158,166, 97,179,255,142,242,245, 89,226,237,216,136,233, -111,128,189, 17, 65,158, 2,126, 50,165, 84,110,241, 75,142, 68, 40,130,251, 1, -204,235, 49,231, 35,105,165,240, 19, 68, 9, 30, 63,142, 71, 1,214, 48,135, 32, - 92,232,152, 21, 75, 91,232,130,196,197, 33,103,219, 59,239,100,129,127,114, 70, -241,155,152,171,182,105, 19,124,193,164,132,218, 92, 38,230,103, 83,123, 71,100, - 92, 40,224, 74, 7, 96, 8,183,120,187,205, 76, 99,125,207,216,134, 66,164, 9, -129, 82,181,119, 91,219, 93, 23,138,243, 34, 95, 35,100, 72, 27, 13,156, 70, 41, -114, 46,251,121,237,188,173,105,108,157, 28,130, 38, 4, 29, 44,147, 90, 53,216, -198, 48, 60,198, 81,148, 74,238,245,180,122, 58, 4, 60,117, 33, 96, 56,146, 8, - 17,196, 1,148,191,106,244,136,229,119,176,146, 96, 69,178,184, 9,235, 39, 76, -213, 8,197, 64, 93,200,143,202,162,240,121, 51,158,111, 57,242, 40,210, 44,185, -236, 35, 96,194,139,242, 20, 99,133,163, 93,115,150,112,226,193, 72,119, 36, 68, - 37, 24,114, 65,136,107,184,105, 86, 14,204, 4, 68,128, 47, 63,136,204,253,166, - 86, 14, 25, 20, -} ; - -// ../Source/Template/GB_AxB_dot_cij.h: -uint8_t GB_JITpackage_10 [1313] = { - 40,181, 47,253, 96,250, 22,189, 40, 0,214,182,163, 40,208,210, 56, 7,168, 73, -177,111,246, 72, 71, 89, 58,113,163,105,119,215,150,230,149,180, 27,232,249, 35, - 65, 52, 25,240,252,162,231, 47,240,197, 3, 89,106, 94,152, 0,149, 0,153, 0, -114,179, 63,119,247,150,171,244, 54,230,174,252,228,128,155,242, 55, 86, 40,124, -165,247,141, 88, 59, 8,232, 32,222,164,231,216,146,110,251, 28,237, 46,143,190, -113,167, 77, 5,147,138,132,187, 77,126,240,150,202, 29,234, 59,153,203, 36,108, - 39,111,189,145, 84, 96, 34, 38, 28,123, 84,182,236,185,189,221, 70,123,238,121, -240,214, 65,165,160, 34, 81, 48, 40,168,188,218,168, 91,182, 61, 36,230, 19,120, -144,238,210, 81,107,183, 62,112,115,117,159,172, 26, 11,219, 42,191, 15,223, 38, -125,166,109,160,210,208,237,164,125,123,118,136,185, 91,186, 9, 71,111,241, 82, - 46, 94, 37, 24, 47,205, 41,148, 73, 66,161, 4, 25,132, 39,163,197,140, 7,110, -176,204,181,164,209,217,235,208, 5,152, 35,121,219,236,128,201,237,115,229,238, -131,126,118,202,122,227,165, 51,194,119,183, 63,110, 85,102,255, 26,128, 23,236, -126,188,149,248,150, 45,105,126, 45, 29,217, 59,155,126,135,159,232, 37,230,102, -211,123, 79,146, 58,248,221,165,160,115,189, 46, 13,248, 97,188,161, 39,103,143, - 42,223,135,250, 34,201, 21,244,105, 85, 28,215, 7, 94, 85, 34,171, 41,248, 74, - 95,181, 37,162, 32,245, 11,129, 69,235, 96,166,201,198,236,218, 35,182,223,192, -140, 39,122, 50, 24, 17, 63, 18,155, 8, 90, 57,228,244,254,246, 45,135,180, 39, -173,150,239,173, 83,205, 82,149,152,110,191,116, 82,103, 15, 68,162,156,117, 37, -245, 66,183,108,229, 13,190, 19, 36, 65, 72,160,232,108, 24, 60,153,137, 78,135, -163,201,226, 5,243,103,194,217,254,237, 79, 6,189,224,151, 43,187,218,238,174, - 39,185,198,218,242,139,150,228,125,255,255,105,210,112, 50, 79, 6,145,249,196, -248,201, 66, 29, 48, 77, 31,237,147, 85,100,152, 84,239, 3,166, 7, 44,211,128, - 69,135, 12,251, 36, 5, 76,111, 10,219,184,219, 40,151,173,237, 18,199, 13,233, -133, 62, 37,123,180,187,219,100,235,202,147, 55, 34,179,165, 14, 34, 63,126,233, -148, 63, 87, 90,133, 80,215, 62,156, 14, 22, 55,144, 19, 15, 23, 67,118,219,199, - 96,224, 9,168,135,218,178,181,158,244,152, 91, 20, 89,121, 13, 64,216,229, 26, -216,135,113, 12,195, 52,137,136, 62,193,111,149,215,198,203,177,239, 55, 34, 36, -220,217,159, 28,221, 6, 85,110,137,180,141, 4,196,172,124,175,252, 56, 78, 86, - 2,144,186,174, 91, 28, 34, 16,245,139,242,203, 63, 64,161,182, 35,252,110,149, -224, 45, 45,163,169, 90, 36,169,195,202, 31, 72,103,177, 91,170, 31, 80,231,184, -187,183,184,166,147,142,142,201, 58,156, 14, 68,180,224,192,105, 10, 53, 55, 71, - 22,126, 17,201,240, 60, 57,178,188,112, 2,130,234,250, 44,248, 89, 79,134, 38, -183,205, 60, 43, 0,234, 55,129, 11,168,177, 37, 98, 72,102, 68, 68,146, 36, 41, - 12,107, 97, 12, 66, 12,163, 80, 75,245,226,136, 76,135,115, 24,134,140,128, 16, - 35,104, 2, 39, 16,137,145, 96, 2,145, 64, 38,146,201,134, 49, 85,170,178, 68, -225,153,248,155, 3,168, 7,245,149, 85,248,162,252,211,225, 44, 80, 28,200,157, -120,242,165, 78, 17,205,244,196,202,255,118,229,184, 57, 40,168,251, 59,158, 90, -127, 86, 22,102, 25,174,250,194, 73,250,138, 64,240,181,230,109, 82,213,132, 27, - 31,140, 66,118,217,175,239, 83,146,137,157, 92, 88,148, 57,118,210,192,170,225, - 31,144, 20, 80, 48,124, 87, 67, 6,254, 98,224, 97,196, 63,240,243, 40, 46, 6, - 79,133,240, 19, 63, 64, 66, 1, 0,241, 27,178,201, 77,165, 42,127,125, 22,156, - 45, 44,143,187, 45, 24,245,242,210,203,106, 37,186, 60,227, 56, 15,128,251, 70, - 14,135,144,178, 90, 77,149,249,141,219,193,243,161,171, 83, 55, 13,126,117,154, - 49,160,245,162,215, 79, 88, 88,190,194,105,134, 62,142,172, 27,136, 13,229,124, - 56,125,199,159, 14, 62,219,167,140, 90, 2,213,204, 6,205,106,190, 91,235, 49, - 86,241,112, 70, 34,137,158,212,163, 94,190, 22,223,175,132, 66,122, 11, 44,190, - 51,184, 37, 24, 26,211,140,233, 30,250,134,132, 71, 80,212, 89,180,116, 35,250, - 92, 39, 51,205, 71, 72,101, 4,137,146,200,114, 50, 58, 95,180, 25,208, 12,143, -162,249,237,173,205,230,228,217,149,199,115,126,187, 71,216,225, 68, 44,133,134, -246, 85,206,139,187, 39,151,112, 3, 8, 21, 18,101,205,155, 97, 92,182,242,105, -144,149,244,106, 38,100,164,233, 60,227,112,142,184, 67, 21,220,159,159,190,167, -100,150, 8,115,139,121, 26, 88,136, 85,175,148, 15,127, 4,153,121, 4, 54,175, - 83, 71, 26,168, 34,238,231,243,172,150,133, 61, 68,215,169, 76, 2,118,115,100, -169,191,131, 52, 21, 91,161,144, 88,162,178,194,153, 56, 46,130,222,246,120,116, - 80, 81, 72, 29,234,150, 43,208,166,214,100,226, 6,136,122,242, 32,226,126,192, - 54, 68, 9,213,233, 11, 85, 34,158,235,242,180, 24,221, 58, 23,162,165,195,232, -197,159,149,132,116, 90, 10,206,165,106,161, 7,207,222,230,192, 36, 44,165,115, -135,233,211,123, 51,235,150, 82,187,113,215, 58,194,121,206, 43,102, 38,148, 74, -133,199, 73,159, 73,180,143,106,206,143, 12,186,145, 85, 84,249, 1,120, 36,248, -236,121, 27,234, 78, 82,110, 41, 48,220, 42, 74, 65,126,241, 33,194,160,207,151, -173,152,205,205,165,170, 83,249,170,102,170, 25,114,246,170, 14,142,201, 55, 91, - 64,163,117, 0,129,144,216, 66,143,105,100,218, 39,117, 66,200,197,238,124, 45, -118,154,161,185,246, 34, 60,168,184,173,145, 81,210,136, 20, 40, 58,106, 24,151, - 53,102,175, 80,110,225,136, 62,183,104,183,106,101,139,155, 38,169, 50, 83,155, - 49,210,190,136,108,126,210, 45, 77,170,149, 85, 12, -} ; - -// ../Source/Template/GB_AxB_macros.h: -uint8_t GB_JITpackage_11 [323] = { - 40,181, 47,253, 96, 1, 2,205, 9, 0,102, 18, 61, 32, 0,181,115,187,239,245, -255,243, 94,189,182, 75,165,157, 6, 77,199, 10,128,130,102, 53, 17, 43, 55,222, -161,255,127,247,135, 23, 50, 0, 52, 0, 51, 0, 49,187,104, 56, 47,100,209,248, -206,112,235, 92, 63,155,132, 59,144,230,254,222,117,158,158,190,239,236,252, 40, - 20, 77,124, 65,239, 95, 80, 10,131,151,155,159,188, 68, 81, 94,144, 87,149, 52, - 85, 85, 53,219,238,176,169,177,109,174,102, 19,166,161, 81, 93,131,110,227,174, - 28,103,202,169,149,123, 60,241, 3,131, 69,176, 38, 69,129, 96, 93,192, 5, 62, -192, 21, 52, 27,167,226, 71, 52,131, 95,181,124,176, 5,205,205, 16,119, 46, 24, -122,211,124, 91,143,237,247,241,128,220, 61,240,183, 55,223,199,182,173, 0, 41, - 34, 55, 74,133, 17, 37,242,194,120,221, 89,175, 2, 36, 2,101, 77, 77,185, 25, -198, 47,110, 87, 47,146,228,213,206,118,226, 89,118,121, 72,202,134, 33,174, 69, -137,225, 6,217,160, 68, 44, 14,137,180, 96, 87,174,155,195, 29, 26,108,147,153, - 99, 18, 53,121,200,104,152,184, 29,110,235, 59,120,230, 83,110,118, 24, 0,100, - 0, 16,209, 69,147, 0,132,159,197,127,140, 4,232,230,139, 14,208, 24, 38, 11, - 0, 52,140, 40,104,193, 66,232,182,175,205,149,247,155, 11,236, 68, 6, 28,248, - 72,116,153, 65,243,231,153, 41,218, 42,182, 90,157, 98,208,248,249,242, 22,140, - 41, 10,134, -} ; - -// ../Source/Template/GB_AxB_saxbit_A_bitmap_B_bitmap_template.c: -uint8_t GB_JITpackage_12 [2034] = { - 40,181, 47,253, 96, 92, 46, 69, 63, 0, 10, 66,108, 12, 40,176,148,117, 14,104, -161,216,247,231,240, 22,185,101, 49,202,214,112,144,109, 18,210,147,255,231,116, -195,169,154,153,193, 58,122, 36, 63,232, 63,216,254,193,185,185, 0,187, 0,186, - 0, 31,166,249,153, 43,141, 25,219,203,253,255,167,105,100,154, 42,217,189,251, - 81,254,205,182,223,213,177,230, 76, 57,124, 91,235,150,251,215, 88,197,144,209, -199,139, 63,247, 52, 76, 71,255,252, 21, 16, 44,121,150, 58,210, 99,239, 36,238, -103, 19, 65,165,128, 82, 71, 28, 21,229, 49, 99,109,175,179,173,157, 70,169,216, - 86,174, 61,148, 11, 7,138, 74, 87, 61,198,138, 43,232, 56,143, 58, 26,116, 16, -148,191, 12, 10, 8, 10, 40, 9, 23,130,130, 87, 28,245, 11,183, 7,117,120, 69, - 62,100,148,111,216,162, 95, 33,233,193, 70, 34, 29, 33, 48, 21,143, 84, 12,213, -220,165,208,148,105, 56, 94,239, 33,150,254,243,235,217, 47,108, 34, 53, 22,195, - 39, 96, 33, 59, 6,155, 34, 13,167,156,185, 55, 16,138, 39, 6, 34, 39, 6,113, -139,101,162, 88, 44, 1, 31,219, 15, 25,179,173, 94,255,227,166,121,145, 56, 36, - 18,137, 99, 93, 18,218, 71,251, 39,154, 95, 40,157,173,141,201, 35,205,184, 53, - 1, 78,198, 50,181,138,115,105,212,179,215, 92,226,126,243,115,237,248,136,101, - 45,100, 78, 85, 24,164, 30,150,195, 88,148,189,157,185,241,211,198,171,203,197, -117, 72,109, 72, 71, 85,176,212,213, 17,135, 95, 81, 51, 44,217,131, 21, 4,233, - 72,197,139,225, 61, 13, 59,232, 40, 6,116,157,183,204,132, 99,121,117,161, 88, -191, 80,199,252,242,134, 87, 4,215,104, 62, 53,251, 60, 15, 16, 64,104, 56,175, -207,150, 70,220, 47, 74,115,220,209, 58,142,178,125,230, 85,216,221, 54,121,101, - 43,232, 65, 95, 81,212, 53,255,198,251,241, 10,110,165,219, 41,116, 14, 16,190, -201,208, 66,115,227,209, 68,213,182, 87,187, 0, 28,199, 76, 56, 76,136, 62,140, -230, 29,250,133, 15, 67, 97, 24,121,141,245,113,199,105,123,147, 19,141,115, 19, - 68, 94, 52, 37,238, 81,174, 29,116,188, 25, 31,164,220, 5, 95, 71, 10,114,181, -203,125,177, 63,252,204, 51,109,175,187, 27,190,110,207,215, 90,202,125,154, 74, -198, 92, 75,182,115,149, 1,168, 62,148,215,157,205, 68,234,164,158,159, 41,218, - 64,120, 13,214,130, 15, 80, 29,102,206,145,137, 26,223,178,107,190,113,207, 83, - 33,243,190,245,201, 51,241, 83,145,174, 30,107,182,125,197,119,119, 55,192, 7, - 6, 22, 78,122,230,213,171, 31, 23, 4,233,172,153,118, 98,105,130,247,110, 30, - 79,197, 3,133,252,136, 52,140,132,228,160, 13, 5, 70,196, 4, 77,204, 77, 8, - 36, 41, 66, 51,164,205, 78, 72,126,188, 14,200,106,135,165, 56,119, 24, 62, 29, -175,118,182, 20,112, 8, 9, 13,164,125, 52, 73, 49, 49, 36,100, 71,235, 8, 82, -233, 64, 81, 97,149, 88,150, 88,107,230, 85,254,181, 17,105, 32,139,201,209,178, -201, 39,154,231,175,167,156, 34, 79, 69,230,164,111, 98, 24, 70, 29,203, 53, 4, -215,219, 77, 92, 95, 54,218, 25, 7,174,221, 83,230, 28, 7,137,137,108, 19,154, -160,137,135, 41, 34, 93,187,149, 96,216, 70,186, 62, 10,219, 72,216,118,108,194, - 25, 55, 72,173, 72, 24,236,157, 78, 9,201, 57, 52, 28, 31,229,163,110, 85,148, -166,164,172, 62,201,209, 4,184,167,244,238, 43,174,157, 85, 42,149,239,251, 40, -179,186, 54, 73,125,163,223,173,203,133, 19, 92, 18,155,244,252,149,220,175,248, -138,216,210, 49, 87,145,198,247,238, 47,220, 97,123,236,176,226,219,166,100,176, - 75,219,199,251, 80,117, 58,122,193,130, 2,168, 2,212, 80, 49, 68, 50, 34, 34, -146, 38,201,176, 6,178, 24,132,193, 80,162,135,177,164,187, 1,162,112, 36, 12, - 50, 20,195,112, 16,130, 48, 40, 66, 8, 97, 2, 98, 8, 35,132, 16,161, 64,100, - 36, 16,145,235, 28, 56,194,179,200, 36,226,118, 14,229,201,129, 35,135,215, 4, -105, 32,173, 0,172, 10,199,240, 34, 76, 37,168,234,210, 95,129,247,229, 64,250, -121,198, 77,237,229,109, 91,172,193, 34, 12,185, 16,225, 44, 38, 71,144, 96,117, - 76,107, 23,154, 13,219,253,223,140,114,112, 43,207,202, 77,141,233,180,197, 12, -186,176,180,123,121, 75,160, 12, 77,202, 99, 10, 77,243,118,223, 63,176,232,110, - 68,166, 62,238, 29, 13, 16,146, 59,201,109,168,176,250, 21,124,235,214, 25, 38, -246,100,217, 43,165,215,192, 72,155, 22,159,234, 69,149,136, 69,120, 66,253,185, - 75,137,124,202,152,254,125,217,211,194,175,152,156, 35,253, 70, 35,199,191, 71, -120,224,160,152,141, 80,220,181, 87, 49,250, 68, 75,176,242,114,202,136,239,196, - 69,245,176,130,232,227, 7,179, 20, 81,174,230,219, 29,181,208,208, 92,236,243, -182,103, 96, 76, 63,107, 31,193,251, 34,230,139, 76,207,254,250,229,208,195, 13, -210,154,158, 81,187, 72, 10,237, 72,227, 34, 71, 71, 31,108, 71,105,105,241,242, -177,236, 70, 5,250,138, 41,143,101,192, 21,192,245,121, 58,247, 81,243,228,233, -135, 53,166,146, 70, 22,237, 22,187,119, 89, 81,182, 95,192,147, 62, 53,206,173, -240, 48,153, 30, 36, 34,129,218, 6,195,102,153, 0,203,159,162,217, 12,249, 75, - 83,221,158,143, 0, 0,196, 53, 5,166,127, 73,188,129,184,187, 35,244,124, 38, -107, 96,182, 2,182,162,170,148, 5,213,128, 52,113,176, 61,198,234, 27, 65, 8, -132, 33,194,160, 74,153,129,169,219,255, 49,131,192,162, 52,236, 59,159,228, 30, -170, 78,212,245, 60, 54, 41,143, 30,142,138, 97, 60,169, 72, 59, 9, 64, 15, 8, - 4, 91,201, 62,129, 28, 70, 8,250,231, 44,135,209,141, 11, 39,200, 77,248,182, -199,175, 10, 4, 55, 25,163,206, 3,156, 70,146,102, 91, 60, 72,150,145,135, 24, -126,118,216,189, 44,251,140,162, 4,254,132, 71, 85,136,204, 97, 96, 26,217,213, -234,136,202,200, 74, 48,115, 42, 1,155,160,204,140, 73,212,161,106,179,140, 94, -141, 51,220,212,225, 7, 99, 4,255,216, 47, 92,200, 13,221, 93,161,135, 48,159, - 89,214, 81,214, 95,196,226,241,253, 94,187,182,188, 73,255, 6,133,155,140, 39, -194, 67, 91,107,192, 60,175, 3,146,108, 32,222,181, 53, 12,209,173, 50,180,230, -146, 53,176, 8, 56,220,124,108,108,131,212,125,190, 91, 32,100,127, 39, 46,236, -211, 63, 95, 3, 2,104, 87, 9,189,117,128, 18,229,175,227,116, 6,125,183,183, - 61, 19,217, 35,230,205,156,156, 81, 58,183, 98,110,167,101, 87,160, 32,205,251, - 6,130, 26,202, 32, 34,125,251, 55,250, 75, 72, 62, 2,219,196, 61,223,131, 39, -181, 17,167, 29,255,105,161,154, 60, 73,181, 38,243,143,199,196, 57,177,245,234, -156,245, 19,161,102,148, 61, 96, 29,154, 15,135,242, 80,250,136,248, 77,121,154, -203, 53,144,248,186,143,113,182,243,140,107,110, 2,143,188,182, 82,172,121, 71, - 76, 20,210,200, 59,240, 47, 78,252,104,250, 65, 77,167, 86, 52,144,159,252,218, -241,145, 65,101,112, 67,155,247, 4, 50, 87,108,203,247,109, 94, 12, 38, 95, 6, - 74, 45,170,212,243, 76,179,234, 46,177,132,176,196, 60,239,224,182, 14,240,198, -178, 49, 56, 86,212,163,162, 15,129,152,164,140,136, 49, 58, 84,127,108, 4,228, -244, 84, 90, 73, 86,193, 8, 84, 37, 40,162,211, 12,156,110, 34, 59, 18,254,152, -102, 57, 44,247,250, 17,229, 73,171, 36,242, 80,101, 68, 77, 50, 17,252, 45,191, - 72,120, 39, 37,122,205, 89, 99,217,168,201,149,218,207, 95,228, 82, 75, 61, 11, -161, 88,192,144,197,219,128,118,225, 47, 74,233,240,165, 65,135, 24,134,216,250, -185,231, 22,125,150,233, 94, 57,122,198, 91,180,118, 68,108,236, 3, 3,152,128, -161, 8, 71,229,132, 12,145,204,161, 3,215, 76, 24,248,161, 0,241, 12, 6,150, -112, 29,133, 24, 69,138, 76, 17, 50, 58,231, 20,245, 94,243, 97, 32, 47, 26,116, -215,166,133,214, 88, 0,247, 17,246, 34, 55,182, 56,193, 16, 57, 52, 63, 90,209, - 34, 78, 90,173,155,139, 24,220, 29, 18, 80, 50, 52,200,154,199, 2,213, 75,201, - 82, 56, 61,131, 47,138,148,137,197,211,111,196, 43,131, 12, 65, 15, 24, 98,133, - 25,207,208,165,201, 18, 77,230,157,245,106,102, 64,196,210,226, 63,174, 36, 69, -199,144, 73,207,243,211,130,252, 87,248, 78, 54, 77, 95,133,243,236, 25,176, 28, -117, 37,154, 75,156, 38, 28,173, 92,193,255,151,147,128,198,130,217, 66, 76, 76, - 33, 74,132,252,139,171,227,220,140, 90, 26,195,168,251,192, 23, 46,241, 27,105, -122,153,216,247, 41, 3, 6, 17,167,103, 72,240,222,139,180, 92,208,224, 18,225, -227, 21, 76,204,156,130, 63,148,169,219, 26,159, 95,145, 59, 18, 43, 20, 93, 50, -246,144,221, 66, 4,194,254, 25,138, 99,133,195,195, 44,183,253,132,176,104, 9, - 24,120,192, 20, 12,241, 37, 66,154, 74, 40,114,211, 61,150,140,195,190, 30,199, -100,178, 37, 51, 8,219, 12, 15, 81, 11,168, 2,126,159,131,107,163, 26,177,126, - 85,166,168,124,137, 38, 87, 81, 2,208,252, 38, 85,192, 51, 58, 5,146,129,190, -102,159, 90, 75,241,125, 77,218,124,158,126,153, 77, 83,171,101, 38, 39, 7,235, -229, 27,196, 74, 14, 96, 83, 57,175, 8,130, 10,215,243, -} ; - -// ../Source/Template/GB_AxB_saxbit_A_sparse_B_bitmap_template.c: -uint8_t GB_JITpackage_13 [4065] = { - 40,181, 47,253, 96,174,115,189,126, 0,138,110,116, 20, 45,160, 14, 93,231,122, -116,135, 4, 1, 73,208, 36,142, 42,115,127,127, 22, 25,112,137,252,151,177,241, -167, 13,244, 52,233, 10, 79,113,181,154,155, 43,120, 29, 94, 71,158, 28,103, 8, - 52, 1, 69, 1, 55, 1, 18, 62, 61,162,214,159,156,163, 77, 98, 47,220,248,163, -217, 79, 83,178,155,228,250,185,217, 23, 78,143, 15,126,244,242,243,200, 10, 54, - 68,190,245,253,111,125,178,157,149,151,106, 89,255, 63, 3, 67, 5, 12,195,184, -222, 38, 55, 48, 76, 19,204,131,141,196, 20,218,158,103, 55, 48, 76, 32, 88, 52, -153,132,227,109,114,221,176,177, 48,248, 54,229,227,180, 53,157,244,123,198,114, - 97,178, 7, 19,215, 22,122,218,108,233, 35, 77, 90,143,103,229,238, 90, 87,158, -236,169, 44, 91,169, 73,238,209, 97,243, 81,231, 12,126,124, 63,155,141,109, 88, -233,149, 94,248,133,154, 38, 79,167, 3, 59, 71,207,159,123,122,103,127,227,202, -247, 74,205,126, 50,203,207,111, 87,122,206,114,199,229,119,120, 94,200, 57, 72, - 30, 29, 42,131,163,207,117,135,237, 99, 12, 15, 14, 72,131, 63,154, 4,175, 87, -149,155,235, 59,121,179, 52,216, 78,214, 90,162,225, 32, 2,227,216,248,162,178, -229,204,237,253,120, 58,115,207,187, 30, 9, 64, 30, 32,141, 3,143, 7,200, 39, - 77,122,180,125, 33, 35,238,184, 62,250, 92,250,245,230, 81,115, 73, 72, 62,160, -172,148, 74,195,183, 67, 13,131,103,246,231,142,166,252,229,241,216,163,132,113, - 89, 9, 46, 13, 16,216, 43, 80,126,153, 36, 99, 91, 37,104,179, 43,187,221, 17, - 73,155, 73, 68, 87, 38,161,220,193,129,161,225,224, 16,147,136,140,129, 69,194, - 4, 2, 69, 80,231,145,172,252, 54,242, 38, 80,236,164, 79, 93,108,233, 58,152, - 72, 96, 46, 20, 24,132, 1, 3,158,153, 88, 36, 48, 22, 74,214,117,118,101, 27, -137,138,203,131,109,231, 83, 71,194, 92,151,205,196, 68, 51,201, 96, 50, 80, 23, - 78, 74,169,176,215, 9,233,230, 61, 78,121,228,215,145,123,146,107,246, 43,169, -199, 69, 88, 40, 38, 40, 46, 25,132, 0,182, 32,211, 84, 72, 96,176,202, 37,210, -171, 63, 92,193,169,237, 76, 66,137, 18, 52,182,166, 23,146,132, 34,153, 24, 29, -137,244, 73,234, 80, 42,111,149,190, 82,144,252, 62,191,208,163,218,103, 63,130, -179, 49,234, 52, 58,143,147,117, 74,164, 1,206,200, 33,143, 6, 4, 84,129,211, -162, 32,172, 63, 36,211,163, 81,197, 74,138, 15,143,220,101,251,241, 87, 37,123, - 26,227,167, 46,210, 56,146, 36,154, 78,153,176,100, 44,151,137, 38,203, 52, 0, -222, 48,217,187,208,206,184, 69,132,179,214,158,205, 42,210,169,115,156,171,117, -189,150, 43,227, 55, 67,112, 67,237,244,138, 42, 92,133, 53, 9,218,174,210,208, -101, 79, 38, 49,153,216, 88, 36, 14, 46, 77,180, 92, 44,214, 61,158, 18,108, 88, -159,125, 31,191,222, 46, 58,143,210, 39, 40, 44, 27,203, 38,115, 97, 38,131, 30, -111,149,215,130,126,179, 2, 6, 46, 38,177,124,193,179,191,202,151,183, 83,212, - 60, 68,228, 15,183,164,201,122,242, 98,106, 21, 37, 77,218, 87,171,103, 8, 24, -197,130,108,211,145,128,210,179,176,181,185, 78,192, 29, 44,199,245,143,214,159, -144,141,143, 70,150,101,243,244,254,225, 31,173,236,153,178, 94, 50,233, 45, 95, - 89, 25,164,231,207, 70,235,143, 94, 57,137,136,184, 38, 17,155,204, 68,163,185, - 88,147, 30,216,152,163,141,155,218,254, 70, 63,151,191,201,159,208,185,134, 55, -228,102,159, 59,247,188, 14, 93,203,239,136,215, 11, 45,215,203,241,137,190, 76, - 82, 41,167,247,134,224,236,207,206,176, 75,231,227,198, 87,106,212,243,228, 71, - 30,118, 81,215, 43,191, 56,242,238,228, 90,195, 11, 20,197,220,221,170,128,143, -153, 73,101,115, 81, 38, 12,148, 14,234,236,146,109, 38, 20, 9,137,138, 5,211, -227,242, 9, 0, 62, 65, 62, 64,146,250,187, 71,105, 39, 83,201, 50, 20,217, 68, -163,105,160,185, 46,151,119, 26,127, 44,176, 14,166,253,145,115, 56,251, 78,170, -125,178, 0,112,198,187,210,125,202,122, 67,188, 27, 59,189,175, 76,193, 12, 3, - 35,159, 64, 7,231, 33, 64, 1, 52, 71, 86, 96, 4, 6, 56, 95, 17,152, 10,139, -154,108,185,130, 23,174, 37,122,148, 62,217, 88, 50,156, 81,189,147, 31,226,249, -202,244,112,203,186, 5, 8, 68, 85,192, 8,231, 42,145,127,154, 58, 30,233, 14, -140, 83, 45,189,114,134,195, 43,116, 60,147, 77,133,131, 74,247,216,127,236, 90, - 62, 70, 62, 93,233,147,204, 37,129, 5, 12, 12, 23, 40, 14,215,215,134,160, 77, -254,134,157,199,141, 57,122, 27, 94,176, 59, 14,199,122,119,119, 40, 52,157, 3, - 17,177, 30,154, 42, 72, 75,183,221,176,242,220,167,141,175,149,218,157, 66,161, - 24,187, 45, 24,147,244,234, 12, 80, 4,203, 58,182,134,132,170, 71,136, 3,233, -234,209,156,137, 35,157, 47,180,196,233,230,112, 64,169,226,112,143, 12,233,164, -255,156, 87, 14,182,216,247,133,150,235,230,119,112,244,182,242,103,235,203,145, - 31,208,222,214, 26,147, 47,218, 51,161,243,159,219,161,199,199,227,113,117,246, - 94,142, 70, 52, 76,190,183,107, 40, 18,169,116,134,140, 71,131,192, 43,125,132, - 60, 62, 30, 31,110, 43,207, 16,101,239,192, 99, 68,176,153,176,100,147, 76,197, - 6,115, 97, 23, 14, 84,168,108,211,237,194,109,233, 16, 0,116,100,125,198,193, -243,116,226,119,240,149, 27, 24,126,122,114,179, 44,238,124, 74,141,107,204,114, -161,216, 92,149, 91,176,240,200,187, 3, 4, 8,240,164,144,233, 2,192,178,164, - 63,104,101, 10,241,210,121, 80,107,213, 67, 53,251, 59, 95,121,109,131,111,207, - 22,241, 54,251,234,134,136,220,234, 80, 89,215, 69, 56,120, 93, 83,148, 80,186, - 83,214, 37,224,187,169,235, 30, 63,151,244, 43,171,116, 20, 69,117, 29,164,171, - 30,221, 37,157,250, 36,194,170,106, 82, 43, 47, 66, 10,227, 65,129, 34,103, 16, - 49, 65, 17,132,106,168,147,137,146,214, 57,166,100, 68,100, 36, 41, 72, 90, 3, -243,160, 16, 16, 20,145, 76,230,147,161,168, 85, 31,163, 97, 17, 57, 16, 29, 67, -129, 72, 20,130, 64, 60,130, 32, 32,131, 64, 32,130, 64, 8, 33, 16,193,132, 16, - 70, 4, 68,236,142, 27, 5,186, 41, 71, 39,255,139, 14, 55,255,247,179,236,238, -207, 3,131,249,124, 91,219, 86, 9, 20, 45, 65, 46, 5,210,177,133, 40,221,200, -203,206,212, 20,252, 81,156, 4,213, 53,143,237, 25,254,144,177, 75,164, 7, 25, -126, 66,169,101,166, 41,190,210,235, 97,239, 58, 39, 60,203,154, 9, 72, 43,185, -152, 66, 65,139,164,202,243, 99,176,244,135,116,226,139,219, 7,212,242, 55,243, - 82,246, 56,219,171,126, 51, 68,116,141, 89,230,161,222,197,168,189, 67, 79,208, -193, 3, 46, 96,197, 24, 25,156,191,139, 38,204,171,130, 96, 14, 58,209, 23,150, - 99,164, 93,242,187, 68,108,128, 20,173,164,188,252, 60,105, 20,181,227, 41, 2, - 4,179, 5,203,157, 90, 26, 6, 80,132, 31,105,219,135,170,252,160,157, 4,135, -160,232,135,191,210,134, 11, 62, 18, 20, 98,142, 55,245,242,121,173,108,255, 7, -100,206, 83, 91, 19,242,244, 41,169,199, 12, 87,190,101,180,156,255, 22,119,196, - 6,148,218, 16, 65,150, 42, 90,189,126,192,249, 29,100, 0, 75, 1,130,209,134, -170,187, 50, 21, 14, 54,249, 8,130,159,181,152,229,143, 97, 13, 99, 50, 69, 73, - 63,188,141,163, 67,129, 34,228, 42, 52,102,182,117,215, 8, 67,122,252, 14,124, - 81,227,163, 55,177,131,210,252,229, 52, 68, 93,163, 50,184,243,138, 99,103,212, -142,189, 46,227, 25, 85, 83,118, 79,224,201,248,111,148,239, 3, 94,108, 1,107, - 71,157, 45, 80,134,122,185, 68, 52,117, 94,243, 3,250, 75, 30,214,157, 66,236, - 81,244, 86, 37,104,225,105, 27,203,129,201,156, 49, 78, 46,213, 20, 85,116,119, - 38,203,228,246,132, 53,135,252,131, 11, 31, 63,183,241,133,176, 23, 36,139,158, -173, 22,164, 42,205,181,139, 39, 99, 47, 2,236, 66,103,200,136, 89,150,153, 85, -153, 48,204,120,224,238, 62,205,190,221,130, 26, 61, 74, 9,152,185,188, 68, 67, -206,244,106, 24,115, 93, 87, 12,122,210,156,205,158,110,222, 71,199,220, 40,154, - 92, 53, 27, 28,109,112,228, 19,137,107, 37,202,240, 39,242,253,183,190,176,136, - 21,182,220,237,161, 26,149,227,150, 38,106,237,123,223, 80,243, 73,113,218,104, -166,160,147,118, 68, 56, 17,148,188,112, 78,172,172, 19, 52,217, 92, 52,115, 54, -202,213,194,236, 72,188,110, 27,211,149,240,196, 13,185, 77,165, 51, 90,194,199, - 52,196,112,140, 42, 74,246,218,116,139,237,243, 65, 39, 80,249,220, 55,218,237, - 40, 29,170,238,202, 18, 49,122, 52,119,150, 10,166,198, 62, 50,194, 43, 24,192, - 46, 16,172, 5,222,180,204, 81,165,204,103,117,127, 74,133, 63,193,180,205,137, - 10,245,222,231,248,226,138,102,130,189, 36,174, 72,212,200,230,140,165,148, 14, -161,207,217, 15,224,176, 0, 13,126,119,246,116,238, 22,127, 38, 44,217,138, 38, -140,103,226,134, 41,140,227,121, 57, 38,130,240, 75,158, 31,244,243,233,203, 17, -183,227,138, 38, 91,224, 32, 93,130, 59, 19,110, 17, 77,200, 47,186,118,168, 24, -233,219,152, 42,209,107,144,156,166, 55,236,162,169,133, 41,235,234, 50,164, 73, - 2,121, 76, 41, 24, 87,219, 65,201,104,138,154,106, 41,223,100,201,131,122,136, -174,242,187,182, 68, 80,181,119, 57, 33,146,158,106,144, 41,101, 47,132,203, 2, - 95, 37, 17, 11,140,182,124, 0,211, 95, 38,198, 30,109, 45, 6,162, 96,210,157, -218, 16, 32,109,130,192,232, 8, 59, 1,218,169, 59,247, 65, 79,171,128,242,194, - 1, 50, 41, 99,157, 69, 23,255,113, 96, 68, 7,252, 49,202, 37,228,220,156, 20, -198, 30, 66,190, 26, 32,133,155,155, 91, 81,130, 69,132,101,150, 83, 26, 35, 58, - 8,210,194, 54,124,165,215,104, 77, 8,203, 57,145,178,140, 14,217, 29,101, 19, -231,139,254, 72, 35, 7, 80,215,186,196,226,184, 83,153, 55, 75,177, 37, 31,146, -183,241, 22, 78, 72,150, 49,208, 45,203,130,110, 16, 78, 70,115, 98,155, 19, 79, -123, 54,183, 70,223,220, 92,231,253,113, 64, 65, 3, 46, 57, 34,159,123, 15, 8, - 25, 77, 6, 73, 11,183,119,104,123,152,237, 96,204, 4,172,233, 37,146, 60,108, -213, 4,242, 73, 65,169,248,248,202,181,119, 45,212,168,105,200,113,209,240,139, - 65,236,156, 96, 83, 66, 7,157,138, 84,135, 86, 97,143,186, 17, 17,208, 87,121, -139,216, 43,138,114,213, 15,144,118,160,220,226, 39,118,169, 79,211,190,239, 46, -213, 74, 66,118,211,104,150,129,253, 61, 15,133,179,178,152, 13,146, 6, 82,204, - 90, 14,158,162,231,118,175,166, 74,246,213, 1,167,112,234,221, 38,121,134,102, - 33,185,147, 94,113, 21, 27, 85,150,128, 56,235, 18, 44,102, 2, 48,151,182,183, -105, 49, 30,128,234,248, 48, 1, 92,146,158, 87, 67, 67,138, 71,205,209,144,158, -209, 73,237, 16,182,180,125,202,158, 53,200, 48, 20,178,119,227,122, 6, 81, 65, -132,136,189, 61,108, 53,213, 52,222,195,199, 90,246,102, 85,222, 6,119,195,125, -141,129,100, 37, 72,150,239,241, 12,218,217,142,130,150,112,154,140,121,252,152, - 18, 18,105, 69, 94,140,132, 0,149, 52,200,117,192,150,238,132, 9, 74, 21, 15, -102, 58,194,232, 39, 67, 30, 9,206,103, 59, 6,207,178,180, 68, 31, 57, 1, 73, -208,224,190, 37,131, 6,214, 36, 74,201,229, 74, 90,100, 20,120, 62, 52,199, 48, -155,231, 27,245, 15,194, 38,238, 26, 85,209,149,233, 98, 48, 37, 37, 71, 86,158, -212,125, 98,113,158,210,223, 14,135, 91,158, 54, 86, 46, 9,237,162,133, 41,209, -184,165, 27,218,216,154, 99,242, 32, 92,166, 4,119,225,101,152,133,125,183,151, -179, 71, 2, 57, 77,235, 20, 47,194, 21,104, 40,178, 90,125,115,184, 88,216, 22, - 97, 51,188, 93,198, 67, 23,176,130,236, 3,206,190,158,199,144,101, 97,102,245, - 34,217,175,184, 40, 39,112,118, 73, 66, 13,185,114,108,243,155, 1, 67,135, 66, - 72,116,168,132, 79,238, 40,210, 39, 48, 48, 67, 29,165, 32,146, 34,120, 88,116, -101,236, 88,175,125,210,235, 16,210, 96, 60,247, 60,163,108, 56,195, 30, 34,131, -179,100,197,238,220,112,121,238,107,207,203, 94,159,127,186, 63,163, 4, 90,222, -183,229,141, 18,225, 13,126,227, 22,133,225,210, 93,119,195,226, 41, 48, 85,162, - 53,182, 7,231, 29,253,233, 53, 76, 86, 54,130,230, 12,201,202,238, 25,212, 56, - 50,154,192,125,113, 71, 73, 25,235, 90,134, 90,108,167, 31,201, 96, 82,164,244, - 21, 57, 55, 97, 59,186,199,213, 76, 92,180, 78,241,141, 38,103, 53, 56, 61,220, -133,191, 60, 80,136,219, 41,199,116,242, 75,252,226,117,135,225, 62,244, 19,214, -143,129, 8,139,233,112, 82, 15,114,208,144, 18,212, 73, 6,246,240,100, 77,209, -139,141, 76,188,157,239,163,221, 4, 74,236, 88,195,142,152,164,129,104,132,244, -150, 29, 61, 87, 70, 16, 36,141,203, 93, 15,138, 96,102, 29,107,181,241,137, 11, - 63, 72,134,240,221,135, 0,134, 17, 57,107,197, 22, 51,221, 98,136,119, 63,120, -106,122,144,123,239,154,111,203, 4,178,140, 35,117, 41,155, 84, 97,248,233,250, -141, 96, 67,179,190, 87,151,240,154, 60,138, 19,166, 55,239,163,183, 89, 91,114, -249,227, 91,102,158,108, 55, 51,216,101,192, 92,167,228,110, 50,176, 15, 41,141, -112,157,113, 32,226,246,221,232,165,119,184,255, 72,192,247, 96, 40,119,227, 44, - 36, 21,112, 67,122,216,227,194,100,210, 50, 12,136, 77, 56, 19, 60,110,202, 88, - 66, 30, 12,228, 24,123,222,199,131, 98,247,253,179,189, 62,224, 24,126,188, 74, -163, 35, 87, 59,246,136,139,215,121, 67,203,241, 85, 66, 70, 11,126, 97, 42,192, - 65,170, 36, 72,155, 82,141,181,131, 8, 51,199, 32, 60,151,108, 45, 19, 39, 91, -158,226, 35, 76, 69,252,170,154, 49,193, 20,237,232, 26,163, 59,205,178,227,107, -178, 34,254,152, 1, 48,104,144, 9, 52, 12,255,159, 64,132,165,148, 12,151, 67, -201, 73,222,242, 86,149, 83,253,242,116,115,244,118,202,129,198,246,190,102,156, -168,149,155,167,204,251,109,147,232,108,116,254, 95,235,216,118,217, 65, 15,237, -178,243, 56,178, 48, 45, 55, 69,236, 30, 97,116,167,112,215, 14,139, 99,180, 79, -192,134,206, 73, 69,175,142, 58,165, 13,201,217,251, 16,179,121, 97,117, 60,196, - 76,195, 66,131,122, 27, 58,189, 84,145,151,114,131,197, 25,198, 85,245,196,193, -203,155,197,188,219,159,229,245, 68,236, 33,139, 71, 10, 1,195,129,186,133,199, -187,115, 43,221, 2,143,231, 13, 19,213, 67,251,192,125,172,191,130, 99,163,108, -135, 17, 89, 93, 66,233,166, 29,192, 22, 65,156, 12, 74, 98,162, 16,121,147, 71, - 77, 80,227, 1,154, 19,134, 62,166,229,217,137,179,116,116, 30,184, 72,190, 94, - 77, 32,133,108,201, 9,121,254,125,106, 84,101, 41, 96, 12, 9,164, 18,255,197, -148,169,240, 52, 91, 45, 16,187,218, 95, 44, 52,152, 29,233,150,237,249,178,151, -158, 89,113,168,225,182, 38,244,249,105, 54, 78, 59, 65,170,193, 17,229,219, 96, - 78, 49, 68,100, 4, 9,161,200, 44,167,163,251, 43, 12,252,101, 33, 46,108,126, -142, 16, 27, 85,214,173,209,242,166,161,197,242,125,209,140,202,249,174,147,181, - 43, 81,222,193,206,180,204,210,181,153,185, 33,188,132, 8, 64,160,158,200,196, -107,208, 41, 36,151,198,249,159, 60,163, 93, 49, 86, 10,113,168, 79,155, 2,138, - 41,249, 27, 82,147,184,224,144,193,121,175,205, 55, 13, 42, 95, 11,219,206,138, -178,192, 33,234,130,139,225,179,138, 92,102,209,218,197,101, 56,148, 4,220,102, - 68,199, 73,254,178,225, 5, 98,231,199, 31, 10,185, 78, 18, 59,146,173, 70, 60, - 22,178, 8,127, 53,165, 80,241, 99,198, 88,210,191, 17,114,140, 80, 77, 25,198, -155, 98,230, 87,208,155,154,112,209,213, 90, 59, 19,219,109,189,251, 40, 83,212, -180,106,173,131, 69, 20,252, 74, 50,255, 81,172,142,179,101, 60,190, 29, 97,149, -204,204,129,147, 4, 38,116,123,239,130, 90,253,225,250,124, 20, 35,185,191, 63, -183, 15,253,158,126,125, 13,174,128, 17,222,110,177, 73,102, 89,191,197, 70,101, -166,111, 9,198,254, 24, 39,177, 41, 41,171, 7,183, 48,134, 69, 90, 62, 58, 37, - 22,187,216,161, 75,196,186, 82,124,178,170,164, 12,170,154, 4, 13, 33,126, 21, - 15, 5, 62,206,167,226, 65,136,179,160, 55,240,135, 24,222,136,108,178, 84,145, -153,145, 7, 16,252,105, 96,184, 35,144,195, 19, 28, 76, 70,196, 11,102,186, 54, -101,185,169, 92,193,191, 48, 65,219,201,144,164,229, 63,100,208, 95, 92,169,123, - 15,134,189,209, 83, 29,180,125,131, 33, 59, 68,130, 40,142,143, 39,178,237, 71, -245, 57,110, 47,112,101,172, 87,216, 99,155, 93,121,255,123,232, 76, 46, 47,232, -243,110,141, 12, 39,118, 16,149,204,243,155,167, 52,201, 61, 64,194, 24,233, 22, - 14,150,217,188, 19,179,163,184,246,240, 52, 32, 24,164,219,160, 36,134, 1,244, - 79,205, 38,175,189,191, 56,221,126,122,216,156, 58, 48, 82,197,161, 49, 7,147, - 59,131,151,100,244, 72, 36,185,132,207, 64,120, 19, 71,130,247,119, 62,180,168, - 62,166,247,243,147, 27, 68,160, 63, 11,202,131, 77, 11,118,223, 22,174, 16,111, -178, 64,188,231,254,234,179,207, 19,114,254, 70, 76,132,128,228, 79, 80, 37,133, - 22,222, 71, 46,123, 88,141, 65,168, 96,204,242, 77,219, 43,182,159,217, 54,218, - 67, 84,210, 52,198, 92,182, 56, 59, 77,183,187,161,175, 69, 82, 64, 24, 68,131, -195, 6, 67, 59,229,142,120, 48,210,232, 25,172,109, 44,211,111, 12,153, 96, 51, - 74,152, 78, 76, 20,152, 6,176, 72, 53,122, 6, 87,152, 20,239,138,244,247, 37, -219, 48, 60,248, 0, 63, 49, 71,249,146,228, 57, 40,244, 20, 21,146, 64, 1, 57, - 89,141,111,153, 62, 15,202,113,104, 94, 5, 2,126,222,179, 9,145,244,153,249, -176, 65, 93,101, 73,168,237,149, 66, 68, 95,178,111, 16,179, 90,175, 73,231,163, - 6,206, 77,227,102, 65, 31, 89,130,166,221,216, 57, 66,129, 70, 42,235,162,221, - 99,154, 9,138,107,233,193,184,179,184, 40, 80, 33, 36,162, 68,127, 84, 34, 18, - 99,112,200,184,171,112,140,103,102,247,204,145,183,214, 44, 60,228, 33, 58, 31, - 40, 54,205,172,110, 48,177,157, 99,158,129, 51,117, 12,217,127, 24,215, 37,153, -112,122,142, 97, 27, -} ; - -// ../Source/Template/GB_AxB_saxbit_template.c: -uint8_t GB_JITpackage_14 [2199] = { - 40,181, 47,253, 96,208, 59,109, 68, 0, 22,253,183, 40,192, 84,117, 14,228, 92, -191,207,158,227, 11, 23,146,239, 51, 9,202, 26,192,226, 60, 48,177,183, 43,166, -238,194, 48, 56, 38,108,241,244,187,138,130, 45, 10,184,171, 0,166, 0,180, 0, -147, 82,233, 57,206,126,239,237,156, 23,218,121,235,154, 13,118,241,185,128,168, -112,141, 67,174,202, 79, 0,191,174, 5,189,111,152,103,120, 51,126,119,249,184, - 43,253,110,231,230, 30,202, 20,107, 33,112,114,169,100, 40,221, 77, 9,198,107, -110, 83, 16,205,181, 57, 14,165,113,237, 73, 43, 40, 24, 15,158, 10,215, 31,183, -113, 99,199,185,227,160,216, 61, 47,126, 50,200, 92, 50,148, 4,204, 37,115,105, - 70,159, 48,253,144, 15,175,196,135,186,108, 63,250,249,148,197,138,170, 3,229, -141,208, 52,190, 18,204, 58,211, 48,155,128,242, 59,166,183, 94,187, 3,121, 69, - 16,169,134, 75,128,193,186,102, 86, 58, 75, 15,252, 58,107,153,110, 33, 18,107, - 85, 72,212,170,136, 91, 44, 19,138,197, 18, 27,137,142, 86, 85, 91, 85,225, 26, -171,143,114, 82, 60, 69,213,246, 62,230, 1, 66,198,213,206,133,111, 13, 20,235, -212, 55,235,121,210,155,113, 95,130,103, 77, 33, 87, 26,146, 32,158,252,194, 37, -201,138,238,137,215,135, 83,105, 85, 68,244, 15,182,201,178, 88,197, 79,215, 39, -235,185, 57,254,255,147,201,200,165, 95,227, 91,100, 28, 13,227, 68,143,150,209, -241,170,125, 14,183, 87,249, 10,197,110, 15,201,239, 85,252,237, 46,211, 77,230, -252, 85, 37, 74,158, 23,130,166, 41,212,125,234,232, 89,126, 19,215,161, 39, 63, - 60,201,245,215,118,126,202,182,230,218,184, 47,120, 13, 71, 13, 85,121,113,212, - 86,251, 97,249,254, 36,253,181, 89,222, 6,237,191,112, 78, 9, 10,147,201,138, - 42,189,212, 49,209,232,122,232,230,218,239,166,236,204,169,130,111, 88,160,198, - 71, 44, 75,127, 59,103, 57,177,197,210, 64,201, 82, 72,116,141, 67,116, 41,132, -210,109,235, 58,240,186, 70, 34,128, 83,215,117, 93,210, 21, 65, 96, 22,218, 47, -151, 44, 58, 31,235, 2,251,100,158,203,194,210, 40,178,120,105, 30, 88, 94,223, -229,123,214, 90,132,226,144,143,118,117, 21, 21, 23,157,139, 58, 21,163, 68, 66, -242,232, 90, 45,198, 24,165,140, 92,123,219, 23,118,104,113,246, 71,149,148,110, - 91,215,129, 7, 35,182,241,100, 72,108, 50, 44,122, 50,128,186,224, 89,187, 53, -246, 90,179,152,106,213,187,210,138, 77, 7,219, 80,104, 31,206, 4,168, 57, 16, - 21,144,170,232,156,215,157, 38, 82, 43,117,145,186, 69,127,168, 8,147, 73, 73, -135,115, 81, 62,123, 65,207,244, 87,182, 55, 63, 45,204, 83, 37,184, 39,189, 89, -126,247, 60,249, 99,226,181,112,131,107,142,185,195, 37,204,165,175,124,188, 38, -151,215,240, 82, 89,226, 39, 91, 79, 81, 63,128,133,161, 82, 17, 68, 42,126,210, -219,181, 57, 66,215,230, 41, 65, 1, 49,224,205,133,222,172, 63,198,224, 96, 15, - 12,220,235,122,219,227, 35,156,237,114,231,217, 94, 99,203,178,172, 73, 68,135, -131,113,174, 77, 86, 85, 85, 85,197, 24, 99,199, 3, 48, 41, 49,192,100, 48,246, -182,200,215, 65, 53, 26, 92,169,157, 7,177,245,214, 65,152,147,125, 59,156,235, -196, 81,233,164, 94,107, 25, 45,187,168,240,104,216,230,243,137, 86,214,137,224, -100,217,116,197,233,242,233, 1,130,163,168,130,212, 12, 25,146, 17, 17, 17, 73, -146, 20, 50, 28,194, 41, 4, 2,113,152,199, 97, 41,111,146,152, 28, 19, 65, 36, -130,192,136, 35,134, 17, 34, 32,132, 32, 66,228, 68, 34,145, 68, 35, 34, 34,109, - 3, 50, 36, 99, 83,106,231,140, 74,109, 26, 80,169, 77,128, 42,181, 21, 43,133, -171,143,157, 43,233,207,133, 59,160,138,125, 75,105,145,204, 34,181,254, 36,181, -105,143,162,180, 45,130,156,160,106,200,251, 68, 75, 77,150,193, 74,153, 58, 24, - 60,253,203, 2,116,159, 97,209,208,198, 82,127,244,129, 5, 30,136,162,115, 34, - 77,100, 94,230,132, 34, 70, 64, 45, 44, 95,104,188,216, 43, 43,210,161,195,246, -183,172,196,147,168,157,158,115, 92,122,104,119, 8, 18, 0, 73,238, 4,176,233, -205,216,107,208,116, 4, 44, 19,203, 4,160,126, 64,111, 6, 82,185,171,204,180, - 14, 49,204,150, 79, 58, 3, 64, 61, 40,222,184,100, 19, 65,104, 35, 40, 54, 78, -221, 27,183,176,165,132,167, 20,117, 68,171, 24, 62,213,142, 82,210, 13, 87,230, - 60, 38,133,119,137, 0, 52, 1, 20,173, 33,152, 61,216,134,174,138,126,168,155, - 24,226, 97,158,181, 27,254, 4, 82, 58,235,153,147,132, 14,208, 37, 43, 77,165, -227,187, 59,204, 97, 15,103,250,195, 13,168,222,204,149,177,247,172,193,122, 4, -124,160, 48,215,125,199,131,213,133,203, 14,163, 11, 25, 26,144,114,213,107, 44, -162,187,102, 48,166,224,208, 28,222,168, 18,192, 3, 33, 49,245,214, 98,202,164, - 78,240,137,224,180, 77, 33, 22,156,197, 10,139,214,214, 45,156,202, 38,116,169, - 61,163, 75, 47, 15, 31,218, 41,225,165,201,203,114,164, 56,226,136,157,165, 4, - 62, 85,202, 28,234,228,200, 61, 14,123, 97,207, 6,143, 93, 31,138,109, 73,162, -218,226,173,254,253,203, 23,168, 0,155,159, 35,213, 91, 89,217,106, 57, 19,223, - 75, 15,100,164,234,149,137, 39, 63, 59,246,143,252,183, 45, 87,106,145,250,132, - 84,104,101, 37, 32, 4, 76,171,204,120, 90, 28, 17,200,158,228, 62,209,212,114, -248, 26, 46,221,180, 38, 34, 92,157, 24, 37, 64, 80,175,139,240, 11,145, 79,216, - 68, 49,113, 11,203, 50,190, 70, 37,148,126,197, 10,193, 51, 59, 1, 6, 67,158, - 82,128,144,222,234,152,229,213,139,143,249,106, 52,243,243,188,134, 56,124, 29, -164,195,187,155,115, 84,161,150,143,147,209,149, 67,137,209, 7,212,224, 17,225, - 9,200,247, 72,118, 24,122,191,128,157,185, 83,127, 87,168,221,247, 9,110,110, -141,232, 31, 48, 50,204,211, 8,191,208,141, 16, 17,245, 83, 58, 1, 55,126,144, -168, 29, 52, 54,105, 18,248, 65, 80, 0, 26, 22, 0, 62,172, 64,170, 94, 85,141, -251,236,241, 79,230,169,163, 13,184, 36, 87,230,173, 74,248,203, 12,109, 57,220, - 25, 66, 35, 47, 79,120, 20,162,229,133,140,221,238,126, 52,154,125,235,113,216, -183, 43,138, 78,169, 46,162,253,181, 11,225,199, 33, 25,198, 65, 59, 87,246,238, -239, 49, 98,207,110,140,148,230,216,115,216,207,217, 82, 70, 61, 3, 98,241, 41, -147,204, 38,101,176,166,171, 60,238,131, 52,118, 39,122, 48, 40, 89,248, 19, 88, -228,234, 85, 32,187,182,244,192, 59, 95,216, 36, 27,155,253, 80,222,168,244, 33, -212,132, 26,247,237,140, 55,127,235,106,224, 53,138,155, 74, 55, 72,164, 9, 79, -174, 96,168, 53,226, 83,154, 17,254, 41, 97, 2, 74,146,175,220, 6,208, 56,118, - 45, 14,215,252,187,246,120,122,166, 10,152,160,132, 37,238,164,150, 31,235,153, - 16,159,110,236,118,177,164, 57, 96,231,155, 20,139, 68,199, 62,172,128,215,108, - 11, 28,144,142, 51, 46, 59,147, 37,129, 87,112,202, 33,190, 3,217,224,130,195, -145,114,142,104, 21, 56,206,226,150,153,228,238,249,193,204,253,219, 50,252, 36, - 9,235,210,153, 59,172,233,149,171, 64,118,107, 43,164, 66, 43, 87, 4, 94,248, -179,153, 29,169,127,252, 81,139, 58, 49,196,240,210, 30,145,202, 64,223,232,230, -108, 38,132,213,148, 79,149, 66, 75, 21, 54, 45, 55,188, 56, 20,249,138,254, 50, - 1, 95,118,228, 36, 48,192,195, 14,179,169,219, 39, 16, 93,135,214,169,169,241, - 66,102,144, 29, 5,130,195,111,158, 65, 41,164, 69, 71, 89, 31, 18,225,158,143, -234,160,214,223,196, 8, 63, 63,107, 1,188, 11,204, 57,234,151,220,158,198,119, -202,240, 94, 43,222, 12,142, 43,168,153, 33,205,189,157, 3, 93,201,141, 27,192, -195,132,194, 20,144,136, 21, 79,249, 89, 95, 43, 66, 88,203,116,252, 66,231,191, -202,105, 24, 75, 99,248, 82,100,190,193, 10,247, 26,136, 62,169,188,165,194,102, -226,217,188,177,220,154, 67,209, 63,254,211, 85,243,130,110,201,195,226, 78,197, - 23, 94,240,131,119,125,172, 71, 44,240,153, 10,113, 80,152,161, 50,103,204,104, -108, 60,201,191,108, 77, 65, 67,230,117, 62,169, 52, 45,113, 76,126,108, 82,232, -246,206, 3,111, 71,141,198,155,187, 55,170,157,133,152,166,160, 32, 19,105,121, -118,164, 50,237,200,249, 58,176,226, 80,167,155, 96, 47, 20, 32, 32,133, 32,145, -174,150, 40, 68, 34,119, 80,174,222,124,237,244, 22,176,146, 84, 2, 26,198,152, - 22, 25,127, 44, 50,139,197, 75,124,172,168, 77,113, 55,176, 72,227, 78, 28,137, -114, 1, 16,238, 21, 45,175,249, 62,189,154,184, 13, 58, 42,116,155, 28,216,131, -203,113,141,206,120, 68,248,103, 91, 74,191, 44,210,159,146,101, 96, 37, 10, 66, -163, 57, 43,153,238, 20,134,168,152, 19,110,237,161,226,138,195,178,212, 5, 47, -132,114,184, 56,219,115,224, 43,214, 86,120, 87, 36, 28, 6, 50,230, 56, 90, 87, -111,116,209, 12,255,189,132,136,161, 62,245, 80,231,163, 7,101,177,120,219,221, -139,248,237,185, 50,207,225,120,160, 59,197, 11,105, 77, 88,149, 78,128,120,122, - 89,156,129, 59, 40, 18, 1, 73,191, 18, 38,128,169,222,221, 21, 33,165, 12, 10, -182, 73, 79,138, 80,136,102, 79,102,176,146,147,199, 7, 93,133, 41, 0,114,113, - 10,203,121,145,211,215,192,222,161, 3,233,152, 48,224,232, 61,215, 95,182, 78, -141,129,157,162, 20,168,190,120, 16,111,127,235,244,239,255, 26,150,186, 66,106, - 94, 13, 51,181, 37,103,152,106,133, 92,250, 12,255,235,137,255,211,106,179, 45, -238, 7, 17, 9,201,223, 41,170, 53,158, 48, 96,181,124,130, 16,198, 21,234, 6, -137, 93,200, 96,116, 8, 18,208,179, 96, 63,165,171,101,238,170,248,138, 54,198, - 19,190, 5,114,209, 50,191, 39, 90, 27, 99,222,206,251,126,247, 42,223,149,237, -126,223, 84,113, 96, 38,181, 33,126,115, 70,212, 66,142, 95, 83,225, 70, 18, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_M_phase1.c: -uint8_t GB_JITpackage_15 [838] = { - 40,181, 47,253, 96,214, 9,229, 25, 0,134,100,113, 32,208, 28,231, 12, 34,100, -239,121,205, 27,203,134,128,226, 28, 13, 53, 26, 13,112,206,188, 47,217,127,129, - 47, 30,200, 82,243, 2,107, 0, 99, 0,103, 0, 29, 90, 78,129, 84, 1, 25, 84, - 13, 59, 27,119,232, 56,179, 86, 54,116,146, 4,255, 45, 20, 8, 69,193,145, 64, - 40,238,133,221, 63,108, 97,181,114, 3,248, 25, 43,151, 46, 59,250, 39, 2, 57, - 19,150, 89,207,203,195, 20,117,182, 47, 17,215, 57, 43,219,216,191, 91, 98, 88, -205,127,104,201, 50,229,154,225, 63, 18,141, 43,203,164, 29,138, 95,151,198,103, - 45, 67,186,152,153,178,138,233, 68, 6,210,201,229,135, 3, 87, 56, 28, 2, 4, - 66, 37, 35,144,103,124, 90,113,188,228,227,248, 76, 25,141,124,109,151,122,130, -112,187,241,115,207,158,203,171,186,245, 95, 66, 34, 57,203,187,178,199,246,148, -127, 8,137,215,250,108,215,249,227,191,229, 12, 98,249,159,165,248,241,172,174, - 71,142, 50, 24, 12,166,139,152,127, 51,146,172, 54,219,155,249,127,174,198, 33, - 12,138, 66,179,194,106,130,127,156,109, 69,155,111,171, 50,133,198, 55, 88,113, - 9,193, 99, 52,186, 91, 46, 30, 48, 68, 93,157, 14,171,137,199,179,140, 53, 43, -191,204,215, 62,219,159,157,115, 13,113, 71,180,170,219,144,247,235,218,124,203, -240, 30,130,118, 91,169,135, 44,160, 18,198,102,187, 69, 20, 2, 65, 34, 42,202, -208, 73,119,209, 6,102,217,116,245,109, 86,236,141,107,120,178,218,176, 77,124, - 14,114,196,199,209,116,147,242,232, 38,207,189, 58,228, 45, 58,161, 35,203,197, - 11, 28,119,195,109,207,124,251,118, 95,158,167,106, 50,229,122,181, 40, 8,184, - 64,112, 15, 4,187,174, 11,125, 60,183, 91,172, 47,129,128, 87,149, 20, 33,135, -193, 19,157,127,253, 58,243,224,181,211, 53,155, 76, 95, 43,182,106,172, 35, 56, - 82,112, 20,203,143,144,147, 44, 21, 79,134,182,198,215,110,228, 19,243,144,135, -148, 95,123,159,239,171, 12,191,127,249,172, 25,211,142,217,133, 44,163, 17, 72, - 17, 61,113,132,248, 28,128,159,168,145,169, 66,104,134, 2, 17,145, 36, 41, 40, -164, 49, 64,132,144,161,171,234, 1, 34,145, 72,131, 82, 84,133,136, 49, 2,105, - 2, 9,103, 38,144,236, 68, 37,137, 7,144, 12, 32,129, 60,250,226, 21,152, 70, - 20,247,254,248,195, 19, 58, 24, 12,143, 99,120, 76, 24,226,199,243,196,207, 84, -220,128,148,251, 75,189, 59,118,241,127, 20,250,202, 85,162, 30, 88,135, 86, 39, - 60, 85,129, 4, 47,139,117,137,148,227,194,173,141,181,172,156, 83, 24,202,225, -227,195,226,139, 57,105, 77, 34,199,174, 18,184,192,156, 0,153, 16,153,145, 35, -227, 56, 88, 57, 37,180,137,160,198, 57, 9,189,150, 29,245,216, 6,245, 3,192, -122,255,123,180,120, 77,240,206, 14,147,130,146,178, 30,206, 24,201, 54, 96, 9, -217, 11,157, 6,234,195,224,146,196, 39,232,246,103, 93,170,140, 57,245,135, 52, -238, 59, 89,169, 1,235,114,111, 49,182,234,198,122, 71, 94,143,211,186,242,114, -123,189,186,148, 73, 86, 62,240,186, 65,184, 76,149,166,124, 2,136,107,140, 1, -231, 92,246,213,170, 2,121, 53, 3,206,193, 88,216,101, 27,218,102, 53,164, 53, -152,173,102, 1,202,214,160,201, 42,147, 97, 61,210,193,104,204,158,138,186,199, -169, 2, 51, 31,232,226, 23, 4, 30, 21, 82,162,150,240,152, 53, 38,171,207,248, - 76,239,187,248, 3,197, 69,228,195, 8,209,159, 53,116,234,150, 56, 40,194,148, -131,192, 14, 52,231, 95, 31,218,193,251, 5,208, 61,254,240,186,109, 79,245,177, -161,217, 76,157,135,140,234,170, 21,205,174, 22,239,128, 14,110,158, 65,243,254, -193,196,150,173,205, 57, 53,124,243, 33, 28,254, 14, 48, 41,221,129, 38, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_M_phase5.c: -uint8_t GB_JITpackage_16 [1094] = { - 40,181, 47,253, 96,105, 20,229, 33, 0,182,169,130, 33,208, 90, 61, 64, 7,193, -227,154,212,178,180,100,130, 86, 6, 0, 2, 59,124, 14, 78, 66,137,197,162, 54, - 75, 61, 12, 90,112,240, 2,124, 0,115, 0,122, 0,133,193, 65,112, 75,209,158, -223, 55,246,197, 36,238,250,142, 20,193,229,250,138,248, 34, 8, 69, 54,131,241, -174,246,229,151,243,188,151, 38,204,121, 20,234,123, 14,113, 40, 28, 4, 12, 67, -225,240,154,152, 61,199,241,202, 70,126,240,189,171,236,102, 10,123,158,235,124, - 23, 72,121,218, 45,105,156,157,219,177,170, 67,159,211, 38, 95,217,254,207, 65, - 2,159,247,192, 56,192,111, 40, 46,183,229, 89, 49,149,171, 36,151,111,107,138, - 21,225, 58, 91,150, 87, 72,235,171, 16,201, 19, 8, 84, 64, 32, 4,221, 95,149, -198, 93,155,226,107,133,247,178, 39, 5, 79,122,233,147,216, 61, 41,103,209,159, - 32,120, 62,133,105,219,102, 81,142,238, 59,223,152,204,239,125,206,223,107, 98, -209, 53,206, 74,111,216,244,189,252,251,117,125, 55,245,168,237,115, 6,207, 27, -140,119,155,218,132,159,227, 47,120,218,137,195, 25,230, 27,255,143, 7,164,249, -191, 77,242,243,182,169,119, 60,105, 48, 24,136,158,156, 60,231, 66,161, 44,238, - 88, 83,184,204,109,255,255,255,167, 20, 70, 3,144,243,187,231,239,218,119, 69, - 31,129, 95, 24, 52,238,185,190, 43,230,204, 56,161,199,243,129, 29,122, 69,123, -242,188, 77,150,185,111,239, 86,228,244, 13,135,247, 54,141,187,215, 18,139,236, - 67, 73,230,227, 84, 12,134,146,120,212, 55, 22,248,222, 3,107,216,201,132,145, - 26,122, 62, 27,140, 6,124, 17,239,171,111,217,199,203, 85, 28,151, 30,250,176, - 17,212,244, 69,173, 68,144,194, 9, 51,228, 29, 53,137, 1,180,145, 65,190, 95, -211,169, 66,170, 39,148,152,227,155,253, 77, 26,151, 1,148,198, 34, 25,142,166, -163, 79,188,109,224, 41,122, 12, 62,165,251,150,221,118,217,229, 18, 78, 60, 31, - 85,149,226,182,151, 87,215,182, 26,151,234, 54,201,154,205,250,101, 28, 77,102, -251, 34,155,207,166, 25, 46, 71,221, 88,111, 77,186,215,250,127,232,161,112, 64, - 53, 52, 9,100,108,223,251,158,241,229,131,225,182, 35, 4, 62,240,216, 11,192, -188,206,123,178,124,216,232, 43, 22,202,213,152,188, 35,192, 43,101,155,191, 92, -191, 76,154,159,187, 15,133,145, 12,165,158,242,107,199, 7,128,236,168,161, 49, - 67, 37, 51,146,130, 20, 20, 21, 50, 28, 48,132, 16, 82,140,170,234, 18, 81,168, - 67, 57, 12,225, 4,132, 32,163,136, 17, 16, 1, 97, 36,146, 64, 36, 70, 68, 98, - 90,139, 1, 33,232,190, 97,222,119,142,129, 28, 23,223,119, 20,205,159,247, 30, -180, 95,178,209,222,167, 9, 66,202,186,161,155,162, 58,210,151, 20,232,219, 13, - 82, 33, 12, 91,120, 14, 14,193, 10,254,205, 72, 73,221, 73,213,106,169,210,221, - 51,186,225,176, 42,157,207,133, 78,231, 46, 65, 82,178,204,108, 73,155,249,194, -128,106, 20, 95,149, 34, 0,167,177, 23,187, 30, 16,250, 28, 36, 38,253, 47,130, -172, 45,150,101, 11,230,208,242, 44, 86,108,236,204,142,200,250, 38,133,103,249, -200, 78,225, 96,147, 51,130,137, 58,152,114, 58, 45,238, 35,168,246,185, 64, 41, -242, 67, 37,108, 8,140, 32,242,168,160,112, 38, 68,205, 93,156,136,246,214, 0, -158,104,184, 1,186,150, 34, 49,212,147,213, 74, 81,191,236,145, 80,194,238, 49, -150, 45,188,239, 72,166, 83,201, 9,162,252,212,167, 18, 19, 87, 72, 21,225,137, -137,168,116, 35,180, 80,253, 25,157,238,190,252, 53, 52, 26,226,253, 57,238, 37, - 66, 79,232,244,209,136,163,131,235,248, 33,212,185, 76,240,148,131,103,226,150, -254, 10,152,170, 28, 91,144, 10,122, 68, 36,249,221, 98, 81,230,125,110,206,235, -208, 50,254,211, 24, 27,169, 66,224,183,127,169,198,191, 87, 68,132, 12,194,128, -134, 37, 73,217,216,254, 98,187, 43,228, 23, 35,148,166,122, 75,187,195, 85, 40, -140,102, 89,130,216, 34, 62,226, 25, 10,160, 45, 17,247,170,226,164,226, 3, 77, - 14, 32, 43,194,175, 36, 20, 84,151,157,237, 48, 63, 34, 0,163, 67,241,153,189, - 54, 62,138, 54,102, 2,232, 83,205, 92,150, 67, 73,199, 46, 93,251, 40,210,120, -191,108,217,156,207,123,191,187,203, 8,105, 40,168,147,181, 89,219, 93, 87,100, - 87,165,195,133, 5,243, 50,209,136, 76, 17,241, 76,195, 13,244,129,108, 92,245, - 32,248, 5,253, 93,209,237,152, 28,214,116,207, 13,241,129, 63,185,149,217, 26, - 36,194, 21, 57,125,132, 74,144,237, 16, 74,203, 54,184, 57, 67, 38,127, 98,144, -242, 45,116,131,241,184, 42,138,187,130, 99, 0, 38,242,255,113,187,115,111, 29, - 74,121, 1,237, 56,138, 83, 9,212,160,224, 19,206, 61,136,240,251, 7,240,192, -219,239,102,137,210, 26, 74,196,228, 26,205, 15,154,243, 15,166,110,181,183,157, - 44, 58,231,147,156,236, 34, 68,129, 16, 87,154, 4, 78, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_noM_phase1.c: -uint8_t GB_JITpackage_17 [764] = { - 40,181, 47,253, 96, 78, 8,149, 23, 0,182, 99,107, 32,224, 90,117,160,231,236, -231,115,156,176, 66,181,246,104,133,192,205,131, 4,183, 68, 37,213,119,164, 94, - 3, 51, 12,193,188, 23,103, 0, 96, 0, 99, 0, 18, 77, 97,196,168,147, 45,111, -110,111,137,212,155,143, 99,247, 77,145, 56, 36, 8, 13,196, 33,113, 13,204,190, -217, 70, 81,201, 11,221, 87,165, 91,146,221,249,198,233, 46, 94,201,164, 39,197, - 97,114,248,246,137,131,137,150,146, 47,235,183, 90, 90, 20,189, 63,216, 99, 41, - 34, 87,246, 14, 4, 91, 90, 50, 63, 76, 89, 63,123,162,176, 61,105, 9,126,138, -149,169,162,246,243, 84,221,231, 81,110, 48, 96, 4,131, 33,191, 76, 58,119,211, -231,125,157, 9,229,191, 54, 24,208,241,193,253,218,179, 67,241,144,139,226,239, -183, 96,220,218,217,127,172,133,213,147,237,107,166,173,179,200, 43,151, 82,229, -253,101,123,219, 15,245,207, 50,188,120, 82,242,143,135, 10,133, 2,232, 97,229, -219,106, 28,105,223,174, 22,236, 80, 72, 16,184, 4, 82,179,187,227,228, 14,251, - 86, 30, 89, 8,108, 43,131,125, 33,120, 2,218, 35, 89,229, 68,170,137,157,248, -117,226, 42, 44, 47, 94,197,163,218,220, 61, 19, 73,198,242,153, 68, 68,247,226, -206,167,218,183,150,224,234,154, 36,223,118,132,251, 67,162, 8,186, 25, 57,246, -214,225, 16,200, 89,213, 36,210,190,153,104, 62, 21,151,235, 19,206,166,211,112, - 62,142,229,243,178,135, 29,176,220,231,173,124,174,229,203,147, 89,191,101, 75, -193,143,180, 65, 54,237, 49, 71,230, 5, 24,246,194, 44, 55,163,168,165,131, 65, -101,182,183,148,123,138,107,127,227,211,121,181,240, 16, 64,183,216, 15,238,247, -164,215,126,157,217,153, 20,172, 60,162,192, 63, 4,130,143, 42,127,143,123,230, -185, 31, 14,106,131, 65,118,200,195, 95,203,182,242,232,150,201, 18,100,209,195, -254,106, 60, 41,159, 84,251,210,218,228,201,247, 91,237, 11,134, 61,170,172,189, -131, 60,128,135,168,129,173, 83, 68,164, 68, 70, 10, 11, 74, 10, 25, 14, 48,134, -144, 82, 85,212, 3,194,105,154, 36, 33,158,114, 2, 34, 48, 88, 64, 51, 50,202, -191,138,117, 12,148, 4, 2,230, 31,202,172,121, 77, 19, 56, 50,123, 80, 65,218, - 14,227,159,117, 23,113,170, 29, 2, 25,232,171,176,225,182, 5, 24, 50, 1, 6, - 66,243,113,232,166,186,197,147,120, 56, 37,128,124, 1,215,222,121,102,203, 92, - 48,163,102,187,173, 56, 43,213, 93,230, 56, 53,235, 17, 23,102, 66,208, 26, 13, -236, 2,124,128, 52,225, 33,155, 37,196, 63, 37, 38, 53,108,131,136, 84,235,180, -200,179,118,232, 23,184,213,168,138,169,243,136,221,165, 4,233,136, 65,250,168, - 36, 28,161,160,195,134, 5, 29,195,114, 61, 20,216, 36,185,244,204,211,245,101, - 21,219, 15, 8,254,200, 10,170,229, 36, 19,159,145,176,251, 84,133, 88, 43,178, - 35,106, 93,235,225, 1, 17, 5,204,171,163, 72, 50,148,158, 4, 15, 26,252,242, - 85,160,226,221, 21,235,169,254,206,251,169,227,220,197, 38,196,211,223,132, 46, - 87,236,190,158,171, 46, 21, 5,145,168,114,133,143, 24, 82,219,190,232,146, 30, - 52,118, 99, 42,169,149,130, 64,175,249,255,150,225, 31, 8, 55,224, 61,175,194, -182,149,145,104, 21, 33,166,197,185,117, 22,215,138, 34, 43, 97, 59,237,108, 46, -238,108,106,211, 28,255, 96, 82,212, 45,246, 25, 16,184,103,240,176,126, 33, 76, -168, 58,192, 24, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_noM_phase5.c: -uint8_t GB_JITpackage_18 [930] = { - 40,181, 47,253, 96,118, 17,197, 28, 0,102,231,120, 32,208, 92, 23, 3, 12, 34, -210, 48,115, 79,189,251,237,101,102, 38,131,210,156,195, 50,233, 64, 81,118, 90, -228,106, 6,188,120,130,115, 0,108, 0,110, 0,120,231, 59,106, 14, 87,231, 43, -226,205,129,116,241, 32,198,235, 74,175,190,159,235, 93,166,240,231,171,149,119, - 67,131,161, 96, 28, 34, 11, 5,227,156, 56,184, 65, 99,151,189, 28,225, 61, 86, -238,147,133, 67, 55,128,188,141,165, 68,109,138,145,160,160,187,113, 11,180,153, -218,178,126,230, 27,242,169, 93,118,255, 34, 78, 47,171,149, 47,121, 92,109, 75, -180,114,206, 92,117, 11,115,117,106, 79,177, 54, 98, 40,204,234,106,129,121,213, -130,121, 34,177, 29, 18,137,175, 95,109,197,175, 44, 22, 47,170,187,171,170,165, -134, 64, 76,108,163,172,123,142, 63,247,205,244,124,253,204,255,187,223, 86,198, - 59,159,226, 57,197, 41,131,147,135,159, 22, 5, 89, 86,137,221, 79,166,105, 58, -250,125,168,229, 99,182,231, 84, 6,201,224,251,190,169,127,219,102, 92,161, 96, - 87,147,238, 91,167,152, 52, 79,185,105,126, 87, 7,100,103, 60,120,122,146,255, -191,205, 54, 5,130,113,184,165,104, 81,239,146,244, 98, 50,132, 67, 22, 87,175, - 46, 24,118, 42, 72, 83, 75, 97, 88, 67, 48, 51,170,177,116,231,251,187, 74,101, -172,111,175,109,105,249, 77, 77,206,228,184,244,162,177,242, 52,218,117,213,184, -122,131, 11, 4, 95,160, 82,203, 34,241,152,111,237, 63,193, 59,229,171, 32, 40, - 4, 47, 21, 12,137, 60,156,206,135,200, 55,245, 91,238,241,234,214,247,153, 53, - 46, 67,255,246,217,199,229,187,114,137,159,230, 3,134,228, 29, 51,137, 3,227, - 53,254,247,124,203,219, 86,251, 37,252,116, 64,221,113,161,240,161,166,227,239, -220, 25, 63,189,229,182,131,205,198,171, 31, 48, 19,242, 10,222,197, 35, 42,212, - 54, 44,211,157,219, 63, 24,210,124, 70,149,148,233, 78, 56,254,140, 2,248, 9, -155, 78,102, 8,148,239,141,136,131,177,137,189, 73,247,157,218,173, 43,229, 30, - 74, 65,105,124, 20,155,166, 53,171,119,242,188,121,216, 29, 51, 38,129,151,208, -156, 61, 91,113,204,183, 78,110, 65,223,253,177,244,186, 42, 1,128,178,168,129, -169, 82, 12,201,200, 40, 72, 65,146,210,112, 64,132,144,161,170, 42, 15, 18,121, - 36, 78, 50, 28,130, 51, 74, 96, 5, 68,128,200, 9,136,226, 36,146, 60, 18,170, - 26, 3, 25, 44, 38,217, 27,147,118,174,134,214,178, 14, 98, 36, 47,253,198, 68, - 98, 50, 55, 37,216,101,181, 69,166,213, 19,176, 66,177, 55, 37, 96, 82, 99,146, -171, 94,109, 94, 0, 22,163, 80,162,194, 41, 77, 89,220, 3,225,133, 58,217,201, - 62, 54,129,177,160, 84, 81, 48, 65, 99,185,247, 84,188, 1,103, 40,166,132,157, -182,240,145, 9,124, 83,105, 89, 83, 48,131,153,202, 8,143,252,158,110, 76, 42, - 77,224, 83,176, 47, 13, 57, 16, 58,173,165,206, 12, 75,240,128, 67,193, 34, 23, - 10,237,209, 56, 64,168, 55,228,164,118, 83, 70, 33, 48,143, 14,130,180, 16, 72, -253, 97,230,228,146,235, 70,162, 91,115,245, 56, 43, 90,187, 92,118,239,227, 72, -194,161, 40,193, 40, 81,108, 0, 88,196,151,212, 18,129,235, 14, 33, 74,117, 78, -155,186,187,162,182, 68, 9,117, 18, 29, 67, 54,154, 81, 37, 48, 84, 29, 38,109, -149,181, 58, 37,182,119,252,106,185,205, 30,214, 40,148,216,115, 82,244, 27,255, -150, 36,231,171, 48,250, 13,198,248,145,198, 4,246,154,108,162,211,131,251,232, -163, 78,110,210,232, 66, 84,168,226,118, 43,183, 53, 38,210,241,165, 78,255, 31, -116, 10, 3, 1, 40, 92, 95,148, 56, 55, 45, 90,229,158,169, 26,244, 73,122, 10, - 85,207, 29,141,189,131,197,222,182,102,176, 64, 16,100,179, 30, 24, 11,145, 55, -139, 61,157,116, 74,123,144, 90,180,252, 99,244, 91,220, 18,134,171,160,208,141, - 43, 15,232, 19,136,157, 59, 41, 96, 51, 42,252,230, 57, 93,120, 81, 77, 69,126, - 28, 2,199,144, 5, 24, 85, 73,251, 90,148,220,171, 20,151,202,100, 1,216,201, - 26, 21,245, 72,184, 67, 36,252,131,230,247, 15, 38,173,222,186,158, 59,129,119, -126,139,239, 12, 1,175,106, 5,136, 1, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_notM_phase1.c: -uint8_t GB_JITpackage_19 [789] = { - 40,181, 47,253, 96,149, 8, 93, 24, 0, 6,228,109, 34,208,152,205, 1,192,153, - 59,213,232, 77,168,100,135, 83,136, 96,106,211,224, 67, 42, 72, 24,160, 62,212, -252, 5,190,120,144,165,230, 5,103, 0, 96, 0, 99, 0,144, 75,246,105,210,217, -184, 49,199,121, 4, 85,204,203,146, 59,134, 56,104, 7,194,194,160, 29, 46, 8, -175, 99,184,146, 40,228, 25,247,211,152,175,168,102,142,125, 92,165, 27, 77,122, - 74, 24,230,215,185,142, 62,203, 3,124,204,181,116,204, 94, 76,162,249, 15,107, -121, 61,162, 19, 62,195,208,152,142, 38,232,229,107, 65, 60,146, 52, 62,233, 13, - 65,196,201, 52, 81, 12,118, 38, 14,236, 36, 47, 20, 44, 66,161, 16,138,108,235, -101,187, 61,199,116,252, 88,106, 24,124,250,188, 22, 84, 47, 62,102,112, 56, 50, -219,141,159,251,244,124,237,113,253,227,152,230, 16,132,176,122,121,103,252,175, - 86, 38,222,255,188,226,201,147,138,222,120, 39,203, 50,206,197,201,177, 83, 89, -210,154,171,165,188, 80,248,127, 43,101,105,217,129,208, 99, 72, 77,238,140,179, -171, 88,179,237, 15,133,208,216,118, 88, 43, 4, 77, 61,230,223,108,235,115,253, -217, 57,211, 16,123, 98,253,216,222,222, 35, 91,179,189,225, 5, 26,202,134, 60, -130, 99, 34,151,205, 68,165,122,228,195,112,151, 15,252, 40, 96,119, 93,172,129, - 83, 54, 69,109,123, 44,189, 49, 13, 95,210, 26,182,137,111,109,215, 58, 36,201, -185,249, 96, 92,221,115,131,182,135,192, 14,204, 68, 36,255, 5,131, 1, 45, 27, -219, 51, 62,171, 72,222,113,146,124, 6, 19, 1,150,181,194, 93, 87,167, 51,219, -126,169,237,233, 96,128, 65,180, 20,183,167, 52,239, 88,143,206, 92, 47,174,222, -212, 31, 91,201,202, 53,182,115, 38,103,146, 28, 9,114,164,120, 79,110,215, 68, - 32, 22, 10, 24, 34,109,227,157,249,237,225,227,182, 30,101,237,179, 29,221,112, - 19,143, 29,203, 39,205, 24,244,204, 11, 19,201,100,184,199,183,221,112, 77,124, -198,135, 59, 6, 94,135,212,196,228,121, 75, 1,128,144,168,161, 37, 99,102,130, - 18,145,130, 20,164,160,146, 14, 48,132, 16,132,172,140, 7, 2,209, 40,132,114, - 88,196,140, 17, 12, 54,129, 4, 9, 10, 74,202,127, 61,128,208,208, 68, 39, 91, -137, 23, 60,166, 50,236, 18,144,169,202, 20, 25, 37,236, 35,100,229,202,238, 5, -249, 6,134, 21,150, 5,191,127, 16,153,131,150,224,207, 40, 73,225, 13, 44,226, - 67, 38, 24,247,123,108,252,205,177,176,169,163, 65, 57, 30, 29,193,181,206,173, - 23,117, 84, 47,109,147, 81,210, 72,151,184,104,202, 66, 63,194,103,147,228,120, - 36,153,139,100,126, 38, 23, 94,179,127, 16,166, 72, 38,199,167,238, 34, 39,139, -248, 67,200,222, 24, 9, 65, 42, 52, 26, 99, 8,170,138,133, 19,230,123,226,117, -171, 80, 57,212,169,165,227, 81, 98,254, 8,156,132,242, 12, 55,254, 83,163,181, -178,100,228,190, 31, 7,164,246,174,160,168,218,126,217,221,104,145,150,163, 57, - 67,189, 98,146, 7, 85,169, 34, 24,139,255, 96, 67,128,175,230,207, 26,189,166, -179,169,120,107,160, 61,149,244,225, 72,141,154, 40,168, 2,121,100, 86, 99,229, - 3,240, 32,108,243, 64,145, 90, 80,196,243,170, 64,166,102,124, 65,151,187, 28, -185,147, 57,210,169, 17,154, 88,236,194,162,140,138, 8,196,220, 66,255,216,233, -195,107, 54,111,227,117,223, 22,186,190, 11,236,176,127,204,147,242,134, 28,245, - 7, 21, 23, 30, 56,104,253,127,208,196,169, 96, 90,234,150,129, 46, 1,254,121, - 70, 46,123, 50, 48,169, 58,174, 19, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseGus_notM_phase5.c: -uint8_t GB_JITpackage_20 [979] = { - 40,181, 47,253, 96,232, 16, 77, 30, 0,166,230,119, 33,208,154,233, 64, 7,238, - 70,126, 9,199, 65, 35,252, 58,136, 18,211,129,143,110, 23, 0,144,205,173,250, -131, 43, 60,233, 32,126, 1,114, 0,104, 0,111, 0, 54,223, 46, 47,132,198,183, - 73,139, 33,128, 40,155, 66,217,169,181,113,115,142,243, 73,178,156,155, 76,221, - 55, 69,226,144, 32, 56, 16,135,196, 5,100,246, 13,219,212, 72,121,161, 59,235, -204,233,201,134,223, 58, 29,102,114,170,227, 90,121,168,157,206, 22,213,193,190, -221, 20,167,198,252,111,147, 65,199, 73, 64, 64,196,251,131,209,120, 60, 85, 17, -204,233, 21, 49,170,210,120, 29, 83, 82, 84,176,212,213,136,197,201,170, 19, 39, -149, 27, 12, 24,193, 96, 8,104,232,170,231,169,199, 92, 2, 77, 27, 77, 17,200, - 51, 94,173,137,158, 59,138, 62,139,139, 70,190, 54,251,154,154,183,123,244,242, -142, 8,173,236, 53,189, 36,155,226,111, 8,142, 43,220,110,252,220,172,231,244, -122,223, 14,156,160,180,217, 12,252,227,255,209, 53,114,145, 13,221,180, 60, 64, -192,177,253,233,125,230, 55,121,109,103, 67,241,152,255,255,199, 48, 23,118, 40, - 36, 8,125,146,163,218,253,177,182, 53, 3,106,198,249,194,176,243, 58, 88,147, -163,138,209, 53, 85,165,107,231, 60,146, 24, 59, 34,113, 78, 3, 65,211,150,183, - 95,131,238,156, 39,126,157,204, 71, 17,191,208,179, 1, 53,222, 73,187,246,109, - 82,217, 24,133,237, 25, 98,119,149,143,204, 19,220, 54,165, 72,239,194,249, 50, -102,151,215,180,129, 71, 54,121,110, 82, 73,156,136,225, 87, 73,203,167,249,164, -107, 79,200, 27,117,109,190, 41,121,193,225, 92,118,147,112, 81,235,150, 72,200, - 69,104, 24,246,162,100, 56,154,206, 85, 59,143,189,146, 86,211, 60, 53,116,235, - 97,107,159,121, 36,101, 24, 76,103, 9, 59,173,163,108, 60, 26,215,216,212,175, -252, 21,228,130,252,127,225,133,243, 17, 65,150, 65,198,120, 64, 60,126,112,206, -222,197,221, 60,109,214, 89,212,118, 17,200,185,119, 42, 55, 66, 71,180, 67,197, - 14, 53,211,163,144,131, 62, 74,230, 34,150,208,251,200, 39,234, 33,199,103,173, -157,194, 36,131, 55, 16,130,237, 91, 94, 69, 48,128,211,168,113,177, 98,106,134, - 36, 41, 40, 40,168, 20,134, 3, 64,132,144,169,170,162, 7, 2,113, 36,138,147, - 12,131, 20, 48, 99, 28, 18,140, 80, 80, 49,146, 87, 20,164,202,112,153, 5, 40, -203,128,114,252, 50, 65, 6, 91,194, 80,132,212,128, 82,125,169, 36,106,127, 7, -172, 71,116,234,141, 84,220,186,177,149,244,141, 7,183, 67,171,180,153,168, 28, - 65,138, 96, 41,183, 12,165, 43,133,188,209,123,179, 10,117, 21, 30, 80,222, 45, -148,168,246, 29, 37, 38, 36, 53, 9,136, 90,245,254,255,105,194,153,107, 2,209, -198, 30,114,169,164, 7,178,123, 4,122, 21,181, 3,197, 59,185, 35, 73,145, 20, - 6, 98,231,148, 93,234,103,229, 37, 19,144,160, 32, 24, 16, 74,128,196, 53,164, -109, 70,134,106,133, 54, 23, 90, 74,135, 80, 52, 34, 52,202, 87,213,239,161, 51, -206, 2, 91,199,100,139, 66,150, 1,155, 18,162,108,115, 44,207,113,180, 27,125, - 47,246, 60,164,157, 81,183,145,148, 85,241, 46,245,194,114,213,213, 4, 5,144, - 61, 71, 8, 41,249,212,233,255,189,177,124, 3, 69, 24, 18, 42, 98, 76,191, 12, - 28, 52, 4,159,117, 81, 47, 52, 26, 17, 30, 25, 65, 12,161,141,173, 6,251,126, -104,122, 43,120,231,246,194, 71, 41,100,119,161,193,185, 39,238,132, 95, 12,180, -129,182, 60, 93,194,100, 21,235,224, 16,234, 34,175,169,174,181,225,129,168,139, -223,148,249, 9, 36, 13, 12, 7,231, 19,176,244, 28, 67,182, 6,254,178,231,241, -103, 8, 86, 14, 76, 85,104, 97, 10,137, 81,103, 31,109,177,150, 78, 75, 95,113, -220,199,214, 48,192, 25, 99,120, 57, 15,235,211,209, 55,157,126,229, 39, 59,160, -132, 93,176,234,222,114,109,156,222, 21,119, 10, 89,171,221,230,216, 1, 95,197, -240, 47, 49,220, 15,252,170, 85,155, 69,230, 35, 61, 28,209, 18,160,109,196,208, -196,246,137, 98, 36, 54, 49,178, 4, 21,238,130, 63, 59,243, 6,157, 11,109,247, -140,160,106, 51, 96, 30,243,223,245,241,187,243,244, 37, 7,156, 34,123, 64, 1, -211, 19,234,232,222, 48,155,129, 77, 51, 40,166,149, 28, 29,209,160, 89,250,131, -137, 43,155, 77,168, 99, 7,213, 53,194,223, 20, 9,149,198,170,104, 32, 6, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_M_phase1.c: -uint8_t GB_JITpackage_21 [973] = { - 40,181, 47,253, 96,248, 12, 29, 30, 0,214,106,129, 32,208, 92,117, 12, 66,236, -247, 27,111,159,131, 98,141, 5,189,134, 34,104,163, 71,153,181, 89, 13,186, 46, -163,212,195, 11,148, 18,124, 0,116, 0,121, 0,134, 38,195,138,126,135,164,109, - 71,155,111,139, 25, 67,227,219,161,229, 24, 72, 21,208, 65,108, 87,218,184, 67, -199,153, 84,217,208, 77,243,123,199, 88, 36, 22,134,135, 34,177, 56, 23,110,239, -176,117,213,202, 15,223, 99,100, 62, 89,118,244, 78,244,113, 38, 36, 90,211, 11, - 4, 21,117,182, 45, 17,160,115, 50,219,215, 59,241, 36,115,179, 78,254,161, 53, -207, 20, 43,134, 15, 81, 52,174, 36, 10,118, 64, 18, 87, 76,227,180,158, 33,200, -136,161,176,138,193, 9,236, 3, 39,151, 35, 16, 0, 3, 2, 17,215,110,169, 43, - 10,135,219,141,159, 59,246,124,222, 78, 1,249,199,119,246, 18,174,236, 32,219, -119,213,181,247,214, 16,191, 77, 75,190,142,211, 55,174,225,177, 37,243,104, 47, -118,122, 94,149, 61,229, 93, 66,194,173, 58,187,117,222,137,109,209, 86, 24,158, -183,117,200, 8, 56,140,227,197, 91,143, 50,221, 98, 46, 57,249,220,156,195,120, -254,233, 57,190, 76, 43,235,145,163, 14,135,131,233, 35,230, 93,204, 52,171,205, -246,102,142, 64,252, 63, 96, 6, 72, 28, 22, 1, 87, 60, 49, 62,227,197, 37, 5, -174,225,216,110,185,120,190, 16,200,234,116, 88, 81, 92,166,231,171,201,252, 51, - 95,251,108,159,118,206,157,209,138,183,189,119,235,218,124,207,240, 92, 66,118, - 87,169,135, 44,160, 18,134, 70,187, 69, 20,250, 64, 34, 80,148, 1, 39,219, 71, - 43,136,101,148,213,199,246,183,201,151, 89,109,216, 40,246,158,184,228,168,178, - 52, 29,165, 64,182,201,115,171,238,125, 5, 78,192,145,229, 82, 40, 84, 51,226, - 61,227,212,142,229, 37, 47,203,103,176,225,200, 1, 0, 64, 13,183, 77,243,237, - 55,153, 1, 99,115,156,216,102,138,213, 90,129, 95,224,131,193,185,239,219,182, -208,199,243, 81, 68, 53,239,133,194,237,198,199, 85, 85,205, 87,223, 99,219, 58, -199,219,119,221, 74, 51,231,121, 47,107,167,169,115,137,209, 59,130,112,237,237, -197, 19, 56,206,110, 63, 93,179,201,244,181, 99,139,101, 45,193,175, 28,207,151, -222, 73,150,138, 39, 3,174,202,207,196,219, 96,228, 19,244,222, 67,202,175,189, -236,222,231,219, 58, 67,140,232,195, 4,128,191,168,241, 25, 51, 36, 51,129,200, - 72, 10, 74, 82, 72, 7, 80,134,136, 80, 21,149, 7,194,248, 32, 4, 18,141, 69, -144,128, 10,148, 9, 38,144, 72, 40,144, 64, 36,144,236, 4,201, 14,144, 46, 64, -150,117, 96,137,228,232, 1, 81,232, 40, 16, 13, 0, 88,164, 71,233,140, 92, 36, - 86, 18,181,188,243,173, 27, 9, 84, 40,110, 69,189,171,114,187,134,154, 85, 8, -108,162,194,128,201,161,176, 91, 98,195, 10,119,183,161,237,214, 9, 71, 64,134, -161, 24,228, 45, 2, 83, 66,232, 20,116,135,234, 30, 16,187, 27, 36, 3,109, 46, -195, 28,243,200,203, 11,153,143,201,115,249, 70,120,227,133,133, 70, 49, 7, 97, -134,156, 1,151,213, 9, 25,106,134, 49,128,116, 47, 33, 95,197,135,219,239, 37, -140, 78,247, 30,135, 93,177,194,147, 89,216, 96,217,208,138, 75, 54,221, 21,132, -251, 74, 79,134,241,230,140,190, 81,230, 6, 54,153,171,162,221,185,111, 30,122, -173,222,201,166, 56,129,181,220, 30,122,251,112, 77,100, 72, 28,200,157,180,152, - 83,128, 65, 53,197,121, 93, 3, 33,139, 2,159, 32,155, 18, 26, 9,159,195, 82, -215, 39, 12,241, 92, 42,211,137,233,128,127,108, 40,219,144,137, 98,159, 62, 14, -229, 95,139, 59,149, 13, 97,151, 9,133, 22, 14,169,197,143, 53, 12,156,162, 2, - 93, 69,200,131, 32,104,164,132, 5,128,119, 67,218, 20,243,133,117,214,184,228, - 97,118,214,177, 53,252, 83,205, 62,172,145,190,164,193,248,178, 48,212, 99,112, -122, 60,241,115,243,168,228, 18,199,198, 4, 90,108, 11,157, 22, 56, 82,188, 7, -125,210,192, 91, 88,125, 63, 33, 54,202, 82,156, 3,113,156,224,128, 2, 77,155, -185, 80, 34,244,253, 39, 55,124,111,194, 12,123,248,204, 11, 21, 52,145,100, 13, - 88,222,185,174,236,151, 18, 43, 17, 44,239,237,172,185,124,132,193,239,149, 65, -225,123,222, 34,244,129,114,140, 17,141,245, 31, 52,125, 84, 48,197,138, 39, 31, - 79,139,123,220, 35,204, 48, 16, 14, 74,209, 5, 15, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_M_phase5.c: -uint8_t GB_JITpackage_22 [957] = { - 40,181, 47,253, 96, 51, 13,157, 29, 0,166,103,122, 32,208, 30, 23, 3, 4,229, -206,118,228,234,138,161,151,139, 54, 95, 34, 66,117, 69,176, 0, 60,199, 98, 59, -200,213,112,192, 61, 21,117, 0,107, 0,114, 0,228,170,154,225, 31,167,189,227, -221,217,138, 25,130,213,217,174, 46,135, 96,170,128, 10,162,141,157, 86,219,208, -245, 38, 89, 55,116,151, 43,252,167, 72, 28, 18, 4, 7,226,144,184,183,234,254, -233, 27,171,149, 23,194,211,200, 93,190,238,232,159, 40,228, 76, 72,179,158,151, -135, 41,178,251,194, 68, 28,227,255,254,111, 34, 8, 35,146, 14,132,242, 7,195, -234, 74,154,180, 67, 73, 93, 49, 86,159,181, 92, 81, 5,205,156, 85, 77, 39,179, -144, 78, 46, 55, 24, 56,130,193, 16,223,250,188, 35,126,228, 24,127,211, 69, 99, -231,219,169,142, 24,100,107,245,183,165,125,151,249, 67, 68,190,251, 72,153, 89, -151,242,239, 16,241, 90,223,237, 58,127,140,133,113, 76,157,126, 49,143,156,252, -182,156,194, 88,254,103, 57, 30,159,245,117,200, 83,133, 66,225,244,143,230,114, -213,187,111,206,140,152,151, 59,223,139,246,180,123,215,149,190,152,171,169,175, -239, 59, 31,214,117,159,252,255,115,156,141, 59, 20, 18, 4, 27,183,251,109,168, -107, 54, 25,155,239,104, 69, 64, 68,133, 43, 14, 49, 13,241, 88, 30,127,102,197, -124,193,155, 44, 21, 79,134,182,240,109, 89,204,150, 66, 62, 49, 39, 19,140, 40, -196,128, 71, 36, 30, 25,228,251,192,183, 70,128,247, 22,141,238,150,139, 39, 12, -209, 71,215,249,182,172, 22,237,208,145,229, 82,138, 47,247, 89,249,146,224, 45, - 44,223,157,203,213,189, 67,247,145,240, 84, 45,183, 86,224, 83, 24,159,110, 82, - 40, 38,103,243, 6,131,234,130,128, 1, 28,119,235,222,162, 20, 90,177,132, 44, -152, 81,120,161, 21, 79,232,195,141, 86,204, 48,240, 30,185, 58,171,213,148,118, -214,124, 85,244, 44, 71,138, 75, 26,118,161,143, 39,164,136,194, 10,136,100,119, - 21, 77,216, 65,171, 93,246,118, 7, 3,138,121,250,165,236, 25, 6,188,183,255, -117,183,140, 50,161, 18, 53, 33,100, 54, 95,223,223,127, 22,118,110, 1,190,245, -145,111,124, 57,164,142, 7, 30, 87,123,170,238,129, 55, 8,158,239,239,197, 11, - 60, 47,128,201,168,177,165, 67, 37, 50, 34, 10,146,146, 36,133,225, 80,132,200, -208, 25,231, 1,194,232, 60, 2,178, 52, 1, 34,136, 8, 16, 17, 40, 66, 4, 39, - 16,161, 80, 2,145, 80,196, 82, 29,217,184,192,134,121,115,228, 44,151,255, 17, -118, 70, 9,135,158,206, 27, 42,221,153,102,231,146,118,143,140,230,188, 60, 18, - 44, 73,253, 15, 38,116,216,148,137, 20,166,117,104, 1,240,187,250, 69,106,186, - 95, 47, 66,130,170, 4,181,154, 39,121,172, 14, 87,133,125,174, 37,179,179, 34, -131,118,159,176, 59,135,172, 27,156,157, 55,177,240,106,169,120, 65,227, 5,247, -232,121,159, 52,215,184, 18,244,171,122, 85,123, 64,161,235,178, 95,216,117,186, -241,210, 44,192, 3,196,137, 46,195, 52,217,184,106,109,178,207,188,215,169,185, -244, 58, 93,170,185,111, 47,209,141,158, 35,170,242,144, 38,166,194,141, 35,235, -121,136, 37, 35,185,142,201,104,180,188,141, 28,231,215, 58,132,162,214,147,255, -198,171, 57, 93, 60, 22,194,183, 25,135,121,142, 4,209,210,246,230,254,139, 53, -205,169,189, 12, 50, 56,219, 69, 83,197, 53, 75, 96, 65,147, 7, 12, 80, 68, 77, -166,148,167,136,184, 2,188,103,230,140,186, 67,140, 53, 84,119, 56, 90,200, 6, -181,145, 17, 24, 15, 77,216,135,140,182, 61,116,253,141, 55, 76,219,211, 86, 27, -143, 79, 68,248,121,204, 48,151, 5,101,228,192,132,117, 94,160,138,234,167,232, - 39,252,178, 25,196,242,100, 16,152,177,215, 59,115,185, 84, 36,234,244,184, 76, -172, 79,162, 93,201,219,164,168,242,249,237, 82,118,187,214,164,113, 36,168, 79, - 64,253,171,194, 65,172,252,123, 59, 49,171, 28, 14,160,192,137, 15,238,237,140, -155, 28,108, 74,234,172, 71, 27, 76,139,168,226, 98,239,227, 39,156,169, 80, 21, -145,155,114,221, 68,255,214, 3,163,142,157, 50, 62,183,225,249,224,255,192,251, - 64,100, 22,135,250,203, 24,132,130, 40,186,151,156,180,125,208,148,254, 96, 26, - 85, 70, 52, 20,211, 51,195,198,106,120,246,133,248, 83,234, 40, 78, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_notM_phase1.c: -uint8_t GB_JITpackage_23 [829] = { - 40,181, 47,253, 96, 94, 9,157, 25, 0, 70,230,114, 32,224, 90,117,160,231,236, -231, 27,109,180,176,116,159, 33, 3, 19,181,169, 24,191, 37, 75, 83, 30, 52, 94, - 3, 51, 12,193,188, 23,110, 0,102, 0,104, 0, 76,251, 66,240, 72, 52,219,199, -168,146, 45,111,110,111, 56,234,205, 75,165,238, 90, 2, 97, 64, 16, 24, 7, 3, -226, 25, 21, 92,179,141,154,146,111,221, 87,225, 29, 77,221,185,198,233, 46,144, -144,156, 37,165, 65,114,248,246,137,131, 97, 0, 15,111,167,174,125, 99,120,217, -244,240,167, 93, 26, 69,166,149,125,227,192,118,134,164,135,185, 99,245, 66, 59, - 43,108,203, 57, 82, 47,177, 34, 85,211,122, 16, 85,231, 65, 40, 47, 20, 48, 66, -161, 16,162, 31, 6, 31,151, 99, 29,245,118,104,252,224,181,254,163, 50,219, 95, - 94,253,142,245, 17,205,240,200, 72, 90, 11, 48,215, 62,110,242, 68,233, 88, 79, -111,128,216, 6,130,255,234,124, 8,244,174,252,241,240,151, 47, 27, 56,254,229, - 8, 94, 44,167,233,142,135,182,109, 3, 29,172, 92, 91,149, 74,179,111, 87,203, - 11,133,255,199, 90,152, 97, 67, 16, 56,164,147,236,222, 40,185,193,190,149, 63, - 11,129,109, 13,247,227,173,253,219, 47,249,222, 73, 45, 6,236,175, 50,119, 62, -213,190,117,164,207, 12,172, 74, 18,125, 51,209,124, 42, 46,215, 39,156, 77,167, -225,120, 28,139, 7, 17, 28,236,192,234,146, 38,190,237, 87, 14, 83,103, 59,233, - 75,179, 41,147,246, 24,119,195, 31, 15,137, 34,232,100,164, 33,128,252,242,136, - 59,201,131,120,157, 9, 37, 27, 12,102,201,193,253,218,178, 65,241,143,139,226, -175,167, 88,220,218,130,202, 28, 24,246,178,220,175,236, 37, 78, 46, 69,171,242, - 86,254,188,109,238,131, 1,247,110,238,113,236,173, 20,215, 91,141, 79,229,205, -106,191, 15,102, 89, 11,186, 22,187,115,112,191,229,188,214,235,200,142, 20, 59, -209,235, 68,112,188,120, 21,127,181,185,123, 38,146,140,197, 35,137,117,210,175, -178,231, 56,132, 60,119, 26,121,237,250, 91, 79, 35,173,112,186, 10,247, 3,226, -143, 1, 6,195,116,146, 86, 44,199, 20,135, 1,128,156,168,193, 45, 82, 68, 50, - 65, 10,146,146,130, 74, 58, 64,132, 16, 50,104,236,226,240, 52,130,242,160, 52, - 70, 64, 4,154, 4, 19, 72, 48, 97, 40,255,227, 1,144, 18,152, 15, 56,157, 67, - 9,173,119,198, 36,156,179,101,109,128,192, 20,146, 38,147,145,139,168,170, 58, -160,148,196,134,136,220,244, 90,177, 39,165,129,145,122,155,101, 86,228, 64, 50, - 82,236, 73,121,158, 90, 41,164,104,219, 66, 4, 38, 9,225,112,253, 93,124,130, - 84, 86,104,162,146,116,144, 18,194,221, 61, 12,196, 52, 88,172,113,224,200,230, -179, 48,233,212,131,120,169, 94,200,182, 81,189,193,220,120, 19,126,111,182,204, -224, 4,106,110, 66,142,216,167, 0, 94,130, 58, 92,119, 1, 98,249, 10,157, 46, -137, 23,169,129,140, 9, 4, 27,189,142,212, 66,249,133, 5, 38,193, 8, 5, 8, - 65, 32, 94, 96, 67,112, 22, 81,249,221,232,157,236,255,132,210, 33, 81,199, 78, - 57, 59, 49,100,182, 65,198,205,207, 72,227,228, 51,185, 44,141, 59,230,216, 98, -105, 94,255, 88,231,123,100,107,208, 24,102, 63,147,173, 65,203, 10, 64,195,232, -210,147,105, 68,152,149,198, 35,184,138, 26, 62, 80,159, 30,236, 82,164, 21, 61, -232, 80,212,241,220, 58,163,134,210, 14, 38,182, 49,184, 83,184,178,134, 92, 47, -145, 22, 1,231,183, 69, 35,118,159, 38, 65, 87,194,165,208,134,252,219, 30, 54, -152, 81,182,197,230, 98, 88, 69,232,153,222,201,179,101,232,147,187, 10,143,244, -176,165, 38,184,136,163,145,255,131,102, 74, 5, 83,169,185, 29,233,106, 92, 84, -183,198, 7, 28, 98, 81,221, 57, 60, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_notM_phase5.c: -uint8_t GB_JITpackage_24 [887] = { - 40,181, 47,253, 96,105, 10,109, 27, 0,230,163,111, 33,224, 90, 23, 3,148,119, -226,218, 99,201, 62, 75,187,166,136,204,116, 68,142, 45,253,186, 48,237, 26,132, - 57, 17, 99, 36,196,240, 11,106, 0, 97, 0,100, 0, 58,219,240, 90, 4, 32,137, -166, 19,109,234,180,218,110,174, 55, 73,186,155,155, 76,223,185,131,129, 96, 16, - 44, 10, 4,195,181, 48, 59,167,111,170, 74,222,125,103,145,187, 60,221,206, 57, -206,103,129,144,102, 61, 41, 12,147, 99,247, 69,113,176,196,207,253, 28, 36,240, -121,143, 11,192, 17, 57, 35, 97,117, 37, 77,122,217,101,166,164,174,160,213,103, - 45, 67,122, 96,153,171,170, 41,100,245, 81, 8,229,131, 1, 38, 24, 12, 2,249, - 17,142,224,105, 37,238,102,151,115,162,189, 38, 42, 12,203,140, 58, 99,236,198, - 81, 20,250, 5,239,157,252,182,150,110, 44,255,179, 28,143,207,122,186,227,162, -174,235, 66,231, 88, 38, 83,189,251,230,202, 8,190,220,249, 94,180,167,221,187, -134,250, 98,174,166,190,190,191,156,195,186,238,147,255,127, 12,115, 97,132,206, - 32,176,100, 88,205,239,140,211,222,241,238,108,197,138,192, 6, 37,156,197,108, -169,227, 16, 19, 2, 1, 57, 31,216,120,193,112,111, 99,100,151,111, 75, 42,209, - 11,237, 76, 40,165,248,114,159,148, 47,217,184, 69,229,187,115, 25, 94, 35,220, -203, 62, 10, 46,106,229, 82,216,184, 8,227,208,205, 72,196, 60,230,210,182,173, -154, 28,141,111,125,222, 17,223, 59,198,223, 20,161,216,249,102,163, 23,182, 50, -147,110, 87, 96,252, 30,119,239,101,107,245,183,101,125,151, 1, 24,246,202, 94, -162, 17, 42,153,108, 38, 96,231,163, 80, 9,102,147,225,188,182, 79,162,241,116, -251,222,238, 42,154,168, 55, 94,184,218,115,180,109, 17, 51,178, 87,160,182,207, -101,159,116, 42,155, 15, 5,129, 1,239,219,226,185,220,123,151,202,230,107,206, -162,206,173,221,143,154,118, 47,190,159,163,241,125,214,173,233,103,126,166, 55, -194, 21,127,152,126,120, 44,143,191,178, 98,190,141,131, 38, 18, 76,133, 6,128, -195,168,161, 49, 83, 36,193,136, 76,144,130,130,164, 50, 28, 64,132, 16, 82,103, -182, 1, 66,113, 32, 34,145,208, 40, 66, 12, 34,134,146, 96, 68, 2, 42, 41, 74, - 25, 53, 30, 89,155, 33, 14, 78,180, 8,134,128,255,175, 89,253, 78,138,132, 18, -144, 84,161, 1,247,163,105,147,247,223,221,214,186, 37, 62, 96,120, 73,132, 33, -143, 69, 25, 60,144,127, 5,153, 64,102,106,196, 21,187,114, 34, 33, 5, 68, 99, - 31,125, 37, 39,116, 25,238,131,167,224,248,204,160,108, 38,197, 65,229, 23,224, -129, 60,229, 50, 72,215,204,237,153,101,225,178, 53,177,172,128,171, 10,172,103, - 49, 32,165, 40, 67,147,140,219, 91,211, 80, 9, 16, 35, 77, 3, 84, 59, 36,237, - 22, 80,253, 56,159,208,238, 98,129,247,194, 65,130,133, 8, 74,235, 83,228, 72, -199,147,106, 32,108,253,105,134,140, 67, 16,204,122,227,193,169, 34, 99,230, 36, -162, 82,143,114,192,168, 32,116, 20,208, 95, 31,194,191, 36, 77, 56, 39,126, 50, -113,160,151, 8,239,219,111,120,225,161,192, 40,149, 16,180,126, 59, 2, 51,228, -119,102,118, 76,132, 43, 26,156, 13,206,155,117,135,209,230,154, 60,219, 84,110, -235, 90, 12,156,130, 49,164, 35, 66,251, 30, 83,239, 84, 86,231, 78,130,104,235, -222,213, 32, 17,149, 30, 35, 77,201, 43,240,122, 57,253, 60, 54, 51,172, 93,125, -210, 16, 2,252, 22, 3,187,178,202,156,142,171, 34,181, 36, 74,138,176, 45, 5, -141, 65,219,128, 64,167,237,155,106,137,162, 8, 8, 63,114, 97,223,247,118,236, -205, 74,119, 26, 62,237, 21,172,234,111,100, 88, 18,163, 81,113,198, 66, 0, 44, - 33,180,165, 31,120,204, 14,127,246, 86,216,200,233, 97,245,210,198,123, 62,106, -225, 19,118,110,189,212,239, 0,249,255,255, 44,237,211,236,210, 20, 81, 54,149, - 29, 39,247,193, 28, 52,213, 63,152,102,149, 81,122,184,193, 59,163,135,135, 99, -254, 43, 99,168, 74,115,100, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_phase1.c: -uint8_t GB_JITpackage_25 [1341] = { - 40,181, 47,253, 96,148, 16,157, 41, 0, 38,245,156, 40,192,146,117, 14,106, 70, -158,166, 33, 20,254, 4,173,116, 91, 27, 42, 31, 50, 32,140,179,150, 21,116, 1, -112,132,243, 76,127, 33,119,112, 93, 69, 97,186, 10, 64,151, 0,142, 0,149, 0, - 93, 23,251,246,236,216,254,117,173,223,112, 5, 96, 52,175,244, 83,102,192,170, - 52,159,238,183,255,191, 68, 18, 34, 41,160, 14, 42,188,201,232, 89,183, 84,110, -173,111,167, 34,219, 83,185,120,160,160, 50,238,168,108,249,115,123, 55,142,254, -188,235,172, 79, 8, 7, 5, 7,149, 5,131,130,131, 79,164,244,201,118, 71,124, - 56,101,125,180, 93, 42,234,138, 79, 32,203,147,217,188, 88, 35, 44, 30,136,111, -127, 32, 9,103,163,104,114,246, 46, 78,218,215,163,159,126,217, 29,197, 68, 35, -123,139, 1,219,184,121,112,179,145,195,182, 70, 42, 33,194,200,251,136, 22,102, - 62, 44,152,137, 56, 1,129,164, 66, 64, 16, 81,190,139, 45,249,242,130, 87,223, -224, 56,141,123, 26,139,148,249,101,142,203, 67, 48, 3, 43, 54, 17,146,144, 9, -133, 18, 59,204,229,215,214,214,184, 87,231,184, 95,152,160,112,103, 75,148,189, -147, 45, 87, 47, 99,251,253,210,153,209,237,178,232, 20,203,216,121,159,253,174, -251,180,138,214, 21, 27,189, 40,186,141,221,158, 50,230, 36,111,242,140,125, 70, -249,235, 91,197, 36, 52,181,164,249,118,219,227,183, 84, 83,191,202,184,189, 79, - 74, 58,191, 91,180,222,158,205,248,141,234,218, 47,123, 40,141,254,149,106,231, -106, 20, 29,243, 13,138,162, 52,174,113, 62,141, 2, 31,156,205,190,252, 98,243, - 48,209,129, 33,238, 33, 6,150,117,177,237,248, 98,161, 96,151, 4,109, 67,236, - 66,134,201,173,241,242,158,209, 1,157,242,201,199,245,137, 36, 93, 98,185,199, - 99, 49,113,135, 15,114, 54, 94,175,126,101,215,107,185, 14,188, 2,218,171,210, - 43,185,227,244, 3, 11, 93,183,149,239,108,234,253,114,196, 79,133, 26, 74,128, -172, 11, 74,104, 54, 28,141,198, 89,189,147,207,147,158,183,123,238,182, 75,235, -108,242,229,252,205,190,147,202, 79,170,131,204, 16,246,207,134, 2,131, 35, 34, -242, 13,232, 99, 81,128, 32,168, 3, 51,210,181, 14, 24, 93, 79,196,147, 55,143, -179, 13, 18,201,136,229, 30,233,223,202,118, 54, 23,185, 98, 0,151,118,246, 19, -233, 51, 86,106,251,253,218,108,249,198,217,162,202,178, 70,182,103, 15,158,143, -147,237,206, 79,113,135,197,219, 61, 77,243,235, 22, 16,168,110,179,142,110, 83, -166, 73, 84,173,223,244,160,245, 44,162,118,106,159, 54, 31,123, 8, 14,200,226, - 84, 60,105,198,182,139,218,171,142, 82,236,142,176,103,124, 37, 95,170,245,189, -230, 38,237,219, 89, 75, 86,115,109, 97, 46,183, 60,203,131,152,103,188, 95, 46, - 53,159, 61,127,231, 71, 37,133, 50,114,225, 34,103,113,208,226, 52,122,238, 1, -129, 53,168,129,173, 51, 51, 67, 34, 34, 73,146, 66, 97, 24, 3, 97, 12, 66, 24, -147,150, 74, 62, 34,177, 40, 75,194, 36, 66,134, 24, 70, 12, 21,136, 4, 50, 65, - 74, 75,202, 40,211, 1, 16, 0,243, 53, 74,127,226, 23,242,130,212, 37, 86, 70, -232, 44, 63,198, 69,128, 69,189,237,151,185,187, 94,186,165, 48,197, 70,143,237, - 72, 64,196,194,150, 69, 17,136,235, 38, 11, 5,130, 1,163,147,171,237,207,173, -211,138, 67,167,182,161,232, 53, 29,110,150,125,146,232, 78,124, 68,205, 93, 6, -238,231,138, 44,159,216, 91, 34,170, 74,101,129,249, 85,196,243,111,247, 90,129, -167, 39,115,182, 52,165,147, 84,226,253,199, 26, 4,112,181, 69,227,230,237, 3, - 66,173, 77,254,113,128, 82,170,214, 48, 82, 55,144, 44,143, 90, 71,103,150, 78, -176,215, 82,134,152,137,105,223, 85,200, 26, 82, 0, 70, 36,244,121,151,170,235, -172,166,202,157, 1,152, 9, 16,219,227, 37,125, 82,207, 80, 36, 52,147,156, 74, -197,233, 35, 37, 42,202,167,113,172, 39, 68,236, 66, 96, 7,137, 55,208,134,231, -200, 13, 53,174, 26, 84, 33, 72,213, 18, 43,111,208,245,210,136, 66,237, 35,217, -127, 37, 83,158,194, 83,220,187, 7, 22, 79, 98, 23,133, 48, 26, 39, 23, 9,148, - 58, 39, 58,255,219,216, 9,245,116,113, 55,173,136, 49, 29,103,135, 1, 36,124, -180,208, 40,120, 42, 56,169, 49, 48,148, 8, 40,124,170,100,228, 83,208,242,160, - 98,176,234,233,141, 22,223,237,177,246,242, 14, 99,193,176, 75, 11, 21,148, 73, - 15,224,175, 79, 88,102,103, 85, 12,170, 82,224,102,167,112, 31,193,147,157,251, - 77,255, 37,210, 64,137,200,235,192, 45,103,110, 40,190, 81,230,142, 82,210,135, -188,171,183,219,231,202,249,213, 19,177,135,196, 49, 44,191,225, 30, 75,147,173, - 21, 23,145,236,146,150,133,122,241, 13,224, 85,241,152, 24,206,233, 72,149,194, - 39, 32,141, 17,203, 58,187, 79,123, 58,172, 7, 62,121,144,140, 70, 18,179, 91, - 1, 26,145,237,107,167,109, 98,200, 43, 16, 14,187, 24, 44, 12, 20,153, 23,209, -202,141, 33,116, 49,142,147,109, 65,108, 22,218,204,191,178,166,154,179, 57,135, -146,218,175,164,152,105,168, 62,193,254,167, 12,113,215,191, 47,237, 6, 29,124, -104,177,161, 73,251, 27,180, 68,236,173,152,200,190,147, 6,103,166, 55,206,125, - 59, 58, 98,177,156, 15, 43, 22,179, 22,195,214,180,145, 21, 36, 57,186, 18,130, -105,144,232, 5,144, 71,180,106,195,249,192,199,225, 23, 30,118,243,189, 84, 55, -185,194,207, 2,235,242,153,194,254,211,252,184, 19,189,178, 67,174,151,213, 82, -170,196,171, 8, 34, 39,187, 8,221,124,175, 4,144,151,154,202, 24, 94,121,121, -152,159,237,198,212, 48,157,152,143, 85,106,212, 49, 69,121,233,111,213,205,211, -140, 96,111, 83, 33,125,207,194,107, 31,112,100,173,131, 81,219, 9, 6, 74, 98, - 4,181, 24,163, 45, 26, 65, 87,200,231,230, 54,198,240,249,139, 15,239, 82,205, - 65,125, 50,193,210,168, 69,214,222, 20,156, 74,142,163, 12,205, 54,131,127,117, -170, 50,152,160,242,217,163,154,227,162, 39,137, 19, 96,191,243,207, 42, 13,175, -120, -} ; - -// ../Source/Template/GB_AxB_saxpy3_coarseHash_phase5.c: -uint8_t GB_JITpackage_26 [1108] = { - 40,181, 47,253, 96, 83, 12, 85, 34, 0, 22, 47,144, 40,192,146,117, 14,106, 70, -132, 54, 47,219, 91, 52,121,126,214,134,106,191,157, 47,140,179,202,186, 5, 50, - 64,149,157,232,120, 7,127,114, 93, 69, 65,144, 13,102,136, 0,132, 0,134, 0, -220, 92, 49,149,119,103, 75,254, 63,138, 58, 34,130,136, 1,132,118,218,180,241, -146,144, 50,199, 93,233,134,129,208, 91,169,198, 25,200, 68, 37, 34,178,209,140, -144, 94,186,249,237,238,130, 55,255,190,248,234,192,128,192, 0,178, 80, 64, 96, -240, 73,147, 94, 93,206,152,149, 71,226, 67, 93,131, 24,156,189,226,196, 12,165, -179, 51,116,144, 88, 14,109, 6,113,162,132,191,218,192,174, 41,198,187, 63, 4, -185, 83, 4,162,117, 93,146, 64,239,236,172,236,238,188,208, 27, 78, 80,147, 7, - 33,187, 49,175,164,108, 68, 73,113,248,192, 64, 4, 25, 24, 8, 93,246, 97,249, -192,137,152,124,184, 44,151,139,163, 27,199, 0, 18,137,242,166, 23, 31, 73,145, -153,197, 1,220, 14,246, 47, 42,119, 13,214,201, 41,168,114, 87, 80,251, 68,112, - 75, 58, 7,185, 69, 1,197, 81, 63,218,228, 22,158, 87,113,123, 93, 54,234,152, - 40,106,126, 13,147,247, 13,153,243,110,221,243,222, 18, 65,161, 43, 75,211,167, - 98,233,122,215,172,241, 75,184, 87,124,107,163,108, 65,154, 6, 86,208, 37, 28, -119,223,234,188,133,117,238, 77, 51, 17, 14,188, 23, 78,140, 55,220, 34, 18,137, - 84,156,187,188, 10,125,223, 12,159,156,162,162,232, 99,114,139, 6,130, 66,163, -145, 26,203, 69, 66,126,228, 37, 45, 89, 39, 2,131,168, 60,137, 34, 48,121,241, -214, 21,189, 99, 10,169, 13,117,247,240,176, 87, 94,150, 81,122, 64,192, 11, 60, - 93,169, 61,189, 31,229,120,171,116,242, 14,103, 95,137,217, 83,247, 96,183, 90, - 99, 26, 10,188, 37, 67,223, 25,130, 90, 3,133,125, 57,126, 21,130,173,209,140, -211,174, 61, 31, 44, 19, 55,157,236,234,108, 50,142,172,104,162,140,136, 88,134, -161, 72, 14, 6,195,190, 15,196, 65, 56,134,220,219,137,209,236,249,229, 99,199, - 56, 13, 81, 5, 1, 92, 7,187,242, 67,218,245,156, 92,122,197,178,177, 92,178, -232,144,109, 32, 56, 20,117,217,171, 45,204, 70,130,223, 96,125,244,225,121,166, -126, 37,221,146,197, 74, 68, 71, 78, 76,222,183,168,141, 75,229,135,182, 73,195, -111,158,207, 28, 10,187,210,207, 83,249,252,105, 98,233, 23, 78,188,112,103, 58, - 88,200,243,141,182, 70, 27, 12, 45,199,183,236, 85,144,155, 55, 79,163,157,198, - 82,100,143, 99, 67,180,209, 90, 30,111,122, 50,122,223,160, 91,229,201, 39, 44, - 21,141, 87,167,118,101,195, 41, 54,128,229,168,145, 33, 99,102,136, 2, 17, 73, - 65, 82,144, 66, 99, 48,132, 16,195, 84, 89, 55,226,152, 64,134, 81,145, 0, 9, -164, 49,198, 9,142, 4, 18,208,200, 4,105, 73, 65,161,102, 3,236,144, 1, 86, -197, 67,199, 79,110, 20,102,230,197,124,218,177, 67, 0,252,249, 60, 16,193,193, - 45,115, 49, 81,155,180, 97,143,155,121, 64, 70, 53, 9, 16,214,110,196, 23, 4, -138, 5,129,225,213,184, 28, 56,177,158,254, 93,104, 7, 73,119, 48,104,104, 62, -241,241, 19, 29,204,209, 57,230,116, 46, 16, 46, 28,253,211,247,237, 38, 84, 8, -135,240, 47, 10,111, 41,135, 0,229,208, 39,118,114,111,138, 57,208,153, 86, 3, -248, 42,178,133, 12,255, 15, 78, 4,147, 60, 85,215,221, 23, 60, 74,230, 21,147, -113, 78,216,154,123,103,136,101, 32,170,190,224,206, 4,144, 48, 30,245, 83,126, -171,179, 54, 73, 7,140,123,228, 38, 30,165,240,133,145,207, 62,165,216,229,254, -112,249,144, 33, 54,249,203, 95, 51, 68, 48,212,140,211, 44,137,144,181, 43,175, - 96, 91,161,127, 64,176, 15, 10,124,196,155, 66,186,158, 65, 56,217,226, 28, 80, - 54,227, 35,125, 59, 95,124,164, 99,103, 64,102, 64,133, 28,237,237, 22,255,210, - 4,186, 34, 20, 33,113,136, 69, 53, 54, 2,172, 10, 3,186,103,173, 37,240, 32, -185,229, 56,139,177, 26,138, 89,118, 78,144,174, 61, 50, 79,123,203,183, 99,212, - 93, 95,169,133,113,231, 48, 9, 46,241, 4, 96,109,125, 99,237, 3, 79, 58, 19, - 39, 11, 34,208, 16,118,137,105,194,151, 13,111,109,164,159,119,148,142, 36, 61, - 35,110,158,232,193, 66, 0,142,106, 48,249,118,143,231, 88,129, 22, 74, 64,182, - 3,104,239, 37,148,117,118, 59, 76, 44,230, 1,206,231, 74,113, 35,200,249,222, - 67, 99,112, 27,119, 25, 70,194, 89,151,225,162, 47, 13,210,122,127,199,123,189, -199,253, 80,115, 85,155, 62, 6, 62,237,169,232,120,132, 87,199,235, 33, 33,221, - 81, 32,226,188,141, 29,204,217,126,200, 57,162,204, 66, 79, 3, 20, 54, 42, 72, -156, 61, 59, 90, 32, 50,172,172, 81,209, 17, 2,148, 91,120,150,166, 10,138,232, -166, 77,227, 3,123, 5,124, 97,233,185,246, 60,111,236, 98,248,185, 22, 76, 70, - 81,192,228,120,216, 7,205,246, 15, 38,174,114,234, 79, 41,187,167,191,147,141, - 80,179, 28, 60,164,122, 0, 77, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineGus_M_phase2.c: -uint8_t GB_JITpackage_27 [1109] = { - 40,181, 47,253, 96,118, 18, 93, 34, 0,182, 46,142, 31,208,222,230, 64,230,110, -101,118,245,179,101,232,203, 13, 91,178,176,101,172, 13,162, 10,144,210, 44,245, - 48,126, 24, 80, 2,136, 0,128, 0,133, 0, 3,204, 15, 36,166,249,255,127, 0, - 96, 7, 88, 36, 26,136, 30, 99,212,252, 46, 57,187,138, 53,219, 14, 59,136,198, -182, 99, 21,132, 80,101, 72,137,176,109,103,227, 46, 29,231, 81, 86, 75, 47,203, -239, 7, 71, 99,209, 64, 64, 24,139,198, 9,177,193, 15,184,218,104,230,137,239, -185, 49, 95, 90, 61,253, 96,250, 64,151,209,164,231, 70,210,248,164,166,169,115, -173,153, 0, 63,216,139,109, 52,255,135, 75,225,171, 88, 66, 20,204, 37,141,198, -116, 52,193, 16,136,107,155,182, 85, 4, 29, 57, 19, 71, 49,120,193,125,224,101, -115,133, 2,128, 80, 40, 2,162, 14, 56, 35,193,203,119,183, 52,134, 9, 6, 67, -104, 27,164,252, 98,126,242,129,173,207,152,150, 15, 45,157,156,240, 96, 12,174, -217,136,190, 18,248,220,178, 79, 62, 59,105, 54,245,183,107, 63,177,181,134,163, -209,180,154,159,241, 89,197,159, 87,196,175,100,236,150, 14,198,226,208,231,181, -178,250,155, 23,128, 4,163, 98,235,219,222,240,182, 27,246, 92, 72,251, 44,233, - 47, 57,227, 22,196, 23,137, 69,229,188,207,182,113,159,230,243,181,175,131,208, -197,250,197,113,253,171,182, 46,114, 66, 20,194,236, 32, 9,207,157,217, 54,140, -158,178, 23, 42, 23, 51,159,166, 52,185,248, 12, 70,178,173, 7,184,238,249,116, - 24, 8,239,152,155,118, 92, 27,215, 44,141, 29,215,165, 73,187,177,119, 9,171, -221,240, 61,230,206,245,188, 61, 86,105, 55,211,143,185,222,142,195,122,237,165, -189, 64, 32,191, 87, 12,152,107, 78,157, 82, 10,196,116, 66,163,211,199, 1, 89, - 2,193, 51,157,145,104, 20, 2, 87,162, 15, 52,117,196, 26,168,192, 38,239,154, -173,217,222,216, 9,139, 87, 42,215, 89,146, 14, 46, 86,242, 35,193,143, 20,239, -201,227, 58,180, 85,165,201, 4, 0, 64, 15, 32,118,104,107,147, 19,198,216, 73, - 27,131,185,147,218, 10, 3,207, 43,130,228, 5,191, 65,105, 36,250, 48, 38,177, -134,182,103,235,241, 73,219, 52,233,173,237, 79, 96, 52,126,222, 51, 42,226,113, -110,217,207,182,183,219,101, 29,111,239, 17, 28, 63, 28,196,193, 35, 39, 81, 7, -212,148, 80, 39,210,135,233, 57,118,146,220, 13,111, 56,233,133,134, 63,215,119, -166,161, 89,251, 4, 19, 6,154,211,151, 33,161,190, 59,123,204,247,101, 73, 27, -151,157,113,156,252,171, 56, 32,171,240,103,178,130, 80,161,198,121,188,139,138, - 66,128,220,168,161,165, 82, 76, 68, 68, 70, 65,146,164, 80,104, 12, 64,132, 16, - 33,179,177, 14,242, 88, 34,163,105,196,104,196, 16,102, 4, 68, 96, 4,132, 8, -138, 72,100,161,132, 34,129,144,109, 3,166, 56, 73, 74,122,221, 68, 74,140, 78, - 19,232,113,174,147,142,234, 88,159,228, 65,193, 41, 91,175, 27,239,107, 96,190, -120,243,114,189, 55,113,160,242,251, 32,177,236, 22,231, 51,208,189,159,237,152, - 43,200, 55,209,181,181, 60, 14,166, 82, 21, 71, 7, 7,225, 9, 44, 98, 8, 88, - 66, 14, 69, 94,196,204, 82,178,225,176,236,228,242,155,229,151,110,142,208,115, - 5,117,250, 55, 94,228,120, 17,135, 32, 19,129,247, 63,182, 73, 96, 79,176, 36, - 91, 20,161, 70, 54,219,204,158,202,161, 80,137, 51, 74, 36, 3, 81,198,241,160, -107,133, 90, 89, 69,168,116, 70,247,118, 73, 27,234, 74,165,174, 52, 38,166, 11, - 95,186,151,231, 49, 52,195, 14,154, 9,233, 30,238, 1,154, 92,232,192,205, 43, -142, 96,120,169,168, 84, 43, 97,153,134,149,105,150,246, 56, 18, 2, 74, 6, 41, -104, 67, 1,126, 58, 64, 80, 60,180, 23, 96,135,254,192,218,235,217, 45, 71,143, -206,159,206,240,143,243,120, 6,181, 9,210, 99,205,184,226, 26, 13,106,216,108, -139, 3, 38, 27, 61,101,127,112, 0,140, 23,139,113,173,223,144,132,160, 97,235, -150, 26,160, 98,194, 58,220, 17,238, 69,126, 39,183,139,192,139,206, 26,251,190, -180, 46,108,218,160, 14, 97,205,202,206,231, 73,190,101,179, 20, 23, 33,194, 59, -142, 69,141,108,208, 32,171, 49,240, 53,183, 70, 21,164,114,160, 13,127,131, 17, - 97, 79, 33, 99, 6,215,110,165,198, 44, 41, 81,169,124,193,210, 65,167,138, 31, - 39, 25,142, 3,184,215, 34,143, 42,243, 2, 51,176,162, 56,200,154,218,248,217, - 11,208, 33, 70, 15, 50,164,233,137, 1, 24,214,132,241,144,234, 97,140,161, 48, - 98,251,139, 43, 6,185,207, 11, 64,139,191,187,118,242, 80, 45,156,127, 53,117, - 27,184,193,212,141, 51,131, 88, 75, 0,211,105,210,137,203,166, 82, 83, 96,174, -223, 86,117, 68, 71, 59, 2, 4,117, 3, 12, 73,252, 10,248,150, 74,158, 54,211, -103,145,229,160, 59, 85,148,236, 24,201,120, 72,197,206, 17,102, 16, 52,128, 76, -118, 70,231, 20, 19, 75, 78, 1, 26, 52,157,159,153, 6, 51,195, 57,198,125, 46, -137,129,151,218,175,170,186,187,119, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineGus_notM_phase2.c: -uint8_t GB_JITpackage_28 [1115] = { - 40,181, 47,253, 96, 59, 14,141, 34, 0,150,109,137, 32,208, 92,117, 24, 45,246, -229,188,175,207, 65,236,108,250, 50, 22,173,229, 53,197,169, 75,106, 72,239, 69, -174,102,240,131, 89, 2,132, 0,123, 0,128, 0,255,255, 3, 0, 54, 64,151,240, - 16,125,170,200,151,248, 47,237,106,214,108,187,204, 32, 26,219, 86, 85, 13,130, - 84,241, 36,202,142,165,141,251,115,156,207, 85,253, 28, 69,197,115, 12,175,243, - 16,143, 69,231,189,160, 34,156,195, 53, 70, 86,158, 16, 79, 59,243,117,213,208, - 57,144,168,153,156, 47, 50,189,124,141, 83,242, 5,234, 92, 97, 32,192, 57,123, -113,140,204, 63, 55, 49,136,161,100, 19,136, 80,254,121,141,201,243, 53,110,242, -181, 35,134, 93,218, 86,115,100,208, 94, 51, 18,143,147,153, 56, 78, 46, 87, 40, - 0, 8,133, 34,163,216, 50,239, 91,159,117,105,235,115,175,192,147, 44, 21, 78, -102,100,181,198,201, 24,178, 92,254,219,110, 73, 21,126,225,112, 40,109,143,145, - 79, 94, 7, 79,168,151, 93,123,208,194, 60,134,215,174,154,159,113, 90,205,167, -215,196,175, 45,213, 69, 25, 92,167,215,174,234,111, 94, 44, 66, 91,223,246,150, -183,221,169,211, 74,178, 83,148,252,191, 47, 46, 65,188, 75,116, 97,122,159,109, -227, 78, 95,207,215,190, 18, 54, 55,235,187,227,122, 84, 61,221,196, 20, 88,220, - 71,160,156,107, 97, 50, 7,109,203, 23,236,223,215,149, 93,118, 91, 6,225,157, -201,140, 95,222, 51,183,235,184, 54,134,205, 26,125,185,174,234,141,166, 96,183, -124,159,185,115, 77,101, 87, 85,215,205,228,207, 92,101, 47,235,181,215,245, 91, - 66,153,207,104,164,100, 54,157,144,136, 25, 77,131,193, 43,153, 14,167,179, 25, - 75, 28,113, 4,101,204, 42, 48,159, 71, 72,182,213,240,240, 89, 35,218,212,218, -170, 98, 4,124, 78,201,140,199,240,226,235,121,108, 56,178,173, 97, 10,124,195, -108,205,246,170, 94,232, 30,134,175,217, 22, 73,104,137,173, 0,192,205,194, 58, -239,233,125, 23,154,199,185, 87, 55,239,211,182,178,219,104, 61,101,103,156,227, - 32, 33,203, 71, 20,242,136, 20,240, 12,219, 71,187,229, 45,193,133, 89, 75,219, -130, 67, 37, 80,210, 92,240,204, 70, 87,182,226,139, 21,143,136,150,102,219, 41, - 50, 93,225,180,143,162,100, 99,180, 1,183, 60, 3, 95,200, 63, 9, 51,154,192, -123, 15,111, 43,152, 1, 48,188, 89, 17, 45,159,242, 99,124,222,226,152,182,178, -245,188,229,185,178, 91,152,116,253, 91,120,199,221,169,155,231, 26,134,146,177, -203, 2,128,239,168,161, 37, 83, 72, 68, 68, 68, 68,146, 36, 41, 12, 7, 48,132, - 16, 82,204,200, 60, 2,129, 44, 5, 35, 17, 81,134, 17, 47, 32, 34, 22, 72, 48, -129, 36,201, 76, 78, 65,118,161, 17,104,207,108,143,217,150,101,244, 69,195, 81, -116,121,228,213, 28, 96,102,198,157, 97,188,215, 41, 85,219, 92,221,140,195, 15, -123,118,160, 70,124, 61, 76, 80, 44, 40,247, 36, 86,211,167,212,134, 86, 56,227, - 58,233,156, 53, 24,199,199, 18, 18,113, 21,171, 52, 88, 84,243,118,126,211,220, -101, 96, 7,208, 12,136,250,116,235, 29,118, 98,184,245,166, 65,211,180, 1, 5, - 0, 66, 15,175,136, 40,174,170,176, 81, 34,105,251,145, 42,252,172,230, 2,171, - 12, 25,106,217, 96,237, 11,107, 20, 9,125, 51,237,207,114,241,114, 42,219,195, -164, 40, 28,156,194,124, 7,239,188,216,121,211,173, 32, 34,134,249,126,228,116, -116, 31,194, 97,155, 57,215, 18,133,213,200, 10,223,144, 54,168,200, 16, 11, 30, - 20,245,240,225, 96,221, 0,184, 88,168,205, 48,201,198, 41,236,232,122,127, 55, - 6, 73, 51, 2, 46,244,207, 71,185, 5,221, 97, 41,124, 24, 77,201,109, 13, 22, - 74, 7,145,114, 37,121,180, 15, 42, 75, 65, 68,127,105,158, 71,123,225, 92, 81, -216,204,183, 3,240, 43, 11,244, 60,109,165, 5,128,148,200,176,162, 84,175,122, - 32,161, 52,229, 21, 26, 20,247,146, 22, 26, 40,132, 15,162, 97,108, 47,238,208, -111,190,228,145,115, 12,222,177, 0, 69,176, 25, 57,252,216, 93,114,184, 64, 17, -221,141,249,206,249, 5,227, 44,139,185, 65, 15,162,147, 5, 51, 92,112,236,122, - 66, 79, 6, 20, 40, 61,177,250,142,193,227,134, 78,231,110, 71,205,244, 59,150, - 65, 6,240,115,245,216, 90, 3, 20, 88, 8, 15,140,207, 43,198, 32,193,251,236, -208, 68,156,174, 95,100,142, 71,133,140,225, 2,228, 55,115, 16, 88,112, 92, 96, -106, 25,229, 2,206,116,192, 5,115, 90, 40, 78,245, 34,169, 95,112, 57, 52, 51, - 23, 0,141, 62,218,176,240,208,142,142,248,186,201,194, 6,124,189, 63, 81, 38, - 49,233,128, 39, 94,221,158,235, 88, 51, 70,170,101,193, 23,132, 9,229,114, 84, - 2,251,204,245,144, 84, 38, 80,152, 85,203, 73, 43, 91,159, 1, 51,216,244, 44, -175, 86,109,244,161,101,243, 35, 60,247,158,236, 75,140,126,164,254,178, 24, 30, -108,108,204,119, 58,147, 0,169, 38,181,195,146, 51, 92, 14,154,209,159,153,198, -157,195,156, 99, 55, 27, 24, 4,247,100, 96, 82, 61,220, 49, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineGus_phase2.c: -uint8_t GB_JITpackage_29 [1010] = { - 40,181, 47,253, 96,202, 12, 69, 31, 0,134,171,130, 32,208, 28,231, 24,149,213, -127,107,213, 29, 47, 59, 22, 38,102, 40,204, 86,201, 34,231,130, 9, 99,185, 69, -174,102,240,131, 89, 2,125, 0,116, 0,122, 0, 0, 5,162, 59, 52, 25, 82,243, -123,228,236, 58,214,108, 91,220, 28, 26,219, 14, 43,231, 96,186,128, 16, 98,199, -206,198, 29, 58,206, 36,171,134, 94,150,223, 57, 70,167,232, 14,143,133,162, 59, - 33, 28,156,195, 53, 70, 47, 71,124,167,145,249,190,234,232,156,232,227, 84, 72, -147,158,153, 72,227,147,154,162,206, 21, 38, 2,156,179, 23,199,104,254, 57,241, -146,185, 95, 63, 87, 41,124,158,229,145,174, 49, 37, 77, 16,195, 50,109,235, 8, - 50,104,230,140, 98,176, 50,251,192, 74,230,137, 4,224,144, 72, 4,174,207, 5, -126,174,241,222,245, 89,139,182, 62, 55,235,255, 37, 55, 97, 46,158, 13,216,114, -129, 21,112,132,201, 28, 96,187,165, 33, 62,193, 96, 16,109,131,147, 87,204, 75, - 62, 88, 29, 83,242,245,178,107, 47,177,176,142, 65, 19,105,159, 37,237,250, 85, -243, 51, 62,235,248,243,142,183,221,248,245, 99, 61,231, 10,111,249,155, 31, 57, -227,148,195, 21, 8,197,105,101, 73,107,174,182, 30,215,171,106,234,163,134,208, -226, 34, 3,203, 57, 23,166,249,255,127, 0,192, 22,103,182,189,162,167,247,241, -242, 97, 66,184, 54,134, 61, 95,251, 89,151,230,235,134,239,114, 5,187,226,155, -204,157,235, 41,123, 88, 95, 55,211,147,185,202,142,197,122,237,125,253,158,225, - 21, 51,218,132, 74,160,101,211,249,140, 62, 13,136, 18, 8,126,217,124, 60,159, - 14,120,242,124,160,104, 51,214,192, 8,201,182,112,239,153, 67,234,212,193, 87, - 93,245,155, 72,158, 79,154, 49,232,253, 51,159,193,134, 35,219,234,173, 36,111, -152,173,217,222,240, 4,197, 61,239, 53,235,162,131,143, 53, 0,192,205,194, 18, - 44, 90,142,157,173,199, 39,109,211,164,178,182,239,126,222, 43,188,241,248,108, - 43,187, 93, 86, 82,246, 27,227, 28, 55, 14, 14, 25, 97, 66,164, 17,232,179,220, - 24,247,108, 17, 92,199, 42,218,190,221,198, 53,236,204, 8,218, 88,197,155,197, -110,251,235,249, 17,150,107,187, 18, 45, 61, 71,232, 60,111, 28, 60,219,198,125, -154,199,245,187,128, 72,103,147,249,190, 44, 27,151,157,239,205, 36, 39,228,223, -164, 1, 81, 98,103, 42,154,176,187,194, 38,195,110,164, 5,128,205,168,145, 41, - 82,104,100, 70, 68, 36, 5, 73, 82,104, 12, 64,132,144,169, 42,235, 6,226,184, - 20,201,116, 8,130,132, 16, 49, 32,193,148, 68,150, 36, 42, 40, 35, 41,213, 1, -217,181, 19,214,153,109, 5,118, 82,142,199,250,178,144, 69, 63,121,147,243,147, - 67, 48,231,187,113, 67,175,114, 76, 65,147,183,117,101, 51, 99, 84,141, 22,116, - 33, 94, 77, 13,218,158, 66,159,243, 94,137, 6, 6,253, 37,185,234,236, 17,226, -157, 57,187,166,178,235, 68,253, 87,104, 45, 76, 32,122,216,234,211, 5,246, 14, - 42, 57, 1,113,193,229, 62, 56,162,154,130, 14,127,171,195,186,131,184,187, 24, -210, 42, 35, 29,155,159, 77,200, 52, 56,150, 18, 88,107, 42,249, 6,107, 85, 97, -122,177,173,178, 56, 32,171,106,184, 7,163,138, 85, 76,144, 38,235, 60,236, 40, - 2,161,171,200, 74, 72,172, 58,187,179, 80, 63,238,205, 69, 90,198,143,223,144, -205, 61, 85,250, 31,151, 74, 55,122,166,228,137,196,193,197,178,170,163, 7,114, - 10,124, 84,179,222, 45,193,100,126, 73, 27, 74,169,148,125,198,111,208,160,116, - 96,104,193, 20,172, 71,225,161, 11, 69,163,146, 75,172,173,191,132, 64,103, 34, - 8,139, 96,149,178,180,157, 88,195, 98, 5,250, 25, 33,240, 85,232, 34,199,140, - 6,209, 45,160,183, 40,152, 63,157,216, 85,184, 93,172,232,142,151,167,100, 24, -100, 47,235, 78,172, 52,166,121,241, 62,185,236, 8,197, 69,188,244,129,240, 72, -174, 58,199, 37,212,164,238,150,128, 36,196,171,255, 2, 86, 21,142,138, 11, 68, -176,206,130, 76,107,243,224,169, 51,133,154,136,166, 13, 69,168,248,247,103, 12, -168, 27,140,234, 29,131, 57,240,240, 94, 25,242,162,124,213,244,196,184,225, 40, -189, 88,177,224, 57,160, 52,123, 1, 77,187, 98, 44,122,252, 17,102,179,131,199, -102, 56, 50,237,243, 8, 50, 48,142,121, 92,101,141,125, 55, 2,173,246,184,245, - 14, 25, 5,123,170, 78, 85,176, 41,241,233, 17,231,228,112,147, 65,153,139,175, - 97,138, 64, 38, 71,154, 62,104, 86,255,204,196, 28,117,215, 69,189, 31,113,168, - 58, 73, 53, 51,161,175,234, 1,136, 1, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineHash_M_phase2.c: -uint8_t GB_JITpackage_30 [1179] = { - 40,181, 47,253, 96, 29, 18,141, 36, 0,118,111,145, 40,192,240, 58, 7,126, 7, -120,190,119,253,151,152, 41,204,181,109,223,123,149,203,120,227, 77, 47,113,209, -191,133, 69,178, 63, 28, 56,100,219, 20, 69,166,232, 64,135, 0,128, 0,134, 0, -223,182, 11, 69, 81, 89,166,204,171,207,206,123,239,255,239, 40, 57, 40,146, 43, -194, 30, 55, 69,237,150,145,155,246,173,220,121, 34,108, 43,115,141, 16,113,208, - 44, 72, 58,182, 24,217,242,231,246,122, 19,253, 57, 8,106,175, 42, 23,229,138, - 16, 88,148,235, 20, 55,189,178,109, 49, 53,151,104, 39,121, 55,172,232,208, 43, -144,134,128,241,196, 57,114, 44,108,199, 41,130,248,246, 8,228,120,245, 87,152, -135,150, 21,108,151,204, 45, 23,219,233,137,114,147,158,157, 29,174, 77,101,133, - 36, 98, 76, 43, 49, 24,154,196,112, 62,153, 56, 34,147, 73,224,229,137, 99,167, - 6,172,233, 27, 78,130,246,145, 20,114,147,161, 13,167,127, 17,214, 99, 87,133, -212, 77, 30,193,121,113, 69,223, 95, 59, 54,253, 24,210,119,197,162,208,126, 21, -222,130,200, 41,146,138, 68, 34,169,174,140, 6,103,223,174,221,199,232,216, 87, -102,209,111, 88, 47,177,178,237, 36,209, 45, 11,210, 97,157,232,119,139, 35,142, - 11,171,142, 63, 46, 4,235,232, 22,250,234,167, 60,203,238, 81,180,242,166,219, -160, 4,196, 43, 91, 52,135,118, 30,222,218,239,120,228,123, 39,103,223,213,121, -123,219, 1, 1,223,132, 52,205, 2,195, 3, 37,141,183,242,217,187, 23,205,113, - 2,203, 52,218,230, 35, 51,158, 77, 33,164, 97,167, 94,137, 65, 81,237,247,233, - 79, 81, 29,144,214,161,174,233,162,174, 95, 46,147,236,216, 78, 81,132,107,136, -221, 58,228,109,245,175, 20, 24,184,181, 39,143, 63,222,147,246,236,247,143,201, -215, 8, 12, 91, 41,226, 6, 7, 30,238, 0, 50, 17,118, 30,213,190, 53,228, 78, -101,212,111, 78,159,246, 73,237,163,225,191, 99,112, 87,219, 97,163, 73,240, 72, -138, 79, 98, 94,122,165, 32,144,174,178,188, 28, 35, 78,219,237, 12, 14,199,134, -131,114, 87, 71, 0,148,199,141,147,173, 36,141,179,182, 72,142, 33,149, 95, 40, -181,233,163,144,160,101, 64,191, 29, 39,139,226,252,197, 22,100,207,167,161,246, - 5,215,211,171,178, 50,122, 75,189, 8, 43, 15, 96,176,189,139,111, 84, 94, 85, - 31,133, 80,130, 71,110, 62, 12,161, 5, 45, 51,121,108, 28,123,229,153, 70,201, - 66, 2,193,201,117, 69,120,231,109,123, 55,236,234, 40,164,239, 87, 60, 26, 47, -101, 81,215, 11, 10, 40, 58,115,140,162,208,141,142,239,236,196,209, 55,121, 20, - 97,167,174, 67, 71,222,103, 16,140, 78, 41,155, 30, 16,128,253,168, 97,177, 82, -106, 68, 68,102, 20, 36, 5, 73,161, 49, 64,134,136,204, 89,209, 3, 18, 89,162, - 3,129, 16,113,132, 9, 17, 33, 2, 35, 36, 2, 38, 16, 9, 68,136,162, 9, 36, -136,116, 14,149,184, 67,152, 9,116,238,153, 68, 29, 77,130,232,166, 44,193, 12, - 57,231,107,207,252, 95,154, 51,220, 51,115,120,150,164,163,211, 92,137, 29, 16, - 54,137,133,199,178,216,162,239,115, 26,173,199,185, 10,120, 36, 93, 40, 9,148, -195, 56,151,138, 59, 9, 77,109,111,171, 80,213,206, 65,153, 12,153, 65,148, 40, - 14, 91, 68,119, 11, 27, 79, 32,173, 25, 51,178,139, 30,229,234, 23,160,201,141, - 79, 95, 52,146, 85, 23,186, 56,222, 63,100, 33,140, 75,168, 70,126,108,199,131, -134, 71,222,212,140,106, 38,160,235,155, 41,133,237,104, 25,118,161,144,151,120, -193, 1,194,142,201,126, 43,101, 84,129, 91, 81,231,211,156,184,211,140, 79, 37, -246,210,186, 69, 5,210,106, 70, 91, 27, 63,100, 35,177,182, 31,204, 80, 14, 76, -115, 46,221,175, 98, 17,128, 25, 40,151,177,192,145, 67,213,211,218,166, 74,139, - 3,209,118,172,170,101,184,219, 86,207,212, 9, 63,233,255,125, 83,231,159, 39, -250,113, 21,127,234, 96, 95,234, 59,201,118,138,220,106,140, 64,121,228,226, 22, - 14,204,232,150, 97,155,115, 43, 16,190, 70, 80, 53,115,190,129,200, 58, 10, 57, -148,140,244,239,216,239,100,156, 79, 74,123, 79,191,194,154,249, 33,239, 27,254, - 69,147,193,152,196,227,251, 5, 37,125, 29, 11, 54,194, 65,224,240, 70,215, 80, -100,131, 56,246,139, 96,106, 1, 56,181,201,149,111, 19, 88,162, 22,230, 6, 12, -210,237,211,123,178,233, 19,149, 61,153,255,113,211, 3, 46, 11,159,105,128, 19, - 86,204,160, 64,101,195, 74, 27,204,215, 85,222, 87, 32,203,251, 64,215, 32, 29, -179, 79,176, 87, 12,212, 8,175,245, 89, 79,246,244, 97, 34, 17,136, 80,103,254, -197, 94,178,208,178,139, 49,147, 90, 14, 89,137, 31,146,178,240,110,150,121,178, -214,167, 95,132, 10,248,254,195,253,219, 43, 82, 65, 64, 40, 34, 28,195,215,255, -234,248,127, 93,109,156,166, 64,155, 65,110,234,157,188,229,200,120,195, 58,170, - 10,178,175,168,127,138,158, 16,115,185, 18, 61, 93, 12, 12,249,218,102, 82, 39, -140, 74, 71, 50,108,192,122,139,188, 16,156,163, 87,190,224, 44,203,141,234,219, -121,245, 56,251,165,244, 18,254,226,236, 96, 81,220,163, 61,105, 43, 34,227,198, - 47,124, 87,244, 22, 49,144,136,231,100,200,206, 68,202,103,115, 91, 88, 31, 52, -255,207, 76,116, 21, 62,156,114,238,170, 17,126,200,193,185,106,229,138, 1, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineHash_notM_phase2.c: -uint8_t GB_JITpackage_31 [1173] = { - 40,181, 47,253, 96,175, 14, 93, 36, 0,198,239,143, 40,208,208, 58, 7,122, 69, - 25,194, 71, 56, 26,100,102,217,140,243, 89,236,219, 81, 7, 51,161,164,239,218, -177,212,243,166,179, 24,213, 31, 92,225, 17, 31,224, 18,136, 0,125, 0,135, 0, -211, 69,180, 36,203,227,103,229,189,247,255,143,162,141, 72, 66, 80, 65,216,219, -100,152,221,170,220, 93,223,201,156, 2,132,237,228,173, 23, 32, 19,151, 7, 2, -142, 51, 42, 91,214,220, 94,175,211,154,131, 96,246, 56,169, 36, 21,228,128,146, - 84,159, 54,233,209,118,134,188,156, 32,123,200,187, 20,163, 55,143, 16,217, 66, -197, 11,101, 77,176,216, 86, 25, 66,240,109, 15, 68,244,248,199,202, 64,134, 33, - 48, 0, 80, 44,183, 42,182,210, 11, 53,134, 75,167,230, 89,153,225,217,157, 54, - 9,133, 32,105,181, 10, 40,211, 42, 9,143, 68, 34, 72, 36, 18,243,211,227,193, - 77,214, 40,175,132,191, 46,113,222,255,208,249,171,154,132, 56,201, 21,148, 21, - 99,244,253,181,181,187, 87,218,125, 50,219,247, 68,210,245, 35,189, 8,144, 83, -183, 38, 83,103,182,119, 67, 83, 74, 26, 13,202,190, 61, 65,153,170,210,217,233, -150, 44, 20,214, 33,206, 31, 41,234,209, 29,122,182,141, 78, 15,199,223, 70,193, -233,185,213, 61,254,146, 99,216,189,169,139,158,116, 27,180,168,248,228,140, 78, -232, 50,167,119,246, 57,174,124,175,220,236,185, 41, 95, 57, 12,121, 17,123,219, - 15, 19, 22, 97, 54,217,229, 33,130,162,235,128, 80,189,147,207,222, 61, 71,214, - 14,118,201, 48, 26,205,162,192,224,176,201, 58,143, 65,206,236,247,187,105,106, -233, 25,136, 44, 67, 81,183, 18, 99,170,164,235,213, 31,159,170, 83, 40,210, 49, -141, 99, 43, 57, 16,158,244, 58,245,199,155,234,129, 99,191, 11, 17, 12, 45,101, -253,117, 70,185,126,171,188, 86,195,158,133,191, 90,129,193,157,141,113,174,179, -103,246,157,116,251,164, 49, 63, 41,125,217,167,101, 95, 71,255, 29,196, 28,119, -174, 79, 96, 46, 13, 10,218,197,167, 85,180, 13, 38, 33,218,120, 81,212,193, 30, - 80,102,116, 13, 79,237, 43,141,125,239,246,231,151,206, 95, 15,231,182, 74, 14, - 67,249, 74, 65, 35, 49,251, 31,158,151,147,164,138, 84,148, 96,221,173,202,243, - 67, 49,236, 2,210, 25,108,239,243,142, 73,236, 50, 81,227,176,193,104, 34, 54, - 15,153,229,215, 39,199, 56, 54,172, 16, 8,202,173, 49,232,149,183,237, 93,202, -181, 69,117,180, 36,216, 68,113,112, 92, 8, 8,216,175, 41,234,154,155, 28, 16, -117,112,159,228,202,185,199, 30,160,204,175, 79,247, 81,250, 68, 70,123,244, 13, -190,146, 11, 61,143,236,169, 55,129, 3,168, 97, 45,100,102,130, 25, 17, 73,146, -130, 74,134, 3,113, 12, 49,136,106,105,153, 7,226,136, 60,198,179, 16,177,136, - 53, 68, 64, 2,145,145, 25, 17, 82, 82, 82, 80, 80,144, 98,198, 25,214,153,145, - 77,240,144, 60,194,210, 3,240, 16,180, 57, 19,139, 79,106,112, 31, 22,164, 92, -207,126,223, 70, 61, 82,196,133, 59,243,223,223, 29, 30, 71, 22,239, 98,134,229, -109,139,222,163,139, 70, 82, 22,164, 99,190,144,145,120, 86, 38, 59, 91, 34,168, -126, 34,214,187,145,139, 5,113,179,160, 44, 62,239, 74,107, 5, 57, 39,169, 44, -218,178,220, 22, 79,138,187,223,168,252,233,107,141,207, 79,162,240, 47,122,151, -169,222,132,148,185,131, 74, 92, 63, 52, 55, 87, 0, 90,214, 2,161, 45,127,204, -199,179,113, 53,243, 76, 40,215,105, 93, 73, 78,159,124, 48,254, 65,210,145, 95, -165, 30, 97, 36,252, 86,202, 57, 38,240, 36,108,232,231,117,172, 68,209,131,108, - 78, 25,101,206, 11, 77,200, 66, 83, 84, 28,232, 53,187,170,170,152,149,138,232, -181, 51, 53,136,133, 37, 38, 35,114,235,108,239,202, 1,174,138,122, 21, 35, 27, -107, 64,144, 59, 13,102,173, 58, 85, 71, 64, 2, 76, 11,222, 32,187,144, 83, 12, -106, 74, 3, 4, 72,141, 64, 71, 69,195,244,190, 50,130, 4, 62,246,149,177, 97, - 86,147, 89,193, 12, 4, 4, 20,123,204,146,186,114, 73,225, 29,176,196,255,155, -154, 55, 14, 40, 42, 23,131,135,161,193,151,164,217, 10, 15, 58,179, 96, 64,200, -231,228, 91,163,152, 6,218, 42, 24,113,248, 75, 30,224,116,189,241,225,103, 72, -188, 28,253,154, 25,210,107, 51,104, 23, 80,104, 53,204, 90,144,201,162, 9, 64, -214,220, 96, 52, 0, 9,158,132, 86,227, 30,241,113,189, 8, 50, 4, 2,213,100, -154,216, 58, 82,197, 59,205, 13,220,105,193, 64, 35, 51, 98,161, 2,148, 66, 26, -106,214, 97,189, 98,226,154,254, 88,118, 2,174,217,202, 72, 12,165,148, 67, 95, -116,213, 37, 14, 13, 81, 13,155, 29,162,180,105, 38, 7,105,198, 60,238,113,139, -107, 89,245,173,165,144, 30,136,224, 50,119,231, 12,219,177,154,144,210,208,243, - 69, 25, 93,159, 61,115,116,245,246, 93,136, 69,108, 77, 3,123, 73, 85, 51, 97, - 50,169,168,127, 67, 2,171,190,202, 61,124,219, 0, 37,250, 87, 79,247,140,198, - 2,220,236,177, 11,102,231,166, 57, 39, 95,223,195,134, 53, 93,121, 45,191,235, -128,136, 58, 88,160,180,253, 91,208,141, 78,158,209,126,247,220, 60,102, 17,104, - 9,229, 82,102,252, 52,167, 8, 69,114, 63, 64,131,102,244, 51, 19, 94,166, 60, -142, 41,125,232, 45, 98, 55,132,148,234,129,117, 2, -} ; - -// ../Source/Template/GB_AxB_saxpy3_fineHash_phase2.c: -uint8_t GB_JITpackage_32 [1562] = { - 40,181, 47,253, 96, 83, 25,133, 48, 0, 86,249,168, 40,208,210,170, 3,106, 50, - 90,237, 98,183,121,139,167,215,173, 49, 23,187, 35,253, 14, 17,200,241,107,107, -136, 2, 26, 47,208,185,226, 15,174,240, 20,131,248, 5,160, 0,146, 0,159, 0, - 28,213, 73,167, 61,249,205,242,171,191,176, 56,183,249, 92, 17, 47, 76, 25,148, - 37,101, 78,121, 53,246,187,255, 63, 4,210, 1,161, 76, 42,201,118, 90,252,176, - 91,224, 50,199, 61,119, 99,144,108,157,171,177,131,132, 34, 33, 98,178,173, 8, -220,186,157,215,238, 48,184,115, 41,177, 83,150,138, 82, 73, 12, 42,148,234,147, - 38,157,170, 44,138, 9,159, 96, 31,117, 77, 67,252, 57,229,193, 28, 48,221, 23, -193, 5,107, 43, 24, 63,207, 54,135, 30,200,169,159,154, 86,139,242,147, 76, 62, -231, 93,179,198, 65, 42, 29, 35,128, 93,153, 91,213,214,216,125, 89, 87,227,102, - 39,115,153,101,244,109,196,154, 97, 54,176, 12,179,240,129, 1,136,100, 96, 32, - 43,106, 15,164, 26,167,219,227, 71,114,210,175, 70, 89,190, 29,187,118, 61, 41, - 87,112, 69, 93, 75, 86, 98, 76,174,175,212, 44, 20,183,165,218,115,235,130, 31, -103,219, 26,190,233,220,104,215, 27,250,100,242,183,222, 78,251, 72,202, 56, 41, -247, 71, 63,163,118,206,189, 26, 67,223,238, 3, 58, 95,131,206, 95, 42,203,104, -139, 11,202, 88,109,136,251, 93, 65,230, 14, 82,238,115,183,158,207,241, 41,218, - 8,146, 83, 38,150,201,100,194,193, 50,114,243,228, 87,254,198,230,159,240, 8, -244, 83, 85, 37,194,252,133,154, 70,183, 25,191,173,167, 81, 57,195, 91,220,169, -159,242,235,122, 55, 5,151, 79,181, 25,148, 93, 97,227,193, 54, 87, 83, 89, 63, -234, 47,180,219, 12, 41,183, 33,120,249, 86, 25, 57,174,187,164, 20,180, 18, 20, -123,242,249, 35,176,231,114,149,116,121,245,200,167,234, 7, 7,159, 42, 17,150, -164, 95, 25, 11,252,186,131, 4,135,219,110,109,155,114,252,143, 61,222, 32, 25, -156, 53,120, 48, 78,214,144,209,108, 50,220,110, 28, 3,176,132,177,199,216,193, -229, 13,198,174,217,117,236,123,103, 4, 5, 61,249, 2, 93,190,225,228,158, 84, -251,196, 49,189,232, 97, 94,134,121, 28,189,247,141,221, 22,131, 66,147,240,192, -144,101,120, 25, 38,251,104, 22, 62, 69, 34,219,220,236,224,152,239,151, 75,150, - 69,153,128,180,181, 16,200,199,134, 50,138, 14, 82, 6,191,211,249, 14, 65,175, - 96,220,239,139,175,166,198,206, 79, 20, 72,117,144,158,114,113,183,192,157, 26, - 52, 64,250, 74,238, 52,110, 57, 69,117, 32, 62,154,142,196, 39, 2,203, 92, 60, - 58, 44,141, 67,180, 35,221,216,170, 48,101, 81,174, 74,117, 4,132,138,138, 4, - 44,195,192,129,248, 96, 29,255, 52,109, 91, 35, 72,178,147, 94, 94,121,228, 21, -110, 25,134, 32, 12,157,137,139,244, 79, 71,227,241, 96,205,151,114,134,145,202, -223,218, 42,183,127, 69, 54, 54, 83, 95,243,193, 18, 34, 36, 50,138, 77,179,181, - 29,183, 47, 60,197, 77, 31, 94, 92, 16,244,201,195,131, 50, 93, 18, 40,130, 24, -215,185,119, 80, 76,105, 58, 1,129,119,168,129,177, 66, 70,102, 70, 68, 36, 73, - 82, 40, 12, 7, 81, 8, 66, 16, 36, 33,120,230, 1,178,160, 40, 13, 98, 24, 7, - 49, 66, 4,144, 16, 74, 68, 68, 36,176, 64, 36,152, 36, 65, 11, 10,154, 52, 6, - 89, 96,199, 76, 46, 11,103,152, 40,199,142,238,214, 81,255,196, 61,229, 50,151, - 18,202,148, 67, 51,101,160, 37,102, 70, 85,150, 37,168,229, 38,127, 22,242, 43, -104,173, 72, 9,250,150, 43, 63,199,180, 2, 60, 8,149, 72,207, 1, 45,158,231, -203, 35,234,193,237, 73, 6,156,249, 45, 57,156,204,127,161, 25,186,240, 21,144, -136, 54,148, 69, 85, 37,178, 66,212, 66,143, 43, 16, 91, 14,222, 93,178,211,144, -144,170,161, 21,187,236,242, 10,242,245,145,167, 45,210, 51, 41, 6, 49,254,197, -213,226,171,191,147,101,100, 4,235, 33,169,220,245, 29,177, 6,216, 55,160, 40, - 42,240,157, 20,200,163,216, 13,219, 10,114, 25,148, 7, 13, 25, 54,111,226, 70, -141,168,253,105, 29, 21,221, 94,234,204,159, 1,102, 53, 38,146,175,164,232, 95, - 26,124, 18,184,165, 3,202,131, 36, 74,161, 10, 98,142,125,158, 3, 52, 53,227, -176,163,185, 33,173,177,102,180,135, 91, 82,110,148, 98, 70,113, 51,159, 22,213, -139,149,249, 84, 26, 80,221,189,176,111,213,187, 72,192, 22, 58,150,195,190, 32, -160,149, 12,136, 36, 13,124,232,129, 98,136,106, 60,161, 23,107, 56, 40,202, 65, -241,190,131,130,188,128,127, 98, 98,251,166,161,230, 65,158, 53,252,236,235, 90, -157, 20,134,251, 1,236, 30, 78, 18,217, 42, 30, 43, 73, 43,100,165,211,221, 46, - 26,170,114, 3, 50, 76,189, 73,145, 94,141, 81,103,178,251, 53,104,113, 49, 50, - 21, 67,216,137,172,147,249,193,241,142,172,219,180,248, 78,127, 13,225,103,163, - 80,251, 86,135, 75, 3,176,121, 94, 50, 46,126,228,144,142,199, 82,219, 18, 14, - 13,179, 85, 75,254,122, 59, 61, 56,220,124,195, 53, 50,107, 84, 8,209,161,212, -140, 55, 32, 26,154, 78, 65, 43,136, 44, 28,113,235, 10, 10, 76,151,248, 66, 35, -167,116, 69,191,176,163, 96,229,245, 30,152, 35,207,106, 89, 44,146,175,252,229, - 39, 34,240,217, 81, 60,144,217,146, 26, 11, 71,139,101,171, 40, 41,150,217,108, -179,105, 89,129,116,191,143, 27,140,233,223,186,101,106,176,142, 11,179,112,165, -225,240, 62, 72,185, 16,158, 31,231, 77,248, 85,250,145,244,236,158,211, 7, 62, -175,221, 27, 70, 57, 45,176, 38,170,150,172, 81,163, 38,232,120,212,182, 75, 18, -194,192,108,110,112, 45, 59, 14,188,168,255,251,139,212,110,202,164, 92,196,121, -201,229, 33,254,152, 82,148,127,171, 39,104,145,240,145,131, 88, 5,227, 12, 8, - 24, 86,245,247,178,211,216,151, 11, 32, 2, 20,176, 81, 43,132, 47,224,236, 99, - 10,156, 2,220,196, 32,132, 6, 43, 8,242, 56, 4,252, 83, 95,155,139,243,218, -197, 18, 4,239, 2,249,142, 9,250,187, 89,215,106, 66,141,165,237, 0,136,240, -147,239, 20, 64,207, 86,133,108, 96,156, 64, 68,173,220,162,163,243, 96,118,101, - 79,122,173,182,192,236,160,217,133,145, 14,108, 42,223,131, 61,220,217, 17,129, -204, 52,109,105,104,144,140,132, 81,148,176, 94, 5, 41,148,209,203,177,219, 27, -221,182, 76,169, 37,111, 45,141,136, 3, 54,127, 63, 90, 89,129,201, 34,117,191, -252, 82,193, 54, 40, 84, 86, 65,111, 91, 57,145,222,135, 0,240,194, 40,193,151, -224,132,108,208,122, 25,134,173, 48,113,167,205, 65,234,227, 75,146,173,161,218, - 95,229,149,243,141, 80,194, 21, 68,160, 35,168,122,115,145, 68,166, 7, 29, 16, -185, 10, 5, 37,214, 34,122,132,192,205, 43, 85,155,144,173,161, 95,244, 32, 27, -232,184, 50,198,116, 30,187,120,218, 26, 92,123, 15, 96,211, 87,199, 99,173, 31, - 80, 72,240,209, 15,230, 64,147, 21,243, 9,160, 68,132, 61, 79,157, 3,201, 57, - 92, 14,154,162,159,153,206, 37, 69,119,146,173,210, 36,130,230,135,164, 40,117, - 0, 77, -} ; - -// ../Source/Template/GB_AxB_saxpy3_template.c: -uint8_t GB_JITpackage_33 [3826] = { - 40,181, 47,253, 96,134, 92, 69,119, 0,106,105,128, 19, 45,176,204,140,115,235, - 16,174, 9,182,237,182,227, 50, 88,121, 67, 89,141, 95, 26,192,161,117,238,140, -127,167,125,163,149, 20, 66,135,206,253, 15, 82,226, 7,253, 7,253,156, 30, 74, - 45, 1, 46, 1, 33, 1, 22,137,138,110,121,208, 40,245,176,213, 88,234,232,120, - 84,105,172,120,176,131,161, 56,185,221,246,108, 46, 21, 23, 19,191,112, 54,175, -130, 19,163,134,131,137, 20,181, 29,169,243,108,138, 75,102,115,105, 16, 59, 24, - 6, 24, 95, 88, 7,160, 60,221, 30, 15,130, 44,163, 40,139, 53,230,100, 77,195, -202,178,107, 39,181, 36, 10, 10,139,204, 45,143,232,157,205,133,195,121, 15,231, - 32, 34,213, 45,231,170, 95,171,235,181, 92, 7,252, 70, 2, 6,238,236,106,162, - 62,189, 79,240,151, 49,254,255, 11, 11, 20, 56,187,124, 1,200,108, 55, 59, 0, -231,171,211,172,217, 1, 22, 22, 36, 53,179,183,253,234, 92, 57,219,152, 44,115, -161,123, 80,215, 43,183, 95, 83, 30, 99,118,237,141,237, 67, 83, 98,183,124, 59, -110,163,214, 45,201, 66,131,132, 18,225,204,146,220,123,165,114, 99,125, 39, 95, -152, 8,219,201, 86, 83, 68, 30, 68, 84, 72, 46,214,168,108,121,115,123, 51,140, -222, 92,211,222, 39, 7, 74, 3, 37,114, 96,210, 64,185,100, 69,159,108,107,200, -136, 75,222, 67,217,165, 91,119, 62,113, 30, 5,149,113,178, 74, 84,216, 86,201, -113,248,118,199, 89,184,104,118,121,251,101,107,252, 81, 41, 4, 76, 80,125,162, - 6, 60, 75,245, 10, 95,169,113, 27,223,232, 16,226, 64,210, 70, 10,244, 34, 37, -113, 6,134,133, 8, 3, 67, 18, 26,194,177,137,168,195,144, 91,107,241, 87, 82, - 13,139,192,104, 50, 26, 24, 41, 14,213,130,200,177,160,168,168, 38, 42,137, 12, -102,131,129,152, 87, 17, 47, 50,143, 65, 68, 70, 83, 93, 56,113,163, 89, 16, 59, -177,115,145,152, 50, 42, 58, 21, 39, 50, 38,135,196, 91, 41, 78,178, 76,106, 53, -228,181,157, 68,100,219,101,113,147,108,177,134, 68, 2,132,119, 56,183,252,243, -169,244,114, 93, 45,203,215, 33,144,249, 4, 15,150, 72,154, 76,114,134,174,136, -181,238,226,204,178,151,102,100, 47,201, 53,187, 81, 99, 77,147,191,220, 48,100, -229,174,150, 88,171, 55,122, 37,104,194,114,167, 73, 13, 73,202,152, 42, 81, 21, -157, 99,206, 87, 22, 72,102,159, 94,167, 55,187,212, 86, 73, 43,123, 63,149,110, -156,183,110,190, 66, 97,206, 66, 81, 20, 69,189,247, 94,167,243, 42, 30, 16,194, -134, 16, 66,184, 65, 68,182,223,200, 28,109, 35, 46, 20, 20,180,128, 16, 66, 8, - 33,132,146, 4,138,186,248,177, 18, 70,151, 58, 17, 66, 8, 51, 8,161,244, 6, -156, 7,163, 38,243,120,244,201, 35,223,250,210,136, 26,108,102,101, 6, 2,117, -191,114, 5,150, 95, 68, 23,241,113, 1, 2, 46,189, 23, 69, 86,149,108, 99,168, -202, 89, 41, 22, 63,244, 98,205,179,117, 25,239,189,247,222,123,239,189,247,158, -124,239,189,247,222,195,250,154, 28,236,224,211,167,207,236,178,105,170, 34,174, - 58, 70,191,117,118,235,172, 79,119,118, 4, 24, 28, 42, 48, 60, 50,122,227,162, -135,247, 33,183, 28,114,108, 39, 95, 12,231,110,246,149, 30, 17, 34,228, 14,185, - 39, 67,147,181,155,168,124,109,167,105, 29, 22,193, 58, 98, 37, 3, 5,182,164, -198,197,217, 17, 62,124, 34,163, 27, 84,151,137,106,118,155, 52,137, 72,161, 41, -163, 59,165, 6,107, 92, 43, 99, 76,138,166,245,198,173, 52,228, 57,165,247,180, - 50,135,237,182,103, 22,140,155,235, 44,139, 30,251,148, 77,214,104,137,134,233, -226, 91,217, 78,166, 9,164,163,207,105, 98,137,142, 97, 38,237, 43,175,148,149, - 94,140,190, 15,186,216, 74, 79,100, 98,155, 98, 32,251,109,172, 39, 70,219, 95, - 43, 89, 59,165,177, 95, 34, 97, 83,118,233,198, 61,181,183, 53, 46,179,228,229, -193, 22, 66,192, 4, 21, 80, 83, 69,141, 43, 0,176, 36,113, 58,118,177,181,108, - 89,242, 83, 82,113,144,192, 99,244,215,100,142,175,172, 67,153, 72, 42, 91,105, - 29,190,114,118,155,163, 75, 38,159,240,214,247,215, 78, 66,245, 27, 60, 47, 43, -248,144, 28,162, 55,104,178,155,192,183,161, 10,188,147, 57,216,208, 17,188, 52, -217,183,103,183,253,100,246,252,253,233,226,143, 69,181,217,189,210, 16, 11, 11, -191,253,139,177,246,192, 23,131,106, 29, 29,127, 80,188,141, 69,167,178,216,116, - 56, 49, 66, 98,182,209,187, 47,219, 2,116,114, 68,239,112, 50, 23,152,120,217, - 60,138, 74, 34,213,150,220, 84,233,252, 52, 25,227, 98,219,253,210,140,100,131, -106,236,121, 28, 16,237, 53,251,115,135,144, 54,233, 47,190,152,231,133,147,185, - 68,196, 75,199, 98, 10,221,238, 95, 77, 39,221,170,212, 44,190, 94, 97, 54,151, - 76,244,235, 51, 7, 80,170,140, 76,233, 90,169,125, 42,159,133,121,205,142, 98, - 17, 4,146,224,225,150, 41,180, 61,114, 8, 8, 59, 73, 14, 23, 16, 21,128, 64, - 54,151,137,206,147,120,168, 34,209, 47, 42, 42, 6, 24, 8,168,138, 84, 66,220, - 33,175, 56, 8,239, 10, 2,233, 39,120,184,229,211, 20, 61,163,193,116, 48,157, -107,114,127,234,138,123,228, 18, 38, 16,142,153, 97,205, 2,159, 79,245,200, 99, -104,171,172, 77,174, 18, 43, 29, 29,145, 85,171,170,234,182,252, 98,163,129, 23, - 24, 23,104, 98,199, 66, 19,125,214,238,106, 45,177,139,185, 98,231, 42, 57, 84, -233,198, 91, 71,127, 14,231, 82, 85, 22, 28,203, 99,226,174,222, 79,108, 53,137, -125,162, 64, 18,159, 34,168, 61,125,138,205,218, 64,115, 37, 88, 16,206, 85,183, -156, 3, 84,117,117,214, 36,219,222,160,145, 73, 39,181,149,179, 43, 49, 62, 89, - 5,106,132, 97,168, 67, 73,115,210, 57,135, 76,146, 36,169,209, 26,211,129, 16, - 16, 22,150, 76,103, 99, 49, 35,231, 7,227, 1,242, 0, 37, 24, 17, 33, 33, 6, - 72, 56, 8,130, 24,132,100, 40,132, 40, 1, 65,132, 16, 75, 8, 34, 66, 50, 72, -157, 3,184,158, 46,207,250, 65,253,192, 36,134,114,135,206,247, 77,119, 45,201, - 52,171,132,133, 50, 80,233,251, 79,107, 16, 49,250, 27,126,252, 75, 29,254,184, -142,189,162,202,120, 84,209, 49,153,172, 69,222,115,217, 31,112, 35,206,114,252, - 13, 89,217,252,116,214, 4,113, 76, 93,230,200,128, 46,164, 11, 68,186, 2,112, -105, 93,200, 82,253, 43,149, 58,173,177,254, 54, 53,250, 42, 63, 88, 14,123,205, - 74,236,109,218, 64,252,136,162, 32, 43,156, 3, 19,109,151,151,144,251, 23,113, -133, 37,213, 33, 27, 51, 91, 95,112, 45,143,123,227,218, 90,123,245,240, 48, 67, -161,101, 25,219, 82, 17, 0,178,240,219,254,161, 99,135,167,173, 72, 25, 27,201, - 78,236, 5,121, 10,137,207,235,173,212, 98,245,178,181, 90,217,191,111,121,186, - 83,115, 27, 77,120,218,132,229, 13,249,132,101, 93,102, 96,197, 54,246,233,212, -156, 87, 92, 43, 0,191,128,249,170, 10,195, 42, 25, 40, 24,118,197, 50,126,253, - 93, 87,221,206,102,222,135,246,246,149,128,208,206, 76, 98,138,193, 91,209,176, -222,104,156,172, 26, 74,150, 32,151,162, 90,235,246,195,108,212,254,152,246,195, -199,241,130,138,133,196, 68,155, 10,217,118,171, 32,169, 87, 98,213,247,217, 15, -150,115, 24,230,225, 28,170,202,214,137,133, 60,240,231,104,209, 92, 30, 15,142, -227,114,184, 91,134,239,185,168,137,206, 25, 73, 80, 60, 62,215, 79, 25,227,171, -245,108, 42,169,206, 7, 53,193,220,114,150,162, 92,137, 97,200, 73, 70,248,211, - 32, 18, 99,186, 46,203,133,197,243,121, 70, 23, 54,155,167,159, 19,219, 58,228, -251,100,167,122, 96, 4,210,148,181,208,176,161,151,214, 75, 95, 78, 58, 50, 11, -195,203,102,154, 72,154, 79,170,140,238,195, 73,254, 80, 62, 9, 89, 3,201,164, - 71, 37,116, 2,171,248,127, 80,185,126,229, 67,247,131,189, 2, 47, 51,182,146, -171,212,216,245, 1,158, 98,104, 61, 81, 1,128, 85,106,248, 2, 72, 81, 94,152, -214, 67,161,138,131, 36,110,185,174,215, 73,229,120,157,112,128, 85, 93, 17,182, - 82,202,222,168, 18,181, 14, 85, 58, 37,159, 90, 7, 72,193,131,143, 7, 71, 67, -211,105, 94,114, 72, 97, 23,225,219,212, 62, 96, 31, 32,167,206, 86,172, 25,153, - 77,229, 39,210,198,178, 77,244,126,111, 55,200,146,116, 72, 47,193,152,127, 27, -215,175,152,202,244,136,159,181,164,227,133,145,207,196,162, 87,163,196,188,142, -213, 40,195, 48,113,121,138,205,178,232, 41, 39, 3,250, 87, 30,165,232,101, 76, -221, 62,217,197, 92,242, 32, 50,131,206,174,233, 46,183, 77,221,184,201,170, 34, - 93,195, 86, 63,168, 40, 91,225, 85,124,245, 94, 55, 22,155,243, 13, 27,180, 1, -221,191, 88, 41,236,172, 64, 41, 2,202,113,141, 63, 92, 53,152,197, 49, 20, 4, - 36, 49, 28,180, 9,122,214, 63,138,102, 96,115, 56,174,120, 52, 2,181,220,103, -201,220,203,199,244, 67, 5,166,111,136, 63,112,209, 87,116,137,191,173, 64, 53, -130,179,175, 33,157,188, 11,233,176,138,200, 26,200,176,199, 39,159,140, 11,208, -252,235, 11,192,142,103, 39, 96,138,183,136,182,246,150,189, 68,247,136,246,138, -143, 34, 25, 9,139, 55,116, 9,109, 94, 23, 9,157,199,160, 70,155,164, 83, 71, -177, 46,216, 13, 3,185,208,220, 75, 13,117, 82, 0,214, 73,178,241,161,191,155, - 71,241,247,130, 4,119,129, 71, 79, 7, 8, 7,111,170,248,152,194, 90, 3,103, - 32, 72, 11, 72, 12,162, 3, 52,207, 51, 29, 83,174,247,231,187,200, 74, 42, 13, - 29,211, 91,137, 9, 38, 17, 22,228, 33,142,156, 91,231,252, 59,198,196,180, 69, - 88,231,151, 63,188, 68, 52,117, 62,161,177, 13, 34,238,254, 48,207,217,135,129, -238,193,153,252, 28,163,190, 68,133,157, 49,230, 37,212, 81, 30,150,138,191, 76, -137,133,196, 81,189, 46, 20,173, 58, 71,134,254, 54,145, 35, 17, 64,109,161,239, -210,127, 21,143, 2, 50, 40,114,144,172, 12, 5,232, 27,146, 8, 10, 98, 33, 32, -231,255,128, 74, 2, 67, 77, 19,144, 41,126, 74, 42, 26,161,148,128,242,250, 85, - 67, 8, 9, 50, 13,184, 48, 96,218,138,198,197, 84, 14, 52, 78, 81,193,112,206, -140, 20, 68, 69,118,141,226, 85, 88, 76,239,104,231,207,122,247, 48, 98,164,191, -148,254,200,170,245, 82, 33,159, 44,112, 19,234, 93, 63,145,198, 79, 65, 0, 36, -168, 45, 50,126,252,233,218,148,238,123, 94,143,243, 4,111,203, 61,227,209,233, -239,120,106,141, 94,237,251, 76, 74,173,174,155,146,192, 56,179,241,193,249, 81, -119,229,237, 37,217, 82,104, 19,140,134,240, 12,165,179,186,164, 35,226,115,120, - 88,187,207,195,143,130,160, 28, 5,244,195, 35, 20,249, 27,102,171,156, 26,124, - 68,132,199, 90, 3, 10, 32,222, 43,137, 4,137,100, 65, 35,160, 46,229, 31, 39, -250,144, 21,108, 58, 41,132,255,227, 7,122, 39, 5, 35,160, 44, 18, 32,150,197, -245, 12, 15,150,220,147, 28, 42, 18,145,114, 66,105,110, 76, 52, 85,198,245,172, - 19,158,162,107, 31,221,238,128, 89,183,227, 75,185,142, 46,227,109,134,184,219, - 7,133, 1,132, 16,119,156,126,103,224, 36,249,143,195, 1, 36, 15, 0, 95,184, -207,200,175,232,245,175,114,127,161, 5, 28,195,180,173,171,102,189,152,135,165, - 47,243, 29,175,146,182,139,220, 42,173, 23, 84,161,123,247, 36,205,231,239, 12, - 90,245, 23,169,162,107, 64, 38, 27,223, 84, 73,144,168,153,252,212,225,140,137, - 93, 18,145, 41, 25, 41,118, 1, 38,148,121,218,152,234,211,115,181,177, 55, 22, -149, 3,128, 12,229, 76, 62,158, 75, 3,194,157, 38,137,176,131, 93,223,175, 43, - 99,253,250,140,113,211,203, 12,119,227, 17,142, 62,156, 93,252, 81, 75, 66,140, -188, 43, 38, 15, 29,188, 16,231,123,116,208, 51,184, 17,147, 94, 24,231,152,124, -245,117,205,165,229, 32, 65,187, 19, 94,117, 38,219, 84,184,135,235, 13,190,165, - 32,122,184, 42,230,180,138, 41, 25, 55,142,128,167,130,110, 43, 22,121,116, 94, - 3,199,103, 43, 76,205,140,167,213,146,151, 36,250,184,125, 91,167,146,209,212, - 9,129, 59,245,155,190,253,225, 56, 38, 31,141,196, 79,246, 6,109,148, 65, 64, - 16,198,204,220,176,174,147,145,133,104, 34, 44,122,146,215, 14, 73,112, 32,243, - 14,141,177,125,141,242, 14,238,201,219,124,183, 78,242,146,129,163,210,225,163, -234, 82,153, 73, 77, 36,209,203, 18,116, 26,223, 89,252,202, 80,154, 63,161, 62, - 51, 33, 6, 33, 38,112,112,154,252,185,155,173, 0,163,221,146, 92, 91,211, 78, - 36,193,147, 65, 32,208,185,208,122, 20, 90,110, 66,123, 10,147, 55,194, 48,186, - 16,173, 10, 73,146,152,235,191, 6, 62,153, 52, 41, 25, 71,157,227,114, 50, 60, - 69,178,127,182,221, 69,220, 25,151,244, 58, 27,200, 12,145,188, 2, 53, 70, 1, - 74,103, 77,176,215,112, 31, 6, 78, 98, 84,201, 46,112,133,253,149,172, 26,205, -195, 76,242,243,199, 22, 53,245,147, 7, 2,112,204, 86,131,220,138,174,222,231, -188,249, 44,198, 91, 38,141,233,113, 91,223, 74, 8, 1, 38, 79,122, 35,196,115, - 19,100,220,247,119, 38,167,232,194,167,176,195, 41,187,140, 58,205, 68,115,224, -155, 79, 76,182,178,140, 76,162, 55,138, 33,116, 76,149,143, 28,244, 31,191,113, - 14, 61,215,111,131,214,130, 32, 12,193, 70, 70,186, 80, 71, 3, 28, 80,138,248, - 50,169, 98, 12,131,229,132, 92,153, 93, 9,174,237, 86,209, 0, 30,234,192, 84, - 48,101, 46,196, 63,246, 32,173, 4, 42,216,165,134,104,191, 29,168, 28, 1,205, -173, 86,162,134,148,106,154,167, 3, 9,221, 26, 52, 20,147, 28, 57,244,132,150, -164,218,150,203,199, 98,138, 65, 3, 1, 77,174,135, 46, 0,104,105,133,154, 90, -212, 25, 63,141, 41,211,194,134,198, 64,153,197,211,243, 10,146,141,250,232,254, - 23, 96,152, 33,172,216, 16,123,182, 13,168, 82,230,249,189,101,172, 80,115, 90, -118,129, 59,111, 5, 0,243, 98,229,180,251,240,233, 44,190,116,206,241,101,198, - 25, 94,171,175, 27,143,101,224,144,133,172,105,235, 70,234,164,208,250,151,155, - 98,160,232, 44, 88, 0,243,255,147,153,240,101,120,122,247,249,158,164, 1,140, -190,159,160,248, 1, 63, 64,232,109, 53,138,100, 57,182,141,140,196,111,163,181, -199, 75,207, 24,138,113, 49, 90, 60,161, 64,132, 9,211, 95, 4,212,234, 31,253, -242,115, 95, 10,208, 63,216,166,211,206, 24,202,240, 42, 24, 16, 36,138,210,134, -160, 78,112, 39,255,160,139, 49,114,194, 65,184, 33, 5, 79,155, 27, 82, 31,248, - 88,181,128,156, 96,224, 65, 21,120,203,140, 76, 3,109,180, 19, 23,222,245,132, - 47,145, 31,118,130,109,125,239,107, 96, 51, 78,202,194,250,190,192, 5,178,231, -249,213, 16, 44,107, 91,219,246,144, 0,219,105,163,189,143,243,245, 68, 94,176, -204,190,196,215,153, 16,122, 17,234,100,248,151,127, 91,227, 3, 18,120,195,218, -119,253, 49,187,138,178, 76,164,115, 74,149,198,215,168, 35, 46,122, 37, 68, 89, -104,131,135,104, 74, 42, 82, 67, 96, 90,226, 6, 79, 1,148, 76,197, 17, 86, 90, -180,153, 97,220,172,133, 90,197, 83,247, 46,183,234, 21,232,198,198,236, 19,224, -161, 22, 26,192, 70, 26, 62, 32,235,255,169,213,127,131,172, 90,197,245, 25, 36, - 58, 86, 17, 50, 65,254, 26, 81,247,227, 39,211, 24, 19,141,178,144,231, 11, 8, - 13, 5,148,229,207, 97,183,104, 86,174, 80,181,113,119,109, 50,230,255,124,108, - 93, 13,233,100,161,172, 19,129, 29, 30,136, 17,154,106,220, 18, 32, 83,152,149, -210,233, 77,152, 78, 35, 9,126,159,195, 44, 8,103,195, 53,166,145,116, 98, 62, -110, 34,212,134,201, 59, 26,153,150,213,182,114, 1,174,126,123,111,206, 40, 47, - 54,255,122,126,157,111,219,101,207, 14,246, 74, 93, 85, 33, 69,200, 16,120,175, - 37, 37,221,172,115,107,172, 27, 9,156, 17, 12, 94, 43, 10,130, 93, 14,179,144, - 20,243, 48,135, 84,225,135, 81, 28,201,134, 23,131,139, 48, 59, 11, 76,212,148, -242,181, 18,148, 35, 6,138,171, 8,120, 1, 5,147, 42,250, 88,226,200,245, 20, -145, 51,225,206, 6, 87,137, 82, 46,135,214,253,205,132,201,177,255,204, 24, 70, - 84,147, 97, 26,130,246,197, 56, 86, 31,223,133, 51, 15, 31,229, 10,128,182, 6, - 93, 84,231,157,243,211,155, 9, 4, 28, 29, 56,236,187,129, 6,138,101,211,188, -184,183,142, 80,183, 15, 54,148,225,131, 56, 38,217, 86, 99,174,244,162,175, 31, -238,180, 26, 79, 65,230, 93, 85, 28, 36, 49,215,209,248,161,127, 7, 55,194, 80, - 44, 9, 51,125,234,100,138,202,150,207, 37, 53, 24, 33,119,134,196,138,127,122, - 14,168,198,115,178,123, 7,250, 29,205,138,184, 39, 56,141, 53, 81, 22,160,206, -191, 62, 84,124,178, 30,247, 15,129, 35,158, 7,171,122,240,114, 92,252,252, 89, - 95,179,225,153, 60,143,199,147,191,168,162,168,143,136,202,180,210,154, 33, 55, - 48,154, 14,217,161, 64, 69, 61,239,174,108, 17, 91, 75,233,146, 29,106,200,103, -149, 25,221, 56, 95, 8,174,202, 8,244,181,187,200, 41,143,220, 41, 30, 40,185, - 80, 28,111, 33,149,194,221, 98, 35, 18,234, 81, 90,196, 37,248,112, 6, 13,228, -126, 63,119,193, 93,112, 66, 99, 25, 66,204,232, 70,149, 7,192,162,131, 95,173, -105,198,166, 41,209,101, 38, 34,168,236,243, 15, 27,178,194,199, 94,193,135,253, - 87, 87, 43, 23,146,115, -} ; - -// ../Source/Template/GB_AxB_saxpy3_template.h: -uint8_t GB_JITpackage_34 [4529] = { - 40,181, 47,253, 96,156,116, 61,141, 0, 58,126,244, 22, 45,176,142,142,115, 18, -172,220, 4,201,118,155,134, 62, 32,111,200,182,156,126, 4, 41, 62,118,124,200, - 71,100,150,228,147, 95,124,194,129, 25,223, 75,127,208,127,176,254,167,195, 1, -100, 1,107, 1, 96, 1, 23,200,186, 52, 20, 14, 7, 78, 54,119,144, 92,195,186, -237, 58, 21,183, 45,126, 38,202,196, 5,106,174,134,228, 23, 19,180, 93, 59, 41, -246, 96,124,178, 20,109,127, 63,104,186,117,101, 36, 7, 73,217,121,184,184,221, -238,252, 65,182,146, 51, 68, 78, 13,248,171,166, 87, 23,197,179,183, 59,164,150, -112,113,214,223,220,254, 52,107, 58,215,133, 40,149,215, 31, 28,174,217,168, 93, - 18, 22, 52,172,217,207,110,111,251,214, 29, 30,126,225, 84,101,174,164, 93,182, - 47,107,186, 39,242,110,141,215, 94, 22,247,123, 25, 56,112,103,191,161,194, 27, - 42,237, 82,161,208,244,232,197, 88,116, 10,244, 32,147,245,202, 34,122,190,177, -242,237,211,123,230,202, 29, 2,186,172,139, 67,153,104,224, 76, 64, 3,197, 69, -225, 64, 75,198,162,112,174, 2, 18, 50, 21,112,115, 85, 21, 30,206,166,167, 5, - 52, 52, 56,170,120,120, 15,125,233,182,101,237,126,210,103,147, 57,206,126,233, - 60,205,206,150, 53,206,239,192, 42,245,220, 78,218,183,103,123, 56,162,129,128, - 3,162,193, 26, 22, 57,120, 72,229,246,244,157,156, 85, 26,108, 39, 99,109,105, - 84, 68,100, 28, 25,139, 42, 91,214,220, 94,237,211,154, 75, 9,255, 10, 64, 16, -128,104, 32,120, 16,128, 56,133, 77,127,182, 69, 49,226, 14,248,146,118,233,214, -156,191, 13,180, 84, 26, 23,235, 4,132,109,141,220,134,111,119,155,134,140,106, -151,183, 63,182,232, 0, 42, 93, 96, 41,152,252, 85, 14, 80, 50, 57, 68,115,240, -141,146,219,248, 94, 5, 74, 28, 41,218,171, 34,193,171,154,248,195, 67, 67,227, -225, 33, 45,185,190,178,219,254,224,108, 52, 21,137,208,180,117, 19, 2, 10, 65, -166, 89, 85, 29, 70,197, 61, 24,151,116,238,112,174, 2,133, 14,185, 69, 40, 68, -225, 90,117, 6,211,171, 7, 39,107, 89,102, 53,126,184,158, 86, 44,110,183, 45, - 57,232, 92, 89, 27,253, 85,159, 93, 85, 27, 14,180, 44, 22, 8,186, 42, 16, 87, - 58, 63,253, 71,221,233, 20, 13,180, 76, 40, 17, 87,131,202, 68, 67,169, 88, 50, - 21,142, 5,130,117,109, 42,246, 51,187,246,198,246,143,123, 72,131,136, 11,102, - 66,217, 92, 26,140,196,197,137,188,251,113, 43,219,169,224, 22,159,253,190,228, - 77, 64,194,117,200,130,122,187,252,177,184,233,160,190,174,166, 8,217,120, 79, -177, 71,138, 13,164,176, 46,161, 44, 30,140, 99,192,224, 0,193,221,236, 75, 81, - 0, 14, 60, 18, 64, 20, 48,112,175, 3, 15,136,200,255,247,123, 37,184,179,187, -233, 20,142,132,234, 97, 35, 6,185,178,139, 20, 95,180,221,166,107,216,237,145, -237,100, 20, 61, 25,107,119,177,174, 94,107,177, 64,184,176,149,212,227,108,224, -100,130,234, 84,213,196,157,108,109, 79,147, 90, 81,188,172, 93, 79, 71,174,157, - 23,145,220,162, 43,213, 4, 53, 96,192, 45, 44,142,194, 59, 22, 77,225, 30,138, -159,122, 92, 34,161, 24,140, 43,136, 76, 84,228,212,116,201, 73, 36,235,247, 90, -174, 14, 15,213,184, 61,139,123,247, 10,217,184, 77, 25,103,204, 51, 82,146,147, -222, 74,158,149, 67,207, 26, 88, 87,158,252,105,176, 80, 46, 26,138,131,139, 83, -105,192, 88,228,108,168,210,209, 29,182,155, 56,101,174,116, 63, 89,212,159,123, - 35,102, 15,185, 1,127, 35,158, 23,127,153,164, 23,167,100, 36,112,120,210,236, -189, 10,104, 61, 92, 42,214,103, 55,174,236,174,131,245, 70,111,124,108, 17,117, - 95, 79,142,190,147,159, 49,199,157,207,136,157,111,204,184, 46,162,130,185, 96, -172,123, 9,227,144,138,136, 12,132,107, 82,177, 48, 28,120, 77,136,100,179,107, -138,137,101, 39,222, 41,130,242,201,100, 18,137,184, 64,238,234,189,100,250, 8, - 82,186,136, 18,251,155,156,241,158, 76,127, 92, 22,168,198,164,115,162, 46,154, - 77,206,162,200,114,182,196,239,144,113,210,190, 28,205,110, 75,114, 98,110,165, -246,144, 75,230,226,104, 48, 36, 10,210, 36,114,170,255, 38,220,116, 6, 99, 50, -185, 4,187,130,247, 35, 39, 48, 97, 45,105,103, 43,217,151, 36,215,142,187,178, -179, 92, 15,153,184, 84, 52, 21,139,178,145,112,129,142,140,101,103,235, 64,183, -241, 25,127, 62, 81,122,110, 59, 50,153,156,173,172,221,120, 77, 40, 20, 28, 72, -129,250, 98, 22, 16,194,191,233, 80, 70,172, 57, 74,229, 43,223,142,126,198,236, -165, 44,114,149,209, 33,162, 93, 58, 41, 23,204,117, 84, 22,241,136,106,127,149, -114,244, 89,211, 73,183,215,158,125,182,221, 3,130, 37,163,193, 84, 88,206, 26, -199, 65,179,199,109, 41,142,100,188,135, 80,175,160, 88, 50, 22,102, 50, 1,128, -166, 2, 51,147, 67, 79,240,124, 59,110,163,152,196, 56, 11,117,111,151,148,118, -172,110, 8, 67, 17,198, 16,156, 14, 7, 64, 8, 33,140, 16, 66, 8, 33, 21,130, -161, 11, 90, 84, 21,125, 21,247, 71,170,254,168, 80, 40,212,177,114, 1, 52, 71, -118, 29,120,196, 0,231,172,147,216,236,217, 65, 14, 60, 32,135, 98,197,139,150, -177, 49,230,184, 52,227,163,104, 30,141, 1,212,131, 49, 69, 30,145,204,206, 35, -225, 25, 81, 41,109, 54, 35, 71,226,107, 88, 6,135,195,113, 1,210, 39,113,246, - 87,226,176,141,183, 79, 47, 93,110,227, 91,222, 40,198,157,202, 23,207,110, 56, -149, 42,106, 93, 71,149,222, 86, 52, 17,168,137, 66,194, 17, 51,198,162,228,186, -206,159, 71,178,189, 93,234, 46, 22, 47,199, 24,137, 43,107,167, 31,236,118,197, - 56,107, 59, 59, 2,254,158,145,192,192, 31,196,223,195,182,118,223,168,108, 59, -106, 58,137, 98,127,239, 77,122, 74,131,185, 84,252, 61,160, 76,244,210, 17,183, - 79,172,220, 51,214,100, 14,147,241,157,188,177,228,182,126,150,167,193, 88, 62, - 35,191, 13,197,170,112, 12, 28,248, 39,110,237,193,168,158,100,228,122,217, 59, -121,246,233,232,222, 70,136, 2, 19,137,202, 55,114,253, 80,119,178, 13,224,223, -126,123, 86,150, 50,110,214,114,189, 81,187,118, 62,174,241,118,171,124,175, 93, -218,161,247,220,249,181,221,246,107,101,244, 92, 25, 59, 11,252, 42,191, 35,227, - 16,198, 26,246, 30,219, 30, 97,126,199,181, 77, 91, 20,181,121,123,163,215,110, -143,254, 88,118, 58,154, 69, 42, 61, 18, 11,222,253, 43,127,120,118, 21,234, 93, -112,211, 41, 38, 21,148, 11,192,116,150,173,141,110, 63,146,241,252,180,181, 49, -147, 29,213,236, 47,241,114,219,247, 85,192, 5, 18, 5,211, 35,104,214,211, 25, - 23,156, 67,133, 3,168, 3, 26, 90,154,100,204,208,204,140, 72,146, 36,105, 12, - 99,145, 16, 24, 18, 9,204, 37,179, 65,101,217, 62, 3, 65, 67,233, 32, 32, 10, - 98, 25, 12,193, 17, 8, 97, 16, 6, 65, 64, 2, 67,104,136,128, 16, 73, 8,145, -132, 40,130, 94, 29, 39, 56,211, 84,158,183, 13, 82, 0,254, 10,184, 9,139, 31, -237,187, 24, 49, 4, 4, 72, 85,192, 27,140, 61,138, 28,162,212,189, 76,113,189, -159, 15, 61, 81, 43,102,234, 24,196,231,116, 4, 7,190, 48,177,184,196, 91,162, - 38,234,116, 46,114,112,147, 28,241, 5,206,109, 79,150, 3, 5,210,216, 92,232, -201,226, 82, 69,100,146, 63,244,227,162,102,198,193, 52, 52, 94,222, 59,213,212, -202, 48,134,213,138, 14,161,196,105,235,138,227, 51, 67,179,198,249, 47,107, 61, - 59, 22,111, 53, 47,135, 89,190,107,112, 89,129,188,231,232, 27,167,252,139,111, -206, 53, 88, 69,212,239,193,251,116,160, 0, 70,177, 25, 5, 8,119,235, 80,123, - 36, 9, 9, 58,191, 25, 59,232,187,199,130,147, 17,192,251,168, 24,233,240, 95, -113,122,207, 67, 98,199,175, 67, 16,155, 27, 20, 56,195, 39,255, 54, 74, 33,188, -177,103,218, 20,221, 99, 30,106,189,244,240, 27, 41,104, 66,105, 63,169, 62,249, -192, 46,122,208,226, 93,147,148, 95,122, 62,214,229,177, 91,251,189, 57,107,110, - 7, 26,101,131, 15,160,252, 75, 19, 44,192,224, 8, 24, 18, 2, 17,196, 46,232, -123,137, 70,130,180, 58,223,104, 89, 32,126,147, 84,172,153,202, 16, 21, 29,129, -143,165,117,185,237,202, 90,214,105, 19,181,133,151,249,138,225,230,233,152, 33, - 24,250, 2, 92, 42, 97,240,188, 98, 98, 47, 58,233,151, 39,101,187, 1,122, 62, -213, 40, 69, 79,127,187,185,229, 87,190,175, 36, 11,216,106,240, 97,203,159,211, -241, 85,181,156,111,102,180, 96, 10,240, 32,150, 68,157, 31, 69,147, 67,242,238, - 54,156,149,100,171, 3, 48,168,113,205,151, 11,102,170,133, 68,131, 92,243, 51, -128, 29, 89,155,234,108,114, 46, 26,100, 65, 18,207, 40,102,125, 79,115, 22, 43, - 0,180,226, 12, 45, 73, 77,167,133, 98, 79, 50,238,199,233, 70, 57,105,242, 82, -149,212,118, 25, 64,245, 72, 17,205, 62, 52,155, 47, 47,183, 22,145, 32, 66,248, -157, 7, 11,253,228,162,182, 11,124,147, 89,200, 48,169,133, 55, 42,228,171,206, - 32, 9, 6,188,146,185, 46, 18,118,183,216,112,235,162, 41,184,200,144,199,231, - 20,112, 47, 78,158, 33, 16, 82,133, 84,207,168,125,131,136,221, 4,249, 77,234, -200, 85,160, 16, 52,141,159, 30,216,241, 79, 51, 71,203,247,228,183, 5,143, 44, - 84,133, 33,193,165,121,242, 98, 91, 80,115, 85, 90,129,109, 82, 58,119,193, 59, - 24, 40,220,167, 75,153,185,109,102,173,112,171,251, 19,182, 29, 2, 39,113,191, - 25, 82,141, 23,251, 78, 50,144, 44, 47, 25, 42,184,130, 84, 66,154, 83,237,154, -169, 53, 98, 41, 21, 9,141, 24,170,101, 55,147,199, 59, 46,233,211,193, 11,178, -194,176,226,133, 71,197,145,215, 28,137,201,118,178, 89, 18,248, 86,116, 22, 62, -107, 22,108, 25, 27,184, 90,198, 9, 98,137, 47, 9, 29,181,128,224,221,162, 70, - 2,197, 71, 64,130,124,171,223,203,121, 79,159,142,234,236,108,188, 43, 63, 42, -145,112,139,104, 92, 5, 68,181, 4,207, 59,170,169,174, 7,144,206,132,130,118, - 34,136, 9,141, 18,130, 48,156,164, 71,152,142, 63,132, 89,135, 67,119,227,241, - 20,179, 1, 8,198, 1, 29,233,115, 63,168,196,203,184, 58,175,206,253,159, 74, -112, 29,150,164,187,107, 18,237, 7,200,148, 14, 97,101,140, 86,131,236,176,208, -178,179, 93,122, 18,227, 49,127,157,134, 24,168, 75,168, 23, 78,155,141,100,147, - 47, 80, 39, 13,182, 96,185, 36,160, 25, 10,184,156, 96,235,162,173,219, 17,130, - 61, 62, 92,166, 77,125,186,144,255,137,119,173,144,137,228,119, 74,132, 97, 15, -159,171,227, 5,160, 83,196, 56,104, 22,131,255, 45,179, 78, 51,240,136,187, 52, -174, 17,150, 68,130, 32,213,232,230, 49,110,234,164,147,109,122,187,225,228,252, -188, 57, 69, 69,217,209,144,131,245,209,133,161,208,158, 26, 84,160, 57,242,101, - 95,133, 86,251, 41, 34,214, 71,161, 78, 17,190,240,179,169, 55, 1,237, 21,202, -167,244,129,100, 20, 37, 48,204, 76, 51,185,145,181,184,254,182,247,133,249, 81, -215,107, 30,243,233,234,245, 41,166, 65,148,222,118,235,219,146, 97,204,121, 93, - 88,197,181, 89,101, 86, 79,171,157, 80,162, 59,194, 74,193, 49,180,168,176, 52, - 71,174,179,213, 9, 26,137, 38, 8,189,190, 65,111, 74,210, 66,123, 17, 78, 96, - 80, 44, 74, 28,137,243, 68, 60,131, 59,151,170,192, 58,156, 81,121,133, 92, 76, -182, 19,226, 71, 31,170, 11,220, 16, 38,177, 54,247,132, 20,207,131, 17, 89,191, -166, 19, 15,202,248, 23, 95,218,218,135,121,237, 35,174,192, 4, 44, 9, 18,196, -105, 40,188,228,159,245, 73,116, 31,100,143,146, 23,148, 74, 17,154,129,116, 15, - 76,120, 66, 40, 10, 60,131,168, 75,158,188, 28, 94,182,246,140,137,232,165, 81, - 2,135,229, 99, 55, 19, 90, 42,206,209, 47,144,181, 9,114, 36,241, 72,199,183, -255, 71,195,253, 53,170, 42, 50,186,163, 20, 67, 91, 67,254,138, 7, 92,155, 26, - 13,168, 59,223,151, 50,172,151, 28, 69, 6,125,107,195, 36,221, 17,211,162,108, -100, 4, 76, 5,220,151, 20,116, 55,115,248, 62,168, 30, 76,103,218,238,121,231, -223, 19,245, 30, 2,108,195,146, 99,142, 91, 44, 63, 78, 49,162,203, 71,145, 56, -227,110,165,130, 11,132,106, 9,160,108,148, 5,157, 89, 23,140,109,211,241,215, - 74, 48,179, 41, 92,102,216,160, 68,167,231,129,145,223,228,114,239,163, 79,119, - 75,215, 17, 42, 75, 34,134,211,140, 60, 29,245,238, 86,236, 35,255,153,160,202, -150,180,199,119, 18,107,196, 23,251,232,113,143,117, 35,124,140, 8, 92,139, 26, - 29,210,249, 77,172,130, 0, 25,160,180,224, 78,225,151,190,101,172,171, 28, 64, -163,192,191, 49,197,182,227,184,185, 80,230,224,134,159, 36,159, 67, 1, 11,169, - 29,208, 81, 3, 83,161,130, 17, 28,151,208,151,175,154, 3, 86,113, 64,212,248, -104,223,253, 65, 35, 75, 43,191,192,103, 41,153, 39,155, 74, 62,162,230, 29, 15, -115,125, 0, 51, 66,182,148,201, 31,200,133,225,122, 66, 58, 8,182, 35, 72, 74, -116,239, 82, 75,213, 4,209, 11,193, 18,245, 90,184, 25, 94, 56,102,200,242,219, -168,241,122,172,195, 36, 98, 59,207, 50,243,231,183, 3, 75, 53,114,224,231,229, -181,214,162, 6,190,121,242,140,115, 28,223,251,240,177,127, 76,206, 57,129, 81, -124,255,223,183, 50,235,234, 41,164,161,185,151,154, 12,123,172,210, 89, 33, 83, -165, 94, 45, 5,201,174, 7,123,140, 0, 34, 90,123,196,232, 69, 50, 93, 84, 7, - 4,216, 97,200, 47, 3,164,224, 42, 79,227,240, 77, 31,217, 46,180, 83,169,114, -206, 53,178,112,110,255,236, 56, 54,235,151,121,130, 39, 76,240,101,212,183, 97, - 92,151,110,125, 18,236, 95, 13, 51,126,112,210, 96,130,119, 38,209, 96,242,196, -150, 6,220, 68,177, 40, 8, 3, 72,188,136,202,182,241,115, 60,161,181,183, 84, - 88, 56, 95, 24, 35, 67,188,178,208,250, 67,162,193,244,175,195, 1, 96,150,113, - 5, 40,106, 58, 0, 34, 32, 73,176,113,211, 53,253,113, 60, 51,141,181, 16, 30, -176, 81, 50, 76, 4,111,176,175, 7,240, 46, 98,155,160, 42,185, 40,135, 21,149, -188,118,206, 91,238,186,239,140,149,163, 9,214,149,203,124, 15,167,123,220,189, - 24,142,216,114, 63,221, 30,113,157, 69,173, 40,168, 39, 51, 52,124,139, 4, 40, - 39, 35,110,147,159,130,238, 55,100, 39, 26, 89,235,140, 99, 60,105,166,194,219, -203,112,220, 21,139, 94, 69, 17,145,162, 81, 33,114, 68, 73, 32, 91,129, 17, 77, - 5, 94,196, 53, 6,204,212,146,111,215,200, 27,240, 53, 98, 55, 37, 89, 62, 80, - 35,199,250, 79,213, 52, 25, 25, 26,165,172,130,248,251,214, 96,191,205, 78,250, - 8,147, 65,161, 18, 7, 28,114,147,207,118, 61,216, 78, 5, 84,242, 69,238,209, - 64,192,105, 96,222, 99,252,222, 49, 35, 62,179, 55,203, 71, 14, 32, 31,245,226, -146,197,139, 4, 69,137, 67,192,242,177,234,160, 45, 33,183,176,117,164, 9, 64, - 80,125,209,199, 53, 45, 18, 75, 60,147, 71, 52, 22,156,131,245,198, 9,137,229, -204,178, 40,237,234,196,134, 17,239, 65, 40,100, 26,182, 78,162,160,152,120,163, - 56,102, 96,128,221,159, 87, 34, 49,162,133,255, 82,184,112, 70,243, 38, 60,152, -231, 14, 49,121, 55, 4, 74,163, 42,160,151,125,230, 41,109, 17, 27,221, 5,159, -186,255,102,185,108,168,105,134,180, 0, 24,254, 0,182, 64, 60,220,182, 97, 93, - 46,143, 64, 15, 72, 30,197,126, 29, 73,199,220,145,154,243,229, 52, 41,100,107, -191, 96,199, 33, 68,103, 43, 66,254, 25,152, 83, 77, 33,160,240, 73, 91,178, 30, -144, 88,141,144, 33,146,127, 80,177, 96, 17,134,107,226,139,188, 18, 51,149, 27, - 97,170, 53, 54, 0,237, 61,126, 39,113,201, 7,165,176,182,231, 61, 32,205,209, -185, 62, 19,237, 26,194,168, 7, 75, 11, 77,148,117, 32,205,114,140,112,156, 16, -179,187,203, 67,185,202, 18, 73, 0, 84,112,179,228,254,112,240, 15, 19,136, 91, -199, 59, 74,110,227,204,242,222,180, 90,165, 55, 38, 12,176,244, 3,247,242, 67, -124,244, 39,188, 82,180, 13,207,219,156,228,211,213, 82,196,205,205,136,210,169, -121, 71,148, 2, 83, 17,251,123,149, 51,243,134,158,182,220,149, 92, 19,225,137, - 32,125, 29,131,143, 82, 76,184,147, 98, 42,198,149, 0, 75,105,214, 87,164,163, - 49,122, 36, 52, 9,188,109, 80, 79, 57, 76,177,198,131, 98,163, 2,173, 25,173, - 15,235,155,220,191,164,112,136, 76, 93,201,245,180,178,225,178,194,146,213,205, - 54,236,158, 30,110, 92,171,232,147, 36, 53, 26, 58,169,222, 78, 11, 77, 84, 24, - 28,212, 16, 48,152,162, 6,175, 4, 86, 28,126,171,111, 82,202,205, 85, 59,122, -168,165,111, 94, 68,157,158, 30,133, 1,175, 0,147, 62,134,157,208, 56,133, 60, - 87,149, 86, 72,235, 9, 81, 31, 71,206,191,244,245,105, 32,229, 27,234, 85,189, -178,112,168,244, 15, 17, 4,213,218, 55, 55,154, 63, 50,245, 40, 18,163,163,173, -230,214,171, 72, 11,134,230,194,250, 75,120, 15,159,209, 65,190,205,197, 73, 90, -127, 53,239,233,143, 60,230,160,111,199,178,112,168,209,100, 92,168,209,243, 77, - 51, 56,154,198, 23,151, 67,225, 84,132,233,253,118,254,169, 4,107, 68, 76, 64, -148,231,161, 1,139,147,175,140,104,143,190,180,198, 98,127,178, 20, 6,177,175, -194,122, 61,204,109, 20, 28,228, 79,172,108, 66, 42,108, 44,130, 67,153,221,165, - 65,193,209, 88, 58,128, 29,117,234,130,118, 18,208,112,147, 29, 87,236,147,200, - 13,209, 23,147,173, 67,159, 40, 99,219,194,249,227, 78,137,138,163, 24,206, 78, -161, 64, 79,230,193,212,201,165,210, 84, 64,108,167,169, 21,194,154, 69,112,197, -120, 74,132,190, 26, 77,145, 18,119,149, 54, 87,210,174, 45,113, 2,187, 20, 82, -105,158, 66,160,142,207, 89,124,167, 58,180, 5,158,150,173,232, 48,151,184,242, -177,211, 19,167,240, 68, 24,217, 9, 88,118, 88,182,241,193, 93, 88, 87, 28, 97, - 32,124, 99, 24,150, 88,192,249,235, 30,160,217,137,153,195,216,198, 54, 91,213, -170,134, 14,203,113,145, 24, 70,224,237,190, 46,195, 70, 85,157,142,104, 82,205, - 73, 38,116,218, 7,243,191,184, 22, 13,166,128, 40, 69,157, 1,239, 28,109, 42, - 69,158,163,181,163, 89,154,160,166, 25,243, 82, 10,182, 34,203, 64,101,202,234, -196, 84, 44,115,244, 48, 61,214,178, 12, 84, 3,236,170, 87,156, 42,171,156,107, -103,176,173, 82, 2,149, 7,226,213, 64,108, 60,231,187,102,164,217, 95,249,111, - 25,140, 23, 6, 56,238,137, 86,116,230,159, 52,146,155,240, 3,105,145,201, 80, -214, 82,211,123,148,128,219,111,178,174, 94,127, 15,129,228, 45, 0,124, 0, 5, -103,223,250,232, 51,128, 79,192,176,228, 5, 45,224,160, 53, 9, 46, 16, 72, 7, - 42,217,122,255, 70, 48,234, 56, 1,102, 43,180,250, 7,101, 15, 22,145, 39,196, - 29, 8, 77,193, 7,198, 51, 78,116, 4,121,157, 62,224,210,192,186, 62,138,161, -180, 93,127, 75, 12,156, 59,162,165, 25, 24,224,103,170,181, 1, 20, 20,229, 71, -119,193, 20, 7, 17, 81,110, 64,239,236, 57,132, 72,149, 78,139,214, 51, 5,195, -121,109, 81,224,128, 17, 69,224,215,108, 65,200,170,216,170,170,227, 95,118, 53, - 31, 32, 72,136, 1,106,153, 9, 58, 37,114,228, 48,215,163,168, 81, 83, 12, 37, - 53,206, 48, 6, 90, 34, 88,137,110,247, 66,228, 27,176,140,181,149, 11, 68,212, -241,171, 55,171, 35, 27,118, 27,115, 90, 99, 25, 88, 8,220, 31, 1, 61,177,184, -234,217, 20,128,148,250, 90,139, 60, 67, 45,162, 33,144, 2,169, 66, 96,232,182, -225, 5,252, 56,202,221,220, 97,245,224,212,133, 61,177, 30,108, 45,129,179, 62, -128,104,103,237,232,231,130, 49,197,194, 25,136, 36,236,105,212, 66,197,173, 70, -114,155,184,116,148,135,114,239,175, 46, 86,113, 69, 90,115,235,188, 78, 73,208, - 34, 64,146, 99,220, 79,156,108, 62,122,108,106,226, 6,192, 20, 12, 98,181, 80, - 71, 5, 79, 34,174,103, 65, 76,167,254,244,169, 43, 1,167, 49, 49, 5,135, 40, - 9, 65, 39,249, 67,208,192,203,170,230,147,174, 95,138,228, 79, 18,109,108,212, -105, 13,229,204,162,150, 22, 59,251,246,133, 5,174, 0,172,230,184, 20,168,128, - 92,180,221,181, 96,179,150,199, 4,118,129,232, 73,229, 29,122, 6,201, 83, 71, -125,253,144,152,195, 13, 49,151, 19,188, 46, 13,220,252,171, 70, 0, 20,153,204, -116,124, 96,162,155,166,250,130,153,138, 34,234,152,135, 62, 67, 76,172,216,116, - 97, 83, 34, 53, 77,107, 5,140, 74, -} ; - -// ../Source/Template/GB_AxB_saxpy4_meta.c: -uint8_t GB_JITpackage_35 [909] = { - 40,181, 47,253, 96,254, 9, 29, 28, 0,182,234,129, 40,192, 18, 89, 29, 74, 4, -198, 98, 30,222, 5, 14, 4,172, 77,205, 69, 93,188,126,147, 10, 99,206,215, 97, -170,156,227, 74, 58,143,167,223, 85, 20,138,235, 32, 4,121, 0,110, 0,120, 0, -219,148, 30, 60,195,109,170,209, 92, 59,171,164,198,181, 39,173, 72, 22,148, 75, - 36,107,205,109,220,152,227,188, 97, 80,204, 57, 14, 62, 58, 48, 32, 48,144, 20, - 10, 8, 12, 14,205,231, 17,166, 26, 73,121, 4,126,179,101,219,209,235,145, 5, - 43,113,243,228,133, 96,176, 58,211,207,114, 36,158,236, 50,205, 60, 62,186,237, -109, 54, 73,227, 43, 61, 12, 31,113,220,167, 29,211, 79,143,162, 0,156, 12, 76, -103,144,185, 59, 12, 97,227,109, 72,140,197, 13,136, 69,136, 75, 36,142, 36,145, - 4,158,247,225,190,242,120,210, 78,170,182, 62,171,242, 23, 22, 24,201,168,173, -182,123,111,249,184,183,153,101,247,107,179,228,190,238,155, 83,190, 35,120,210, -108,107,174,254,200, 85, 73,252,218, 71,152,235,122, 59,227, 89,103,121,187, 54, -134,212,215,171,244, 25,203,217,222, 38,223,214,111,153,106, 28, 99, 84,122,105, -215,248,149, 74,153,163, 95,230,215,106,207, 26,127,223,112,213, 30,211,103,118, -203,221, 29,211,237,114, 8, 34, 6, 82, 7,149,137,162,244,199, 73,205, 55,153, -246,149,220,236, 12, 58,117, 93, 68,236,226,170, 46, 11, 69,169, 48, 11, 70, 0, -252,129,177,163, 25, 4, 63,153, 52, 56, 72,211, 39,175,205,105,230, 51,134,144, -144, 43,125,198,213,206,141,212,224,228, 27, 14, 65,211,243, 74,165,226,225,249, -133,161, 44, 11,198, 8, 62,154,120, 52, 61, 55,198,255,223,113, 58, 28, 71,163, - 89,133,228, 74,181,206, 32,191,246,222, 14,112, 40, 21,133,133, 98, 2,195,172, - 74,163, 1, 78,204,181,241, 68,214,249,218,142,243, 65,208,152,235, 15,200,140, -116,150,156,215,117,134,188,179,143,155,149, 22, 92,235,172,126, 1,239,128, 52, - 10, 31,101, 96,217,221,214, 79, 6, 62, 77,211, 52,197, 24, 99,220,128,158,141, -203,130,161,174, 11, 94, 32,134,186, 92, 68, 64,240, 57,101, 97,224,197,130, 18, -206,214, 84, 9, 33,165,219,230,221,131, 78,188,135, 71,124,126,129, 19, 87, 21, - 39, 88,204, 52, 88, 76,177,120,206,218, 76,230,153,248, 60,233,205,184,175,192, - 51,182,192,241,252,178, 44, 20, 19,133,129, 1,128,167,168, 33, 77,163, 12,137, -204,136,164, 36, 5, 73, 26, 3, 96, 68,100,172,170,234,114,112,112,150,133, 41, -134, 20, 36,196, 4, 66,193, 72, 36, 50,138,202, 42, 40,116, 55,113,162,203,219, -178,209, 58, 5, 70,192, 85,152, 56, 30,157,157,222,132, 25, 34,175,251,151,170, - 68,120,240,186,188,108, 41, 90,171,134, 3,106,170,220,226, 72,168,134, 61,197, -195,239,190,185, 79, 72, 41,217, 18, 4,145,228,135, 72,238,199,146, 36, 3,139, -255,144,198, 57,202,166,251, 59,137, 11,109,249, 32, 95,196, 23, 25,133, 67,107, - 96,128,255,229,250,124,160, 3, 33,195,171, 74, 99, 45, 37,134,145, 58,159, 66, - 20,202,212,218,160,101,216, 29,209,219,212, 80, 93,179, 32,132,206, 50, 38,225, -181,145,213,191,145,228,158,226,109, 10, 21,189, 16,162,110, 40,199,208, 48, 15, -110, 51,145,192,215,111, 14, 60, 70,218,163,167,230, 3,172,200, 25,138, 64, 69, -185,182,123,101,170, 68,124,154,192,175, 51,129,164,129,150,112,135,131,217,134, -252, 42,158,104,144, 13, 45,123,165,230, 89, 11,238, 54, 14,142, 5,219, 78,219, -116,202,210,117, 59,100, 62,165, 48,186, 6, 21, 95,126, 66,195,140,171, 69,147, - 23, 33, 85,204,119, 61,221,115,137,242,233,166, 2, 46, 89,147, 41,251,136, 23, -235,212,250, 70, 64,207,120,155, 85,126,208, 75,240,169,209, 5,121,193,130,195, - 15,187,168, 77,247,240,249,149,187, 68,115, 0,175, 66, 30,252,155,255,250,249, -214,190, 60,236, 43,166,228,222,100,154, 58,139,176,248, 52,217,173,185, 96, 29, -158, 6,165,198, 81, 4, 16, 76,181,105, 74,127, 48,217, 42,183, 4,169,228, 31, -209, 91, 86,251,116, 67,245,112,239, -} ; - -// ../Source/Template/GB_AxB_saxpy4_panel.c: -uint8_t GB_JITpackage_36 [914] = { - 40,181, 47,253, 96,129, 21, 69, 28, 0,230,167,123, 33,240,214, 54, 72, 4, 78, - 65,105,204, 13, 17,104,121,252,125,153,254,190,111,137, 57,205,201, 20, 70,164, - 76,145, 77,132,109,244, 5,115, 0,110, 0,114, 0,135,130, 70,248, 17,188,103, -117, 6,250, 88,196, 59,127, 72, 33,188,206, 15,226, 10,161, 19,201, 20,194, 31, -161,175, 95,227,122,143, 32,172,241,178,172,142,109,218, 65, 35, 40,178,131,230, - 23,104, 57,166,241,232, 70,188, 80,221, 52,110, 83,132, 61,199, 54,181,194,141, -231, 69, 59,198,107,244,158,155,223, 56,221, 84,254,217, 20,125,226,168,233,157, -160,250, 99,224, 19,103,128,133,242,243, 61, 45,194,116,150,174,182, 92,169, 90, -174,115,131,161, 34, 24, 12, 1,229,245, 31,221,209, 57, 23, 77,215,159,150,119, -228, 31,194, 72,139,115,129, 95,228, 21, 10, 97,216, 10,207,212,191, 4,101,172, -245,239,244, 20,153,160,143, 32, 30, 73,142,109,207, 56, 53, 81,240,138, 92,226, -113, 50, 22, 12,196,118, 38,254,227,246,207, 88,252,240,181,233,133,109, 45,103, -181,173,182, 44, 83, 17,226,126, 25,126,223,242, 20,189,103,249,121, 69, 27,127, - 14,241,207,245,151, 97,190,163,235,208, 28,247,139, 92,227,209,171, 2, 31,248, - 52,227,125, 93,155,134, 66, 89, 0,107,219, 4,154,150,191, 28,125,131,172,225, - 31,210,227,223,225, 3, 45, 50,213,226, 81, 56,187,161,136, 56,144, 17,180, 16, - 35,107,248,133,141,213,242,106, 39, 92,231, 91,103, 19,100,236, 7, 93,131, 1, -248,163,124,221,209,240,131, 63,188,146,190, 45, 34, 97, 57,195, 17,254,250,130, - 94, 85,167,235,204,150,143,224,198, 36,237,238, 94,157,170,170,208,185,185, 51, -246,240,195,107,150,158,255, 63, 83,120, 31, 13, 85,149,170, 66,164,237, 44,105, -189, 10,199,226, 93, 36, 27,137, 38, 99, 67,164,229,114, 26, 72, 49,118,153, 94, -241,195,204, 31, 15,207, 66,254,232,143, 36,207, 52,109,219, 26, 78,222, 71,191, - 42,181,105, 90,150, 29, 62, 80, 61,171, 99, 36,190,150, 87,132, 11, 28,159,167, -199, 49,118,199,153,121,252,244, 48,191,173,167,192, 96,216, 54, 45, 51, 53,182, -156, 99,164, 99,165,206, 49, 79,210,109, 90,214,240,235, 64,130, 44,231, 36,154, - 90,129, 72, 34, 34, 14,115,128,174,160, 65,189, 98, 72,102, 68, 68, 82, 90,144, - 20, 26, 3, 96, 68,100,202,104, 61,209, 1, 30,127,157,214,197, 79,222,125, 32, -127,200,138, 6,157, 24,146,187, 11, 24,244, 46,133, 57,120, 41, 6, 72,189,159, -144, 82, 14, 24, 6, 45, 18, 14, 65,182,176, 54,103,202, 95, 36,250, 9,170,111, - 36,164,250,122, 56,157,140, 56, 49, 59,160,183,147, 7, 61, 65,200,130,218, 42, - 17, 21, 64,149, 13,174,166,198, 80, 54, 42, 5,110,163,254,109,181,143, 86, 83, -125,217, 65,220,230, 98, 63,192, 55, 32,131, 6,242,160, 12, 26,200,160,106,135, - 14, 1,179, 96, 96,186, 52, 96,125,139, 53, 47, 0, 97,192, 67, 67, 60,117,205, -157,136, 90, 53, 57,120,230,176,153, 35, 98,209,114,189, 49, 30,246,201,249, 10, -199,247, 20,103, 39,226,203, 87,111,160,184, 25,193,220,225, 81,162,157, 66, 23, -192,126,192, 68,139,109,215,200,205,226,106, 50,195, 12, 14,183, 32,122, 3,110, -155,223,187, 50,123,248,123, 13, 98,195,131, 67,212, 57, 25, 37,143, 99,248, 77, - 1, 4,197, 92,254,230, 53, 4,148, 65,153, 47, 49,130, 90,129,253,129,110, 45, -230, 44, 56,238, 64,126, 80,139,200,198,163, 8,246,205,130, 7,128,244,103,247, - 29, 32,204,192,213,220, 43,162, 65, 41,212,141,120, 0, 14,236,244, 69,193, 89, - 6,164, 29, 0,137, 1,162, 46, 44,128,177,157,128,119, 59,179, 58, 37,168, 30, -190,189, 12,219, 64, 51, 55,111,201, 41, 90,168, 54, 9,165,165, 28, 99,192,129, - 45, 4,215,142, 90, 6, 45, 0, 37, 54, 1,194, 32,183,165, 26, 32,234,185,166, -102, 56,242, 96,199,136,107, 16,240, 16, 72,102, 38,231,131,105,116,217, 0, 0, -201, 39,232, 86,100, 3, 66,136,241,249,146, 3,210, 77,147,243, 51,147,186, 8, - 87, 29, 82,148,136, 10, 60,128, 57,110, 80, 69,175, 24, -} ; - -// ../Source/Template/GB_AxB_saxpy4_template.c: -uint8_t GB_JITpackage_37 [3122] = { - 40,181, 47,253, 96,236, 72, 69, 97, 0,154, 96,212, 17, 45,176,172,172,115,200, - 50,240,251,252, 57,188, 69,102,150,141,253, 38,154,131,160,219,167,185,111, 38, -172,169,240, 92,229,182,175,114, 77, 14,153,117,252,160,255,160,255,194, 67, 9, - 12, 1, 10, 1, 27, 1, 22,217, 13,220,217,191,103,182, 13, 37,219, 89,121, 49, -154, 97,253,255, 12,134, 4,203,214,218,100, 5,134,116,201, 80, 92,209, 55,202, - 17,218,158,103, 43, 48, 46, 14,172, 13, 86,217, 88,155, 91, 43, 92, 22,131, 79, -249,104, 61,158,149, 59,233, 8,121,147,106,172, 42,131, 81, 68, 84,149, 78,153, - 61,235,202,147, 61,149,110,215,250, 31,242,242, 7,185, 30,234,216,240,182,185, - 75,107, 58,233, 71,239, 61,153,245, 43,189,210, 11,191, 48,203,228,153,187,231, -110, 95, 92,227, 27,130, 31,205, 26,213,169,233,113, 39, 91,174,224, 47,157, 16, -255,195, 54,228,193, 88,120, 72, 28,204,101, 18,172, 62,169,220, 91,223,201,154, -229, 96, 59, 57,235, 7, 71,131,134,204, 67, 99,139,202,150, 53,183,151,243,180, -230,158, 87, 61, 18,144, 44, 72, 28, 7, 34, 11,146, 75, 89,244,104,219, 66, 54, -252, 81, 61,196, 93,250,245,245,184,169, 30, 42, 28, 40,171,195,100,195,183,195, - 13, 3, 2,202,239,118,231,149,199,202, 96,136,131,176,173, 18,180,213,163,231, -133,219,109,223,242, 88,105, 84,212,100,249,132,175,244,192,143, 47, 86, 32, 4, -130,164,197, 42,160, 10,171, 56, 28, 2, 97, 56, 32,144, 7, 89, 30,150,175,189, - 61,195,219,147, 62,235,203, 31,119,187, 74,106, 31,163,237,202, 20,196, 44, 32, -117,122,111,101,123,242, 83, 30,115,238, 36,196, 37,156,138,190, 89, 48, 85,178, -151, 73,146, 20,125,242,133, 43, 56,181,141, 85, 38, 80, 2,135,214,212, 34,170, - 72,141,232,211, 59,149,232, 82,199,225, 98, 8, 42,107,149,190,210,143,252, 62, -191,208,163,217,103, 63,130,211, 17,234, 56, 58,143, 18,117, 7,138,131,162, 92, - 18,113, 72, 62,147,200, 7,156, 12,212, 35, 21, 41,226,152,196, 73,100,105, 28, - 66, 69,123, 22,195,124, 58, 40,227, 68,209,169,155,117,189,150,107,227, 22,122, - 65, 24,206, 36,104,187, 74, 47, 46,123, 30, 46, 17, 5, 40, 50, 13,170, 77,180, - 32, 44,234, 30, 79, 9, 58,168, 75, 49,126,173, 89,116, 30,163, 71, 72, 88,151, -117,105,170,204,255,201,159,199, 91,229,181, 31,219,150,202, 55,122, 91,233,205, -216,130,103,127,149, 47,107,159,166,121, 6,202, 23, 78, 69, 82, 36,102,253,201, - 25,210, 34,246, 66,141,185,204, 94,154,145,213, 36, 87,238, 98, 95, 56, 61,246, - 60,121,240,163,151,159, 71, 86, 80,129,114,173,239, 41,141, 83, 7, 77,246, 2, -212,163, 58,151, 53,119, 97, 99,196,129, 97,115,225, 31,173,236,153,178, 94,235, - 87, 64,122,230,174,172, 63,122,229,132,104,209, 92, 48, 87,229,208,152,131,243, -141, 55,166, 41,239, 79,212,165,207,193,121,134, 15,229, 28,206,190,147,102, 84, -171,244, 59,157,167,128, 52, 6, 97, 2,100,143, 0,103, 45,244,178,249, 9,159, - 9, 3, 86, 13,153,137, 75, 77, 32, 12,229,151,164,142, 39, 58,164,241,169,163, - 99,222,128, 92, 66,199,115,185, 38,186,199,254, 99,215,242,145,114,233, 70,191, -104,170, 7,203,165, 1, 99, 96, 61,144, 62,159,248,233, 60,145,149,215, 66,158, -188,237, 75,159,216, 69,151,186,216, 81,245, 6,151,135, 12,132,132,197, 1,128, - 15, 24,112,205,197,122,200, 88,145, 3,214, 53, 86, 97,215,195, 4, 68,164,115, -169, 19,101, 42,136,203,170,108, 46,154, 12,246,233, 66,133, 73, 29, 48,236,117, - 66,170,125,162,238,145, 95, 83,164,134, 39,185, 98,191,146,122, 91,131, 37, 17, - 33, 1,129, 73, 8, 88, 22, 96,155,137,135, 12,182,177,164,142, 34, 60,118,244, -203,101,105, 56, 88,131,172, 91,202, 64,152,232,227,239,151,139,162,130, 81, 92, -214, 21,113,105,176,176, 77,133,105, 5,112,158,122, 54, 67,247,178,253,132,173, -199, 19,166, 12,198, 4, 14,245,139,115, 24, 40,212, 47,164,137,164,163, 95,210, -248, 90,153, 49, 24,186,145,116, 17, 99, 55,132,134, 20,125,242,198,167,130,210, - 90,114, 49,137, 92,112, 36, 61,137, 52, 71,226, 68,231, 44,212,184, 78,186,209, -125,206, 57, 17,135,195,146,159,243,201, 67,155, 84,227,239, 11,237,228,122,253, -143,141,134, 58,183,149,185, 75, 90, 95, 14, 7,206,190, 94,104,185,222,222,118, - 76,182,104, 15,151,201, 11,157,113,129,138,206,158, 20,121,140, 91,116, 4, 87, -132,133, 93, 52, 19, 87,166,178, 80,148, 83,223, 46, 97, 18,162,148,111, 26,119, - 51,210,202, 17, 54, 8, 93,145, 81,239, 17,196, 55,156,180,111,198,182,107,118, -201,147,106,231,206,175, 13,191,223,142,206, 87,106, 96,120,201, 61, 54,136,181, - 10,172,120, 55, 3,229, 84,103,194,186,174,226, 96, 85, 73, 82,236, 62, 81,175, -128,239,164,174,123,228,170,232, 21,134,233,166,169,235, 36,221, 36,210,109,156, - 13, 99,177, 32, 36,174, 42,250,116, 9,100,241, 64,199,108,182,225, 39,147, 90, -105, 17, 58, 28,132,105, 68,166, 15,131,134, 8, 9,203,101,131,105, 36, 22, 96, - 23,118, 93, 28, 58, 21, 80,122, 16,108,237,173, 19,112, 72,131, 52,168, 66,164, -212, 41, 69, 35, 34,146,146, 36,133, 12, 7,114, 32, 8,131,161, 64,143,181, 40, -232, 14,162,128, 52,200, 81, 32,196,176,136, 33, 68, 17, 67, 12, 33,148,136,136, - 4, 34, 36,129,200, 4, 81, 32, 81, 7,137,231, 84,153,101, 6,206,171,142, 86, -139,213, 55,115, 9,163, 40,196,132, 41,161,220, 43, 18, 73, 66, 31, 12,253,118, - 78, 73, 73,224,222,159,148,222,219,166,174,112,127,182,207,126, 45,223, 42, 25, - 13, 31, 98, 7,181,181,162, 13, 75, 79,181,189, 37,157,106, 55,184,129, 3,173, -208,169,234,123,225,180,156,111, 52, 34, 41, 12,189,135, 21, 8,109,156, 19,150, - 22,237, 30,231, 27,143, 63,209,230,207,170,119,238,172, 35,130,160,120, 70,127, -239,219,182,149,186, 77, 12,155, 83,188, 76,155,142,130, 38, 60, 20, 58,172,132, - 2,196, 58, 31,241,228, 87, 13, 35, 67,150,204, 46,233, 23,242,115,197,141,120, -112, 61, 50,154, 42,196, 77, 81,167,107, 65, 53, 53,226,248, 56,125,244,250,187, -134, 13, 34,203, 53,195, 1, 59, 2,197, 73,181, 63,202, 93, 64,232, 17,182, 69, -149,226,195,130,161,225,205,200, 29,176,194,200,136,118,219, 12,180, 13, 74, 50, -104,135,239,105,240, 83,253,190, 66,224, 11, 61,156,220,157, 45,118,145,159,108, - 4,104,213,161,145, 5,211,202, 7,115, 3,210,204,112,100, 11, 14, 84, 1, 98, -111, 76, 15, 87, 59, 76,200,208, 58,215,137,181, 33,188, 26, 81,164, 69, 59,165, - 6, 38,169,157, 11,232,161, 38,189,234,193, 6,132, 94,153, 70,169, 4,103,104, -129, 77, 82,203,149,152, 51,233, 10,154, 11, 98, 73, 58,138,165,158,250, 16,194, -221,179, 85,229,204, 86, 1,173,198, 88,142, 61, 10, 17, 93, 8, 22,109, 90,218, - 2,251,209, 64, 15,250,107, 52,114, 22,226,213,120,215,220,194,232, 6,142,208, -105, 68, 23,168,208, 12, 48, 3, 99,240,162,147,171, 0,173,181, 70,183, 33,201, -210,201,122,228,150,130, 62,228, 17, 94, 42, 39, 76, 62, 53,112,221, 48,226,255, - 45,125,215,153, 33,142,145,192,114, 91, 56,237,202,207,136,237, 41,143,252,121, - 92, 48,156, 24,153, 54,135,136,164,223, 51,170,175, 47, 6, 47, 27, 78,104, 37, -234, 99,104, 70,155,243,168, 24,123,255,118,241,204,237,190, 79,200,225,167,128, - 55,135,155, 88,230, 87,196,238,186, 1,241, 54,159,177,138, 86,228,198, 91,225, -196, 98, 42,216,176, 63,195,118,145, 72,226,188, 40,137,241, 9,103,216,159,104, -238,210,134,238, 27,167, 77,120, 51,190,252,232,116,141,173, 44, 8,133, 46, 72, -157, 98, 13,198, 54, 42, 62, 21, 25, 55,162, 80, 86,171,236, 79,225,209,142,145, - 33,220,199,150,137,187,227, 68, 22,141, 63, 67, 98,219, 61,189, 99,119,231, 55, -255,144, 83,225,133, 64,204, 57, 93,162, 83,175,126, 71,219, 56, 77, 28,211,203, - 24,121,146, 1, 16,160, 76, 80, 26,190,110, 3,235, 79, 32,253,210,127,222, 23, - 89, 75,142, 60,198,138, 59, 94,145,229,139,105,205,201,111,129, 37, 28, 68,219, -112,136, 68, 74, 55,144,182,143,201,139,202,117,232,146, 54,236,122,228, 12, 73, - 24,193,253,221, 98,113,189,157, 48, 12, 7,233,109,128, 64,118,220,143,124,255, -161,250, 21,229,198, 94, 20, 57,101,184, 35, 23, 64,234,147, 40,210, 89,195,204, -233,167,144, 58, 98,217,212,195,228,243, 28, 46,128,246,156, 16,156, 45, 23, 98, -212, 67,118, 99,107, 16, 69,134,154,184,126,156,236,191,165, 19,170,122,202,128, -251, 55, 5,201, 51, 26,104,158, 75,176, 31,145,180, 62,167,159,203, 64, 98, 5, -117,192,162, 91,160, 30, 2,247, 70, 34,104, 17, 28,230,142,225, 93,103,213,160, - 91,135, 33, 24,173,208, 35,217,122,139,222, 41, 46,246, 54, 23, 18, 94, 93,244, - 70,119,177, 23,121,161, 77, 24,101,230,147, 61, 28,177,160,200,145, 19, 67, 17, -255,169, 91,122,216,236, 96,148,135,209, 56, 18,101,163,206,163,219, 61,200, 54, -149, 34, 8, 66,200,150,160,237,136, 92,118, 32, 9,251, 28,118,124, 68,109, 81, - 70, 22,228,230,237, 24, 2, 37,138, 72, 43,207,184,113,163, 25,209,120, 29,137, - 65,177,179,134,201,135,192, 92,191,103,215,105, 57,171,129,233,236,219,172,195, -125,114,111,166, 54,169, 35,190,185,175,205,224,171,120,238,147,214,215,130,124, - 93, 90, 21, 69, 6,165,103,165, 68, 48, 9,169,243,159, 52,138, 33, 55, 1,226, -231,251, 0,236,117,213,113, 40,148,213, 9, 38,159,160, 42,135,191, 33,219, 61, - 59,119,112,252,111,152,114,183,167,145, 73, 31,223, 56, 87,156,250, 69, 64, 56, - 84,211,188,144,218, 56,205,200,185, 19,126,117, 48,231, 35, 87,149, 14, 86, 21, -230,110,153,160, 68,218, 11,174,211, 38,100,237, 0, 64,130, 41,125,244,232, 0, -116,176,238,222,115,194,240, 4, 13, 44,250, 37, 2,186,248,161, 22,124, 23,153, -132, 16,213,173,174,153,108,181, 92, 6, 34,115, 42,178,135, 34,238, 37, 47, 14, - 8, 99,252, 47,134,191, 89, 28,101,223, 7,160,230,186, 15,240,247, 33, 74, 17, - 56, 56, 6, 94,101, 84,215, 31,198,209,170, 72,204,161, 52, 82, 42,130, 21,134, - 83,224,241, 70,204, 48, 2, 80,211,104,221,217,236, 2, 77,252,230, 87,102,198, -231,134,192,103,131, 66,215,112,156,200, 9, 16,230, 65,194,146,154,127, 29,119, -133, 66,124, 9, 84,146,135, 91,228,138,142,158,243, 42,101, 23, 81, 63,137,196, - 3,148, 1, 92,227,245, 66, 79, 11,202, 41, 60,229, 80, 78, 0, 76,139,160, 43, -137,188,187,197,133,217,172,218,237,164,193, 45,225,204,108,216, 23, 82,195, 6, -175, 66, 32,210,110,253, 57,143, 6,186,153,179, 20,126, 81,159,128,228, 50, 66, -242,106,104, 39, 11, 9, 18,226,109, 12,119, 25, 13, 13,238,196,182,247,157,178, -153,136,140,193, 9,242,145,147,165, 95,181, 15,239,254,136, 80, 63,147, 64, 29, - 38,242, 17,239,239,175,108,240,169,196, 28,217, 37,212,242,245,128, 69,202,213, -229, 76, 52,131, 49,231,179,245,131,171, 78, 87, 55, 80,176,155, 19,108, 19, 39, -156,155, 91,131,161,131, 61,128,235,206, 21, 31, 42, 77,113,244,247,248, 66,189, - 81,182,101,154,228, 49,164,145,255, 88,113,118, 57, 30, 73,126, 84,137, 86, 10, -202,249,225,152,208,117,129,100,120,242,219, 31,173,166,200, 94, 62, 94, 59,115, -222,150,118, 76, 3,254,177,205,165, 41,219, 38,140,245,110,195,202, 26,246, 49, - 37,217, 22,130,148,142, 32,195,182,205, 10,125,205,205,125,117,107,232,200, 70, - 30, 20,226, 85,136,206,244,252,135, 49, 60,202,195, 22,106,229,138,217,136, 73, - 51,196, 32,230,175, 35, 16,102,179,213,101,184,125,114, 39, 27, 79,193,176, 48, -180,160,104,239, 83,130, 51,115,168,200, 56,175,222, 2,110,207,100,206,116,143, -198, 0,113,212, 89, 27, 10, 31,208, 34, 72, 23, 12, 21, 61, 43,133,138, 95,156, -195,221, 98, 94,132, 83,230,125,110,111,109,178,137, 27,170,105,211,209,142, 59, - 64,120,221,120,125,227,178, 49,200, 39,199, 49, 93, 81,144, 38, 13,127, 0, 62, -229, 19, 35, 57, 64,165, 28,238, 48,101,160,161,227,172, 47, 83,192,250,158, 7, - 48, 99,129, 12,130, 80,113, 50, 27,108, 52,150,237,152,115,101, 40,214, 40, 29, -154, 85,170, 50,108,245,232,183,236, 70, 22,154, 2, 82,150,143,158,168,192,130, -129,205,188, 49,128,144, 80, 24, 3,220, 78, 77,190,110,194, 76,186,109, 32, 5, -114,152,197,195,202, 3,253, 11, 40,104, 35,248,130, 22,171,198, 30, 43, 53,102, - 12, 74, 47,228,195, 94,174, 11,207, 85, 27,164, 56, 33,197,252, 71,193, 63, 49, -112, 54,220, 12,212,144, 10,222, 62, 64,208,144,102,188,137,241, 40, 35,194, 8, -184, 12, 61,221,243,183, 65,122,241, 18, 43, 9,242,208, 90,152, 43,100, 44,201, -254, 92,177,100, 36, 70,140,249, 48,216,129,163,159,157, 32,197,163,114, 75,175, -240,132,171,161,251,118,233,255,150, 50, 27, 21, 46, 26,108, 16,101,158, 24,190, -139,119,192, 12,170,133, 22,150,100,155, 0,156, 46, 67,246, 36, 98,103,246,241, - 78,160,200,127, 89,173,138,239,103,138,243, 58,105, 48, 8,203,175,153,208, 84, -145, 40, 42,145,163, 10, 25, 40,136,158, 96, 35, 1, 13, 86,238,176, 60,239,193, - 29,182, 58, 24,170,246, 7, 33, 31, 49,161,244, 82,100,244,155,163,233,233,158, - 78, 56,172, 22,254, 30,240,160, 55, 0, 63, 0,133,114, 88, 79,148, 8,107,228, -225,220,240, 28, 83,138,151,228, 48, 19,187,115, 0,108,109,112,153,112, 66,248, - 45, 21,185,140,156,237, 97, 6, 88,244,255,165,225, 89,124, 76,175,237, 2,197, -180,194, 19, 81, 59,100, 26, 14,211,182, 22, 36,253, 24,236, 50,227, 83,206,135, -177, 43, 30,140,214, 81,113, 65,126,236,127, 62, 76,148,251, 11,124,170,195,131, -116,222, 22, 10,168,176,255, 71,177, 85, 57,149,123,212,236, 87, 39,122, 33, 55, -205,236, 16, 76,244,150,151, 73, 22,242, 17, 65,185,164, 28, 6,199,208, 42,100, -102, 2, -} ; - -// ../Source/Template/GB_AxB_saxpy5_A_bitmap.c: -uint8_t GB_JITpackage_38 [1090] = { - 40,181, 47,253, 96,145, 11,197, 33, 0, 54,115,152, 40,208,210, 56, 7, 84,147, - 52,161, 39,210,162,178,116,226,198,157,168, 82, 16, 8,221,177,141,249, 16,193, -238,238,113,151, 53,210, 99, 31,240,197,131, 34,247, 23,143, 0,135, 0,140, 0, -124,111,164, 25,119, 91, 4,169,166,237,223, 41,159,201,248, 36, 2,138, 65,197, - 26, 22,233,187,165,114,131,250, 74,206, 34, 42,182,146,177,230, 84, 26,153, 11, - 74,198, 32,149, 45,119,110,175,230,209,157,111,219, 59,117, 96, 64, 96, 80, 45, - 20, 16, 24, 92,130, 77,167,108,131,196,204, 41,239, 35,237, 78,174, 61,167, 48, - 30, 7,106, 52,214,141, 5,131,111,119, 24, 82,101, 58,210, 42,108,107,164,246, -240,212,223,169,109,235, 64,183,125,235,146,181,144,195,129,135,153, 88,183, 96, - 20, 26,185,219,159,235, 93, 9, 35, 42,138,246,130,162,119,193,205, 43, 21,169, -170, 84, 2, 25,203,150, 29,214,149, 37,123, 60,224,117,214,202, 2,146, 21,209, -209, 84,104, 54, 32,206, 64, 45, 32,251,148,118, 59,228,214, 67,118,109,142,237, -101, 87,119,107,237,206,143,237,166,118,153,187,109, 59, 49,170,243, 98,241,225, -118,159,111, 44, 43,135,238,137,144,136,175, 19,244,140,175,141,216,231, 50, 98, -135, 63,165, 98,221,142,202,254,104,163,125,183,142,211,176, 27,185, 95,219,113, -127, 7,205, 95, 74,157, 55,206,111, 84,188,121,174,195,176,120,214,238,231,253, - 22,177,206,122,202,201,157, 53, 15,229,117, 30,142, 54, 57, 43, 89, 3,217,196, - 91,151,177,134,217, 75,228,100,179,200, 85,187, 23,215,201,141,183, 45,214, 72, - 79,185,249,200,121,196, 74,179,190,191,178, 37,117,126, 58,215, 99, 38,183, 44, -203,178, 32,132,208,227,121, 23, 23,192, 69,146, 73,164,185,216,240, 92,111,218, -109,206, 15,219,141, 45, 48, 34, 46, 56,109, 95,240, 28, 77, 69, 71, 51,113,117, -107, 26,117,168, 32,133,151,127, 28,170,119,204, 63,239, 23,235,122, 45,215,129, - 51, 60, 27, 50,171,192, 47,151,188,129, 56, 84,214, 49,231,126, 47, 4,133, 43, -251,215,202,137,193,119,202,250,253,127, 73, 18,145, 36, 80,103, 50, 32,146, 52, - 34,141,156, 10,157,234,247, 78,117,244, 39,183, 68,214,244, 76,230,121, 56, 25, - 20,221,220,201,190,146,142,158, 60,202,241,207, 3,152, 14,106,174,123, 32,116, -204, 31, 13, 61, 10,210, 83, 34,120,202,163,217,132, 62,211,161,166,243, 56,150, - 38, 67, 57,222,161,208, 41,165,148, 74, 58,224, 7,199, 41,103,209,203, 37,148, - 6,167,195, 11, 2,110, 36, 13, 23,204,225, 7, 46, 41,168, 44,148,101, 42,152, -252,153,228,203, 59, 56,206, 88,111,199,252,214,120,237, 5, 63,234,188,180, 43, -102, 57,187,200,100, 98, 67, 54, 94,249,134,203, 9,142,153, 10, 40,172,185, 40, - 71, 1,128,215,168, 1, 69,101, 16, 34, 25, 17, 17, 73,146, 20, 50, 28, 96, 68, -100,204,202, 54,226,112,108, 24, 36, 89,166, 8, 49,196,200, 69,150,145,146,194, -250,217, 9,166, 33, 34,206,219,108,216, 78,123, 62,120,239,234,244,116,151,206, -142,251,223, 20, 42,162,112,148, 69,169, 61, 89, 80, 85,145,181,210,150,141,168, -215, 36,235,104,231,147, 54,183,254,226,182,225,152, 85,128, 1,226, 39,133, 48, -157,178,123,248, 58,164,118,140, 69, 35, 18,129, 77,217, 35, 68,100,175, 29,135, -250, 70,224, 47,117,160, 63, 15, 77,236,244, 17,153,237, 44, 11,213, 46, 3, 38, -140, 64, 57, 43,142,210,144, 52,235, 81, 94,212,173,124,134, 98, 29, 50,197,215, -126,177, 24, 57,202,176, 83, 35, 0,254, 50,226,185,134, 66, 9,116,113, 73,193, -205, 92, 99, 69,106,125,220, 95, 13,233, 22,246,150, 11,192, 45, 4, 22,144, 34, -145, 21,180,255, 13,106, 67,231,253, 52, 86,239,180,101,100,171,151, 24,229,159, - 94,126, 26,101,164, 37, 24,198, 6, 25,190, 58,151,106, 40,159,129, 51, 32,153, - 9,135,100, 9,159,108,205,155, 98, 2, 52,107,168, 52,237,164,201,120,207, 20, -165, 44, 45,101,222, 68,178, 11, 13,235,102, 68, 46, 82,141,152, 82, 35,136,137, - 20,203,129,175,126, 35, 31, 29, 60, 47, 24,206, 64, 3,250, 8,177,127,128, 89, -106,145, 58,218, 65, 99,108, 47, 19, 19,252,104, 31,198,248, 49, 47, 42, 31,134, - 26, 45, 54, 45,239,117,230,242, 3,254,138,200,148, 23, 68,127, 48,149, 97,104, -170,218,255,138,107, 48, 7, 16, 57, 5, 12,155,119,246,195,118,151,170,133,156, -128, 80,149, 32,164,195,247, 70, 37,114,225,100, 10,153, 67, 56, 62, 17, 87, 47, - 96, 41,192, 3,168, 94,224,181, 77,195,143, 82,163, 32,152, 46, 61, 13,127,189, - 42,230,122,126,125,177,220,200,182,150,226, 68,248, 62,227,195, 79, 33,163,160, -157, 69, 2,184,189,172, 73,216, 84, 61, 42, 95,250,241,247, 94,123,152,139,121, -118,152,137,220,248, 46,216, 27,209, 10, 54,205,251,131, 41, 41,181,137, 40, 41, -208, 67, 57,122,198, 67, 41,141,135, 1, -} ; - -// ../Source/Template/GB_AxB_saxpy5_A_iso_or_pattern.c: -uint8_t GB_JITpackage_39 [1253] = { - 40,181, 47,253, 96, 11, 14,221, 38, 0,166, 56,168, 40,176, 84, 85, 29,244,237, - 47, 43,182,169,206,172,243, 71,225,210,191,247,192,153,219,235, 19, 61,145,167, - 98,233,151,220,218, 41,253, 65,255,193,246,148,110, 6,159, 0,150, 0,158, 0, -157,212,122,235, 74,171,247,201, 97,150, 59,109,136,195, 49,212,209, 74,221,201, -229,158,223,168,188,245, 16,247,173,136,192, 98, 64, 77, 78,147, 22,190,225,206, -254,116,166,115,203, 80, 19,211,169,181,134,210,128,216, 88,182, 25,114, 39,158, -156,227,204,121, 52,231, 93, 7, 63, 29, 24, 16, 24, 80, 11, 5, 4, 6,159,104, -210, 39,220, 33, 18,226, 22,248, 16,151,171,215,216,167, 14,212, 68,206,202, 43, -209, 48,241,149,182, 51,115,127,157,232,242,129, 95,172,244,114,123, 14, 63,117, -221,247,185,117, 76,164,192,170, 98,189, 65,179,208, 59,115,150, 54,187, 53,171, -184, 51,152, 37,132,236,136,196, 89, 28,129, 89,148,248,229, 18, 81,151, 75,245, - 10, 28,115, 58,187,144, 7,202,122,117,239, 57, 67, 80,200,180,159, 49,173, 90, -132,159,172,231,255,143, 72,162,232,211, 27, 13,216, 38,109,250,105,125, 39,157, - 30, 15,248,173,247, 78,129,200,202,112,174,139, 75,226, 51,183, 79, 11,244, 39, - 46,183,200,177, 7,237,219,222,196,167, 77,229,174,185, 92, 61,248,171, 92,158, -222,113,227,138,144, 38, 35,242,231,121, 55,233,157,160, 99, 25, 10,249, 91, 63, -223,102,198, 82,243,156, 74,237,241,183, 92,172,252, 89,218, 15,117,182,115,199, -105, 89,122,207,248,243, 14,255,169,207,150, 91,179,172,223,184,128,185, 82, 91, -239,125,154, 38, 63,185,252,154, 31,221,189,122,190, 50,227, 44,126,220,154,109, - 95, 13,207,237, 29, 4, 28,213,229, 54,111,127, 32,243, 94,122,165,130, 65, 88, -102,122, 7,204, 9, 94, 73,147,130, 73,107, 79,210,208, 38,205,238,219, 38,167, -225, 79,168,132, 55, 57, 47,151, 51,239,163,221,236, 58,121,165,189,245,234,165, -231, 33,175,221, 58, 63,211,222,230,215,201, 16,234, 50,239,228, 68, 30, 41,240, - 85,229,150,101, 89, 86,140, 49,198,145,137, 52,114,109, 54, 48, 12,131, 27,128, -138,187, 90, 61, 19,119, 24, 49, 94,115, 93,112,174,138,172,155,227,236, 3, 21, -109,196,220,243, 64,193, 87,247,192,103,173,111,198,243, 82,206,176,129, 22, 88, - 38,102,157, 76, 6,177, 72, 81,132, 47, 16, 69, 37, 37,248,147,101,165, 95, 24, -132,216,100,100, 20, 25,171,231, 71, 59, 79, 58,250,149, 67,203,113, 15, 4,144, -238,221,225,221,248, 19,232,211,188,149,122,244, 39,249, 9, 75,159,162,253, 52, - 18, 63, 97,151,196, 68,122,188, 56, 80, 99, 93, 16,152,227, 76,103,174,244,211, - 7,200,115,202,229, 43,236,234, 68, 68, 96, 84,222,210,113,159,214, 99, 59,183, - 99,206,149,209,108, 50,152, 38,195, 34,203, 96, 29, 78, 38, 2,244,234,208,130, -160,229,120,131, 64,214, 90,107, 39, 29,241,131,227,214,179, 44,230,147,137,139, -210, 99, 54, 81,125,226,128,169, 30, 79,249,164,128,106,152, 26,164,130,202,191, -117,230,248,212, 2,129, 0,168, 81, 65, 82,102, 70, 68, 68, 36, 5, 73, 10, 25, - 14, 80,132,200, 84, 89,113, 3,242,144, 76,140,114,148,161, 68, 64,136,145, 2, -162, 9, 74,100, 22,164,160,126, 54, 65, 75,138, 74,213, 60,162, 85, 2, 52, 2, -141, 62,190,212,160, 62,189,215,181,173,101,125,200, 63,141,165, 81,181,119,136, -108,203,102,214,108,100, 86, 97,234,151, 38,199,107,220,194,137,182, 50, 56,211, -130,139,241,156,121, 72, 68,182, 95,120,123,176,211,253,213, 7,189, 0,162,116, - 98,140, 91,242, 35, 13, 31,166, 54,197,105,151,162, 72, 21,114, 85, 98, 37,231, - 68,149, 8,197,228, 89,124, 30,130, 39, 3, 45,145,222,172,161, 94,132, 97,150, - 32,120, 7,198, 10,196,250,202,115, 56,164,205,110,121, 74,195,146,212,111,156, -229, 5,196,233, 8,124, 59,113,116,143,149,133,134,137,191,156,233,209,100,109, -218,211,169, 90, 42, 63,159, 81, 33,221, 49,148,183, 29, 60,241, 0,105,206, 56, -106, 69,193,138, 27,129,120, 25,113, 82,119,224, 84, 48,153, 6, 93,181,171, 70, -119, 40, 50, 4,178,161,229, 81,248,176,235,130, 42,143, 6,180,111,203,200,236, - 72,180,205,154,249,102, 85,172,182,105,134,161,246, 33, 44,180,163,182,244,113, - 72,117,172,202, 65,124, 32,159, 90,177,196,225,251, 82, 75,254,215, 98, 17,218, -208,166,136,100,140,236, 22,184,199,136, 44,181,150, 87, 37,171, 79,149,116, 26, -245,100,164, 50,195,148, 26, 80, 76, 0,131,173,151, 51,108,221,172, 34, 43,182, -184, 99, 29,223, 16,203,154,173,174, 10,133, 56, 9,206, 79, 18, 8,169,104,111, -178, 50,234, 26,215, 17, 8, 55,239,203,209,229,244,200, 52,223, 18,174, 43,211, - 9,116,127,116,121,144,221, 85, 67,236, 31,152,209,112,224,138, 64,225,154, 64, -141, 24,232,203, 29,176, 3,179,162,132, 5,163, 99, 89,253,170, 68,102, 43,203, -144, 41,161,243,101,228, 26, 22, 90, 29, 24, 22, 24, 23,149,154,126,245, 8, 88, -247,131, 83,144,179, 73,135, 63,204, 32,210, 99,144,238, 59,171, 60, 82, 90,225, - 62, 85,153,217,120, 25, 52,230,208,200, 12, 35, 24, 61, 97, 83, 17, 15, 36,242, - 18,152, 45,255,248,179,235, 60,110,205, 8,171,250, 7,113, 94,102,138,133,199, -254, 19,113,230, 98,137, 10,156,137, 5, 97,216,100, 82,242, 36,136,209,165, 39, -186,241, 99,138, 99, 71,232, 14,151, 24, 77, 2,169,183,218,193, 23,230, 6, 44, - 23, 50,194, 50,159,180, 4,112,193,185,164,120,249,166,249,254,204,228, 51, 85, -201, 75, 63,210,173,213,104, 94, 82,171,210,192, 24, -} ; - -// ../Source/Template/GB_AxB_saxpy5_unrolled.c: -uint8_t GB_JITpackage_40 [2932] = { - 40,181, 47,253, 96,105,200, 85, 91, 0, 58, 83,112, 15, 45,176,172,170,234,138, -235, 11,188,206,124,107,248,171, 15, 57, 18, 43, 79,117,184,193,112,209, 84,244, -191, 36, 90,215,140, 80, 53,210,215,221,193,180,246, 7,253, 7,203, 63, 56, 23, -236, 0,244, 0,231, 0,179,192,181,153,252, 97, 28,234,108,197,151,110,142,145, - 56,144, 29, 44,249,243,186,250,134,107,243,188,212,179,127, 64, 81,117,243,144, -103,207,125, 24, 54,109,254, 54,177,154, 85,219, 89, 46,163, 25, 79, 12,227,221, -196,110,253, 13,158,125,103,243,106,222,168,150,175, 97, 25,127,220, 45,213, 51, -246,249, 84,195, 52, 56, 80,140,119, 38,247, 44,241, 55, 92,234,117,180, 99,171, -179,117, 54,210, 93,154,243,244,126,233,183,205, 77,196,226,250,108,187,103,221, -124,229,136, 26, 58, 66, 53,108,122,213, 41,151,214, 76,205, 29,205, 36, 34, 20, -119, 20,171, 19, 17, 7, 16, 11, 54,151, 98, 90,113,156,181,140, 90,241,109,171, - 14,197,142, 58, 34,129, 81,255,129, 61,135,112,221, 76,136, 55, 84,239,104,217, -114, 21,115,200,162,154,176, 52,111,222, 8, 10,197,119,122, 22, 52,215,207,194, -177,109, 95,230,184,222,242,142,106, 27,183, 24,170, 10,196,114, 10,214,144,209, -109,179,183,251, 46,169,227,113, 38,190, 44, 78,117, 89, 17,119,112,112, 68, 28, - 28, 2,143,140, 61,195, 39,248,156, 74,168,248,122,158, 95, 23,205,243,186, 38, -216,224, 65,175,237, 50,234,161,255, 14, 8, 26, 12, 72, 83, 39,164, 81,177, 39, -163, 25,165, 29,189,243,248, 26,135, 52,135, 42, 62,244,160, 24,207,182,207,110, -188,250,181,207,183,217,217,154, 43,182, 94, 70, 87,111,229, 40,214, 60,214, 25, -254,208, 84,175, 64,254,208,128,234, 99,249, 41, 16, 16, 21,102,130, 65,130,235, -128, 4,166, 27,139,197, 98,177, 44,203,194, 96,170, 5, 23,128,115, 8, 68,170, - 63, 30, 78,117, 89,240, 0,115,109,214, 98, 80, 5, 22, 18,151,101,113,189,172, - 79, 92, 40, 42, 46, 8,174, 90, 53,237,225, 30,129,136,245,202, 61,235, 25,171, - 55, 99,122, 25, 42,188, 97,239,194, 31,222,209,109, 67, 32, 98,121,229,220,243, - 37,167,220,213,103,220, 89,204,170, 14, 89,158,255,223,225,152,224,112,100,106, -214, 5,200,104, 87,187,239, 88,189,180,163, 25, 15,112, 47, 93,112, 88, 36, 42, - 46, 20,151,136, 12,205, 50,117, 1,107, 48, 50,138, 63,171,101,202,109,180,187, - 20, 65,231,218,140, 5, 84,148, 82,202, 62, 4, 65, 6,205, 83, 57, 83, 3, 65, - 16,230, 18,241,220,186, 84, 84, 19,150, 11,132,119,241,170,169,252, 19, 60,207, -243,188,232,208, 33, 14,246,188,227, 97, 28,229, 40,110, 40,169, 40,165,148,212, - 33,125,138,122, 60,254,191, 30,242, 60, 15,195,243,202, 33, 38, 65, 72,165,212, -103,130, 18,124,228,220, 7,188, 86, 7,229,106,254,124,158,159, 96,166,248,157, - 61, 20,193,210,184,184,231,113,103,184,198,115,200, 31,144,102, 61,183, 46, 3, -149, 63, 6, 60, 84, 14, 35, 20,136,242, 64,200,127,113,138,213,237,149,231, 59, -179,198,181,217,171, 23,195, 52,123,132, 9, 94,156,131, 57, 40, 54, 61,172,185, -118,227,207, 39, 64, 32, 88,131,103,238, 62,224,225,209, 43, 15,132,176,202,205, -174,147, 61,116,251, 50,170, 97,248,143,238,193,217,164, 87,203, 23,247,117, 27, -221,182,121,167,119,143,179,159, 92,198,188, 94, 86,243, 31,127,232,181,116,119, - 75, 41,165,164, 40,138,162, 40, 80,248,247, 60,163,219,195,230, 1, 14,135,164, -104,214,125, 11, 14, 71, 5, 74,222,190,153,161, 25,140, 32,132,221,221,221,221, - 29,187, 99,199, 24,187, 59,198, 24,163,148, 82, 74, 41,165,148,146, 36, 73,146, -108, 73,146, 36,105,154,166,105,154,166,105,154, 38, 73, 75,166,150, 72, 36,146, -169, 91, 34,145, 72, 36, 20, 69, 81, 20, 69, 81, 20, 69, 77, 38,113, 50,153, 76, -168, 56,153, 76, 38,147, 40,138,162, 40,138,162, 40,138, 96,212, 13,163,110, 8, - 33,132, 48,234,238,134, 16, 66,216,221,221,221,221,221,221, 49,198, 24, 99,140, - 49, 70, 41,165,148, 82, 74, 41,229,195, 53,147, 94, 12, 14, 38,201, 40,187,194, -165,175,163,148,231, 52,156, 4, 15,113,156,212,176, 59, 74, 72,253,144,115,212, -134,203,166,221, 78,241,148,160,128,115,207, 53, 44,215, 13, 44,193,219,252,232, - 25,207, 13, 70, 56, 10, 69,132,171,192,193,100,195,216, 16,123,133,110, 38,174, - 32,201,216, 48,130, 19, 74, 50, 77,146, 36,101,140,221, 16,206, 67, 17,162, 55, -148, 1,131, 95,168, 66,139, 25,153, 25, 25, 17,145, 20, 36, 5,201,112,178, 34, - 4,162, 72,146,197,152, 85, 89, 7,146, 40, 26, 5,113, 8, 3, 34, 8,194, 96, - 8,130, 32, 8,130, 32, 36, 67, 4,132, 8,140,128, 8, 8, 33, 70, 41,163, 17, - 86, 7, 72,206, 33,134,209, 51,166, 33, 19, 13, 24, 40,218, 93, 99,210,197,252, -228,203,164, 88,138,138,124, 15, 66,202,138, 63, 6,238,190,172,217,104, 56,211, - 11,160, 70,123, 11, 67, 34, 3, 87, 77,169,137,225, 64, 53, 32, 47,123,159,115, - 64,216,172, 95, 65,150, 29, 3, 39,171,103,242,105,239, 10, 62,150,114,240,139, -217, 39,126, 6,220,160,193, 25,109,156,219, 2,101, 61, 34,194,239,119,127, 37, -108, 17,120,234,147, 13, 54,148,217, 54,233, 3, 69, 71, 38, 35,248, 69, 21,181, -177,122,100,160,240, 61,141,130, 60, 74, 8,216, 51,110,197,205,122,129,227, 23, - 75, 26,206, 80, 39,242, 16,123, 82, 63,229,158,128,170,239,254, 95,242, 43, 30, - 88,100, 90, 17,185,158,167,128,159,138, 60, 36,100,216, 51,110,109,236,186,192, -227,239, 83,241,250,155, 0,148,250,201,190, 5,186,101,109,100,146, 80, 13,212, - 49, 20,202,242,142,133,241,179, 30,208, 68,119,245, 80, 40, 30,186,255, 48, 17, -222,202, 23,196, 37, 11,167, 56, 58,112, 59, 35, 69,226, 96,152,181, 25, 71, 10, -186,122,168,132,234,173,228, 46,244,199, 91, 81,119,146,202, 28,178, 99,160,181, -203, 24,244,158, 63,221,124, 45, 90,136,203,212,204,236,108, 40, 78,198,168,152, - 76,182, 13, 8, 51, 16, 81, 70, 64, 68,176,164, 20,133,183,131,100, 30,230, 66, -151,250, 74,207,219,147,226,184, 38, 90, 51,201, 66, 9, 47,142, 56,101, 48, 72, -168, 76,125,166,240,127, 1, 55,247,217,158, 13,234,189,238,242,162,208, 73,218, - 32, 94,132, 22,105,179,141, 67, 70, 57, 12,180,114,129, 65, 94, 85,226, 28, 70, - 19,225, 83, 51,217, 97, 67,159,169,201,208,116,250,136,251,114, 9,230,206,200, -192, 59,204,116, 33, 38, 48, 89,236,122,210,116, 42,235, 58,240, 46,137,248,132, -146,105,138,236, 44, 52,163, 22, 67, 99,165,161, 96,232,208,114, 34,219,146, 57, -117,219,226,245,137, 25,110,253,169, 20,255,116, 57, 0,117,159, 1, 5, 27,224, -181,161,239, 30,168, 47,193,252,252, 85,198, 62,195, 54, 2, 48, 79, 47,234,156, - 72,182,242,200,158, 19,247,205,104,110, 94,142, 75, 71,183,189,162,173,199,140, -128,227,208, 69,208,194,216,168,217, 12,207, 26,147,141, 3,238,111, 37,131,119, - 91,226, 57, 79, 34,115, 41,209,103,200, 46,161, 50,245,179, 2, 76,119,186,237, - 29,253,254,198,250, 22,228, 39,193,222, 88,214, 41,183, 21,193,109, 9, 27,111, -233, 19,151,189,172,110,120,198, 70,196,107, 71,177,122,162,216, 13,119,166,162, -213,160,198,207,223, 51, 49,227, 8,224,102, 8, 11,218, 1,189, 28, 60,209,109, - 21, 71, 62,169, 40,253,175,205,130,204,200,195, 95, 58, 10,146,120, 35,153, 93, -116, 26, 27, 23, 69, 72,251,109, 45, 40, 61, 2, 16, 36,229,143, 64, 59,172,108, -211, 57,211,244,214, 60, 89,210,145, 29, 2, 4,134,170, 40,107, 13,141, 35, 27, - 81, 46,208,206, 27,178, 87, 12, 85,156,213, 89, 92,181,204,167,162,210,116, 28, - 37, 47,214, 92,102,124, 62,152, 34, 91, 84,194,244, 30,255,141, 73, 20, 99,238, -168, 46,195, 15,208,180, 49, 29,117,212,176,119, 40,112,162,190,162,192, 53,186, -227,174,216,158,170, 16, 94,154, 34,164, 20,133, 91,233,137,218, 82, 19, 4,210, - 18, 50,164, 36, 2,144,142,112, 39, 21, 81, 34, 13, 65, 71, 10, 66, 70,244, 67, -128,168, 7,119,160, 29, 42,225,181, 13,129, 41, 76,209,229, 71, 39,132, 7,158, -224,251,137, 45,101, 12,167,114,133,185,142,158, 12, 46, 71, 85, 93,212,221, 81, -254,130, 59,207,200, 36,166,243, 94, 0,221,202, 8,168,149,193,222, 43,144, 5, -238,152, 5,102,206,157,218,205,141,128, 40,125, 64, 54,181,129,224,194, 5,252, -105, 2,213,203, 3,168, 45, 41, 11, 24, 17,128,134, 19,192,131, 36, 59,168,102, -132, 18, 40,196,169,202,234, 95, 71,206, 36,213, 80,199,163,200,193, 73, 68, 41, -143, 22, 98,199,251, 81, 69,202, 39,128, 53, 26,143, 90,113,117, 17,117, 4,178, - 9,243, 14, 17, 55,174, 32,165,177,175, 81,217, 31,187,156, 27,195,206,108,110, - 98,212,103, 62,252, 22,103, 27,136, 76,227,243,156,102,197,107, 67,177,126,241, -143,162,178, 99, 17, 7,232,152, 1,219, 64,123,228, 31, 73,247, 13,191,128, 12, - 35,110,221,143,182, 60, 64, 80,205,135,160, 10,225,165, 49,178,187,206,132,159, - 76, 22,201, 12,190, 86,235, 98,254,100, 76,226, 69,137, 21,162, 76, 70, 84,108, - 58,213, 62, 87, 85,212, 83, 92, 86, 92, 96, 27,190,214, 85, 43,133, 23,178, 66, -201,174, 24,216,220,108,181,107,137, 93, 87,159, 3,195, 10,162,175, 68, 96, 30, -203, 83, 49,152, 14, 5,124,185, 50,242, 4,130,126,107,249,190,178,154, 94, 85, - 75,166, 22, 54,245,166,156, 90, 85, 74, 76, 11, 69, 10,159,115,224,206,208, 47, -135,206, 28,185,101,224, 48, 3, 0,105, 0,238, 9,106,145,177,100, 39, 94,148, - 68,230,160,215, 24,202,136,211,243,220,195, 59, 70,172,181,103,226,149,115,232, - 89,208,185,218,157, 10,195, 71,167,203,182,178,149,244,131, 79,156,161, 15,114, - 89,249,204,149, 2,226, 36, 22,147,240, 89,164,177, 90,102, 76,176,133, 66,132, -110,135,137,105,200, 70,186,108, 39,121,216,224, 89, 3,190,173,200, 23,103,114, -177,249, 33,180, 22,245, 16,143,191,201, 47,252, 50,177,133, 90, 31,133,106,248, - 86, 33,153,192,171,146, 76, 25, 26,149, 12,129,204,177, 94, 50,201,224,131,207, -141,105,156, 95, 9,164,110,202,195,217,127,139,225,116,143,145,157,169,211, 49, -192, 51, 45,199, 66, 4,148, 13, 70,121,153,253,251, 77, 95, 69, 16, 63,162, 48, -255,219,224, 44,234, 69,231,213, 88, 9, 96, 45,190, 42,238,140, 63,222,106,199, -203, 52,241,190, 70, 50, 64, 33, 4, 6, 86,241, 79, 3, 96,174,161,104,159, 42, -112,205,192,123,248, 21, 40, 95, 47,136,170,209,216,186,248, 32,112,171,200, 79, - 41, 2,146,112,255,243,146,156,134,103, 67,139,244, 74,128,189,158, 94,140, 66, - 77, 24,162,130, 42, 85,222,118, 72,212,193, 82,148,251,186,155,243, 4, 66,176, -115, 6,170, 14, 99, 22,243,104,255,206,240,252,152,235,135,216, 27,218,181,233, - 52,105, 24,110,131, 34,198,192,215, 7, 15,142,152,186, 66, 81,134, 35, 94, 73, - 89,157, 43,155,229,195, 32, 15, 65,197, 77,186,231, 82,128, 11, 25,193, 99, 17, - 30,148, 21,234, 71,198,134, 66, 61,111, 2, 82,204,245,170,234, 51,108, 62, 62, -161, 62, 53, 56,104,154, 51,210,147,227, 12,216,189,200,172,235,250, 38,215,183, - 68, 35, 20, 57, 26,137, 47,162,183, 23, 72,154,133,240,139,225, 56,230,144,101, -214,255, 46, 85, 25, 14, 86,194, 91, 33,223,253,222,255,110,128,212,186, 26,160, - 78,136,162,215, 67,133,236,157, 98,196,100, 44,163,168, 98, 91, 80,195,105,128, -145,214,105,101,165,211,147,203,252,215,132,228,165,102,165, 86,171,235, 13,198, -110,112, 27,215,104,228,185,213,174,172, 80,146,123,232,106,114,224, 67,172,192, -188,114,244,219, 10,142,129, 11, 49, 74, 12,235,229, 4, 95,167,196,248,156,130, -156,222,206, 80,198, 66,132,115,189,240,139, 32,229,225, 29, 3, 4,133,121, 16, - 13, 90, 23, 68, 56,108, 98,187,142,161,138,182,226,207,247,138,200, 49,132,155, -157, 75,198,167, 83,120, 3, 47, 16,230, 67, 67, 35,245,250,168, 52,251, 35,170, -207,174,150, 10,248, 93, 62, 37,212, 44,108,115, 3,113,167,178, 96,253,183, 85, - 24,227,188,203, 39,185, 95, 61,171, 83, 26,204,228, 50, 9,130, 42, 73,178,110, -151,197,165,229,227, 93,158,226, 80,121, 91, 31, 78,155,141, 95,194,123,253,153, -234,181,135, 95,245,217,241,160,209,232,216, 86,230,219,116,127,119, 41,120,118, -171, 42,100,231,194,187,143, 17,169,150,191,147,242,122,226, 4,198, 74,165,204, -175, 3, 52, 92, 8,128, 96,164, 14, 13, 9,234, 95, 96, 82, 49, 41, 12,110,133, - 30,203,139,221,239,191, 87, 49,238,114, 92, 12, 71,165,255,227,172, 99,210,151, - 47, 53, 47,140,240, 42, 11, 88,192, 90,152,128, 51,187,128,156,225, 13, 81,104, -190, 81,136,240,232,226,189,204,119,179,219, 66,162, 96,176,200,197,150,125,201, -155,130,253, 38,170,141,224, 50,149,192,212,230,138,106,118,177, 19,102,253, 46, -199,247, 49,113, 61, 5, 54, 93,104,169, 26, 76, 73,102,124, 37,183,144,199,144, - 53,190, 74, 31,174, 16, 27,195,230,130,212, 88, 44, 33, 39,205,227,169, 33,149, -244,180, 68,172,179,228,135,163, 85, 16, 19, 23, -} ; - -// ../Source/Template/GB_Template.h: -uint8_t GB_JITpackage_41 [791] = { - 40,181, 47,253, 96,135, 9,109, 24, 0,166,171,125, 36, 16,115,219, 61, 14,101, -196, 77, 68,224, 69,220, 73, 52,151, 98,224,169,251, 85, 40,131,165, 43,222,121, -217, 77,198, 62, 85, 85, 13,170,252, 6,124, 0,111, 0,116, 0,141, 68, 4,113, -121, 42, 22, 19, 16, 19, 51, 56, 53, 64, 99,224, 80, 38,220,214, 82,143, 50, 72, -238,169, 31, 50,131, 38,236,144, 87, 87, 38, 26, 15, 22, 14,227, 15,201,206, 23, -234,223, 56,250, 66,157,123, 84,130, 64, 49,160, 76, 22, 14, 12, 40, 58,176, 4, - 84,226,253,177, 15,234, 60, 90,181,143,175, 47, 42,177, 60,149,134, 70,173,140, - 96, 96,151, 75, 89,248,123, 90, 26,103,177, 61, 63, 85, 25, 39,117, 24,251, 27, -246,196, 76, 25,154,195,191,142,122,124,137, 26, 34,180,160,160,153, 20, 20, 4, - 14,213, 83,143,213,249,197,197,146, 62, 20, 85,198, 73,217,162,234, 68, 34, 10, -123,242,174,167,148,137,108,155,107,229,220,194,216, 15,249, 33, 36, 99,166, 98, -140, 6, 48,108, 7, 91, 87,255,190, 7,168,254,106,249,206, 82,185,189,178, 99, -112, 91,132,157,212,222, 31, 19,201, 62, 55, 46,158,139, 6,168,194, 28, 43,249, -195, 57, 96, 67,185, 25,201,174,169, 23, 87,164, 57, 31,204, 34,202,108,186, 5, -155,163,213,212, 44, 62,253,109,223, 48, 64,149, 4,210,206,174, 39, 8, 10,168, - 66, 1, 69, 14,208,229,185, 88, 38, 64, 51,240, 60, 96, 48, 73,157,235,140,192, -130,115, 82,117, 11, 37, 63,236,166, 97,248,214,151,145,162,166,235, 7,192,200, -214, 47,165,171,222,234,221, 46,170, 14, 59,105,217,178, 84,102,152,125, 62, 53, -190, 74,158, 88, 82,234,250,112,219, 29, 28, 56, 40,100,161,120, 20,198,247,217, -161,222, 42, 97,239,140,228,246, 21,170, 78,108, 54,223,162,110,167,119,134, 90, - 38,162, 40, 34, 33, 32, 8, 77, 51, 53,131, 12,208,172,149,156,219, 69, 61,106, - 98,162,100,170,114,243, 69, 9, 10, 47,249,127,151, 71,212,190,111,137, 87, 59, -110, 0,121,190,183,249,182, 95, 83,190, 71, 24,223,167,112, 68,199,150,101,123, -136,145,156,169,100,124,252,114,185,165, 23, 67,218,146,203, 30, 85,114, 97,123, -148,107, 95,212,126, 31, 79,143,165,226, 75,118,119,199, 80, 50, 38,154, 30,182, -244,213, 47,254,194, 73, 49,131,253,110,238,196,204,249, 3,107, 32, 48, 68,168, -144,157,117, 75, 11,102,231,130,151,241,200, 28, 0, 48, 46,162,114, 98,152, 88, -162,222,178, 80,106,224,122,224,152, 20, 28,183, 61,242, 53,123,204, 36,222, 51, -168,153,192,130,234,210,195,122,183, 35,117,175,132,231,212,183,231,149,231, 34, -178,104,250,222,127,240,204,113,158,101, 2,154, 93, 0, 89,143, 0,207,244, 89, -131,147, 65,250, 97, 67, 63,148,169,124, 43, 97,245, 6,114,112, 19,168,147,129, - 53,129,223,255,142, 86, 48, 72,194,198, 48,110,114,130, 66,193,116,161, 65,147, -240, 57, 7,136,227,134,135, 62, 2, 56,109,137,255, 29, 22,187,129, 67,237,172, -184, 23,207,208, 10,236, 9,173,112, 71, 2,148,220, 95, 98, 25,191, 17,200, 91, -172,233, 96,206,194,197,194,113, 2,180, 27, 13,216,215, 26,125, 56,194, 25,105, - 87, 7, 96, 32, 1,187,190,248,206, 54,120, 45,136, 8, 16, 71,142, 58, 66, 88, - 8,234, 46,190,216, 42,191,169, 49, 2, 60, 90,206, 91,221,194,169, 81,154, 6, - 40,211,134,112, 1,218, 82,159,112,214,204, 79,185,152, 3,112,209,115,226,171, -139, 12,214, 1, 0,157,233,114,154,189,205, 43,132, 61,104,102,158,153,110, 67, -100,181,126, 32, 58,123,125,159,162, 96, 8, -} ; - -// ../Source/Template/GB_add_bitmap_M_bitmap.c: -uint8_t GB_JITpackage_42 [714] = { - 40,181, 47,253, 96, 82, 17, 5, 22, 0,198, 91, 88, 32,224, 90, 55,224,207,180, - 99,154,225,243, 48,154,240, 16, 31,196, 35,115,234, 90, 59,108, 62, 52, 39,148, - 36,204, 16,105,196,132, 80, 0, 76, 0, 77, 0,251, 51, 97,144,231, 76, 29, 99, - 44, 18,139, 67, 67,145, 88,120,129, 35, 56,166,113,234, 90, 28, 65,125,245,109, - 17,196, 33,199, 54,218,169,223,120,201, 12,228, 53,121,199,237, 55, 46,183,153, -115,233,101,154, 99, 94,113,172, 26,232,132,162, 9, 36, 21,135,104,118,188,224, -198, 37,219,117,215,214,140,103,217, 60,100, 89, 88,251,234, 83,247,243, 74,243, - 37,203,205,149,228,214, 95,230,155,114,242,191,141,223,187,240, 58,182,197,176, -251, 29, 62,248,121, 4, 69,206, 49, 39, 69,215, 52,246,202, 76, 32, 22,135,255, -184, 59, 82,135,144,143, 61,188,195,239, 52,135,215,225,115,184,115, 24, 89, 62, -136,238, 83,228,235, 7,185, 14, 19, 63, 97,208,179, 40,150,124,146,188, 48, 18, - 62,196, 27,141,102, 67,151,140,173, 25,119,239,187,176, 20,212, 74,105,196, 11, -238,114, 89,141,173, 70,240, 16,232,178,109, 20, 32,113,255,106,160, 62,113,138, - 38,241, 74,196,221,125,206,214,156,136, 15, 69,223,250,126,246, 93,150,124, 95, -144, 20, 61, 95,237,115,190,220,189, 53, 61,220,133,143,215, 14,242,199,213,151, - 85,199, 52,206,255, 10,112,136,198,194, 6,252,187, 50,115,225,183,159,188,181, -211, 17, 97, 62, 84, 11,105,170,221, 52,150, 18,188,213,185,120, 64, 23,142, 13, -105, 54, 30, 6, 20, 44, 74, 95, 15, 71,188,240, 44,172, 65,199, 84, 27,173,104, -131,129, 99, 37,205,214,128,161,160,241, 37, 83, 35, 19, 68, 83,144, 20, 50,173, - 1,112,136, 12, 17,217,230, 19, 40,139, 51, 69, 74, 69,185,141,176, 84, 20,177, - 45,161, 78, 52, 44, 62, 10,155,196, 89, 92,233,174, 24,118,128,116, 23,138,217, -145, 19,231, 67,179, 57,248, 52, 61, 24,115,231, 61,100,129,168, 47, 1, 22, 70, -238,152,113, 13,200,204,156,146,198, 79, 70,244, 8,184,108,214,162, 67, 71,225, - 88,174, 96, 38, 27,231,152,251, 0,117, 50, 25,220,240, 60, 83,180, 44,117,205, -211,137,156, 74, 4, 37,100, 81, 52, 64,146,128,185, 76,220, 22, 79, 68,112,129, -200, 39,168,195, 30,150, 11,135,177, 96, 36,208, 10, 30, 58, 2,131, 35,160,243, -160, 5, 60, 87,129,199, 0,132,103, 36,127, 5,141, 90,192,111, 4,148, 93,112, - 13, 28, 52,240, 36, 65,102, 95,176, 28,235, 23, 5, 8,221, 39, 96,230,185,125, - 59,146, 84, 92,220,211, 73,196, 13,128, 29,169, 71, 24,219,107, 81,154,144,232, -226,184,209, 70, 8,186, 56,106,180, 17,131, 49, 30,233, 71, 27,126,232,146,113, -129, 90,134,145, 5,112,217, 72,193,128,194,225, 35,100,162, 72,113,227,109, 80, -140, 93, 21,166, 51, 62,103,180, 93,190, 29,240, 22, 25, 67, 51, 6,107,132,114, -153, 46,204, 25,194,215, 97, 35,240, 54,247,215,226, 68,169,159,214, 87, 25, 98, -161,148, 64, 81, 9, 48,222, 41,131,180,233, 32,219, 96, 4, 23, 32,118,159,105, -255,148,245, 70, 93, 29,194, 13, 20,126,166, 25,180,105,110, 84,102,106,159, 96, -197, 46, 25, 20,181, 35,113,113,154,102,164,232, 36, 3, -} ; - -// ../Source/Template/GB_add_bitmap_M_bitmap_27.c: -uint8_t GB_JITpackage_43 [842] = { - 40,181, 47,253, 96,201, 11, 5, 26, 0,230,229,115, 40,208,240, 56, 7,254,167, -122,237,247, 13,176, 93, 64,190, 21,166,199, 48,226, 25, 38, 84, 71,207, 23,252, - 46, 30,172,172,114,205,252, 69,174,102,192, 11,231, 11,108, 0, 98, 0,104, 0, -242,110,157,113, 36,109,183,198, 36,131, 36, 66,243,153,100, 77,170,109,219,225, -246,106, 22,210,225,115,194,191, 1, 75,197, 34, 49, 16,168, 88, 14,193,168, 63, - 43, 73,172,249, 4, 94, 67,187,220, 72,134,254, 64,144,161,210, 40,215,205,165, -109,101, 10,234, 43, 59,208, 52,103, 39,162, 84,207, 54,254,131,127,157, 99,110, -253, 85, 17,152, 73,232, 60, 16,172, 95, 12, 44,157, 72,121,116,229, 21,179,140, - 99,181, 57,133, 50, 73, 40,148,242,242,181, 84,207, 46,107, 13,179,135,108,209, -162,108,198, 93,181, 27, 71,157,232,179,231,228,202,244,116,196,157, 71, 22, 92, -233, 3,243, 76,222,223, 77,102,156,118,187,243,255,159,166,210, 52, 77,180,203, - 93,239,202,112,114,237, 46,214,213,107,187,155, 76,122,109,237,202,190,220,150, -245,221,122,212,147,142, 56,236,239,149,123,199,202, 91, 83,101, 98,145,180,134, - 49,133,191,212,150,162, 21,245,234,250,187, 32,117, 24,171,106,243,204,249, 55, - 30,100,125,187,190,190, 49,102,157,179,127,221,213,123, 43, 15,185,120,146,186, -144, 35,234, 34, 74,125,129,211,137, 33,133, 13,194,233, 49,207,252,239,109,108, - 24,245, 6, 15, 39,196, 9, 57,192, 79,196,176,124,255,178,173,233,223,173,124, - 45,253,141, 4, 5,165, 72,228, 8,199,188,242, 12, 5,177,147, 73, 27,118,137, - 80, 27, 39, 47, 86, 63, 81, 28,130, 5,211,212, 81,185,220,118, 43, 51, 47, 69, -176,103, 94, 65, 39,126, 89, 16,222,230,219, 23,100,145,204, 54, 43,114, 55, 86, - 81,226,227,177, 94, 85,158,140,217,200, 26,157,220,240, 32, 31, 29, 2,148,173, - 39,233, 0,167, 22,245,143, 71, 1,196,129, 80,168,170,139,179, 50,210,191, 12, -248,119, 33, 89, 3, 61, 12,213, 35,240,153, 91, 47, 65,174, 7, 4,156,219,206, -190,206,193,113,198, 52, 26, 24, 61, 32,142,168, 51,145,124, 4,128,156,160,145, - 37, 51,138,208,136,140, 36, 73, 10, 25,214, 64,132, 24, 67,102, 55, 7,201, 98, - 63, 80,156,107,171,178, 51,142, 24,180,114,176, 32, 86,113,113,222, 29, 0,141, - 43,116, 11,243,216, 0,204,123, 89, 32,156, 76, 76, 64, 8, 92, 72,151, 4,120, -112,227, 37, 29, 47, 68, 59,134,136,102,211, 40,198, 19,153,125, 97,241, 36,114, - 61,205, 2, 3,218,230, 65,245,226,181,179,251,104,164,201, 71,184, 13,140, 44, - 16,223, 15, 8, 7, 4, 3, 12,168,182,253, 42, 32, 79,161,243,192, 37,244,154, - 33,104,131,192,236,231, 95, 10,224,242,224,246,178,133, 14,143,106,236,126,101, -225, 12, 50, 76, 2,202, 0, 78,232, 46, 38,118,102,181, 60,143,229,154,192, 68, -193, 45, 1,215, 0, 20, 38, 96, 13,120, 6, 65,119, 1,123,154, 15,139, 46,159, - 12, 3, 34,205, 96, 56,135,199, 28, 78,220,228,231,172,203,120,146, 52, 1, 62, - 68,128,240, 87, 53,192,185, 57,161,232,240, 10,166,130, 0,210,237,143, 26,217, - 2,183, 2,194,144,255,190, 41,211,173,225,192,255,203, 94, 45,157,234,123,203, - 29, 19,199,205,210,172,166, 95,255,219, 63,103, 78,201,106,178,201,166,201,206, - 63,147,216, 37,228,152,117,249,168, 1, 54,214, 48,122,193,134,206,110,207, 74, -210,218,199, 58, 14, 64, 1,103,202, 75, 20, 22, 26, 21, 53, 43, 10, 63, 50,138, -237, 22,195,109, 20,204, 84, 23, 7, 99, 55, 10, 89,200,237,104,196,105,190, 73, -100,133,164,121,110, 73,183, 64, 49, 97,104,212,118,211,110,180,201, 12, 92,124, -211,124, 84,102, 98, 7,189, 54,255, 56,122, 14, 93,127, 17,251, 57, 68, 82, 20, -220, 1, -} ; - -// ../Source/Template/GB_add_bitmap_M_bitmap_28.c: -uint8_t GB_JITpackage_44 [1138] = { - 40,181, 47,253, 96, 77, 16, 69, 35, 0,198,235,132, 40,192,208,170, 14,248,125, -236, 97,162, 9,185, 8,203, 6, 37, 52,207,181,239,170,123,108, 61, 47,174,196, - 82,165,150, 92, 4,216, 75,192, 52, 9, 2, 0,150,207,126, 0,116, 0,122, 0, -151, 36,129, 80, 30,189, 97,244,198, 87,190,174, 90,205,182,179,204,163,177,109, -172, 50, 60, 34, 46, 28, 72,214,163,175,113, 59, 28,231,205,162, 58,156,227,226, -225, 0, 69, 66,121, 24, 76, 36,148, 59,176,233, 16,215, 17,189, 28, 18,143,177, -101,175,171,158,195, 78,100,144,219,165, 31,166,210,248,163,183,211,185,138, 58, -210,215, 23, 99,139, 64, 46,190, 60,228, 56,145, 22,137, 80,243,234,215,161,164, -162,133,160, 1,176, 92,175, 28, 80, 52,243,210, 46,215,207,204, 50, 58, 37,230, -145,136,244,136, 68, 2,182,239, 97,254,238,243, 36, 40,208,160,168, 91,170, 75, -110, 77, 14,108,177, 10, 53, 89,175,102,236,187, 68,113, 7, 86, 51,205,120,106, - 78,148,245,134,225, 59,236,188, 38,156,209,254,182, 60, 59,145,118,174, 57,122, -127, 59,239,180,179,160,223, 5,168,158,213,252,108,171,124, 21, 51,111,203,173, -249,255, 75,146,134, 36, 65,112,228,232, 39,202,152,232,203,184, 69, 28, 29,253, -235, 45,215,126,102,233, 97,246,108,214,217,118,215,220,237, 60,236,159,119, 13, -174, 15,119,226,159, 75,210,106,102,175,233,229, 25,167, 4,103,115, 53,230,122, - 35,242,123,104,155, 27, 61,224,247, 18,252, 40, 71, 49, 60,175,233,156,141,135, -235,188,135, 23,241, 16, 84,233, 37,110, 24,104,238,207,169,120,235, 14, 16,172, - 83,195, 67, 66, 39, 3,145, 48,233,229, 18,231,166,147,209, 58,179, 90, 61,252, -196,233,113, 74,137,185,117,250, 60, 15, 14,170,221,116,237, 78, 95,200,104,166, - 39, 1, 99,169,110,253, 16,102, 88,108,122,195, 38,227,201,120, 28, 34,103,134, - 48,205,135, 89,146,180,177, 65, 81, 19, 73,183,203, 81,208, 97,149,242,115,199, -228, 22, 86, 79, 89,151,119,226,181, 90,170,203,207,203, 88,143,190,229, 16,168, - 71,244,203, 2,214,175, 9,117, 57, 16,194,208,148,119,122,228,132, 14, 55, 57, - 93, 78, 5, 16,174,142, 16,172, 76,242,154,119,223, 91,126,102,171,102,169,254, -234, 21, 19,150, 9,196,106, 71, 45, 70, 38, 41, 2,216, 82,148,171,110, 97,235, - 12,245,148,183,222, 88,229,176,156, 25,127, 85, 11, 9,100,108, 61, 76,114, 13, -138,222,122, 69,129, 7,168,225,169, 34, 51, 34, 34, 35, 73,146,100, 89, 3, 49, - 12, 66, 97,144, 91, 73, 61,194,136, 68,138, 50, 12, 75,128,136, 35, 68, 25, 66, - 8, 18, 24,162,132, 34, 73, 19, 73, 65,242, 84, 73, 13,213,121, 90,191,155, 8, - 32, 68,218,144, 35,162,229,163,179,100, 17, 1, 9,250, 65, 41, 4, 31,161, 81, -177,175, 38,194,127,142,107, 22, 46, 21,169,127,143,188,247, 26, 97, 28, 20,247, -223,240, 12,251, 95, 16,165, 21, 8,133,166, 61,118, 2,127,163,186,117,224, 1, -191, 53,242,233, 12, 51,224,215,123, 24,206,139,219,100,121, 29, 79, 75, 5,146, - 34,249,193,195,118, 9, 31, 67, 80, 80, 3,183, 90,117,233,231,230,221,111,131, -102,104,119, 53,236, 35,237,230,254, 45,223,102,151, 72,200,207,147, 85,109, 29, -207,166,102, 65, 48, 29,184,111,254,208,239, 42, 9, 11,245,140, 47, 35,134,185, - 18,126, 45, 94,168,169,237, 92, 66,167,134,171,193,244, 50, 27,191,133,136, 40, -107,223,100,254,148, 46,218,135,121,254,227,235,153,172,167,139,176, 2,152,145, -103, 52,231, 50,114, 26,218,132, 5, 26,152,182,160,195,153, 11, 39, 54, 90, 14, - 25, 22,110, 80,214, 39, 1, 79,147, 31, 49,155,217, 1, 55, 5,169, 84, 15,206, -144,168,205,177,143, 58,250,121,124,246, 44,195, 88, 67,165, 0,117,238, 77,144, -197, 32,138,161, 52, 33,109,192,221, 82,141, 67, 2,104, 77, 63,151,208, 25, 66, -123,250,154,189, 46,164,161, 16, 8, 71, 1, 56, 96,231, 31, 94, 30,198, 36,105, -200, 90,109, 31,224,231, 91,241, 85,253, 20,188, 35, 45, 78,121,236,138,205,241, - 47,174,228, 7, 68,171, 54, 69,152,121, 18,208,235,148, 53, 47, 84,109, 59, 87, - 34,208,212,115,154,125, 84, 16, 57,146,135,153, 1, 76,254, 0,189, 60, 29, 22, -248, 27,198,228,106, 87, 5, 91,208,250, 86, 34,193,221, 94, 54,134,192,106,150, -188,136,206, 27,172,116, 36,152, 24, 56, 2, 63,165, 19,249, 14,195, 93,158, 23, - 1, 67,160,125,174,171,211,150,218,116,220, 75, 53,136,215, 31,102,222, 27,199, -240, 87,172,226,157, 82,221,117,220, 7, 94,196,175,160,111, 19,222,159,164,231, -223, 82, 84, 50,107,235,230,205, 76, 77,135, 14,139,169,157,103, 9, 26, 48, 64, -134,118,248,242, 3,128,200,174, 73, 29,248,117,195,252,195,239, 46,224,250, 13, -163, 51,190,206, 83, 64, 3,171,246, 62, 3,242,204, 40, 0,216, 28,101,180,174, -231, 21,227,252,224, 97,162,238,220, 20,247, 71,161,243,196,215,136,206,215,217, -133,100, 62,255,168,228,202,169,135,243,111, 36, 61, 80,157,228,166,105, 85,102, - 50,151, 74, 89, 39,165,166,183,235,151,108, 63,133, 78,149, 6, 56, 1, -} ; - -// ../Source/Template/GB_add_bitmap_M_bitmap_29.c: -uint8_t GB_JITpackage_45 [1142] = { - 40,181, 47,253, 96, 77, 16,101, 35, 0,166,235,132, 40,208,208,234, 24,248,109, -148, 89, 1,171,114, 85, 85, 75, 52,197, 54, 54, 21,205, 35,168,240, 58,116,167, - 88, 53,228, 6,197, 93,221, 34, 87, 51,224, 7,179, 4,127, 0,116, 0,123, 0, - 87, 36,129, 80, 30,148,203, 38,142,175,100, 90,183,186, 47,213, 50, 15,170, 47, -205,170,195, 99, 2,195,129,104, 52,148,169,166, 16,215,155,195,168, 16,183, 54, - 30, 14, 80, 36,148,135,193, 68, 66,249,148, 73,135,186,134, 38,230,144,120, 13, -110,127, 94,245, 28,118,162,131,197,225,153, 23, 42, 84,231,137, 59,116, 87, 80, - 39,202, 20,107,112, 17, 8,214,143,135,214,130,182,136, 5, 53,183,252, 58,180, -168, 88, 37,104, 0, 46,215, 43, 8, 20,141,196,211,219, 21,147,154, 54,165,181, -240, 72, 36,122, 68, 34, 1,135,218,165,248,112,103,252, 45, 9, 10, 56, 40,234, - 23,203, 37,175,164, 73,223,172, 66, 73,247,171, 59,203,143, 44, 62,101,117,207, -173, 37,106, 65, 26,229, 50,253,233,202, 75,210,218,164,153,219,210, 3,109,183, -212,218,249, 79, 15, 99,102, 12, 96,185, 86,247,247,173,241, 22, 75,251,184, 77, - 53,255,255, 40,226,136, 34,136,182,236,204,160,157,129,242,214, 20,100,103,232, -153,114,187,210,107,119, 30,238,239,106,116, 95,234, 81,139,189, 47,123,254,174, -209,245, 1,213, 47,112,197,177, 43,218,170,118, 47,249,109,105, 73, 10,206,230, -186, 69,181,165, 29,145,227,195, 75,109,232, 1,199,135,121,218,153,105,121, 73, -231,108, 62, 93, 37, 62,204,176, 14, 63, 21,195,196,141,131,117,234,147,195,118, -190,250,244,129, 85,122,136, 80,232,100, 36, 20, 36,134,193, 68,185,233,100, 54, -170,221,173, 30, 98,150,116, 75, 90,213,177,111,121,240, 79,245,164,111, 88,122, - 67, 70, 35, 61, 10, 11, 23,203,171, 31,194,141,155, 73,127,216,100, 60, 25, 15, - 68,228,200, 78,207, 29, 81,212,209, 65, 81,147,184,233,220, 20,251, 28,214,199, - 56,169, 56, 77, 94,101,245, 84,245,136, 43, 94,235,197,242,152,191,157,209,208, -185,221,193,233, 67, 67, 51,111,129,234,215,132,194, 28, 8, 97, 39, 35,230,116, -135, 92,148, 30, 37,195, 71, 87,110, 79, 29,172, 72,241,219,135, 79,185,125,237, -214,237,242,174,187,229, 23, 21,151, 9,204,170, 55,175,134, 22, 41, 2,250, 82, -211, 98,220, 42, 59, 42,227,171,211,172, 90, 29,229,214,185,110,157,192,214,247, -203, 36, 20,246,129, 9,168,193,173, 50, 51, 34, 34, 35, 73,146,100, 89, 3, 65, - 12,130, 48,200,173,164, 30,178,120, 88, 16,165, 24,150, 0, 17, 72,136, 81,132, - 8,140,224, 72, 73, 80,177, 50, 75,218, 6, 68, 73,165, 83,121,186,183,155, 11, - 64, 56,216, 80, 42,226,171, 71,143, 37, 45, 10,176,173,231, 39,202,178,167,209, - 76,196,155, 73,163,190,192,152,113,172,149,226, 33, 3, 89,113,130,209, 91, 26, - 13,252,167,237,185,141,210, 61,133, 66,209,158, 68,224,135, 81,125, 25, 48, 74, -198, 30,103,151, 60, 28,200,255,104,115,202,181, 18,244, 98,160,216,199,145,200, - 2, 81, 34,249,133,234,181,242,145, 20, 26, 53,121, 34,137, 46,158,140,223, 59, - 11,136,172,237,144,200,254, 4,184,206,191, 47,110, 69,192, 36, 68,243, 36,177, -182,199,179, 71,179, 18, 92, 15,252, 57,247,251, 1, 74,250, 72,189,242,185,199, - 80,113,165,184, 40, 87,162, 62, 19,221, 26,233,182,251,209,106, 44, 7,201,132, - 91, 15, 38, 68,211,247, 72, 25,134,243, 63,107,101, 51, 52, 45,114, 24, 48,214, -204,150,200,185, 93, 20,210,210,180,130, 52,125,118,212,248, 33, 85,204,204,246, -152,179,195, 88, 31, 72, 18,164,153,253, 6,108,230, 38,220, 96,184,168, 84,114, - 74,130, 0, 56,136,252,253,107,244,100,189, 34, 8,245,198, 85,197, 54, 97, 22, -149, 40,134,210,139,105, 67,220,138,106, 30, 72,136, 86,240,195, 35, 62, 67,104, - 99,158, 51,240, 4, 80,224,150, 15, 83,192, 6, 16,254, 4,151,196,216, 30,141, -165,150, 62,241, 8, 12,127, 44,254, 74, 48,121,182,209,226,138, 71, 90, 10,116, -228,197,136, 27,180,159,108,232, 9,195,240,102, 42,157, 30,128,169, 16,200,215, -214, 94,153,183, 54,191, 15, 9, 87, 38, 11, 83, 51, 99,206,221,162, 90, 9,174, - 35,122,212, 37, 94, 66, 86,231, 45,153,125,155, 8,227,239,170,219,250, 50,140, - 52, 24,253, 28,216,234,114, 24,210, 58, 82,253,244,167, 22,118,133, 91, 47, 31, - 22, 76, 9,237,187, 46, 8, 44,237,230, 52,160, 75, 72,152, 97,190,190, 34, 51, -135,156,196,191,176, 18,127,114, 48,245, 33,156, 16, 26, 23,157,198, 76, 56,126, -172,159,215, 77, 65,242,172,175,155, 69, 51, 56, 61,138,176, 76,237, 54, 75, 20, - 81, 61,180, 49,247, 95,115, 1,143,108, 72,106,250,175, 47,230,141,252, 2,196, -209,239, 18, 61, 51, 67, 96, 78,202,224, 61,142,202,160,207, 64, 61,195,133,159, -205, 81,162,133, 61, 23, 49,206, 12, 30, 26,117, 90,167,184,122, 20, 18, 79, 72, -205,118,126,214, 21, 4,136, 50,137, 74,143,156, 50,112,248,198,249, 2, 41, 68, -110,154, 87,101, 38,122, 73, 17,215, 73,254,116,164,250,157,228, 39,106, 73, 15, -235, 24, -} ; - -// ../Source/Template/GB_add_bitmap_M_sparse.c: -uint8_t GB_JITpackage_46 [1476] = { - 40,181, 47,253, 96, 1, 24,213, 45, 0, 54, 57,167, 39,192, 24,113, 14,192, 31, -182,239, 46,215, 70,243, 71,229, 27, 33,230,190, 58, 95, 0,254,168, 32,130,243, -100,196,143, 25, 8, 14,176, 44,130,128,178,168, 64,158, 0,147, 0,159, 0,152, - 1,195,248, 74,151,223,235,190, 74,182, 76,248,174,174, 54, 35,246, 19,184,231, -208,102,135,107,157, 51, 85,200, 26, 63,218,167,104,191, 19, 29, 96, 50, 5,156, - 89, 43,167, 59, 76,110,172, 43,228,203,162,128, 41,100,171, 51, 10, 62, 34, 54, - 48, 23,135, 38, 83,230, 56,173,153, 72,115,252,189,233, 46, 33,115,144, 41,104, - 64, 56,200,220, 98, 73,119,180, 67, 27,113,204,244,147,172, 70,173, 59,238, 60, - 83, 6, 39,147, 59, 41, 60, 92,123,243, 68, 24,169, 69,235, 23,220, 79,150, 39, -153,193,169,187,119,238, 56,151,105, 3, 65, 1, 60,116,238,192,116,174,164, 21, - 85,201,213,106,127,170,235,218,138, 67,113, 3,131,168,192,192, 32, 60,179, 90, -105, 27,252,227,247,118,174,188,212,226, 87, 19,217, 41, 5, 50, 4,115, 43,149, - 20, 68,183,194,203, 62,205, 69, 96, 87, 32,174,168,111,206, 86, 63, 74, 85,149, -206,198, 64, 4,175,149, 2, 67,172,208,162,152, 56, 25, 37,214,191,221, 72,248, -117,251,212,134,123, 71, 29,139,135,147,107, 93, 9,251, 21, 50,229, 41,105, 83, -231,201, 89,201,198,159,159, 60, 24, 57,191, 76,223,220, 50,226, 90,138, 52,183, - 84, 32,186,148,244, 14, 14, 9,143,103,114,123,107,155,149,194,104, 65,206,234, - 93,141, 16,179,248,255,115,126,249,244,205,223,249,140,119,255, 31, 69, 79,137, - 34,204,123, 91, 20,198,174, 77, 35,103, 29, 24,132, 77,230,188,189, 13,101,181, - 75,238, 96, 67,230,207,233,102, 43,209, 74,230,155,135,124, 58,253,139,164, 36, -200,187, 47, 49, 74, 83,237,206,196, 51,117,168,170,181,191, 24, 63,188,205,138, - 53,104,174,246,160,249, 55,167,228,140,213,226,208,179, 10,114,150, 17, 14,237, -172, 4, 31,249,230, 29,137,112,177, 64,126, 33,185,225,156,115,238,130,124, 87, - 81, 82,250,180, 81,117, 72, 80,104,238, 50, 74, 58, 85, 85,112, 40, 70,104,103, -213, 2,114, 14, 82,189, 96, 99, 15,154, 95,243, 16,144, 71, 41,151,203,195, 53, - 63,248,230, 87, 75, 22, 4,103,181,182,240,228,146,248,109, 23,103, 22,189, 69, -162,215, 6, 81,180,178,114, 48,185,238,139, 87,236,186, 86, 63, 41, 23, 70, 89, -105,148,112, 75,226,163,153, 72,107,145,222, 81,148,174,252,206,106,194,135, 75, -171, 5,221,180,200, 48, 98, 45,125,198, 79,159,156,213,230,222, 72,120, 74,174, - 0, 17,245,168,115, 45,206, 72,105,126, 14,135,118, 53, 73,155, 40,138,176,190, - 32, 3,125,139, 45,112,238, 30,175, 44, 63,171,162,206,176, 3, 44,140, 66,166, - 10, 56, 95,219,179, 96, 86,227,231, 60,151, 51, 48,112, 75, 70,134,199,196, 85, - 84,190, 49, 81, 29, 22,156,202, 99, 81, 77,210, 51, 36, 52, 56, 36, 48,170, 14, -139, 11,140, 47,172, 5, 64,116, 53, 17,216,116,123, 99,125, 69,173,243, 99,222, - 11,129, 91,168,177, 37, 67, 68, 35, 34,146, 20,164,160, 80,104, 12, 97, 12, 66, -148,148, 88,170, 59,130,136, 60,206,225, 16, 69, 12, 70, 2, 68, 8, 17, 16, 70, - 2, 9, 36,146,104, 36,148,160,180,122,138,147,156, 32, 45,204,252,102,100, 54, - 33, 49, 61, 5,102,113,188,116, 21,112,217,250,180, 52,243, 85, 38, 88, 89, 84, - 80,233, 98, 72,217, 68, 65,233,193,112,178, 8,152,116,123, 80, 50, 81,187, 71, - 24,217,106, 68, 58,103, 18,178, 15,118, 58,202, 71, 62,138, 71, 71,171,247, 73, -168,170,222,129,179,149, 44, 11,224,246,220,152,168, 41, 84, 56, 56,167,198, 68, - 88, 45,185,229,104,170,169,139, 37, 7, 49,148,107, 0, 61,156,156,189, 91, 18, -183, 20,131,103,137,185, 21,158,185,172,156,109,162, 67,120, 1, 90, 40,219,164, - 91,241,194,180, 60,141,144,109,226, 45,232,148,134, 46,215, 65,234, 35,206,113, -143,154, 93,131,127,164,254,194, 92,170, 37,173, 5,133,182,146,223, 16,102, 50, -125,218, 79, 13,125,170,228,200,122, 54,254,162,157,211,179, 63, 98,167,198, 59, -170,180,214,103, 37,247,183,160,145,169, 50,154, 16,235, 44,206, 42,231, 90,178, -218,135,168, 35,114, 1, 60, 76,176,107,199,138,188, 90,197, 94, 10,118,162,227, -227, 75, 98,163, 12,170, 95,216,227, 73,123,144,170, 39, 56,161, 66,254, 42,118, -196,234, 26,154,135,129, 73,107,247, 96,218,185, 61,195, 87,199,243, 27,215,158, -240,175, 18,171, 73, 14, 39,211,184,158,147,243,137, 42,233, 60, 65,168,103, 61, - 59,147,208, 77, 67,242, 48,127,132,178, 38, 1,122,134,102, 78,117,218,190, 56, - 12,156, 6, 6,138,138,164,244,210,215, 6, 45,241,216, 53,212,150,107,118, 36, -218, 59, 28, 11, 78, 88,201, 53, 31,226,102, 25,187, 35,217,162, 83, 92, 52, 58, - 29, 74,186,232, 24,100, 51,169, 21,116,121,144, 93,245, 44,225, 84,251,188, 76, -134, 79,118,129,169, 14, 75,170,248, 35,218, 96,230,214,113,234, 21, 3,178,158, -246,135,154,233,157,131, 24, 74,144,141,105, 94,120, 62, 22, 22,158,169, 52,117, -195,236, 1,108,198,191,125,238,202, 23,110,180, 49,222, 89,249, 94, 60, 88, 16, - 38,125, 91, 67,211, 34,237,193, 11,169,216, 85,155,180, 74,199, 90, 28,255,235, -170,111,202,238, 10, 64,161,166,177, 49, 11,121,110, 34,251,223,142, 99, 46,118, - 47,147,243, 21,130, 75,236,221, 29, 33,215, 23,156,176,114,236,160,179,243,194, - 48,147,167,196, 18, 21, 87, 74,167,144,100,228,225, 92, 96,224,243,178,238,151, -130, 73,191,227, 14, 82, 25, 43,174,122,176,235,219,177, 39,192, 50, 63, 98,173, -139,186,247,245,203,156, 77, 55,129,149,224,223,237,135,204,209, 25, 0,244,130, -202,177,147, 31, 54,183, 4,229,168, 7, 32, 66, 54,221, 65,250, 40,215, 79, 57, - 4,226,162, 44, 45,206, 24,122, 82, 25,179, 93,247,248,232, 12, 17,167, 7,254, - 76, 74, 23,175, 48,219,140,181,206, 86,180,154,204, 50,239, 46, 22,200,234,232, - 99,212, 98,192,205,160, 13, 33,241,166,117,174,142, 57, 66,161,113, 79, 6, 24, -223, 1, 30,113, 78, 32,165,131, 11,128,156,222,209,122,109,135,182, 9,148, 37, -185,131, 0,170,145,107,223, 65,129, 85,208, 15, 47,185,236,153,164,188, 83,181, -199, 83,132, 99, 79,129,138,243,229,241,193, 2,199,191, 64, 4, 81,121,176,196, -140,222,200, 16,186, 15,140,119, 84,100,254, 83,189,134,237, 83,244, 67,102,181, -125,165, 30, 41, 14,208,146,219,169,165, 49, 83,164, 95,190,105, 86, 63, 48,173, -234, 36,243, 20,111,189, 83,123,225, 58, 9,141, 74,209,107, 19, +// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy4.c: +uint8_t GB_JITpackage_8 [306] = { + 40,181, 47,253, 96,186, 1, 69, 9, 0, 6,210, 60, 33, 16,179, 30,230,109,130, + 35,245, 18, 31,103, 47,136,106,246,246, 35,165,110,240, 40,235, 51,162, 5,175, +224,136, 0, 0,170,110, 6, 50, 0, 51, 0, 50, 0,217,245, 58,219,144,254,190, + 30, 26,187,142,183,255,115,159, 4,201, 40, 96,158, 59, 25,247,202, 3,226, 23, + 71, 37, 66, 33,200,234, 58, 65,178,226, 7,243,115,234,190,155, 58, 51,175,170, + 56, 85, 85,224,115, 87,155, 46, 13, 10,213,253, 39,191,254,205,245,246, 52,119, +115,140,165, 75, 8,203, 96, 77,138,131,193,242, 1, 39,112, 73,223,143,109, 56, + 37, 61,228,237,206,119, 43, 46, 81,169, 77, 47,180, 57,114, 78,180,172,198, 8, +240,168,223, 22,135,223,239,138,152, 25,192,191,243, 96, 14,188,129, 40, 97,236, +201,184,190,142,249, 21, 13,148, 53,189,199,217, 80,250,149,255,102,238, 6,191, +123, 76,175, 3, 49,142,226,194, 7,148, 58, 48,204, 66,235,204,153,192,193,236, +217,159, 1, 28,101,247,127, 53,225,238, 30, 69,113,225, 3,129, 79, 42,147,141, + 82, 19, 24,202, 69,210, 58, 47,178,106, 14,201,230,136,184, 22, 17, 0, 71,133, +163, 50,197, 72, 8,105,116,189,206,136,201, 2,146, 2,171, 15,168, 7,105,251, + 67,212,243,134, 6,176,105,254, 60, 51, 69, 27,198, 86,235, 23,131,248, 80, 56, +145,231,240, 20, 5, 67, } ; -// ../Source/Template/GB_add_bitmap_M_sparse_24.c: -uint8_t GB_JITpackage_47 [833] = { - 40,181, 47,253, 96,148, 11,189, 25, 0, 6,101,113, 39,208,210, 86, 7, 42, 29, -227,242,158, 4,192,207,181,189,224,185,237,200,208, 18,114,218,199,107, 99,162, - 10, 79,192,159,100,149, 46,163,212, 3, 30,176,188,107, 0, 99, 0, 99, 0, 85, -198,233, 48,161,208,120, 40,151, 28, 93,137, 37,196,113,198, 50, 38,196, 41,117, -111, 5, 23,203,101,130, 64, 96,185, 60, 18,167, 55, 60, 71,173, 57,197,189, 3, -203, 89,104, 70,188,125,156,195,195,108,223, 6,204, 71,230, 41,250, 72,148,138, - 64,149,215,220, 51, 87,218, 14,172,114,206,219,171,183, 39,113,212, 2, 7, 64, -161, 58,198,224, 2, 37,190,109, 49,228, 64,219,161, 60, 45,120, 93, 13, 95,195, - 43, 21,105, 82,169, 4,120,146, 84,116, 73, 44,226, 71, 42,172, 38,124,181,188, - 88,134, 33, 81,253,205, 64,167,146,210,190,109,111, 67,217, 59,148,209,215, 6, -100,126,205,252, 92,231,111,246,134,137, 52, 14,192,100,112,185, 50, 44, 75,206, -255, 95,146, 62, 36,137,130,229,204,186,188,253,231,114,149, 33, 73,109, 40,139, -191,106,159,131,231, 43,201, 66,185, 76, 36, 22,219,186, 99,174,156,160,153,171, -188, 54, 19,137, 3,205,114,211, 29,124,175,161, 47,153, 69,210,122,237, 88, 61, -195,111,217,149, 30,199,243, 17,141, 54, 39,234,113, 58, 40,115, 12,107,113,171, - 58,245,248, 12, 19, 20,110,159, 57,245,183,230, 81,227,244,135,206, 38, 98, 19, - 1,225, 60,112, 3,119,126,187,170,180,111,249,118,198,246, 25, 26, 28,124, 72, - 36, 87,200,220,114,106,138, 96,218,163, 26, 49,146,169,102, 51,199,123,233,226, -145, 56,115,231,146, 20, 98,201, 89, 61,158,212, 63, 36,241,148,115,157,165,229, - 26, 52,175, 90,193, 44,195, 7, 43, 60,157,234,239, 54,237,136, 97, 99,150,246, -131,196, 12, 8, 33,168, 84, 73, 71, 23,184,173,166,123, 58, 12,159,205, 4,195, -123, 86,134, 39,116,111,246,141,195,189,105,204,214,184,142,195,187,196,157,122, -117,235, 3, 3,111,137,169,180, 14, 2,242,214,104, 28,236,124, 54, 32,121,129, -102,192,155,254, 44,251,128,157,160,161,169, 50, 37, 37, 34, 34, 41, 72, 10, 82, -104, 12, 64,132, 16, 66,119,182, 1,201, 98, 31, 44,154,183,177,130, 78, 22,241, -199, 42,100, 2, 95,178,227,182,211,192,158,157,208, 22, 51, 20,104, 27,195,181, - 63, 14, 38, 52,193,185, 76,132,194,205,164,196, 66, 64, 30, 47,119,188, 8, 53, -102, 25,124,173,217, 18,170,241,139,208,154,152,120, 33,124, 33,221, 2, 35,148, -109, 52,213,220,117,179,251,192,104, 38, 20,233,165, 16, 25,100,240, 17,216, 10, - 2, 48,176,240, 58,237,171,134, 60, 69, 78,246, 2,225, 45, 12,163, 13, 25,102, - 38,223, 74,129,174, 71, 28, 59,187, 16,192, 17,237,234, 87, 86,230,191,210, 37, -178, 10,124, 65,127,221,146, 80,204,187,199,236,129,104,115, 3, 5, 54, 0,184, -134,161,187, 50, 13,196,155, 6, 90,211,225,112,235,114, 51, 96,240, 96, 38,211, -156, 65, 33, 45, 85,208,229, 84, 30,129,212,126, 44, 80, 62, 59, 70, 86, 13,114, -238, 78, 29,218,117, 9, 64,145, 44, 1,153,147, 78, 68,217, 98,216, 67,132,196, -191, 56, 99,154, 2,165,161,252,170,123,181,252, 20,159,183,240, 80, 60,126, 70, -179, 48,141,248,207,228,105,230,244,150,147, 95,142, 44,204,244,157,128, 47, 66, - 7, 86,204,101,218, 67,227,230,136,139,123, 3,110,218, 47, 18, 9,252, 9,192, - 10,124,224, 57,133, 39,213,168,173, 22,124, 71,248, 34, 46, 24, 66, 18,210, 19, - 11,154,132, 51, 43,143,168, 51, 35,107, 69,216, 33, 12,131,146, 90,155,105,113, -145, 2, 55, 48, 26,108,196,132,235,108,154,157, 63,152,108,133, 47, 74, 10,216, - 73, 68,232,113, 93, 49,198, 73, 62, 40, 69,175, 24, +// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy5.c: +uint8_t GB_JITpackage_9 [1097] = { + 40,181, 47,253, 96,161, 20,253, 33, 0,198,235,136, 40,192,240, 58, 7, 60,135, +153,176,242,190, 19, 84,233,102, 31,167, 42,160,122,217,151, 53,112,239, 7,214, +238,189, 38,123,123, 31,234,224,186,138,130, 32, 27,204,125, 0,128, 0,124, 0, +222, 12,197, 87,110, 83, 15,205,182, 63, 13,210,216,182, 71, 51, 16,138,134, 45, +242,245,232, 54,238,206,113, 6, 63,180,243, 90,227, 43, 4,203,192,130, 36, 28, + 24, 88,127,120,212, 43, 76, 71,179,225,145,248, 18,152, 67, 16,237, 94,113, 49, +147,129,161,121, 49, 21,174, 51, 21,113,211,237, 80, 9,148, 52,190, 51,132,159, + 73, 66, 19,148,233,197,227,171, 90, 69,158, 99,122,203,171,140, 32, 50, 20, 88, + 94,153,148, 66,164,137,101, 70,138,178,182,189,157, 33, 51,197,144, 25,230, 18, +201, 4,145, 72, 2,175,186, 94,136,194,239, 55,244, 28,251,216,174,247,132,199, + 55,204, 94,143, 14,102,170,241, 47, 4,115,131,254, 13, 71,235, 98,183,185,104, + 46,153, 77,163, 73,138,137, 40,185,248, 32, 49, 27,173,163,105, 46,220,255, 79, +211, 22, 53,157,150, 73,206,192,192,187, 46,110,146,211, 36,192, 61, 10,127, 80, +231,116,156,206, 38, 39, 21, 27, 69,228,100, 70, 17,101,230,178,233, 92, 34,158, +137, 25, 39,131,145,157, 6, 49, 77, 1, 96,164,243,172, 33, 80,103,137,144, 97, + 2,222,159,168,122,150, 10, 76, 6, 17, 11,210, 96, 32,206,192, 51,219,103, 75, +179,152,177, 13,189,202,114, 18,189,121,106,100,118, 41, 15,105, 52,229,215,181, +134,215,138,228,228, 31, 13, 71,213,210,123, 52,207,140,187, 11,166, 19, 59,201, +117, 29,206,182, 73,112,178,115,201,104,155,134, 99,249,175, 11, 59,117,236,193, +176,112,174,211,178,141,180, 32,160, 36,229, 96,162, 45,245,244, 39, 16,193, 24, +206, 51,172, 95, 13,193,219,233, 29,244, 40,168,209,185,116,241,139,242,190,243, +248,118,198,244,211,247, 21, 7,235, 96,210,245, 99, 41,166, 28, 4,211,212,241, +177,244, 82, 80,227,246, 58, 83,208,187,243, 37, 59,111, 89, 22,199, 93, 44, 22, +234,246,138,114, 95,133, 63,170,236, 85,124,101,161,238,185, 40,146,130,145,240, + 4,165, 40,228, 81,141, 31, 57,180,207,162, 11,234,181,229, 13,165,140, 57,207, + 80,248,217,121, 76, 31,223,183, 57, 28, 28, 27, 83,101,122, 76,179, 86,106,231, +232, 58,102, 48,133,182,154, 44,203,186,176, 91,209,117, 97, 22, 2,101, 98, 89, +216,229,161,159,237,142, 0, 47,178,241,104,143, 86,130,103,121, 81,190,217, 55, +128,221,160,145, 53, 50, 51, 35, 35, 34,146, 36, 37,201,112, 80,132,200, 20, 17, + 21, 55,230,131, 84,112,248, 64, 66, 48,112,233,199,124,132,132,131,164, 35,182, +179,113,253,212, 5,240, 88, 32,128,184, 3, 58,163,164,135,166, 7,170,200,208, + 48,109,146, 68,176,115, 31,150,111, 88, 53, 71,255, 64,160,179, 0, 20,159,237, +179, 14,175,165, 98, 3,177, 32,189,113, 43,113,138,102, 83, 88,239,220, 17,167, +140,244, 19,136, 83,213, 59,167,128,124,148,176, 27,141, 49,206,156,173,253,133, + 36,145, 49, 95, 13,107, 34,135,211, 47,149,242,153,119,129, 33,210,104,169,130, +206, 64, 17, 83,147, 43,103, 82,139,181,111, 48, 72, 95, 98,159,179, 97, 48,224, +202,143, 30,115, 52, 38, 1, 38, 54, 5,200, 2,112,214, 22,142,217, 4,156,109, + 57,172, 9,118,254, 54,153, 90, 16, 54, 41, 7,139,113,143,135,201,149, 58, 46, +148, 32,220,141,181,171,199,118,211,156, 19, 44, 58,192,164, 67,184,233,199,171, +238,156,245,207,174, 59, 15,251,119,217,197,211,254,185,109,231, 6,220,155,196, +246,181,122, 2,102,142, 41,102, 80,243,161, 42,196, 88,255,251,131, 35,109,164, +239,138, 24, 70, 58, 17,144,126,154, 49,242, 64, 33,196, 94, 57,168,137, 14,170, +127, 71, 77, 11,190, 62,208,163, 64,251, 4, 0,223,196,220, 62, 42,174, 61, 54, +249,192, 50, 62, 52,124, 48,115, 93,224,115, 91,250,135,245,218, 1, 7, 30, 0, +128, 54,192,248,142, 3,174, 99, 14, 53,180, 78, 96,131, 14,173, 79, 61, 56,133, + 15, 4,240,193, 40,149,103,160,235, 99, 14, 63, 97,204,136, 33,179,145, 3, 40, + 31,195, 14, 1,141, 76, 94, 42,118,112, 76,170,115,142, 12,159,151, 41, 20,120, + 56,233,176,171,129,206, 24,156,227,177,241,181,120, 65,102,164,121,128,166, 0, +227,184,236, 37,236,104,230, 4,223,218,167,170,248,214,113,229, 9, 12,160,131, +224, 23, 16, 42,130,182,109,110, 63,194,139, 69,177,134, 13,138, 92, 56,153, 21, +138,173, 13, 21, 25, 40, 89,189, 91,134,180, 92, 15, 1, 8,129,138, 14, 60,126, +224, 58, 2,116,121, 86, 4, 1, 33,231,242,131, 14, 61, 36,132,137, 10, 96, 15, + 6, 84, 26,139,100, 32,204,125,127, 20,144,208,246, 14, 4,228,243, 80, 96,223, +176, 71, 5, 70, 23,224,245,214, 73, 3, 51,222, 17,160,105,219,206, 65, 19,230, + 15, 38,181,170, 78,142, 60,232, 92,116, 8, 85, 9,166, 20, 5,120, } ; -// ../Source/Template/GB_add_bitmap_M_sparse_25.c: -uint8_t GB_JITpackage_48 [1087] = { - 40,181, 47,253, 96, 3, 15,173, 33, 0,134,107,132, 40,224,208,232, 24,248,189, - 18,180,156,212,224,103,121,195, 37,253, 6,201, 64, 85,143,137,126,217,148,179, -245, 8,220,180,252, 77,243, 52, 97,134,148, 24, 19, 2,125, 0,116, 0,122, 0, -146, 4, 66,121, 80, 46,155, 24,190,146,105,221,234,190, 84,203, 60,168,190, 52, -171, 13, 15,137, 11, 7,162,209, 81,166,154, 62, 92,111,238,162, 62,220, 90,248, - 71, 64,145, 80, 30, 8, 19, 9,229, 84, 54,253,233, 58,154,151, 67,224, 53,184, -221,137,170,231,175, 3, 27, 34,135,103,198, 84, 58,116, 87,140,142,100, 45,198, - 22,129,127,153, 98, 13, 46,242,248, 52,183,142,253,197, 10, 94, 10, 26, 0, 11, -246,138, 1, 69, 82,157, 39,214, 82, 35,241, 20,237,250,145,154, 54,101,196, 60, - 18,145, 30,145, 72, 33, 61,247,159,118, 41,254,219,121,110,141,191,101,193, 1, - 71, 85,221, 98, 93,242,107,162,180,157,163,155, 85,170,233,118,117,103,249, 82, -197,169,172,238,185,245, 68, 45,134, 70,185, 76,159,186, 18,155,180, 54,105,230, -182, 20, 97,220,237,150, 90, 59,243,196,199,162,238, 83,116, 49, 51, 14,176,174, -213,253,125,235,115,247, 10,245, 52, 0,147, 1, 69,235,184, 77, 53,255,127, 73, -226,144, 36, 72,252,131,251, 82, 17,181, 88,212,101,215,238,188,174,215,232,122, - 44, 91,231,186,133, 6,182,190, 93, 86,205, 75, 91,213, 46, 38,187, 45,161,156, -224,108, 48,170, 45,237,136,188, 75,237,232, 2,199,151, 94,158,118,102, 90, 98, -211, 57,155, 78, 87,249,151, 1,255, 64,117, 94,224,166, 97,110,250,121, 5,127, -157, 2,189, 58, 57, 64, 44,116, 50, 17, 11,114, 94, 46, 80,110, 58,153,141,106, -119,171, 1,214, 41,252,247,129,211,161,140, 17,243,235,243, 91, 38,252,186, 5, -166,248, 7,155,190, 89,172, 95,255,123, 27, 55,155,238,176,201,120, 50,158, 7, -200,145, 1,146,212,209, 81, 85,147, 24, 39,135,237,148,128,254,106,140,159, 79, -126, 89,153,245,250,234,122,196, 20,175,213, 98,253,215, 99,238,118, 70, 71,231, -118,232, 81,160,238, 84,103, 58,154,121, 15, 92,199, 38, 21,230,188,247, 66, 50, -226,233,144, 35, 61, 11,152,208, 31, 23,167, 71,201, 0,210,149,219, 84,232, 85, -166,248,173,195,167,220,190,118,235,102,177,126,235, 22, 20,150,201,203,170,104, - 94, 13, 45, 82, 6,244,173,166,181,126,113,171, 12, 81, 25,127,157,102,213,234, - 40, 3,128,241,168,241,169, 34, 52, 34, 50, 83, 80, 80,148, 66, 99, 48,132, 24, - 99,204, 56, 15,162,128, 72,139, 66, 24, 73, 96,160, 17, 40, 99, 8, 33, 72, 96, - 2, 73,146,153,168, 37,169, 14, 36, 67, 28,122, 76,179, 10,169, 1, 86, 20, 18, -122,232,219, 22,114,250, 83, 64,231,128, 80,107, 33,218,239,223, 63,228,108,149, -186, 80, 97, 28,218,122, 92,249, 71,136, 64,164,185,188,154, 99, 97,160,120, 55, -194, 66,170,120, 23,184, 70, 76,125,224,216, 84,215, 96, 50,152, 97,132,234, 27, -207,183,210,251,155, 47, 52,177,224,109, 92, 70,178,153,158, 16, 81, 34,254, 96, -175,140, 70,168,136, 34, 64,150,212,151,204,237, 4,159, 68, 19, 60, 11,215,230, -122,134,215,196,137, 20, 3,145, 27, 69,220,223, 17, 94, 37, 63, 77,204, 87, 90, -129, 93,252, 3,241,104, 0, 55,147, 87, 96, 99,185, 16,122,249, 14, 79,202, 74, -213,137, 17, 60, 20,255,245, 90, 84, 6,166,136, 13,234, 64, 59, 51,113,174, 34, - 95,112,238, 40,163,192,145, 24,224,182, 6,213, 44,133, 28, 54,150,114,224, 62, -112, 59,153,109,130,106, 37, 88, 52,236, 18,210, 64,133,196, 25,135,113,164,212, -108,255,197, 44,164,185,160, 46,209,149,148,125,123,214,159, 88,130,122, 66, 20, -129,235, 69,213, 5,130, 64,141,253, 69, 92, 79, 91,249,129,234, 68,185,144, 1, -127, 89, 36,126, 89,128,252, 15, 44,209,137,114, 10,153,171, 52, 16,208, 73,246, -219,181, 76,159, 45, 7,196, 70,234,229, 23, 93, 98, 44, 34, 92,235,117, 57,154, -149,102,226, 6,150, 99, 43, 86,130,145,169,159, 48,107, 46,123,222, 72,224, 62, -115, 67, 94, 13,189,157,201,169,193,241, 97, 44,174,180,178,218, 76,234,217, 26, - 97,207,221,183,141,149,216,199,205, 57,152,109,203, 71, 55,100, 8,131, 12,230, -227,155,176,154,200,186,189,128, 36, 98, 88, 83,204,124,115,231,119,184, 18, 58, - 28,197,239, 50, 44,175,253, 74,252,169,136,121,142, 69,129,102,112,188,244,107, -114,255, 44,248, 73,122, 42, 76,102, 60,203,142,231,239,164, 97, 66, 4, 22, 23, - 25, 50,124,183, 2, 47,184, 1,104,216,178, 4, 62, 94,217, 28,166, 70,125,234, -197, 87,225,164,200, 84, 0,255,134, 7,116,207, 72, 85, 70, 2,230,220,130, 97, -204,247, 84,196, 77, 94,169,196,239,212, 94,104,174, 77, 99,122,168,119,163, 40, -153, 32, 32, 55,205,245, 7, 19, 84,217,227,146, 59,192, 73,245,253, 18,127,156, -157,164,187,170,225,155, 7, +// ../Source/JitKernels/GB_jit_kernel_add.c: +uint8_t GB_JITpackage_10 [287] = { + 40,181, 47,253, 96,114, 1,173, 8, 0, 86,209, 58, 33, 0,211, 60, 62,183,128, +189,105,233, 64, 32, 94,117,183,105,166,238, 33, 81,107, 55,210,127,220, 96, 49, + 88,254,255,239,245, 33, 4, 49, 0, 50, 0, 49, 0, 32,199,211, 21,241,163,246, + 56,246,119,238, 88,137,241,252, 49, 83,222,245,198,194,120, 4, 20,151, 71,148, + 48, 23,151, 35,190, 9, 99,239,134, 47,234,207,220,157, 49,151, 86,167, 40, 41, + 81, 84, 63,138,255,229, 77,170, 96,145, 9,191, 71,255,248,157,143, 27,188,228, +206,195,112,122,100,176, 42, 75, 58, 20, 42,203, 7,159,192,163, 49,123, 60,204, +167,233, 31,112,111, 52, 89,226,145,157, 27, 13,150,199, 1,119,119, 9,146, 9, + 31, 8,156,147,112, 93,228, 98,216,188, 91, 6,233, 50,135,111,147,114, 91,189, + 18,173,113,105,149,213,100, 73, 15,126, 30,103, 58, 66,127,182,228, 45, 62,214, +164, 82,134,100,194, 7,214,102,215, 53,177,151,234, 42,112, 81,119,246,107,192, + 55,253,246, 66,142,230,247,165, 21,224,143, 59,225, 39,230,202, 33,156, 6,153, +100, 86,163,100,215,106, 47,230, 13, 0, 68, 37,149,175,224, 9, 53,117, 86,129, +218,214,115,208, 91, 39,140,201,212,160,249,243,204, 20,109, 12, 91, 45, 95, 24, +244,235,130, 61, 69,193, 16, } ; -// ../Source/Template/GB_add_bitmap_M_sparse_26.c: -uint8_t GB_JITpackage_49 [1091] = { - 40,181, 47,253, 96, 1, 15,205, 33, 0,214,107,132, 40,208,208,234, 24,248,109, -212, 86, 66, 6,180,235,114, 46,248, 40,197,153, 82,130,133, 88, 83,191, 26, 67, -167,152,217, 89,234,175,104,145,171, 25,240,131, 89, 2,127, 0,118, 0,120, 0, -199,162,200, 99,226,168, 28,157, 57,158,242, 85,187,217,141,171,134,113, 84,141, - 43,181, 12,142, 8,203,230,161,213,208, 87,117,117,184,222,156,133,117,248,189, -241,144, 96, 18,153, 56, 14, 36,145,201, 39, 42, 29,106, 27,154,150, 63,226, 49, -184,237,125,108,231,144, 19, 25, 46, 46,207,239, 66,225,212,109, 65,156,232, 94, -208, 6,185, 14,191,154, 49, 56,200, 35,204,188, 58,118,120, 81,209, 74,200, 0, - 84,176, 83, 12, 38,178,234,111,102, 45, 51, 50,207,207,182,153,212,180, 41,175, -203, 33,144,200, 1,129, 4,210, 27, 52,152, 14,166,227, 16, 55,178,211,115, 31, -106,184,230,195,253,205,173,243,183, 44, 48,208,160,168, 87,170, 71,110, 73,147, -190, 51,132, 41,133,146,176,103, 55,253, 30, 81,124,162,118,207,173,165,122, 65, - 90,229,168,254,132, 37, 38,105,109,214,143,219,242, 3,194,219,111,189,119,126, - 51, 63,127,188,207,143,197,252,114, 64,117,205,238,111,108,255,121,215, 60,110, -215,204,255, 63,138, 52,162,232, 17, 15,175,141,235,167,222,252,241,232, 53, 60, -175,237, 51,218, 6, 87, 71,185,245,103,183,110, 96,107,236, 81, 42,123,180, 89, - 13, 99,210,219,242,146, 18, 27, 13,246,171,234, 91, 55, 32,207,135,184,222,208, - 5,158, 15,191,121, 39,213, 18,147,190,209,120,218,202,124,120,113, 29,122,108, -102,137, 26,134,235,212, 39,151,239,188,245,201, 3,173,212,240,160,192,193, 64, - 40,200,204, 98,137, 82,195,193,108, 85,195,155, 13,168, 62,229,195,236,146,126, -201,235,186,220,122,246, 45, 17,110,189, 34, 79, 60,195,164,111,149,231, 87,183, -126, 8, 51, 48, 13, 81,180, 65, 81,146, 24,119,157,187,102, 49,226, 57,180,143, -113, 82, 81,114,171,162,213,237,169,152, 39,110,227,173,219, 74,245, 91,143,159, -183,105, 13,157,219, 29,156, 60, 53, 52,191, 93,125,192, 58, 38,161,242, 6, 66, -216,201, 40, 99,222,200,142,194,165, 59,228,162,244, 40, 23, 60,218,114,123,234, - 32, 69,138,223,188,252,202,237,107,216,110,149,119,221,171, 87, 76, 84, 36,144, -218,207,196, 24, 90,156, 12,104, 44,227,169,121, 45,176,149, 93,149,241,214, 43, -181, 1,128,243,168,225,169, 50, 52, 34, 34,163,160, 32, 37, 41, 52, 6, 48,132, - 16,195,152,209, 60,146,112,104,146,164, 24, 22, 33, 8, 9, 36, 49, 2, 66,148, -224, 4, 51,129,132, 21,197,168, 58, 19, 67, 28,228,230,224,242, 20, 18, 2,206, - 19,242,224, 10,205, 66, 44,254,216,130,229,128, 48,195, 66,202,167, 1, 14, 17, - 9,157, 38,165, 20,143, 13,227,114,212,164, 65, 68,195, 69,171,143,194,224,227, -109,204,194,174,241,170,224,235, 17, 37,238,221,124, 37, 86, 92,216,183,246, 24, - 55,119,207, 10, 19, 4,151, 97,224,228, 12,141,192,203,250,178,253,155, 45, 80, - 68,143, 36, 31,190, 52, 27, 33, 7,204,138, 12,127,141,197,222, 78,255, 36, 97, - 89, 59,241, 12,162,137, 19, 74, 6,180,108, 54,112,255,179,188,136,119, 58, 6, -144, 43,170, 11,244,196,169,163, 16, 3, 13,165,247,122,227, 38, 72,255,190, 58, - 77, 46, 93,245,128, 26, 30, 53,191,164,166, 63,219,175,136,135,117,168,159,221, -151,243,243, 53,228,148,105, 58,170,221, 48, 1,108,254, 30,161,165,202, 89,112, -191, 1, 33, 65, 61,223,140, 10,213,129, 88, 66, 96,209,114, 23,189, 68,129, 96, -137,112, 38,193, 83,178, 16,196, 13,165, 32,168, 87,239,168,178,242,136, 65, 40, - 37,140, 90,112, 43,169,183,131,158, 80,109, 95,152,240, 19,237,136,185, 60, 81, - 32,228,207, 88, 22,206,183, 22, 88,238, 47, 23,111,138, 98,125, 48,254, 28, 40, -159,240, 91, 23,159,206,187,117,128, 74, 52,164, 44, 81, 8,198,224,134, 61,128, -190,237, 51,131, 76,114, 96, 57, 27,227,228,209,214, 67,253, 17, 73, 44, 19,184, -215, 72,204, 16,164, 28,247,193, 32, 71, 18, 53, 39,174, 99,153,184,127,221,143, -214, 34,206,155,120,123, 46, 86, 75,179,150, 63,193,128,110,202, 48, 10, 25,192, - 71,157,136,153,126,222, 65,128,154,152,108,138,171,213,220,250, 59,113,209, 92, - 89, 97,225, 12,237,181,100,213,231,116,214,164, 56,112,139,143,134,214, 77,253, -239,157,158,110,167,184,100,182,140,178,149,233,152, 2, 5, 33, 0,235,148,240, - 25,126, 55, 89, 94,210, 0, 21,236,177, 36, 71, 94, 97,172,106, 65,241,212,244, - 73,129,153,134,164,146,249, 76, 67,236,148, 85, 19, 41,193,168, 76,138,195,224, - 54,148, 46,142,179, 5, 59,106,193, 37,239, 56, 28,151, 26,152,238,108, 90,237, - 3, 5,109,140,130, 41, 78,114,211, 92,127, 48,133,202, 6, 47,189, 6, 78,242, -239, 63,228,143,176,147, 52, 84, 74,187,121, +// ../Source/JitKernels/GB_jit_kernel_apply_bind1st.c: +uint8_t GB_JITpackage_11 [271] = { + 40,181, 47,253, 96,106, 1, 45, 8, 0,118, 16, 56, 21, 16,253, 42,159,251,182, +128,245,113,202,147, 7,218,153,237,136, 0, 0, 2, 0, 1, 49, 0, 49, 0, 50, + 0,181,229,164,118, 93,210, 95,122,183,248, 7, 16, 82,161, 15,159,158, 63,244, +245,233, 59,231,113,219, 10, 42,183, 38,185,195, 52, 93,146,112, 42,215,233, 75, +222,173, 75, 74,214, 71, 16,192, 64,144,134, 72,117, 7,154,230,117,106,167,222, +183,111,118,109,189, 15,195,209, 47,152, 37, 89,140, 70, 73,150, 79,156,195, 47, +236, 54, 47,169,127, 68,127,103,239, 57,110,193, 95,124,145, 38,177,116, 25, 36, +248, 41,212,118, 73,228,168,117, 93, 68,106,213,230, 85,217,215, 34,137,211, 44, + 18,188, 48, 82,178,128,228, 88,140,148, 61, 75, 58,250, 78,157,182,106,123,203, + 41,122, 25,169, 45,167,103,171, 5, 0,208, 3,207, 39,190,175,154,166,240, 35, +165,218, 26,190, 92,227,119, 90, 7,231,145,222, 37, 76,199,233, 77, 6, 63, 69, +113,248,148, 91,225,255,255, 1, 30,120, 62, 49,124, 14,228,188, 46, 11, 0, 78, +133,156, 94, 7, 8,192,106, 17,210,160,111, 29, 39, 38, 83,131,230,207, 51, 83, +180, 21,108,181,225, 4,131, 66, 69,193, 16, } ; -// ../Source/Template/GB_add_bitmap_noM.c: -uint8_t GB_JITpackage_50 [467] = { - 40,181, 47,253, 96, 49, 6, 77, 14, 0,166, 19, 64, 33, 0,211,230, 87, 31,107, - 24,153,192, 65,209, 9,245,246, 51,119, 85,154,112,205, 72,127, 59,133,131,133, -157,244,255,219,127, 40, 1, 55, 0, 55, 0, 51, 0,139, 87,243, 28,111,204, 96, - 48,229,211, 54, 33,212, 11,173,216, 64,116, 22,109,184,245,136, 53,155,164, 23, - 51,159,159,142,125,162,131,169,192,142,136,100,192, 26, 90,204,136, 45,245, 94, - 91,105,227,150, 37, 41,203, 10,248,152, 36, 84, 23,213, 30,103,195,121,132,216, -184,195, 35,216, 55,163, 58,131,205, 97, 8, 85, 89, 76,170,219, 27,177,115,107, -207,163,119,193,218,191,111,126, 50, 92,132,139, 58, 20, 8,215, 37, 46,250,148, -241,198, 6,125, 59, 44,160,128,196, 37,122,143,167,102, 92,103,116,138,198,216, -182,153,171,211, 15, 62,175, 56,118,203,250,127, 41, 59, 82, 86,223,167,233,222, -162, 5, 63, 47,182, 55,226,150,252,149,100,137,158, 3, 82,126,126, 8,234,176, -236,240, 5, 13,157, 47,177, 67,142,103, 77, 95,127, 2, 92, 85,184,106,224,125, - 53, 31, 7, 94,208,126, 74, 20,130, 62,153, 17, 74, 70,235,150,213, 25,189, 3, - 97, 72, 52,198,163, 82, 50, 71, 23, 85,160,193,177, 52, 51, 19, 22,148, 36,149, -114, 53, 64,134,136,177,185, 30,201, 36,139,102, 29,149, 94,217, 63,102,178,136, -171, 57,163,104, 81,142, 75, 0, 21, 22,142, 46,145,228, 24,150, 16,122, 12,156, - 65,131, 40, 58,104,134, 54,135, 0, 26,191,212,146, 65, 68,153,104,147,182, 89, -176,139, 58,232,204,219,112,215,168,130,103,151,217,105, 24,212,243, 32,105,168, -196,112, 61, 50, 92, 62,201,124,185,180,141,101, 2,144, 89,121,212, 64,142,160, -167, 10,220, 23,230,118,198, 71, 24, 46, 2,104, 56, 90,220, 59, 75,158,244, 67, - 56, 86,208,202,232, 53,171,129,159, 97,147,117,154,218, 21, 1,135,123,176,142, - 0, 60,143,221, 94, 14, 53,142,179, 6, 0, 89,163,210, 66,178, 5, 54, 2,216, - 29,232,163,129,219, 92,202,246,166,169,243, 51,147,187,130,149,158, 40, 74,162, -147,192,198,148,162, 64, 15, +// ../Source/JitKernels/GB_jit_kernel_apply_bind2nd.c: +uint8_t GB_JITpackage_12 [271] = { + 40,181, 47,253, 96,104, 1, 45, 8, 0,102, 16, 56, 21, 16,253, 42,159,251,182, +128,245,113,202,147, 7,218,153,237,136, 0, 0, 2, 0, 1, 49, 0, 49, 0, 50, + 0,181,229,164,118, 93,210, 95,122,183,248, 7, 16,123, 17, 13,159,158, 63,244, +245,233, 59,231,129,202, 11, 42,183, 38,185,195, 52, 93,146,112, 42,215,233, 75, +222,173, 75, 74,214, 71, 16,192, 64,144,134, 72,117, 7,154,230,117,106,167,222, +183,111,118,109,189, 15,195,209, 47,152, 37, 89,140, 70, 73,150, 79,156,195, 47, +236, 54, 47,169,127, 68,127,103,239, 57,110,193, 95,124,145, 38,177,116, 25, 36, +181, 45,212,118, 73,228,168,117, 93, 68,106,213,230, 85,217,215, 34,137,211, 44, + 18,188, 48, 82,178,128,228, 88,140,148, 61, 75, 58,250, 78,157,182,106,123,203, + 41,122, 25,169, 45,167,103,171, 5, 0,208, 3,207, 39,190,175,154,166,240, 35, +165,218, 26,190, 92,227,119, 90, 7,231,145,222, 37, 76,199,233, 77, 6, 63, 69, +113,248,148, 91,225,255,255, 1, 30,120, 62, 49,112, 32,231,117, 1, 11, 0, 78, +133,140, 94, 7, 8,192, 34, 17,210,152,111,157, 49, 38, 83,131,230,207, 51, 83, +180, 21,108,181,225, 4,131, 66, 69,193, 16, } ; -// ../Source/Template/GB_add_bitmap_noM_21.c: -uint8_t GB_JITpackage_51 [687] = { - 40,181, 47,253, 96, 19, 9, 45, 21, 0, 70, 93, 92, 32,224,220, 28, 3, 28,146, -176,166,194,249, 74, 52,132, 37, 37, 14,140,171, 9,170,161,233,113,207,204,142, - 97,140,193, 19, 3, 14, 83, 0, 81, 0, 82, 0,182,115,189, 85,169,219,121, 24, -206,203,133, 2,161, 40, 56, 18, 8,197, 7, 31,119,169,239,171, 82,110,152,143, -169,182,216,186,159, 75,207,196,116,170, 92, 71, 11,196,234,177,102,143,221,215, -229,217,186,131,184,126, 94,222,187,236, 8,115,226, 29,146, 80,208,140,136,105, -174,173,125, 79, 20, 4, 43,237, 44, 63, 28,182,194,225, 16,152,122,156, 6,171, - 29, 85,155,182, 92,248,163,136,122,104,199,154,159, 91,226,107, 43, 85,199, 12, -136, 28,188,251, 27,223, 48,172,114, 94,130,162,106,219,204,255,127,219,102,155, - 29,171,190,247, 54,132, 65, 81,176,170,175,230,121,200,104, 47,234,110,108,193, - 75,193,106,108,191,139, 41,136, 40, 28, 3,104, 95,163,213, 1,153,244,211,252, -228,223, 55,125, 80, 40,147,110, 60, 23,148, 5, 81, 87, 18,249,228,151, 82,134, - 63,238,154,205,229,115,249,116, 38,135,178,116,221,151, 32,182,249,114,143,117, -235,252, 77, 25,141, 25,129,112, 73,228,136, 79,184,129, 14,235, 11,127, 16, 2, -135,197,187,191,241, 91,233,131,239,238,186, 53,103, 67, 23,168, 63, 8,219, 86, - 35,124,222,156,117,219,211,156,168, 11, 98,143,138,155,118,116,196,217,120,239, -198, 26,214, 79,211,170,202, 97,213,128, 46,160,150, 56, 96, 27,190, 30,120,246, -184,115, 54, 21,207, 37, 84,233,186,147,168, 47,205,151,176,121,185,186,149, 82, -230, 6,211,157, 48, 88,201,203,125,187, 64,192, 29,101,117,104, 35,221,105,180, -155, 2,128,132,160,241,169, 66, 52,193, 72, 82,148, 20, 50,172, 1, 64,132, 24, - 83,118,245,201,130,102,128,244, 57, 44, 98,153,139,238,106, 51, 7, 47,235, 4, -143,192, 11,119,168, 68,197, 61, 12,242,153, 20, 15,108,202, 0, 23, 77, 65, 79, -134,154, 86,194,146,154,208,242, 45,115, 42,146, 96, 18, 17, 11, 41,100,187,186, -184,254, 94, 30,229, 67, 12,183, 64,230,131, 90,182, 18,224, 32, 28, 77,139,172, -238, 48, 4,198,170,216, 87,209, 11,168, 50,192,135, 3,156,155,117,210, 34,166, - 2,171,131, 34,199,221, 60,218, 54,148,245, 99, 42, 11,216,172, 16,239,163,161, - 8,117, 40, 89,166, 0,102,107, 19,189,160,107, 64,111, 4, 99, 57, 19, 92,138, - 11, 53, 87, 68,109,128,164, 5,216,161, 40, 73, 62,156, 60, 38,200, 58,100, 56, - 5,251, 87,186,136, 4, 87,188,169,210, 66,147, 27,104, 43,213, 90, 89, 58,241, -183,214,135, 8, 6, 1,196,145,161, 47, 76, 45, 62,243, 60,183, 78, 17,148,153, -100, 44, 9, 78,203, 41, 3, 38,124,204,210, 44,107, 6, 9, 99, 24,112,189, 13, -160,182,189, 69, 18,241, 62,130,113, 0, 11,152,121,206, 7, 15,207,140, 82, 48, - 69, 56,106, 63,160, 40, 11,187, 28, 72,132,204, 22,169, 51, 43, 9,133,142, 66, - 15,122,109, 48,152, 75, 89,185,105,122, 84,102,186, 59,180,194, 27,140,152, 9, - 39,109,131, 41, 69,221, 19, +// ../Source/JitKernels/GB_jit_kernel_apply_unop.c: +uint8_t GB_JITpackage_13 [593] = { + 40,181, 47,253, 96, 35, 5, 61, 18, 0, 22, 93, 93, 33,224,152,109, 48,163,107, +189, 86,199,234,187,104,146, 24,229,154,215,197,113, 65,104,189,223,239,147,184, + 26, 49, 70, 68, 19, 28, 2, 82, 0, 84, 0, 84, 0,153,162, 64, 48,248, 21, 90, +142,153,111, 2, 35, 62,168,142, 26,119, 89,250,141, 99, 95,237,182, 49,131, 90, +194,184,166, 6,243,119,247,159, 31,205,167, 43,226,119, 93, 58, 74,131,248,116, + 93,134,252,170,150,231,210, 29,126,130, 56, 35, 28,228, 18,159, 22, 69,230, 12, + 90,242, 98,125, 73,118,255,200,110, 18,215, 52,154,105, 90,137,141, 95,245,241, + 43, 91, 94,198,122, 58,207,171, 23,127,232,138,129,107,244,224,232, 67,215, 52, +119,119, 74, 41, 22,147,177, 95, 4,195,121, 92, 36,244, 1, 74, 24, 24,178, 59, +134, 96,174,206,208,247, 67,191,241, 21, 41,217, 53,241, 13,191,203, 58, 17,111, + 32, 94,147,190,230,213,184,185, 71,209,107,156, 36,171, 99, 7, 3,193, 16,155, +253, 40,182,158, 30, 89,173,181, 54,124,159,165,189, 44,129,115,158,103, 99, 33, + 84, 69, 45,207,108, 50, 26,207,118, 28, 70,195, 89,188,171, 91,166,147,216, 13, +165, 66,105,232, 69,124, 77,242,174, 80,142,141, 28,123,199, 74,243,109, 61, 65, + 44,247, 50, 24, 78,195, 47,124, 73, 19,232, 88,118,236,171,229,213, 82, 28,254, +190, 45, 34,148,174,104,195,175,239,227, 32, 16,206,103, 55, 45,177, 28,235,115, + 95, 13, 8, 7,121,244,118,147, 0,252,138, 39, 25,226,255,113,204,121,155,184, + 12, 85,149,235, 34,225,115,220, 40,203, 18,160, 60, 30,145,188,163, 77, 97,108, + 83, 24,180, 60,210,113, 19, 12,200,225,160,234, 59,124,189,205,171, 5,190,237, +130,122,245,178,161, 4, 88,160, 97, 65, 65, 70,102, 72,102,166, 40,133,194,112, + 96, 68,100,172,140, 30,205, 8, 57, 67, 32,184, 57, 78,131,146,204, 87, 15, 36, +249, 25, 21,187,252, 82,104,218, 26, 65,148,162,218,228,147,113, 99,132,116,172, +231,157, 14, 99,210,159, 54,212, 44, 27,213,189, 84,215,109, 34,233, 24, 15, 22, + 36, 98,194, 53, 14, 53, 16,154,105,214,196, 25,255, 39, 50,216,139, 2,160, 96, +137, 72,228, 30,125,251,186, 38, 3, 89,210,179,201,250, 97,228,150, 52,103,102, +254,165, 72,204,193,141, 72,214, 6,211, 45,141,246, 22,145,103, 37, 88,210, 22, +192, 6,234,146, 18,200,230,153, 4,178, 51, 7,141, 8, 0,167, 12,255, 35,186, + 1,160, 44, 13,159,222, 85,246, 99, 31, 98, 43,230,146,116, 7,236, 12, 11,131, + 75, 54, 87, 64,219,173,132,206, 95, 28,178, 79, 58,131,117, 15,154,155,159,153, +238, 56, 90, 1,223, 4, 98, 92,240, 42, 69, 93, 19, } ; -// ../Source/Template/GB_add_bitmap_noM_22.c: -uint8_t GB_JITpackage_52 [1013] = { - 40,181, 47,253, 96, 34, 13, 93, 31, 0,230,167,121, 40,208,208, 88, 7,120,107, -239,101,162,127, 4,216, 47, 80, 65,135,193,222,181,214,216,222, 62,222, 55,160, - 55, 13,185,101,196, 59,101, 59,200,213,176, 2,191, 23,114, 0,106, 0,110, 0, - 16,202, 99,106, 87, 91,248,202,157, 52,163,185, 78, 44,243,152,184,206,139, 50, - 60, 38, 48, 27, 8, 54, 65,119,226,249,112,156, 53, 12,250,240,109,131,127, 3, - 20, 9,229, 97, 48,145, 80, 62, 93,210, 31,166,160,198, 28, 2, 31,210,114,199, - 81,136, 63, 14,100,136,154,237,171, 80,225,204, 76, 51, 56,209,157, 54,164, 69, - 38,190,109,241, 35,252,187,245, 23, 41, 88, 89,175, 80, 40,178,161,171,210, 54, -151,105, 71, 98, 88,203,168,240, 72, 36,122, 68, 34, 1, 7,231,160,168,203,237, - 45,151,188,186,149,166,139,230,206, 88,154, 91, 6, 54,181, 11, 75,146,203,168, -191, 93,246,109,110, 91,223,114,221,155,195,232,107,237,179, 36, 40,200,149, 78, -188, 77,203, 39,140,245,188, 90,174,210,250,219,168, 23,252,235, 88,210, 67,246, -226, 38,247, 8,131,129, 82,195,201,100, 19,203, 40,192,111,119,203,188,125,120, -172,246,177, 78,203,179,225,255, 31, 69, 28, 81, 4,137, 63,196,244, 86, 36, 9, -183, 51,182,248,131, 59, 87,170, 55,140, 74,229,103,202,248,234,243,162, 27,142, - 50,227, 75,179,143, 64,198,181, 67,120,224,173, 65,245,234, 87, 86,148, 81,172, - 90,178,203, 18, 74,138,141,198,234,136,212,185,129, 30,112,251,119,123,235, 11, - 75, 75,250, 70, 99,249,212, 97, 42,237,159, 6,252,243,208,150, 14, 37, 6,106, - 24, 58,207,206,169,201,243,168,116,203, 65,147,113,136, 72,224,100, 36, 18,100, - 75,207, 44,191,176, 21,175,222,207, 50, 81,212, 81, 81, 20, 53,233,136,173,217, -173, 61,127, 52,198,206,235, 36, 61,163,167,162,173, 56,165, 23,203, 95, 61,218, -219,229,107,130,174,229,207,155, 60, 19,212, 55, 11,220, 99,217, 9,101, 55,239, -189,247,254,100,180,210,225, 70, 66, 36, 40,124,254,180, 40, 61,202,133,234, 30, - 76,167,207,171, 72,241, 89,247, 60,181,124,172,210,236, 98,185,124, 5,199, 5, -163, 21, 74,170, 29,205,215,181,248, 52,121, 23,229,186,134,176, 72, 17, 8,128, -226,168,209,169, 66, 51, 35, 34,146, 36, 73, 97, 89, 3, 32,132, 24,164,170,140, - 30,194,144, 64,142, 51, 36, 66, 24,177, 2, 98, 68, 40,144,192, 2, 9, 36,148, - 64, 65, 97,105,218,201,106,196,233, 17, 51, 41,173,236, 17,156, 29,134, 36, 15, -206, 82, 56, 67,251, 84,184, 56,225,241,119,185, 37, 54,207,139, 1,171, 42,211, - 7, 50, 60,176, 37,138, 28,153,248,161, 29, 57,141,234,151, 13,255, 63,190,192, -192, 43, 83,101,111,187, 56, 23,129, 51,115, 47,200,145,199, 18, 56, 28, 21, 44, -150,152,228,173,144, 32,242, 51, 40, 98,108,104,145,130, 44, 10, 70,115, 26,156, - 82,123, 68,225,109, 34,132, 34, 82,165, 16, 15, 7,246,245, 77,245,111, 61, 59, -137,166, 60,223,107,190,158,252,211,156,132,196,192,106,163, 14,247,241, 86,130, -241,167,136,153,103, 37,118,129,173,202, 94, 86,174,129,106,207,124, 23, 66,252, - 32,109,187,250,164, 46,154, 5, 85, 9, 76,253,206,117, 50, 89,126, 22,169,184, -145, 55,102,214,231, 60,185,227, 46,242,173,231, 44,163, 89,208,130,253,147,201, -107, 79,194, 51,142, 17,247, 59,112,161,121, 11, 26, 9, 46, 52, 94,209, 17,129, - 97, 21,112,165, 14, 64,118, 2,155,163, 21, 5,163,245,239,187,109,149,138,149, - 21,169, 67, 40,232,122,112,253,187, 91,102,241,137, 9,168, 65,166, 32,153,161, - 43,111,202,165, 66, 8, 67,178,209, 39,105, 92,150, 94, 58,147, 80,190, 90, 86, - 98, 20, 44,224, 26, 33,171, 29,108,101,185, 10,160,152, 40, 0,152, 7, 53,253, -209, 44,146,131,212,223,102,142, 3,208, 54, 46, 48,238,246,247, 25,191, 38,105, -250,129,124,132, 81,228, 39,238,205, 58, 35, 54,231,242, 34,184, 29, 57,187, 90, -147,104, 9, 0,183,142,234,124, 59,152,206,205,201,189,214, 38,213, 84,129,150, -230, 88,177,195, 69, 95,122,183,207,168,148,194,206,178, 84, 72,124, 32,122,195, -129,144, 47,148,139,119, 25,119,172,180, 17, 46, 87,216, 51,104, 84,225, 52, 48, - 18, 77,209, 91,241,178,224,229,219, 78, 58, 4,168, 61, 54, 1,227,240, 66,231, - 85,112, 79,113, 45,145,153,188, 15, 57, 83,158,206,113, 24,181,240,205, 8,174, - 20,246, 98,110,158,128,198, 78, 62, 10, 61,155,166,171, 6, 83, 86,213, 8,198, - 48,230, 23, 63, 95,174,179, 13,151,210, 3,112, 2, +// ../Source/JitKernels/GB_jit_kernel_build.c: +uint8_t GB_JITpackage_14 [306] = { + 40,181, 47,253, 96,191, 1, 69, 9, 0,182,145, 59, 33, 0,211, 60,238,206, 4, +253, 16,159,143,211, 70, 18,235, 45, 88,146,135, 18, 54,189,208,237,100,134, 60, +104,255,255,247,250, 23, 2, 49, 0, 50, 0, 51, 0,212,229,157,111,135,154,203, +185, 68, 47,109,126, 98,151,179,195,235,220,137,244,247, 29,169,156,153,231,208, +226,126,176,148,135,239, 88,169,248,193,252,153,186, 47,166,206,204,171, 74, 78, + 85, 21,182, 19, 47, 63,228,191,150,187,193,247, 24,211,107,240,237,213,166,201, + 34, 66,121,191,201,175,127,115,189,191,203,221, 28,227,203,165,130, 53,176, 38, + 3, 97, 96,121,100, 33,151,244,221,116, 11, 15, 9,231,112,190,237,205, 91,127, + 22, 56, 22,161,112,149,115,119,233,145, 8,143, 32,135,112,144, 45, 82, 23, 26, + 67, 50,171,134, 61, 54,204,225,218, 53, 33, 90, 86, 57, 70,163,206, 76, 14, 40, +107,250, 47, 82,202,143, 68,120, 68, 41,166, 80, 72,104,157, 57,131, 28,204,227, +254, 12,176,212,239, 14,139,154,223,213,195, 0,127,111,196, 22,188, 1, 74, 41, +221, 26, 12, 45,194,189, 27,110,106, 4,121, 21, 32,128,194,116, 99, 27,228, 68, +105, 40, 64,207, 93,216,132, 16,175, 39, 52,246, 50, 11,220, 93,107,147,160,180, +251, 57,204,125,152, 64,166, 6,205,152,103, 38,181, 13,178,154, 11, 66, 76,199, +251,113, 24,138, 42, 55, } ; -// ../Source/Template/GB_add_bitmap_noM_23.c: -uint8_t GB_JITpackage_53 [1015] = { - 40,181, 47,253, 96, 33, 13,109, 31, 0,102,232,122, 40,208,176,170, 14,232,147, -180,248,102,126,137,175,235, 54, 53, 57,143,233, 92,107, 16, 38, 45,252,153,247, - 71,170,228,226, 59, 13,172, 89,234, 97,208,203,128, 18,115, 0,106, 0,114, 0, - 3,147, 71,115,217,180,241,148,219,116,163,185,182,134,121, 52,174,157, 81,134, -199,132, 69, 51,160,181,231, 54,238,135,227,204, 97,208,135,119, 93, 60, 36,152, - 68, 38,143, 3, 73,100,114, 41,139, 14, 49,245, 76,203, 7,226, 63, 92,254, 60, - 10,113,184,137, 12, 22,103,231,189, 80, 54,157,105,198, 6,178, 14,111,219, 15, - 7,105,124,167,197,143,135,191, 14,173, 41, 86,215, 41, 4, 19,217,240, 85,105, -167,151, 41, 38, 53,109, 74,235,114, 8, 4,122, 64, 32, 1,175,142, 61, 75,132, -115, 76, 83,229,246,212, 35,175,110, 35, 41,163,121,102, 28,117,151,161, 53,151, -225, 72,122, 25,245,247,219,222,117,215,205, 91,239,251,244, 48,230,181,246, 89, - 22, 24,228, 74, 27,119, 77, 93,194,218,236,203,229, 42,175,195,141,154, 89,135, -216, 21,253, 99, 51,175,189, 67, 22, 75,148,153, 13,102,107,109,163, 0,191,223, -169,190,243,214,181, 58,175,125, 92,238,134,255, 63, 4,113, 64, 17,211, 95, 80, - 36, 19,129, 59, 51,182,184,131,103,174,211,236, 48, 42,149,157,150,241,213, 59, -163, 29,142, 50,227, 75,183,142, 64,198,245,163, 18, 30,184,155,158,154, 97,175, - 46,104,163, 90,189,228,151,165, 37, 41, 52,153,235, 86, 7,164,118,231,121,192, -237,225,157,221,204,176,188,162,107, 50, 31,166,210, 30,106, 88,135, 28,138, 69, -183,164, 37,102, 24,172, 79,159,156,237,230,171, 75, 28, 72, 35,135, 12,198, 33, - 66, 97,131,145, 80,144, 88,244,141,250,133,173, 56,102, 5, 16,212, 81, 77,211, - 36,233,136, 51, 55,198, 57,164,143,113,214, 41, 74,209, 55,250, 41,218,138, 83, - 90,161,254,234,209,222, 47,103,237, 57,151, 59, 80,226,180,103,222, 76, 93,224, -156, 75, 50, 89, 13,132, 16,194, 67, 25,173, 70, 66, 40, 92, 58,135, 92,140, 30, -229,130,117,121,117, 14,166, 92,150, 58,144, 18,197,111,223,115,115,249, 90,165, - 91,133,186,124, 5, 71, 69,163,148, 41,170, 31,205,217,181,184, 36,129, 25,245, -102,253,104, 49,128,225,168,225,173, 50, 52, 34, 34, 73, 82,144,194,178, 6, 32, -132, 24,163,152,217, 60,194, 80, 96, 20,200, 56, 68,224,136, 20, 32, 35,164,130, -137, 68, 2,177,140,210, 20,180,216, 41,107,210,231, 33, 87,146,194, 45, 15, 85, - 13, 12,153, 13, 46, 13,166,147,125,162, 92, 71,211,209, 29,254, 41, 98, 58, 47, - 53,174,172,194,158, 78,248,189,172,108,112,152,230,183,152, 24, 26, 18,205, 92, -184, 13,223,111, 96,148,170,146,230,174, 93, 17, 8,159,185,232,201, 81,131, 38, - 41,254, 23, 98,157,148, 76, 38,221,152,242,129,162,199, 10, 0, 26,135,177, 1, - 23,247,231,156,219,156, 98,252,136,246, 86, 91, 21, 9,217, 41,120,217,181,125, - 27,211,191,219, 51,132, 68, 27,120,118,212, 14,207,151,154,161, 24, 59,128,170, - 81,199,253,121,229, 57, 7,135,152, 36, 87, 48, 23,195,234, 98,179,218,171,129, -226, 39, 19,122,130, 64, 7, 30,218,196, 23, 58, 0, 78, 21,224,255,173, 58, 76, - 70,190,139,216, 3, 73,155,102, 52,185,223, 57,208,165,128,203,146,203, 30, 11, -236, 60,190,214,222, 5,230,245,115,174, 56,202, 65,121,192, 97, 15, 55, 70, 94, -205,241,109,232,153, 84, 38, 11,150, 73,112,115,186, 83, 72, 90, 84,225,243,181, - 82, 0,206,210,134, 31, 20, 84, 53, 15,187,192, 54,203,122, 16,172, 80,176, 89, - 97, 77,163,141,221,226, 23, 38,208, 51,229, 66, 95,210,227,114,250,159, 77,212, -248,131,144, 5, 5, 0, 95,110,115,217, 17,160,149,227, 66, 0,209, 50, 11, 0, - 37, 13,250, 35,217, 7, 9,180,255,110,205, 89,255, 28,224, 57,223, 41, 31,142, -129,116,162,100, 31,189,128,236, 47,242,210, 51,236,120,122,253, 72,228,230,242, - 56,174,129,105, 73,248,175,197, 55,173, 45,231,230,157,243,243,237,115,167, 43, -137,107,229,157,223,150, 52, 11, 53,143, 31, 47,164, 81, 16,138,100, 37,170,253, - 47,150, 10,228,165, 81,165,148,191, 41,152,131,186, 76,246, 2,225,163, 87, 35, -135, 11,191,136,238, 71, 73,197, 17, 66,218,217,237,227,200,160,246,105,234, 24, -142, 39,161,170, 18,241,148, 82,178, 82, 16,237,206,188,251, 90, 18, 15, 83, 11, -175,132,252, 48,113, 78,170,204, 92,131, 6,151, 39,229,166,217,212, 96, 26, 42, -218,129,105,100,191,240,191,173, 67,109, 85,162,244, 0,242, +// ../Source/JitKernels/GB_jit_kernel_colscale.c: +uint8_t GB_JITpackage_15 [284] = { + 40,181, 47,253, 96,116, 1,149, 8, 0, 86, 17, 58, 21, 16,253, 42,159,251,225, + 11,144,251,177, 38, 53,212,211,160, 71, 4, 0, 16, 56, 8, 51, 0, 52, 0, 52, + 0,159,246,223, 77,225,149,246,165,159, 99,212,231,174,188,214,174,253,122,124, +157,235,242,245, 85, 33, 69,148,127, 76,228,187,165, 73,187,177, 73,186, 31,158, +127, 75,214, 43, 75, 78,151, 79, 18,224, 72,146,116,173,166,235,231, 93, 87,242, + 70,195, 40,204,225, 44, 10,227, 9,115,240, 6,189,222,101,229, 17,201,231,106, + 29,191,107,232, 13, 80,218, 38, 85, 46,231,235,249,244, 92,202,224,175, 87, 27, + 4,230,245, 13,224,214, 81,228,102,113,159,165,249, 77,154,186,237, 34, 67, 44, + 35,167, 11, 80, 16,230,248,170, 89,202,146,127,230,191,162,107, 13,255, 19, 59, + 62, 13,127,115,221,142,177,242,144,243,223,243,167,255,231, 3, 0,176, 3,144, + 39, 64,208,162, 40, 17, 36,167, 25,158,237,250,207,129,137,252,186,116,229,247, +215,100,224,255,105,187, 38,188, 10,222,123, 15,232, 0,228,137,193,119, 97,247, +121,164,181, 73, 84, 13, 0, 70,128,146,244,166,248, 34, 64, 0, 22,128,144,198, +200,117,154,152, 76, 13,154, 63,207, 76,209,230,177,213,188, 99, 80,102,184, 0, + 81, 81, 48, 4, } ; -// ../Source/Template/GB_add_bitmap_template.c: -uint8_t GB_JITpackage_54 [730] = { - 40,181, 47,253, 96, 8, 8,133, 22, 0,118, 39,118, 40,208,208, 88, 7, 52, 58, -177,179,237,158,184,159, 33, 99, 53, 92,195,156,189,136,209,149, 34,124,198,204, - 78, 68, 63,120, 64,181,116, 25,165, 30,120,192,242, 2,112, 0, 98, 0,108, 0, -191, 68,146,105, 18,225,236, 57, 90,157, 82,185,177,190,146, 97, 67,132,173,228, -215,154,200, 4, 6, 98,130, 12,170,108,185,115,123,179,138,238, 60,198,234, 18, -193, 68, 50,137, 28, 12, 72, 38,135,188,199, 37,219, 32,135,249, 84, 61,148,221, -169,117,196, 37, 79,165,177,100,212,213, 5, 10,219,234,168,135,111,111,158,232, - 10,150, 35,225,114,201, 34, 80, 85, 46,167,240,117,145,106,124, 47,234,180,219, -159, 11, 66,119, 89, 22, 78, 81, 81,132,162, 2,135,108, 45,191,231,126,167,188, - 88, 46, 85,199,230, 45,111,209,129, 32, 71, 40, 93, 6,177, 0, 36,235, 83, 62, -110,217,186,247, 9, 18,157,214,151,206,135, 98,116,175,239,188, 84, 11, 89,119, -174,238, 22,206,236,178,246, 24,221,227,161, 72,169,251,188, 87,114,191,198, 48, -134,210, 93,226,186,221,183,213,107, 31,186,109, 31,146,238, 12,114,217,165,123, -183,110, 97,157,118,206, 34,254,201,118,175,243,213,116, 37, 91,174,212,202,120, -240, 84,214,197,217,104, 50,155, 78,230,225,138,104,112,192, 24, 98,237, 64,184, -228,149,219,232, 64,242,253, 94, 5, 6, 87,246,180,209,221,150,248,185, 72, 35, -178,177,134, 83, 59,127, 46,191, 27,149, 77,225, 96, 56, 17,167,168,255,143,162, -140, 40,154, 56, 54,246, 10,217,112,139, 79,182,227,156,221,135, 62,135, 44, 27, - 99,232,192, 96,170,139,227,105,200, 94,103, 23,178, 47, 77,219, 88, 7, 81,180, - 17, 33, 60,133,200,229, 87,157,151,237,235, 16,141, 70, 98,243, 74,229, 86, 20, - 97, 13,229,246, 57,172,243, 18,219,203,162, 88,206, 95,235, 56,254,186, 95,202, - 15,131, 47, 93,167,213,137, 89,162,163, 36,200, 87,178,198,145,106,243, 85,166, -161,140, 98, 72, 39, 3, 65,193,112, 13,141,103, 60,157, 10,194,115, 89,143, 99, - 29,121, 35,224, 77,214,148, 1,231, 24, 55, 76,190,122,229,236, 54,111,178, 59, - 63,175,243,113, 75, 96, 32, 32,132, 16,162, 20,218, 13, 44, 67, 84, 23, 49,219, -182, 64, 10, 11, 90,151,186,151, 99,154, 13, 10,162, 75,192,106,130, 8, 40,143, -177,129,170, 3, 16,133,107,244,250, 34, 8, 44, 0,103, 9, 5, 8,130,228,110, - 1, 0,204, 5, 49, 31,205, 29, 24, 68, 39, 1,242,201,197,129, 17,144, 6,221, - 90,199,172,227,108,229,160, 30,131, 12,175,160,122,192, 7,130,236, 19, 54,108, -238, 34, 24, 44,232,155,176,149, 8,123,130,249, 5,124, 22,137, 22,100, 87, 43, - 69,194, 13, 9,176, 40,128, 64,108,225, 86, 20,206,200,113,145, 11,146, 74, 42, -163,128,164,240,152,135, 35, 64, 91, 33, 67,198, 64,132,127, 56, 87,205,225,150, -171, 44, 35, 8,112,144,161, 32, 18, 48, 27,141,180,138,210,200,139, 13,152,201, - 9,217,197, 7, 45,239, 93, 71, 69, 98, 34,225,224,129, 89,146, 26, 96,223,250, -121, 25,220, 98, 93, 55, 1, 17,172, 64, 74,227, 49, 32, 25, 27,218,210, 92,172, - 97,228, 61,126, 27,112,191,178,139,220,188,105,106,158,153,108, 91,188,154, 43, -128, 24,154, 88,192, 37, 43,138, 2, 55, +// ../Source/JitKernels/GB_jit_kernel_concat_bitmap.c: +uint8_t GB_JITpackage_16 [437] = { + 40,181, 47,253, 96,223, 2, 93, 13, 0,166, 25, 82, 33, 0,181, 30,214,170, 36, +224,202, 10, 12,199,205, 56,127, 40, 8, 73,148,196,160,183,116, 21, 3,232,184, + 83,254,255,239,245, 33, 4, 70, 0, 73, 0, 75, 0, 78,217,201,101,120, 65,149, +225,130,233,163,205, 6, 61,151,115,185, 77,237,218,228,170, 51,196,135,186,230, +237,247,253,108, 17,115,209,213,187,122,220,171,131, 27, 95,159,142,223, 17,185, +122,246,205,208, 93, 45, 6, 45,253, 30,235,239,208,125, 57,244,202,220,178, 98, +101, 89, 1,225,165, 83,206, 44,177, 60, 97, 40, 19,236,241,245,190, 11, 68,138, +115,235,228, 25,116,133,115,174,141, 3, 65,161,250,141,173,121, 58, 66,255,245, +238,198,223, 57,170, 15,241,219,171, 85, 23, 6, 69,208, 61, 72,127,248, 21, 15, +247, 70,115, 43,254,125,211,165,161, 48, 40, 84, 7,194,160, 16, 29, 91, 51,223, + 87,173,239,215,184,101, 53, 34, 14, 78, 98,169,120,223,121, 55,224,238, 30, 73, + 49,225,212,228, 19,110, 82,161, 80,202,140,112,142,139,114, 19,147,104, 13, 73, +165, 1,113,109, 94, 19, 45,163,156,227, 17, 35, 53,114,201,113,121, 93,186,156, +211, 93,138,176,201, 41, 19,137,133, 2, 3, 49,150, 98,194,169,109,107, 96,152, +101,163,151,206, 38,199,250,179, 95, 3,172,224,203,158,223,244,202, 0,254,221, +231,179, 56,122,183,195, 31,240,232, 38,252,120, 52,131,153,118,244,135, 18,190, +168,232,200,227, 10,247,232,219,251,133,180,243,238, 30, 67, 12,222,109,241,199, +243, 38, 32, 64, 68, 32,146, 33, 61, 78,194,112, 64, 65, 26,137, 20,230,154, 49, +195,103, 65, 1, 8, 68,135,254,195,137, 0, 18, 16,113, 52, 64,104, 36, 8,108, +142,115, 68, 9, 48,138,110,174,109,134,208,251, 91,168, 52,174,115,132, 13, 0, +227,217,108, 2, 29,240,220,176, 90, 7, 61,118, 44,123, 12,218,166,233, 60, 51, +121,155,166,171,245,204, 17, 2, 11, 67, 3, 56,226,225, 41,234,134, } ; -// ../Source/Template/GB_add_full_30.c: -uint8_t GB_JITpackage_55 [360] = { - 40,181, 47,253, 96,143, 2,245, 10, 0,246,212, 66, 33, 0,211, 28, 3,252,221, - 12,211,251, 17,189,170,182,177,209,110, 12,169, 23,232,203,178,125,135,104, 22, -133, 89,250,127,175, 15, 33, 57, 0, 58, 0, 55, 0, 87, 83, 21, 23,204,115, 56, -240,235,238,228, 18,155, 14,202,229,170, 25, 6,187,117,205,152, 5,111,136,197, - 91, 93, 79,191,121,245,243,242,250,129, 74, 51,113,221, 80, 17, 50,140,195, 75, -182,109, 53,163,140, 83, 84,156, 40, 42,160,125,252,255, 99,244,196, 74, 96, 77, -150,211,106,158, 55,104,123, 47, 23,244,236,214,152,236,246,172,118, 29, 83, 69, - 17, 17,108, 86,163,237,182,146,111,144,195, 92,201, 49,158,151, 4,171,178,166, -194,160,178, 30,105,208,229, 14,136,231, 31, 94, 61,241, 12,253,143,145,118,193, - 10,110,200,226,112,179,156,182, 31,121,217, 5,237,173, 90,205,129, 89, 23,122, -215,223,229,216, 98, 92,117,205,207,221,247,218, 97,170,206, 0,140,171,156,151, -219,199, 5, 49,126,226,135,242, 44,214, 60,240,124, 65,143, 64, 22, 88,131,178, -160,212, 2,157, 30, 30,125,251,102,243, 50, 95,110,230,101,230, 86,232, 51, 83, - 76,136, 35,163, 12,122,105, 62,241, 40, 35, 47,244,235, 30, 73,234,120,218, 3, - 32, 32,112, 34, 19,164,235, 1, 94, 2,223,109,198,216, 22, 27, 2, 28, 12, 72, - 58,135, 17,228,151,211,149, 53,104,140, 34, 59,251, 25,100,195, 99,136, 53, 91, -168,173,193,187,170, 36,216,235, 64, 33,115,197,168, 76,146,207, 53,163,112, 65, -114, 69,205,160,233,121,102, 90,219,128,171,185, 0,100, 18,175, 90,209,233, 6, - +// ../Source/JitKernels/GB_jit_kernel_concat_full.c: +uint8_t GB_JITpackage_17 [338] = { + 40,181, 47,253, 96,213, 1, 69, 10, 0, 22,212, 65, 33, 0,211, 60,238,110, 1, + 62, 58,197, 99, 92,172, 55,218, 59, 82, 80, 3,202,176,169,248, 13,119, 87, 71, +182,255,255,123,253, 11, 1, 55, 0, 57, 0, 56, 0, 25,220,185,228, 38,102, 89, + 64,171, 47,195,135,218,130,220,111,172,225, 34,117, 14,214,219,102,190,157,177, + 79,119,235,249,221,224,121, 26, 74,221,246,230,239, 86,239,179,126, 76,221,248, + 82,173,203, 41, 42, 74, 20, 21,130,169,146,222,114, 45, 56,221,160, 31, 83,240, +206, 63, 97, 72, 31,230,191, 24,147, 34, 9,109,154,252, 70,127,248,155,135,219, + 82,193,219,116, 73,168, 4,149, 84, 24, 8, 42,143, 46,228, 50,196, 27,155,240, +105,122,199,178,191,155,194,225,216,180, 50,236,170, 29,163, 17, 99,212,113,121, +113,137, 93,186,156,211, 93,114, 40,228, 90,246,128, 68, 95,136,235,148, 19,148, + 20,132, 36, 90, 70, 63, 99,202, 79, 2, 49,186, 96, 11, 57,248, 57,194, 47,248, +198, 49,126,226,193, 35,142, 83, 80, 10,225,170,165, 47,200,179,214,236,215,128, + 59,121, 96,230,119, 5,248, 79, 52,222,205, 56,224,238, 30, 61,241,224, 17,228, + 89,151,109, 90,197, 48,200,162,118,147, 62, 50, 90, 49,197, 35, 23, 0, 76, 9, + 3,128, 2, 34, 12, 16,128,181, 33,164, 33,251, 58, 35,102, 54,155, 2, 58,212, +185, 21,171,245,132, 30, 39, 22, 63, 10,218,166,249,243, 76,161, 93, 9, 0, 29, + 11,130,115, 12, 58, 49,223,220, 92,199, 11,240, 48, 7,167, 40, 24, 2, } ; -// ../Source/Template/GB_add_full_31.c: -uint8_t GB_JITpackage_56 [466] = { - 40,181, 47,253, 96,125, 4, 69, 14, 0, 54,152, 76, 33, 0,181,142, 1,106, 66, - 73, 74,224,238, 46, 83,220, 88,218, 9, 16, 29,140, 24, 98,150,168,230, 40, 48, - 58,204,210,255,187, 63,188, 66, 0, 68, 0, 64, 0,191,180, 21,209,198, 7,242, - 36,112,143,161,189,252,226,100, 68, 3, 49,205,143, 68,213,153, 98,174,110, 27, -226, 40, 76,195,109, 61,215,246,218,175,215, 76, 47,239,137,244,219, 21,154, 64, - 50,182, 39, 10,135,121,111,232,155,158, 71,167,246,120,150, 81, 88,150, 5,199, -225,120, 26,126,104,198, 0,133, 55,130,187, 74,254,255, 20,101,162, 8, 3, 3, - 86,193,142, 98,249, 68,174,246,179, 91,172, 30, 4,171, 90,172,157,141, 96,154, - 70,101,224, 85, 81,174,186, 90,174, 55,248,177,150,223, 43,127, 29, 12, 4, 3, -134, 40, 16, 12,183,186, 42, 17,237, 2,121,198, 45,208,101,171,111,239, 96,206, - 61, 90,245,207,158, 50, 9, 4, 37,177,251,226,248,138, 19,206, 56,174,254, 83, - 86,103, 55,221,186,170, 55,228, 85,176,211,183,196,185, 85,218,163, 53,131,123, -134, 33,241,121,252,126,235,189, 52, 83, 28, 20,117,250,172, 39,110,115,220, 83, -206, 77,133,178,101,122,105,167, 39,221,213, 51,161, 64, 38, 24, 14,242, 89, 64, -213,183,158, 50,177, 94,209, 3,199, 91,245, 10,197,193, 65, 50, 14, 77,243, 84, -215, 20,183, 70,109,167,252,133,127,141,228, 47,144,165,213,229,108, 72, 74, 61, - 32, 80,136,144,148,157, 7,177, 0, 76,225,200, 97, 28,178,115, 96, 74,225,162, -209,232, 24,192, 30,194,192, 10, 56,195,193,175, 12,232,129, 13, 92, 0,185,225, - 0, 69,144, 11, 21, 1, 26,173,193,162, 19,144, 97,173, 62,248,244, 96,122,192, - 89, 55, 81,113,194, 57,208,183, 95,204, 39, 49,254,130,165, 1, 81, 15,200, 96, -101,158,120, 95, 23, 11,220, 56,232, 24,125,246,139,230, 48,234, 66,190,161,251, - 64, 36,143,161,193,250, 88,232,110,131,145, 85,161,181, 31, 12, 13,112, 39,202, - 14,169, 52,163,236,130,228,128,154, 65,243,121,102,106, 91,227,213,114, 70, 68, -245,239,250, 20,189, 67, +// ../Source/JitKernels/GB_jit_kernel_concat_sparse.c: +uint8_t GB_JITpackage_18 [338] = { + 40,181, 47,253, 96,216, 1, 69, 10, 0,214, 19, 65, 33, 16,209, 60,230,145, 11, +255,252,199,116, 19, 23,100,157,136, 16, 87, 27,187,143, 61, 76, 82,211, 23, 77, +117, 68, 0, 0, 85, 53, 3, 54, 0, 56, 0, 56, 0, 59,172,224,205,103,165, 23, +229,137, 87, 43,234,111,108,169,178,114, 12,214,251, 86,220,175,135, 59, 99,167, +158,223, 13, 63,234, 43,142,118, 95, 46,135,156, 5, 63,235,167,216,141, 63, 75, + 41, 92,146, 36, 36, 73, 1, 19,244, 30,119, 69,234, 6,253, 88,130,119,254,110, + 1,253,152,159,195, 23, 4, 73,100, 81,247, 23,253,227,107, 62,110,111,130, 53, + 7, 65,234,147, 48, 9, 38,168, 48, 16, 76,254,112,142,207, 17, 95,110,194, 35, +234, 25, 47,126, 81, 10,187, 20,118, 91, 48,164,124, 50, 62, 63,159,216,167, 79, + 74,221, 39,166,114, 60,195, 28,143, 39, 28,177,165,147,138,179, 18,157, 72,134, + 85,159,177,228,187,128,124, 62,124, 29, 23, 67, 71,248,135, 57, 41,136, 2, 82, +110,228,193,159, 90,173,170,122, 84, 75,233,172, 45,251, 53,128,139, 64,177,242, +219, 2,252, 59, 11,200,101, 28,112,119,151, 26,121,240,199,113,108,195,180,204, + 90, 85,163, 89,181, 27,173, 28,151,229,208,172, 70, 24, 0, 75,128,226,212, 53, + 0, 80, 65,196, 1, 2,176, 90,132, 52,174,239, 17,182, 0, 96,204,108, 54, 5, +116,168,115, 43, 86,235, 9, 61, 78, 44,123, 20,180, 77,243,231,129, 41,154, 81, + 24,130,198,172,229, 25,131, 58, 80, 24,122, 1,142,204,225, 41, 10,134, } ; -// ../Source/Template/GB_add_full_32.c: -uint8_t GB_JITpackage_57 [784] = { - 40,181, 47,253, 96,252, 7, 53, 24, 0,134,100,110, 33,224, 90, 23, 3,212, 55, - 98,221,119,225, 94,213,220, 59, 84,155,121, 81,254, 23, 3,155,192, 90, 1, 5, - 29,195, 24,131, 48,194, 11,103, 0,101, 0, 99, 0,133,171,199,235, 97, 75, 1, - 20,209, 24,190,171, 42,175,190,155,235, 29,150,240,230,162,200,125, 46, 20, 8, - 69,193,145, 64, 40, 46,240,178, 79,141, 85, 54,114, 3,119, 86,184, 73, 20,238, -124,114, 56, 11, 13,179, 45, 39, 15,206,221, 56,197,193,202,155, 89,225,225,234, -210,102,125,141, 79, 63,127, 75,123,238,223,104,223,125, 82, 2,183,117,255, 67, -177,168,162,152, 2,235,247,217, 74, 39, 63, 28,176,194,225, 16,166,137,179,119, -119, 97, 50, 21,140, 71,194,169,124, 36,149, 83, 1,177,139, 64,104,141,222, 33, -207,215,142,248,246,156,253,199, 4, 30,222,118,235,236,138,169,239,134,158,190, - 96,172, 93,166, 63,123,203,112, 87, 84,106,124, 73,130, 23,175, 40,218,210,230, -103, 20,121,139, 42,217, 50, 3, 94,146,215, 62, 50,220,247,242,255,199, 48, 23, -134, 48, 40, 10, 55,244,108,230,254, 40, 47, 6,241, 30,239, 87, 9, 84,187, 98, - 80,218,173,179, 62,105,187,199, 74, 79,176,162,246,210,136,235,233, 86,250,237, -215,195,162,166,117,235, 18,131,167,193,119,101, 52,246,136,191,245, 72,122, 24, -136,191,177,171,228,174, 92, 13,105, 50,221,213,226,125, 29,198, 43,170, 30,120, -254, 44,173,104, 61, 93,187,236,154,140,118, 1,169,113,229, 62,243,231,138,251, - 52, 97,155,157,171, 17, 46, 99,177,251,146, 78,224,190, 93, 16,216, 11,123,153, - 62, 49,165,164,227, 19,182,211, 44, 58,198, 16,237,223, 78,115, 73,110,239,170, - 30,238,211, 20,152,174,202,150, 91,251,224,166, 46, 39, 8, 89, 51,231,156,243, - 27,239,103,165, 57, 59,167,169, 29,201,228,244, 25,210,236,180, 82,232,228,219, - 77, 26,135, 91,112,154,143,140, 30, 36,191,111,184,255,141, 24,132,252,116,237, -215, 62, 18,125, 59,228,195,137,233, 97,148, 29, 89, 95,128,141,168,177, 41, 67, - 68, 34, 34, 90, 80, 82,144, 66, 26, 3, 48,132, 32, 83,102,230, 1, 98,152,112, - 20,101, 64,138, 96, 98, 4, 22, 5, 35, 83, 25, 41,163,164,164,232, 1,145, 64, - 89,129,123,161,172,110, 74, 12,184, 13,189, 4, 23, 36,210,244,101, 68, 36, 68, - 1,165,227, 78,231, 1,240, 5, 48,101,108,197,146, 83,246,109,125,126, 62,185, - 89, 79,249,188, 66,179, 39,178, 7,172, 26, 60,183,223, 79,101,201,143, 54, 6, -159, 21,232, 2,131, 56,141,165, 20,104, 96,126,127, 76, 20,144,253, 78,102, 82, - 36, 69, 0,162, 26,202,253,218, 58, 3,217,152, 10,236, 39,204, 8, 58,235, 34, - 71, 35,159,223, 14,242, 75,238,114,108, 61,137,104,150,135,155, 43,151, 7, 30, - 9,230,237, 18, 88, 50, 81,168, 62, 64, 99, 24,248, 84,209,146,146,203,235,157, - 70,248,100, 0, 78, 61,183,207,249, 14, 20, 25, 20,226,124,142,132, 30,104,249, - 74, 72,252, 31, 41,120, 69,166, 71,134,188, 62,229, 14,185, 80,101,108, 29,184, - 15, 60,212, 74,168, 6,136,144,215, 64, 33, 92,125,111,112, 20, 18, 5, 71, 77, -181,119,129,239, 63,165,149,229,168,178, 43,246,185,126,183,212,158,109,188,142, - 52,235,212,191,201,237, 37, 76,173, 18,193,137,183,214,121, 39,204,141,246,173, -122, 66, 31, 41,204,172, 54,188,100,130,164,173, 90,229, 14,106, 31, 96, 33, 40, -205,156, 28,194,230,160,201,254, 96,210, 74, 5,166,176, 19,124, 50,249, 0,230, -149,210,128, 19, +// ../Source/JitKernels/GB_jit_kernel_convert_s2b.c: +uint8_t GB_JITpackage_19 [335] = { + 40,181, 47,253, 96,206, 1, 45, 10, 0,198, 83, 65, 33, 16,211, 54,230,159,197, +126, 20,224,167,145, 8,166,205, 0,224, 93,178, 13,160,170, 37, 84, 45,226,232, + 30, 17, 1, 0,168,210, 25, 55, 0, 55, 0, 55, 0, 29,112,147, 24,220, 57,229, + 42,102,129,217,211, 11, 3,247, 27,103,184,153, 61,204,198, 20, 39,183,127,169, +189, 92,186, 27,238, 68,169, 74,187,245,107, 70,242, 90,241, 71,253, 23,187,113, +104,173,133, 83,212,148, 40, 42, 83, 37, 61,120,189, 92,221,160, 31, 87,240, 30, +255, 99, 72, 95,142,127, 49, 38, 73, 20,218,244,189, 70,127,249,155,151, 27,180, +224,205, 69,177, 58, 37, 84,130, 74, 42, 12, 4,149, 71, 23,114, 90, 98,141,167, +240,169,122, 88,181, 50,108, 97, 59, 70, 99,206,168,227, 52,116,138,157,146, 37, +182,213,105,118,119,215,178, 7, 36,202,148, 83, 51,221,252,200,169,208, 68,203, + 18, 63,226,202,127,129, 25,133,216,131, 60,147,142,240, 16,223, 41, 8,115,126, +230,193, 35,142,187, 18, 9, 8,103, 45, 61,234,204,126, 13,184,211,111, 79,204, +152,223, 22,224,255,101,196, 59,226,128,187,251,244,204,131, 71,144,103, 93,182, +105,214,170, 56,219,109, 87,228,129, 93,143,237,114,120, 22, 0, 73,128,194,212, +205, 28,194, 0, 1, 88, 27, 66, 26,203,247, 88, 99, 0, 37,102,230, 71, 5,240, + 79, 56,159,151,245,204,199,211, 30,202,168,183,181,196,166,105, 67,130, 41, 90, +116, 67,202, 97, 1,224, 13,131, 66,100,186, 68, 81,224, 6, } ; -// ../Source/Template/GB_add_full_33.c: -uint8_t GB_JITpackage_58 [467] = { - 40,181, 47,253, 96,128, 4, 77, 14, 0,118, 24, 77, 33, 0,181,142, 1,106,162, -134, 21, 44,222,168, 50, 88,220,147, 1, 16,141, 12, 90,165,150,168,230, 40, 48, - 58,204,210,255,187, 63,188, 66, 0, 69, 0, 65, 0,191,246, 21,213,198, 7,242, -164,111, 20,193,123,249,181,201,200,252,114,213,143,132,221,186,230,205,142, 55, -180, 81,185,130,227,245,124,223,203, 95,183,186,126,190, 11,235,181, 43,166, 64, - 50,180, 63,113, 56, 80,140, 67, 30,237,186, 74,231,227, 89, 70, 97, 89, 22,249, - 25, 20, 95,193, 79,213, 25,160,232,196,111,180,146,255, 63, 69,153, 40,194,192, -128,217,143,171, 89, 62,161,237,245,238, 24,218, 14,130,217, 29, 90,238, 70, 48, - 77,163, 50,232,172, 72,219,109, 45,223,227,247,185,150, 99, 44,127, 29, 12, 4, - 3,134, 40, 16, 12,183,184, 42,146, 18,153, 23,200, 51,110,129,174, 91, 93,123, - 39,115,238,145,213,189,123,202, 36, 16,148, 66,238,139,231, 43, 78, 56,227,185, -250, 79, 89,220, 29,235,184, 43,139, 67,157,253,184,125, 43,164, 90,181,187,106, -245, 55, 82, 48, 20, 94,139,222,177,197,184,234, 26, 20,117,242,110, 23,106, 84, - 28,233,164,155, 10, 69,251,212, 21, 87,110,211,250,101, 92, 39, 20,200, 4,179, - 65,188, 11,176, 27,219, 83, 22, 90, 44,122,224, 89,171, 94,161, 56, 54, 72,198, - 49,167,167,250, 84,220, 18,247,165,242, 87,254, 53,146,191, 64,183, 86,151,180, - 17, 60, 32, 80,134,144,152,153, 7, 73, 0,168,230,200,129, 53, 88, 5, 39,184, -126,250,130,105,101,162, 64, 2,105, 92, 0,192, 12,248,119, 43,113,193, 28, 53, -248,158, 8,110, 0, 70, 89,213, 96, 14,139, 85, 64, 40,180,202,193,231, 5,115, - 7,156,113,147, 21, 39,144,163,125,251,197, 92,137,177, 23,172, 13,216,122, 64, -134,149,121,249,157, 93, 44,112,226, 0, 99,244,217, 47,152,195,175, 11,226,134, - 54, 3,161, 60,134, 6,235, 99,161,186, 13,126, 86,117,107, 63, 56, 26,231, 78, -180, 24, 84, 9, 70, 57, 3,201, 1, 53,131, 38,230,153,233, 54,199, 87,203, 27, - 65, 5,176,181, 40, 90,220, +// ../Source/JitKernels/GB_jit_kernel_emult_02.c: +uint8_t GB_JITpackage_20 [271] = { + 40,181, 47,253, 96, 97, 1, 45, 8, 0, 6,144, 55, 33, 16,241, 54,150, 46, 98, +178,161,216,199,117, 98,249, 20, 72, 21,123, 4,226,228,191,236, 72,132,112, 52, + 30, 51, 2, 0, 80, 5, 51, 45, 0, 46, 0, 46, 0, 26,171,158,212,222,200,253, +206, 37, 55, 93,103, 40, 30, 93, 1,181,136,132, 35,112,176,188,250,104,165,240, + 14, 75,204,227,240, 69,253, 23,188,179, 5, 95,204,167,105, 74,211, 20, 10, 8, +157,188, 70, 63,249,155,147, 27,172,228,205,195,208,122, 68,168, 84,149, 10, 3, +170, 58,244, 61, 30,145, 89,227, 41,156, 90,223,128, 59,131,201,157, 71,156,205, + 46, 56,122, 1, 16, 92, 41,220,101, 17,199,133,179,235,177, 93, 13,207,236,213, + 50, 12,119, 11, 6,190,216,164,104,149, 30,252,188,209,122,165, 63, 83,242, 22, +127,178,144,158, 20,255,203,153, 36, 9,115,118,166,193, 33,142,187, 44, 43,194, +225,171,177,199, 69, 93,238,215,128,143,254,246,194, 17,243, 27, 3,252, 39,101, +248,137, 57,224,238, 62, 57,211,224,208,227, 90,167,109, 1, 12, 0, 73, 69,206, + 46, 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, + 91,205, 21, 6, 49,255,124,181,162,192, 13, } ; -// ../Source/Template/GB_add_full_34.c: -uint8_t GB_JITpackage_59 [793] = { - 40,181, 47,253, 96,255, 7,125, 24, 0, 22,228,109, 40,224,176, 88, 7,248,157, -220,153,122,131,216, 76, 64, 6, 11,134, 41,119,105, 46,152,247,217,218, 79, 62, -167,183,121,246,197,147, 34,101, 48,195, 48,140, 23, 2,101, 0, 99, 0, 97, 0, -141,107, 95,147,225, 49,145,128, 25,144,221,185,141,251,225, 56,103, 24,243,225, -148,190,187, 2, 73, 68,242, 64, 32,136, 72, 30, 93,208, 29,158,157,152,240,129, -119,141, 44,111,155, 9,113,151,121, 12, 85,102,227,173, 76, 50,157, 39, 39,243, -220,182, 26, 25,164,241,141, 22, 31,207,191,187,247,141,175, 46,107,188,245,169, -146, 30,101,253, 19,131, 2, 72, 41, 7,131, 82, 70, 88, 85, 14,129, 60, 15, 8, - 36,145,198, 77,232,214, 57, 28, 46, 22,135, 8,133,140, 69, 66, 1,102, 44,216, -228,144,164,141,122,157,114,251,233,145, 83,183,208,255, 39,186,102,142, 25, 67, - 77, 57,178,179, 11, 63,170,208,130,176,140,125,179, 12, 55,156,138,157, 54,165, -241, 70,123,187,217, 30, 55, 24,241, 90,128,223,237,147,220,178,220, 13,255,255, -231,225,120, 34, 3,146, 71,103, 87,180,239,147,219, 19,155,185,182,180, 60, 2, - 26,242, 77,151, 8,220,152,177,197, 26,142,185, 74,145, 78,199,168, 19,106, 13, -223,169,247, 53, 41,126, 48,227, 59, 49, 77,224, 25, 26, 28,228, 58,159,113,221, -174, 7,155,178, 90,112,203,176,130, 20,152,139,245,170, 49,237, 14, 72,109,218, -121,192,237,221,141, 52, 94, 24, 90,208, 49,151,233,209,134, 39,180,119, 25,213, -157,102, 94, 64,175, 96,194,187, 48, 84,151, 30, 51, 75,227,169, 7,207,211,209, -161,185,155,127, 47,206, 75,212,159,173,248,156,210,163, 76, 63,245,103,239,150, -175,238, 60,203,154,139, 52,221,137, 55, 79, 23,184,198,178, 4,146,197,184, 63, -206, 57, 39,107,223,193,103, 49, 16, 66,161,162,221,101, 15,250,131, 11, 85,229, -212, 53,120,102, 57,210,220, 4,122,199,182,231,206,242,101,157, 24,229,218,167, -127,186, 69, 5, 69, 78, 2,119,205, 77,172, 1,128,146,168,145, 45, 67, 84, 34, - 34, 82, 80,144, 36,149,198, 48,132, 24,164,174,204, 3,146,128,128,146,101, 36, - 68, 20, 49, 4, 82,129, 76, 77, 82, 82, 30, 37, 69, 15,153, 6, 92,130, 0,143, -192,108,143, 45,156, 82,133,166,196,121,166,132, 6,202,199,166,221,147,237, 11, -181, 2, 5,200,253,154, 7, 88, 11, 32, 32, 99, 56, 54, 42, 43, 85,159, 96,157, -194,122,138,231, 21, 52,171,128,124, 32,180,137,120,253,151,149, 30, 39, 89, 76, - 61, 43,232, 5, 18, 77, 34,165,164,106, 64,226,221, 49, 33, 67, 8,118,164, 9, - 33, 20, 39, 49, 25,170,252, 9,181,199,108, 31, 5,182, 75,210,107, 54,108,110, - 37, 11,185,243,224,146,187,156,236, 65,211,199, 68,106,214, 2,187, 41, 63, 9, - 78, 18, 12,248, 37,235,146, 60, 33,221, 16,238,240,124, 70,233,182,164,220,239, -119,154,206,147, 65,104,253, 97,191,186, 3, 73,100,200,164, 16, 11,134,196,123, -194,243,116,144,212, 64, 34, 80, 17,142,143, 60, 60,232,147,135, 28,101,242,255, - 3,164, 76,130, 99, 22,106, 43,213, 44, 9,234, 26, 62, 12,213,215,228,197, 19, -126,217, 49,201,132,220,140,146, 44,238, 78, 73,201,168,216,232,224, 45,150, 23, -116,207,204,164,209, 73,246,242, 89,210,248,130,114, 79,109, 64,233, 91,228, 12, - 19, 58,140,166, 80,249,132,118, 40,243, 81,249,171,192,123, 73,233,148, 69,107, - 26,218, 96, 40, 84, 71,131, 77,164, 92,130,228,126, 48, 7,205,251,131,105, 43, - 53,157, 34,111,240,137,152, 2,244, 85, 74,187, 77, +// ../Source/JitKernels/GB_jit_kernel_emult_03.c: +uint8_t GB_JITpackage_21 [270] = { + 40,181, 47,253, 96, 97, 1, 37, 8, 0, 6, 80, 55, 33, 16,241, 54,150, 46, 98, +178,161,216,199,117, 66,237,117, 72, 18,123,164,226,228,191,172, 55, 34, 28,141, +199,140, 0, 0, 84,193, 12, 45, 0, 46, 0, 46, 0, 58,179,222,212, 95,217,253, +206,103, 71, 93, 95, 36, 14, 93, 65,181, 7, 68, 35, 96,184,220, 2,107, 53,225, + 61,158,150,199,227,147,250, 43,120,103, 10,190,153, 75, 18,141, 36, 41,137, 71, + 13, 31,163,223,124,206,205, 45, 78, 50,231,227,104, 29,170,168,137,138, 8,131, +137,242, 7,116, 28, 50, 51,230, 75,120,181,158, 17,247,197,146, 61,135, 58,171, + 93,177,252, 2, 15, 92, 77,216,211, 32, 13, 12,107,152,131,195, 24,174,217,187, +105, 25,246, 20, 11,124, 51, 58, 85, 42,122, 17,252, 74,235,150,254, 44,201,155, +252, 80, 17,189, 73, 62,152,181, 40, 18,148,110,104,193,159,174,195,174, 11,210, +225,171, 51,199, 73,125,238,215, 0,176,254,254,198,210,242, 27, 3,252,195,115, + 4,201, 28,112,119,167, 26, 90,240,199,241,205,219,184, 12, 0, 73, 69,206, 46, + 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, 91, +205, 21, 6, 49,255,124,181,162,192, 13, } ; -// ../Source/Template/GB_add_full_template.c: -uint8_t GB_JITpackage_60 [667] = { - 40,181, 47,253, 96,161, 11,141, 20, 0, 22, 93, 89, 32,224, 88,231,136, 23, 28, - 41, 58, 98,173, 45,214,108, 48,104, 98, 82,102,252, 48,229,250,192,247, 12, 74, - 25,204, 48, 8,230,189, 81, 0, 78, 0, 77, 0,109, 26, 27,183,231, 56,123, 35, -235,249,189,243,150, 34,113, 72, 24, 26,136, 67,226, 4,110,112, 11, 91, 19,149, -252,154, 71,121, 57,252,236,231,150, 54, 51,153, 39,210,177,226,104, 60, 82, 81, -235,108, 75,154, 60,182,143,252,145, 21, 38, 36,242, 59, 58,211, 43,126,157,183, -123, 75,221, 86, 43,221,178,202, 49, 76, 26, 48, 44, 53,244,114,127,111,220, 94, -126, 23,254, 34,136,244,203, 86,244, 49,252,216, 34,202,179,240, 91,244,122, 75, -225,233,145, 91,141,237,105,236,193, 51,216,184, 71,241, 57, 4, 53, 39, 97,250, -189,189,207,127,201,195,149, 48,180,199, 81,113,222, 49,182,237,108, 6,187, 90, - 12,141,193,230,108,198, 16,146,116,174, 26,158,137,166,205,199,197,231,109,193, -200,160, 77, 73,137,100,110, 28,205,210,117, 5, 59, 27,144,242, 10,235,195,252, - 17,104, 61,234,189, 49,245,196, 99,235,229, 91, 21,164, 15,177,237, 44, 87,246, -194,231, 33,143, 28,195,254, 95,202,235,210,207,102, 49, 60,234, 94,202,217, 28, -102,241, 67, 97,250, 30,233,113, 82,118,182,130, 29,144, 43, 57,255, 11, 4,157, - 93, 40,230,204, 26,119,182,130,137,198,136,206,212,124, 44, 25,182,207,254,152, -183, 87, 0,238, 58, 40, 0,239, 90,186, 28,120,111,102,205, 91, 17, 66, 38, 16, -156,178,205,193, 83,153,201,198, 51,193,108, 31,203, 37,187, 74,181, 97,187, 77, - 66, 38, 3,218, 28, 2,185,102,240, 79,128,133,160,241,173, 35, 50, 34, 34, 41, - 44, 40, 72,105, 56,112, 70,132,134,174, 27,240,201,202, 13,133,191,244, 56, 61, - 0, 77,107,154,171,193, 38, 32, 77,251, 7,187,210,238, 93, 49,200,116, 26,246, -207,225,158, 51, 44,186, 65,147,136,196,135, 89, 1, 14,146,176, 7,205,113,162, - 33,254,247,126,140, 13,189,153, 45,134,243,178,253,172, 12,140,139, 64,229,200, - 30,188, 57,115,199,136, 33, 22,184, 3,156, 82,226,118, 88, 64,116, 24,155, 15, - 70, 59,118, 54, 0,158,208, 41,183, 5,143, 31,223,221,193,113,255, 16, 51, 54, -249, 70,140,107,104, 58,164,105,142, 57, 83,226, 33, 36, 2,114, 33,236, 76,201, -158,100, 54, 27, 5, 36, 76, 56,100,238,181,166,130, 22, 11,199,176,125,175, 26, -203,224,149, 17,241, 16,217,116,129,154, 1,126, 48,112, 68, 64, 35,178,220,108, - 22, 42,219, 38, 84,123,146,236, 6,164, 50,217,181, 99,234,116,172,245, 5, 8, - 79,210,201,168, 44,108,190,147, 72,148, 29,156,236,210,225,160,112, 44,104, 32, -230, 83,232, 98, 27,203,234,197,143,240,225,174,225, 60,203,214,167,109,129, 13, - 90,152, 54, 12,155,198, 64,123, 92,143, 96, 20,104,234, 78,129,166,115,203, 45, - 84, 64, 75,181, 10, 19, 29,178,176, 93,147,166,206,207, 76,119, 64,173,240,255, -184,252,185,254,138, 2, 61, +// ../Source/JitKernels/GB_jit_kernel_emult_04.c: +uint8_t GB_JITpackage_22 [270] = { + 40,181, 47,253, 96, 97, 1, 37, 8, 0, 6, 80, 55, 33, 16,241, 54,150, 46, 98, +178,161,216,199,117, 66,237,117, 72, 18,123,164,226,228,191,188,160, 96, 56,160, +158, 25, 1, 0,168,130, 25, 45, 0, 46, 0, 46, 0, 58,179,222,212, 95,217,253, +206,103, 71, 93,103, 40, 30, 93, 65,181, 9,197, 35,128,184,220, 2,107,129,194, +123, 60, 49,143,199, 39,245, 95,240,206, 22,124, 51,159, 38, 42, 77, 83,139, 72, + 13, 95,163,223,124,206,205, 45, 86, 50,231,227,104, 61, 34, 84, 84, 37, 25, 6, + 84,229, 16,248,120,100,102,205,183,240,106,125, 35,238, 12, 38,123, 30,117, 86, +187, 98,249, 5, 17, 92,160,176,167, 73, 30, 24,214, 48, 8,135, 57, 92,179,119, +211, 50,236, 49, 26,248,102,148,170,149,244, 34,248,149,214, 45,253,153,146, 55, +249, 33, 67,122,147,124, 48,107,210, 36,148,118,232,193,161,174,195,174, 75,210, +225,171,179,199, 73,125,238,215, 0,176,254,254,198, 18,243, 27, 3,252,195,115, + 4,201, 28,112,119,167, 28,122,112,232,241,205,219,184, 12, 0, 73, 69,206, 46, + 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, 91, +205, 21, 6, 49,255,124,181,162,192, 13, } ; -// ../Source/Template/GB_add_sparse_M_bitmap.c: -uint8_t GB_JITpackage_61 [1607] = { - 40,181, 47,253, 96, 93, 54,237, 49, 0,214,250,170, 40,176, 84, 85, 29,228, 88, -159,138, 65, 82,179, 28,203, 38,133,217,193, 66, 60, 66,189,254,137, 20, 5,120, -173,109, 3,134,230, 39,252, 83,250,211,228,236,120, 6,164, 0,149, 0,159, 0, - 37, 81,100,225,178,197,222, 87, 62, 66, 42,239,151,179,239,102,252, 81, 9,186, - 86,229,169,108,235,175,189,214,185,118,215,212,235,108,246,198, 30,146,221,115, -231,183,224,121, 43,194, 88, 10, 42,205,101,210,131,207,220,158,219,204,181,181, - 78,165,113,237,108, 78, 84, 54, 30, 44, 44, 90,131,110,227,190, 56,206, 28,200, -188, 56,165,240,148, 65, 1,166,160,162, 64,128, 41, 56, 37,147, 78,225, 9,146, - 15,183,192,135,184,108,187,137,113,202, 3, 39, 34,231,201, 11,145,241,116,158, -159, 39,186,117,234,182, 23,226, 46,175, 78,197, 9,110, 28,172, 6,202,135,202, - 72,213, 51,158,236,242,196, 46,235,106,124,165,135, 47, 77,147, 87,132,248,229, - 18, 85, 46,151,159,146,245,220, 32,207, 72,116,172, 11,131, 3, 17, 89,242,231, -229,207,190,218, 87,223,236,155,100, 98,220,217,167,245,125,158,221,205,204,101, - 87, 54,190,188,121,164,111,235,177,166,201,247,109, 14,164,206, 60, 45,245, 70, - 56,191,165,251,178,236,218, 58,127, 59, 75,122,173, 39,245, 60,105, 49,149,207, -248,235,222, 92,126,109, 80,111,243, 90,227,239,141, 29,135,164, 8,149,215,232, -103, 57, 28,130,101,247, 80,149,185,246,204,230,182,245, 67,183, 65,199,243,154, -229,114,119,199,147,195, 0,248,255,248,233,240,155,191, 2,176,143, 83,245,219, - 92,158,253,107,183, 83,148,126,219,255, 71,209, 3,148, 15,239,211,161,215,241, -249,233,115,154,222,112,239,154, 99,190,185,244,140, 37,141, 51,227, 59,183, 11, - 78,236,155,205, 73,234, 71, 94,158, 65, 32,176, 94,178,213,166,160, 15,252,243, - 77, 20,227, 77, 76,142,231, 5, 47, 56, 30, 15,180, 80,176,107, 47,141,107,107, - 82,122,174,141,251,122,199, 61,111,174,125, 74,229, 27, 36,185,119,155, 61,190, - 54,103, 13,162,242,211, 38,104,106,117, 62,127, 24,165, 1,160, 92,155,230,148, -238,212, 8,134, 7, 86,150,128,192, 41,150,119, 10,179,164, 91, 87,220,252, 51, -187, 83,107, 49,205,231,167,231, 43, 51,190, 54,183,188,231,235, 32, 33,215, 25, -121,156, 50,165,174,243, 91,107,245, 11, 16, 9, 81,116, 18, 99,140, 16, 66,152, -109,189, 38,111, 77, 31,127,237,225, 73,140, 49,198, 24, 29, 14, 61, 8, 33,140, - 80,122,211,201,137, 52,200,237,238, 25, 76, 1,140, 12, 48,206, 72,240,110, 44, -179,208, 0, 97,110,153, 27,131, 16,194,248,140, 2,118, 82, 93, 54, 95,241,226, -176,168,168, 30, 79,174,164, 50,195, 23, 69, 69,135, 34, 67,114, 30,149, 84,252, -184, 26, 30, 67,217,235,250,120, 38, 96,162,232,100,154, 42,111,155, 90,165,124, - 78,205, 83, 85, 37,221,162,130,227,233,104,112, 98,140,152,165, 78,141,192, 83, -159, 41,165,195,235, 1, 86, 76, 84,120, 58, 85,213,152,182,230,211,148,157,128, -227,129, 17, 22,215,195, 3, 12,136,159,224, 55,175, 46, 61,198,129,119,168,113, -185, 50, 36, 34, 34, 35, 34, 73, 82,144, 52, 6,145, 12, 65,138, 49,232, 32, 44, - 15,130,112, 68,142, 97, 12, 67, 33, 8, 69, 64, 16, 33,132, 16, 43, 32, 2, 34, - 64, 2, 34, 32,132, 48, 33,137,148, 92, 29, 33,136, 88, 98, 60,251,199,249,188, - 14, 44,133, 76,245, 61, 65, 32,199,201,187, 42,124, 83, 78,136,167,199, 5, 83, - 90, 68,248,210, 84,120,213,182,231,187, 79,252,233,143, 79,203, 29,213,233,143, -202,160,220, 7,222,244,199, 39,154,254,155,251,113, 85,251, 66, 85, 57,134,138, - 66, 72, 67,155,158, 43, 53,164, 90, 82,233,157,132,248, 44,129,157, 96,246,231, -153,100,216, 18, 95,238,252,116, 69, 25, 89,156,111,156, 85, 73,120,242,134, 4, -103,124, 67,233, 99, 8,162,235,202,206,189,226,188,127,135, 82, 17,186, 1, 71, -193,243,255, 43,131,233, 82,240,243, 5, 69, 57,138,244, 27,228, 39, 66,136, 10, - 50,235,112, 8,208,201,220,217,156, 69,159,209,229, 71, 87, 91, 72, 6, 20,105, -193,225,208, 79, 20, 87,198, 2, 33, 10,104,201,184, 89, 44,198,211,163,123, 21, -110,101, 39,249,211,200, 87,200,171,189,120, 94, 34,120,222, 0,250, 49,239,164, -154,106, 58, 36, 0, 4, 59,113,170,169,209,208, 5, 67,252,251, 11,103, 0,131, -179, 51,143,240,135, 18,254, 15, 1,157, 54,108,171,154,116, 1, 95, 27, 68, 7, - 43,206, 81, 24, 10, 60, 46,202, 65, 88,220, 27,236,100,206, 21,113,158,220, 91, -157,143,192,107,231,230,205,125, 19, 40,111,166,255,107, 58,215,174,161,233,250, -242,222,236, 40, 27,225,114, 51, 75,131,205, 43, 79,138,246, 1,164, 80, 14,242, -210,115,120,224,173, 8, 73,221,236, 13,177, 51,118,192,192,204, 53, 96, 95,241, - 14,251, 55, 85,127, 0, 72, 11, 79, 98,168,184, 12,118,227, 27,126, 47, 94,214, -138,160, 30,194,136,250,169, 17,169, 4, 63, 58, 23, 91, 93,114,226,123, 80, 51, -173,152,250, 91, 64,207,248, 38, 74, 55,249,207,229,105, 46, 32, 72,132, 28, 13, -172, 0, 18,208,207, 88,136, 51,124, 91, 29,199, 14, 8,155, 91,234,252,234, 99, -216,253, 89, 39, 8, 8,108, 90, 46, 4, 59, 23,212,206, 45, 78, 9, 16, 18,117, -106, 33,156, 37,141,120,242, 40,137,160,213,166,175,119,188,210,181,164, 81, 63, - 96, 76,135,221,213,168, 35,226,198, 2,171, 41,242, 61,150, 92, 82, 79,246,120, - 50,141,143, 23,198,196, 52, 64,245, 17, 46,133,162,142,106,138, 14, 54,102,120, - 13, 79,136,102,163, 87, 29, 4,124,227,133, 30,138,190,225, 13, 22, 41,114,182, - 90,249,134, 37, 18,254,189, 40, 64, 58, 53,216,174,225,214, 24, 73, 17, 0, 46, - 35, 28,200, 19,154, 43, 72, 33, 10,254,100,152, 48, 19, 45, 95,188,109, 4,220, -236, 46, 69,162, 26, 10,207,180, 64,152,216,167, 2, 50, 19,138,134,192,154,117, - 57,207, 51,199,176, 17, 10,215, 42, 91, 0, 42,156, 85,251,135, 16,248,216,195, -148,152, 36,192, 54,105, 41, 16, 53,209, 78,243,222, 83,155,220,135,127,220, 16, -238,183, 83, 54,228,164,126,170,154,134,244, 76,180,122, 86,166,176, 80,144, 5, -199,235,172,126, 32,218,145,252,135,195, 46,208,128, 69,176,186,116,225,129,222, - 77, 13, 76,109, 8, 38, 52, 2, 11,199,103,147, 17,149, 72,235,171, 91, 43,114, - 90,167,212, 30,176,133,105,168,187, 95,208,212, 11,148, 6,210, 46,230,195,158, -228,236,186,226,231,110, 64,225,145, 13, 27, 4, 55,142, 57,216,162, 2,213, 82, - 0,128, 91,144,226, 82,200,243, 55,233, 32,209, 9,168, 23,226, 27,249,231, 52, - 97, 79,175,249, 33,128,195, 5, 7,125,202,138, 47, 24,163,194,179, 29,144, 31, - 49, 35,244,172, 41,216,185,172, 85, 54, 97, 31, 19, 52, 83, 66, 12, 6,181,133, -124,154, 59, 57,154, 59, 73, 46,152, 53,150, 19,236,108,105, 94,132,193, 71,145, -204,187,199, 61,155, 97, 99,176,202, 20,212,128,242, 62, 31,177, 40, 85,211, 7, - 62, 34, 0,107,141, 94,198,108,183,133, 50,174,248,236,113,181,203, 26,149, 75, -108,206,166, 89,249,131,169, 95,209,120,209, 87, 61, 68,141, 44,219, 60,163, 43, -193,188,127, 95,237, 43, 30, +// ../Source/JitKernels/GB_jit_kernel_emult_08.c: +uint8_t GB_JITpackage_23 [260] = { + 40,181, 47,253, 96, 93, 1,213, 7, 0,194,207, 52, 33, 16,179, 30,150, 12,146, + 15, 40,128,167,156, 7, 17,206,188, 42,154,214, 21,219,173,231,187, 98,223, 46, +252,136, 0, 0,170,106, 6, 49,142, 98,194, 5,214, 98,141,134,197, 94,170, 51, +201, 63, 29,238,215, 0, 44,185,253,157, 11,240,199,132, 30,254,114,192,221, 61, +138, 98,194, 5,146, 83, 54,138, 86,185, 7,235,110,213, 34,193,110,197, 38, 26, + 22,241, 58, 41,165,102,119,123, 64, 46,205,162, 37, 47,234, 59,204,125,166, 35, +244,231, 76,222,223, 99, 30,212,131,223,227, 92,169,139,163, 34, 49, 15,210, 15, +190,230,224,238, 52, 89,115,207,155, 62, 21, 46,235,162, 12, 4,235,114, 1,150, +124, 2, 51,136,115,184,156, 30,234,182,167,147, 55,159,236,172,180,251,112, 58, + 67, 60,168,185,143,253,157, 67, 27, 93,123, 50, 62,209,129,156, 11,134, 36,160, +104, 56, 2,203,131,117,183, 23,118,254,122,255,233,231,220,157, 55,151,102, 94, + 85,145,170,170, 12, 0, 69, 5,207, 46, 34, 4, 96, 1, 8,105,244, 91,167,137, +201,212,160,249,243,204, 20,109, 11, 91,205, 21, 6, 49,255,124,181,162,192, 13, + } ; -// ../Source/Template/GB_add_sparse_M_sparse.c: -uint8_t GB_JITpackage_62 [2495] = { - 40,181, 47,253, 96,125, 47,173, 77, 0,170, 82,244, 14, 40,192, 20,217, 28, 36, -173,112,153,132, 78,254,107,212, 6,235, 0, 32,210,171,103,177, 75,227,173,186, -221, 63,186,114, 94,232,211,167,223, 85, 20, 4, 69, 1, 8,228, 0,225, 0,228, - 0, 20, 91,220,188,112,189, 56,235,163,113,215, 39, 28, 90,221,120,198, 53,130, -226,213, 4,175,205, 89,135,188,185,252,205, 62, 55,198, 66,124,202,101,149, 19, -153, 56, 44, 21,138,162, 38,184,241,145, 57,213,249,207, 30,119,166,246,127,124, - 73,244,129,105,190,250,171, 27,244, 77,251,250,194,220, 82,121,245, 9, 62, 95, - 9, 10,249,171,184,126,206,231,238,232,219,156,200,165,191,250,181,219,193, 48, - 55,254,255, 83, 40, 37, 20, 10,245,107,143,189, 47,165, 24, 80, 7,149,230, 50, - 10,198, 95,110,215,173,230,175,181, 77,165,241,215, 89,141,168, 96,100, 58,148, -214, 33,183,113, 79, 28,103,174,163, 78,188,235,226, 39,132, 3,131,131,202,130, -197,224,224, 81, 6,125,194, 53,132,102, 78,197,127,184,108,189, 74,241,201, 19, - 35, 36, 7,210,251,224,233, 92, 67, 15,229, 54,248,225, 10, 62,175,125,244,214, - 39, 41,197,170, 97, 50, 68, 30,211, 5,178,126,153, 87,227, 75, 65,124,105, 26, -189,228,195, 11, 10, 40,149,130,130,150, 87,213, 53,158, 8,209,185, 50,153, 40, - 16,125, 66,223, 43,213, 73, 62, 15,111,186,246, 83,215,133,219, 47,165, 91,141, -195,219,252,207,237,144, 75, 99,154,189,163, 53,107, 16, 71, 17,195, 38, 38,143, -164, 70, 33, 72,202, 8, 48, 63, 48,240,107, 82, 29,197,108,215,113,154, 81,159, - 92,187, 61, 63,133, 43,166,216, 43, 31,172, 66,255,105,207,184,167,214,152,214, -142, 70, 8, 81, 30,200,175, 30,196, 93,111,254,250, 93, 71, 31, 89,160,139,214, - 89,238, 25,135,222, 49,194, 27,247,103, 39,144,122,185, 98,217,126, 31,205, 46, - 35,213,209, 27,230, 44,188, 25, 99,183,249,243,184,111, 13, 65,250,254,179, 53, - 87,237,179,217, 3, 62, 48,245,254,193,180, 3,222, 28,197,137, 69,250,186, 11, -249,244, 9,156, 87, 71, 62, 24,188,106,248,229, 30,119,184,108,190, 62, 26, 42, -243, 85,117,142,143,141,137,121, 20, 17, 81, 33,241, 10,224, 20, 19, 26,143, 39, - 70, 31,208,102, 7,187,181, 83,232,220, 60,166,111, 47,218,197, 79,125, 62,234, - 61,196,174,125,252,109, 46,215,254,151,193,206, 70,250,249,235,154,213,109,235, -123, 82, 68, 0,253,151,132,156,115, 70,130, 99,105, 60, 87,135,211, 89,189,153, -122,239,190, 92,190, 92, 16,162, 41,103,148,191, 28,108,213,195,130,222,225,104, - 60,155, 11,141,148,152, 29,137,159, 60, 42,205, 68, 78, 4,199,179,217, 90,251, -166,132, 46,107,189, 52,213, 8, 61, 94,155, 40,154, 70,166, 39, 90,179,206,106, - 89, 24,233,146,196,128,185,193,171, 67, 26,141,205, 4,135,194,210, 88, 92,153, -185,241, 92,113, 62,196,137,206,244,248,139,197,162, 89, 46,247,188,148, 50,227, - 91,183, 43,214, 87, 98,227,109,179, 87,140, 34,232,155,109,146,138, 79, 48,205, -249, 73,122,181,160,204,107,111, 78,204,171,231, 75, 51,190, 44,208,186,253,110, -231, 76, 65, 76,214,209, 26, 82,111,198, 97,254, 66,155, 61,171,157,197,188, 15, - 62, 37,165, 75, 27, 4,105,231,143, 94, 26,118,112,249, 95,205, 95,223,226, 79, -209, 3, 20,202, 73, 87, 7, 82, 82, 14,236, 40,118, 98, 93, 54, 95,241,202,232, -112,172,147, 75, 59,154,225,139,230,198, 36, 56, 27,137, 10, 73,178,192,250,234, - 28,150, 37, 73,191,181, 85, 22,134,125,146,152,148, 18,147, 82, 74, 12,147,209, - 39,232, 30,205, 38,162, 51, 55,211,116, 8,107, 34,102, 76, 68,137,141,180,100, -174,163, 94,144, 82, 24,119,247,133, 23,177, 29,174, 17,147, 21,186, 20, 65, 48, -252,176,182,251, 71,134,249, 66,187,209,136,121,135, 95,205, 17,128, 71,245,222, - 89,139, 93, 94,138,181,132,225, 19,234, 16,202, 61,146, 28,224,198,177, 8, 77, - 26,237,140, 65,175,243,149, 96,112,121, 93,112,225,100, 56, 18,206, 93, 72,143, -227, 79,245,116, 59,211,238,211,181, 86,179,214,114,119,116, 84,220,119,218, 54, -212,167,198,247,237,231,208,118, 14,165, 20, 43,203,106, 93,104, 57,252,137, 41, -247,249,173,210,236,153,158,203, 46,109,250,225,182,218,163,107, 55,104,226,198, - 52,111, 10, 60,155,105,253,117, 84,220, 1,130,165,168,226,195,144, 57,132,102, -100, 68, 36, 73,146, 66, 99,194, 40, 4,163, 96, 32,232,114, 10, 31,178,104, 84, - 18,197, 32, 8, 98, 26, 67, 8, 33, 2, 66,144, 64, 68,100, 36, 18, 25, 73, 18, -180,176,205, 1, 27,212, 22,172, 54,146,112, 78, 95,116, 10,157,194, 84,191, 59, - 49, 38,130, 48,127,116, 94, 82,222, 28, 36,130, 49,208, 99, 42,216,224, 13, 81, -138,229, 27, 22,218, 65,138, 46,209,224,173, 37,102,167,127,102,100,214,248,180, - 98,158, 26, 92,238,143,108,149, 18,127,164, 62, 77,117, 38,111,196,127, 64, 81, - 6,244,173, 92,147,172,118, 84,244,203, 18, 40, 38, 3,233, 17,237,154,241,139, -246, 18, 43,208,255, 98,238,141, 64,185,226,192,234,234, 11, 51, 42, 31,141,255, - 71,212,153,156,124,121,255,105,151,181,218,153, 63,240,204,110, 38,200, 50, 82, -125, 52,160,211,127, 8,139, 58, 35, 93,130,159,191,247, 48, 30, 90, 24,142,170, -106,121, 34,148,198, 71, 32, 8,111,203,184, 61,135,208, 16, 31, 48,109,217,132, - 78,203, 11, 58, 59,144, 31, 18,120, 2,224,188,120,141, 15, 74,195, 62, 33,113, - 4,224,197,255,131, 15, 48, 35, 64,122,215, 81, 67, 75,159,199,245,155,164, 95, -179,225,172,110,135,167, 0,252,189, 24, 28, 11,223,184,110,121, 1,110,246,191, -229,205, 73,124, 16, 23,174, 74,123,218,128, 77,104,186,209,185,111,227,223, 78, -241, 45,128, 78,110,174,229,120, 8,151,209,115,161, 82,185, 74,114, 17, 61,230, -249,164, 93, 20,170,170,173,165, 18,233,145,114, 65, 60,245,238,112,150, 8,101, -131, 92, 93, 67, 49, 34,181,137, 99,141,165,158,179, 6,168,133, 7, 18,247,246, - 8, 13,104, 18,194, 20, 90,199,236,186,100, 55,221, 60,173, 36,230,111,226,254, -144,193, 27,115, 41, 89,252, 62,122,242,111,210,116,153,178,232,136, 62, 32,110, -244,138,116, 15,170,224,208,169,113,179, 73, 72,118, 47, 71,246, 38, 8,186,124, - 24,196, 25,116,134, 57, 62, 97,210, 3, 37,254, 14,136,211,167, 4,119,248,154, -213,187,136,190,150, 6,166,220, 84, 1,220,182, 60,184,178, 66, 75,195, 47, 12, -229,215,190,252,206, 28,147,104, 67, 1,180,213,252, 11, 60,126, 84,124,159,210, -189, 72,125, 93,112, 94, 85, 79, 14,142,228, 81,183,244,253, 47,114,217, 16,112, - 52,249,184, 60,161, 88,119,202, 99, 98,230,212,246,124, 46, 80,126,188,137, 76, -198,246,240, 46,172, 50, 88,229,228,142,159, 96, 37,167,240,251, 71, 88, 58, 53, - 22, 52,210, 64,154, 53, 57,207, 43,142, 72,164,229,126,128,194, 74, 81,242,164, -248,105,215,250, 20,217, 87,191,168,162, 62,164, 99, 8,251, 1,239, 2,214, 22, - 56, 11, 17, 62, 43, 72,200, 36, 6,167,167, 16, 65,238,125, 76, 82, 49,168, 82, -249,227,164, 9, 1, 91,183, 49, 59, 89, 72, 44,152,174, 11, 32, 47,205, 97,226, - 48,153, 15, 2, 29,244,138, 25, 72, 23,176,167,182, 22,130, 5, 87,165, 48,106, - 31, 47,162, 39, 98, 2, 32,145,231, 28,113, 98,118,154, 73,215, 20, 72,207,104, -189, 73, 86,111,166,153, 47, 55,235, 15, 42, 87, 82,157,101,203, 58,213, 16, 20, -100,216,102,228, 57,106,236,230, 69, 95, 27, 46,129,254,198,142,103,168, 25,193, -177,116, 52, 52,185, 16, 50, 31,174,205,152,184, 57,233, 12, 55,118, 89, 56,122, - 19,173,188,134,210,153,136, 60,241,166,117,171,142,153, 66,150,129, 43,112, 32, -158,173, 81,180, 72,118,241,248,214,183, 20,239,164, 29,170,220,176,131,234,194, - 1,167,179, 45, 36,180, 3, 55,236, 69,194, 92,121, 65,130,203, 18, 97,106,114, -137, 97, 82,228, 5,235,194, 93, 24,230,189,197,207,114,204, 77,218, 5,145,162, -102, 56,136, 61,160, 60,207,156, 33,200,120,187, 58,251,141,228,235, 0,131,187, -235,108,173, 69,104,100, 12, 37, 81,242, 78, 40,108,132,146,208,189, 48, 69,105, -129, 7, 37, 28,230, 98,240,183,141, 10,218, 59, 25,103,169,200,192, 86,124,114, -220,109, 11,150,156, 22,124, 32,128,131, 49, 53, 78, 24,168,183, 9, 40,191,221, - 58,109,177,231,192,193,208,229,165, 99,183, 41, 42, 37,181,211, 92,113,100,123, -112,156, 64,177,129,142,234,115, 70,136, 41, 56,100, 50,189,213, 63,111, 95,168, - 77, 52, 53,254,159,195, 74, 76,145, 53,168, 32, 29, 7,152, 25, 34,161,191,121, - 12, 99, 28,201,219, 19,237,242,178,182, 59,113,155,247,112,174,178, 65, 90,140, -183,150, 0, 81, 90,190,120,245,181,246, 53, 27,223,210,140, 53, 82,213,156,153, - 44,220, 18, 10,237,162,215,217, 17,218,229,166,193, 42,217, 87,155,102,237, 26, - 82, 74, 96,243, 97, 38, 83,170, 84,198, 67,119,225,250,127, 46,199,183, 13,109, -136,255, 12,227,164, 18, 34, 96,138,104, 66,175, 24,240, 61, 80,225, 55,173, 47, - 34, 46, 21,178, 87,137,138, 30,166, 71,255, 83, 72, 89,207,148,253,198, 25,137, - 76,117, 17, 87,103, 81, 92, 18, 68,216,232,126, 72,223, 97,183,147, 0,205, 69, -102,149, 22,178,184,119, 4,144, 7, 75,195, 37,174,193, 69,244,186,190, 19, 58, -226, 92,176,198,131,231,197, 38, 98,206, 35,223,211,196,192, 45,221, 10,197,190, -223,241, 27,226,102,127, 34,203, 55, 57,199,242,185,231, 81, 79, 55,193, 46,112, - 39,210, 71,167,239, 30,146,196, 94,167,186, 14,252,150, 65,110, 20,142,251,252, -177,121, 58, 61, 17,132, 39,201, 69, 73,186, 66,134,214,217,164,139, 5,187,188, -128,126, 11,225,143, 69, 75,194, 1,187, 1, 58, 95, 58,227,158, 66, 95, 4, 27, - 66, 25,247, 70, 68,225,240, 9, 2,181,146,231, 41,217,139,168, 48,191,237,201, - 61, 35,158,185,204,135, 30,243, 38, 13, 51, 84,235, 62,211, 80,126,126, 53, 0, -131,237, 49, 21,157, 16,161,101,142, 99,112, 7, 6, 53,220,138, 36,109,246, 12, -139,154,176, 37,144,231,166,198, 48, 74, 85, 8,158, 76,154,184,250,214, 4, 39, -153,172,215,129,229, 96,148,148,115, 71,192, 42,205, 90,126,135,230, 26,218,185, - 90, 34,159,229,146,109, 9,201,221,198, 52,197,233,136,102, 44, 17, 9,215, 99, -119, 30, 47, 71,226,236, 56,177, 45,132,243,109, 14,159, 32,232,248, 26, 26, 15, - 23, 79,145, 42, 20,209,129,248,209, 97,109, 7, 66, 29,134,146,162, 80,139,134, -230,240, 28,198,131,156,239,186,216,255,212,177,132, 19, 47,162, 5,117,113, 66, -172,181,218, 45, 76,212, 35, 78, 9, 34,237, 39,226, 17,165,174,101,221, 79,234, -115,229,197,186,224,213,171,192, 92,225,216, 13,184, 19, 93,162, 80,144,213,115, -177, 93,133, 50, 65,186,200,104,155, 29,158,220, 57,241, 94,160, 62, 9, 8,171, -213,107,220, 93,143,160, 89,101,103, 37,240, 64,137,133,213,114, 24, 32,210,241, - 67,161,204,195,228, 26, 47,220,209,166,205, 61,177,147, 41,161,105, 10,182, 25, -202, 2,162,114,224,211, 13,194,205,166, 89, 15,192,244,215, 38, 82,158, 68,171, -119,182, 23,203,181, 74, 35, 58,248, 78,171,182,162, 63,129, +// ../Source/JitKernels/GB_jit_kernel_emult_bitmap.c: +uint8_t GB_JITpackage_24 [357] = { + 40,181, 47,253, 96, 43, 2,221, 10, 0, 54, 85, 70, 33, 16,211, 54, 54,143,197, +236,180,158,161,201,197, 46, 64,213, 60,231,253,228, 40,221, 90,184,113,228, 93, +141, 17, 1, 0,168,170, 25, 60, 0, 61, 0, 62, 0,254, 1, 55, 39,196,157, 71, +156,149, 81,112,180, 26, 75, 60,169,237,200,253,198, 37, 55, 93,115, 62,143, 40, + 97,178, 24, 13, 45,176,112,120,226, 78,163, 13, 55,198,212,157,203,240,107,126, + 81,255,166,110,172,169, 20,115,138,154, 18, 69, 5,144, 72,165,216, 44, 76,149, +244,224,181,163,229, 9,253,248,195, 91,124, 15, 34, 61, 41,254,197,153,116,121, + 84, 38,239, 59,250,201,223,156,220, 96, 6,111,158,179,229,209,161, 42, 84, 18, +194, 80,168,124,112, 5, 30,145,184, 99, 31, 62, 89, 1, 24, 41,114,240,190, 98, +249,249,230, 90, 76,206,246,250,254,140, 83,212,165, 65,186,137,101,251,222,251, +112,192,221,125,130,166,194, 7, 2,167,116,148,173, 82, 43,150,214, 65,104,237, + 50,139,118,213,236,154,108,151,196, 51,139, 82, 50,172,118, 1,115,134,166,194, + 7, 28,119, 57, 28, 22,174, 82,141, 9, 92,212,229,126, 13,184,211,111,155,199, +240,119,165, 24,192,223, 43,243, 21,231,135, 61,241, 21,222,144,234, 39,244,201, +240,175,126,230,128,158,170,127,111,123,201,170, 85, 26, 22, 0, 77, 9,169,146, + 28,148,179, 92, 90, 54,136, 71, 16,160,176,184, 11,111,224, 92,226,199,134,115, +234, 90, 65, 9,238,185, 91,128,196, 39,129,210, 88,145,158, 49, 38, 83,131,230, +207, 51, 83,180, 77,108, 53,151, 24,148,201, 80,220, 86, 20,184, 1, +} ; + +// ../Source/JitKernels/GB_jit_kernel_ewise_fulla.c: +uint8_t GB_JITpackage_25 [265] = { + 40,181, 47,253, 96, 93, 1,253, 7, 0, 6, 16, 55, 33, 0,211, 60,126,207, 18, + 79, 68,206,199, 8,120,213,221,164, 10,182,185,135, 42,204,252, 29, 70,160,120, +108,150,254,223,235, 67, 8, 44, 0, 46, 0, 46, 0,149,126, 97,167, 55,236, 69, +221,133,246, 55, 30,173,164,130,233, 7,129,103,142,121, 84,151,243, 88,185, 47, + 98,206,223,252,160,126,204,221,248,114,233,230, 85, 37,167,170, 10, 30,174,211, + 4,241,160, 40,191,209, 47, 62,231,226,254, 44,152,243,156,167, 75,132,203,186, +166,194,192,186, 60,242, 32,151, 68,188,233, 16, 78, 77,239,124, 91,147,193, 16, +151,236, 12, 14,238,113,103,173,145,196,213,172, 66,162,221,170, 53, 56,141,225, +117, 82, 71,221, 46, 68,177,184,116,147, 22,117, 77,255,121, 93, 56, 29,211,143, + 43,120,131, 79, 81, 76, 47,130, 31, 82,126,164,193, 35,107,181, 44,139,216, 75, +245, 6, 57,168,199,253, 26,224, 81,191,187, 28,102,126, 95,186, 1,252, 41, 99, +246, 64, 28,112,119,151, 30,105,240, 8,114, 7, 36, 10, 0, 76,133, 20,121,185, +176, 33, 36, 39,221, 58,120, 76,166, 6,205,159,103,166,104,243, 99,181,242, 62, +160, 69, 81,224, 6, +} ; + +// ../Source/JitKernels/GB_jit_kernel_ewise_fulln.c: +uint8_t GB_JITpackage_26 [257] = { + 40,181, 47,253, 96, 92, 1,189, 7, 0,242, 15, 53, 33, 16,241, 54, 54,220,197, + 4,107,254, 26,197, 9,229,213,172,201,232, 18,206,225, 55,234, 56,126,128, 67, + 61, 51, 2, 0, 80, 5, 51,115,118,166,193, 33,107,181, 44,123,216, 75,245,246, +184,168,203,253, 26, 0, 78,191,191, 60, 94,126, 95,186, 1,252, 37,101, 6, 69, + 28,112,119,159,156,105,112,232,241,206,209,121,141,203,168,245,145,184,154,229, + 32,218,173, 26,195,211, 22, 94, 49,218,213,237, 58, 56,197,165,219,172, 38, 75, +250, 16,252, 70,204, 47,253,120,130,183,248, 18, 78,122, 82,124, 16, 87, 41,130, +104, 76,146,207,232, 39,223,115,114,135, 20,236,121,206,152, 71, 4,171,178,164, +194,160,178, 28, 2, 31,143, 72,156,249, 16, 62, 97,190, 9, 55,230,130, 29, 30, + 89,172,210,112,252,244,118, 61,169,191,209,254,198,165,157, 84,128,249,193, 51, +191,192, 73,204,185,156,220, 39,177,230,111,126, 81,191,229,110, 92,185,116,115, +138,154, 18, 69, 5, 10, 0, 76,133,244,120,185,176, 33, 36,231,220, 58,120, 76, +166, 6,205,159,103,166,104,235, 99,181,113, 62,160, 69, 81,224, 6, +} ; + +// ../Source/JitKernels/GB_jit_kernel_reduce.c: +uint8_t GB_JITpackage_27 [1307] = { + 40,181, 47,253, 96,149, 12,141, 40, 0,198,123,182, 41,192,208,108, 14, 42,213, +238,181,201, 26,137, 85, 64,176,119,162,220,185,101, 95,213, 70,142,159,251, 48, + 63,202, 78,221, 57,195,150,211,239, 42, 10,213, 85, 0, 2,163, 0,162, 0,185, + 0,116,156,245, 98,135, 31,123,201, 6, 51,173, 95,165, 77,226,227, 58,214,175, +189,219, 75,167,120, 48, 87,208, 59,172,223, 41,132,224,243, 56,211,242,102, 60, + 90,250,219,162,175, 54,200, 73, 18, 8,229,209, 32,157,164,245,202,237,250,213, + 60,182,151, 61, 26,143, 77,107,230, 33,113,113, 32, 94,107,220,198,221, 57,206, +224, 69,237, 60, 12,173, 87, 6, 20, 9,229,145, 48,145, 80, 78,209,233, 21,174, + 26,243, 58,196,186, 8,204, 86,172,220,171,205,202, 88, 64,114, 94, 76,165,241, +157,228,214,185,150,155,116,103, 56, 41,190,205, 31,109,205,191,246,251,185,204, +225, 21, 10,105, 90,122,125,187,176,199,219, 25, 93,174, 24,157, 5,243, 72, 68, +122, 68, 34, 1,228,244, 10, 0, 8, 64, 33,149, 14, 73,113,134, 90,146, 42,215, +134,158, 55, 31,134, 21,116,177,106,220,226,255, 23,133,163,237,112, 30, 91,236, +190, 26, 32, 73,144, 10,194,184, 67,239,206,139,190,175,188, 14,143, 69, 19, 20, +206,227,250,133,141,115,205,165,189,157, 95,225, 10,102,175, 12,233, 88, 3, 62, + 78,175, 67,251,189,239, 60, 22,203,177, 69,222,113,125,123,150, 30,114,101,218, + 70,211,116, 7, 8, 28,134,110,243,100, 56,157,229, 94,140, 21,151,175, 68,114, +138,185,142,245,161,122,115,105,189,207,127,246,239, 92,146,162,165,207,179,130, +160, 87, 32, 27,246,167,162,124, 62,223,132, 82,186,140, 51,121,155,134,250,120, + 30,164, 37,126,213, 1, 96,195,116,130, 83, 25,211,116,106,236, 80,163,202,168, + 72,107,122, 38,227, 97,152,156, 99,105,176,173, 99,113, 54,201,223,105,232,182, +172,171, 88, 22,100,197, 67,214,201, 42,100, 93, 27, 14,195,120,222,236,104, 21, +109,158,221,244, 74,186,201,184, 76,230,177, 46,207,133,163,209,186, 75,166,209, + 56,235, 0,225, 27,151, 89, 54,147, 71,104, 25,134, 14, 6,161,105, 27, 76, 70, +141,170,130,233, 27, 45,227, 46,158, 11,235,116,151, 38,219, 58, 75,131,177, 58, + 28, 73, 72, 50, 57,198, 77, 88, 54,171,129,219, 54,218,165,147, 80,163,105,130, +203,184, 13,118,101, 29,214,177, 50, 23,236, 18,125,161, 0,227,172,139,227,161, + 68,211, 11, 78,133,166, 47,124,116, 74, 84,133,170,209,116, 93, 22,198,153,224, + 58,138,138, 87,237,104, 69,170,194,101, 24,146,212, 33, 41,156,218, 54,236,114, +241,108,211,199, 91,230,190,159,173, 70, 3,175,166,139, 72, 42,182, 56,234, 14, +128,201, 23, 22, 38, 14,142,175, 6, 52,157, 36,206,184, 54, 34,130,128,202, 97, +137,251,158, 34,152,254, 75, 27,146,194,169,233, 26,167, 97, 29,236,225, 25,203, +162,101, 48, 93,223, 6,171, 7,209,181,153, 78, 6, 92, 31,125, 73, 48,219, 15, + 46, 69, 92,164,233, 45,237, 22,249, 88,127,103,147,228,164, 16,111,156,239, 58, +155,113,158, 33, 41,118,190, 5,101, 92, 89, 92, 31,163, 29, 63,191,234,141, 29, + 64,187, 9,226,142, 98,240, 12,182,177, 42, 61,170,120,146, 11,159,167, 44,174, +213,156,230,156, 44,202,134,101, 22,141, 70,161,125, 44,178,250, 88, 4,200,170, +102, 85,128,240,168, 49, 45, 98,202,208,204,140, 36, 41, 72,161,208, 24, 32,132, + 16,227, 84, 25, 61, 50,161, 60, 11, 37, 78, 33, 1, 49, 68, 33, 36, 52, 34,146, + 52, 37, 41,169, 81, 56,210,138,113, 51,151,138,224,207,128,112,244, 92,110,135, +188, 49,192,179,216,186,111, 2,182,189,239, 20,162, 5,150, 25,222, 82,191,190, + 42,142,127, 66,138, 54,163,138,191,130,162,155, 70,138, 63,112,195,252,218,157, + 5,211,124,226, 38, 20,164,177, 91,105,177,193, 9, 20,216, 22,167,141, 83, 75, +251,211,130,133, 23,240, 99, 87,158,160, 73,186, 26,243,144, 59,230, 31,248, 9, +102,100,121,101,245,204,193, 0,143, 73, 8,202,193, 25,226,122,130, 77, 23,181, +213,100, 88, 4,233, 55, 65, 54,243, 11, 20, 50,111, 17,133, 92,154,196, 29, 4, +120,140,192, 12,192, 43,158,113, 37, 0,247,120,149,239,183,144,244,143,110, 57, + 29, 12, 48,194,112,210, 50,238,101,146,180,165,147,252, 0, 32, 82,137, 8,125, +137,172, 98,219,221, 85, 10, 68, 72,196, 87,112, 74,200,200, 27, 62,220, 8,110, +120,187,125,130,118,212,204,223,245,143, 46, 0,208,176,219,111,144, 87, 13, 18, +160,136, 44, 96,186,120,175,122, 21,184, 32, 30,120, 96,149,135, 10, 64,161,149, +130,132,184, 14,111, 68,150,150,207, 26, 20,246, 66,112,197,177,192,218, 90,134, +143, 64,212, 88,216, 14, 4,150,239, 30,237,107,102, 8,163, 17, 18,203,181,181, +181,174,135,120,184,205,229,188,178,252, 30, 11,129, 25,152,134, 80, 5,231,116, + 93,255,193, 12,161,200,184,159, 35,250, 96,213, 77, 33,195,248,235, 25,225, 59, +166,245,157,134, 23, 3,174,112,135, 0,251, 37,178,132, 0, 48,227,207,189,171, +223,232,225,152,220, 58,167, 71,167, 1,111,129, 23, 61,131,214,201,114,214, 6, + 80, 79, 52,177,244,165,216,192,248,139, 52,201, 3, 42,198, 97, 41, 82,125, 33, + 20,183,162,164, 87,159,157,237, 63,223,101,221,155,100,212,199,106, 97, 97, 87, +130, 36, 71, 14, 93, 64,192,183, 8,244,232,137,100, 13, 8,129,249,174, 1,110, + 63,202, 72,144,209,194,125,103, 44,143,241,169, 45,235, 72,195,138, 67,198,244, +248,135,145,214, 22,200, 69, 64, 26,162,179, 40,231, 60,209,197, 49,140, 65,248, +164, 0,139,160,199, 18,163,174, 91,142,222, 24, 86, 60,172,116, 35,143,104,194, + 37, 17,167,168, 91, 19,170,215,244,181,143,141, 77,146,117, 69,239,100,130, 92, +196, 23, 13,210,176, 49,224,166,249,254,204,164, 53, 57,107,112,201,125,242,120, + 4,242,253,235, 1,132, 1, +} ; + +// ../Source/JitKernels/GB_jit_kernel_rowscale.c: +uint8_t GB_JITpackage_28 [286] = { + 40,181, 47,253, 96,116, 1,165, 8, 0, 86,145, 58, 33, 32,179, 27,179,251,172, +125,126, 51, 53, 50,201, 85, 31,241,241, 95, 8,165,171, 6,186,191,145, 33,130, +206, 50, 32, 4, 7, 0, 2, 48, 0, 49, 0, 50, 0,142,219,109, 6,124,220,180, + 47, 7,211, 33, 27,126,182,157,175, 65,127, 51,253,250, 34, 52, 24, 88, 43,234, +228,150, 86,252,225,220,105, 29,188,190,153,249, 53,243,210,154,162,162, 68, 81, + 1, 56,123,153,239,218, 90,171, 11,136,202, 80, 73,137,131,161,234, 65, 21,116, + 1,191,135, 54,122,178, 58,228,101,206,247,147, 46, 72,107,187,188,144, 94, 77, +225,248,210, 80,122,254,142,140,247,191,178,194,117,115,203, 34, 93, 6,233,205, +186,184, 77,155, 19,199, 99, 94, 90, 52, 76,149,228, 94,165,161,213,138,235,143, +249, 12,250,197, 33, 57, 6,189,254, 38, 89, 26,146,233,226,158,235,216,187, 14, + 49,142,226,162, 7, 82,102, 24, 70,145,243,186,224,237,100,191,128, 58,121,166, + 54,252, 60, 79, 64,251,165, 99, 43,248,129,238,238, 40,138,139, 30, 8,154,155, +112,157,100,102,155,133, 5, 13, 0, 70,128,146,244,166,248, 34, 64, 0, 22,128, +144,198,200,117,154,152, 76, 13,154, 63,207, 76,209,230,177,213,188, 99, 80,102, +184, 0, 81, 81, 48, 4, } ; -// ../Source/Template/GB_add_sparse_noM.c: -uint8_t GB_JITpackage_63 [2031] = { - 40,181, 47,253, 96,118, 63, 45, 63, 0,234, 70,236, 12, 40,176,148,177, 14,180, -145,158,138, 11,149,130,216, 47,240, 78,183, 38, 21,184,176, 27,178, 30, 64, 24, - 71, 39,113,155, 6,104,126,194, 63,165, 63, 77,239,142, 75,194, 0,191, 0,200, - 0,179,203,213,252,110, 62,238,219, 81,213,176,207, 55, 42, 95,253,214,121,229, -241,212,250,102, 57,250,253, 42,119,207,147,231, 60,148, 59,179,244, 62,109,238, -240, 1,104,176, 60,158, 58,252,230,214,188,179,251, 54,219,179, 86,230, 47, 59, -192,111,125,149,233,196,243,218,231, 74,143,251,159,255,255,100, 50, 50,185, 88, - 50,149,217,105,210,194,107,238,108,174, 51,157,155,167, 50, 49,157, 90, 75, 84, - 48, 56, 20,150,109,130,220,137,103,232, 56,119, 29, 29,186,231,193, 87, 5,153, - 75,166,146,128,185,100, 78,209,166, 87,184, 65, 36,231, 22,248, 82,151,235,168, - 69,175, 46, 40, 17, 59, 43, 47,132,230,154,185,191,107,242,129,229,232,149,190, -186,211,150, 58,130, 91,175, 34, 5, 55, 20,143, 74, 51, 89,215,124, 42,197, 38, -190,210, 98,108,219, 36, 22, 33, 78, 64, 48,169, 16, 16, 4,215, 96, 46, 31, 1, -129,115, 1,222, 44,201, 78,201,111, 46, 66, 61, 52, 11,204,199, 37, 73,242,184, -122,122,103,206,210,126,118,162,223, 2,127, 43,119, 60, 61,251,229,119,208,222, -232,180, 92,125, 8,238,139, 78,186,136,130,199,157,214, 29,233, 85,110, 73, 42, -101,223, 75, 30,173, 31,161,100,218,213, 3,247,134,205, 43,177,136,109, 84, 98, -240,152,111, 54,239, 92, 48,130, 2,227,112,224,116,174, 3, 98,100, 56,229, 36, - 36, 24,110, 12, 78, 23,133, 58,215, 5, 41,217,111, 37,192,116,110,114, 58,158, -125, 51,157, 19, 68,118, 31,113,245,248,214,172, 77,144,123,242,219, 26,164, 55, -218,149,231,125,156,149,163,220, 89,151,107, 22,161,165,203, 77,250, 54,243, 23, - 41,184,177,126,139,132, 68,197,196,177,252, 86,187, 60, 71,199,221,229,215,124, -218,223, 38,198,210, 62,189,125,249,194,109,113,167,215, 33, 25,203, 2,230,180, -223,241,101,151,199,119,118,116,244,205,115,171,218,185,250, 73,219, 35, 85,207, -171,156,102,163, 95,189,242,227, 86,210, 23, 48,151, 12,102, 93, 31, 44,212,145, -240, 80,124, 40,217, 89, 79,198, 44,203, 10,178,238,238,238, 74, 51,100, 22, 86, - 51, 6,177, 12, 10,144,117,165, 39, 53,140, 81,148,204, 51,155, 0,121, 38, 42, -112,149,241,120,213,150, 53,157, 2,212,185, 60, 23,157, 24, 99, 54, 61,214,234, - 85, 8,124,229,209,114, 58,196, 56, 16, 36, 1,186, 60,220,220,104,140, 20,216, -223,156,195,158,186,101, 55,222,214,169,219,142,167,224, 55, 61,221,162,168,134, -219, 51,252,242,205,237, 51,102,128,144,105, 79, 29, 13, 79, 8, 36,178, 58, 22, - 24,231,227,185, 48,248,129,128, 33,138,103, 44,189,216, 25,223,230, 48,216, 27, -105, 29,127, 93,190, 38,147, 73,201,196, 44, 75,101,151, 24, 51,104, 39,153, 43, - 61, 67,230,166, 23,127,235,161,101, 99,140, 49,118,140,209,225,176, 33,132, 25, - 74,132, 2, 2,211,167,215, 29,169, 71, 18,231,175,102,242,130,137, 49, 70, 8, - 33,140,215, 44,200, 74,165,170,122,122,132, 21,130,157, 11,203, 8,193, 9, 79, -228,238,213,154, 97, 94,129,246,155,107,105,191,191,209,230, 54, 58,177,104,223, -240, 56,161,181,179, 54,241,157,153,182, 8,165,175, 80,217,105,223, 72, 97,224, -153,130, 59,192,152, 0, 99, 83, 25, 99, 62,111,229,102,118, 60,175, 65,104,144, -242, 21,132,241,154, 3, 14, 10, 87,167, 72,227, 15, 84, 49,190,178,218,154, 94, -178,218,104,142, 74,217,224,210, 29,101,140, 22,250,137,171, 29,205, 92, 73, 12, -127,139,188,211, 86,206, 4,200,234, 92,153, 2,235, 1, 19, 93, 33,207, 67, 85, - 3,129,249,168,129,181, 50, 52, 34, 34, 34, 34, 73, 65,146, 52, 6,161, 12, 49, -134, 57,166,180,179, 14, 34,120, 56,154, 34, 34, 4,193, 16,194, 16, 66, 4, 74, - 64,168,128, 16, 33, 34, 70, 40, 50, 34, 34, 82,101,115,213, 13,208,120, 61, 87, -243,102, 19,147, 8, 54,251,251, 77,188, 12, 39, 34, 85,231, 50, 82,246,190,185, -252,235,213,231,148,180, 71, 31, 20,102,165,186,160,237, 90,173,107,190,108,173, -114, 45,214,233, 57, 76,180, 57, 7,128,137,129,198,144,220, 42,107,197, 27,181, -210,143, 90,173, 38,243, 22, 13,214,101,224,139,194, 3,202,151, 62,165, 3,255, - 84, 60,212,110, 16, 7,199,252, 69,208,177,115, 49,163, 92, 63,232,174,178, 19, -174,129, 93, 39,178,160, 21,169,226, 32,125,102,106,197, 96, 48,214,159, 75, 83, - 79, 56,205,105,116,106, 4, 35, 36,111,111,191,230,242,187, 80,182, 87, 53, 78, -152,205, 22,249,223,138, 52, 63, 91,100,170, 42,217,105, 23,158, 22, 20, 15, 71, - 29,183, 77, 79,156, 41,142, 3, 95, 39,140,197, 54,164,223,224,200,209,237, 0, -120, 82, 28,147,121, 67,130,221,144,227, 1,100,156, 50,208,172,210,226,110,241, - 71, 75,186, 3,212,243, 3,180, 7, 68,112, 53,145,175,129,173,152, 63, 26, 67, -169,191,172, 62,195, 65,227,228,121, 78, 8,184, 81,152,240,195, 53, 85,181,162, - 15, 33,182,194,182, 14,196,231, 39, 13,199, 77,157, 80,161, 71,128, 84, 43,189, -114,232,147,178, 41, 9,134, 90, 25,255,205,235, 96,217,100, 23, 60, 24,122, 11, - 9, 9, 9,131,113, 7, 48,108, 41, 9,212,214, 25,143,236, 70, 8,139, 49,248, -100, 19,148,150, 58, 56, 38,175,110,132,152, 71,119, 98, 84,174, 16,172,128,135, -238, 74, 77,112, 9, 73, 57, 46,189, 98, 22,161,251, 52,114,246, 48,172,159,167, -167, 40,201, 65,114, 83,133,141, 12, 75,207, 18,144, 30, 95,251,207, 78,136, 89, - 74,115,222, 84, 61, 76, 16, 74, 93, 28,163, 63,104, 42, 57,117, 25,172,147, 48, - 40,102,188,106, 3,236,114,255,232,151,173, 76, 26,221,157, 0,221,229, 28,124, - 28, 20,188,140,111,187,129,234,201,139, 53, 84,255, 1,188,219, 43,204,175,239, - 56, 28,104,167,224,132,206, 20,163, 20,247,251, 23,203, 29, 1,140, 27, 59,249, - 56, 19, 26,194,169,189,211, 71,218, 44,224,165, 11, 60,180,143,186,165, 50,193, -150,171, 47, 0,238,177,220, 35,160,220, 55, 63,236,238, 47, 48, 10,225,248,112, -157, 55,192, 87,235, 84, 2, 13, 53,144, 59, 13,102, 53,159,205,208,140,127, 52, -111,140, 99,130,218, 0,254,115,240,183,157,198,104,125, 97, 27, 48,164,150,197, -192,128, 88,220, 38,130,210, 58, 36,249,147,166, 33,148,217, 66, 58,180, 57,108, -192, 52,140, 60, 65,244,241,177,116,141,232,133,135,221,168, 63, 57,173, 69, 18, -220, 5, 13,118,166,180, 4,187,124,229,248,209,152, 2,212, 0, 55, 0, 77,158, -111,233, 82,207,116, 58, 49,187,109, 24, 4, 4, 88, 60,232,145,101, 64, 14, 58, -224, 50,184,107,167,187,253,148, 3,142,131, 19, 42,205,120,159, 34,233, 27,116, - 11,168, 69, 17,162, 40, 79, 71,217,116,209, 12, 88,174, 14,178,176,129,169,196, -175, 45,187,177,248, 7,223, 53,186, 21,194, 69,149,116,236, 44,160, 3, 63,125, -110,249,173,115,141,115,125,122,205,232,170,220, 78,227, 6, 99,134,177, 23, 23, - 10,125,248,239,152, 94, 34, 69, 72, 45,145,109, 62,191,164,169, 52,128,210,106, -111,135, 82, 88, 52, 45,103,110,139, 46, 58, 10,160, 91, 49,187, 36,184,184, 59, - 87, 1,220, 95, 8, 73, 2, 47,151,188, 37, 0,187,232,124,127,118,207, 83,203, -137,181, 23, 19,215,210,251, 89, 31,188,168,108,187,160, 60,163,253, 18, 97, 23, -124,182,188,130, 87, 42, 7,110, 96,101,103, 1, 13, 33, 67,144,211,246, 60,234, -113, 42,117, 11,239,171, 35,161,149, 5, 4, 51,218, 26,197,100, 67, 87, 64,122, - 47,136, 48, 7,180,201,210, 16,150,181,176, 89,102, 46, 58, 76, 50, 68,128,114, - 4, 29,117,197,105, 37,236,208,205,200, 11,141, 52,197, 80, 81,217,180,161,201, -115,210,185, 9,127, 28, 99,238, 9, 26, 31,156,139,241, 42, 79,220,193,154,182, -221,203, 78,227,151,171,203,128,207,137, 7,152,193,154,164,198,144,205, 36, 39, -239,152, 42,135,158,146,160,178, 21, 18,180,242,107, 77, 51,237,126, 35,145,240, -182, 24,247, 83,156,147, 34, 27, 72,187,229,119,189,201,168, 46,141,188,230,231, -135,148,152,219, 55, 34, 19,140,212, 14,130, 10,130,242, 38,116, 27,103,115,128, -108,211,200,135, 70, 61, 28,236,126, 37,175,184,148,165,177, 97, 93, 66,220, 25, -111,181,151,104,166, 50, 64,113,207, 45,122,116, 9,150,180, 96,164,130,101, 32, - 88,191,143,116, 52, 39,242,119,125, 35, 44, 94,140,109,235,202,197,197,229, 38, -198, 49,128,145,160,188, 66,157, 76, 50,210, 21, 53,166,156,240,177, 94,128, 73, - 55, 74,101,114,141,206, 28,109,238,108,131, 40,219, 45,125, 15, 60, 72, 73,198, -164,238, 24, 77, 85, 90, 16,146, 40,244,143, 27,242, 58,105, 58, 53, 55, 57,238, -215, 14, 84,136,118,226, 86,141, 83,136, 43, 20,179, 59,246, 4,214,224, 54, 56, -147,219,114, 20, 53,200,214, 16, 79,142, 73, 68,241,146, 26, 39,252, 86,129,217, -169, 36, 53,203, 74, 14,182, 28, 52,235,255, 96,194,170,217, 97, 38,235,224,152, -106,116, 88, 23,103, 22,156,106,191,109, 2, +// ../Source/JitKernels/GB_jit_kernel_select_bitmap.c: +uint8_t GB_JITpackage_29 [319] = { + 40,181, 47,253, 96,195, 1,173, 9, 0,214, 82, 63, 33, 0,145,117, 62, 79, 3, +218,207, 30, 3,165, 68,193,149,136, 51,228, 9,251, 52, 69,251, 98, 25, 50,231, +204,210,255,235,245, 33, 4, 53, 0, 54, 0, 54, 0,213, 55, 99,206, 96,240,247, +129, 87,105,214,104,130, 39,134,104,244, 4, 77,175, 51, 78,189,250, 47, 99,252, + 63,194, 4, 49, 25, 79,110, 14,155,108,244,146, 93,158,125,185, 25, 91,174,133, +125,154,106, 52, 77, 1, 84,212, 99, 8,154,213, 17,103, 99, 10,206,101,139, 89, +212,104,217, 33,214,162,200,197, 73, 98,107,206, 70,187, 59,154,199, 10,238, 78, +146,213, 7, 6,138, 64, 69,135, 2,129, 58, 20, 62, 31,160, 88, 3, 94,151, 2, +150,147,124, 87, 34,185,143,237,122,215,195,114,246,162,224,192,255, 87, 78, 77, + 28,122,190,125, 91,199, 93,174,114,124,153,117,191,133,213,172,119, 53,251,232, +108,227, 90,101,109, 26,118,191,140,113, 45,172, 18,164,181,118,106,226,144,231, +217,197, 2,226, 93,235,196,158,151,103,154,251, 4,132, 82,103,144, 52, 49,157, +175,133, 1,222, 98, 74,134, 37, 5,139,101, 39, 14, 93,202,116,204,155, 67,130, +231, 17, 92,241,205, 3, 19, 0, 78, 9,137,133, 72, 36,133,211, 71,192, 9,205, +213,155, 6,118, 90,250,106,161, 22, 33, 13, 14,215,113, 98, 50, 53,104,254, 60, + 51, 69,219,195, 86,115,135, 65,140, 41,252,192, 16,154, 57, 60, 69,193, 16, +} ; + +// ../Source/JitKernels/GB_jit_kernel_select_phase1.c: +uint8_t GB_JITpackage_30 [394] = { + 40,181, 47,253, 96,107, 2, 5, 12, 0,102,215, 75, 33, 16,211, 54,134, 15,196, +236, 53, 67,137,207, 4,211,246,129, 47, 33, 34,189, 8,250,110,245,191,219,249, + 87, 17, 1, 0,168,210, 25, 65, 0, 68, 0, 65, 0, 85,193,224,210,141,124, 48, +226, 79,231,112,130,229, 37,184, 61, 29,204,249,160, 90,217, 5,138,157,198, 18, + 63,234, 78,172,191, 49, 89,167,115,144,136, 87,238,238,137,234,199, 14, 20,237, +190, 31,254,104,195,207,250, 57,118,227,141,189, 48,167,168, 57, 81, 84,214, 67, +179, 92,131,102,180,218,140, 82, 54, 42,241,204,186, 42, 25,102, 57, 72,196, 94, +216, 44, 16, 12,211,131,183, 19, 45, 79,232,199, 31,222,249, 61,200,244, 99,254, +139,179,233,226,208, 8,222,127,244,143,191,249,184, 65, 13,222, 60, 12, 45, 31, + 28, 12, 5,195,132, 8, 94,126,133, 51, 38, 91,118,124, 46,252,179,213,107,244, +119,236, 95, 28,142,150,243,238, 62,199,236,193,251,102,242,115,206,237, 50, 97, +216, 93,223,175,113,138,162, 19, 8, 71,177,108,223,123, 31, 14,184,187, 79,208, + 84,184, 20,121,133,171,108,154,173,104, 13,115,134,166,194,165, 90,105,163, 97, +169,246,210, 88,228, 89,147,251, 53,224, 18,126,119,161,216,249,109, 75,189,243, + 95, 24,192,223, 35,195,155, 37, 78, 38,193, 93,186, 36,136, 34,129, 47,188,116, +170, 97, 56,139,193, 88, 74,197, 86, 7,133,106,212, 49, 63, 28, 29, 32, 48,132, + 8,206, 44,118,212, 68,162,150, 89, 59, 75, 4,155,129,233,131,208, 91, 17,164, +220,190,128, 84, 46, 24, 7, 71,130, 32, 76,248,169,100, 80, 70,226,228,138, 54, + 92,123, 13, 1,241, 91, 84,105,128,184,227,132,153, 26, 52,155,103,166,219, 32, +173,230, 15, 67,172, 53,238, 27,211, 4, 70, 20, 5,110, +} ; + +// ../Source/JitKernels/GB_jit_kernel_select_phase2.c: +uint8_t GB_JITpackage_31 [336] = { + 40,181, 47,253, 96,239, 1, 53, 10, 0,134,211, 64, 33, 16,241, 54,230,113,200, +133, 61,140,215,215, 9, 45,121,142,201, 50,248, 12,120, 95,139, 89,167,237, 98, +217,136, 0, 0, 84,193, 12, 53, 0, 55, 0, 55, 0,148,111,194,141,185,224,206, + 7,150,202,170,144,244, 50,134,120,157, 61,210,254,198,165,157,222, 49, 26, 78, +221,221, 17,244,181, 23,146,119,127, 47,190,190,226,143,249, 45,119,227,202,173, + 48,159,166, 25, 77, 83, 4,137, 70, 31,126, 30, 73, 57, 34, 63,158,224, 61, 62, +200,136, 94,143,255,225, 44,138, 92,155, 4,126, 38,191,126,206,245, 14, 41,152, +115, 81,164,124, 96,160, 4, 26, 29, 10, 4,234,208,247,248, 64,227,140,119,185, + 20,152, 11, 61,174,112,141,229,251,195,121,235,207, 2,175,155,164,187,148,187, + 79,206, 76, 56,244,184,214,105,220,118,105,181,212, 98,187,157, 85,179,106,111, + 86, 31, 92,117,120, 70, 85, 90,134,221,142,209,184, 21, 54, 3,115,118,102,194, + 33,107,171,101, 65,236,173, 50,246,248,152,203,253, 25,240, 73, 21, 6,240, 7, + 75,241, 27, 39, 24, 28, 31,178,140,101,184, 55,207, 35,112,133,111, 36,146,251, +208,174,189, 30,117,171,215, 4, 7, 18,190,203, 24, 32, 80, 66,100, 91, 7, 69, + 8, 35, 76, 18, 73,157, 62,124,102,240, 0, 65,216,227, 62,164,180,141,113,115, +149, 5,238,214,218, 46, 40, 45,162, 52, 64,244, 56,129, 76, 13,154,207, 51, 19, +218, 32, 94,205, 31, 70,172, 13,183,198, 52,194,136,162,197, 13, +} ; + +// ../Source/JitKernels/GB_jit_kernel_split_bitmap.c: +uint8_t GB_JITpackage_32 [331] = { + 40,181, 47,253, 96,205, 1, 13, 10, 0,230, 83, 65, 33, 0,211, 60,238,110, 65, +100, 93, 69,167, 9, 54, 71,246, 92,144, 33,233,162,171,139,249, 27,238,174,142, +108,255,255,247,250, 23, 2, 54, 0, 56, 0, 56, 0,222, 9,119, 6,115, 61,159, + 29,205,172, 48, 91,141, 25,126,212, 54,119,191,175,166,147,151, 63,190,219,122, +102,139,215,169,187, 27,178,197,236, 59,193,121,172,248, 69,253,151,186,175,165, + 90,152, 83,148,148, 40, 42, 82, 48, 85,210,135,159,205,212, 13,250, 47,229,110, +241,193,133,244,163,248,223,205,164, 72, 98,155,192,223,232, 31,159,243,113,135, +149,203, 57,198,212, 39,161, 18, 84, 82, 97, 32,168, 60,250, 32,159,227,221,216, +132, 79, 52, 15, 78,209,240,140, 90, 90,134, 85,111,193,144, 50,234,248,180,248, +188, 62,127,196,150,226,147, 82,247,201,185, 32,223,180, 7, 36,162,121, 94, 25, +146,108,218,245,226,165, 60, 24,144,145,229, 90,200,115,198, 17,110,185, 95, 82, +126,228,193,163,174, 83, 92, 23,164,171,150,198, 32, 23,181,102,191, 6,124,211, +111,139, 51,230,119, 5,248,131, 26,252,137, 55,224,238, 46, 61,242,224, 17,228, +154,167,113, 91,221,168,195, 91, 88,217,214,213, 76, 17, 21, 0, 77, 9,121, 67, +112, 32, 0,139, 68, 72,131,248, 58, 20, 76,128, 98,102, 94, 83,192, 86, 2,124, + 19,144, 76,120,121, 20,180, 77,243,231,153, 41,218, 48,182, 90,191, 24,100,102, +190, 3,120, 99,182, 60, 76,128, 41, 10,134, +} ; + +// ../Source/JitKernels/GB_jit_kernel_split_full.c: +uint8_t GB_JITpackage_33 [330] = { + 40,181, 47,253, 96,193, 1, 5, 10, 0,166, 19, 65, 33, 16,209, 60,230,145, 19, +194,135,159,176, 6,108,140,139, 4, 9,101,127,150, 85,235,152,229,166, 47,154, +234,136, 0, 0,170,106, 6, 54, 0, 56, 0, 55, 0,212, 55,223,190, 88, 48,196, +231, 70,107,245,233, 43, 94,134, 31,197,171,183,223, 24,179, 73,203, 63,227,125, +253,178, 67,236,212,221, 13, 57, 99,188,172, 71,155, 63, 20,191, 98, 55, 6,109, +117,249, 52,201,104,154, 2, 82, 32, 81,209,127,220,213,212, 13,226, 99, 15,239, +240, 59, 70,244, 99,248, 28,174,145, 36,145, 73,221,103,196, 31, 95,243,113,127, + 20,172,121,206,212, 39,129, 18, 80, 81, 97, 32,160, 28,226, 30,159, 35,206,220, +132, 75, 1,154,194,225,149, 86, 88,189, 44,132,209,144, 18,218,248, 4,125, 98, +159, 63,230,235,249,164,212,125,106,172,199, 51,236, 17,129,168,158,150,126, 38, + 25,102,125,136,189,239, 2, 18, 2,241,125, 92, 95, 28,225, 32,230, 2, 82,118, +228,193,161,109, 83, 88, 86,100,179,149,120, 61, 30,138,152,253, 34,128,147,126, +223,172, 45,191, 45,192,191,195,100, 46,196, 1,119,119,201,145, 7,135, 30,199, + 32,152,150,217, 90, 35,139,154,109,182, 42, 30, 1, 21, 0, 75,137,108, 33, 54, + 16,128, 37, 33,164,161,189,142, 4, 19,160,152,153,215, 20,176,149, 0,223, 4, + 36, 19,222, 28, 5,109,211,252,121,102,138, 54,137,173,214, 35, 6,153,152,120, +192,238, 75, 91,194, 4,152,162, 96, 8, +} ; + +// ../Source/JitKernels/GB_jit_kernel_split_sparse.c: +uint8_t GB_JITpackage_34 [328] = { + 40,181, 47,253, 96,205, 1,245, 9, 0,134,211, 63, 33, 0,241,230,238, 50,108, + 88, 84, 29, 3, 2,125, 57,231,168, 27,125, 12,171,202, 44, 52,237,122, 84,208, + 97,255,255,183,255, 80, 2, 52, 0, 55, 0, 54, 0,137, 75,245, 27, 48, 95, 44, +216,113,106,107, 86,129, 99, 71, 98,182, 51,198,216,105,189, 67,156,187, 95,178, +136, 95,255, 27,186, 36,187,140,195,177,188, 97,139,100, 87,110,198,148, 91, 97, +159,166, 25, 77, 83,216,155, 2,137,138, 26,244,186,177,222, 64, 54,150,224, 44, +246,167,136,186, 20,219,195, 89, 4, 73,108,210,215, 25,178,203,230, 94,102,112, +130,185,135, 97, 61, 37, 80, 2, 42, 42, 12, 4,212, 33,239, 57, 45,113,166, 11, + 13,238, 98, 60,171,149,150, 97,215,161, 88,204, 9,109, 78, 41,167,248,180,203, +176,147,156,214,250, 83,141,245,124,211, 26, 15,168,142,212, 26,159,200,166, 89, + 45, 98, 73,127,129, 9, 81,112,247,124,188, 28,113, 74,115,118,230,225,144,181, +151,101, 61,236,173, 72,236,185, 72, 98,114,147, 0, 79,234,220,133,163,165,243, + 5,188, 63, 76,232,137, 56,240,255,147, 51, 15,135,158,107, 14,141,219,238,101, +185,186,217,108,179, 55,187, 2, 22, 0, 77, 9,121, 67,112, 32, 0,139, 68, 72, +131,248, 58, 20, 76,128, 98,102, 94, 83,192, 86, 2,124, 19,144, 76,120,121, 20, +180, 77,243,231,129, 41,154, 73, 24, 2,198,172,229, 23,131,246,204,119, 0,111, +204,182, 76, 1,154,162, 96, 8, +} ; + +// ../Source/JitKernels/GB_jit_kernel_subassign_05d.c: +uint8_t GB_JITpackage_35 [614] = { + 40,181, 47,253, 96,196, 4,229, 18, 0, 6,162,104, 33, 0,213, 54,238, 40,174, +177, 33, 60, 21,144, 92, 46, 85, 42,205, 0, 16,200, 56,218, 86,102,134,161, 93, +107, 81, 85, 53, 84, 69, 9, 95, 0, 92, 0, 96, 0,122,131, 31,155,241,123, 53, +183, 14, 6,130,225, 74, 20, 8, 6,175, 42,229,150,182, 34,250,112, 76,243, 18, +220, 98,104, 53,110,117, 26,231, 0, 71,154, 35,217,235, 76,199,238,183, 37,187, +233, 53,126,207,181,245,205,241,131, 35,183, 50,189,180,106,103,120,163,178,216, +220,179,138,121, 8,194,196, 31,171, 53,245,144,122,222,199,249, 67,115, 91,208, +116, 68,124, 48,152,174,193, 32,141,107,115,113,251,214,180,122,233,209,207,151, +106, 28,183,177,132,100,173,244, 43,189,227,231,185,101,209,223,179, 93,201,188, +245,235, 75,191, 49, 20,235, 12,105,186,241,235,207,163,103, 86,231, 34,118,133, + 87,153,149, 81,155,103,238,137,224,254,202, 68,192, 12,215,131,149,142,154,103, +249,237,103, 55,126, 79,114, 85,203, 93,156, 7, 6,243, 94,148, 95,127,198, 3, +158,123,105,245,253, 31, 72, 69,162,177,108, 50,223,123,159, 13,184,187, 79,164, + 73,225, 21,229, 23,205, 37,131,153,150,136,164,235, 52,199,166,155, 28,196,146, +129, 80,156,211, 28, 23, 46, 50, 53,146,201,116, 68,166, 9,211,111,243,189,224, +182, 35, 47,239,103,127,143,111, 77,134,190,173,111,210,227,214,103,210,203,109, +181,151,152,250,139, 40,232,152, 86,159, 72,176,136,127, 44,119,211, 84,154, 20, + 94,117, 29,100,219, 54,221,116,228, 8,229, 56,147,251, 51,160, 98,191,233, 29, +195,223, 19,224,239,145,183, 98, 91, 85,149,128,162, 4, 84, 40,139,163,234, 16, + 76, 71, 51,183,233,179, 30,254,192, 55, 65, 77,142,226, 56, 67,249, 71,223,252, +106,175,158,161,175, 98,168,240,198, 53,203,208, 25,254,205, 50,139,225,135,243, + 63,127, 26,139,118, 87, 76,126, 30,170, 52, 75, 32, 48,132, 16,231,142,117, 78, + 8,217, 82, 7, 72, 1, 39, 56, 4, 31, 84,198, 25, 54, 66,144, 36, 19,102,204, +240,183, 80,184, 6, 98,135,130, 36, 56, 7, 76, 8, 5, 0,203, 3, 71,176,114, +128, 60,131,152, 67,201, 51,140, 57,128, 84,131,201,193, 95,160, 42, 96,204,212, + 79, 3, 43,237,248,131, 40,168,126, 10, 11,130,172,182, 5, 64,119, 13, 15,226, + 39, 24,210, 64,161,206, 24,201, 64, 6,202,254,192,209, 95,253,178, 33,122, 55, +176, 39,134,160,111,148,231, 95,139,179,116,206,225,116,177,107, 38, 24,212,114, +107,122,191,160,207, 23,181, 36, 21,161,239,231,132,188, 17, 17,240,180,244, 96, +240, 13,215,208, 98,102, 27,168,204,113, 41,115, 28,202, 0,195, 52, 49,163,118, + 91,102,122,223, 37, 86, 27,220,130,232, 81, 20,184, 1, } ; -// ../Source/Template/GB_add_sparse_template.c: -uint8_t GB_JITpackage_64 [1707] = { - 40,181, 47,253, 96, 89, 34, 13, 53, 0,246,252,178, 40,192, 84,177, 14,104, 89, -224,245,150,180,253, 21, 50,184, 48, 63,135,107, 27, 45, 32, 65,240, 5,178, 83, -169,100,104,165,248, 80,102,183, 77, 81,232, 40,206, 5,169, 0,159, 0,167, 0, -157, 55, 59,170, 88, 7,149, 45, 58,150, 0, 26,235,145,194, 79,125,225,113, 99, -242,102, 56,250,221,106, 6,159, 77, 0,104, 62,231,150, 89, 56,202, 82, 84,157, -250,179,220,189,178, 78,161,100,126,235, 41, 6,212,193,165, 53, 12, 90,247,204, -109,153,201, 76, 59, 78, 92, 26,211,198, 36,231,162,241,128, 65,197, 6,185,141, -219,115,156,181, 14,233,249,156,238, 19,194,129,193,193,101, 1, 99,112,240, 10, - 38,125,194, 18, 4, 62,156,114, 31,209,114, 29, 73,208,167,143,227, 60,205,194, - 27,145,249,116,150,219,135,114,219,142,104, 5,199,242,214,105,107, 33,111,232, -104,172, 79,207,226, 42,235,207,116,134,211,142, 58, 95,141, 47,180,248,138, 17, - 94, 47,226, 5, 5,148, 75, 65, 65,114, 4,233, 72,148,122,110,177, 53, 12,191, - 66, 47, 75,194, 17,246,213,242, 53,218,232,236, 57,225,133,246,135,163, 14,120, -173,128,245,131,138,199,148,145,172,107, 24,236, 83,121,220,242,102,218,207,116, -171,216, 51,152,151, 80, 40, 21, 41,211,183, 94,241,167,251,166, 53,102,110,133, -160, 70, 68,143, 88,106,217,250,173, 89, 99,219,205, 56,207, 13,247,125, 86,143, -111,141,141, 55,128,169, 49,196,222, 51, 82,168, 61, 87, 90,227, 67,234,140, 85, -203, 61,122,107,160,159,106, 60, 97,246,129,225,232, 26,153,214,194, 99,122,183, -220,247, 35, 89, 82, 4,141,161,102,107, 62,135,147, 97,113, 12, 79,229, 99, 99, - 12,109,231,180,181,252, 41, 6,180, 55, 42, 51,173,216, 43,151,208, 79,197,219, - 32, 77, 53,208,192, 64,165,121,232,131,227,214,146, 14,242,108, 62, 31,135,177, - 88,150, 10,253,183, 44,142,180,175,201,178, 36,212, 3,171, 28,179,249, 56, 9, -140,235,225,193, 9,124,124,210, 44,233,214, 37,241, 34, 94,221,195,210,242,199, -228, 81,105,168, 60, 8,174,183,142,104,197, 23, 86,172,241,236,147, 99, 13,242, -158, 89,125, 99,114,226,195,211,122,220, 25,222,182,245,240,210, 51,218,179,130, -185,188,170,164,171,169,204, 62,107, 21, 61, 99, 56, 25,168, 16,199, 51,150, 28, -208,171,103,124,101,246,241,124, 37, 40,100, 42,111,205, 86, 94, 12,119,204,185, - 59, 44, 22,124,205, 25,110,240,234, 81,102, 9, 51, 97, 1, 20,202, 73,117,203, -146,178, 58, 33,149,217,201,175, 91,177,188, 58, 37,141, 59, 21,207, 6, 99, 67, -226, 38, 38,223,124, 60, 14,227,115,125, 38,174, 78, 0, 70,117, 42, 13,120,199, -109, 98,180,226,227, 58,215,133, 5,103, 99,225,217, 84, 92,160, 9,138,172,227, -173,239,150, 87,111,152,144, 86,153,109,213,188, 39,122,239,137, 68,239,189,247, - 68,239,189,247,222,123,239,189,247,222,155,228,123,239,157,200,137, 23, 97,240, -134,203,201, 72, 37,108, 76, 59,194,124, 97,198, 87,118, 42, 29,196, 88, 42,147, -179, 78,194,104,120,230, 30,119,120,197, 93, 53, 95,150,244, 43, 51,237,144,115, -207,185,177,104,195,242, 26, 38,181,144, 79, 33,204,133,162, 40,103, 57, 46,226, - 38,233,166, 59,235, 50, 25, 3,129,183,168,129,181, 66, 51, 35, 34, 34, 82,144, - 36,133, 52, 6,209, 12, 49,200, 65,233,164,121,130,144, 40, 79, 98, 24,194,224, -136, 17, 24, 66, 32, 65, 4, 9, 70,130,145, 64, 68, 98, 70, 68,134, 60,169, 1, -122,194, 61,137,232,172,140, 74,218,144,168, 62,234, 64, 89,114,124,100,100,134, - 18,198, 72,149,218, 51,239, 40, 35,235,212, 68,233,226, 93, 37,202, 82,255, 6, -121,225,127,118,189,166, 21,204, 64,172, 44,232,224,254, 71,118,132, 60,197,118, -160,114, 12,176,108,117, 10,160, 22, 67, 46, 79,194,169,130, 65,191,182, 94,233, -250, 66, 46, 1, 34,250, 78,201, 21,101, 25, 11, 68, 58,194,252,248,240,114,149, - 95, 74, 24,175,199,194, 82,176, 38, 74,115,150,133, 71, 84,224, 19,220,165,148, -237,254,125, 13,142,219, 35, 55,248,191,133, 54, 63,129,138,230,147,138,246,241, - 12, 95, 19,241,215,201,110,108, 44,141,221, 85,168, 17,107, 49,180,109,111,143, -102,211,166, 59,154,111,181,189,102,185, 95,119,150, 93,175, 59,150,209, 28, 38, -166,103, 96, 53,102, 10,244, 26,243,130,152,199,197, 46,251,143, 50,175, 74,186, - 1,116, 80, 57, 15,142,186,229, 70,200,206,172,202,219,167, 77,201,246,222,172, - 90, 58, 53,223, 87,228,106, 71,203,146,173, 16, 21,241,138, 12,175,229,109, 77, - 88,117,219, 12, 19,146, 95,235,250, 72,151,153,240,253, 17, 20,251,230, 64,125, -132, 52,240, 84,182,159, 13, 18, 73,177,208, 83,104,244,226,252,152,196,215,190, -131, 2,127,219,216, 63, 43, 66, 43, 8,136,188,105, 84,198,194,215,106, 8,242, -245, 47, 19,149,178,103, 80,217,123,119, 29,226,234, 20,151, 9,101, 25,153, 24, -112,102, 14, 35,240, 51, 86,100,227, 49, 32,161, 72,219,236, 85,142, 89, 39,176, -142,176, 33,101,235,173,215,126,167,167,224,116, 98, 16,158,135,100, 36,143,248, - 4, 34, 72, 89,201, 54,159,107,105,114,255,223,198, 82, 94,156,102,173,172, 67, -144,228,244, 31, 29, 73,152,188,128, 91,201,152, 8,119,117, 19,105,211,231, 79, -252,249, 97,219, 7,231,140,197, 46,134,208,157, 3,120,177, 28, 32,115, 35, 82, -178, 40,156, 83, 29,244, 30,249, 91,113, 25, 21, 14, 33,185, 61,228, 63,183, 20, - 96, 48, 34, 3, 28,168,227,189, 9,222, 34,164,124, 3,223, 84,216,240,111,187, - 22,206,246, 4,208,161, 43, 0,102, 94, 66, 48,235,162,236, 42,195,204,212,206, -237,173, 57,218,114, 78,153,183, 12, 54,226,252, 22,131,137,179, 16,137,120,155, -147, 45,162,190,228,116, 9,109,189, 72, 12, 35,114,150,165,172,201, 27, 52,241, - 89,160, 42,198, 52, 0,212, 29,150,252, 87, 1,120,223, 77, 77,169, 97, 88,131, - 59,103,109, 89,218, 98, 12,196, 94,111,205,189, 71,239,208,193,159,211,101,125, - 44, 99,123, 62, 86, 78,165, 56,250, 6,252, 98,222,237,248,239,127,116,148,195, - 4,196, 74, 68,119, 9,236,121,232,122,133, 92, 6,107,167,135,144,217,226, 90, -250, 77,180, 48, 4, 55,251, 90, 12, 19,104,247, 75, 41,248, 18, 5,134, 71, 27, -170,158,136, 13,184,200,137, 70,171, 11,252, 56,227,182, 47,165,112,247, 86, 4, - 45, 10, 79,122,254,189, 2,223, 69, 63,171,243, 73,174,114,184,127,219,172, 9, -240, 62,130,217,217,149,253,230,227,237,149,139,112,184, 21,114, 66, 88, 91,147, -206,139, 6,110, 76,125,151,123, 67, 8, 83,189, 92, 1,188,207, 72,225,180,203, - 32,249,109,208,182, 10,149, 79,250, 66, 81, 3,216, 48,200, 4,113,153,236, 31, -179,154, 12,153,188, 39,241,149,126,115,182,100, 88,239,141, 0, 9,147,178,232, - 86, 4,254,165, 5,143,193, 12, 68,226, 74, 46,200,185, 48,167, 8,185,217, 62, - 2,129,165, 48,154,141, 2,157, 84, 88, 73, 16,194, 78,250, 16, 11,152,147,193, -253,177, 98,121,164,167, 86,140,247,203,173,167,130, 22,163, 84,138,144,147,197, - 55,175,199,193,248, 5, 33,122,241, 33, 1, 42, 69,119,111,221,204,178, 38, 33, -250,188,111,178,115, 6,202,209, 68,239, 89, 17, 78, 28,205,117, 16,248, 66, 65, - 15,240, 10, 23, 27,231,144,132,209,227,169, 42,139,158,132,141,156,107, 22, 56, -202,143, 43, 98, 69, 18,133,183, 39,124,177,110,218,236,189,184,229,228,106,105, - 73,167, 13,255,107, 25,232,104, 34,193, 35,113,128,143, 75,150,140, 70,215,163, - 70,231,140,157, 52, 73,127, 48,121, 43,137,230,209,208, 59, 98,253,144,242,161, -243,104,171,210,202,213, 4, +// ../Source/JitKernels/GB_jit_kernel_subassign_06d.c: +uint8_t GB_JITpackage_36 [781] = { + 40,181, 47,253, 96,125, 6, 29, 24, 0,198,232,120, 32,224, 88,231,208, 5,174, +249,187, 22,106,173,180,214,196, 24,175,107,194,237,185,129, 41,185, 43, 84,214, + 49,140, 49, 88, 35,224,113, 0,109, 0,108, 0, 93,187,154,109,115, 20,140,214, + 11, 6,138,108, 50,174, 75,183,113,115,142,179, 39,170,156,127,159,246, 11,113, + 40, 28, 48,133,161,112,248,128, 10,126,225, 90,154,145,103,218, 81, 94, 14,193, +234,249,213,209, 46, 16, 79,156,119,178,104,124,167,216,233, 92,199,142,213,216, + 54,119, 92,191,221,182,103,250,117,231, 55, 41,190,227, 15, 76, 99,251, 23, 52, +227, 18, 5,105, 69, 21,227, 25, 26,177,252,218,222, 38,201, 92, 71, 18, 50, 57, +129, 96, 97, 4, 66,217,246,195,236,251,198, 14,235, 42,134,167, 56,193, 92, 67, +239,208, 51, 30,193, 87, 40, 54,180,152, 83,189,121,130,218,229,242,201,128, 35, +165,179,233,252,196,190,114,187,225,251,139, 76,199,155,113,227,111,118, 34, 24, + 82, 73,194, 83,123,152,127,101,219,184,175,248, 5,215,120,214,111,190,239,188, +118,206,206, 99,126, 93,157,135,246,140,107, 90, 99,176,184, 22,130,237,139,115, +161,151, 27, 99, 21,178, 3,214, 30,157,162,246,197, 13, 29,121,145,100, 56, 18, +203, 47, 26, 68,115,153, 72, 15,165,130,178,243, 93,154, 94, 22,122, 96, 91,190, +141,109, 53,181, 29,116,245, 24,156,248,157,103,223,252, 14,225,198,147,190,113, + 15,170,151,191,111, 10,110,111,231, 60,197,219,246,242, 13, 59,202,159,181,200, + 78,143, 62,119, 56, 30,149, 43,206,245,250,133,111,139, 40,207, 78,250,237,207, +182,135, 92,211,145, 11, 43,238, 26, 2,195, 20, 30,189,204,117,238,175, 57,220, +245, 6,150,181,178, 24, 31,116, 58,146,109,131,220,137,224,246,142,185, 47,128, +102,157,231, 39,130,157, 37,224,205,141, 31,181, 86, 87, 57,219,129,220,184,147, + 30, 30,197, 80,148,164,219,166, 78, 54,173, 31,150,164,166, 33,200,248, 3,147, + 40,240,142,119, 18,117, 67,176, 65,217,125, 59,108,195,154,169, 29,187,147,232, + 12,125,223,164,207, 45,146, 96, 40,158,204,135,211, 53,215,213,192,255, 91, 42, +139,241,129,224, 26,143,134,179,145,153, 9,165,211,209, 32,159,124,168, 81,153, + 82, 10, 33, 42,210,180,160,146, 54, 3, 32,132, 16, 4,161,213, 1,178, 8, 73, +201,112,137, 33, 14, 10,104, 40, 80, 80,251,127,180, 1, 57, 36,146, 27, 49,183, +153,251, 10,220,101,157, 22, 43, 1,208, 63,109,224,182,207,198,211, 45, 23,176, + 43,234, 55, 8,119, 3,142, 41, 70,203,112,248,195, 72,178, 16,182, 37,114, 96, + 1,105,218, 24, 78, 20,149,132, 89, 30, 38, 74,238,191, 59, 38,149,142, 38, 16, + 86, 2,218, 36,251,176,158,224, 80,205, 46,249, 85,112,230, 72, 43,124, 33, 66, +145, 74, 1, 54,233, 58,219,103,125, 28, 43, 86,195, 59, 19, 29,146, 5,111, 33, +186,233,148, 87,161, 61,233, 10,172, 35, 74,174, 90,168,147,197,213, 95, 72,160, + 66,116,180,200,139, 34,145, 67,124, 34,134,198, 16, 31,179,155, 31,212,167, 53, +219, 83,162,125,251,152, 91,254, 59,159,121, 86,150,117,116,164,217,238,202,114, + 52,127, 82, 79, 48,111, 31,200,199, 52,166,177,158, 6,116, 25,221,174, 13, 12, + 79, 91,225,179,100,117,192, 94, 60, 33, 35, 98,116,222,121,113, 81, 70, 8,196, +170, 9,242,174,226,221,202,164,240,214,188,120,244,164, 33,122,178,188,148,249, + 64,153,249, 48, 77,164,106,227, 97,166,233,114, 54, 24,220, 18,143,210, 3,248, + 2, } ; -// ../Source/Template/GB_add_template.c: -uint8_t GB_JITpackage_65 [1639] = { - 40,181, 47,253, 96, 9, 26,237, 50, 0,118,125,182, 40,192,146,117, 14,106,182, -112, 62,191, 53,181,167,215,237, 25,162,165, 19,187,149, 16, 12,163,199,247,180, - 98,147,102, 17, 90,159, 62,253,174,162, 32,200, 6, 51,168, 0,173, 0,167, 0, -167,125,203, 13, 94,202,231,234, 5,206,221,189,189, 52,180, 97,199,111,152,189, -226, 60,182,183,111, 93,251,173,244,150,235,246,202,132,214,166, 23,223,182,200, -182, 49,184, 2,171,229, 27,126,161,106, 73, 7, 19,138,132, 59,109,126,241, 21, -144,155,235, 75,121,203, 72,216, 82,214, 90, 35,201,184,116, 38, 27,139, 64,182, -236,185,189, 29, 71,123,238,121,241, 85, 2,229,128, 34, 97, 64, 56,160,156,210, -166, 87,182, 69,243,242, 73,252,168,187, 53,212,160, 87,159,168,145,221, 55,193, -137, 10, 91,112,126, 31,190, 29,126, 36, 0,136,235,193,122, 37, 11,162,197, 58, - 88,185, 83, 54, 58,143,192,118,118,223, 95,225, 59,189, 47,196, 23,219,182,137, -201,137, 27, 24, 72, 18, 3,131, 92, 39, 94,160,140,252,102,232,118,134,249,120, - 98,231, 99, 61,152,142, 6, 69, 60,200,223,168,195,108, 99, 81,210, 96, 54, 30, -140, 5, 6,202, 84,112,188,113, 45, 64,217, 19,117,103, 89, 67,215, 57,252,131, -144,124,241, 87,107,240, 90, 6, 9,126, 49,133,133,107,105,213, 28,190,245,165, -109, 93,175,228,171,248,203, 28,151,164, 16, 73, 58,152,151,179, 23, 72,249,130, -123,243, 22,235,149, 75,217, 50,248,245,169,142,170,167,120,174, 17,190,225,100, - 54, 23,152, 79, 6, 3,131,125, 50, 76,155,227, 77,160,194,141,178,111,161,173, - 80,182,129, 80,104, 67,161,118, 6,231,237,245, 66,203, 96,197, 30, 7,109, 59, - 89,107,207, 30,108,235, 97,231, 61,211,150,248, 39, 22, 88,175,198,162, 78,155, - 28,175, 40,148, 79,182,218, 93, 14,253, 78,238,171,218,153, 86,176,218, 87, 96, -189, 19,228,239,159,119,110,148, 63,222,110,143,178,143, 60, 90,191,177, 13,111, -251, 8,150,214,190,125,202, 71, 32, 36,151,162, 62,166, 87, 34,166, 83, 83,119, -150,117,221,117,233, 33, 0,191,166,115,109,185,174, 11,100, 93,120, 64,159,171, -133,224,181,157,139, 99, 97, 22,159,136, 81, 34, 34,159,192,138, 93,215,117, 93, -215,117, 29,132,126, 49, 6,105,251, 1,194,174,190, 54,151,148, 82, 74, 41,165, -148, 82, 74, 41,165,148, 82, 74,201,245, 70, 29,106,181,125,206, 62,154,161,203, -248,238, 86,215, 11, 67,204, 30,237,209,208,225, 84,156,110,241,106,205,216,122, -204,169,154, 11,137,223,243,194,146, 36, 73, 26, 10,140, 84,219,212,244, 83,242, - 99, 2,179,216,122,108, 89, 33,217,116,249, 8,194, 76, 60, 98, 60, 81, 99, 97, - 46, 27,151,149,148,217, 36,169, 42,126,213, 71,156, 34,118,137, 28,205,229, 12, -156, 22,203, 94,117,244, 28,160, 95,229, 96,154,184,225,100, 64,153, 15,167,227, -205, 80, 72, 95,161, 72, 1,218, 36,224,188,133,158, 70,169,131, 44, 98, 58,177, -237, 91, 90,123, 53, 11,141, 44,194,109,203,118,106, 79,120,197,154,190,121,220, - 97, 32,148, 30,132,106,211, 47, 26, 12,197,166, 59,203,186,206,250, 44,203,178, -164,148, 50,198, 24, 45,128,233, 32, 15,230,243,137,212, 41,183, 88,166, 83, 30, - 41, 58,216,229, 18,233, 68,107,144, 41,115, 84,214, 99, 10,178,199, 71,147,251, -108, 81,129,173,168, 97, 73, 66, 35, 36, 34,146,130, 36,169,180, 6, 33, 9, 33, - 8, 74,167,206, 60, 98,144, 32, 21,145, 24, 2,129,136, 38, 48, 68, 17,162, 72, -137, 68, 2, 33,145, 96,164, 48, 73,218, 41,151, 35, 84, 98,207,148, 52, 37,209, - 0,253,205,142, 63,195, 35, 93, 0, 51, 43, 15,252,224, 66, 43,205,229, 66,233, - 64,168,235,166,196,173, 7,228,122,132,120, 26,184, 91,210,180,215,229, 7,124, - 34,232,191,122, 16,100,215,130, 88, 35,248,187,210, 65,116,195,242,244,143,175, -120, 86, 46,162, 2, 31,160, 98,252, 29,155,188,151,196,109, 0,194, 90,201, 74, -156, 52,191, 7, 77, 31,121, 63,134, 21, 14,114, 84,226, 88, 85,235,248,208,177, -192,211,211, 66,123,132, 32, 4, 75, 65,208, 92, 7, 97,122,177, 52,162,139,166, -116, 33,202, 21,220,209,199,210, 0,196,186, 17, 34, 12, 90, 34,170,215,208, 82, -107,247, 96, 92,233,107,116, 28,149,249,172,142, 66, 12,226,239,130, 77,124,235, - 38, 29,221,235, 43,132, 28,217, 14,196, 82,145,231, 42,211,190, 54,184,176,136, - 81,121, 16,189,104,134,208,155,205,117, 97,134, 67,240,220,251,189,172, 19, 91, -210,151,198,155, 48, 2,212,208, 64, 37,237, 4, 87,138, 82,147, 55, 88, 6, 2, - 20, 67,106,212,148,155, 94, 27,100,237, 78,219, 45, 83, 47, 29,176,125,148, 16, -203,215,188,150,176,181,144, 30,222, 8, 37,219,110, 54,216,255, 23,190,168,126, -179,137,186,210, 70,131,208, 58, 13, 51, 64,176,228,218,117,196, 51,226,204, 99, - 24,113,173, 29,198, 15, 98,180,152,233, 2, 38, 50, 58,135, 4, 92,240, 11,155, -194, 35,121, 30, 67,194,114,237,230,248,212, 94,116,204,105,119,187,254,108,179, -227,226, 76,192, 46,113,244,173, 29, 14,101, 68, 18,103, 17, 65,231,144,131,143, - 46,180,234,198, 67, 7,154,156,251,245, 68,213,176, 64,110,212, 15,112,174, 26, - 88,178,208, 13, 5, 69,223,153,220, 29,181,221,240,212,169, 17, 80, 21,232,205, - 44,241,230, 62, 50, 85, 29,171,167,137, 23,204,170, 20, 93, 35,205,108, 14, 20, -102,138, 70,170,199, 15, 68,177,152, 47,165, 69,227,115,178,198, 87, 16,145,172, -113, 74, 63, 84, 74, 25,106, 27,169,173, 11, 55,205,127, 77,119,154, 40,211, 37, -113, 3,144,218,160, 61,243,245,169, 88,197, 88, 68,105,189, 39,243,199,135,188, -201,171,223, 12, 67,229, 61,218,246, 77,237, 83,219,147,234, 26, 54, 81,232,134, - 5,189,147, 64,116, 94,159, 56,210,104,186,180,209,243,127,157,253, 98,100, 82, -162,116,166,254, 57,104,141, 36, 71, 34, 88,239,136,231,106, 99, 39,111,189, 24, -214, 40, 89,156, 61, 96, 6, 55, 53,101,127, 10,219, 28,113,128,239, 40, 58,192, -149, 65,250, 32,187,220,174, 70,213,248,116,212, 22, 23,168,147,191,191,234,174, - 89, 40,251,230,222,165, 87, 27, 28,158,133,108, 74,148,204,148,191, 7,237,176, - 86,247,168, 50,215,243, 41,207, 36,134,238,164,196, 23,129, 28, 33, 41, 2,249, -136,128, 1,116, 7,153,140,145,151, 52,252,110,246,118, 33,210, 29, 16,223,197, - 49,121, 88,244, 48,142,170,237, 41,114,183,135, 43,112,214,198,191,216,244,113, - 81,168, 65,201, 14,217,213,149, 89, 30,129,102,194, 77,104,100, 38,112, 58, 78, - 23, 14, 76,111,197,193, 10, 80,147,144,173, 18, 97,211, 9, 32,217, 56, 8, 7, -252, 71,220, 52, 28, 6,114,119, 21,207,164, 73,254, 81,152, 97,213,186,117,232, -253,185,254,222,117, 17,200, 44,138,234,193,239,154,194, 4,153, 81, 28,203,120, - 87, 80,231,169, 69,134, 65, 59, 84,242,188,110,198,199,117,238, 80,119, 26,139, - 94,201,171, 36,149,123, 38,209, 36, 51,157,176, 69, 45, 86,140,201,139,144,129, - 48, 75,160, 6,152, 27,186,217, 29, 7, 57, 79,103,108,162, 17,117, 50, 12,128, -220,237, 20,192,132, 87,174,159, 96, 0, 30, 75,179, 33,128, 65, 73,219,159,243, - 41, 7,109,179,150, 75,184,251, 35, 72,211, 96, 77,210,217, 24,233, 41,218, 52, -221, 42, 51, 45,109,230,230,154,102,109, 57,111, 92, 31,142, 85,122, 88,157, +// ../Source/JitKernels/GB_jit_kernel_subassign_22.c: +uint8_t GB_JITpackage_37 [554] = { + 40,181, 47,253, 96,100, 4, 5, 17, 0,214,221, 93, 33, 0,181, 30,150, 87,176, +218, 72, 60, 52,116,220,140,243, 35, 64, 72,162, 20, 0,251,243,145,128, 4, 0, + 51,249,255,191,251,195, 11, 83, 0, 82, 0, 87, 0,151,165, 64, 28, 46,175, 40, +229, 4, 93, 69, 19,226, 5,204,199,111, 99,176,106,156,192, 97, 91,246,133, 51, +107,139,215,121,134,220,239, 42,114, 83,158,118, 82,237,115,116,194,235,251,157, +235,250,249,191,145,143,222, 24,248,195, 23,180,112, 93,242,126,170,214,211, 35, +106,105,255,230, 15,201, 93, 65, 50,211,220, 96,152, 44,131, 33, 34,165,243,233, +180,225,103,249,232, 62,227,251,169,190,216, 84,204, 91,191,182,211, 11, 65, 76, +101, 72,207,125, 95,127, 14,125,227,235, 11,194,117,121,135,191,253,149,233, 80, +184,172,255,232, 12, 49, 95,228,175, 94,221,247, 59,137, 69,235,102,113, 32,152, + 66,247,162,252,250, 51,174,247,247,169, 25,183, 22,115, 66,226, 58, 4,242, 63, +123,250,226,186,233, 21, 61, 15,209,233,177,118, 82,223,255,137, 84, 36, 26,203, + 38,227,125,231,213,128,187,251, 68,154, 24, 94, 81,126,209, 92, 50, 24,105,209, + 36, 28,135,101, 27, 78,110, 17, 75, 38, 66,241, 13,203, 46,155, 38, 53,146,137, +204,180,105,178,109, 27,139,228,126, 56,238,209, 97,225,237, 91, 79,234, 99, 55, + 63,219,137,129, 1,211, 84,154, 24, 94,113, 92,228,241,200,178, 70,249,205,226, +254, 12,160,133,223,211,134,224,111,153,105, 0,255, 78,180,244,214,170,170, 4, + 20, 37,160, 66, 25,143, 70,143, 96, 58, 26,217,153,188,218,221, 15,120,242,211, + 98,136, 67, 25,202, 63,242,228,211,106,181, 12, 61,197, 32,195, 29,150, 28, 65, +111,184, 39,199,140,193, 7, 3, 69, 32, 64,132, 16,100,200, 57, 48, 4,190,157, + 43, 57,211,241, 65, 36, 88,149, 25, 39,222,136, 64,146, 32,204,136,195,215,128, +226, 25,136, 15,117, 63,116, 3, 39, 4, 1,128,229,129, 30,254, 6, 72, 51,136, +114, 40, 61,195,224, 0, 72, 51, 88, 19,188, 26,170, 0,198, 76,253, 32,176,210, +142, 63, 68, 65,232,167,179, 32,200,234,153, 0,186,215,240, 19, 63, 65,148, 6, +171, 60, 99, 96, 86, 49,194, 44,205,135,221, 50,172,165,189, 66, 24, 0, 71,149, + 78,172,125, 78, 62, 56, 56,147,233,248, 29,107,168,249,122,199,136,111,238,132, +187,225, 14,166, 69,147,115,200, 89, 42, 98,135,105,218, 12, 98,182,204, 84,125, +157,174,214, 57, 31,207, 95,189, 1,129,162, 40,112, 3, +} ; + +// ../Source/JitKernels/GB_jit_kernel_subassign_23.c: +uint8_t GB_JITpackage_38 [552] = { + 40,181, 47,253, 96, 86, 4,245, 16, 0,166, 30, 95, 33, 0,181, 30,214, 44,146, +104,166, 6,176,193,176, 9, 42,226,201,100, 81, 10,128,253,249, 72, 96,133,195, + 58, 75,255,239,254,240, 2, 86, 0, 84, 0, 88, 0, 22,115, 10,113, 25,174, 42, +113, 48, 92, 62,152, 2,167,114, 5,201,135, 91,152,143, 60, 13,126, 53,227, 20, +135,109,153, 23, 74,172, 41,184,215,117,115, 19, 6,253, 51,150, 97,198,156,250, +124,191,243, 92, 31,191, 23,114,204, 25, 4,119,184, 98, 90,136, 43,222, 78,205, + 89,114,118,142,246, 47,254, 79,212,213, 19, 51,205, 11,133,169, 42, 20, 2,151, + 19, 85,172,229,135,233,251,249,113,248,237, 57,229, 79,105,195,199,209,209, 61, + 6,111,167,186, 66,207,141,117,254,108, 37, 13, 63,112,198, 79,150,219,166,169, +184,130, 66, 92,222,129,158,126,202,100,176,174,234,189, 41, 67,204, 21,248, 43, +173,250,126, 23,169,102,221,170,205,227, 98,117, 15,194,159, 31,227, 89,123,157, +138,113, 27,223,129, 80, 34,153,138, 6, 67,191,163, 53,224,238, 62,145,166,133, + 15, 4,110,201, 88, 48,151, 88,209, 34, 28,135,101, 26, 46,110,144, 10, 6, 50, +241, 13,203, 44,155, 22, 51, 17, 73,204,180,105,178,172,221,180,162,181,202,210, +159,227, 58,239,207, 29,174, 55,199,169,199,219, 71,186,142,174,244, 7, 73,207, +175,156,142,121,119,165, 59, 36,145, 11, 6,211, 84,154, 22, 62,224, 56,136,195, +145, 97, 77,224, 23,111,253, 24, 48,173,215,210,134,223,235,152,105, 0,255,110, +219,121, 39, 90,187,251, 1, 26,189,188, 67, 48,140, 31,252, 33, 26,127, 86,155, +227,231, 39,248, 45,188, 81,197,209,231, 12,167,113,132,193,239,191,248,143,105, +190, 96,213,243,110,234,159, 41, 57,214,202,233, 58, 66, 32, 48,134, 16,100,200, + 57,254,128,111,249, 74,192,228, 65,162,100,102,192,240, 88, 80, 24, 4, 18,135, +194, 15,181, 1, 19,194, 0,192,242, 64, 15,127, 3,164, 25, 68, 57,148,158, 97, +112, 0,164, 25,172, 9, 94, 13, 85, 0, 99,166,126, 16, 88,105,199, 31,162, 32, +244,211, 89, 16,100, 53, 89, 0,221,107,248,137,159, 32, 74,131,103,158,225,192, +172,115,109,100, 55,100,248, 0,176,231, 3, 69,217,145,224,180, 89,212, 42,186, +248,210, 26,176,132,142,223,177,134,154,175, 7,140,136,230,102,184,113,237, 16, + 92, 52,239, 22,223,195, 52,109, 70, 45,219, 96,170,157,214, 5, 72, 13,150,143, +142, 68, 6, 60,223,242, 6, 4,138,162,215, 13, } ; -// ../Source/Template/GB_apply_bind1st_template.c: -uint8_t GB_JITpackage_66 [394] = { - 40,181, 47,253, 96, 63, 2, 5, 12, 0,102,151, 74, 33, 0,181,142, 1,202,145, - 96,116,103,248,176, 11, 75,176,143,166,171,186,195,164,118, 60,130,136, 70,112, - 23,243,255,127,175, 15, 33, 66, 0, 67, 0, 62, 0,135, 79, 77,126,210, 55, 84, - 33, 39, 88, 23,113,219, 3, 93,204,167,139, 53,161, 92,174, 95,132, 97,245, 87, -243,197,238, 11, 94,226,164, 83, 40,159,189, 63, 30, 94,103,216, 93,187, 12,178, - 59,219,218,176,225,203,201, 68, 93,206, 53,163,145, 23, 10,145, 42, 20, 2,215, - 52,190,193,188, 65, 47, 11,175, 79, 41, 56, 86,217, 96,178,235,127, 36,197,138, -112,160, 44,167,213,108,157,241,217,219,185, 27,219, 77, 66, 89,141,173,118, 39, -148, 6, 82, 33,108, 54,244, 89,109, 45,215,155,243, 92,203,187,206,250,132, 56, - 84, 7,106, 97,168, 2,141, 87,127, 60,203,255,113,106,119,215,173,165,237,192, -205,114,154,254,196, 82,111,213,126,220,206, 64, 32,254,231,117,222,217,174,171, - 95,205,207, 32,239, 21,228,169, 95, 14,228,239, 44,161,216,248, 82, 74,233,156, - 27,204,248,102,161,148,130, 7, 49,150, 98,169,250, 20, 94,242, 21, 10,118,145, -100, 48,171,187,218,249,148, 63,133,244, 19, 6,139,204,207,229,200, 83,204, 98, - 77, 46, 12, 98, 65,124, 55,246,180,207,153, 63,113,168, 60,205, 40,141, 0,228, - 59,247,241,164,193, 96,132, 57,119, 60, 63, 34, 32, 96,130, 49,166,243, 78, 8, - 80,184,246, 29,199, 1, 73,233,106, 63, 12,175, 84,235, 29,160, 98,206,177, 35, -131, 17,107, 91,164,182,102,194,189,217, 29,220,129,212,221,105, 38, 70, 4, 48, - 95,251,168, 8,220,111,208,112,204, 70,144,167, 53,230,147, 23,157, 98,189, 65, -147,134, 48, 19, 58, 2,172,161, 14, 56, 90, 20,117,110, +// ../Source/JitKernels/GB_jit_kernel_subassign_25.c: +uint8_t GB_JITpackage_39 [731] = { + 40,181, 47,253, 96,210, 5,141, 22, 0,230,232,121, 39,224,206, 88, 7,104, 71, +209, 4,109, 75, 82, 7,112, 5, 92, 19, 3,143,228,101,230, 43,189,146,135, 60, + 22,242,101,108, 60, 92, 84, 35,198, 72,145,193, 33,117, 0,106, 0,105, 0, 18, + 95,202, 47, 94, 36, 8, 5,135,169,226,143,229,203,154,223,182, 34,162,230, 82, + 82,143, 8, 30, 2, 15,201, 96, 64,224,241,198, 99, 60,186,241,227, 20, 62, 81, +207,172,174, 51,114, 30,109,168,139,196,186,156,173, 64,248, 90,119,109,184, 35, +182,129,164,196,160,227,114,179, 99, 39,234,135,217,190,199, 60,114,234, 8, 79, +184, 17,230,160, 1,137, 32,140,201, 33,111, 42,120, 52, 26, 17,239,117, 29,236, + 54,201,212,178,167,117,148,104,146,202, 29, 14, 72,114, 56, 2,147,229, 43,179, +110,235,239,217,186, 99, 94, 81,247, 5, 11,173,148, 34,218,118,147,186, 92, 30, + 50, 19,123,207, 53,248,209,120,223,212,125, 88,178,125, 87,202,120, 38,249, 19, +251, 49,132,204,207,201,139,109,155, 96,182, 15,225, 43, 29,188,102,125,205,115, + 93, 83,190,108,175, 67, 36, 24,165,235,164,179, 88,148,245, 53,249, 55,126, 82, +240,120, 85,173,102, 12, 36, 48, 61, 36,182,158,187,168, 67, 44, 71, 24,155,114, +101, 9, 23, 74, 70, 67, 97,248,133,146, 52, 92, 42,141, 99, 89,104,146, 10, 4, +157, 58,140,175, 55, 86,203, 21,141, 9,163,130,210,223, 56,105, 26,221, 51,105, +113,254,169,177,139,198,211,122,204, 47, 79,119,207, 86,223,234, 56,193,246,186, + 87, 76,235,139,234,133,150,127,170, 88,118, 38, 38,145,185,121,204, 63,113,231, +150,173,142,252,190,216,124,199, 55,214,121, 68,249,195,143, 56,235,152, 81,119, +254, 56,235,212,189, 83,127, 16,116, 1, 69,222,216,108, 40,147,137,196, 86, 24, +167, 22,107,182, 0,111,226,118,242,154,220, 13,224, 92, 97,242, 81, 8,198,138, +114, 0,108,214,197,174,122, 53,143,229, 9,216,248, 69,121,155,135, 95,157,145, + 39, 72, 45,155, 71, 56,108,153,173,147,103, 99,182,240,210, 26,251, 81, 12,222, +243, 92, 71, 74,247,222, 28, 65,193, 88, 56,153, 7, 13,228, 10,198,128,255,135, + 44,160,200, 27,140, 55,112, 26, 52, 14, 45, 83,177,108, 54,148,228, 97,211, 2, + 97, 32, 32,132, 16,231,174,234,254,128,111,244, 74, 30,227, 64, 12,224,162,203, +204,152,195,111,128, 98, 5,200, 59, 20,252,112, 55, 96, 66, 60, 0,176, 60,208, +195,185, 1,242, 12, 98, 28, 74, 43, 24, 15, 0,213,130, 5,193,175,161, 42, 96, +204,212, 15, 2, 43,237,248, 79, 20,132,126,170, 5,129, 86,219, 4,160,189,134, + 15,241, 19, 28,105,176, 68,103, 8,156,193, 27,217,133, 13,243,176, 92, 44,105, +118, 19,236, 10, 45, 57,153, 65, 24, 40,245, 13,232,191,233, 90, 3, 80,135,255, +144, 99,224, 8,203,173, 99,142, 1,210, 12,201,145,136, 3,239,177, 81,194,130, + 65,164,179, 24, 32, 33, 24, 42,151, 81, 57,150,188, 57, 20,116, 25,211, 45,248, +124,196, 29,248,118, 13, 17, 70,195,160,143,109,117,224,139,176,132,113,210,226, +129, 89, 97,174,206, 76,103, 72,220,125,237, 97,243,210,163,193, 87, 93,131,139, +146, 91,104,155, 40,103, 51,100,108,133,191, 26,125, 54,205,207, 51,211,219, 64, + 88,173,127,130,166,142, 0, 64, 69,193, 16, } ; -// ../Source/Template/GB_apply_bind2nd_template.c: -uint8_t GB_JITpackage_67 [392] = { - 40,181, 47,253, 96, 63, 2,245, 11, 0,134,151, 74, 33, 0,181,142, 1,166, 20, -101,120, 35,252,169, 19,156, 81,183,187,103,176, 51,198,100,132,156, 9,137, 81, - 99,243,255,127,175, 15, 33, 66, 0, 66, 0, 62, 0,213,103, 38, 79, 63, 28,178, -144, 19,234,195,109,119, 32,140, 57,189,212,201, 99,211,214,139, 44,238,231, 89, -125,185, 27,131,151, 56, 67, 90,229,117,119,199, 69,214, 23,119, 91, 78,131,238, -198,180, 92,105, 25,115,176,144,211,218, 98,143,200, 11,133, 56, 21, 10, 1,181, - 50,190, 65,189,193, 14, 19, 89,159, 82,240,171,178,193, 96,214,255, 72,138, 20, -161,154,238,150, 89, 93,191,240, 46,238,224,157,175, 38,153,238,151,111,134, 39, -147, 6, 82, 33,104, 55,228,221,239, 90,254,237,205,131, 45,231,184,122,122,168, -168,106, 82, 24,168,103,156,186,227, 90,254,143, 51,195,219,238, 79, 94, 14,212, -238,150,125,159, 89,126,154,189,222,182, 49, 16,152,239,117,157,115,151,227,172, -103,245, 53,168,187, 5,121,172,167, 3,250, 27, 67, 36,118,198,115,134, 82, 10, -194,127,147, 49, 38,170, 53, 49,150, 98,137, 58,165, 78, 67, 75,190, 66,185, 46, -146,204,117, 63,206,118, 78,245,169,168,158, 98,174,200,252, 96, 43, 95, 47, 75, -157, 88, 23,228,130, 25,239,220,101,159, 83,159,114,170,124,197, 30,143, 8, 64, -190,131, 31, 79, 26, 12, 70,217,190,113, 29, 33, 32,112, 2, 25, 91,121, 14,217, -236,130,195,128,164,187,218, 14,195, 95,170, 22, 7,168,124,231,208,145, 33,136, -181, 45,178, 90, 51,225,222,236, 14,237, 80,134,121, 34,219,123,198,195, 24, 46, -236, 81, 10,147, 8,249,138, 33, 79,107,204, 39, 47, 58,197,122,131, 38, 25,194, - 76,232, 8,176,134, 58,224,104, 81,180,184, 1, +// ../Source/JitKernels/GB_jit_kernel_trans_bind1st.c: +uint8_t GB_JITpackage_40 [417] = { + 40,181, 47,253, 96,198, 2,189, 12, 0, 22,151, 75, 33, 0,181, 30, 86,165,132, + 54, 37,231, 48,117,167,118,139, 25, 30,186,141, 99,136, 36,154, 53, 6,108,241, + 72,254,255,239,245, 33, 4, 66, 0, 66, 0, 66, 0, 84,223, 16,216,240,170,250, +104,179, 63,158,251, 57,245,170,102,109, 50, 56,102,138,215, 35,152,189,223, 23, +228,201, 73, 80,169,104,122,254, 56,195, 69,151, 43,194,106,107, 3, 6,223,139, +213, 24, 28,183, 21, 31,143,223,177,251,114,172,149, 57,129, 32, 41, 2, 33,182, +162,113, 92,125,124, 51,143, 9,200,137,115, 65,231,220, 80, 22,170, 3,245,155, + 16,204,213, 21,227,223,204,221,248, 49, 14,234, 53,254,240,106, 20,165,193, 85, +152, 15,141,175,191,115,189, 55,154,219,185, 40, 86,167,136, 67,225, 64, 37, 12, +133,131, 79,225,244,158,161, 17,113, 88,214,139,212,238,179, 26, 22,233, 48,136, +107,213,218,180,204,126,142,135,148,165,130, 83,167,215, 53,157,219, 48,207, 49, +193, 94,139, 96,198,105,205,213,233,135,101, 11,159,110, 97, 93,213, 46,172,225, +238, 78,146, 22,159,106,166, 87,158,220, 22, 82,150,228,194, 39,207,195,174, 75, +226, 89,107,204,166,227, 17,180,127, 4,132,213,111, 80,204,158,223,246,245, 39, + 3,252, 49, 32, 49,196,119,218,160,140,175, 21,249, 52,216, 26,127,194, 57, 7, +211, 49,174,242, 89,138, 37,201,233,219,183,117,156,253, 2, 39, 32, 48,198, 8, +198, 92,242,148,101,103,202, 5, 8, 7,249,128,100,172,223,216, 73,103, 48,170, + 8,152,132,147, 15,129,168, 1,222, 47,108,177, 20, 18, 0, 0, 72,121, 92,148, +121, 10, 48,149, 6,232, 7,128,131,177,214,140,201, 0,235, 10, 0, 7,135, 54, + 24, 17,135, 81,199,189, 3,141, 7, 83,251, 3, 23, 18,240, 47,106,180, 95,166, + 98,108,154,157,103, 38,219, 12,172, 86,188, 16, 40, 84,244, 14, 1, } ; -// ../Source/Template/GB_apply_unop_ijp.c: -uint8_t GB_JITpackage_68 [743] = { - 40,181, 47,253, 96, 68, 8,237, 22, 0,118, 35,106, 32,224, 26,231,144,114,132, -156, 16,101, 12, 86,110,108,163, 35,248,168,179, 79,154,173, 57, 2,155,140,146, -132, 25, 82, 98, 76, 8,100, 0, 92, 0, 96, 0,180,189, 12,161, 49,237,110,106, - 8,160, 10,167,224,181,234, 54,238,206,113, 6, 75,179,243, 48,220, 30, 21,137, - 67,130,208, 64, 28, 18,215,186,236, 17, 79,149,172,188,176,189, 5,230,138,154, -159, 71,207,166,153,128, 86,222,139,163,241,149,214,211,121,166, 60,152,233, 37, - 58, 61,218,182,189, 71,109,203,110,235, 35,167,220, 97, 77,147,179,149,166,184, - 86,104,173,228, 38,151, 27, 12, 24,193, 96, 8,143,188,187, 25,226,141,203,248, -206,239,244,220,205,155,113, 95,193, 51,183, 96,100, 58,159, 49,253,143, 97, 46, - 12, 43,220, 14, 67,217,189,193,124,186, 29, 85,239,119,175,167,173, 29, 73, 66, -160, 60, 90,137,202,147,244,190,242,148,123, 84, 78, 74,197,143,120,126,251,151, -249, 67, 18, 42,101,122,147, 78,101,247, 13, 59, 20, 18,132, 6, 59,105,183, 59, -110,207,111,230,142,232,200, 30, 31,137, 34,207,242,167, 91, 87,175,244,184,171, -119, 42,249, 55, 7, 3,200,227,135, 71, 50, 68,236, 38, 74,210,150,151,117,152, -242, 26,236,240, 53,202,109, 25,246,100, 95, 48,115,168, 20,253,173,223,195, 43, -237, 45,170, 94,162, 74,242,218,128, 55,243,185, 80,210, 58,243,196,213, 62,114, - 22,229,143, 39, 46,184, 50, 99,139, 79, 88,102, 58,144,225,131, 59, 53,183, 5, - 24,246,181, 71, 83, 1, 12,123, 97, 47,155,157,179,225, 66, 26, 14,103, 27, 89, - 81,167,232,204,154,102, 31, 73,147,201, 5,144,253,155,135,220,254,113,171,153, - 16,131,168,209, 14, 85,210,114, 98,140, 49,122,180, 31,185,205,114,184,143,229, -242,120, 4, 55, 14, 51,185,152,240, 4,243, 91,164,211,122,175,179,188,109,235, -155,244,154,207,210,254,213,103,143,206,239,144,159,254,184,166, 5,128,128,168, -113,181, 66,166, 70, 68,130, 4, 73, 10,147, 66, 99, 48, 66,130, 16,179,236,226, -192, 76,136,243, 16, 18, 64, 67,232, 36, 94,137, 68,242,199, 7, 61, 52,206,188, -214,118,135,196,127, 85,251,172,225, 91, 29,184,165, 73,137,180,254, 76, 84,208, -144, 88,166,218,236,226,113,139, 14, 27,151, 73,192,134,198, 90, 11, 69, 10, 82, - 1,137,121, 13,143, 13,223,171,143, 36, 15,219,136,201,249,126, 92,166,183,150, - 73,198, 78,145, 74,217,146,114,170,109, 26,166, 17,123,253, 60, 70, 32, 3, 29, -172, 50,174, 48, 67, 97,219, 78, 14,136, 1,175, 82,250,144, 11, 12, 99,147, 66, -204, 96,104, 27,237, 22, 96, 10,234, 24, 49,110,185,176,218, 24, 40, 64, 3,211, - 78,200,136, 59,236,183,162,241,138,163,118, 84, 51, 82,129,173,166,220,239, 31, -184,142, 55, 36, 17, 44, 9, 17, 68, 37,128, 50, 98,224,191,138, 49,177,172,206, - 17, 70,128, 73,146,144,180, 67, 70, 0,206,102,217,130, 58, 64, 53,131,229,186, - 52,186, 75, 36,118,249,114,243,174,196,177,132,204,182,137,183,247,142,227,132, - 81,241,123,121, 2,236, 86,130,114,228, 38, 75,159,130, 2, 27,133,150,151,140, - 8, 23,143, 88,207, 9,111,128, 14,133, 65,165, 46,205, 63,214, 9,165, 0,165, -150,254, 50,238, 84,143, 36, 54,210,166, 9,253,204, 52, 30,104,240, 93,144,174, -212,113,155, +// ../Source/JitKernels/GB_jit_kernel_trans_bind2nd.c: +uint8_t GB_JITpackage_41 [415] = { + 40,181, 47,253, 96,194, 2,173, 12, 0,118,152, 79, 33, 0,243, 54,238, 78,154, +144, 55,131,212,134, 19,186, 85, 5,166, 96, 65,135,200, 50,194,187, 83,237, 76, +143,168,170, 90, 16, 8, 16, 70, 0, 70, 0, 70, 0, 46,137,145, 87, 19,119, 66, +204, 41,235, 31,204,230,108, 48,232,245,179,155,133,209, 97,169, 37,222, 44, 67, +253,253,198,231, 71, 37, 79, 21,216,200, 53,199, 23,238,185, 60, 33, 82, 99,174, +198,140, 43,215,204, 97,185, 47,249,185,124,205,221, 56,115, 45,205, 9, 4, 58, + 17, 8, 1,209,103, 28,160, 29,119, 39, 91,215, 89,183,252,152,207, 0,149, 62, + 94, 51, 56,204, 96,145, 22,168,106,122,140, 24,106,235,137,242,177, 5,239,252, + 35, 99,122, 51,191,136,183, 73,130,117,212,248,157,242,205,247,220,220,152, 11, +246,156, 36,173,215, 67, 85,168, 38,132,161, 80, 5, 94,119,177, 71,133, 61, 24, +214,253, 30,214, 3,239,150, 61,188,204,225,155,181,184, 77,187, 32,163, 65,105, +136, 82, 10, 94,189, 94, 87,228, 29,151,125,140, 72,246, 38, 25, 90,188, 90,237, +213, 99, 45,152,105, 10,151,108,230,217,237,202, 48,119, 74,113, 16,165,184,100, +117,189,116,148,134,168,194,165,239,203,174, 11,242, 93,171,212, 34,207,229,185, +191, 4,136,212,239,144,212,155,223,247, 77,142, 6,248,143, 39, 41,102, 28,112, +119,151,246,169, 51,190, 31,151, 6,219,204, 28, 49,138, 6,145, 47,252,227, 89, + 55, 1,239, 4, 68, 21, 46, 69,206,129, 92, 31, 32, 64,196, 8, 74,217,110,148, +201,190,204, 5, 28,148,254,224,109,195,120, 34,112, 11,144, 6,164,116, 92, 60, +243,116,128,234,229,130,131,241,239,140,185, 2,212, 3,128,237, 11,237,146,138, + 15, 74,142,223,111,201,110, 18,246,241, 59, 55, 74, 1, 81,163, 80,101,200,220, +166,249, 16,102,170,195,208, 26,196, 11,129, 66, 69,193, 16, } ; -// ../Source/Template/GB_apply_unop_ip.c: -uint8_t GB_JITpackage_69 [372] = { - 40,181, 47,253, 96,136, 2, 85, 11, 0, 6,151, 72, 33, 0,181,115,106, 8,156, -239, 98,247,240,113,109,199,218, 70,187, 99,124, 64, 81,255, 6, 0,172,160, 66, -225,164,255,223,254, 67, 9, 63, 0, 64, 0, 60, 0,144, 91,243, 34, 46,127, 94, -197,156,186,204,201,197, 93, 10, 70, 22,141, 65,122, 47,157,107,120,137,245,246, -187,168,179,223, 61,182,106,182,111,107,167,166, 41,127,191, 59,254,248,226, 86, -236,126, 54,196, 68,221,189, 20,187, 34, 31, 12, 98, 53, 24, 4, 90,119, 29, 47, -252,188, 59,183, 52,251,140, 4,203, 80, 53,151,209, 59,191, 0,187,110, 53,219, -214, 36, 85, 99,219, 89,157, 84, 25, 72,197,210, 26, 4, 54,110,203,113,230, 60, -213,242,174,155,167, 14, 6,130,161, 82, 20, 8,134, 79,153, 60,133, 43,136, 6, - 25,203,238, 66,173,185, 12,127,178,216,148, 88,163, 13,114, 25,243, 66,123,240, -219,222,117,215, 81,144,222, 95,239, 59,245, 60, 20,188, 1,198,239, 51,134, 72, -100, 91, 67,143,255,127,140,164, 24,173,199,135, 79,225,250,249, 77,242, 91, 1, - 49,110,173,217, 48, 16, 99, 41,150,166, 43, 95,161, 96,154, 73,165, 50,177, 43, - 50, 77, 31,170,202,115,238,166, 67, 91,179,253,178, 79,211, 61,213,153,242, 19, -187,174, 8, 64,126,171,143, 39, 9, 4, 35, 75,223,248, 61,227,132, 59,126,101, - 86, 51, 13, 25, 0, 69,113,207,171, 92,137,150, 77,177,100, 32,118, 3, 46, 38, - 59, 92, 38, 67, 13,214, 18, 75,245,192,149,105, 11, 46,174,204,200, 84,120,237, -159,136, 44, 51,233,161, 48, 3,217,120,232,101, 46, 98,205, 59, 54,205, 31,194, - 76,209,161,176, 53,152, 39, 12, 10, 21, 5, 67, +// ../Source/JitKernels/GB_jit_kernel_trans_unop.c: +uint8_t GB_JITpackage_42 [371] = { + 40,181, 47,253, 96, 11, 2, 77, 11, 0,182, 22, 73, 33, 16,179,115,230, 25, 36, + 36,130, 0,140,142,184,125, 54,212,214, 77, 75,220, 47, 98, 8,179,114,253,108, +117, 68, 0, 0, 8, 28, 4, 63, 0, 64, 0, 61, 0, 15,109, 50,232,161,149, 83, +155,196, 24, 27,203,221, 71,162,241,229,236,214,153,134, 91,180,224, 67,151,171, +225, 47,152,249, 36,144,210, 45,248,197,175, 39, 58,203,130, 53,156,184,114, 55, +207,175,235,237,206,204,148, 51, 25,143, 15, 6,177, 26, 12, 2,212,130,139,235, +137,172,145, 85, 34,193, 50, 84,189,233, 56, 43,159,184, 77, 51, 52,215,246, 32, + 85,227,218, 29,197,170, 75, 67,179,188,254,220,198, 77, 57,206, 27, 13,165,252, +251,228,169,131,129, 96,168, 16, 5,130,225, 83, 39,157,194,244,195, 53,110,201, + 49, 78,161, 83,156, 83,244, 20,136,233,148,242,167, 64,151,116, 45,155, 88, 38, +105,169,203, 74, 90, 54, 49,152,166,201,174, 52,211, 94, 32, 78, 28,202,113,104, + 7,106,175,210,131,249,153,222,171,157, 65,125, 5, 14,125, 21,188,215, 56, 60, + 14, 49,142,162,226,211,182, 57,174,203,178, 77,198,173, 55,204,125, 1,157,213, +153,251,172,167,243,108, 12, 90,192,219, 11,191,174,210,192,255, 71, 81, 84,124, +146,158, 85, 50,138, 54,183,137,164, 84, 38,230,152, 80, 28,146, 99,146,145, 97, +143, 89,129, 68, 2, 24, 0, 71,128, 66,169, 91, 60,162, 5, 1, 88, 18,130, 52, + 74,200,113, 38,220, 20, 51,243,154, 2, 22,192, 93, 9,240, 77, 64,108,162,234, + 82,160,137,148,254,224,102, 7,133,217,210, 94,242,217, 11,109,154, 54,207, 76, +209,214,176,213,166, 51, 12, 10, 21, 5, 67, +} ; + +// ../Source/JitKernels/GB_jit_kernel_union.c: +uint8_t GB_JITpackage_43 [345] = { + 40,181, 47,253, 96,254, 1,125, 10, 0,166,211, 65, 33, 0,243, 54, 62, 39,121, +224,154,217,106,195,174,130,223, 19,127,115, 26, 20,140,217,201,153, 28,230,209, + 65,254,255,111, 93, 2, 8, 56, 0, 56, 0, 57, 0, 28, 44,250, 20, 98, 94, 86, +158, 87,115,136, 71,245, 61,195,223, 56, 13,235,228, 81, 76,121,215, 29, 12, 3, + 18, 80,104, 62,101, 3,108,161, 57, 98,172,114, 7,231,212,154,159,245,111,236, +198, 26,155,113,110, 89,149,178,172,229,120, 79,204, 17,250, 49, 6,239,252,100, + 71, 61,154,127,196, 30, 85,105, 72, 42,242, 61,250,209, 7, 29,221,101, 6,131, +110,154,152, 79,134,139,112, 81,135, 2,225,114,105,140,124, 66,177,231, 54,188, +194,252, 83,238, 78,183, 60,205,235,155,196, 34,218, 74,193,183,176,163,108, 54, +236, 62, 99,204,147, 1,119,247, 10,170, 9,151, 34,255,196, 15,148,216,200,215, + 69, 38,214,219, 34,224,246,112, 15,203, 62,143,179, 98,231,176, 25, 87, 9,213, + 69,125,181,134,106,194,165, 48,220, 52,109, 18,218, 76,115,145,103,157,238,215, +128,177,250,125,205,147,243,219,146,228, 5,248,147,169, 57,102, 28,112,203,254, +139, 69,202,216, 74,130, 40, 18, 68,190,112,125,205, 59,162, 54, 27, 32, 96, 70, + 32,211,202, 3,132, 80, 37,131,174,133, 89, 27,177,225,114,216,129, 64, 25,140, + 43,144,193,195, 34,131,131, 5,178,163,205, 10, 13,227,205,109, 86,213, 62,206, + 1, 48, 15, 19,207,212,160,201,121,102, 66, 27,132,213,252, 49,178, 99, 86,191, +195,158,162,119, 8, +} ; + +// ../Source/JitKernels/GB_jit_kernel_user_op.c: +uint8_t GB_JITpackage_44 [298] = { + 40,181, 47,253, 96,158, 1, 5, 9, 0,214, 17, 59, 23, 16,159, 3,194,167,176, + 30, 15,242, 94,115, 48,129, 11,147, 53,148,136, 0,160,136, 3, 1, 52, 0, 52, + 0, 52, 0,125,150,201,248,235,180, 90,127,128, 12,211,164,220, 99,248,205,254, +170,103, 55,139, 39, 95,134,207,127,240,194,190, 41,141, 24, 30,229, 62,215, 99, +219, 95,185,179, 35,173,174, 99,100,253,113, 0,197,113, 4,165,170, 21,226,212, + 25,102,183,229, 62,119,239,103, 58, 69, 85,239,219, 22,122, 98, 81, 16,165, 96, + 18, 68,121,161, 12,158,152, 85,155,156,222,128,254, 78,105,216, 85,193, 39, 62, + 72,139,210,152,148,173, 38,193,255, 63,128, 3,206, 11,193,115, 32,231,117, 99, +199,141, 30,245,133,163, 70,109, 30,149,189, 6, 69,156,102,141, 99,100, 1,136, +161, 20, 61, 45,201, 24,250, 70,238,234,169,210,111, 55,175,162,207,111, 15, 0, +144, 3,206, 11,223, 71, 73, 82,248,141,145,108, 5,255,202, 53,221,229,173,162, +166,179,155,206, 11, 27,119,129,210, 22, 86,145,245,194,240,166, 10,219, 65,240, +207, 11, 47,172,210,229, 91,159, 67, 17, 0, 67,101, 66,202,128, 84,119,108,205, +158, 35,106, 60,175, 75,254,235,233, 40,174, 35, 98,178,152, 68,128, 27, 52,127, + 8, 51, 69, 7,198,214,192, 47, 6,195,207,181,147, 19,123,138,130, 33, } ; -// ../Source/Template/GB_apply_unop_template.c: -uint8_t GB_JITpackage_70 [420] = { - 40,181, 47,253, 96, 45, 3,213, 12, 0, 6, 25, 79, 34, 0,213, 22, 3,106,132, -109, 87, 58,203, 2,207,174,120,108,139,249, 81, 66,108, 6,232, 64, 66, 1,239, -157, 96, 46,253,175,255, 80, 2, 71, 0, 70, 0, 67, 0,244, 87, 2, 97, 64, 96, -140,131, 1,113, 11,172,126,233, 43,170,145, 23,232, 73,226, 46,201,155,249,133, -161, 29, 68,204,213,156, 52,172, 54,107,198,216,125, 79, 12,101,209, 42,151,223, -206,189, 1, 22,236,174, 99, 38,237,254,114,137,207,143, 52,230, 92, 63,200,228, - 89, 70, 97, 89, 22,249,251, 83, 44, 54,190,248,126, 35, 74, 41,213,190,207,242, - 27,113,183,170,111, 31,113,131, 75, 60, 78,230,227,254, 83, 38,202, 80, 64, 96, - 86, 4,107,166,111,152,246,130,238,198, 54,164, 96, 86, 99, 11,222, 14,219, 68, -188, 66,104, 69,166,213,246,114,189,197,208,189,124, 28, 3, 35,238, 89,118,202, - 68, 32,148,112,189,227,249,218, 13,223,158, 43, 11,188,187,110, 93,217,241, 12, -173, 8,234, 91,184,210, 97,181,166,184, 63,242,196, 55, 75,208, 71, 59,142,213, -172,249,153, 44, 95,201, 80, 53,115,224,212, 77, 86,215,105, 42,223,182,127,104, -117, 80, 20,117,210,110, 79,124, 55, 46,193,127, 40,128,123,185,241,125, 40, 32, -101,144,180,228, 73, 99,253,231,129,209,107, 86,151, 89,227,106,238,151,248,151, -213, 21,124,174,228,190, 31,171, 71, 75,157,180, 91,249, 87,174,238, 89, 62, 78, -231,121,180,250,183,123,114,231, 1, 35, 32, 80,130, 65,202,172, 60,165,196,241, - 25,108,243,203, 23,184, 9, 83,208, 13, 75, 93,132, 55,103, 0, 24,132, 4, 27, - 35, 43,203, 15,129,249, 5, 98,122, 40,201,149, 88, 28,231,128, 85,108,173, 2, - 88,148, 4, 51, 50, 97,153, 29,155, 26,190,211,238, 20,154,129, 8,249, 58, 16, -132,104, 42, 73,129, 30, 52, 61,207, 76,108,227, 95, 45,124, 23, 90, 20,189,110, +// ../Source/JitKernels/GB_jit_kernel_user_type.c: +uint8_t GB_JITpackage_45 [290] = { + 40,181, 47,253, 96,154, 1,197, 8, 0, 54,208, 54, 21, 16,253,106,158,251,225, + 11, 88, 95,179, 57, 53,240,156,129, 69, 4, 0, 16, 56, 8, 48, 0, 48, 0, 48, + 0,244, 92,202,223,175, 87,251, 3,252,249,225, 21,253,103,225, 75, 63,199,168, +247,224,133,249,198, 52,190,140,215,228,252,105,155,116, 63, 60,255,150,172, 87, +150,140, 44,127, 28, 64,113, 28, 1,231,191,231, 79,127,207,211,181,154,174,158, +119, 93,200, 19,139,130, 40, 5,147, 32,138, 23,204,192, 19,244,122,151,147, 55, + 32,143,171,117,252,174,160, 39, 62, 72,139, 84,185,156,173,230, 7, 29, 73,117, + 35, 72,122,212, 23,146, 26,181,121, 84,230, 53, 40,226, 52,139, 36, 35, 11, 64, + 12,165,248,170, 89,202,144,111,230,191,162,107, 13,255,243, 42, 62, 13,127,115, +213, 10,113,234,140, 0,176, 3,142, 23,190,143,146,164,240, 35,163,217, 10, 60, + 60,219,245,159,183,138,154, 72, 24,253, 39, 26,251,199, 11, 63, 95,105,114, 8, +188,247, 30,208, 1,199, 11,129,231, 64,206, 11, 21, 0, 69,101, 26, 20,135,164, + 44, 77, 29,136, 35, 0, 18, 22, 80,101,120,101, 79,244, 22, 39, 65, 72, 3,197, +117, 70, 76, 22,139, 8,112,131,230, 15, 97,166,232,176,216, 26, 94, 49,120,147, +218, 19,212, 50,219,137, 61, 69,193, 16, +} ; +// ../Source/Shared/GB_Operator.h: +uint8_t GB_JITpackage_46 [578] = { + 40,181, 47,253, 96,139, 4,197, 17, 0,230,155, 84, 31, 32,149, 27,230,119,146, + 39,133, 81,181,135, 82,177, 80, 81, 73,102,148, 66,244,230,172,130,211,144,124, + 73, 16, 18, 34,120, 77, 0, 75, 0, 75, 0, 23,158, 19, 99, 10,113,176, 14,213, +194, 96, 29, 88, 0, 3, 76, 93, 31, 61, 7, 19, 48,238,228, 87,145,103,152,194, + 96,146,134,220,158,133, 48,250,218,183, 97,250,157,195, 76,247, 97,131, 60,149, + 43,207,249, 88,171,124,105,245,119,234, 90, 71,102, 72,130,173,255,108,111,149, +172, 1,225, 66, 97,170, 10,133, 15, 57,251,151,231,163,182,159, 58,183,232,221, +150,207,125,185,173,242,176,103, 99,178, 6, 9,194,145, 62,111,144, 58,210, 8, +181, 85, 58,251,168, 38,107, 88,200,100, 17, 14, 85, 75,248, 54,140, 25,182, 93, +243,167, 29, 35, 85, 95,218,208, 37,213,198, 97, 33,196, 30,217,190,125,225,251, +242,227, 1,148,155,166,173,114, 18,137,134,194,211, 86,169,123,186,142, 68, 42, + 93, 95,226,222,186,140,197,182, 50,117, 93,126, 8,214,233,225, 8,128,117, 78, +173, 94,156,217,142,175, 37,127,118, 99,151,124, 62,202,241,135,250,195,254,142, +108,171,198, 23, 67,255, 60, 17,127,150, 80, 48,243, 52, 17,218,114, 1,211,116, +111, 55,105,229, 75, 89,172,185,188, 79,114,177,255, 49,107, 29, 7,149, 59, 86, + 72,253,167,115,108,241, 21,187,178,125, 57,249, 31,218, 51,251,236,128,184,184, + 67,121, 72,178,199, 4,163,100, 27,108,194,161,108,159,132,238,113, 15, 41,186, + 95, 91,165, 92,198,184,117, 99, 90,253, 97, 97,168,145,169, 51,135, 74, 65, 10, + 82,144, 26,173, 1, 48,132, 16,197,204,234, 1,114,184,168, 2, 7, 84, 72,146, + 42, 82, 82, 70,237,255, 60,117, 40, 93, 20,240,161,204,124,253,183, 88,229, 32, +147,202, 76, 49,241, 24, 60, 3, 23, 25, 74,138, 61,171,245, 61,185,171,189, 33, +137,116,189,166,217, 58,120,213,123, 83, 31,150,123,196,103, 34,110,163,143, 14, +220, 12,162,131, 0,179,249,232,121, 89,201,186,200,222,233, 68,206,160, 40,204, +172,167,255,143, 98,149,191, 4, 78,132, 17,174,249, 74,235, 25, 17, 20,252,193, + 73,243,184, 8,193,237,217, 26,173,110,195, 26,143,186,169, 99, 48, 16,136, 67, + 81,118, 16,172, 74, 43,147, 12, 78, 48,192, 6,163,168, 23,133, 67,119, 48,100, +156,248, 66,188,202, 59, 97,120,137,177,131,131,138,235,239, 80, 69,105, 67, 40, +204,192,203,110,197, 13, 90,186, 31,247, 31, 10, 73,221,203,192,181, 5, 33, 0, +107,218, 52,147,202, 76,119, 33,164,117, 69,174,191, 88,169, 84, 11,240, } ; -// ../Source/Template/GB_assert_kernels.h: -uint8_t GB_JITpackage_71 [986] = { - 40,181, 47,253, 96, 43, 14,133, 30, 0, 54,172,134, 40,208,206,108, 14,116,121, - 77,128,239,142, 86,102, 45,172,211,208,220,132,208, 82,163,158, 68,175, 41,230, - 96, 97,122, 44,178, 78,121,145,171, 25,120,225,124, 1,122, 0,124, 0,119, 0, -231, 79,223,211,176, 94,187, 26,206,221,109,218, 28,207,119,104,119, 58, 33,135, - 39,100,224,128, 52,184,147, 17,164, 30,169,220, 92, 95,202,243,106,176,165, 44, - 27,107,108, 42,140, 99, 50, 69,101,203,217,237,237, 58,157,221,243,168, 79, 8, - 16, 3, 72, 35,225,192, 0,114, 73, 70,159,108, 83,196,234, 14,234, 22,221,253, - 62,173,125,202, 80,152,164, 3, 99,165, 68,216,214, 8,102,248,118,152,129, 44, -253,250,145,206, 97, 61,166,149, 61,219,173,108,109,220, 36,148, 63, 30, 80,227, -241, 8, 23,134,105, 44, 91,118,217,104,191,192,225,178,113, 61,233,100,143, 19, -109,179,245, 56, 35, 67, 65,225,146,229,194,166, 0, 26, 49, 7,188, 7,124,219, - 44,236, 90,216,182, 7, 60, 50,217,235,200, 61, 32, 58,166,162,169, 36,128,232, - 92, 95, 68, 92,218, 68, 28,214,123,219,223,252,241,248,127, 8,162,104, 36, 86, -197,181,150, 89,153, 12, 5, 41,252, 81,112,233, 81,193,227, 44, 0,105,217, 69, - 66,157,227, 73, 67, 1, 40, 34, 57,237,253,243, 85,238, 22,222,149, 92,123,254, -214,143, 19,207, 54,124, 92,195, 27,114,175, 31,247,201,181,195, 9,174,125,182, - 81, 94,144, 61,119, 92,202,181,134,210,134,244,243,254,209,223,144,115,238,187, -125,253,186,130,149, 41,190,203,177,247,105, 70,158,183,240,188, 72,249,210,190, -237,223,200,243,147,183,158, 26, 63,151,172,234, 50,217, 42, 42, 58, 87,102,120, -100, 66, 6,172,204, 98,160, 24, 38,218,133,226, 32,136,157,188, 95,135,160,114, -167,211,245,254,126,244,223,188, 38, 73, 19,209, 49, 48, 46,129,210,196, 4, 70, - 25,235,194, 48,149,208,140, 40, 34, 42,178, 17,253, 62,145, 6,252, 34,169,130, - 19,127, 34,157,110,132,185,178, 73,198,170, 40,140,154,100, 15,155, 43,211,168, - 10,197,114,101, 87,165,186, 46,150, 75, 69,155, 88,152,149,209,104, 54, 86,101, -185, 48, 23,136,140,178, 92, 18, 11, 3,161, 57, 60, 50,114, 60, 47, 74,218,175, -145, 65, 48, 74, 26,114, 44,105,219, 79, 52,172, 92, 35,219, 43, 89,130,243, 93, - 54,215,146, 65,235,145,220, 73,131, 75,243,195,245,204,249,244,194,175,226,151, -242,135,111,188,118,234,100,119, 21,180,163,128,185,168,225,153, 66,104,104,100, -164,160, 32, 41,100, 88, 3, 48,134, 8, 72, 29,209, 57,114,152, 48, 2, 34, 92, -133, 56,132, 9, 8, 33, 70,128,168, 48, 5, 34,161, 84, 32,129,146,212, 3,211, -178, 97,205, 2,100, 18,253, 45,113,126, 28, 25,138,127,175, 49, 93,216,113,254, -172, 31, 54,136,193,206, 16,186,111,114,178,247,201,212,167,163,165, 33,231,164, - 42,219, 67,221,121,250,176,215, 28, 49, 36, 75, 80, 37,204,238,146,232, 6,170, - 96, 8, 80,219,139,232, 92, 26, 65, 65,130,111,197, 61,240,101,135,116,195, 42, -251,199,134, 34, 14,213,139, 88, 31, 63,240,224,197,171, 16,111,107,253,117,143, -131, 92, 60, 44,221,215, 87, 3, 8,160, 96, 0, 83,172,236, 22, 23,230,110, 67, -180,177,249,138, 57,247,147, 31, 29, 21,163, 12,105,229,101,194,192,174, 86,126, -139, 38,202,161, 46,251,106,149,230, 73,214,118,109, 58,144,152,142,168,210,138, -121,196,204,226, 30,212,209,205, 92, 99,143,229,154, 42,220, 60,116, 40, 62, 84, - 38, 15, 5,120,181,240, 14, 33,231, 73, 67,185, 9,130,104,227,195,126,136,220, -227,148,108, 79,226,181,138,104,209,181, 20, 45,253, 69,218, 87,156, 17,200, 89, -188,101,182,148,198,152,143,110,240,102,151, 6, 6,181, 87, 89,217, 67,183,132, -252,147, 52, 48, 7, 37,202,228,161, 23, 45,177,212,192, 53,217,136,215, 33, 61, -157,184,252, 9, 84, 89,196,154,223, 16,159, 93, 82,223, 92,139,135, 11,169,205, -226,108,183, 2, 20,168,152, 78,206, 9, 98, 44,107,202,224,164,125,125, 20,216, - 71, 72,173, 9,176, 86, 81,102,211,120, 7, 50,188, 2,235, 8, 10, 15, 25, 21, - 5, 52, 1,141,167,155,223,139,246, 71,121,166,131, 21,152,141,176,241,214, 18, -159, 86,253,120, 48, 43, 2, 64,124, 60, 66, 90,202,212, 86,183,187, 7,170, 46, - 96,197,135,137,211,254,100,108, 97,210, 68, 85,102, 10,227,143,236, 55, 56,158, - 42,242,215, 29,104, 2, +// ../Source/Shared/GB_apply_shared_definitions.h: +uint8_t GB_JITpackage_47 [406] = { + 40,181, 47,253, 96, 99, 2,101, 12, 0,214,217, 77, 32, 16,149,115,160,182,111, +244, 12, 59,151,173,220,153,150,101, 43, 1,206, 16,142, 96, 32,133, 94,101, 64, + 51, 1, 0, 84,193, 13, 70, 0, 69, 0, 63, 0,215, 43,235, 35,121, 41,168, 51, +159, 48,214,132, 33,185, 87, 33, 11,182,245,113, 24,190,221, 97, 36,187,241,172, +252, 57, 71,103,247, 74,227, 45,173,218, 3,125, 82, 16,136,106, 95,200,202, 78, +218,183,103, 71,134, 25,228,250,164,205, 70, 27,199,189,140, 1,121,161, 32, 81, +133, 66,242, 62,246,167,109,123,191, 91,247, 34,195, 91,134, 45,162,149,187,100, +168, 16, 20, 75,237,113,214, 23,149, 59,246,157, 12, 49,138,237,100,173, 39,212, +230,178, 84,144, 69,149, 45, 95,110,175,244,244,229,219,102,125, 74, 32, 12, 8, + 74,113, 48, 32, 78,208, 6,159,108,139, 94,151,151,118, 14,231,251, 52,170,244, +106, 47,126,210,186,242,100,207, 71,157,223,246, 51,127,197, 91,199,219,150,215, + 51, 91,192,176,219,180,217,129,211,251, 74,187,114,135, 2, 14,124, 50,119,126, +233, 60,139,158,188,101,251,180,111,175, 53,230,236, 57,146, 20, 27, 78,174,170, + 91, 72,229,101,208, 79,239,185, 11,245,236,238,147,247,245,197, 83,123,174, 44, +239,153, 45, 47,157, 82, 36,195, 80, 42, 88, 6,163, 96, 15,199,149, 93,142,139, + 21,193,100,156,137,197, 98, 69,134, 51, 2, 0,151,164, 42,131, 73,110, 93,154, +134,198,210, 8, 30, 32, 32, 66, 98,144,195, 30, 55,195, 95, 58, 68, 55,155,200, + 45, 75,183,240,244, 28, 44,180,231,182,132, 64, 62,168, 3, 24, 8,224, 55, 50, + 72, 16, 51, 29, 65, 96,120, 45, 49,136,159,126, 82, 49,204,124,169,174, 52, 39, + 11,114,183,113,123, 1, 8,141, 0, 59,218,125, 83,232,153,137,152,165,192, 4, +175, 44,244, 40, 10,220, } ; -// ../Source/Template/GB_atomics.h: -uint8_t GB_JITpackage_72 [3750] = { - 40,181, 47,253, 96,197, 72,229,116, 0, 10,118,200, 20, 44,192,176,138, 14,116, - 48,130, 36,129,100, 55,175,211,176,114,187, 8,135, 61,214,154,190,166, 58, 56, -246,197,253,159,231,246,255,201,142, 72, 25,246, 77, 81, 20, 13, 81,116, 32, 57, - 1, 76, 1, 65, 1,219, 89,184,214,132,125,117, 88,182, 1, 30, 30, 80,154, 10, - 12, 70,134,227, 82,173,131, 21, 7,184,162,231, 21,187,218, 78,188,182, 63,253, -105,177,108,103,159, 85, 25,214,114, 66,185,250,146,235, 22,178,254, 38,230,246, -122, 94,230,219,249,109,187, 99,131,156,209, 58,123, 98, 30,112,205,248,233,214, - 57,245,228,123,163, 52,172,103, 52,153, 38, 83,129, 78,118,108, 32, 49,225, 54, -194,116,206,233,241,121, 48, 90,141, 45, 15,148,238,137, 14,242,132,124,222, 72, - 19, 74,194,152,145, 93,246,154,124,154, 57, 75,200,175,162,199,110,140, 17, 73, -166, 9,255,142, 24,150,121,190, 90,159,189,143,177, 43,182,148, 72, 42, 18,163, -201,184, 36,212,236,181,158, 55,247,202,220,117,125, 45,142,238,173,182,177,116, -206,222,215,151, 29, 51, 50, 77, 82, 3, 3, 46,150,217,199, 85, 58, 91,159,144, -179,117, 49, 76,243,179, 73,183,158,229, 67,100,146,144,214,106,138, 93,210,210, -203, 21, 63, 92,135,145,214,225, 54,190,144, 40, 48,208,152,220,118,122,125, 55, -210,223,226,240, 70,190,119,201,104, 66, 34, 34, 33, 21,144, 68, 36,242,209,160, -140,156, 59,202, 32,167, 75,126,172,143, 23,115,100,164,185, 92, 44,176, 48,109, - 7,150,245, 86, 76,179,207,153,230, 65,123,177,152,217,177, 74,135,145,159, 33, - 87,235,210, 98, 77,222,248,138,175,212, 2, 7, 9,129, 60, 72, 16, 72,158, 73, -112, 33, 87,108,211, 53,121,139, 14, 2,177, 56,246,111, 89,118, 53, 29,243,237, - 67, 76,219,103,171, 53,252, 60,205,158,118,220, 66, 14, 63,109,204,125, 31,118, -177,103, 4, 49,207,141,159, 1, 72,165,215, 19, 53, 50,194,216,184,184, 93,200, -132, 66, 81, 42, 29, 21, 59,248,186,206,145, 63,141, 47,137, 72, 42, 6, 12, 72, - 58,122, 62,155, 33,194,180, 72,222, 62,160,188, 96, 56,184,108,104, 88,112, 92, - 24,104, 68,160, 44,153,153, 15, 15,143, 44, 16,153,160, 72,144, 97,161,145,161, - 18,202,231,220, 6,217,211, 69, 26,140, 71, 71,227,214, 56,123,169,107,250,229, - 34,147, 89,144,171,251, 98,124, 76, 40, 25, 81, 36, 25, 85,146, 34, 59, 32,137, - 9,141, 6, 17, 50,234,224,200,192,100, 68,178,173, 57,249, 98, 31,233, 31,103, - 27,126, 48,114,199, 17,198, 43, 55, 50, 23,209, 70,134, 2,131,140,203,133, 5, - 6, 38,194,133, 6,135,229,234,232, 17, 0, 0, 88,204,167, 14,106, 70, 18, 36, - 72, 4, 8,146, 67, 98, 72, 1, 9, 73, 41, 33,210,226, 29,215, 37, 73,146, 58, - 34, 34, 34, 34, 40,176, 8,121,147, 29, 85,204,133, 49,119, 3,181, 37,140,236, -190,141,117,236, 38, 3,191,232,179,104, 61, 79,200,156,182,163,214, 70,151, 25, - 77,152,182,104,159,219,147,145,211,237,237,181, 60, 23, 42, 4,176,184, 39,190, -167, 25, 61, 90,230, 98, 63,228,116,133,114, 61,211,215, 82,211,122,246,112,234, -197,209,198,162,125, 27,118,143, 88,118,175, 87,238,251,188, 75, 31,172, 67, 61, - 33,107,115, 36, 8, 22, 25, 24,140,140, 40, 92, 62,227, 75, 14,170,180,173,146, -148,242, 81, 49, 45,140,235,114, 55,239,217, 21, 61, 34,194,247,179, 8, 69, 34, -181,142, 95, 20,158,229,142,130, 93,141,197, 45, 7,242,110, 50,254, 39,236,236, - 49,112,175,237, 6, 89,122,143, 88,103, 54, 50, 20,135, 92,103,207,243,166,179, - 82,169, 84,178,195,129,199, 3, 18, 0,229, 3, 34,247,241,235,139, 29, 8,154, - 80, 44,228, 3,154, 80,168, 10, 13, 6,181, 97,113,129,169,160, 44,159,207,232, -162,199,218,209,201,179,117,122, 97,215,254,107,213,189,185, 23,191, 4, 19, 46, -103, 35, 2,135,198,165, 66,183,163, 36,173, 55,118,200,141, 97,173,215, 74,183, - 27,238,230,235,156,238, 59,228,237, 6,179, 42, 33, 58, 3,177, 28,168, 86,235, -176,192, 80,159, 86,200, 27, 0,254, 16, 17,193,225,169,202, 83, 19, 74,135, 60, - 64,113,128, 98, 67,228,137, 47, 90,191, 87,103,177,202, 73,211, 31,238,149,165, -195, 93,207,111,171,229,154,238, 89,216,219,137,255,180,197, 39,105,198,135,156, -191,156,214,207,142,220,152, 59,141, 47,225,131, 6,148, 6, 70,166,138,222,219, -113,150,103,175,226,215,186,235,143,135,217,152,192,224, 98,177, 65,169, 80, 72, - 14,100,247,204,226,200,116,223,214, 84,218,183, 81,110,237, 72,110, 51,180,248, -122, 31, 50,164,193,143, 67, 36, 38, 60,144, 73, 65, 16,149,192,154,220, 59,130, - 92,151,189, 6, 61,123, 88,163, 40, 24,115, 66,129, 82, 98,130, 34,161, 72, 34, - 40, 43, 80, 38,244,128, 42,148,133,131,140,203,131, 10, 10, 22, 23, 8, 4, 1, - 69,153,219,182,189, 14, 2,202,247,102,223,118, 78,223,181, 69,168,175,219,159, -206,159,150,140, 8,159, 77,239,230,202,160,195, 94,206,174,131,251, 16,102,216, -228,154,241, 93,212,219, 89, 79,124,240,120, 10,153,195,237,218,124, 31, 0,128, -124,204,132,210, 27,173,107,211,252, 60,152,121, 15,183,183,170,216, 45, 42, 62, -207, 79,153, 47,246,244,135,119,189, 53, 57,228,127,156, 45,144, 42, 2,145, 8, - 5, 89,200, 15, 70, 8,167,227,148, 65,206,228,202,157,216, 88,190,222,223, 75, -127, 95,239, 87,190, 29,243,157, 25,114,216, 93,115,192,128,230, 76,195,182, 75, -219,137, 27,125, 68, 40, 57, 27, 63,252,105,213,129,130, 34, 15, 60,114, 59,123, -172, 21,135,166,130,130, 96,161,161,162, 94,215,241,218,139,130,188, 89,127, 6, - 93, 79,196,146,211,226,100,177,179, 25, 53,251,186,200,237,183,197, 58,246,179, - 8,129,128,166,125,155, 44,186,215,248, 42,137,137,140, 34,201, 50,138, 54,176, -245,105,243,156, 80,178,227, 7, 82,207, 83,211,149, 41, 42,122,141, 51,106,141, -211,184,226,182,152, 75,113, 95, 22, 61,209, 58, 76,230,164,141, 31,198,255,178, - 43, 59,184, 3,132, 15,168,211,217,145,148,101, 16,213,200,136,164, 32, 73, 50, - 28,195,128, 24, 20, 22,143,209,167,115, 89, 89,208, 15,195,128,210,113,180, 28, -154,194, 16, 12, 1, 17, 12, 49,134, 16, 72, 8, 49, 4, 17,161, 17,136, 64,136, -208, 12, 25,231, 36, 93, 71, 29,192, 53,105,164,217, 84,190,249,249,254,151,190, - 60, 86,227,217, 98, 3,215,126,243,131, 95,182,190, 82, 92,179,248,127,232,158, - 66,220,121,175,248,197,173, 9,189, 8, 0,175, 11, 38, 16, 67, 44, 36, 67,195, -171, 79,147, 27,216,184, 57,188,121,130,199,103,209,233, 81, 41,230, 43, 68,252, - 84,100, 99,249, 41, 84, 59,103,240,140, 95,125, 66, 13, 27,199, 7, 89,150,183, - 3, 12,207,136,189, 64, 39, 90, 29,186,246,250, 18, 1, 42,214, 63, 40,168, 84, -137,114, 89,220, 51,161, 71,159,187,202, 55,143, 89,162,245,109,213,142,239,114, - 19,219, 7, 24,173, 68,224,213, 94,113, 3, 94,222,158, 51,125,192,105, 53,143, - 12,212, 21,152, 21,232,245,221, 62, 29, 0,185,164,101,117, 0,151,255, 24, 73, -132, 96,181,160,202,221, 33,167, 62,143,248,162,184,174, 84,251, 41, 84, 45, 11, - 51,244,134,195,239,207,173,101,150,117, 2,170, 85, 26, 11, 80,176, 20,136,103, - 60, 97, 69,208, 14, 4,198,169, 57, 82,227,102,189,235, 73,204, 44, 20,102,246, -116, 61,106,195,216, 30, 2,158, 73,134, 5,237, 25, 70,168,104,112, 72,107, 31, - 8,218,180,153,221, 8,128,166, 8, 37,134, 57, 99,129,205,206, 27, 90,105,116, - 2,208,138, 71,139, 85,102, 6,229,134,198,237,182, 82, 59,197,151, 69,191,131, -145,177,140,244, 1, 34, 58,163,133, 21,153, 99,165,175,248, 13,243, 97,244,252, -158,188, 75,243,103,114, 50,218, 89, 31,115,164, 62,250,152, 54,148,182, 18, 35, -227,130,239,200,198,199, 1,255,216, 44,206,181,207,113, 40,117,108, 50,113,185, -173,238,204,131,164,125,166,253,249, 44, 87, 16,119, 13,106,110,149, 71,226,177, - 95, 72,232,188,175,240,112, 16,106,241, 15, 20,203, 73,132,210, 16,171,229,106, - 9, 20,104, 11, 5,192,144, 49, 73, 59,113,128,220,124, 10,112,146, 99, 57,120, - 60, 51,205,234,104,112,204, 90,135, 10,194,232,227, 61,224, 29,151,207, 29,148, -196,108,159,188, 66, 74,132,222,218,214,202,138, 77,230, 19,177, 83, 31,116,165, -182,168,121,155,209,239, 63,212,235,239,126,102, 78, 18, 4,111, 4,105, 33, 81, - 42, 18,252,228, 83, 34,244,214, 6,140,234, 81,160,116, 98,165,191,155,125, 7, - 31, 0, 97,158,241, 4,226, 75,108,112,183, 63, 61,184,103,111,121, 85,105, 53, -236,132, 88,200,141,118,221,173, 98, 70,208,119,172,246,255,184, 34, 9, 19,113, - 96,195,163, 43, 99,107,127,134, 64, 80, 18,215, 62,204, 29, 16, 29,190,240,168, -168, 56,200,139, 24,149,203,219,193,252, 72, 78,171, 46, 84,205,154,236,176, 37, - 51, 86, 23, 56,170,166, 35, 68, 17,104,233,140,136, 9,136,116,146, 6, 51, 76, - 9,102, 42,253, 1, 85, 93, 16,217,157, 97,233,195, 7, 91,246,113,209, 15,236, -224, 43, 60,162,242,128,133,232,224, 63,222,227, 22, 12,138,138,173, 67,174,111, -205,193,111, 77,133, 3,177,128,194, 12,158,139, 24,146, 48, 1,218,120,110, 50, -134, 73,111, 69,160, 15,252,237,240,177,169, 36, 45, 99, 56, 24,233,100,110,225, - 7, 0,171, 89, 18, 44,107,195,141,167, 66, 70, 65, 97,195, 96,225, 65, 94, 94, -102,204, 33, 24, 12, 89,113,116,235,179,142, 42,215,255, 43, 60,173,117, 89, 86, -225,107,173,142,142, 15,131, 31, 45,144,162,106, 78,194, 51,202,184,224, 31, 78, -175,102,236,164, 7, 59, 10, 75,140,178,141, 68,235, 10,104, 93, 20,253, 46,245, - 30,224,233,251, 66,205,159,110,200, 6, 2,234,237,247,100, 83,237, 5,204,200, - 9,141, 35,216, 4,225, 60, 0, 28,147, 17,246,190, 55,124,164,104,178,253, 70, -174, 45,187, 34,217,124, 19,213,197, 32,186,177,196,174, 58, 97, 56, 14,145, 72, -126,135,119, 68, 62,158, 77,232,104,190,191, 30,211,155,179, 85,192,109,234,128, -130, 66, 68, 47, 38,245,150,144,222,255,218,187,111,198,106,163, 35,128,233, 43, - 13,210, 98,129, 62,176,229,202, 77, 75,166, 43,105, 45,154,207,166, 52,218,108, - 66, 86, 84, 88,137,170, 5,110,238, 34,101,232,230,131,142, 33,111,228, 20,221, -229,195,106,206, 75,128, 96, 49,216, 0,180, 18,147, 7, 14, 24, 34,180, 99,131, - 77,222,136,163, 34,119,134,152, 20,111,127,124,118,235,168, 55,167, 4,100,119, -173,110,168, 8, 72, 39,183,182,160, 42,141,136,184,251, 16, 18, 83, 34,105,248, -145, 7,164,184,205, 26,219,193, 57,160,179, 93,184, 84,158, 21,190, 48, 22,107, -219, 4,178, 83,226, 8, 5,205,235, 20,142, 21, 44,182, 49,193, 12, 36,130, 1, -184, 15,253, 82, 52,102,129, 98,227,193,123, 14, 95,250,184, 54,195,153, 33,134, -225,173, 82,169,205, 84,182,147,101,184,226, 49,221, 62, 86, 79,181, 19, 5, 42, - 32, 35, 66, 52, 56,149,168,168,119,186,236,125,170,248,249, 52, 37,200,159, 16, - 26, 82,182, 75,234, 34,246,127, 44, 29, 4, 28,137,212,124,149,216, 53, 45,124, - 12,130,195,114, 76,224, 60,162,242,183,101, 92, 66, 0, 93,171,218,116,158,131, - 16,146,132,198, 19,144,220, 67,211,137,136,183,192,204,224, 16,248,102,159,192, - 36,152, 88, 68,208, 35, 50,217, 65,194,227, 1, 52,199,178, 25, 22, 81,207, 21, -128,220,222,195,135, 97, 85,154,132,107,233,218, 95, 72, 73,129,161,212, 66, 41, -213,215,200, 76, 3, 71, 81, 2,189, 44,244,120,244,163, 40,117, 65,162,245,153, -199, 84,114, 29, 51, 66,191, 58,173,102,133,115, 28, 86,236,142,133,173,179,123, -222, 13, 65,231, 32,248,145,242,234, 80,190, 49,148,140,248,142, 44, 35, 92, 68, - 81, 86,218,200,144,242, 53,151, 50,244,105,138,187, 15,141,236,134, 84, 20,159, -225,241,189, 57, 6, 41, 92, 39, 23, 39,204,205, 47,188,130,173, 38,169,233, 4, -133,145,217, 79,251,188,216,142,139, 98,214,186,234, 13,112,184,248,141,228,105, -138,138, 97, 3, 84,150, 9,123, 57,211,144,121,132, 74, 62,209,150,109,102,216, -253,222,177,236, 8,114,251, 67,133,198, 30,177, 44,125, 47, 99,120,209,153,163, - 16, 26,229, 78, 37, 88, 56, 78,114,168,216,114, 59,139, 42,150, 63, 46,133,204, -123, 8,168,237,212,120,210,138,221,217,151, 88, 51,169, 98,116,103,184, 26, 62, -114,159,222, 39, 21, 74,217,150,231, 36,183,184,135, 11, 63,204,177,108,106,199, -124, 63, 85, 28,223,217,129,107,186, 58, 88,136, 22, 34,254,133, 44,211, 93, 74, -102,208, 48,189, 62,219, 95,190,198, 95,242,169, 82,205,245,209, 86, 0,166, 3, -122, 2, 24,136, 19, 21, 82, 98,228,204, 15, 10,187,103,141,253,113,203,129,221, -254,191,132,179,145,247, 1, 15,117, 48,176,181,208, 1,205,133, 70,203, 1, 47, -182, 69,162,125,204, 39,104,172,216,131,115,168, 54, 79,162,122,218,106, 74,208, - 37,102,177, 50,119, 8,173,133, 21,145, 39,253, 0,207,137,119, 85,112,109, 7, -247, 74, 18, 71,211,246,185,192,247,138,142, 18, 52,114, 67, 90, 22, 3, 9, 98, -163, 48, 83,118,124, 73,217, 12,205, 64,244, 0, 60,251,233, 29,157,127, 0,121, -187,250, 0,229,112,159,102,130,155,244,221,134,234,144,192, 70,133,109,135,167, -161, 91, 64, 73, 41, 57, 6,141, 49,230,213,104,221, 47,224,247, 17,167,177, 28, - 18,251,145,147,212,243,254,227, 40,118,147,157, 56, 67,149,231, 71,234, 29,250, -219, 45,158,184,165, 42,197, 1,238,196, 40,228,213,131,108, 40, 46, 60, 66,121, -146, 78, 10,202,183,204, 31, 68,168,130,106,237,169, 62, 0,157, 70,155,172,183, -133,202,117,169,129, 46, 7, 18, 55, 29, 11, 99, 22,209, 60,147,217,201, 89, 13, -182,115, 17,135, 22, 19,210, 11,148, 9,148, 7, 8, 48, 2,236,148,100,118,216, -236,187, 44,222, 45,208, 1, 34, 18,154,254,102,217, 3,226,150, 10,181, 52,115, -230,110,158,201,206,115,149,121, 60,188, 62, 80,197, 94,117,220, 18,149, 39, 23, - 76, 68, 17,215,233,190,139,106,205,240,192, 61, 92,167, 21,174, 6,183,144,182, - 5,124, 21, 56, 91,173,180,152,223,233,130,239,147,149, 50, 87, 24,108, 10,149, - 43,221, 28,200, 38,217, 64,157,141, 97,179,162, 45,205,241,250, 0, 37,210,127, - 51,232, 44, 26,167,221, 71,101,222,175,119,152,120,137,209,139,169,238, 5,187, -207,202,177, 7,113,181,226, 10,119, 34,128,210,179,107,189,182,127,112, 19,132, -170,147,189,225,191,249,206,247,148, 95,113, 82, 77,101,172,116, 82,241,115,242, - 23, 21, 65, 27, 74,160,116,114, 24,241, 37, 98,238, 16,230, 84,111, 77,172, 37, -111,102, 96, 99,217, 55,148,103, 73,118,106, 27,147, 99, 72,127,166, 31,164,110, -180,192,168, 85,231, 76,209, 6,126, 48, 7, 29,170, 55,183, 18,250, 20, 53,242, - 10, 88,226,154,130, 5,136, 5,248,158,170, 64, 20,243,114,153,128,204,139,133, - 20, 57,224, 47,185,188, 78,156, 65, 94,215, 13, 29,128,219, 83,112,109,142,162, - 74, 7, 88,253,134,196,100,114,156,128,193, 94, 67,126, 63, 68, 86, 59,152,111, -170,169, 26,197, 61, 19, 25,171,145,148, 80,232,142,187,118,140,120,106,159,173, -171,125,173, 72,182, 50, 43, 8, 24, 47, 3,159, 11, 65, 10, 22, 51, 19,207, 43, -144,115,147,130, 7, 64,144, 37, 97,101, 99, 73,222,131,230, 90,197, 74, 59,120, - 11,166,252, 78,128,171, 38, 39, 94, 1, 51,159, 48, 42, 86,226,208, 36, 92,114, - 68, 38,188,183, 85, 56,233, 67, 97,146,165,123, 49,206, 44,124,230, 95, 7,253, - 21, 20,129, 72, 27,205,178, 26,254, 7,218,203,235,161,109,132, 90, 36,173, 90, -147, 87, 61,124,157,230,162, 83,194,164, 74, 25,148, 51, 41,231,127,192,176, 90, -108,184,216, 88,196,196, 96,125, 88,240,124,107, 69, 91, 2,244,188,177, 59, 45, - 40,197, 91, 95,171,225,208,206, 84,143,153,233, 64,209, 3,124, 36,209,200,233, -101,229, 48, 35,247, 12, 66,233,236, 17,186,131,222,197,244, 14, 73,235,153,120, - 84,216, 18,171,178, 62,136,168,146, 31, 46,184, 46,129,129,250,209, 62,222, 6, - 30, 52, 16,225, 26, 96,254, 49, 54,245, 65,158,107, 93,243, 80,224,220, 21,207, -147, 67,224,117,236, 22,191,141,205,101, 37,126,225,196,241,249, 32,153,102,109, -127,164, 68,210,236,103, 29, 98, 51,236,145,121,230,197, 17, 65,251,248,197,209, - 79, 60, 74,188, 13, 22,214, 37,205, 63,226, 89,184, 82, 53,150,217,171, 85,188, -108, 84, 41,128,253, 76, 50,184,117,111,139,152,255,122, 96, 25,228,217, 69,140, - 91,192,241,209,114,156, 92,103,166,184, 72, 74,227, 93, 56,207, 71,223, 29, 0, - 92,182,240,232, 85,255, 57, 96, 51,212,225,232, 55, 82,226,106,232,198,232, 36, - 47,182,172, 3,199,137, 43,230, 23, 54, 77,242,130,153,182, 8,198,243, 3, 29, -205, 64,114,242,133,156,206,121,237, 7, +// ../Source/Shared/GB_assign_shared_definitions.h: +uint8_t GB_JITpackage_48 [12576] = { + 40,181, 47,253,160, 78,108, 1, 0,165,136, 1,218,226, 68, 41, 51,112, 12,149, + 85, 29,137,208, 10, 92, 21,227, 81, 35, 68,100,131,132, 30, 41, 81,152, 85,238, +115,159, 40,106, 9,192,154,168,191, 92, 3,199,190,120,237,201,108, 7, 37,107, + 3, 37,235, 8, 74,214,156, 1,148, 2,121, 2,119, 2, 13, 24,216,248,204,190, +189,109,118, 14, 43, 36,138, 71, 12, 26, 68,232, 25,253,156, 49,198, 24, 99,164, + 52,198,216,197, 25, 31,201,243, 55,198,248,125, 31, 36, 33,241,249,124,160, 76, +230,226,226, 2,154,152,184,184,248,190,207,197, 37, 39,174, 79, 70, 30, 70,243, +240,131,254, 69, 46, 17, 59, 91,105, 36,187,245,221, 89, 31,124, 32, 80, 98,101, +185, 92, 44, 18, 16,177,114, 85, 47,187, 69,165, 25,207, 43, 31,235,190,157,253, +181,121,110, 30,231, 93,215,164, 34,164,140, 20, 69, 81, 20, 69, 81, 20,116, 73, + 5, 65, 93,221,169, 20,132,162,184, 79,132,177, 40,213, 52,141,230, 0,138,162, + 40,170,239,244, 52,135,241, 88,157,167, 40,142,146, 62, 53, 32,156,169,252,124, + 40,157,222, 57,104, 72,116, 18, 22,231,182, 4,108,163,158,198,210,240,212,172, +171, 57, 84,209,193,130,144, 92, 36, 28,172,138, 8,138, 20, 6, 40, 30,113,174, +245, 92,144,124,220,129,133, 41,110,170,225,236, 69,173,189,117, 36, 71,177,206, +117,189, 49,123, 89, 24, 7,141,238,190,124,125, 34,232,147, 2,143,160, 15, 70, +109,135, 74, 7, 13,249,200, 45,166,150,252,102,173,230,209, 37, 82,152,201, 3, +171,154, 0, 0, 93,130, 12,201, 56,148,208, 35, 88,172,204, 4, 2, 19, 41, 11, + 3, 33,113,196, 95,123,234, 90,166,158, 99,141, 39,221,230,101,212, 77, 46, 83, +205, 91,243,108,107,157, 23,196, 93,230,182,248, 36, 45,140, 4,194,239,109,108, +182,102, 85,111,239,129,217, 89,138,138,177,170,180, 9,218,151, 34, 37, 12,217, +162, 80, 34, 42, 12,110, 97,108,246,213,164, 71,142,235, 33, 70,243, 51,132,222, +102,117, 98, 61,184, 95,238,184,126,157,239, 59,183, 11, 83, 77, 40, 17,170,136, +177, 36, 48, 23, 74,146,192,193,170, 42,150, 9,102, 82,153, 52, 72, 24, 44, 6, + 9, 68,116,168,172, 10,132, 73, 85,197, 7, 17, 85, 95,213, 62, 99,111,243,174, + 22,155, 80,117,223,204,250,208,155, 39, 69, 81, 49, 86,213, 97,198,178,217,154, +208, 38, 14,181,137,190,160,216, 58,204,152, 82, 56,120, 98, 2,128, 30,101,107, +128, 2,114,165,135, 22,181,171, 64,191, 88, 46, 86, 4, 8,137,132, 67,144,160, +129, 83, 40,209,203, 40, 86, 91, 65, 2,200, 21, 36,144,200,120,169, 34, 64, 88, + 36, 88, 18, 9, 68, 67,205,176,174,199,243, 88, 51, 24,111,204,219,174, 74, 21, + 36,200,236, 47,239,102, 92,237,245,214,178,189,215,228, 18, 72,142,133, 70,107, +215,236,226,167,219, 52,163,185, 54, 54,105, 52,174,125, 81, 74, 35,195,112,113, + 96,221,185,141, 27,226, 56,107, 22, 20,226,219, 22, 15, 5, 88,144, 22, 26, 6, + 60,164,133, 71, 23,116,136,105,103, 50,220, 17,255,105,217,114, 20,115, 88, 69, +202, 3,173,155, 23,194,212,248,206,174,234, 76,189, 42, 1,222,186,222,230, 92, +227,225,107,179,127,210, 28,184, 90,154,105,165, 89, 99, 22,214,119,106,216,170, + 22, 20,227,105, 61,128,240, 6, 13, 18, 52, 26, 52, 8,211,179, 77, 10, 39,206, +244,217, 4, 66,172,175,185,117,125,229,132,103,244,121, 4, 58,231,200,243,211, +109,177,111,171, 54,187,141,235, 5,247,237,108, 99,236, 78,139,190,135,144,161, + 98,145,146,138,131,112,116,235,186,238,106, 43, 31, 8,191,246,185, 54,215,155, +228, 90,172, 49,108, 98,209, 7,230,198, 51, 79,172,243, 50,139,169,150,255,105, +194,189,117,239,206,212,100,111, 24,157,162, 8, 31,185, 3, 42,129, 9,141,134, +164, 14,172, 91,147,177,199,117, 70, 55, 77, 37, 98,194, 27,234,245,178, 4, 35, +161, 64,239,236,197,231, 83, 17,187, 15,250,124, 19,223,225, 5,244,137,195, 15, +244,136,194, 39,193, 68, 74,196,255,125,223, 23,125,146, 20,254,104, 50,136,177, +241,214, 17,198,184,161,115,194, 39, 64, 6,145,236, 32, 72,225,255,186,139,107, + 78, 2,128,245,183, 69,224, 71, 66,150,196,197, 34,231,237,206, 42, 40, 68,153, + 43, 80,240, 14,122,148,129, 48, 25, 73,197,209,213, 62,127,186,218,252,238, 88, + 14, 98,111,247,218,241, 48,182,133, 0,255,166,167,177,112,104, 47,224,161,181, +161,215,117,144, 16, 81, 82, 89, 57,195, 16,123, 54,255,209,192,106, 79, 22,117, + 94, 90, 61,139,227,108,118,165, 13,191,227,122,215,101,235,245,190,230, 61, 62, +236, 78,115,243,214,225,117, 91,111,219,188,179,187, 30,134,245,229, 97,246,182, +230,223,228,238,233, 74,102,175, 93,119, 54,254, 35,145, 74, 4,172, 36, 19,202, +133,170,144, 29, 69, 0, 1, 60, 2,224, 10,207,119,102,108,113, 38,135,145,254, + 25,211,109, 35,169, 42,146, 90,236, 0, 3, 42, 1,222,100, 86,123,237, 57,123, +179,227,230, 36,253,167, 57,154, 27,209, 3,178,252,194, 94,231,189,194,138, 56, + 97, 82, 94, 38,148, 6, 43,186,100,242,128,178, 76, 64, 72, 37,244, 9,173,168, + 58,138,238, 18, 17,193, 98,161, 88,149, 37,171, 55,246,174, 93,116,131,210, 2, + 2, 18, 46, 64, 58, 28, 64,186,205,151, 36,171,229,166, 34, 50,237, 56,186,185, + 48,165,199, 93, 41,215,216, 45,222, 38,204,244,112,170,156,183,217,107, 86,221, +107,119, 40, 4,238, 30,187,109, 54,115, 84,108, 40,254,176,169,160, 20,159, 80, +136, 85,207,102,182,187,125, 91,243, 92,114,174, 74,109,247, 57,163, 13,164, 80, +245,239,230, 26, 85,122,108,107, 13, 98,108,243,162,183, 57,175, 50, 48,191,131, +187,157,243,236,126,209,205,106,184, 47,122,128, 19, 72, 70,170,107, 22,158,189, + 90,126,231,113,172,221, 62,105,231,145,220, 64, 73, 33,121,154,125,146,204, 95, + 20, 79, 77, 85, 85, 85, 85, 85, 85, 85, 85, 84,211,170,106,222,252,233, 87,213, +163, 9, 78,208,195,228,211,154, 99,155,103,175,234,147, 4, 34, 2, 19,209,112, +237,191, 58,111,119,186, 30,211, 87,241,131, 46, 97,221,185,205, 11, 71, 89,205, + 57,161, 24, 39, 68, 16, 6,210, 53, 71,101, 98, 65,168, 76, 24, 42,146,203,167, +177,249,183,235,130,204,190,243,204,152,230,107,175, 74, 53,242,219,250,210,222, + 46,188,209,153, 61,155,228,171, 49,206,147, 76,179, 28, 85,218, 21,146,199,243, +142,248,175,179,151,173,182,218, 10,169,150,226, 58, 97,140,159,156, 0,145, 86, +149, 19, 32,135, 52, 96,144,177, 50,179,218, 73, 55,148,235, 27,121, 32,225,148, +161,160,112,244, 85,251,118,214, 55,119, 95, 8, 70, 97, 5,197, 29,141, 51,248, +109,159,198, 12,172,171, 90,236,181, 22,215,226, 70, 95, 60, 41,196, 29, 65, 24, + 35,121, 65,133,200, 72,122, 2, 25,155,241,181,219,244,188,235,232,150, 77, 91, +175, 72, 99,111, 98,141,221,121,121, 44, 87, 33,182,119, 56,176,183,105,184,254, +182,109,122,151,222,198,174,133,184,111,241,197, 48, 88,103,134, 53, 78, 17,116, + 77,204, 4,185,220, 53,231,195, 88, 42,149, 9, 36, 87,106, 55,152, 98,221, 68, +231,169,121, 52,112,163, 51, 55,118, 45,247,233,123,108,141, 82, 6, 81,156,135, + 31, 49,226,105,187, 3,144,122, 48,182, 89,205, 78,172, 53,119,110,148,163, 56, +162, 20, 50,250,105,194,198,212, 99,153,157, 33, 48,222,249,213,201, 77,217,179, + 56, 54, 86, 59,215, 89,233,228,250, 62, 74, 9, 85, 31,167,119,199,106,166,245, +224,123, 97,174,179,211, 91,223, 75,169, 73,130,163,171,197,179,239, 5, 29, 48, + 19, 9, 56,214,234,144, 58,140,213,145,217,126,198,151,102,159,182,173, 61,199, +119,100,228, 45, 21, 71,246,213,122,172, 47,205,190,107, 79, 27,123,215,135,114, +125,179,205,139,216,118,184,206, 27, 27,111, 51,235, 14,205, 87,103, 89,223,146, +144,188,121, 51,235,232,189,112, 99,143, 72, 36,138,208, 69,173,112,198, 59, 24, +135,108,184,210,153, 31,141, 79,211,120,108, 34, 15,135, 52, 50, 57,148, 86,115, +232,246,233,227,124, 57, 50, 17,124,154, 50, 74,162,110, 63,117,206,169,115,211, +192, 12,212,174,234, 93, 78,120, 65, 52,163,152,229,162,130,244,116,173,157, 51, +189,158,219, 29, 27, 35, 29,186,253,239,108,155, 90,109,206,204,175,109,209, 20, + 73,146, 36, 73,146, 36,139,221,106, 12, 14, 6, 71,230, 17,161,228,244,168,248, +227,241,242, 20, 81, 66,117, 54,119,200,200, 22, 99, 48, 24, 24,220, 87, 25,119, +110,158,100, 52, 28,120, 66,151, 30,212,130,184,160, 53,115,139, 11, 28, 11, 50, + 19,132, 81,180,129, 30,224,195,103,242,156,245,246,140,190, 0, 8,198, 67,105, + 61,123, 93,146, 71,132, 18, 96,194,252,122,182, 97,128, 94,120, 96,207, 17, 65, + 78, 34, 22,176, 26, 38, 86, 69, 2,129,243,164, 87,119,153,222,226, 28,243,251, + 82,239,129,190,159,164,156, 58, 91,181, 2, 30,247,122, 87, 67,228,177, 55,162, + 16,212, 91, 99,156, 59,185,140, 47,166,209,194,215,155,134,230,137,191,145, 72, +169, 70,163,105, 13,166, 41, 66, 90,140, 68, 83,198,101,246, 85,156, 80,226,181, +145,161, 18,173,168,240,195, 3, 14, 41,235,162, 86, 6,138,196,161, 66, 89,212, + 45, 78, 91,212, 41,171,195,224,162,230,185,117, 92,231,235,146,146, 83, 61,237, +242, 44,118,200,202, 31,105, 85,239,115, 24, 35,198, 25,140,137, 98, 64,143, 38, +132, 20,100, 73, 40, 15, 32, 34, 54,205,245,176, 21,129, 60, 26, 10,108, 18,128, + 84,233, 14, 34,133, 4,160, 14,107,206,213,154,199,214,218,237,201,244, 78, 13, +206,180,111,123, 30,125,145,194,194,194, 45,155,107,133, 20, 62,155, 74, 17,209, + 71, 16, 65, 2, 16, 68,239,185,157,179, 57,181, 5,232,218, 71, 27, 58,225, 84, +233, 27,175,120, 40, 68, 94,161,169,118,245,243,217,108, 34,167,143, 28,202,195, + 8, 10, 0,178, 52, 11,207,214,126, 91,220,121,233,235,225,218, 85, 37,145, 50, +162,130,140,195,133,174, 34,114, 79,215,250,224,188,235, 17,136, 47,232, 54, 43, +205, 62, 81, 17, 21, 21, 33, 31, 81, 80,112,237,213,215,179,249,156,135, 31,127, +165,157,215,205,235,249,116,137,184, 68, 8, 9,148, 58,149,193,127,195, 97,170, + 40,169, 10,170,163,184,134,162, 42,101, 61, 76, 40,140,103, 59,162,176,109, 94, + 70, 1,216, 64,184,193,104,106,128,242, 16,186,132, 15,155,171, 82,172,246,102, +170,212,162, 53, 27,198,196, 56,166,215,202, 77, 4, 55,214,191,129, 4, 0, 63, + 84, 34,179,129, 25,248,204,196, 42,109,176, 48, 16, 17,179,240,199, 56,169, 11, + 80,168, 78,122,103,103,187, 0, 3,136,163,101, 52,200,209, 50, 82,194,128,132, + 3,253,226,160,130, 67,241,233,155, 43,144,201,116,112,130, 50,241, 25,206,225, +230,176,203, 52, 61,204,116, 80,174,157, 25, 36,151,203, 67, 82, 69,135,139,149, +205, 87,123,220,143, 6,100,205,109,110,142, 10,138, 63,194,105, 96,193, 92, 38, + 16,178,122,104,192, 0, 1, 3, 8, 16,224,209, 21,212,160,212,120,106,157,133, + 97,115, 34,242, 47, 83, 92,105, 84,193,204,237, 76, 31, 50, 19,136,189,124, 88, +201,136,233, 51, 85,102,226,153, 85,200, 60,242, 9,105, 97,225,113,128,244, 56, + 68,160,128, 3, 30, 22, 86,167,181,128,251,178,158,108,145,128,129, 60,212,195, +135,195, 73, 61,156, 28, 74, 8, 89, 14,207,124,190,250, 82, 44,123,112,139,209, + 60, 39, 10,170,116,195,159, 36,114, 66,169, 44, 73,197, 18, 73, 64, 88, 40, 9, +101, 53, 88, 44, 76,132, 5,234, 11,137, 60, 20, 28,170,136,190,102,247,206,243, +178, 83, 69, 90, 40,148, 56, 61,182,118,215, 77,173, 82,145, 36,169, 58,108,181, +160, 31, 3, 67,102,103,158,125, 85, 90,253, 81,146, 38, 77,254, 14,234, 0, 61, +206,235,171,243,234,108,161,106, 15,105,103,175,211, 71,136, 63, 73, 74,212, 94, + 51,147,179, 27, 31,130, 33, 6,175,199,106,135,209,162,210,214, 60, 30,119, 36, + 73, 2, 2, 83,145, 88, 14, 7,131, 3, 78,105,107,116, 64, 14,134,144, 90,168, +228,149,154, 61,235,156,154, 17, 1, 0,160,160, 0,147,129, 24, 24, 12,135,209, + 68,114,209,100, 19,230,246, 68,130, 71, 69,216, 6,132, 11,195, 0, 41, 92, 10, +131, 67,101, 48, 0, 22, 64, 50, 12, 66, 2, 0,128, 1, 24, 0, 0, 88, 98,176, +129, 94,173, 1, 40, 3, 79, 6,121,164,238, 56,250, 4, 40,240,176, 87, 40, 75, +159, 99,228,141, 40,246,249,127, 52, 5, 94, 10,159,167,195,137, 84, 29, 61,236, +224,133, 25,165,246,103,160,234, 86,209, 56,160, 71,126, 67, 79,255,143,115,160, +104, 82, 45,107, 44, 56, 88,106, 62,191, 81, 75,115,111,235,138, 3,191, 14,186, +159,247, 55,169,175,127,137, 37,134,236, 78,116,236, 96, 5, 21,124, 10,172,121, +200,172,172,121,211, 6,131,178,235, 29,187,220, 58,136,125,112,176,206,115, 47, + 8,208,165, 7,245, 70,230,118,241,126,149,127,227, 18,223,148, 66, 42, 63,134, +150,208, 78,162,126,162,195, 85,198, 67,231,106, 64,162,115,156, 11,193,194,197, + 6,210,221,244,116, 56,171,230,202,166,211,201, 17,243,233,238, 50,148,147,238, +104, 5,245, 71,244,117, 90, 12,106, 86,211,135,133, 38,157, 40, 68, 44,201,213, + 51,249,116, 22,158,219,142,134,232, 70, 38,188, 75,180, 41,104,221,247, 11, 6, +254,165, 68,158,109,185,154,190, 67, 96,228,140,158,134, 58,225,180,158, 83,157, +221, 40, 53, 58,105, 72,156,147,213, 1,106, 70, 18,100, 56,161,187, 21,135,238, + 71, 33,185, 34,212, 7,183, 51,249,103,154, 26,144, 95, 71, 47,197, 74,130, 5, +238,136,252, 53, 48, 56, 41, 60, 41, 10, 49,114, 54,232,164,234, 52, 62,106, 43, +162,255, 7,224,192, 41,246,131,188, 49, 72,116,100, 21, 66, 15, 53, 7,108, 63, + 85,207,232,209,159,232,114, 57,120,205,194,107,191, 52,253,234,245, 30,159,176, + 8,121, 76, 44, 59, 77, 57, 95,216, 97,253,229, 55, 78, 70, 61, 34,242,143,188, +255, 65,169,211,110,108,160,212,190,161, 1, 25, 93, 74, 29,187, 2,115, 13, 18, + 55,237,145,205,175,131,210,221,232,110, 79, 50, 76, 39, 50,151, 21, 87, 73, 1, + 96, 44,218,148,169,177,253, 39, 0,198,145,149,234, 65,123,184, 93, 82,143,154, +144, 14,177,247,230,184,213,154,237,247,217,186,233,194, 77,117, 15,208,208,140, +221, 80,133,142,155, 95,160, 90, 20, 53,189,161, 7, 69, 92,119, 52, 40, 13, 72, + 42,203, 49,149, 91,222, 27,233,237, 99,110, 3,112,164,142,177,231,237,108,164, + 86, 73,130, 39,175,132, 9,249, 57,237, 40,116,168, 78, 18,183,169,194,241,119, + 83,152,129,126, 48, 88,220, 49, 46, 45,252,194, 9, 73,177,217, 22, 72, 52, 82, + 14,135, 72, 86,187, 26,153,147, 0,238,171,215, 11,152,109,195, 35,146, 16,227, + 6,246, 84, 76,107,191,210, 95, 88,209, 84, 8, 9, 59,222, 52,168, 33,205,214, + 4,150,250,212,237,169,224,221,196, 19, 20,245,157,168, 45, 48,161, 40, 52, 75, +105, 16,166,244, 75,105, 80,204,156,136,156,163, 25,137,215, 19,150, 48,239, 22, +169,207,140,223,197, 89,222,225,141, 35,109,167,153,136,118,233, 3,192,126,174, + 75,247, 56,154, 42,189,179,243,163, 0, 36,109, 70,133,111, 41,216, 40, 7, 36, + 38, 71,222, 31, 58,254,252,141, 41,246, 70,104,140, 81,255, 28, 44,192,129,170, + 70,205,165, 8,137, 96,116, 20, 20, 91,252, 89, 19, 52,230,251,129,145,235,119, + 82,179,156, 72,167, 31,250,196, 38,126,214, 62,212,230,218, 38,163,206, 58, 31, + 63, 76,189,124, 73,225,242,255,137, 85,165, 52, 28,123, 38, 11,234, 91, 17,108, +235,191,245,166, 39,141, 34,142,184,175, 98,174,208,250,134, 85, 4,226,219,109, + 60,112,232,172,247,162,221,150, 40,240,236, 19, 44,132,180,197, 79,187, 8,100, +151, 18, 92,154,201,250, 52, 12,201, 92, 11, 39, 33,242,194,171, 10, 89, 90, 24, +144,109,196,255,228,162, 9, 39, 33, 72,228,103,173,123,170,196, 69,156,128,171, + 22,165,136,122,177,234, 47, 9,197, 36, 53,160,152,118, 80,147,248,234, 79,201, + 89,106, 5,130, 9,117,250, 9, 93,236, 52,228,224,199,126,237,123,215, 71, 6, +113,252,137,177,252, 56,138,134, 77,237, 65, 45,153,149, 82,131, 97, 31,210,139, +143, 66,167,218,233, 85,229, 50, 32,108,125, 18, 72, 96,241, 75, 60,100,140, 34, +251,184,141,138,180, 31,203, 74, 88,155,187,167,232,103,212,187,122,177,141, 8, +228,255, 74,255, 75, 30,244, 8, 62,218,218, 16,204,238,120,195, 4,152, 53,157, +158,204,239,196,204,237,210, 70,111,117,167, 71, 35,182, 72, 43, 58,250,123, 35, +188, 68, 26,120,111, 14,225,219,194,255, 3,204,162,249, 42, 80,210,108,227, 46, + 22, 46, 52, 40, 59,103,177, 47, 74,163,159, 52,239,104, 72, 93, 98,107,153, 96, +184,120,178, 32,129,238,130,143, 64,165,232,242, 96,205, 73,156,193, 96, 29,225, + 83,135,203,237, 97, 88,169, 30, 13,180,124,242, 48,182,165,243,244,230,193, 20, +201,191,209, 2,156, 51,104,212,211, 73,144, 77,163, 45,179,248,122, 75, 36, 86, +132,214, 17,173,143,194, 74, 77, 35,128,114,138,152,109, 68, 78, 28,222, 17, 38, + 40,195,177,222, 70, 6,178,208, 52, 65,213,221,168,207,234, 26,189,174,167,146, +174,109,132,121,228,132, 75,182, 10, 42,160,241,245, 90,195, 27, 2,119, 33, 34, + 89,112, 38, 50,185,241,119, 89,181, 6,165, 42,135,172, 75,247, 48,203,229,236, + 66,146,170,239,136, 87, 96, 78,175,229,221,197, 42, 14,121, 16,248, 73, 34, 63, + 38, 22,163, 67, 39,134,186,175, 44, 18,152, 57,182,136,129,216, 16,224,177,203, +188,191,136,147, 23,112,110,156,189,226, 19,111, 26,169,214,253, 43,160,128,166, +143,147, 21,195,179,141,166, 28,190,112, 73,218,167, 57,159,145, 96, 99,121, 65, + 97, 74,160,175,238,139, 91, 78,254, 97, 4, 70,211, 20, 58, 89, 93,236, 70,134, + 78, 4,155,150,202,211,222,208,188, 55,119,112,234,177, 16, 87, 90,228,200,244, +231, 15, 33,193, 89,103,211,186,242, 79, 88,234, 55,156,232, 60, 43,167,111,164, + 40,104, 97, 23, 73,198,241,168, 19,240,133, 75,138,155,120,161,103,111, 89, 30, + 64, 90, 73,232,201,236, 43, 93,141,182,109,100, 39, 36,176, 88,238, 53,105,201, +107,167, 29,156,144,162, 28,163, 56,182, 91, 73,116,201,197, 68, 17,195,109,240, +186, 94, 90,111, 17, 89, 1,197, 90,193, 1,133,226, 8,239, 19, 74, 81, 10,174, + 92,237,144,213,126,159, 60, 98,255, 63,232, 80,200,214, 52,230,237,240, 61, 27, + 35, 38, 24,179, 43,251,151,112, 88,168,241,190,169, 38, 84, 75, 42,218,105, 10, +161,208,240,240, 47,139, 36, 0,195,218, 95,186, 46, 78,116,159, 38, 12,147,213, +156, 8, 74, 71, 77,213,213, 23, 46, 10,232,204, 74,224,104, 90, 50,160,170,251, +166, 46,112, 77, 84, 87,252,170, 93, 93,179,145, 84, 37, 90, 89, 83,108,205,211, +150,237, 60, 83, 25,205,102,135, 10, 51,222, 52,154,206,235, 71,227,174, 36,137, + 15, 28, 86,235,223, 34,151,201, 27, 80, 24,185,239, 75,147,220,226, 93,242,223, +144, 67,226,164,200,219,124, 47, 80,226,180,252, 14,152,163, 18,113, 77, 77, 42, +196,196, 98,137,187, 83,177, 75, 45,103,164,102, 88, 51,161,112, 16, 97,245,217, + 29,236, 26,254, 48,172,222,218, 23,195, 8,180,114,141, 83,112, 4, 6,240,184, +154,101,218,157,227,126, 84, 81,236, 97, 55,199,144, 4, 0, 30,118, 32,187, 93, +248,224, 44,194,227,125,229,108,159, 89, 48, 84, 48, 28, 39,204,121, 12, 20,182, +243,162,252,215,100,131,230, 78, 84,153,109,128,110, 37,163,202, 83,147,209, 48, +255,217,193,141,181,191, 37,151, 82,158, 96, 31, 64,140,178,115,243,170, 0,243, +254, 54,180, 91,207,210, 83,194, 21,196,172, 14, 4, 52,226,252,237,111, 21,125, + 49, 87,137,135,243,130,140,182,219,236, 87, 3,197,152,184,160,225,227, 24,242, +146,148, 38,112,140, 18, 31, 79, 73, 26,138, 73,130, 20,114, 31,153,122,162,168, +141,161,120,209,219,220, 47,152,120,182, 16,165,177, 27, 23,238,126, 60,109,205, + 17,161, 75,204, 48,185,147, 93,177,147, 7, 9, 74, 67,142,156,116,166, 8,104, + 49,253,252, 62,174, 76,152,134, 96,123, 89,247,151,164,199,127, 4,223,215, 88, +139,216,104,210, 15, 92,147,134, 37,205,203,197,104, 97,217, 78, 35, 69,139,238, +140,165,153,252, 68,153,141,209, 99,200,130, 35, 68,135,137,222, 89, 49, 48,114, + 90,237, 77,148,165, 42, 18,190, 79, 52,255,107,250,138, 39, 0, 81,102,225,240, + 4, 69, 71, 92,118,112,241,118,226,238,103,199, 86,181,233, 44,143,142, 28, 47, +101, 77,140,230,140,161,198,178,204, 48,233, 64,199,229,255,234,156, 3,100,161, + 17, 22, 84,236, 25,129, 78, 35,193,174,190, 24, 6, 49, 17,157,164,129,116,245, +193,165, 48,140, 90,141, 70, 23,128, 48,120,164,216, 93,202, 82, 76,201,180,150, +227,113, 41,144, 67,165, 59,132, 9,230, 94,146, 34, 38,233, 53, 69,255, 20,134, +119, 91,145,134,142,142, 24, 6,206,201,169, 29, 7,242,195,213,122, 96,225, 4, +209, 25,132, 8, 87,247, 48,211,101,168,128, 19,139,229,124, 26, 14,118,158, 18, + 54,141,200,189,130, 78,157,255, 84,190, 33, 92,194,136,246, 37,251,158,226,124, + 91, 68,228,250,179,150,253,173,238, 47,228, 52, 81,100,115, 2,166,102, 4,119, +159,254,108, 53, 60,251,214, 9,157,172,219, 59, 65, 68,162, 88,202, 62,215,188, + 0,249,207,117,241,251, 86, 62,103, 93,233, 93,235,160,246,209,242,200, 56,239, + 97,243,160, 72,110, 63, 88,160,183,148,180,212, 7,117,222, 97, 95,169,142,136, + 96, 80, 22,209,131,251,196, 60, 11,131, 40,233,156, 95,152,223, 63, 25, 96,172, +165,198,157, 29, 76,139,139, 47,216,151, 39,112,234,183,108,208, 48,233,150,110, +208,124,251,205,246,129,104, 34,203, 79,151, 32, 21, 34,126,212,102,223, 30, 64, +210,128, 20, 24,226,242, 64,226,169,194,215,175,180, 96,219,183,233,184,100,180, + 36,229, 90, 56,102, 85, 16,161,113,159, 94,172, 95, 36, 13,245,221,155, 20,146, +156,233, 61, 52, 93,187,193, 30, 5, 96,184, 35,194,252,131,104,211,139, 16,102, + 20, 17, 67,231, 89,140,131, 50,153,233, 83, 54, 45, 92, 29,229, 34,109, 88, 48, +158,241,229,128,251, 83,163,204,122,161, 43, 4, 80, 95,186, 20,186, 4,137, 97, +143,203, 8,234,128,133,208, 72,153,186,174,103,107,203,245,154,215,249, 62, 37, + 13,250,212, 25, 33,228, 16, 65,111,106, 52,137,183,230,204, 2,201, 98, 44, 70, +179,251, 99,170,187,148,223,177,101,245,151, 23, 73, 19,184,208,153, 33,195, 20, + 24, 88, 33, 58,170,137, 76,185,232, 95, 56, 87,134,217,215, 10, 43, 20, 28,125, + 33,157, 16,105,229,213,153,109, 16,153,169,136, 76, 26, 67,141,184,147,229, 4, +198, 70,252,197,144, 37, 60,124, 54,161, 6, 48, 36,199,162,187, 88,120, 83, 71, +183,132, 34,202, 96,133,218,112, 38,122,130, 22,187, 44, 44,233,132, 76,187,219, +212,105, 50, 7,239, 68,171,136,173,173,202, 19,223, 13,170,219,117,197,152,213, + 38,227,243,127,125,162, 98,172, 77,140,160,113,182,194, 32,186, 36, 74,102,119, + 30,128,209, 29, 80,246,162,185, 49,141, 26,202,203,240, 35,112, 66, 13,166,102, +125, 27,139,142, 57, 9, 38,147, 82, 91, 88,177, 70,109,232,232,178, 72,146,173, + 3, 63, 48,249,113, 22, 53, 25,112,148, 5,159,155,167,101,132, 95, 82,101,111, + 57, 92, 47, 16,117,242, 50,212,141, 86,224, 3, 28,186,112,140,184, 72, 52,214, +192,158,167,100, 85, 89,220, 70,110,213,176,173,213, 38, 9,147,166,106,195,184, +111, 64,244,174,183, 7,180,208, 71,143,218,110,155, 70,186, 5,143,196,202,234, +236,197,103,121,109,194, 11,114,135, 79, 32, 32,246, 52, 36, 1,238, 49,148,147, +219,117,135, 73, 60,170, 9, 56,243,113,160,139, 89, 44, 13,114,115,158,215,251, +104,165,189,231,227, 59,112,210,255, 73, 59,210, 33, 72,240, 55,124,113, 87, 99, + 21, 66,200,241, 60, 57,122, 4,117, 52,239, 78, 27, 93,150,251,172, 37, 96,219, +227,243, 11, 78,169,155,240, 2,245, 17,192, 40, 21,141,195,235,207,160, 10,248, +253, 79,198, 65,168,168, 49,124,211,182,131,212,159,255,228,228,134,145,219, 50, +167, 7, 34,173,233,110,138, 29,170,180, 60,214,159,127, 66,181,166,202, 39, 23, + 53,108, 96,121,129, 8, 58,166, 33, 96, 67,125, 70,111,183,160, 82, 32,254,248, +113,124,214,136, 6, 36, 61,230,201, 50,129,118,124,226,250,103,103,149, 98,203, + 39, 39, 83,239,237,206,240,247, 34, 34,230,116,226, 50, 48,222,122, 17, 73,107, +231,229, 90, 9,202, 75,161,105, 41, 62,131, 89,141, 37, 22,213,241, 69,215,125, +133,136, 96,218,192,183,201,238,139, 75,172, 53,144,136,144,104,176,217,254,226, +180,147, 16,193, 32, 78,140,176,197, 1,134, 75, 76, 94,244,196,110,166,216, 33, +118,153, 35,119, 56,136,135,157, 23, 84, 48,225, 50,176, 33, 47,250,243,192, 55, + 5, 83,252,118,133, 29, 54,131,176,150,204,131, 13,142,121,101,167,149,197,156, + 91, 86, 39,170,163,224,199, 8, 93,219,151,118, 63,231, 75, 44, 60,230, 29,140, + 13,104,204, 65,194,193,252, 17,208, 26, 97, 88,196, 85, 83,187,157, 93,175, 51, +234,243,222,178,117, 42,103,137, 53,208, 71,186,132, 5,133,220,221,170, 7,251, +104,243,221,244, 23,202,106,253,143, 87, 92,190, 3, 11,194, 53, 79,148,222,140, + 73,202,105,183,205, 49, 17,171,123,208,237,205,194,137,194, 23,194, 29, 26, 88, + 80,250,142,128,209,109,149,149, 57, 36, 85,128,139, 16,230, 57,242,251, 64,164, + 63,161, 82, 82,140,108, 87,251,140,150, 82,212,219, 5,178, 90,224, 48,149,100, +187,243,157,184, 28,243,182, 93,131, 70,255,245, 77,224,191,107,120,193,182, 1, +103,134,213,206, 61, 97,105,238,122,102,198,160, 20, 24,215, 93, 60,195,175, 85, +165,190, 75,185,124,248, 97,253,252, 57, 77,192, 62,238,224,182,164,112,129,147, + 84,145,232, 78,243,198,232,183, 55,103,101,188,101,108,232, 80, 60,172,191,203, +135, 39, 48,134,235,138,212,202,142, 29,103,232,202,220, 42,170, 51,239,239,228, + 23,188,207,221, 14, 6, 20,217,174,144,177, 93,105,138,162,211,189,162,167,107, + 71, 59,145, 29,233,118,159,174, 36,221, 33,128,236,229,251, 54,181,116, 78, 97, +180, 39,128, 13,109,225,127, 40,130,186,192,186,127, 12,156,237, 70,102,133, 56, + 81, 45, 78,101, 45, 8,248, 83, 11,108,222, 50,143, 56,101,204,233,110, 43,179, +243,204,178,174,110,250, 79,160,112,110, 58,247,160,154, 72,238,252, 78,160, 57, + 99, 54,114, 49, 36,141,200,179,250,177,248,155, 24, 39,218, 11,192,109, 27,164, + 65,102, 5, 31, 31,250,221,128,154,228, 84,178, 71,158, 79,152,212,176, 23, 25, +195,231,172, 57,211,189, 67,213, 95,217,156,225, 48, 23,143, 45, 82,234, 93,181, + 79,108,151,189,226, 95, 50,133,240, 36,170,113,202, 34, 46,108, 25, 19, 25,112, + 66, 40,135,135,161, 85,170, 15,163, 4, 59, 18,133,218,217,147,244,245,103, 93, +131,115,253,202, 14, 61,133,197, 12,120, 83, 94, 80,147,224, 0,104,255, 48, 57, +189,198,128, 83,104,110,135, 13,248,150, 19, 95,197, 23,255,217,218, 29, 28, 60, +103,152,188,220, 87, 83,188,195, 99,191,125,112, 51, 26,123,212, 59, 97,127,252, +150, 75,203,255, 0,214,160, 96,229,163,240, 75,125, 66, 60, 47,154,234, 32,218, +206,216, 0,208,195, 43,201, 67,206, 78, 98, 92,187,125, 35,110,149,132,133,110, + 81,227, 78,119, 91,127,203,132, 56,194,172, 33, 85, 64, 13,132, 10,101, 28, 7, + 15, 61,171,120,116, 85, 66,159,196,236, 99, 8,250, 51,190, 13,178,123,139,218, +148,129,159, 37,179,222, 34, 51,213, 3, 97,152, 84, 66, 59,180,204,115,223,220, +142, 36, 14,253,146,120, 68, 88,212,155, 81,190, 31,131, 38,116,227, 76,218, 77, + 81,162,162, 58,168, 22,114, 90, 81, 80,194, 74,148, 34,121,249,205,110, 65,148, +224,244,114, 41,161, 97, 68,172,167, 62, 36,161, 34,155, 20, 80, 74, 21, 48,253, +140, 77,128, 16,182, 22,165, 97,227,152,227,165, 31,188, 90,110,246,143, 97,116, + 16,224,254,230, 4, 52, 41, 31, 56, 84, 4, 52,168,114,231,107, 40, 5,138, 5, +151, 86,201, 9, 46,168, 84, 87, 31, 4, 88,250, 61,219,117, 50,103, 9,165,250, +179, 49, 63,144,108,237,100, 4, 49,149,166, 51,165, 12, 79,125,108, 3,194, 73, +100,122,128,142, 62,126,237, 37, 60, 38, 48,180,228, 78,190,183,140,189, 93,190, + 70, 67, 51, 50, 72, 73, 54, 81,184,198, 52,165, 50, 34,172,188,148, 26,135, 80, +207, 6,138,159,206,221, 30, 33,203, 30,124,152,169, 48, 58,143, 42,182, 69,194, +156,121, 53,252,253,128, 59,147, 95,129, 65,165,241,130,238,144,141,110,179, 18, +213,136, 94,240, 70,161, 73, 22,172, 4, 93,143,163,144,204,225, 42,172, 99,127, + 61,247,211,155, 68,143, 63,150, 64, 58,176, 5,231, 71,141,215, 72,228,137, 58, + 96,115, 4, 98,233, 58, 66,187,132,232,106,159,215,172,213, 13, 88,170,120,224, +116,164,171, 59,133,232, 20,175,231,181,131,214, 4,229,193, 77,198,107, 16,185, + 35,120,230, 95, 20, 9,165,161, 27, 85,175, 23,174,117,144, 11, 37, 38, 59,212, + 8,120,124,114, 23, 2,136,219,169, 4, 43,127, 61, 33,106, 21, 63,226,209, 31, +230,108,220, 14,133,177,142, 10, 17,124,106, 14,160,255,198,251, 74,169, 55,209, +108, 45,213,137, 27,171,237,152,164, 26,191,107, 76,218,137,183,158, 74,129,127, + 60,218, 34,238,183,204,207,146,139,199, 2,142,171,185,206,212, 18,220, 38, 83, + 85,207, 61,124,206, 69, 1, 59, 91,124, 30,195, 51,193,117,169,253,173, 64, 81, +207,125,203,164,143,179,186,147,102,239,128, 3,192, 49,137,242,187, 69,188,182, + 99,110, 30,222,243,128,201,113, 96, 51, 9, 71, 88,232, 12,130,154,137,153, 32, +111,233,160,241, 73,132, 29, 36,108,191, 93,134,210,212, 65,174, 68,234,136,138, + 81, 72, 20,132,119,100,106, 32,125,191, 46,247, 68, 69, 14,133, 83, 44, 16,105, + 62,171, 49, 21,168,203,107, 43, 79,254,113,136,213,156,229,197, 46, 20, 11,166, +115,207, 18,234,227, 28,213,174,182,252, 8,105,215,102, 16,140,187, 83, 83, 76, +156,182, 8,236,180,119, 86,242,150,241,133, 66, 96, 60,221,136,232,246, 96, 85, +113,208, 24,141,110, 49,102,140,246,173,126,105,184,198, 4,221, 28,159,164,113, + 70,195,177,111,219, 83,117,176,190, 35,177, 11, 67,197,255, 68,184, 20,170,181, +146,169,107, 72,111,168, 39, 68,227, 92, 33, 65,204, 29,165,108,161, 69, 36, 41, +197,244, 57, 46, 72,155,164, 2,118,147, 68, 37,160, 72,201, 34,155, 83, 46,196, + 6,245,231,134, 44,153,246,115,200,251,146,130,114,226,158, 53, 72, 7,190,180, + 8,105, 95,219,118, 61,246,209,163,136, 11,148,174,165, 81, 14,207,147,225,235, +202,204, 12, 74,132, 31,204, 31, 95, 3, 3,157, 89, 16,242, 64,188, 10,117, 56, + 8,240, 86,227,223, 33, 51,158,160,181, 67,147, 27,115,161, 50, 69, 1,249,136, +192,113,127,137, 64,117,189,226,181, 14, 66,213,102,115,203,218,214, 53,102,130, + 87,181, 89, 29,255,144,189, 11,209,216,232,168,112,137,194, 97,163,195,111,238, +242,188, 78,148,134,140,115,101, 97,155,107, 96, 26, 74, 89, 88, 34, 59,163,214, + 16, 49,181,160,236,203, 34,235,215, 92,228,101, 20, 46,177, 8, 9,181, 22, 18, +105, 77,120, 68,211,183,226,197,229, 7,122,243, 62, 96,120,219,109,184,140, 81, +232, 38, 32, 62,252,245,217, 35,246,163, 6,211,141,186,187, 1,145,132,171,150, +113, 46,126,178,179, 63,200,230,105,198,191, 97,214, 16,205, 69,133, 44,213,133, + 24,119,248, 90, 91,130,181,182, 86, 33, 24,139, 78, 20, 11,196, 57,210,225,186, + 35,199, 48,217,154,177,181,160,160,209,191, 52, 75,228, 69, 36,179, 80,209, 69, +170,166, 97,252,181,180,119,115,149,138,115,181,111,218,169, 63,240,223, 35, 40, + 6,199,238,132,228,183,195,174,241,231,146, 12, 47,225,145,211, 52,123, 61,182, + 72,204,197, 64, 11,103, 88, 29, 36,179,220,241,136,220,172,162,107,142,112, 5, + 73,138,220, 72, 27,153,239, 0, 41,156, 36, 36, 95, 22,230,227,150,146, 5,216, +135,254, 72,154,165, 26,236, 50,251, 64,189,206,109, 30,105,156,215,168,174, 99, + 59,148, 31,127,104,172, 13,193,232,188, 55,119,212,184, 47, 85,202, 42, 63,202, +194, 0,152,242, 72, 98,208,254, 86,121,253,220,207,101,202, 97, 80,253,174,156, +223,126,208,191, 51, 98,151,234,253,114, 78,243, 71, 51,121,176,125,172,186,134, +127,184, 73, 94,104,235,197, 92, 65,250, 33,170, 28, 73,196,133,236,153, 28,254, + 15,156, 58, 65,198, 2, 86,128, 44,149, 65,135,144,154,120, 89, 88, 42, 98, 13, + 97, 46, 9, 12,234, 85,126,155,150,107, 46, 45, 35,171,234, 62, 34,237,168,111, +196,201,107,160, 5,156, 62, 37,151,133,132, 45, 28,113,190, 0,100, 3,179,228, +187, 37, 89, 56, 30,163, 9,242,241, 60, 27, 40, 50,218, 16,225,193,235,237, 43, + 44, 5, 56,177, 12, 40, 45, 37, 95,252, 89, 49,192, 4,247, 97,161, 64,107,217, + 60,129,118, 37, 53,180, 3,182, 43,180, 14, 73,233, 33,195,185, 79,223,250,218, + 0,228,155,173, 31,173,242, 38,246, 23,252,164,223, 16, 26,184,132, 57,178, 75, + 36,120,202,121,159, 53,238, 96,253,163, 88, 1,162,127, 41,192,178, 57, 82, 90, +148, 32,162, 47, 74,237, 0,248,144,169,213,118, 50, 39, 62,254,143,210,108, 81, +147,144,211,136,161,179, 30,195,121,195, 81,182, 27,124, 30,230,122,192, 27,149, +230,145,168,122, 74,151,217,118,240,198,120,104, 92, 62, 15,126,203,150,204,233, + 50,209, 84,119,136,252,154, 18,156,138, 58,101,168, 0, 8,225,158, 97, 81,244, + 31,152, 65, 67,142, 46,201,152,177,136,203, 23, 35,251,153,195, 48, 71,145,144, +174,192,226,169, 40,240,176,184,183,145, 11,184,112,108,100,248,217, 28,241,167, + 80,175,165,145,192, 91,122,123, 58,125,113, 47,216,252,212,207,105, 80,209,150, +122, 71,218,142, 48, 56,145,107, 54, 36,156,253, 4,143,166,216, 3, 72, 96, 39, + 44, 90, 35,104,126,240, 49,144,110, 85, 56,253,124, 10,161,175,250,170, 43, 5, + 4,167,204,148, 53, 58,191,192,149, 68,170, 85, 24, 91,227,187, 6,139,167, 83, +195, 25,174,216, 92,146,146, 47,246,223,170,173,240, 42, 82, 73,202,204, 76, 2, + 63,163, 66,241,246, 93,150, 96, 19,238,179, 84, 15, 79, 51,146,241,195,122,195, +129,186,188, 48,115,161, 95, 44,142,194, 62, 65, 66,212,140,141, 36, 65, 63,220, + 61,235,136,222, 3,158,254, 71,159, 43, 46,132, 45,213, 30, 83,194,161,212, 86, +138, 95,105,163,215, 63,228, 55, 0,157,174,162, 27,102, 32, 79,227, 77,198,245, +251, 41,108,132,220,189,169, 37,247,181, 11, 65, 20, 99, 91,140,203,118, 42,111, +142,197,134,177,251, 0,122, 48, 24, 76, 79,155,166, 4,159,123,178, 51, 62,224, +239, 58,208, 91,226,251, 18,142,219, 61,157,140, 82,140,234,131,172, 48,202,185, + 85, 37, 98,153, 62, 5,104,160, 6, 85,115, 61,235,139,241, 62, 4,146,106, 43, +254, 17,160, 52,140, 3,217,142,211,178,179,164,130,111,152,244, 18,206, 76,163, +207,188,163,105,184, 88,101,141, 94,217,225,195, 11, 76,202,215, 93,182, 59, 68, +235,130, 15, 2,100,226,180, 9, 17,120,251, 26, 84, 79, 77, 39,131, 62, 58,123, + 71,214,204, 65,231,249, 81, 46,203,197,221,172,197, 26,213, 57, 43,180,152,173, +129,214, 97, 41, 24,149, 56, 8,119,204, 4,116, 78, 11,225, 80,196,183,229,146, +102, 36, 58, 4,151,242,254, 17, 65,168,104,194,116,149,140,236,174, 83, 49,110, +186, 35, 59,228, 59,123,169, 36,106,202,212,237, 5,146,193, 27, 47, 89, 61,246, +230,103,163,156, 74,221, 52,221,227,213,100, 27,179, 76,139,195,186,171,103, 79, +127,115,217,206, 42,241,235,140,102, 25,101,234,233,233,203,221,180,220,118,211, + 97,210, 21,150,236, 59, 34,100,111,180,102, 46,112,118,193,192, 51, 39,245,209, +250,121,192,214,157,140,226,252, 5, 78,199,121, 3,143,166, 21,111,219,144,162, + 20, 92,156,225, 32,147, 60, 92,116,137,154,183, 88,241,112,173,192,154, 83, 83, +236,205, 69, 2,244, 53,177,177,132,240, 60,106,166, 99,203,111,162,116, 46,185, +239,221,254, 50,148, 71, 53,199,106, 57,171, 41, 50,115, 76,222, 67,161, 39,248, + 69,234,199,110,246,190,136,249,133,139,129,218, 78,189, 34,169,157,205, 54,138, +150, 94,189,154, 86,153, 81,195, 43, 16,132, 60,231,238,141, 89, 82,209, 65, 85, +120,202,127,174, 63,166, 46, 72,130, 2,120, 19,135,226, 2, 87,180,249,245,150, + 54,121,232, 75,137, 21, 99,132,236,148,153,212,241, 30, 72,145,227,141, 15, 60, + 24,166,213,242,112,179,108, 99, 90,158, 55,132,168, 50, 65, 75,216,106,247,156, +107,223,180,202,194, 73, 61,209, 18,150,128,242,179,164,115, 65, 5,120,165,237, + 13,103,213,121,201,222, 34, 73,253, 75, 17,136,205,101, 23, 34, 2, 44,146, 36, +224,169, 72,174, 62,201,172, 30, 98,129,190,249,143,247, 38,118, 15,185, 46,189, +134,102,235, 1,215, 86,188,133,253, 30,132,118,184,116,164,173,249,213, 84, 10, +124,248,120,187,127, 10,207,212,141,154,148,123,132,196,105, 60,138, 5, 68, 23, + 78,171, 7,164,198,114,188, 55, 2,130,110,252,236, 99,251,141, 25,114, 5, 8, + 74, 3, 48,176, 34, 54, 73,176,173, 97,248,224,112,167,247, 27, 15,123, 37, 40, +244,131,112, 13, 54,155,209, 79, 50,121,241, 55,193,238,110,187,176,228,153,236, + 13, 59, 57, 38,167, 23, 88, 18, 88, 29,211, 76,133,193,116, 28, 68,137, 57, 71, +245, 88,136,123, 28, 53,119,227, 39,163,240, 97,123,140, 11,224, 32,185,127,172, +185,178,198, 4, 12, 20, 37,150,195, 76,232,176, 64,163,117,129,147,249,164,246, +227,177,101, 7, 36, 7,170, 98,224,180, 77,202, 83,138, 58, 3, 73, 88, 74,102, +156,180,194, 1,157, 94, 20,156, 76,212, 32,246,143, 18,193,129,249,157, 7,140, + 66,127,165,241,233, 82,159, 52, 51,123,204,182,105,158, 97,151, 40,202,125,107, + 9,112,131, 77,251, 33,246,117,137,246, 81,156,213,163,137,234,113,221,185, 37, +111, 32, 31,148,109,250, 33, 75,195,153,255, 75,171,184, 8,100, 1,139,121, 1, + 48,177, 69,207,149, 9, 71,255,163, 76, 27,122,144,111,217,130,221, 97, 18,150, +220,128,105, 0,195, 42, 8, 2, 55,240, 11,164,135, 80, 77, 49,104, 48, 78,198, + 64,202, 29,230, 73,152,162, 95, 11, 35,120,144,230,122,124, 27,253,100,245,195, +239,190,202, 35,168, 8, 58, 86,126,163,208, 17,182,220, 7,205,135,130, 60, 97, +117,115,155,224, 72,181, 21,245,239,160,224,125, 21, 60,110,144, 94, 35, 46,200, +232,244, 80,167, 37, 68,212, 27, 74, 67,198, 45,212,188,199, 71,226,138, 9,178, +108,105, 39,139,185, 4,184,163, 60,230, 63, 91, 83,113, 5,140,132,200,229, 10, +142,134,152, 13,254, 41,180, 34,126, 4, 93,109,150, 68, 23,173,154, 38,101,117, + 52, 88,209,108,152, 50,179,171, 93, 90,144,107, 9, 17,125,153, 14,120, 99, 23, + 61,253,199, 5,218,212,178,173,172,254,255,185, 2, 16, 28,217,162, 72,167,187, + 2,167,213,232, 80,160, 15, 25,192, 88,253, 29, 85,135, 26,116, 46,146,153, 70, + 4, 42, 38, 29,255,117, 19, 19, 0, 18, 53, 99, 51,168, 34, 29,112,143,235,118, + 93,133, 69,161, 70, 21,237, 20, 85,219,251,143,248,127,226,204, 84, 87, 83, 36, +144,170,217,129, 51, 0,250,101,162,178,200, 34,189,204,233,181, 66,132,160,250, + 57,135, 97,143, 36, 34,245, 20,111, 8,164,219,213,106,106, 14, 83,101, 31, 64, +173,100, 89, 52, 79, 2,209, 26,125, 98, 86,144, 86, 57, 31, 32,133,196,146,152, + 79,178, 47, 71,142, 69, 8,157,196, 78, 99,103, 62,254, 99,165,213,197,130, 76, + 68,241,104, 75, 0, 87,139,167, 32,212, 1, 51, 52,101,234,145,227, 41, 29, 41, +133, 73,109,177,127,135,253,189, 41,251,203, 67, 53,162, 6, 89,169,222,245, 64, +173,139,149,206, 85, 52,222,177,219,255, 20, 16, 27, 22, 5,211, 34, 70, 64,229, + 47, 23, 80,185,109, 64, 10, 83, 81,216, 50,232,177,152,191,150, 24, 32,230, 57, +210, 32, 43,158,146,186, 4,139,193,161,240,111,170, 32,236, 51,248,253,237,206, +117, 33,210,110,118,220, 0,187, 38,106, 3, 57,148,250,131, 96,124,247,219, 3, +202, 70, 32,228,192,206, 93,216, 52, 30,238,199, 78,131,188,104, 99, 72,130,140, +149,175,211, 52,118,218,216,129, 53,176,110,239,152,187,140, 29,140,249,189,137, + 36, 89,232,126, 12,160,123,136, 97, 69, 22,143,249, 15, 27,164,242, 66, 27,145, +176,165, 77,120, 24, 36,138, 28,133, 49,252, 97, 0, 26, 42,201, 2,152, 55,188, + 70,238, 48, 29,220,204,196,157, 86, 26, 65, 4, 30,250,137,145, 18, 80,190,111, +170,108, 38,238,102,104, 54,100,143,217,120, 70,199,247,177,221, 39, 2,203,240, +133,232,102, 5, 19,114,247,241, 25,151,156,131,215,231,161, 5,215,246,126, 79, +133,111, 57, 86, 74, 3,134,111,113,132,190, 45,178,242,137, 93,215, 73,176, 42, +237,235,208, 39, 15, 34, 51, 21, 88, 94,160, 14, 29,183, 42,195,184,226, 44, 88, +176,185, 49,156, 4,242,248,231, 58,180, 22,224, 25,236, 18,217,233, 12, 67,141, +172,166,233,181,101, 75,181,208,136,198, 67, 68,253,122, 62,236, 24,109,251, 75, +213, 52, 54,110,223,134, 37,205,237,166,244, 19,147,100,144, 29, 15, 44,221,153, +116, 78,145,253, 32,116, 55, 73, 67, 4,152,220,141, 65,248,123, 12, 52,151,138, +128, 37,138,102,209,194, 96, 81,216,247,136,180,119, 24, 53,237,229,198, 17, 42, +217,190, 34, 70, 95,137,198, 96, 66, 68,200,249,100,142,212, 53, 19,153, 50,171, +191,108,127,131,213,220, 59,195,129,136,201,252,173,219, 78, 69,196,134, 46, 16, +241, 56,146, 61, 51,156, 18, 17,198,205,170,238,229,232,210,239,144, 33,186, 67, +149,230,156, 43,109, 89,135, 91,134,246,181,231,163,176,110,147, 52,128,124, 46, + 61, 28, 95,156, 65,228,198,140,161,218, 78,195, 36,143,177, 20,125,202,226,173, + 17,165, 36,149,245,193, 65, 89, 43,234, 49,197,181,108,130, 91,134,232,159, 41, +183, 91,122,103,186,200,192, 97,236, 35, 85,252, 33,130,148,150,125,248,252, 17, +180, 57,106,146, 25, 71,194, 65,137,120,162,182, 17, 29,226,146, 80,207,104,209, + 38,231, 54,228,107, 86,109, 75,131,242, 31,103,166,169,104,189, 70,244,175, 63, + 83, 43, 7,226,115,246,156,202, 9, 80,175,125,196,185,167,219,103, 38, 66, 9, + 17, 21,219,183, 85, 0, 37,192, 46, 39,237, 11, 69, 29,114, 6, 3,156,208,147, +154, 12,177, 12,169,232,130,233,217, 79,178,141,136,231, 59,158,181, 88, 16,208, +134,211,195, 26,151,176, 4,233,132, 18, 10, 18,133,122,194, 57,215,166, 24, 18, + 16, 38,131,107,214,124,230, 58,157,125, 82, 54, 99,130,192,122,248, 87,174, 42, + 28, 44,234, 66, 92, 68,194,241,146, 32, 83,223, 83,142, 43,173,250, 6, 49,148, +124,155, 25,123, 27, 66,100, 78, 55, 11, 16,207,255,188,147,125, 17, 68,140, 87, +250,143, 76, 8,229,230,187,127,252, 72,169,200, 7,113,187,124,163,143,107,234, +121, 63,214,223,198, 46, 75,195,187, 17,199, 87, 49,152, 11, 75,248, 81,169, 35, +243, 77, 95,150,245,192,105, 82, 76, 52,168,199, 56, 44,226,109,191,143,161,234, + 38,211, 83,164,130,241,102,176, 23,140, 4, 31,215,137,137,210, 19,212,157,142, +207,139, 13, 61, 52, 24, 85,130,181, 9, 6,188,211,171,227,156, 29, 99, 13, 20, +190,167,227, 92,113, 37,200, 45, 39, 31, 65,202, 90, 28, 63,156, 96,153,122,193, +138, 89,200,161,203,128,193, 88,132,187,190, 28, 37, 11,192,192,128, 68,237,204, + 83, 21,166, 27, 92,143, 75,170,124,137,118, 38, 32,149, 32,202,234,175, 17, 83, + 36,230,126,190,115,220,177,232,119,124,162, 5, 97, 75, 42,174, 38,121, 76, 71, +135,153, 41,147,136,194,249,201,246, 10, 22,231, 29,217,243, 19,237, 50, 7, 94, + 43,136,216,161,142,132,112,244, 34,227,110,108,113, 50,180,100,200, 73, 48,247, +204,110, 35, 17,137, 71,191,207, 14,149,191,211, 54,242,208, 9,188,150, 91,198, +152, 2,151,230,103,252,121,197,138,167, 18,233, 27,244, 84,121, 33,218,213,195, + 94, 2,127,166,153, 65,175,134, 32, 12,208, 62, 33, 12, 95,163,103,234, 40, 57, + 29, 86, 26,187, 6,174,233, 8,202, 57,138,113, 80,164,180, 76,187, 87,163, 46, +142,164, 75,116,248,157, 84,146,110, 20,207,159, 15,186,221, 61,123,244,176,111, +200, 81,205, 31, 23, 60,140, 4,167, 51,155, 91,245, 96,149, 46,248,114,200, 36, +114,146, 17,214,164, 32,159, 8, 73,129,158, 70,100, 89,141, 25,201,132,147, 77, + 73,152, 15,201, 86, 41, 35,159,224,144,122,200,148,126,230, 53, 91,237, 95,114, +155, 65,193, 98, 93, 1,133,218, 2,126,213, 97, 75,186, 66,140, 65, 74,180,140, + 52,174,181, 50,155,235, 81, 26, 29, 27,241,192, 66, 98,100, 39, 79, 0,247,159, + 64,107,103,153, 82, 80,166, 47,146, 54,177, 85,109,194,220, 81,119,237,150,145, +219, 8, 56, 21,193,137,239, 16,200,217,136,172, 95,232, 52,196, 60,198,108,186, +182, 46,113,204,122,108, 36, 88, 14, 53,151,191,199,140,128, 61, 41,148,233,255, +179, 31,124,245, 51, 14, 7,150, 55,226,102,202, 59,164,220,202,213,197,249,101, + 68,104, 4, 91,179,112, 84,196, 89,206, 67,228,183, 35,233, 64,198,153,176,151, +250,132,166,149,194,157,151,213, 32,182,204, 8,237, 52,224, 59,216,167, 81, 64, +142, 12, 3, 48,146, 11,153,198,138,242, 79,240, 82,202,195, 71,138, 88,143, 98, +166,120,100,178,223,193, 40, 88, 66,147,169,147,245,222,102,202,164,178,104,218, +184,149, 86,205,227,126,210, 78, 57, 38,127, 61, 6, 90,160, 94,178, 41,215, 50, +213,228,205, 21, 15,247,220, 85,129,253,158,209, 12, 78, 30,174,158, 35, 39, 94, + 57, 65,135, 5,208, 78, 81,186,130,220, 85,161, 50,254, 93,207,155, 2, 94, 54, +116, 16,151,199, 57,123, 74, 2,209, 76, 67,230,221, 72, 8, 95, 68, 24,235, 4, +199, 24,106, 88,109, 42,180,207,221,159,112, 68, 22,254,173, 41,189,241,224,241, +218, 30,129,251,147,121,117,161,127,144,196, 42,128,253,133,198, 59, 83,161,233, + 76, 17,239,212,126,230,128,245, 55, 1, 33,136,194, 94,246, 64, 97,199,193,169, + 44,210,238, 53, 12,200,208, 26,135, 76,206, 52, 11, 16,189,210, 88,113, 40, 87, +171,127, 33,176,116,110, 14,222,146, 26,175,156, 13, 74,145, 15, 22,140,180,252, +186, 23,251, 8,162,232, 81, 64, 72, 97,206,187, 43,178,144,138, 34,191,231,208, + 95,191, 47,131,135,162,102,223,184,245, 59,226,226,103, 58, 4, 72,215, 81, 73, +211,135,222, 18, 93,229,181,127,105, 12, 7,156,212,123, 55, 40, 91, 21,168, 80, + 5,244, 8,209,108, 17, 16,150,140, 7,146,168,237,251, 92, 70, 32,136, 90,140, + 39,118, 93,166,150, 6,196,205, 16,203, 1, 53, 55, 19, 35,170,207, 60, 59, 9, + 15,110,221,196,188, 19, 46,122, 42,157,129,125,186,149,125,252, 48,215,254, 57, + 19, 75,118,153,113,231,195, 15, 28,202, 80, 4, 57,195, 22, 33, 3, 76,168, 92, + 36, 72, 12,184,146, 25, 24,130,117, 83,176,238,209,129,199, 65, 53, 70,215,191, + 61,244, 99, 19, 7,244,175,146, 73, 44, 10,110, 39, 22,120,169,232, 73,201,228, +134,102,247,186, 84, 51, 13, 46,221,155,251,115,179,192,171, 49, 86, 57,211,101, +200,233,195,155,156,135, 66,132,223, 38,251, 90, 0,132, 76, 48, 75,248,124, 9, +211,196, 63,177,173,209, 10,162, 71,112,197,201,223,209, 4,154,139,164, 40,232, +205, 8,252,125,137, 16,164, 49,161, 34,134, 10,232,146,250,185,120, 4,238,242, + 8, 9, 6,220,243,212,189,137, 1,175,207,149,123, 51,162,223,162, 52, 45,102, +113,244,247, 60,103, 55,163,180,126,246, 2,118, 96,245, 33,206,210,247,196, 34, +151, 41, 34, 94, 42, 91, 3, 99,236, 70,231,142,178, 51, 12, 25,137,197,152, 40, +250, 62, 2,203,204, 43, 2,228, 33,199, 67,198,139, 34, 56,156, 24,227, 97,135, +101, 88,253, 24,116,198,239, 10, 43,129,148,225,157,234, 79, 92,229,242, 69,150, + 7,222, 1,161, 29,162,135,165,241,213,239,207,127,242, 79,160, 72, 70,193, 91, + 36,169,172,215, 68, 73,197, 93, 84, 94, 60,145,205,162, 58,155, 75, 81,176,119, + 63, 24,152, 74,115, 23, 41,188,123, 0,146,217, 40, 0, 3, 86,146, 10,160, 43, +178, 5, 46,137, 49, 8,196,229,128, 26,173, 2,153, 98,226,174,203,114,132, 71, +118,119, 95, 96, 45, 11,113, 38,138,132, 48, 28, 59, 53, 49, 9,170,171, 11,169, +245,229,117,152,231, 69,167,237,110, 7,227, 89, 39, 68,196, 41, 21,186,208,139, + 7,235,128,252,109,100,155,135,214, 12, 12,252,110,124, 16,160,204, 74, 49, 35, + 40, 42,145,194,170, 31,209, 15, 93,183,218, 2,255, 42, 63, 63, 68,218,142,129, +248, 45, 5,105,230,207,228,222, 75,245,163, 67,234,116, 98, 19,159,225, 56, 59, + 68,249, 57,136,136, 73,153,117, 34, 18,112,211,146,123,222,112,129, 4,160,211, + 23, 39,232,156,152, 67, 16,198,170,182, 81, 97,255,116, 32,134,133,203, 44,136, + 94, 51,252,202,112,223,190, 16, 41,124, 0, 44,159, 46,228,149,120,154, 41,232, +137,189, 15, 57, 73,101,129,227, 54, 66,197, 50, 46, 68,143,142, 55, 76,127,234, + 91,224, 90,233,219, 62, 56,122,214,240, 67,159,136,110,160,154,152, 97,236, 53, +253,169, 3, 53, 63,223,221,156, 50, 67, 46, 21,103,230, 75, 13,201,171,138, 74, + 68, 1, 41,121,172, 47, 17,149,194,109,162,216, 16, 64,171, 30,128,161,196,201, + 85, 37,175,153, 19,146,138,130, 58,211,137,220,140,191,130, 74,203, 70, 58, 50, +239, 74, 10, 22, 50,179, 53, 47, 75,208, 83, 93,192,105,164,210,142,212,247,172, +166,111,201,182,108,118, 85,184, 92, 77, 77,240,160,206, 64,215,239,228, 10,107, +213,242, 2, 38,215,212, 38,192,101, 75,133, 76,190, 17, 65,190, 77,232, 60,150, + 45, 71, 97, 4, 72, 2,217, 17, 80,238, 11,146, 24, 5,130,205,242, 54,175,118, +142, 30, 20, 82,142,138,107,176, 5, 23,170, 37,116,239, 4,102,144,255,104, 97, +224,203,161,122, 56,169,167,197, 36, 44,128, 31,170,213,180,128,167, 8,234,112, + 77, 13,198, 86, 32,127,149, 89, 36, 15, 80,157, 0,196, 33,198,224, 69, 64, 55, +185, 36, 94,230,228, 84,235,182,205, 89, 73,208,129,168,169,114,203,167,164, 38, + 80,188,197,147, 28,198, 46,148,143,114,189, 41,196, 17,203, 96,178,213, 45, 82, +239,159, 99,154,134, 16,226,100, 97, 84,245,228,105, 38, 93, 7,105,190, 23,176, + 49,240,126,184,237, 65, 90, 26, 29,247, 51,143, 53,243,145,214,143, 15, 98, 81, + 46,131,130,221, 72,218, 25,240, 26,191,225,252,125,177, 65,128, 42,152,241, 39, +123,156, 24,219,143, 41, 97,254,140,124,214,120,203,151, 15,214,101,188, 13,201, +119,168,153,187, 2, 9, 86,222,242,223,113, 29, 40, 65,225,219,121,168,177,229, +239, 8, 12, 68,160, 31, 3, 36,113,222,100,130, 36,158, 47,101,126,145, 15,210, + 65, 35,139, 85,190,230, 77, 32, 19,197,143,130,239,174,240,198,205,195, 88,105, +121, 57, 44,239, 25,226,220, 50,220,195,116,252,150,194, 35,160, 1, 75, 30, 6, +175,163, 38, 11, 91,208, 55,180,241,223, 15, 17,169,205,255,174,111,200,251,250, +149, 53,192,116, 10, 57, 56,211,113,156,153,186, 14, 27,121,136, 30,224, 84,191, +138, 37,121,239,221, 41,233, 36,208, 51, 29, 49,105,193,106,144, 62, 44,199,191, +168,202,126, 99,223,194,125, 43,164,185, 44,209, 33, 2,160,250,102,214,244, 7, + 61, 52, 21,228,195, 78,254,242, 38, 8,208, 67,118,193, 24,205, 83, 35, 98, 73, +207, 51,196, 97,231,137, 5,104,237,247, 3, 85, 38,205,136,253, 49,113, 60,133, +141,130,155, 88,157,165,229, 21,227, 99,186, 58,122,206,136, 70, 52, 95,142, 26, + 68,161,200, 84,164,188,121,242,154,142,224,143, 5,144,184,232, 3, 56, 72,143, +190, 9, 21,148,180,165, 78, 84,118,123,210,201,115, 43,185,253,211, 25, 99, 53, + 47, 32,144, 11, 8,136, 45,193,180,179, 12,175, 46,124, 22, 6, 63,203,119,250, + 79, 95,177,128, 3,184, 33,200, 10, 61, 87, 78,220, 97,133,116,197, 90, 38,184, + 53,242, 91, 92, 95, 67,100, 28,122,179, 25, 35, 83,130,209,187,157,239, 89, 5, + 26,111, 25, 87,239,215,222,238, 49, 25,231,255,111,183,175, 60,161, 30, 31, 57, +182,247, 31, 25, 67,168, 61,216,191,241,148,216,236, 99,119,136,251,119, 19,228, +202, 66, 17,239, 41,185,119,218,199,232, 31,106,171, 81, 9,146, 5, 60, 37,115, +203, 73,226,202,122,212,211, 35, 77,201, 46,178, 34,109, 73,234,207,191,195,138, +252,194,162,170,242, 92,186, 33,165,111,210,180, 61, 81,126,255,184, 71,231,142, +163,220,100,172,208,159, 69, 69, 78, 55, 71,168, 23, 45, 38,110,198,156, 43, 85, +132, 43,103, 52,131, 20, 11,157, 22, 57,179, 69,119,210, 80, 78, 31, 68, 96, 57, + 19, 28, 12, 97,191,196,155, 64, 88,104, 25,186,188, 74, 88,148, 71, 49,205, 76, +191,226,239,146, 9, 17, 11,195, 2, 55, 11,138,101,209,140,174,224, 95, 79, 22, +199,206,233, 54,225,161,155, 18,201,177,136,147, 63, 27,205,151,163,202, 93,118, +217, 48,171, 66,189,194,244,201, 39,114, 47, 25, 61, 56, 42, 0, 65,249,189, 15, + 8, 76, 66,147, 38, 59,102,235,105, 38, 93,113,143, 67,121, 11,194,119, 67, 95, + 27, 16,157, 0,104,186,251,240, 80,212,185,133,135, 35, 43, 49,106, 89,151, 15, + 63,138,108,169,176, 41,188,210,133,158,165, 26, 27, 37, 4,119,201,215, 84,222, +141, 7, 62,230,119,162, 29, 75, 67,228, 76,219,193, 65, 10,218, 79,208,187,143, +230,224,132, 89, 36,219, 14,177, 79,157, 53, 42,136, 49,164,158, 21, 13,159,101, +221, 68, 53, 79,216,224, 53,161, 52,228, 89, 31,174,187,125,123,186,166,242,239, + 14,228, 39,119,149, 64,214,183,179,182,211, 86, 97, 71,129, 35,156,206,124,155, + 20,252, 80, 89,128, 37,132,194,214,229, 32,214, 79, 96, 42,127,107, 72,195,181, + 60, 91,190, 9, 89,191, 88, 54,117,254, 38, 63, 96, 3,248, 57, 18,227, 8,221, + 77,201, 75, 99,252,216, 70, 38,177,254,250, 88, 42,162,246,215, 80,200, 67, 72, +242,192,226, 68,215, 95, 79,145, 42,129,176,212, 92, 25,232,169,239,149,125,200, +230, 54,165,110,182, 17,175, 47,242,211,195, 33, 60,135,136,234, 93, 34,102, 65, + 92,165, 59,130,104,244, 64, 69,121,205,107, 48,224,229, 17, 60,148, 7,255,230, +156,231,132, 20, 87, 56, 65,192, 77,186,236, 8,239,145, 43,218,225, 25,227,103, +222,103, 58, 82,130, 98, 71,168,185, 96,136, 85,244,190,228,182,240,251,140, 15, +165,229,125,222, 79, 14, 98,164,158,247,134, 97,168, 30,123,233,211,156,122,254, + 79,233, 58,153, 6, 86,149,132,181, 84, 58,213,120, 99,234, 59, 76,106,112, 35, +118, 67,163, 62,200,193, 9,216,206, 29, 74,111,130, 58, 61,151, 48,194,146, 58, +210, 38, 49, 17,208, 97,227,119,126, 67, 72, 29, 81, 32, 39, 55,155, 52,129, 62, +122,251, 71,107,155, 14,106,198,136,153,204,222, 21,145,163, 98,253,188,215, 4, + 16, 63, 17,139, 77,184,114, 54, 43,230, 53,108, 71,158, 38,153,211,157,125,253, + 5, 0,144,204, 9, 36, 85, 47, 58,161,163, 95,162,186,112,178,173,221,136, 84, + 15, 4,157, 56,131, 16,196, 23,225, 75,200,184,118, 77,199, 37, 58,129,224, 59, + 70,118,155, 6, 18, 7,239, 56,253,118,107, 97,217,238, 82,224,170,234,140, 64, + 94,129,201, 42, 86, 6, 69, 58,254,226,118,194,106,101,175,117,194,161, 74,130, +201,246,214, 79,125,210,128,179, 68,214, 14, 37,189, 29,153, 47,195, 45,191,197, + 35, 5,225, 75, 76,151,179,229, 27,185, 78, 84, 96,196, 33,226,200,200, 44,240, + 77,166, 59, 93,247,235,138, 36,133, 1, 91,162,248, 47,227, 90, 44, 22, 31,115, +164, 70, 83,168,195,196, 53, 59,245,179, 59,146,237,169,125,154, 46,170,134,186, + 89, 1, 46,247,137, 30,202,244,169,251, 79, 28,105,101,229, 85,228,143,249,180, + 81,124,206,238, 50,252,101,136,122, 11,177, 50, 53,123, 60, 98, 26, 84,174, 64, +251,229,111,112,173,171,211, 57,238, 48, 29, 16, 73,142,205,125, 40, 64, 83, 47, + 80,104,136, 96,202,144, 95, 4,136,155,255, 94, 8, 34, 20,192,128,136,177, 18, + 52, 93,205,215, 63, 77,227,146,157, 84,182,221,120,120, 81, 8,255,254, 52,168, + 79, 52,218,217,232,157,180,189, 23, 85,219,195,200,171,160,191,144,114,229, 10, + 46, 87,123,117,146, 19, 64, 44,210, 74,168,254,245, 76,218,137,242, 81,115,206, +125,186, 65,250,255,120,151,208,242,230,175,200, 10,195, 12,208, 0,252,237,105, +119, 32, 16, 64, 43, 26, 68,208,194,157, 4,113,137,137,173, 6,244, 37,200,173, +114, 64, 71,209,173,246,191,178,244, 1,188, 37,166, 90, 93,202, 11, 50, 0,212, +250, 71,220,170, 11,150,252, 11,141,244,177,105, 42,220,103, 38,140, 14,187,228, +206,113,184,246, 44,159, 36,244,158,226,238,173, 93, 48,138, 4, } ; -// ../Source/Template/GB_binary_search.h: -uint8_t GB_JITpackage_73 [1194] = { - 40,181, 47,253, 96,213, 44, 5, 37, 0,214,168,121, 40,224,208, 56, 7, 58,199, - 12,161, 27,171,226,180,168,133, 78,196,187, 87,189, 99, 21,175,191, 45,253,101, -118, 56,248,103,240,230,140, 23,195, 24,131, 49,132, 16,112, 0,112, 0,106, 0, - 27,199,185,117,192, 52,169,172, 8, 75, 13,118,153, 87, 42,247,214,119,114,188, - 34,108, 39,107,189,137,120, 20, 36,170,200,162,202,150, 57,183, 87,126,154,115, -142,203,252, 17, 88, 19, 43,114, 64,153, 88,167,180,199,159,109, 17, 84,120,149, - 57, 73, 94, 10,234,206, 31,150,217,104,100, 7,107, 67,133,109,133, 29,198,183, - 67,216,116,109,115,143,124, 43,181,135,159,253,191, 34, 43,169, 85,200, 54, 35, - 85, 56, 59, 35,211, 52, 92, 34,153, 34, 18, 73,177, 65,221,111, 86, 96,112,103, - 31,225,113,230, 90,142, 36, 3, 27, 29,144,156, 99,186, 56,245,158,231,245,227, - 66,173,185, 46, 20, 89, 4,229, 73, 16,244,123,253, 85,229, 88,233, 63,179,227, -100,205,218,254,223,177,220, 25, 32,186,113, 58,111,193,168, 93, 85, 85,119, 99, -174,179,184,231, 44,239,103,191, 95,249,195,119,246, 43,221,152,235, 64,109, 95, -121,184, 56,157,137,103,111, 28, 3, 38,135,204, 33,129,147, 89,192, 50, 10, 78, - 6,226,210, 4, 28, 20, 93,222, 30,221,114,215, 59,121,163,231, 73, 79,154,240, - 85, 99, 76, 14,213,123,109,125, 13,141,165,246, 56, 97,201,114,234, 29, 29,151, -199, 59,156, 5, 12,203,144,110, 7,226, 56, 67,116,187,133,178, 82, 16,223, 62, -115,159,217,246,240,244,126,142,104,124,228, 17,173, 21,206,219, 46,177,229,184, -100, 57,229,144, 11, 5, 50,251,182, 66,238, 58,248,219,127, 91, 83,125,132, 99, - 60,190, 89,110, 93, 2,185,156,185, 24,211,180,117,156, 28,208, 37,139,178,176, -203,242,203,173,158, 28,115, 42,179,253,230,179, 80,148,196,181, 97,128,152,192, -188,181,201,150,107, 87, 89,184, 52, 15, 17, 21, 89, 9,242, 83,152, 55, 5,240, -119,121,253,254,165,243,149,178, 28, 61, 58, 61,180,111,223, 10,187,215,185, 54, - 18,152,128,192,197,242,231,249,169, 87, 85,122,132, 87,150,183,249,156, 17, 57, - 42,223,199, 80, 32,148, 72,198,193,217,159,174,244,103,203,193,173,226, 80,129, - 19,168,241,165, 50, 35, 34, 34, 18, 68,146, 36, 73,107, 97, 16, 66, 8,130,210, - 74,120, 7, 34,104, 36, 17, 50, 20,139, 32, 8,141, 24, 66, 4,134, 24, 33, 17, - 42, 34, 32, 2, 67, 4,132, 8,137, 20,156,174,198, 14, 5,242, 77,137,222,169, -181,214,210, 31, 59,255,100,231, 31,146,139,167,122, 49,222,139, 37,249,200,117, -125,239, 88, 19,205, 48,180,135,193,247, 55,192,157,245,155,172, 85,169,127,104, -255, 45,158, 92, 38, 64,243, 34, 7,254,182,111, 93,178, 57,241, 53,200, 89, 61, - 30,225, 12,227,172, 8,246, 30,121,164,107,121,195, 13, 79, 10,222,185, 61, 63, -212, 22,149,203,255,150, 0, 84, 11,176, 7, 19,156,170, 70, 75,172,159, 48, 73, - 8,243,250,186,122, 14,251,161, 27, 34,113,235,171, 63, 17,198, 76, 32,196, 30, -192,158,173,238,123, 5,227, 19,140, 26, 72, 19,202,185,133, 88,161,152,102,204, -130, 30, 64, 80, 81, 93, 61, 4,181,110, 22,238, 51, 23,114,240,176,175,242,232, - 75,223, 61, 68,104, 96, 62,132,225,203, 66,209,132,175,225, 66, 85, 55,216,164, - 9,144,210,106,128,130, 42,223, 58,237, 52, 38, 72, 11, 39,218,145,130,222, 84, -248, 30,191, 53,209, 31, 78, 52,111,191, 37,203,138,161,215,168,123,156, 88,137, - 39, 61,134, 78,254,176,233,160,164,211,131, 37, 92,154,120, 93,159, 3,202,141, - 8,109,255, 38,104, 99,165,100,215, 45,174,173,143,241, 48,196, 74, 41,205, 13, -157,183, 58, 71,200,254,202,196, 51,221, 28, 99, 32, 1, 12,178, 48, 88,140,109, - 73,207, 93,223,124,169,228,157,127,216,105,108, 63, 96,111,216,160,202,224, 96, -149, 84,141,140, 99,219,212, 6, 96, 87,155,232,227,254,205,143, 14,142, 40, 83, -237,110, 83,115,145, 16,136,109, 94,232,172, 83, 91,242,182,223,128, 3,105,247, -140,172,123,168,192, 98, 56,127,214,130,185,156, 25, 81,144, 56,109, 36, 10,254, -228, 2, 89, 99,244, 2,107, 83,136, 47,149,136,147, 73,202, 96, 59, 0, 9,157, -170,202, 14,186, 29, 32,251, 38, 22,174,140, 30, 71, 73,122, 55,253,191, 83, 51, -211,240,194, 54,101,100, 8, 71,135, 92,221,121,107, 83,194,246, 89, 69,123, 46, - 23,133,151,125,198, 79,168, 61,144, 95,135, 4,193,211, 21, 9, 7,169, 18, 55, - 71,237,240, 68, 58,197,100,142, 44,121, 90, 30, 14,255,182, 55,176,145, 11, 3, - 22, 49, 70,199,207, 72,250,133,102,213, 86,210,175,137, 64, 51, 60, 80,132,168, -210, 16,105, 24, 30,184, 76, 50,193, 35, 39,106, 37, 68,234,212,118, 53,212,167, - 89, 63, 35,139, 81,162,182,187, 65, 44,102,224, 62,170,219, 96,142,239,160, 8, - 43,226,243, 97,137,112, 8,177, 94,144, 34, 0, 2,246, 4,232,254,250, 45, 7, -173,248, 73, 63,223,192,190,120, 96, 17, 68,218, 86,129, 7, 64, 90, 6,147, 72, - 24,121,251,172,247,193,122, 50,151,149,150, 34, 3, 69,179,112, 85,118, 16,219, - 15,213,153,152,210,195, 7,248, 65,182,114,115, 30, 99, 37, 76,216, 14,225, 31, -107, 80, 56,191,109, 56, 32,117,215, 66,216, 13,169,214, 13, 26, 52,203, 42, 51, - 81, 23, 45, 24, 87, 52, 7,152,129,220,168,198, 2, 39, +// ../Source/Shared/GB_complex.h: +uint8_t GB_JITpackage_49 [1759] = { + 40,181, 47,253, 96,222, 40,173, 54, 0,230, 53,159, 40,208, 22,113, 14, 84, 6, +228,105,178,113,251,208, 63,149,223,228, 22,177,106,232,169,151, 34, 54, 66,115, +211, 0,254, 96,185, 44,189,200,213, 12,120,225,124, 1,148, 0,151, 0,151, 0, + 19,179, 64, 32, 80,165,146,161, 91,173, 90,134,185,115,107, 22, 20,112,190,215, +106,131,142, 49,108,246, 92,214, 31, 36, 33,220, 83, 57,223,126,206,148,181,141, +200, 98, 97, 42,214,222,110,154,103, 38,119,214, 53, 50, 38, 81, 49,141,252,186, +162,242,104,200,176, 48, 46,153, 76, 89,227,180,106, 33,173,113, 8, 53,167, 12, + 48, 22, 76,149,112,177, 96, 62, 61,233, 20,237,146,109,184,165,121,167, 85,249, +233,141, 83, 29, 77,197, 70,219,118, 66,100,152,206,221, 58, 92,155,235, 68,148, +183,174,254, 83,102,167, 81,118,237,216, 25, 99,207,104, 86,136,225,246,145,239, +218, 64,188, 82,137,170, 74, 37,111, 45,152, 66, 14,216,252, 0,225,127,152, 66, +246,211, 33, 10, 46,207,144,132, 49,152,176, 40, 38,181,202,159, 83,200,113,242, +200, 53, 13, 28,156, 91, 23,123,241, 41,159, 69,137,211,202,109, 89,159, 41,199, +217, 82,158,251,142,181,122, 73, 79, 55, 9,179,203,120,137, 93,179, 98, 31, 35, +216,132, 32,206,116,223,225,190,254,255, 40,234, 96,104,112, 52, 22,151, 7,231, +234,104, 34,166,172,143,155,245, 69, 28, 16, 69, 92, 30, 14, 21, 25, 22, 24,156, +140,177,152,117, 64, 20, 5, 40, 96, 16, 46,150,131, 3,133, 75, 69, 86,143,233, +228, 26,187, 98,173, 86,177,171,215,149, 63,115,171,138, 69, 61, 30,137, 5,153, + 72,148,117,146, 80,234, 89, 9,183, 16, 79, 29, 5,146, 91, 38,131, 77, 33, 41, +123, 18,157, 11,205,244,235,226,112, 58, 46, 80, 80, 62,157,114,112,123,215,117, + 41,114,217, 99, 87, 21, 54,231,201, 26,139, 28,176,217,108, 54,155,129,215,147, + 35,135,108,206,208,195, 73, 76,250, 1, 66,202, 52,153,124, 34,144,164, 19, 72, +143,147,171, 60, 47, 12, 7,177, 44, 28, 4,243,113,147, 71, 39,175, 91, 47,140, + 1,231, 33,163, 56,117,198,154,118,176, 62,158,141,213,184,251,216,243, 1,142, + 13, 99,255,117,221, 74, 7,152, 78,221, 62,108, 72, 76, 72, 20,229, 23,114, 44, +110,173,171,213,211, 41,169, 14, 70,249,183, 88, 56, 78,183,156,250, 39, 18,166, + 29,151,161,228, 72,194, 7, 0,224,248,255,209, 36, 93, 64,224,103, 96, 32,225, +157, 91, 73, 85, 1, 65,157,114,219,184,164,235,198,255,213,169,170,218, 16,142, +175,170,183,179,122, 56,250,255,212,212,189,224, 5,215,167,238,127, 79, 10, 93, +171,210,115,158,172,129,222, 17,152, 60,211,193,173,171, 8,146,167,181,101, 99, + 92,237, 28, 46, 71,187,227, 53,147,205,233, 88, 92, 26, 14, 21, 18, 37,177,247, + 20,229, 98,127, 78, 97,216,158,170,144,251, 60,179,147, 55,249,154,174,231,114, + 89,109,183, 82, 42, 95,108, 58, 55,130, 47,168, 50,117,198,208,204,136, 4,145, + 36, 73, 50,172, 1, 50, 98, 4, 33, 65,146, 6, 61, 91, 30,162,152, 28, 7, 36, + 36,195, 64, 16,134, 8, 33,132, 24,162,140,128, 16,162,144,128, 37, 81,148,130, +236,173,208,226, 88,252, 75,160,227,178,137, 57, 17, 44, 41, 16,165,167, 88, 4, + 83,217, 36,234,240,242, 90, 28,108,236,133,117, 2,240, 94,118, 40,163,197, 99, + 25,187,101,117,113,168,195,112, 30, 97, 21,173,157, 53,119,228,143,127, 72,188, +173,210, 5,104, 46,204,181, 13, 43, 16, 92,210, 30, 2, 44, 82, 0, 13, 74, 16, +208,224,208, 52, 0, 41,105, 64,191, 66, 72, 61, 15,111,180,152,100,116, 27,172, +199, 97,123,232, 96, 24, 49,226,224, 46, 86,225, 53, 58,172, 75,173,179,218,128, +210, 99,222,128,134,233,145, 46,152,161,139,224, 46,110, 52,175,242,121, 21, 76, +146, 9, 8, 22,213,101, 45, 90,154,178, 27,217,138,135, 98,243,182, 44, 71,162, +106,158, 85, 50,247,252,229, 37,253, 16, 86, 93, 43,150,194, 4, 58,106, 33, 31, +197, 28,204, 53,114, 97,117,134, 91, 97,235, 98,221, 5, 48, 90,133,146,158,132, +221, 92,239, 92, 19, 75, 91, 85, 6, 41, 99, 46,122,177,121, 48, 58,145,225,100, +217, 27,177, 44, 4,249, 21, 29, 23,130,196, 50, 6, 2,119,175, 31,190,120,111, +180,182, 10, 58,108,162,225, 85, 7, 75, 35, 31,126,182,169,226,226,112,212, 11, +167,161,137,165,217,220,214,104,126, 58,182, 75,167, 44, 55, 34, 64, 74,203, 30, +223, 21, 15, 10, 87,125,200,147,242,224, 96,104,241,132,180, 5, 1,152,104, 62, +197, 29,134,100,113, 16,166, 42,125, 40,205,161, 9, 35, 85,159,112, 84, 40,194, +211,135, 40,167,151, 26,191,160, 9,161,218,220,161,124, 92, 24, 82, 20,140,207, + 79,160, 24, 71,144,158,213, 82, 24, 66, 24,175,225, 0,184, 35, 2,225, 46,100, + 4,174, 94,189,149,137,211,181,181,230,235, 15, 23,108,203,122,177, 63, 14,178, +172, 53,179,137,253, 89,125,196,180, 40,108, 45, 6,164,182, 8,214, 45, 6, 36, + 92, 4, 78, 46, 6, 2, 93, 4, 95, 23, 3,242, 46, 2,151, 23, 71, 97, 47,134, +205,151, 65,222, 47, 4, 2,152,136, 79, 48,129, 62, 24,195,180, 48, 26, 47, 57, + 76,110, 98,153, 94,156,185,219,120,133,121,156,187, 16,121,199,150,204, 52, 75, + 57, 26,177,108,252,135,153, 64,207,140, 5,221,204, 13,235, 76,224,242,153, 34, + 4, 77, 66, 20,141,171, 43,254, 11,233, 43,212, 79,241, 61,136, 14, 41, 58, 26, +117,252,119, 11, 29, 55, 64,219,161,133,241,140, 5,236, 22,133, 62,174, 49,185, + 92,199, 72, 92,157,194, 9,139, 43,110, 16, 73,209,117,116,137,172,149, 25, 50, +147, 17,146, 2, 97,107, 63,228, 63, 59, 40, 99,155,192, 9, 67,188,185,238, 99, +136,216, 77,161,193,232, 99, 70,178, 15,177, 29,209, 40,136,119,157,163,138,183, + 40, 8,165,193,174, 66, 63,128,246, 71,111,236, 81, 35, 17, 55, 30, 69,255,138, + 15, 68,231,209, 44,137,171,118,160,112,209,165,244, 42, 63, 34,229,114, 30,149, +153, 85, 78, 28, 77,136, 66,146,201, 35,206, 88, 52,190, 25, 3,126, 38,137,177, + 68,172,213, 25,114, 50,116,201, 37, 73,180,168,166,243, 88,203,232,160,149, 96, +154,119, 36, 68,176,197,245,172,207,252, 83,225, 23,231,195, 31,219,185,186,126, +185, 59, 71, 68, 55,119,248, 10, 58, 29,182, 70,154, 64, 81, 50,182,104,250,180, +165, 38, 15,131,208,194,211,143, 30,185,182,151,161,202, 43, 80,243,158, 22, 95, + 38,201,107,155,158,111, 77,249, 89, 23,111,152,168, 42,226,127,221, 92, 21,187, +137, 70,186,234,148, 11,174, 55,177,241,193, 13, 71,195, 96,148,210,101, 16, 70, +249,181,156,170,178,249, 77,103, 82,199,202, 77, 3,243, 17, 84, 82,226,130,255, + 60,123,208,130,161, 19,146, 14, 73,190,118, 68,167,183,161, 43,123,223, 17,130, + 78,104,223,239, 47,112, 79,182,190,189, 1,151, 29,164,230, 57, 94, 16, 61,100, +136,181,248, 35, 73, 99, 96,157, 79,114, 34,120, 96,199, 15, 30,118, 82, 71,136, + 83, 30,160,129,155, 20, 51, 28, 51,155, 97, 20,142, 89, 60, 69, 37,158,101,250, + 24, 59, 69,162, 95,158,165,114,211,250, 96,144,177, 54,102, 59, 6,158,166,144, +250,129, 6,140,254, 47, 37, 64,116,214,208, 45, 27,186,197,113,106, 95,193,180, +158,198,211,148, 0,200,131, 85,205, 28,107, 64, 15,147, 11,171, 20,248, 4, 54, +191,146, 43, 3,173, 16, 1,219, 1, 91,130,254,110,160, 82, 3, 22,105, 33,103, +217, 25,163, 0,100,147, 18,173,182, 66,186,187,244,140,191,148,111,189, 65, 64, +241,132, 58, 19, 79,175,104, 7, 11,159, 11,135,140, 6,129, 97,208, 23,200,185, + 98,172,168, 86,253, 74, 60,106, 88, 49, 76,241, 24,159, 50,177,154, 14,161,253, +180,132, 8, 76,250, 89, 97, 81, 36,155, 48, 38,169, 49,162, 2, 56,216,255,180, +189,127, 33,224, 63,242, 75, 44, 33, 66, 70, 21,208, 75, 65,167,174,253,212, 57, +142, 77,179, 92,203, 76, 84,194,164, 12, 31, 20, 70,114,120,173,232, 58, 46, } ; -// ../Source/Template/GB_bitmap_scatter.h: -uint8_t GB_JITpackage_74 [244] = { - 40,181, 47,253, 96,137, 1, 85, 7, 0, 18, 78, 45, 23, 48,219, 1,180,166,187, -130, 15, 21,106,167, 41,142,162, 60,156,132,113, 54, 88, 56, 26,192, 0, 96,230, -114,125, 70,210, 22,247,166, 78,201, 44, 44,113, 95,194,238,187, 54,236, 3,160, - 10,185,201,243,158,168, 11,183, 7,243, 44,200,252,114, 53,115, 0, 36,199, 98, - 60, 74,138,237,227,142,251,217,204,123,253,210, 50, 94,175, 79,230,203, 0,165, -237, 40, 31,118, 95, 63,231,122,163,103,230, 60, 77, 31, 47,152, 37, 89,140, 70, - 73, 22, 31, 72,193, 11,157, 97, 81,242,227,241, 24,221,172,154, 61, 47,186,231, -130,208, 86,116, 41,231,181, 43,182,221,239,252,118,128, 46, 89,116,191,234,196, -122,102,173, 69,151, 53, 93,175,108,222,121,205,230,151,238,160,135,251,123,139, -164, 14, 91, 81,221,121, 12, 33,202, 17, 4, 48, 16, 36, 18, 0, 28, 3,226, 93, -248, 65,193, 14, 94,199,189, 87, 41, 97, 36,117, 79, 40,237,128, 74,226,231, 47, - 51,234, 16, 68,235, 30, 52,127,158,153,162,237, 98,171,229, 22,131, 22,144,138, -139,162,192, 13, +// ../Source/Shared/GB_ewise_shared_definitions.h: +uint8_t GB_JITpackage_50 [618] = { + 40,181, 47,253, 96, 14, 5, 5, 19, 0, 70, 31, 97, 32,240, 24, 61, 20, 35, 65, +146,186,180,209,252, 88,170, 2, 86, 93, 75, 66,107,138, 22,149,176, 96, 15, 15, +120, 6, 38, 45,194, 11, 87, 0, 83, 0, 91, 0, 30,134,210,163, 34,113, 72, 16, + 22,136, 67,194, 7,221,229, 81,215, 19,133,120, 65,186, 10,220,183, 84, 53, 30, + 55,105,153, 32,166,121,194,120,157, 41,222,126, 87,211,102,233,240,109,126,146, +123,190,159,235,155, 59, 90,114,123, 75,165,219, 57, 3, 44,104,123,235,174,182, +126,239,113,222,103, 10,106,238,117, 69, 61, 55, 39,110, 48, 88, 4,131, 33, 97, +103,107,192,239,246,124,107,198,238, 9, 62,224,246, 63,228,251, 90,255, 19, 5, + 93,191,166,157,135,180,118,143,181, 63,184,253,171, 30,195,144,250, 14, 77,212, +245,123,245,116, 51,118,235, 80, 72, 16, 30,236, 40,150,206,200, 95,191,186,237, +123, 25,225,181,253,174, 90, 8, 29,136, 86,240,254,148, 95,127,198,245, 6, 69, + 53, 19, 26,230,146,205, 24,113, 76, 97,151,134,105,212, 80, 28, 85,122, 57,190, +238,240,193, 40,214,203,162,112,219, 5,147,105,178, 75, 38,137, 64, 56, 72, 36, + 35, 41, 27, 23,217, 50, 78,196,126, 0,128, 91, 86, 65,147, 85, 92, 66, 54,216, + 70,195,220, 82,143,170,124,119, 71, 63,143, 93,205,111, 95,228,170,144,187,198, +189,240, 97,253, 92, 87,112,139,108, 21,188,103, 10,115, 34, 92, 70, 52,143,230, +177,170, 68, 37, 54,231,140,115,206, 57, 65, 3,137, 47,103,248,193, 31,151,196, +174,174,156,140, 82, 70,140,187,155,147,156, 71,195, 96,119, 75, 87,225,219, 29, + 28,114,193, 96,145,141,219, 50, 78,195,120,246,118,159,239,166,249,241, 69, 12, +226,234,194, 52, 27,109,245, 85,207,126,192, 26,140, 60, 86,119,143, 32,252,113, + 15, 95,168, 97, 61, 99, 70, 72, 68,146, 20,149, 22,134, 3, 96, 36,152,162, 51, + 15, 66,249, 56,201, 82, 66, 4, 19, 9,164,162,164, 60,146,162,186, 3, 75,111, +150,136,168,225,145,174,220,237,148, 40, 87,154,234,242,145, 81, 50,104, 82, 19, +223,153,222,179, 52, 24,139,208,142,184, 33, 33, 4,207, 71,248,247,114,192, 52, + 63, 90, 27, 21, 75, 49, 20,145,145,208,171, 24,179,131,197, 68, 11, 17, 70,118, +192,168,221,110,104,208,140, 45, 49,129,232, 11,134, 7, 75,237,125, 25, 37,112, +123, 94,241, 48,254, 6, 80, 31,194,197,188,255, 0, 4,204,125,121,174, 45, 98, + 70,174,228, 76, 14, 35, 67,149,134,225,233,210,226,224,112,157,169, 11,252, 42, + 12, 2,121,121, 31, 35,233,193,144, 25, 94, 68,238,193, 86,174, 71,211,175, 60, +103, 18, 68,185,217,183, 27, 61,156,204, 17,222,118,196,132, 46,213,181,176,185, +120,223,204,127,102,154, 46,215,128, 91,162,103, 69,171, 42,237,142, 1, } ; -// ../Source/Template/GB_bld_template.c: -uint8_t GB_JITpackage_75 [1341] = { - 40,181, 47,253, 96, 78, 18,157, 41, 0,134,119,158, 39,208, 88, 77, 7, 4,234, -105,210, 29,109,119,143, 43, 13, 34,107,139,151,226, 73, 17,160,181, 98,173,100, -194, 7,138,104, 15,109, 7,185, 26,102,145, 87, 2,154, 0,142, 0,145, 0, 17, -162,156,224, 83,192, 78, 95,212,140, 81,132, 77,229,197,213,234,168,111,223,148, -179,159,215,242, 88, 12, 52, 8, 25,181,168,196, 36,222, 16,117,171,237,167,141, -147, 81,126, 74,173, 70, 6,164,162, 67,211,244, 36, 42,171,199,185, 45,146,245, -184,115, 18,159, 18, 16, 12, 16, 50, 12, 7, 6, 8,191, 80,210, 39,222,147,172, -184, 70,226, 35,171,225,181,158, 79, 29, 9,141, 9, 11,203,136,209,160, 28, 19, -235,104,111,214,177,176,246,181,147, 90,135,101,237,163,151, 87, 7,186,148, 57, -223, 94,126,186,136, 58, 82,115,155,129, 54, 34,207, 27, 40,141,118, 58,236,210, -254, 52, 7,250, 76, 96,188,160,192,146, 41, 40, 8,157, 93, 81,177, 55,103, 37, -240,253, 98,240,205,230, 79,122,181, 0,150, 6,224,218, 50, 23,208,175,224, 89, - 47,200, 47,123,232,255, 45, 22, 21,231, 50,151, 39,172, 20,149,239,129,199, 10, -219,123, 71,160, 55,117,237,165,245,134,207,243,107, 52, 52, 62, 54, 62, 25, 77, -223, 86,218, 42, 52, 56, 31, 19, 31,142, 14,103, 82, 78, 42,194,139, 95,147,121, -240, 29,242,170,213,171,215,232, 17,105, 98, 42,134,229, 89,159, 82,107,161,188, - 51, 8, 74,106,155,225, 35, 73, 76,155,251, 74,189,229, 79,172,212,198,206,139, -245,228, 86, 67,208, 35,172,174, 87, 50,175,134,163,134, 2, 43,151,158,250,147, -200, 35, 61,164,131,131,226, 83,161, 49,209,249, 69,177, 81,183, 52, 34,242,252, -225, 7,152,191, 61,117,248, 72,219, 22,185,242,103,243,142,217,220,239,143,194, -130, 10, 6,243, 7,135, 75,212,118, 54, 75,234,178,166, 22,197,191, 60,137,173, -254, 92,217,115,234, 92,198,196,142, 93,240,121,145,100,196, 2, 28,222,182,223, -239, 82,105,123,213, 6,120,154, 98,216,134, 88,212, 34,124,211,197, 32, 53,189, -253,212, 84, 22,155, 31,164, 96,191,169, 62,200,159, 22, 34,195,121,211,126,233, - 48,126, 25,123,212, 82,163,203,115, 90, 83, 63,101,141, 88,197,129,253, 86, 3, - 89, 0, 6,211,241, 81,209,148,179, 57,169, 79, 27,204, 69, 50,248,131,128,192, -249, 64,115,121,202,160,140, 73,222,118, 6, 58,236, 99,153,244, 11, 75, 45,210, -247,118,148, 87,239, 81,160,115,176,122,167,213,187,158, 80, 40,227, 13,239, 71, - 60,180,210, 61, 30, 22,157,142,196, 55,223,252,100,117,134,157,203,191,164,216, - 1,226,156,236, 13,165, 70, 80,191,149,228,161,192,204,100, 95,246,230,184,213, - 86, 41,175, 63,163,107, 84,193, 75,212, 84, 65,135,236,242,154, 8, 59,163, 98, -240,106,245,115, 79,222,244,186, 50, 62, 91,189, 40,159, 64,215, 39,174,182, 61, - 13, 80,118,106,177, 4,129, 36,168,161,161, 67,104,102, 70, 36, 73, 65, 82, 24, -214, 49, 12,129,161, 48, 11, 33,167, 7,194,160, 68, 72, 98, 36, 69, 64, 66, 4, -134, 24, 98, 68,100, 68, 36, 16, 9, 82,144,210,130, 98,214,113,229,215, 5, 49, -172,149, 98,161, 98, 19,177, 51, 81,160,158, 28, 98, 77, 67,109,122,228,144,112, -173, 49,168,157,134,100,132, 32,156, 19,109, 60,142,172,131,250,186,201,236, 79, - 80,236,121, 39,140,172,229, 81, 4,209,184,216, 47,242, 75, 67, 5,135, 60, 82, -100,194,106,195,224,119,234,114,169, 56, 65,200,164,185,176,181,195,234,236, 6, -155,244,193,131,181,111,162, 42,115, 27, 14,162,234,190,209, 69,170,179,184,177, - 62, 52,152,252,135, 35,102,133,176,209,126,112,213, 84,220,246,152, 71,253, 49, -255, 82,135, 31,135,120,147, 32,230,129, 77, 4,254, 33, 20,116, 45, 78, 26,206, -127,134,106,110,222, 20, 5,102, 32,225,168,118, 83, 7,251, 15, 85, 76,156,199, - 87,224, 81,189,147,226,127,189, 31,118, 47, 78, 35, 13,238,254,187,211,128,245, - 71,183, 81,201, 48,130,131, 54, 68, 28,124,231,153,123,154, 21,183, 63,177, 64, - 21, 48, 35,189, 41,204, 65, 15, 7, 1,104, 57,240,200,236, 14, 53, 75, 24, 65, -196, 72, 17, 22,133, 64,160,211,209,226, 69,224, 92,231, 71, 7, 3,208,225,121, -153, 48,193,115,152, 35,237,240, 23, 63,103,169,255, 65,140,151, 12,173,213, 49, - 30,115, 40,221, 4,124,168,205,174,113,226, 50,102, 25, 54,146,187, 84,206, 62, -180,168,153, 16,125,248,130,141,157,188, 22,207,136, 16, 31,169, 31,110, 80,146, - 67, 7, 30,214,245, 42,229, 44,138,102,109, 45,148,152, 22,149,160, 17, 18, 88, - 89, 51, 42,216,131,162,100, 73, 4, 47, 60,240, 24,119,133, 84, 43, 73,142,169, -101, 2,251, 11, 70,201, 5, 4, 54,219,168,176,212,225, 11, 8,192, 18, 68,106, -104,187, 89, 64, 50, 33,127,170,106, 64, 53,169, 18, 45,227, 24,248, 90, 93, 44, -200,110,242,141,182, 12, 79,232, 62,169, 33,210,158, 9, 54, 6, 71, 28,255,204, -133, 43,232,245,176, 54,223,203,243,111,117,165, 84, 77, 47,180,219,218, 2, 8, -242, 67, 51,166, 6,227, 97, 0,141,109,130,126,228, 16, 53,143,109,226,240, 45, -166, 14,106,217,211, 87, 93, 37, 42, 12, 15,166, 61,107, 5, 71,229, 20, 69,122, -236, 9,236, 61,166,232,229, 68,248,201, 23,188,137, 49,184,153,253,230, 16,180, -220,136,104, 66,216, 74,152,234,126,187,142, 73,169,160,126, 8,229, 13, 38, 99, - 22,249,178, 91, 2,207, 92, 83,134, 90,145,248,132,219, 70, 10,199, 87,150,158, - 5,113,196,106,177, 22,236, 45,119, 72, 6,209,102, 37, 24,117,102,217,217, 47, -127, 17,203, 10, 14,218,214,228,220, 6, 19,196,128,199, 93,211,102,172, 93,104, -213,133,110,227,186,153,119, 8,137,219,113, 8, 47,120, 80,101,196, 92,161, 14, - 63,198,162,232, 3, 78, 50, 65,142,217,107, 51, 2,230,180, 25,207,157,217,117, -137, 36,132,184, 83, 13, 67, 89,164,160,124,162,129,215,140,217,111, 5,255,252, - 99,209, 60,155, 38,165, 50,211,114, 51,247,114, 77,122, 19,244, 22,165, 52, 0, - 15, +// ../Source/Shared/GB_hash.h: +uint8_t GB_JITpackage_51 [965] = { + 40,181, 47,253, 96, 95, 7,221, 29, 0,230, 51,154, 51, 80,141,210, 1, 48, 51, + 51, 51, 51, 51,139,200, 20,123, 75, 67, 91,110, 51,178,187,255, 19,210,136, 36, +161,120, 4, 4, 79, 7, 24, 83,124, 34, 18,240,161, 30,131,181, 79,202,212,133, +110, 84, 13,171,135,147, 0,134, 0,132, 0, 26,105,186,211,184, 91, 73,123, 7, +195,197,194,158,126,106, 24,176, 22, 28, 48,168,245,142,174, 73,237,124,181,190, +222,204, 40, 11, 64,233,128,116, 62, 86,231,101, 12, 64,201, 80,213,101,181, 75, + 55,235,156,184,156,113,191,197, 38, 46, 43,223, 94, 92,113,225,120,240, 80,216, +138,196,149,155,113,217, 90,136, 51,238,156,245,169,160,202, 84,151,141, 38, 83, +221,114, 85, 62, 73, 22,209,135, 83,214, 75, 90,195, 17,107,124,250, 88, 21, 13, +218,166, 81,130,179, 50,234,246,217,230,249,161,132, 30, 63,194,236,242, 65,110, +126,156, 45,118,142, 70,105, 82, 53,144, 6,137, 99, 48,148, 11, 6, 19,170,245, + 75, 81,101,220, 44,227,203,109,138, 32,116,239,183, 51,100, 37,104,202,141, 8, + 3, 21, 27, 77,117, 6,134, 10,219,184,221,122,201,111,212, 75,209, 5, 29,232, + 61, 65,231, 72,118, 14, 94,119,250,100, 67,199,177,156,224, 22,132, 43, 40,220, +194,149, 79, 92,137,160, 44,149, 7,220,178, 57,168, 6,184,178,154,198, 79, 85, +207,224,227,146,224, 86, 82,146,211, 46,214, 72,211,146,176, 60,116, 19,131,110, +202,141, 61,183, 17,188, 68, 82, 71,191, 94,242,101, 51, 8,100, 29, 72,251,241, +249,113, 67,219,143,247, 82,183, 29,246, 55,110, 17,102,113, 61, 23, 45,196, 29, + 4,234,154,110, 54,252, 49, 86,178, 48, 37,177,238,102,198,209,130, 83,182, 90, +156, 53, 9, 91, 63,159, 84,164, 82, 67,122,241, 21, 77, 57, 59,254, 81,121,112, +226,110,186, 93,178,214, 31,193,152, 29,139,219, 59,210,168,219, 35, 75,141,202, + 23, 38,136, 12,210, 62,216,239,149, 61,161,194,239,116, 42,242,118,250,169,231, +246,248, 15,227,216,219,109,177,151, 92,191,141,113, 94,111,248, 46, 23, 98,125, + 40,177,149, 51,244, 24, 4,227,246,168,251,184,226,167,176,229,109, 94, 23,124, + 9,211,141, 29, 20, 74,198,216, 91, 42,110, 75,205,174, 36,232,220,181,102,210, +177,141,163,184, 61,109,220,206, 31, 96,217,100, 52,173,153,106,147, 80, 85, 5, +152, 3, 3,141, 6, 19,138,144, 98,136, 97, 48, 28,185,117,107,156, 9,140,135, +140,198,164,228, 68,243,201,160,224,235,172,207,198,167, 14, 81,132, 29, 39,237, +197,167, 82,220,167, 22, 14,202, 23,148,146,178, 32,104, 4,238,241, 56, 76, 84, +164, 92,183,206,105, 84, 15,149, 61,232,112,202,105,189, 49,160,228,198,217,215, + 54,107, 87,180, 54,194,139,219, 77,139,138, 11,138,187,237, 55, 33,251,154, 24, +140,158, 95, 70, 56,126,175,167,163,128,143,168, 33,161, 66, 16, 25,153, 25,146, + 36, 73, 33,173, 1, 48,132, 16,164,174,110, 3, 2, 65,117, 76,140, 50,100, 42, +168,145, 32, 97,168,252, 63, 59,199,134, 10, 42, 62,105,191, 92,115, 60,215, 42, +145,149, 37,203,167,194,242, 29, 61, 78,186,158,178, 69,182, 67,112,225,161, 75, + 36, 10,249,100,195, 86,207,184, 1, 66,136,171, 84, 34,181,244,240, 87, 59,101, + 54,123, 51,115, 71,228,149,120,217,144, 64,168,216,169, 41,162, 60,110,103, 12, +225,176,214,122,135, 94,103,160,139,208,171,232,204, 33,152, 94, 50,219, 52,119, + 90,123, 0, 84,180, 10,170,102, 41, 81, 38, 71, 90,211,128,227, 0, 14,181,210, +177, 73, 20, 84, 37, 15,230,251, 51,177,134,198,169,172, 32,219,230,188, 22,222, + 15, 79,168, 59,243, 20,106, 3, 0, 27,229,115,255, 4, 56, 6, 71, 62,248, 17, + 63,209,202, 29,207,223, 55,219,101,143,206,159,244,175,120, 10, 68,148, 13, 67, + 18, 66,224,143,186,119, 80, 22,214,230,177,213, 62,138, 10,236, 86, 19,110,170, + 38, 10,128, 21, 58, 22, 63, 82, 59, 6,143,163, 57, 33,231, 41,117,137,172,117, +254,160,126,132, 63,144,123,184,162,144, 96, 92, 52,223, 52, 3,131, 13, 50,250, +178, 22, 62, 52,197, 28, 89, 23,101,146, 28,237,160,198, 47,202,103,101,220, 16, +166, 14,229,114, 35, 76,135,219,145,111, 64,104, 30,116,147,225,202,191,216, 85, +173, 43, 60,176, 82,170, 29, 68,102,208, 36,149,153, 98,251, 41, 93, 7,152, 55, +174,175, 52,160, 4, } ; -// ../Source/Template/GB_bytes.h: -uint8_t GB_JITpackage_76 [376] = { - 40,181, 47,253, 96,130, 2,117, 11, 0,134,214, 69, 32, 16,179,115,172, 60, 80, - 44,101,174,250,113,186,189, 36, 12,153, 32, 25, 99,192,236,172,239,255, 98,224, - 35, 2, 0, 64,224, 32, 61, 0, 60, 0, 60, 0, 3,235,130, 44,240,168,178, 39, - 50, 62, 41,254,109,221,113,184,242,136,162,136, 44,182, 78,164, 14,196, 86, 26, - 59,148,109,246, 40,176,110,231,235, 79,150,154, 99, 15,187,236, 94,247,195,245, -136,109,170,219, 31,166, 89, 56, 78, 81, 80,162,168, 28,218,205, 47,141,175,179, -227,230,201,114,181,111,221,173, 2, 7,147, 37,237,150,197,142,226, 8,186, 44, -185,231,106, 16,105,235,220,140, 35,146,133, 33,153,180,245,208,173, 59,121,237, -109,195,147,115,156,226, 17,193, 26, 88,146,161, 10,147,189,192, 95, 45, 0, 62, - 52,148, 70,229,178,144,171, 77,201, 0, 8,167,175,153, 99, 44, 54,237, 58, 95, -234,213,185,239, 90, 48, 77, 83,224,178,219, 76,174,222,219,195, 30, 93,213,181, - 25, 31, 29, 30, 21, 30, 89,143,170,127, 28, 23, 3, 16, 74,214,230, 2, 32,172, -252,195, 16,252,184,206,150,178,118,109,107,221, 44,139,239,110,158,162,158,120, -198,194, 92, 74,175,235,255, 31,130, 96,103, 30,237, 10,175, 10,235,184,171, 42, - 92, 7,139, 80,184, 42, 75, 32,104,205,161, 3, 33, 32,128, 68, 2, 42,229, 6, -176,110,243,216, 3,161,221, 85,100, 24,132,122, 4,243, 45, 65,159,238,136, 57, - 41,184, 3,148, 80, 33,188, 64,109, 97, 17, 60, 97, 35,141,137, 72, 65, 16, 9, - 67,184, 44,157, 28, 58,144, 59, 7, 22, 95,187,250, 60,251, 58, 40, 22,231,187, - 21,224,166,217, 60, 51,209,198,191, 90,248, 62, 90, 20, 45,110, +// ../Source/Shared/GB_hyper_hash_lookup.h: +uint8_t GB_JITpackage_52 [1025] = { + 40,181, 47,253, 96, 63, 11,189, 31, 0,182,171,132, 39,208,176,108, 14,232, 55, + 63, 77, 61,119,108,139,122,165,227, 9,115,184,238, 44,231,218,199,160,189, 57, + 56,138,154, 34, 7,157,252,193, 21,158,116, 16,191,120, 0,123, 0,119, 0,224, +117, 73,229,230,250, 78,222, 40, 19,219,201, 90, 87,166,139, 6, 10,106, 99, 78, +101,203,150,219, 43, 53,109,249,247, 93,151, 6, 34,144,200,116, 80, 65, 34,143, + 52,232,146,109, 78,108, 56,117,189, 35, 47,221,116,197,165,203, 85, 89,144, 96, +172, 16, 18,182, 53,130, 23,190, 29, 94,158, 99, 10,211,117,150,247,154,217, 54, +188,132,241, 48, 46,175, 91,214,187,223, 40,239,169,189,247,109, 54,119, 9, 24, +122,148,126,153,180, 81,102,149,193,142,204, 22, 32,254,120, 60,211,227, 17,221, + 24,102, 43,189,167,247,182,242,157, 77,193, 75, 48, 26,115, 38, 69, 65, 48, 14, + 94, 2,175, 95,173,235, 13,184,118, 82,109,219,232, 70,186, 33, 56,251,127,160, +231, 8,242,178,172,238,191, 25,129,193,157,125, 7, 9, 74, 69,130,146, 49, 80, + 42,174,138,203, 51, 67,202,253,210, 89, 77,150,247, 74, 47,221,201,150, 43,120, +174, 47, 69, 81, 7, 93,234, 32,143, 43, 60, 27,224,153,100, 20, 22, 17, 19, 19, +149,108,114,185, 38,153,197,129, 2,155,112,188, 77,174, 1, 30, 8, 21,153, 88, +106, 49,182,191,143,106,149, 51,155,112, 74, 77,203,119, 42,115, 30, 45,119,189, +147, 95,153, 67, 95,241,112, 68, 6, 5,145, 43, 60,154, 32,232, 92, 53, 89, 8, +183,222, 57, 69, 81,199, 96, 24,111,236,146,174, 82,238, 82,171,145, 45,194,163, +200,131,213,125,118,188,219, 23,210,140,203,158, 22,102, 88,222, 77,229,203,219, +195,241, 68, 15,166, 18, 96,142, 94,186, 53, 94, 11, 86, 83,236,186,106,226,141, +182,231, 47, 19,239,109, 95,106, 45, 51, 46, 85,211,166, 55,142,189,157,209,208, + 8,207,195,245, 54, 25,192,131,170,233,218,254,108, 95, 58,111, 5, 64,151, 53, +144, 91, 10,247,162, 78,146, 64,215, 54, 99, 13, 47,215, 75, 92,119,120,145,107, + 39,243,201,156,214,120,231,202,146,198, 4, 4, 18, 32,222,244,157,106,228,217, + 21,182, 31, 63, 29, 24, 16,227, 26,222, 57, 34, 73, 2, 39, 12,150,203,225,146, + 97,150, 75,130,178, 80, 85,240,163, 52, 67,121, 90,204,124, 95,228, 98,167,198, +217,153,199,211, 6,130,211,251,200,134, 86,238,150, 53, 51,214,200,125,139,244, + 59,213, 1,128,210,168,129,173, 67, 52, 52, 35, 41, 40, 73, 10,195, 26, 48,132, + 16,132,202,202, 54,194, 16, 53,204,144,160,194,134, 8, 77, 32, 37,148,148,209, +146,242,114, 3, 4, 0,201,231, 36,229, 23,229, 28, 7,145,112,149, 74,150,242, +219,185, 37,137, 43,198,209, 8,142, 95,133,181,172,214, 29,145, 6,254,245, 26, +188,122,204, 45, 43, 48, 53,236,208, 31,114,108,225,194, 85, 29,192,138, 25,200, +147,200,100, 57, 23,159,161, 61,194, 29, 52, 92,185,210, 29, 64, 41,227,106, 61, + 56,166,201,164,222,220, 44,249,117,152,172, 28, 98, 94,248,179,196,110, 18,244, +185,107, 30,200,187, 64,123,225, 82,214,155,119, 12, 9,165, 30,108,135,217,193, +233,233,235,138, 96, 30, 22,230,232, 7,121, 23, 61,238, 16,238, 32, 14, 95,104, +167,237,121,128, 48,195, 44,142,114, 35, 1, 24,183,222,116,184,197,159,100, 80, + 13,116, 70, 96,116,233,135,155,100, 94,250, 47, 92,235,241,132, 92,149,177, 34, + 38,111, 50,153,252, 43, 1, 69,200, 35,168, 32, 0, 77, 12,253,241, 76,106,192, +136,168,111,230,180,150, 23, 13, 31,236, 79, 25,225,238, 28,163, 86,188,148,208, + 15, 47,190,208,130, 64,152,118, 31,251, 18, 53, 9,201,111, 12,100, 32, 80, 95, +204,223, 49, 45, 33,246, 16,117, 79,160,176, 20, 97,194,157,159, 40,207,225,148, +102, 2, 18,124,196, 27, 8,180,253, 50,168,103,128, 13,253, 31, 47,108, 10, 67, +204, 61,171, 33, 31,105,200, 30, 68,152, 98, 52, 45, 27, 44, 73, 92,179, 64, 13, + 95, 9,245, 38, 71,237,129,206,196,122, 36,241,187, 86,232,202,244, 54, 36, 96, +217,236, 40,184,248,153,188, 32,133, 86, 66,180,133, 38,100, 19, 68, 0,234, 0, + 71, 55, 5,106, 81,247, 38,161, 9,199,149,181,135,198,163,246,131,118,139,175, +118, 56,210,149,146,233,240,243, 72,146, 47,133, 68,206, 89,212,122,209,145,243, + 87,219,123,170, 94,123,183,166, 44, 64,181,138, 12, 80, 13,194, 47,241,165, 4, +144,234, 22, 41,208,179,155,191, 48, 58,140, 25,161, 82,161, 57, 35,149,119,143, +137,255,248, 39,157,139, 24, 13,154,184,202, 76, 60, 9,233, 62, 66,232,138,128, +196, 82,199,197, 3, +} ; + +// ../Source/Shared/GB_index.h: +uint8_t GB_JITpackage_53 [386] = { + 40,181, 47,253, 96,169, 3,197, 11, 0,118, 20, 66, 32, 32,177, 30,243, 11,206, +174, 21, 33,110,130, 0, 61,253,239, 23,194, 16,222,133, 71,244,255,255,197, 19, +154, 64, 34, 20, 22, 8, 53, 0, 57, 0, 57, 0,243,106, 5,199,119,102,164,231, +215, 72,136,179,117,207, 90, 30,227,217,245,107,236,153, 78,110,106,103,227,140, + 31,211,125,191,218,216,126,159,223,126,117,218,133,110,226, 56,181, 79, 57,104, + 77, 81, 80,162,168,254,245,179,117,186, 73,142,173, 87, 62, 74,147,236, 49, 81, +223, 92,199,206, 53,206,157,229,185,198, 96,176,142, 4, 87,117, 73, 4,171,186, + 26,170, 60, 29,225,223,204,172, 39,172, 59, 93,254,188,135,116, 36,177,120,232, + 50, 1,134,142, 49, 98, 61, 13, 61, 79, 79, 48,198,181,223, 99,235,222,211,190, + 95,174,248,166,239,215,156,191,121,122,237,105,188,231, 76, 15, 58, 0, 42, 40, +147, 68,214,216,170, 83, 91, 31, 0,171,233,146,188,171,204, 12,214,133, 27, 80, + 16, 29,136, 75,226,224, 14, 17,217,208, 54, 41, 5, 13,145, 91,188, 58,145,109, + 28, 68, 90,157,208, 26, 24, 87,117,140,216,252, 59, 55, 29, 45,182,142,234,215, +212,254, 37,208,128,245,169,117, 0,132,172,150, 26,170, 6,109, 8, 41, 32, 48, + 66, 67, 77, 89, 15,184, 20,188, 70, 12,240, 43, 69, 76,181, 4, 26,108, 68,151, +181,179, 92, 46,199, 13,206, 16, 56, 77, 56, 23, 47, 9, 2, 63, 37, 10,162, 12, +216,239, 90, 99,135,180,197,172,129,144,177, 9, 17, 14, 60, 89,151,156, 12, 45, +225, 62, 3, 30, 51,153, 29,219,201, 36,176,247, 77,152,239, 85,206, 55,125,108, + 51,157, 25, 51,180, 68,195,186, 7,205,205, 51,211,109, 25,173, 22,142, 9, 61, +240, 11, 79, 81, 48, 4, +} ; + +// ../Source/Shared/GB_int64_mult.h: +uint8_t GB_JITpackage_54 [638] = { + 40,181, 47,253, 96,160, 9,165, 19, 0,198,223, 95, 32,224, 26,231,160,158, 22, +173,175,165,247,188,116,127,101,136, 68,205,194,119,253,234, 10,200, 79,251,210, +132, 25, 82, 98, 76, 8, 89, 0, 83, 0, 84, 0, 32, 40, 57, 65,145,144,137, 66, + 3, 33, 19,215,104,118,194,173,168, 73,185, 65,242,213,215,161,169,122, 78,232, + 72, 48,147,239, 52, 69,139,131,175, 56, 79, 29,238, 58,118,176,254,173,103,253, +178,248,109, 5,178, 55,239, 47,143,224, 68, 93,228, 17,183,173, 15, 83,253,145, +173, 43,240, 84,239,104,112, 52,137, 22,140,182, 85, 52,177,252,112,192, 10,135, + 67,118, 50, 24,134,220,231,173, 56, 54,139,239,208,254,114,216,117,125,207,175, +223, 39,166, 42, 62, 97,188,243,235,179,105,222,243,215,191,220,227,201, 20,210, +135, 34,157,166,223,250,121, 48,105, 72, 20,248,163,243, 36,185, 67,228,234,213, +182,220, 93, 10,124, 45,211,138, 41,128, 40, 27, 67,199, 40,145, 47,115,126,251, + 27, 85,206, 3, 25,219,234,113, 7,192, 60,152,143,199,157,245, 42, 0,195, 12, +242,144,200,153, 51,125,245,206,206,171,126,109,253,215,225,228, 55, 92,113,164, +212,171, 7, 73, 50, 30,205,133,246, 29, 73,239,122, 66, 55,185,175,189,252,134, +142,155,114,115,151, 10, 65, 79,100, 84, 40,134, 23,249,107,254, 82,231,158,180, +118,253,209, 4,189,151,194, 7, 24,230,213,206, 50, 0,123,109,167,153, 28, 92, +147,138, 63, 30,116, 27, 92,118,162, 53,151,235, 24,185, 80, 33, 56,129, 68,112, + 2,196,108,185, 29, 83, 81,168,228, 3,114,227, 30, 8, 68,184,237, 82,241, 72, +228,243,144, 35,248,130,252,218,174,177,178,115,119,185,158,221,171, 43,110,187, +166,202,174,101,135,124,190,223,194, 66,215, 86, 4, 21,129, 21,111,160,209,173, + 33, 11, 70, 38, 41, 40,104, 74,210,106,160, 72, 68,200, 88, 7,127, 94, 38, 57, +101, 18,102,174,196, 20,190, 58,151,169,113,132,130, 7,204,151,224,122,204,186, + 94,203, 0,201,107, 61,234,155,116, 4, 2,248, 37,130, 37,111,172,230, 61,203, +161,146, 70,179, 12, 69, 47,197, 42, 15,184,196,160, 89, 95,199,118, 30, 8,209, + 58,189,227,172, 89, 94, 95,117,128,176, 85, 57,175,155, 8,138,195, 65,118, 39, +103,183,202,202, 64,115, 31, 3,126,183, 70,129,114,192, 64,100, 44, 92,101, 13, +185,166,220,214,129, 50,150,251,246,243,214, 0,119,189,178,124,239, 55,245,203, +208, 17, 76,183,146, 40,128,114, 96,240, 95,167, 15,178,152,151,102,232,185,163, +247,189,183, 34,243,204,208,144, 79,229, 73,253,165, 99, 81,102,235,121, 1, 73, +188,195, 88, 1,163, 0,156, 16,194,105,223,164, 60, 99,169,109,109, 84,222,199, +156, 47,161, 60, 14,141, 11,152,220, 2,201,153, 56,221, 90,116,211,196,168,204, +180, 46,138, 85,123, 8,168, 9,195,160, 25, 4,117, 14,188,162,193, 9, } ; -// ../Source/Template/GB_callback.h: -uint8_t GB_JITpackage_77 [644] = { - 40,181, 47,253, 96,176, 8,213, 19, 0,198,156, 91, 33, 0,181, 30,214,212, 19, -205,178, 2,124, 60,111,130, 15,197,125, 54,148,140,214,162, 38,169, 85, 24,134, -113,150,254,223,235, 67, 8, 82, 0, 81, 0, 83, 0,175, 63,115,189,189,206,205, -252,251,166, 23, 24,139,196,194,208, 80, 36, 22, 62,176, 2, 47,232, 11,170, 17, - 63, 76, 31,121, 27,131,119,243,130, 54, 43,136, 39,214, 60,113,188,206, 85,212, -126,223, 81,147,218,191, 15,243,123, 60,227,206,117,247,220,139,163,237, 14,239, -224,177,149,243,125,213, 82,200,196, 17, 8,105, 64, 32, 2,174,243,239,240, 98, -209, 67,124,183, 13,199, 78,110, 59,230,173,169, 71,215,205, 24,137,162,170, 1, -222, 1,111,156, 69, 10,240,231,198,207,134, 31,222,128,164, 80,203, 52, 33, 85, - 53,167,238,185,176,187, 1,153, 56, 44, 12,239,217, 42, 78,119,228,191,221,221, -225,115, 21,195,235,240,237,173, 12,154, 8,118,224, 30,148, 3, 10,106,146, 81, -214,219,251,105,234,249,169, 82, 81, 22,127, 95,165,162,233,162,154,255,176, 23, -162,170,139,146,201,191,119,181, 90,172,224,190,156,140,218,182, 57,105,212,162, -216,180,182, 10,228,225,131, 65, 71,193, 81,131,163,165,162, 73, 16, 8,252,218, -174, 12,163, 22, 70,179, 48, 19,101,108, 48,205,212, 56,236,237, 7, 29,239, 82, -118,151, 11, 63,224,213,132, 92,213, 68,150,252,225, 54, 28,221,221,221, 37, 73, -230, 11,190,183,253, 65,183,163,171,232,213, 29,210,211, 35, 69,195,136, 88,164, -158,252, 33,236,194,168, 37,163, 50,116,103,172, 63,116,203, 46,237,178, 95,131, -191, 81, 26,104,141, 50, 6, 63,119,155,236,178,168, 76,162,248, 78,126, 48,113, -160, 17,146, 98,102,136,166, 36, 37,133, 44,107, 80,132, 8,161, 34,221, 79,129, -109,192,160, 57, 7, 52, 0,116,151,209,232,204, 43,134, 40,187,156, 47,146, 93, - 49,148,253, 16, 76, 3,100,191,172, 82, 58, 76, 23,100,127, 25, 87,210,226, 98, -170,248,101,155,146, 99,190, 32,251,203,102,100,152, 47,117, 17, 67,217, 15,160, -137,128,236,151, 89, 74,172,137,221,201, 30, 75, 99,177,216,148,137, 19,195,240, -237, 6,141,253,138,231,128, 47,137,253, 13,250,176,239,245,170, 27, 13,152,218, -183,100,160, 22, 43,241,186, 82,165,207, 42,111,214,208,144,134,103,233,154,208, -201,204,147,228,237,216,181,143,222, 14, 6,234,203,251, 58, 84,164, 55,171,248, - 72,125, 4, 67,165,104,223,176, 16, 15,190,102, 28, 21, 15, 60,121,104,132, 21, -120,143,148,129,150, 91, 4, 0,116,132,161,212, 46, 46, 64, 92,188,117, 68, 81, -183, 96, 6, 32,176, 99,122,164, 73,253,126, 1,113, 55, 16,232,131,140,103, 24, - 12, 4,205, 72,128, 23, 20, 15, 26,123,193, 74, 69,151,104,144, 8,129,165,140, - 60,218,131,161, 66,192, 15,154, 26,149,153,188, 23,182,170, 19, 66,204, 71, 94, - 85,244, 58, 1, +// ../Source/Shared/GB_kernel_shared_definitions.h: +uint8_t GB_JITpackage_55 [1189] = { + 40,181, 47,253, 96, 39, 21,221, 36, 0,198,114,150, 40,208,178, 58, 7,168, 74, +160,216, 63,199,203,122,124,109,237, 99,168,116,141,185, 74, 72,117,138,212,253, + 23,151, 5, 14, 87,198,225, 69,174,102,192, 15,102, 9,138, 0,147, 0,139, 0, +116,106,171,241,174,223,198, 35,193,198,143,203, 36, 11,188,242,233, 70,184,219, + 43,111,160,168, 66, 93,166,221, 50,232, 85, 79,160,203, 26,183,220,120, 77, 91, +229,102, 28, 49, 89,104, 58, 84,220, 14,186,117, 61,175,189,133,216,115,142,171, + 46, 21, 92, 42,151,233,192, 82,185,124,146, 73, 46, 85,238,128,154, 83,213, 65, +182,158, 29,131, 46,125,170, 8,134,205,131,116,147,176,149, 66,239,179,205,223, + 39,170,113,110,189,221, 57, 14,158, 78,237, 79,216,168, 42, 39, 55, 75,214, 54, + 98,113, 41,220, 42,198,173,164,203,129, 49,108, 78,161, 68, 19,133, 18,209,228, +149,134, 34,147,185, 60, 22,199,218, 0,124, 96,224,147,127, 64, 23, 3,150,185, + 36, 38, 64,149,228,241, 26, 71,185, 2, 81,229, 22, 86, 68, 71, 98, 34,131,125, +174,144,107,124,203,122, 32,125,216, 48,222,234, 92,128, 48,140,173, 55, 36,225, +150,125, 44,101, 41,124,198,221,108, 24,173, 64,228,128,125, 56, 19, 23,232,226, + 92, 13,150, 6,211, 88,158,202,225,131, 69, 88, 28,143, 5, 33,181,143,157, 89, +192, 70,197,173,159,252, 2, 30, 69, 84,198, 18,232,122,216,156,206, 83,116, 50, +151, 30,183, 33, 93,185,161,105,169,247, 4, 16,185, 13, 57,175,219, 62,136,132, + 15, 73,174,223, 55,219, 49,228,110,125,105, 63,218,175,124, 11,116,121, 42, 62, +149, 3, 55, 83, 15, 3,140,180,156,198, 55,163, 1,198, 0,179,245, 82, 0, 39, +167, 61, 74,120, 41,184, 20, 96, 44, 24, 11,198,130,128, 61,202,248,119,169, 49, +132,150,140,192,237, 36, 46,229,186,241, 82,220,206,214,251,216, 75,189, 33, 10, + 91, 98,109, 56,149, 67,198,194,194, 38, 33,201,148,187,173,167, 12, 61, 44,238, +202, 41, 43, 95, 88,160, 54,132,235,169, 54, 63,209,238,148,228,169, 57,254, 52, + 46,167, 55,183,126,151,112, 82,183, 65, 52,142, 96,112,233,114,201,114,169, 34, +137,255, 31, 5,209,202, 41,163, 74, 68, 69,116, 74,216,217, 82, 90, 9,154,225, +183, 3,110, 59,227, 35, 65,101,237,170, 45,109, 95, 70, 97, 48,126,153,228,218, +245,235, 90,110,148,235,109,148, 31,125,101,202,217, 27,118,116,123, 35, 87,223, + 83,110, 40, 58, 41,221,111,199, 61, 45,199, 28,148,147, 91,110, 75,150,240,231, + 56,246,152,253,144,228,246,186,237,174,232,148, 72,234,136,194,194, 39, 33,151, + 36,231, 80,116, 46,114, 74, 78,174,116, 59, 94,121,235,215, 89, 57,120,170,165, + 16,137,166,178, 60, 20, 75, 20,225,210, 75, 18,190,194,128,229,160,129, 37, 53, + 68, 35, 34,146, 20, 36,165, 12, 7, 48,132, 16, 50,101, 86,220,162, 17,129, 36, + 73, 87, 46,168,150, 38, 31,225, 19,116,146,179,228,218,223,138,203,212, 36,212, +124,177, 87,136,161, 64,124, 36,130, 34, 23,128,100, 99,232, 51,156, 70, 17,202, +107,102,251,215,159, 86,109,223, 14,121,157,216,190,128, 16,248, 93,156,102,187, +248,242,189,212,142,127,138, 84,112,167, 2, 75, 18, 36, 96, 24, 55,167,208,216, + 27, 76,149,185, 94, 26,250,139, 27,105,145,205,171, 49,164, 19, 73,198,255, 11, + 16, 2, 75,225, 30,158,179,228,185,141, 12, 36,254,154,112,174, 76,140, 12, 63, +139,168,217,197,254, 87, 8,238, 5, 59,221,132, 61, 92,232, 58,156,117, 34,209, +208, 21, 5,146, 99,209,209, 2,201,144,154, 20,173,114,131, 27,133,208,147, 5, + 85, 35,250,128,104, 46, 12,161,159, 38,127,248,188, 62,105,139,128,102,216,150, + 40, 58, 85, 17, 80, 34,250,241, 97,128, 45, 10, 33,178, 34, 2,163, 25,185,126, + 67, 26, 61,183,179,156,110,220,156, 30,100, 61,127,176, 2,177,230,184, 3,142, + 23,252,183, 73, 56,231,146,105, 34, 39, 70,132,118,177,149,234, 87,165,139, 37, +109,145, 34,110,139, 61,221, 40, 23,232,130,103,228,148, 8,189,123,202,221,136, +212,205, 93, 64, 45,180, 91,142,107,148, 63, 13,168, 51,132,196,155, 28, 55,185, + 56, 1,231,204,168, 29,177, 41,127,209,134, 69,169, 5,103,233, 81,137,137, 60, + 22,214,228,162,115,203,217,203,252, 77, 7,174,227, 38,224, 39,197, 9,112, 82, +238, 10,110, 6, 38,196, 73, 48,158,234, 98,150, 13,116, 8,122, 62, 19,146, 75, + 98,113,109, 12,123, 36, 87,168,140, 14, 18,227,241, 55, 62, 39,217,214, 66,152, +178, 61, 3,172,201, 69, 11,254,204,115, 70,116, 17, 3,192,133, 59,240,184,175, +117, 51,131,146,168,122,122,119,129,230,108, 96,136, 67, 21,210, 13,180,117,199, + 94, 97,224, 55,186, 28, 77,207,140,224, 77,253,186, 61,128,162,161,182, 8,107, + 33, 4, 17, 15,124, 18,200,100,170, 10, 66, 94, 2, 81, 99,129, 44,229, 42,242, + 13,164, 39, 84, 5, 32, 17,136,226,115,184,185, 15,109, 34,122,210,138, 1,212, +208,127,245, 98,199, 89, 54,243,138, 52, 69,212,146,206,188,107,101,132, 5,153, +111,142, 47,182,154,166,210,231, 22, 56, 98,197,100,165,184, 11,194, 2,130,203, + 15, 32,158,208, 46,240,141, 1, 81, 39, 19,253,160,210, 70, 81, 56,118,110, 57, + 34, 56,109,121, 24, 0,145, 23,100,107,166,110,154,155,159,153,222, 41,174,111, +159, 80,228, 83, 38,254,138, 94, 60, } ; -// ../Source/Template/GB_callback_proto.h: -uint8_t GB_JITpackage_78 [1746] = { - 40,181, 47,253, 96,226, 37, 69, 54, 0,170, 64,212, 11, 43,208,140,140,115, 91, -213, 38,218,213, 66, 53,231,117,229,247, 50,209, 82,213, 18, 49,120,192,128, 71, - 45, 11,102, 8, 98,229, 47,101,253, 50, 85,252,193, 21,158, 98, 16,191,172, 0, -182, 0,176, 0, 18, 58,205, 70,194,168,147, 90, 56,235,189,242, 75,189,211,206, -234, 47, 31, 82, 86,171,255,237,243,212,150,112,177,107, 36,148,208,181,220,215, - 47,155,205,119,167,148,217, 97,215,233,206,153,201,196,213,202,252, 15, 11,131, -225,225,224, 80,235, 57, 44, 58,196, 84, 88,193,150, 74, 77, 28,202, 82, 31,164, - 56, 30, 36,176, 60, 40,181,152,202,122, 57,183,165,129,151,199, 24, 29,122,112, - 96,112,112, 20,104, 96,112,120,227, 45, 28, 98,104,225, 18,252, 17,189, 99,245, - 94, 48,115, 8, 19, 81, 34, 44,204, 77, 9, 8,229,233, 48,140, 54,204, 48, 12, -126, 84, 57,117, 35, 23,246,147, 89,245,185,213, 89,177, 78, 31,194,122,108,239, -196,218,230,185, 41, 70,247, 90,132,196, 33, 16,134, 3, 2, 9, 28,165,228,164, - 89,238, 99,136,206, 22,210, 25, 38,225, 35, 95,169, 49,181,219, 61,198,220,213, -112,186, 72, 50,153, 40,130,105, 82,179, 68, 82,102, 18,209,248,102,106, 5,196, -148,211,105, 53, 31,218,200,204,122,215, 56,101, 75, 77,157,174, 76,202,183,132, -250, 28,198,155,185, 23,167,164,235, 87,251,102, 24, 33,206, 96,158,183, 13,187, -134, 60,199, 16, 56, 34,215, 10, 48, 58, 9,171, 63, 16, 40,114, 14,156,237,164, - 22, 49, 37, 22,126, 10,174, 5, 67,194, 27, 87,198, 87,246,218, 67, 7,227, 56, -110, 17,156,168, 61,144, 88,144, 40, 48, 18, 69,164, 61, 64,176, 60,136, 48, 42, - 33, 0,198,130, 86,201, 84, 46,150,198, 32, 18, 69, 80, 40, 81,164, 82, 74, 86, - 16, 64,132,216,181, 79,170,117,241,229, 7,187, 56,105, 38, 24,223, 28,202,217, -149,163, 30,130, 94,131, 64,222,216,206, 28,100, 42,214,177, 14, 44, 92, 59, 13, -121,198,152, 85,203,240, 12, 31,189,130,167,116,174,212, 24,160,226, 90,151,238, -177,194,217, 82, 33,142,187, 42,200,185,213,118, 4,121,174,187, 75,120, 14,132, - 38, 4,142,232,218,238, 91, 53,222,198,232, 26, 39, 82,105, 15, 26, 26,215,186, -104, 18, 74,101, 65, 69,131, 0,249, 0,105, 36,124, 48,114,219,104,147, 30,135, - 3, 1, 62,215,113,200,225,128, 0,185,176,221, 84,108, 31, 83,198,135, 46,118, - 54,169,129,204,142,210, 44, 58, 11,142,174, 58, 20,221,204, 46, 29, 66, 33,233, -113,119,218,254,134,221, 37, 77, 76, 76, 76, 76, 64, 19, 30, 34, 92,110,220, 55, -161, 36,220, 76, 62,145,239, 54,128, 0,252,100,242, 60, 12, 70, 5, 41,169,207, -133, 74, 57,179,214,217,176, 56, 91,128,161,184,118, 86,103, 8,191,121,174,185, -201,197, 48,171,159, 6,182, 88,219, 76,189,176, 84, 44,141,193, 69, 82, 33, 25, - 28,157,201,209, 16,189,227,230,116,111, 52,180,158,203, 20, 90,230, 82,193, 56, -224,140,227,174,111, 31,122, 18, 66,205, 74, 61,106,140,110,186,214,140, 4,243, - 88,207,181,106, 15,241,165, 13,229, 35,189, 19,163,203,250,185,179,118,103,162, -186, 65,158,237,106,191,121, 27,167,231,121,103,238,165,179,130,112,169, 72,146, -139,130,200,197, 22, 53, 79, 88, 85, 96,145, 8,183,204,246, 93, 94, 89,163, 65, - 53, 83,175,214, 32,145,184, 72,164,106, 15, 32,122, 63, 56,155,117,106,100, 66, -145,184,255, 45,162, 80, 40, 26,112,224, 12,129,164,168,225,157, 66, 34, 51, 35, - 34,146, 36, 73,134, 53, 97, 20, 98,148,130,208,113,214, 1, 66,168, 32,142,176, - 8,198, 64, 12,197, 16,132, 8, 49,148, 16, 66, 24, 17, 9, 40,146, 64, 36,176, - 48, 84, 29,111,137,106, 12,108, 85,106, 22,139, 74,204, 33,144,151, 18,175, 68, -107, 92,131,229,246,252,226, 92,132,155,152, 38,164, 1,113, 90, 47,198,171,135, -141,237, 34,221,223,229,195,150, 5,107, 31,112,217, 90,241,246, 79,112, 45,100, - 60,206, 59,133,168,139,215,180,149, 27,146, 98,243,250,213,255,166, 36,225,221, -120, 12, 69,186,193,152, 0,182, 37, 98,146,184, 47, 36,124, 24,171,216,157,230, -102,248,164,253,251, 72,119, 37,254,174, 20,214,200, 13, 3,198,202,245,223, 4, - 10,199,175, 38,211,200,106, 70,217, 7,251,122, 43,208,245,198,131,144,213,116, -222, 10, 5,118,120,180, 79,235, 31, 56, 20,240, 28,197, 13, 93, 98,231, 46,152, -151,208, 40, 52, 76, 98,233, 37,104,226, 97,117,223,165,148,165,254, 52, 15,239, -150,157, 21, 98,116,181,105,199,145,130,167,231,168,149,172,147,218, 60,133,198, -179,179,138,192,135,133,108,120,161, 64,172, 48,146, 19,208,217, 47, 97,213, 94, - 19, 24,123, 57,254,227,116, 90,228, 16, 94,188,214,167, 8,255, 60,227, 3, 70, -200,210,207,247,137,199, 86, 41, 31, 8,234,108,200,140,165,120,148,159,168, 5, -145,168,148,105,246, 33,137, 55,245,142, 84, 47, 51,103, 31,129,247, 97, 69,113, - 99, 81, 4, 8,131, 84, 0,217, 86, 65, 68,225, 9, 44, 31,140, 40,114,152, 35, -249, 60,170,121,146,233,120, 17,241,237, 19,242,130,128,241,201,182, 52, 62,141, -213,160,225,248,104, 50,247,104, 47, 36,214,225,158, 1,167, 10,178, 64, 11,194, -144,120,247, 22,171, 61, 28,232, 72,221, 97,169, 68, 61, 44,114,114,127,141,112, -163,116,208,149,141,167,248,106,127,198, 27, 52, 30,209,151,199,142,197,162,147, - 82, 99, 75,115,133,149, 18, 59,152,186,248, 28,176,198, 11,105, 59,238, 10,130, - 9, 5,180,135, 67,145, 34,228,136,247, 43,113,104,128, 99, 54,118, 46,216, 39, -229,118,204,181,250, 64, 63,182, 93,199, 79, 43,153, 15,253,102, 33, 1,229,249, -131, 87,239,247, 42, 28, 39,121,116, 58,201, 25,147,132, 96,184, 21,179,236,117, -114, 22,223, 11,189,210, 63,152,122, 46,209,164,233, 66,116,132,160, 9,188,122, -104,212,239,169, 18,113, 66,243,132, 14,177, 62,119, 16, 99, 34, 74,224, 10,219, -245, 44,208,197,141,134,159,197,184,114, 17,209,215, 66, 83,169, 94, 48,197, 37, - 34, 85,236,228, 77,242,203,125, 74,176,194,236,250, 30, 50,126,105, 90,159, 46, - 24, 87,191,228,218, 14,217,112, 8, 57,116,138,198,203,199, 76, 2,155,116,103, -187,133, 42,107,245, 61,150, 33, 60, 77,146,150,143,180, 76,189,240,254, 31,200, -131,125, 99, 19, 6, 46, 56,215, 33,234,243,255,226, 71,116, 32,158, 35,109,232, -211,215, 37, 74, 37,132,126, 58,158, 38, 69,180,213,253,239, 90,218, 11,127,214, - 50,103, 85, 86, 14,247, 43,229, 20, 16,108,202, 8,166,176,136,104,226, 40, 30, - 70,223, 18,115, 89, 2,204,245, 78,112, 5, 53, 85,164,106,153, 18, 42,209,163, - 15,222,115,235, 65,165,226, 74, 40,101, 89, 30, 66, 19, 14, 16,248, 49,154,166, -160,130,119, 84,155,132,147,248,140, 84,103,209, 73,132,247, 65,236, 80,125,255, -157, 58,128,182, 75,167,162, 71, 20, 87,240, 8,170,173, 64,225,180, 19,156, 29, - 10, 62,251, 98,136,167,163, 53,126,167,189, 26,221,149,241, 98, 73,170,226, 91, -103,194,128, 74,162, 96, 39, 83,244,147, 84,243, 80, 18, 3,215,221,219,202, 12, - 72,148,216,146, 62, 67,167,235,248, 9, 50,120, 21,109,112, 61, 46, 35, 83, 16, -108,204,227,216, 49, 98,139,180,235, 6,128,240,219, 57,228, 36, 30,235,200,164, - 79,113,117,168,239,245, 37,184,142,162, 89,152,146, 37,206, 25,123,227,251, 1, -196, 33,180,199, 82, 17, 45, 48,253, 36,207,174, 38,165, 10, 53, 62,162,217,135, -166, 30,212,158, 31, 88,232, 24,171,140, 48, 35, 2,253,132, 81,102, 66, 57, 3, - 1, 75,241, 41,197, 49,120, 71,243,132, 19, 46, 56,137, 17, 74, 43,184,167, 90, -200,147, 66,143, 78, 12,181, 37,230, 51,171,129,200, 25,149,193, 84,234,140, 66, - 65,135,226,171, 55,205,145,202, 76,252, 13,110,186,134, 48,228,176, 46, 94,250, -209,235,175,149,160, 9, +// ../Source/Shared/GB_matrix.h: +uint8_t GB_JITpackage_56 [7390] = { + 40,181, 47,253, 96,155,109,165,230, 0,250,156,160, 27, 44,160, 82, 81, 55,210, + 1,233,175, 11, 59,249,222,242,121,158,206,210,154, 85,250,103,109,218,179,218, +169,150, 13,160, 84, 91,224, 74,124,255,218,114,188, 28, 47, 57, 29, 94,169,158, + 1,167, 1,183, 1, 42,179,157, 75, 61,203,173, 37, 99,153, 47,199,141, 3, 98, +145,203, 49,174, 78,232, 10,169,151,251,214,109, 64, 83, 93, 87,237, 56,190,247, + 98, 44, 35, 42,215,114, 16,202, 53, 57,248,222, 98, 16, 35,153, 90,182, 30, 66, +241, 71,191,245, 76, 51,222,211,241,100, 42,182,116,207, 15,122,170,229,182, 55, +221,106,172,143,241,108,149, 25,172,116,190,236, 74,114, 38, 3,159, 74, 40, 37, + 43,228, 58,179,152, 90, 22,147,176,242, 86,215,191,147, 21,113,172, 41, 77, 20, + 23,155, 61, 97, 96, 92,168, 48,241,220,114, 58,235,165,169, 90, 59, 46,165,108, +208,247, 94, 40, 34,163,191, 86,100, 32,145, 20,190, 66, 21,231, 23,117, 98, 36, + 16,200,169,191,237,230,173, 78,168,123,135,121, 16, 78, 22,104, 35, 68,143,230, +184,102, 9,106,205,222, 40,197,159, 85, 63, 57,163,146, 95, 71, 12,186,153, 77, +112,234, 75,158,222, 48, 18,152, 14, 41, 59,212,249,153,135,100, 95,126, 78,121, + 82,234,101,112,163,243, 66, 53,250,233, 50, 57,127, 42,195,169, 86,196, 25,135, +141,208, 91, 41, 2, 76,101,207,121, 7,224,215,173, 21, 27, 21,250,146,227,102, + 73, 28,186, 86, 36,219, 36,193,212, 87,127,149,122,108,233,183,164, 26, 77,231, +233,208,253,100,108, 93,167,179,228,170,106, 74, 89,174,254,116,236, 49, 65,101, +139, 3, 66,137, 34, 36,108,185,141,146, 90, 36,119,213,211,153,186,144,240, 59, +187,198,144,104,120,144, 17, 81,172,145,252,172,161, 63,173, 76,107,232,123,146, + 66, 6, 34, 40, 17,146, 4, 21, 74,132, 62,206, 81,232, 91,179, 15, 52,146,116, +179, 38,196,154, 67,161, 13, 9,195,129, 21, 87, 74,176,240,203,141, 27, 60, 59, +219,128, 72, 56, 29, 99,160,124,149, 2,198,129,148,160, 18, 86,250, 14,123,182, +119,197,148, 90,172, 72,107, 57, 23,195, 56,144,160,147, 9, 68, 50,153, 4, 76, + 93,158,201,151,203, 46, 14,157,139, 83,175,179, 9,131,161,216, 27,147, 17, 27, + 24,117, 45,215, 23,229, 55,237,116,107, 45, 39,151,223,123,218,207,116,102,112, + 47, 83,194,200, 18,190, 94, 74,121, 87, 10, 23,102, 32, 77, 75,136,217, 5,127, +171,141,180, 16, 95, 34, 25,111, 75,211,186,123,154, 38,203,178,230, 54, 65,166, + 73, 1,252,150,144,129, 36,162,169, 22, 81,170,161,230,195,183,187, 64,140, 79, + 5,114,180,197, 34, 10,148,130,193,252,126, 27,232, 87,213, 19,145,242,164,219, +123,155, 77,183,186, 89,145,106,196,223, 27, 9,127, 37,132, 64, 16,141,181,201, +197, 90,198,150,152,198,117, 97, 29,215, 6,104,243,117, 21,137,255,123, 18,254, + 53, 97, 89,116, 71,223, 81, 41, 16, 69, 81,135,199, 6,109,199,175, 66,127,249, +109,251, 26,235,215, 77,178, 70, 23,206, 87, 45,162, 84,166,104, 54, 69,237,140, +236, 52, 86,200,245,228, 17, 76, 39, 70,129, 58,112, 15,231,110,217, 64, 13,199, + 52,254,109,213,129, 9,136,173, 26,111,160,140,250, 48,234,220,118, 34, 44,242, + 84, 10, 92, 78, 68, 84, 8,139, 92,149,216, 81,145, 68, 68, 75, 37,110,120, 60, + 32,139, 35,169, 99,217,131, 21,152, 43,133, 90,212,210,207,228,119,148, 98,138, +217, 41,222,131, 88, 30, 9,245,129, 20,114, 84, 45, 21,245, 32,101,249,233,220, + 73,241,204,190, 35,198,152,170,157, 53,225,212,219,108,125, 47,171,222,102, 28, +248,223, 62,146,163,218, 98,152, 15,247,142,111,201,211,219, 9,167,247,179,107, +202, 91,107,138, 5, 26, 65,201, 31, 29,148, 13, 80,165,192,182, 82,174,180, 61, +214,244,132, 38, 75,107,104,123,154,118,146, 44,173, 37,133,162,164, 65,241, 75, +214,176,116, 76,191, 85, 82,150,108,109, 48,135,252,156,189,213, 40,220, 76,229, +135, 80,145, 76,165, 40,103,124, 37, 4,196,228,239,135, 94, 21,104,229,205,147, +250,186,154,197, 55, 21, 46,236,156, 52, 61, 55, 67,177, 62,237,100, 92, 96, 68, +216,214, 16,136,177, 95, 69, 96,159, 13, 59, 43,231,194,118, 93, 85, 12, 49,254, +108, 29,111,252, 40,190,228, 98, 17, 66, 64,168,212, 19, 6, 63, 50, 45,225,111, +212,185,249, 51,140,157,247,198,196,199,203, 62,156,166,109, 27,244,143,179,204, +138,139, 7,170, 80, 10,183,105, 10,125, 56,170,150, 3, 44, 43, 60,122, 55,232, +217, 32,205,161,248, 88,135, 49,245,204,147,132, 88,230,173, 89,158, 50,109,159, + 12, 71, 57, 52,236, 77, 24,203,165, 54,236,214,111,239,255,217, 57, 9,225, 67, + 15,177, 11, 78,165,228, 90,213,227,159,208,219, 85, 11,111,191,236, 27,153,206, + 24, 63, 8,147, 31,131,178, 82, 72, 9,168, 62, 4, 41,136, 41, 4, 68, 6,141, +224, 43,164, 30,201,249,112,119, 44, 92, 59, 29,110, 32, 85,181,245,144,234,215, + 40, 60,211,239,251,252, 98, 70, 57, 95, 42,240,196,114, 2, 2,153, 68, 32, 17, + 9, 20, 80, 16, 72, 24,152, 28,144,168, 84, 34, 74,101,146,145, 48,106, 72, 77, + 38,150,143,115, 90,202,158, 77, 80,168, 66,159,220, 12,141,222, 87,114, 40,133, + 10,200, 2,180, 38, 99,106, 1, 87,213,210, 64,169,229,249,222,238,195,181, 44, + 39,103,158,250,210, 29,158, 2, 5, 22,104,236,136,206,227, 65,113,105,124,153, +150,213, 46, 77,211, 9, 15, 8,136,238,168, 82, 32,198, 75,100, 66, 41, 44,207, +190, 88,198,206, 41,203, 42,229, 25,172, 46,118,110, 97,182,235, 23,181,139,163, +179,119,131,161, 88,118,198,129,165,122, 75,112,102,161,196,244, 94,111, 90, 2, +147, 91,109,160, 5, 99, 61, 29, 11, 20,214, 48,245, 12, 41,141, 30,173, 40,244, +242, 80,207, 42,158,244,169, 72, 32, 15, 39, 34,130,197,134,100,225, 84, 58, 25, + 3, 18,128,146, 72, 32,224,168,112, 17,185, 78,104,244,188,239,117,146,185,193, +178,255,117,244,233, 82, 14,229,131, 57, 63,123,250, 98, 80,117, 34, 89,165, 88, + 6, 16, 72,213,148,115,128,158, 80,206,188,159, 39,170, 2,128,226,115,169, 86, +106,201, 44,120, 36, 30, 3,252,143, 1,232, 19,161, 74,161, 19,177,163,106, 4, + 35,197, 9,165, 64,160,168, 35,138, 40,235, 44, 15,116,238,168,165,131,226,192, +111,140,164, 73,142, 6,203,186, 32, 75,114, 44,174,120, 65, 81,114, 50,166,202, +244, 68,104,146, 28, 7,146, 90,244,113, 84,128, 62,209,113, 28, 93, 40, 66, 45, + 57, 23, 1, 28, 69, 45,214, 26, 12,166, 98,170,234, 0,242,189, 12, 82,222,220, +144,149,201,160,156,148, 92,190,118, 37,132,211,173,140,234, 16,131, 32,223,188, +193, 92,182, 1,221,163,228, 34, 67,210,138, 12, 2,252,214,136,167,137,204, 99, +131, 28,198,253,229,162,105,221,211,100, 89, 91,108,197, 68,150,213,118,185,157, + 54,110, 18, 98,172,217,143,153, 70,151,159,218, 33, 4,196,182,251,109,249,132, + 78,230,194, 87,101,248,161, 63, 17, 58,113, 34, 12, 38,115,169,231,113, 34, 15, +191, 51,133,161,208,119,243,121, 70,152, 55, 16, 84, 38, 20, 25, 95,203,121, 36, + 66,210,103,218,103,157, 76, 42,244, 28,184,112, 92,108,104, 72, 25, 27, 24, 11, + 28, 23, 48, 23, 16,180, 57,152,184,134, 51,179,108,160,196,178, 13, 12, 16, 42, +108, 92,164, 12, 24,210,187,150,240,161,109, 90, 39,161,243,217, 66, 14,141, 40, +158,233, 83, 40, 46, 77,122,215,187, 44,221,123,209, 2, 70,194, 4, 95, 70,219, + 91,174,114, 96, 92,144, 34, 64,120,128,209,128,144,113,177,224,105,190,108,255, +210, 1, 3, 24,240,182, 22, 34, 17,191,212,131, 7,173,192, 57, 91,102,146,231, +220,167,190,239,122,238,204,155,201,211,198,114,179, 55,255,160,156,200,160,205, + 31,138, 50,112, 28,186,203,177,229,120,102,145, 31,116,111,185, 81,203,114,123, +232,234,231, 23,170,217,175, 51, 14,223,148,208,250,143,204, 23,197,110, 95, 92, +139,134,158,185, 66,114, 95,150, 97,249, 68,100,238,173,150,119,248,203, 82,246, +133, 39,137,216,168, 52, 85,234,171, 20, 58, 54, 35,194,128, 68, 0, 5,179, 80, + 0, 12, 14, 16, 79, 70,227, 57,101,153, 62, 84, 2, 14,141, 20,132, 73, 49, 73, + 58,200, 2, 28,203, 16, 4, 20, 32,128, 24, 48, 2, 0, 0, 25, 0,152, 0,234, + 4,210,140,140, 13,102,155,136,211,133, 4,185,152, 90, 28, 69,116, 97, 47, 91, +104, 58, 92, 42,227,237,252,152, 22,107,170,172, 32,234, 30, 74, 12,217, 26, 76, +111, 76, 34, 86, 44, 68, 44, 77, 10,132,220,154, 83, 0, 86,140, 45,121,244,208, +112,130, 29,125,164,218,106, 40, 41,205,244,154, 4, 45,135, 92, 83, 7,207, 29, +111,149, 87, 38, 78,194,189,210,107, 28, 9, 24,206,116,142, 86, 78,209,136,202, +218,123,221,106, 51,197, 23,240,112,249,205,247,138, 59, 93, 83,147,101,138, 74, + 30,111, 92,234, 53,154,103, 91,255, 25, 55,246,136, 11,119,164,196,130,203,191, + 44,220,215,202,187,212,161,166,128, 80,188,192,192,152, 18,140,160,111,247, 51, + 74, 90, 42, 30,185, 98,174, 11,182,206, 14, 78,140, 23,101, 35,105, 53,253, 53, +180, 82,105,216, 65,157, 60,249,201,234,116,121, 14,122, 30, 82,235,146,112, 71, +125,184, 34,219, 73, 53,128,225,147, 18, 7,141,231,166, 96,163,217,187, 57, 45, +139, 51,181,166,230,102,230,132, 99,180, 72,183,212,175,123, 77, 54, 6,130,207, +251,170, 1,196, 68, 35,200,220,122,211,168, 68,196,104,238, 32, 2,110,133,219, +243, 70,207,182,132,117,217, 77,104,227,185,172,255, 16,109, 71,204,133,167, 93, +111, 34, 56, 3, 70, 38,129,238,238, 9, 40,142,142,229,104, 58,110, 45, 19,242, + 16,169,108,213,249,224,140,139, 8,165, 98,182, 77, 48,213,238,139,128, 38,244, +133, 32,216,239,109, 2, 3,133,136,212, 87,116, 18, 43,193, 17,209,131,187, 20, +145,173, 23, 98,203, 39,181,161,149,165,251,139, 25, 35, 30,156,231, 59, 10,247, +112, 73,149,225,221, 50, 17,111,197,122,254,243, 58,218, 3,118, 42,100,188, 46, +250,113,215, 30, 87, 30,141,156, 77, 12, 30, 75,222,166,198, 20, 5,231,150,111, +159, 97, 69,146,115, 2, 55,231,246,146, 25, 0,244,210,186,224,118,131, 67,221, + 23,114,124,139,228,204,118,190, 89,195, 56,103,211, 95,122, 16, 75,191,128, 71, + 41,225, 49, 69,182,149, 16,159, 88, 42, 46,122,146,112,246,232, 75,112, 77,242, +103,162,119, 5,226, 30, 24,102,160, 26,176, 45,200,165,207,183,142, 93, 54, 9, + 79,191, 14, 61,247,184,179,122, 4, 82,226, 11, 25,166,145,138,254,222, 99, 62, + 73,142,120,116,208, 94,123,248, 67,117, 52, 36,147,195,189, 9,114, 54,133,195, + 36, 13, 25,120,224, 81,101,247,142, 75,179, 9,138, 27, 18, 10,205,230,200, 73, + 85,125, 68, 38,210, 35, 25, 93, 97, 36,231, 60,234,252, 98,187,214,123, 52, 22, +130, 98,168,100, 89,128,128,202,149,112,225, 24, 58, 94,253, 37, 96, 76, 21, 8, +112,218,178,214, 62,183, 65,185, 97,121, 61, 82, 53,120,153, 66,137, 89,120, 42, + 62,188, 46,102,134, 85, 23,128,137, 94, 50, 43,201,147,177,106, 27, 69,180,236, + 44,111, 82,157,221,180, 99,165, 64,193, 44, 70, 65, 1,126, 45, 96,175,159,208, +171,167, 87, 84, 1,187, 68,108, 13,253, 42, 80,194,156, 85,203, 9,155, 1, 52, +227,203, 73,108,172,208, 85,248, 69,200,188, 53,106,161, 47, 60,184,102, 69, 36, + 68, 50, 63,101,203,150,210,164, 88,237, 18,217,192,120, 81,237,117,195,191,217, +145, 82, 45,226,174,110,198, 28, 57,128, 61,195,188,139, 37, 88,217,198,249,165, +231, 94, 10,234,237,124,224,106, 34, 99, 57,113, 1, 10,247,179,217, 70, 11,237, + 81,162, 59, 41,222,235,203,100, 4, 55,161,194, 15,169,234, 6,178, 95,138,234, +254, 54,194,147,215,243,162,150, 97,197, 45,224,236, 18,168, 93,133, 26,217,237, + 82,183,101,216,115, 47,243,145,240, 50,175, 50,138,107,184, 47, 23,237, 7,165, + 74,127, 77,165,123,118,200,251,149,214, 64,180, 75,194, 42,167,233,222,104, 25, +116, 32,190,137, 28,169, 80,237, 52, 3,123,248,128,244, 75,199,184,105, 98,125, + 80, 84, 20,116,101,236, 52, 3,137,228, 24, 31, 77, 13,122, 27,154, 45,167, 19, + 61,161,180, 51,147,220,126,215,177,239,128, 64, 91,201,224,208,133,228, 10, 46, +172,124, 12,176,123, 75,226, 13,209, 24,139, 52,178, 48,106, 9, 28, 16, 17, 12, +183, 26,211,152, 84,139, 52, 84,150, 80, 87, 6, 49, 47,204, 29, 63,172, 39,154, +163,112, 52, 49,154,180, 25, 86, 36, 64,197,151,143,199,151,145, 84,103,206,233, +119,114, 65,219,157,215,242, 67,245,113, 71, 32,207,172,170,136,128, 2,215, 41, + 73, 47,250,156, 72,102,209, 37,109,164, 38,123, 66,103, 0, 62, 38, 34,139, 27, + 0,141,154,162, 22,112,126,238,166,244,150,152,138,161,209,134, 15, 76, 35,193, +135,163, 17,140, 79,208,168,195, 39,214,212, 17, 53, 46, 7,242, 34,224, 53, 23, +176,209, 4,129, 17,166,216, 92, 21, 70,128, 72,246,163,214,119,230,209,230,132, +102,236,187, 2,252,213,134,101,126, 4, 65,228,227,146,213,191, 25,164,177,188, +124, 66,180,144,182,155,130,180,187,175, 72,249,254,210,148, 97, 5, 53,244,113, + 93, 67, 12,210,178,252, 6,146, 84,143,104, 8,152,192,187, 74,191,202,250,223, +138, 24, 6,254,112,145, 52,144,204,146,217, 98,231,213,131,186,144,200, 22, 77, +251,196, 21,194, 40,230,143,134,194, 58,207,115,118,171,246, 2, 80, 30,249, 7, +107, 84, 78, 4,145,184,169,162, 75, 86,218, 74,119, 62,128,195,212,251, 94,223, +235,202, 53, 18, 12,149,130, 34, 44, 45,119, 1, 91,154, 15,221, 77, 57,230, 54, +203, 15,182, 92,191,169,244,248, 49, 87,216,183, 47,213,255,119, 77, 20,114, 70, +134,230,187,127, 42,251,201,202,116,226,102,127, 80,210, 34,182, 90,226,158,195, +185,161,125,226,145, 52,206,227,205,177,207, 34, 59,151,190, 69,194,230, 15, 1, +182,121,183, 80,210,175,226,143, 84,132,193, 62, 61,194,204,237, 59,176,163, 36, +140, 87,139, 11, 81,205,224, 34, 23,200,230, 16,243,167,230,158, 34,102,255,191, +122, 23, 46,201, 2, 96,132,223,187,135,136, 35,194,211,150, 37, 3,223,218,198, +225, 19,216,118, 65,100, 17,108, 93, 65,159, 47,130,206, 90, 26,228,238, 78,114, +166, 32,142, 89, 18,163, 69,230, 13,212,235,204, 38,226, 98,237,167, 53,189, 57, +233, 18,103, 48, 77, 30,245, 4,183,175, 86,233, 83,200, 68, 80, 67, 46,201,185, +113,194, 76, 24,152,106, 22,142, 55, 53, 94,120,151, 5,249, 46,249,170,231,209, + 43,186, 37,222,127,132,254, 65,162,252,189,200, 38, 75,214,171,203, 79,125, 14, + 65,243, 2, 6, 93, 74,152, 3, 14,240,184, 42, 57, 11,126, 17,231,104,162, 52, + 15,220, 34,211,237,105, 3, 4, 89, 87,132,188, 10, 57, 98,189, 95,196,113, 87, +205,193,201,185, 6, 15,225,194,127,129,158, 74,139,184, 15, 89, 75, 32,138, 67, +176, 5,188, 82,229,135,167, 29,159, 80,105, 90, 11,253, 90,143,178,207,134, 55, + 17, 29,149,199,197,255,251, 30, 20, 81,173,118,155, 21,117,252,110,153,198,124, +203, 66, 21, 49, 12,134, 8,247, 41, 79,107,120,252, 80,124,249,226, 88,164, 25, +222, 5, 31,182,112, 0,186, 33, 36,148, 51,166, 55,212, 9,174,106,211,178,222, + 1,161, 31, 5,113, 19,232, 58,249,113,124,142,191, 60,248, 60,160,124,123,145, +177,156, 19, 67,102,189, 58, 61, 92, 83,206, 48, 81,231,241,146, 74, 34,248,111, + 31,106,110, 36,196, 92, 56,148,114,246, 81, 42,165,105,221,107,217, 4,142,174, + 88,204, 58,148,170,137, 34, 12,108, 40,151, 5,125,232,173, 60, 71,212,164,102, +164, 20,228,242,231,248,223,144,130,187, 2,161,224,181,216,171, 70,202,132,213, + 80, 80,208, 71,170,228,214,138,146, 4,172, 84,116,205, 63, 99, 96, 13, 89, 90, +182, 12, 89, 22, 30,140,150, 15,167, 96,215, 37, 45,151, 8,120, 82, 75,193,157, + 6, 88,230, 50,150,178,107,160, 39, 31,179,146,149, 62,159, 71,117, 38, 99,188, +178,162,131,191,213,124,106,115, 6, 55,144, 93,112,187, 39,113, 70,128,160,134, +211, 6, 30,192, 82, 49,116,109, 97, 8,121, 8,118,179,251, 97, 58,149,100,169, + 18,172, 85,225, 4,240,214,109,206, 37,202, 62, 2,171,217, 61,177,169,144, 67, +229,210,244, 30, 86, 56,161,251,164, 79, 50, 52, 80,206, 33,164,139, 14, 90,135, +242, 14,103,151, 80, 70, 9, 79, 9, 34, 6,210,178,189, 9, 85, 17, 82, 95, 70, + 47,240, 25,219,157, 26,134,125,205,239,108,252, 22,184,154,220, 24,100,218,146, +250,137, 8, 13, 20,137, 68,159, 96,105, 77,204,180, 41,236, 44, 57, 9,108, 58, +113, 1, 90, 0, 10,143, 18, 32, 65, 79,203, 40,120, 30, 18, 52,187,222, 99,167, +211, 16, 6,235,212, 54,153,158, 39,152, 88,183, 79,224,222,140,220,240, 28, 89, +116,112, 25,157,151, 43, 76,118, 65,125, 79, 61,135,129,196,103,249, 90,124,188, + 44,240, 80,119, 90, 93, 81, 58,139, 27,253,197, 86,248,170,208,127, 37,168,181, +184,142,235, 98, 86, 95, 13,217,151,111,226, 48,175, 76,154,160,224,176,106, 17, +190, 17,214,182,205, 38,191,223,178,171,199,171, 37,167, 68,232, 66,159, 82,108, + 32,210, 31,152,143,100,208, 89,165,232, 19, 67,220,129,180, 35, 8, 18,191,242, + 55, 78,176,136, 63,241, 42, 73,203,185,162, 56, 45,160, 66,124,169,192, 53,187, +241, 51, 36,204,247,145, 88,194,127,158, 81, 67,195, 31, 45,103,205,254,204,163, +115, 61,245,208,162,145, 38,238,201,208,243,165, 0, 5,187,226,135,250,126,244, + 73, 11,200,122, 21, 52, 30,162, 74, 48,114, 61,221,252,116,175,113,185,148, 17, +130,223,104,239,200, 74, 50, 86, 96, 1,107, 10,140,158,209,108,139,113, 37, 36, +196,200,134,105,134, 68, 65,159, 55, 29,119,249, 4,183, 64, 59,186, 0,196, 51, + 14, 39,112,175,106,213, 20,116,143, 49, 0, 3, 46, 24, 22,207,130, 80,109, 93, +174,142, 10,137, 96,234,254, 99, 19, 22, 2, 3, 60,251,152,131,217, 32, 84,172, +210, 53,244,142, 39, 6,244, 83,149,205,232,166, 87,140,110,168,149, 36,181,215, + 75, 40,152, 87, 12,126,172, 44,222,148, 24,188, 45, 10,157, 83,161,159,105, 18, +173,233, 89, 3,142, 83, 27, 64, 95, 57, 6,153, 10, 48,197,236, 3, 23, 34, 66, + 14,232,105, 84, 82, 99,146, 26,101,128, 78, 61,136,209,173,161, 30,158,234,160, + 32,198,200,108,223,171, 28, 59, 42,186,164,234, 48, 44,121,128, 20,216,161,179, +155,153,249,188,125, 10,127,128,174, 4, 1,232,146,171,120, 36,234,206, 61, 14, +110, 66, 41, 89,188,206, 26, 68,114, 98, 60, 83, 81,176,181, 9,205, 0,219,238, +134,233, 41, 34,219,189,242,221,185,244,173,173,103,213,131, 12,100,174,108,210, + 43, 18, 57,253, 39,234,226, 99, 76, 46, 10,222,206, 16,154,208,177, 72,132,240, + 44,226,194,101, 51,247,226,118,208,204,194, 64, 95, 32,105, 51,157,213, 33,131, + 34,198,155, 25, 54, 18,175, 75, 96, 73,122,134,247,144,233, 63, 74,171,210,155, +214, 18,199,110,114,122,123,133, 12,147,114,110, 2,122, 43, 79,254,212,136,221, +139, 67,230, 77,154,133, 83, 86,101,245, 24,108, 66,203,214,192, 89,125, 83,200, +138,250,155,124,102,143,162, 58,241, 98, 19,196,119, 96,161, 37, 34,140,181, 95, + 93,104, 88,171, 97,171, 13,172, 73,166,231,241,117,188, 57,119, 5,177,124, 65, +211, 36, 67,162, 87,183,192,190,254,133,156,198,225,212,117,226,203,141, 11, 91, +148,166, 52,251, 43, 33,223, 18,186,223, 3,142,207, 1, 86,238,142,157,101,244, +119,149, 95,109,210, 85, 85, 40, 54,200, 21,196,213, 67,220,157, 93,172,100, 61, +221, 13, 6,101,118,125, 49, 70, 67,165,184,243, 17, 52, 33, 74,182,103, 57,197, + 73,150,245,224,115, 81,208, 77, 51,254, 26, 2,170,120, 67, 13, 56, 33,102,167, + 79,128,133,121,177, 10, 16,205,108, 60,203,120,130,161, 26,176,121, 45, 42,166, + 72,134,142,117, 48, 40,186,240,229,252,154,200,121, 47, 95, 27, 70,240,143, 52, +176,124,237,179, 5,172,224,135, 47,160, 80,124, 69,136, 0,204, 92,205,143,159, + 75,179,249,107,249, 41,160,222,128, 94,212,242,112,135,210, 93,221,127,210,185, + 0,104, 96,180,126, 45, 90,108, 17,196,239,219, 21,119,129,239, 63,183,244, 19, +116, 70, 22,106, 86,245, 45,127, 53, 4,140, 79,158,170, 55,219,128,187,231,103, +230, 28, 84, 5, 38, 7,227,195,201, 0, 63, 12, 81,152,232, 0, 19,246, 81, 44, +205, 16,212, 4, 9, 55,151, 13, 64, 53, 97,147,215,153,194,144,132, 59,183,193, +131,116,147,164, 44, 84,237,150,175, 7, 51,199,171,200, 9,118, 18, 38,122, 63, +132, 78,138,156,192, 8,219,189,176,129,100,172, 12,110, 10,229,240, 35,112,213, +225,165, 39, 12,217,210,215,106, 93,149,144,222, 76, 1,191, 5, 21,180,103,242, +126, 50,139, 3,163,182,228,226,250,210,186,158, 11,129, 17, 59,164, 86,232,161, + 83, 76,143,248, 99,220,239,173, 74, 88, 56, 70,202, 15, 74, 0, 18, 36, 84, 90, +195,156,148, 58,126, 28, 11, 85,107, 86,221, 83, 59,215,135, 39, 86,239, 21, 89, + 69, 2,170,202,167, 65,224,185,173, 60, 33, 31,105, 77, 76,118, 31, 65,170,119, +159,231, 41,206,250,215,116,226,120,233, 99,114,235,221,219, 83,253, 73, 47, 14, + 24,199, 3, 56,231,193,218,142, 16,176,206,208, 43, 34,203, 54,255, 6,212,208, +244,235, 74,103, 33, 70,228,166, 61,137,119, 5,198, 92,146, 60, 97,131,169,100, + 95,142,219, 55, 96, 65,231,229, 23, 93,215, 4, 72,210, 93,153, 22, 8,200, 52, + 69,138,186,254,223,181, 92, 17, 59,164, 92, 63,174,170, 1,125,123, 49,226, 82, + 94,158,246,155,194, 68,156, 20,161,221,176,194, 53,249,179, 5, 38,137, 35,174, +165, 82,178,122, 97,239,193,155,188,178, 30,253,101,187,181,136,186, 53, 0,111, +247, 96,233,247,165,156,131,101, 36,154,225,209,126,125,169, 47, 43, 59,204,230, +155,155,100,149, 67,167,140, 53,103,158,237,183,166, 75, 34,157,142,173, 53,137, + 53, 75,250,172,129,202, 6,201,236,240,149,122,192,238,142, 5, 1, 72,225,245, +135, 30, 53,235,125,172,122, 21,171, 89, 73, 27, 33,157,207,118,202,128,238,143, +193, 61,174,191,207,239,157,156,115, 89,216, 95, 5,207, 84,194,165, 52, 81,174, + 18,185,203,180, 36,223, 7, 1, 13,108,190,199,209, 47,129,213, 16, 58,169,234, + 87,210,104,115,117,211,218,172, 19,249,134,122,180,125, 94,125, 21,219, 89,199, +162,152,144, 50,218,199, 58,140,241, 8,254, 11,173, 6, 11,138, 42,104,220,107, + 85, 3,121,192,143,168,199, 50,177,223,161,133,239,125, 7,177,218,116,160, 9, +112,243,242, 9,242, 59, 36, 80,162,186, 60, 5,182,226, 21, 72,136, 79, 54, 68, +156, 64, 95,165,231,165, 2, 8,185,204,196, 52,179,186,199, 34, 49, 15, 87,138, + 45,140,195, 34,113,215,177, 31,116, 60, 41, 29,240,210, 15, 49,151, 92, 69,206, + 92,152, 18, 24, 85,130,168,225, 50,103, 86, 44,102,234,117, 98,229,101, 13,241, +178,129,247, 9,119,132,231,128,210,160, 21, 35, 20,240,191, 52,134,130,182, 11, + 67,127,124, 33, 96, 93,200,172, 22,118,221,105, 46,225,255,139,176,145,152,126, + 65, 39,114,214, 41, 84,167,146,133, 65,103,231,197,137, 59, 42,195,169, 63, 60, +149,195,200, 44,249, 71,149, 78,174, 22,207,174, 74,176,183,163,162,189, 10, 15, + 59,168,208, 64, 54,117, 75, 41,190, 61,216,130,178, 83, 4,177,161,163,214, 83, + 5,119, 2,152,201, 14,170,148, 22,172, 98,191,187,159, 28,207,149, 21, 60, 41, +160,170, 57, 50,227, 87, 4,194, 22,164,208, 75,111,222, 20,229,225, 42,199,218, +198,186,186, 36, 94, 11, 38, 90,231,197,247, 2, 14,126,189, 95,205, 21, 50,132, +168,111,129, 57,109,185,175, 95,100, 41,104, 70,171, 14, 0,164,189, 26, 54,213, + 21,156,144, 61, 1,242,253, 40, 56, 96,141, 65,177,128, 25,244, 24,213, 40,235, +163,216,120,179, 28, 5, 2, 77,212,212,159, 77, 98, 72, 44,116, 36,208, 26, 99, +130, 42,127, 87, 55, 9, 60,134,229, 42, 13,236,118, 31,145, 76,217,176, 99,233, + 95, 35, 89,245, 59,136,244, 37,237,160,226, 54, 67,101, 77,151, 33,111,105, 78, +173, 5,155,139,101, 14,168, 46,253, 58, 6,100, 39, 75,172,145, 59,168,157,196, + 65,129,230,149, 96, 47,173, 59, 99,131, 55,255,227,240,127,128, 1,143,195, 90, +198,199,212,197,105,108,252,243,147,214,192,227,109,216, 96,214,179,191,228,149, +137,129,127,157,255, 79, 52,213,119, 14, 85,108, 40, 95, 97, 27,108, 82, 6, 92, +137,138, 53, 11,112,140,103, 39,226, 79,197, 25,122,148,184, 92, 88, 0,206, 42, +252, 29, 86, 29, 58,145,255, 22,124,183, 71, 20, 15,235,193, 10,128,118, 81, 37, + 59, 63,142, 1, 71, 43, 46, 52,140,162, 3,105,143,164, 65, 48,114,248,250,166, + 6,109, 15,249,154,183, 45, 92, 30,116,198,199,175, 41,222,116, 7, 8,228, 25, +221,228, 26,165,153,160,158, 27, 50,235,176,161, 42,161,166,107,154, 67,204,200, + 96,197,210,107, 92, 14,179,251, 66,210,206,186,133, 94,225, 38, 54, 36, 33,222, +240,132,213,193, 36, 24, 15,152, 80,139,110,181, 99,133, 49,249,150,204,220,121, + 86,233, 73,124,196,152,184,220,248, 76, 13, 12, 0, 85,233,237, 80, 36, 74, 4, +227,188, 66,135, 75, 59, 65, 93,239,167,104,228,185, 53,160, 22, 32,112, 14,146, +228, 12,232,152,191,172, 57,232,242, 66, 62,190,157,228,189, 43, 50, 71,125,202, + 41, 68, 66,137,135, 2,208,223,206,202, 69, 31, 31,193,170,150, 25,129,103,154, + 4, 97,243,242,189,103, 22,243,189,133,144,108, 29,224, 32, 69,131,103, 64, 16, + 9,168, 29,242, 54,124,222, 62, 34,253, 17,116,200,130,188,137,103,132,186, 98, + 19, 86,212, 60,121,165, 81, 87,192,164,219, 88,206, 57,213,227, 42,120, 18, 99, + 16,116, 79,132, 90,181, 81,221, 41,144,118,190,141,110, 81,184, 30, 29,143,226, + 91, 52,130,151, 1, 15,169,182,109, 59,239,181,138, 8, 70,182,139, 2, 99,142, + 54, 21, 65,131,133,206,120,175,229, 23,130,183,159,163,173, 37, 27, 35,232,177, +219,124,232,192,171,116,232,226, 79, 34,216, 87, 48,178,137, 11,193, 75, 32,165, +188,205,207,106, 87,230,248, 35, 5, 33,100, 1,122, 66, 7,111,130, 35,150,207, +177,162,250,132,122,174,207,211,192, 35, 51, 40,192,115, 57,194,150,186,113, 8, + 74,244,112, 35, 43, 15, 59,195, 99,112, 55,225, 23, 14, 10, 37, 82, 79,116,117, +176,116,154,233,222,233, 11,172, 58,186,185,255,138, 43, 45, 12, 87,178,168, 34, + 50,152,138,130, 31,103, 41, 69,216, 88, 93,184, 70,219, 10,191, 39, 73, 92,227, +135, 97, 25,153,167,190, 1,175,123,155, 59,202,129,168,245, 22,155,204, 20,195, + 47,175, 83, 27,234,111,189,128, 25, 58,156, 34,130,224, 43,207,105,150, 37, 64, + 25,252,155, 58, 5,168, 6,191,166, 78, 1,202,193,183,169, 83, 0, 68,133, 23, + 98,244, 4,172,106,229,195, 39, 81, 45, 93,151,125,199, 30,139,218, 69, 76, 7, + 76,168,126,128,106, 2,242,156,173, 21,181, 20, 54,150,122, 61,143,242, 29,158, + 28, 53, 51, 32,213,127,137,241,250,163, 19,228,118,133,175,173,251, 61,190,102, + 9, 21,222, 75, 68,225, 36,205,120, 33,251,223,251,145, 58,120,160, 0, 62,137, + 31,151, 37, 39,249,244, 29,166,225, 7, 22, 85, 92, 47, 58, 5, 85, 2, 64,172, + 80,234,130,102, 68,237, 31,190,239,220,230,103,139, 55,250,254,183,125, 84,122, +161, 71,131,251,173,147,219,167, 69,197,121,225,150,169,139, 5,238,158,192, 46, +198,216, 56, 52, 91,120, 10,180,166, 51, 0, 90,192, 62,151,165, 19,178,175,188, +179, 95, 9, 59,228, 50, 69, 68,121,236, 16,101,231, 57,127,151,151, 25,233,246, +212,100, 84,216,220,214,246,218, 39, 97, 52, 80,255,149,138,110,218,127, 0,104, + 52,173,172,137, 8,248, 35,208, 56, 63,201,214,120, 86,183, 59,113, 30, 1,110, +158, 72,115,246, 41, 67,124, 56,135,143, 13, 65, 10, 19,147, 53,217,175, 6,184, + 44,150,202,229, 10, 20,149,247, 75, 4, 93,114, 68,216, 24,195,144,229,226,121, +155,121,212, 8, 79,148,149,243,232, 51, 22,204, 82,145,147,108, 65, 4, 71, 77, + 37,158,172,224,122,126,199,139, 36, 7,211,207, 46,120,108, 70,148,223,153,138, +163, 90, 49, 54,118,117,166, 57, 83, 77,192,221, 48,202,169,208,125,210,237,124, +228, 42,216,207, 16,176, 42, 47, 58, 2, 75,160,209, 82,123,202,170,236, 20, 57, + 14,154,216,157,192, 55,163,179,131,187,234,224,214,218, 33, 32,187,101, 53,253, +170,138,241, 47,135,184,125, 21, 60, 81,182,123,176,130, 51, 1,188,229, 60, 8, +197, 45,111, 63, 17, 78,198,189, 50,179,246,114,110, 43,237,139, 46,150,171,163, + 40, 42,238,246, 6,107, 16,222, 74,218, 88,206, 8,183,115,179,248, 36,216,100, +202, 49,122,195, 86,182,164, 21,252, 74, 34,195, 98,192, 45, 95, 86,215,162, 17, + 98, 97,152, 37,187,190, 11, 54,170, 59,153,199,174, 1,134,199,236,180,255, 80, + 54,178,116,165, 10,234,199,135,243,143, 93,173,139, 61,152,139,238, 69, 25, 20, + 75,144,138,176,178, 41,123, 54, 92, 32, 32,113, 49, 59,177, 97,222, 58, 80,128, +124,210, 93,116,224, 78, 29,177, 5, 11,102, 60, 91,158, 10, 6,104, 78,123, 13, +196, 84,121,184,236, 8,214,209, 76, 31,206,141, 66, 34,150,196,142,116, 30, 82, +130,203, 55,251,143,188, 69,146, 56,197, 99,169,238,190,192,253,205,206,152,117, + 84, 85,217,123,158,119,184,100,100, 2, 9, 17,176,136, 81,132,177, 46,226,161, +114,207,113,251, 37,145, 36,140,121, 76,188, 7,157,158,101,146,169,154, 63,120, + 29, 53,127,238, 20,117,105, 26,106,125, 48,122, 49,164,223, 44,255, 34,208, 40, +193,184, 22,188, 76, 64,113,229, 96,221,233,203, 73, 28,249,156, 77,254, 93,113, +217, 58, 69,188,201,116, 30,126,150, 59,255,250,194,240,226, 92,163, 68,142,156, +243,245,122,179, 11,186, 85,160, 14,248, 91, 76,224,112,212,114,213,122, 9, 64, +210, 88,225, 36, 7,178,113,120, 65,172,223, 25, 10, 97,130,192, 11,240, 26,113, + 25,175, 62, 53,107, 39,203, 4,247,252,173, 24,117, 26,202, 30, 28,246,181, 30, +219,133,181,186, 66,200,120,195,107, 68,182,196,205, 17,209, 27, 52, 96,129, 52, + 8, 58,145,101, 36, 62,144, 55,228, 98, 8, 0, 70, 69,150,157,236, 28,100,121, + 21,203, 41,140,111,253, 66,116, 81, 3,100,160, 43,247, 58,139, 87,158, 56, 13, +132, 6,156,208, 91,212, 82, 88,192, 83,213,154, 80, 59,232, 20,101,157,213,231, + 91, 7,126, 37,210,247,255, 77, 15, 9, 77,187,196,143,125,232,227,137,198,183, +206,153,177,210,128, 89,116,226,134,102,246, 14,174,243, 7, 12, 25,186,150, 32, +102, 2,195, 57, 41, 63, 76, 58, 9,183,144,134,152, 4,105,129,157,217,192, 60, + 95, 57,222,208,232, 64,237, 87,122,123,130, 18,179,240, 8, 14,153,240,132,193, +213, 1,240, 27, 27, 58, 99,188,104,100,214, 32,146,202, 40,253,191,115, 80, 60, +215, 54, 57,126,116,229,207, 95, 57, 81, 10,104,117, 48, 73,133,227,195,149, 82, +190,159, 81,178,192, 10, 3, 22,224,102, 40, 38,233,253,193, 22, 65,178,195,107, +242, 57, 68,113,195,164, 67,178, 3,223,117, 77,243, 5,210,125,203, 95,250, 27, +150, 81,235, 55, 2, 92,199,135,198,105,186, 70, 86,246, 97,166, 34, 0, 1,158, +229,123,194,217, 26, 55, 1,188,137,122,167,124,235,159, 58,133, 84, 48, 18, 75, + 14,222, 82, 75,231, 73,141, 30,254,129,113,100,108, 74,250, 12,101,144, 88, 5, +127,149, 43,125,131,225,135, 33, 83,240, 29,211, 82,195,255,219, 21, 17, 41, 41, +138,162, 18,140,210, 63,244,188, 73,105, 15,253,146, 11, 1,188,201,225,229,150, + 84, 39,109,147,114,165,196, 1, 92,156, 17,212, 85, 54,127,182, 2,111,107, 29, +123,121,185, 73,108,205, 30, 45,233, 69,108,113, 50,202,120,105,249,131,236, 20, + 7, 11,202,192, 92,129,157,187,169,242,202, 47,131,139,247,164, 25, 93, 30, 5, +103,162, 50, 87,189,177,162,234, 0,172, 95,175, 25,238,158,201,159, 44,214,132, +101,156,143,220,175,136, 65, 58,220,144,175, 22,147, 92, 47,116,198,131,198,108, + 70, 94, 40,255, 31,130,181,234,190, 15,240,182,163, 98, 97,114,130, 69,167, 1, +224,197, 79,165,192,177,120,111, 79, 44,100,218, 84, 26, 13, 36,123, 54, 70,180, +163,187, 94,250, 75,121,210, 29,227, 96, 41,224,195,247,205, 50,200, 6, 49,112, +251, 4,141,166,244, 15, 99,174,152,241,195,238,190, 4, 29,167, 82, 85, 30, 92, +234, 13,139, 50, 43,211, 98, 24,124, 28,163, 18, 60, 68, 58,102,130,145,244, 4, +191, 84,125,102,250, 1, 4, 78, 30, 86,163,209,108,107, 27,189,249, 19, 74,107, +250,119, 27, 2, 93,219,130, 88, 49,233, 36,223,126,148, 26,170, 90,188, 85,120, + 66,100, 12, 55, 27, 95,185,234,183, 92,133,224,169,177,248, 73,103,207, 4,166, +152, 64, 12, 71,168,141,161,163, 4,192, 9, 0,126,178, 44,239,141,125,190, 6, +217,227,198, 50,229, 0,118,245,142,157,246,100, 58,231,160, 67,145,248, 84,108, +240, 84,105,185,134,198, 13, 83,125,158, 91,222,139,120,247,129,125,246, 22,177, +195,138,237,201, 33,239, 32, 60, 25,146, 4,223,150, 20,200, 44,224,110, 18,236, + 30,212, 27, 87,152, 81, 18,120,184,239, 35,176,126, 3,110,162, 57,178, 8,214, + 5,235, 17,156, 13,148, 64,200, 77,147,206,207, 76,194, 3,222,126,119, 48,249, +194,185,238, 64, 93, 89, 75,213,133, 12, } ; -// ../Source/Template/GB_colscale_template.c: -uint8_t GB_JITpackage_79 [1052] = { - 40,181, 47,253, 96, 48, 13,149, 32, 0,134, 46,140, 39,208,210, 86, 7,212, 93, - 44,124,187, 19,202,159, 23, 94,234,202,204,165, 47,170,161,137,245,115, 64,190, -170,112, 85, 57,124,196,186,140, 82, 15, 13,176,188,130, 0,121, 0,128, 0, 88, -102, 32,137,101,224, 82,233,236,130,214, 29,115, 91, 98, 50,211,142,156, 74, 99, -218,151,132,168, 92,188,206, 64,108,143,219,184, 61,199, 57,227,144,158,207,233, -222, 12, 46,150, 75, 37,161,192,114,249,228,154,222,176,244,128,239, 3,238, 33, - 89,174, 36, 9,122,251, 56, 8, 77,102,225,221, 96, 26, 95,104, 63,157,101,233, - 35, 1,145, 55, 67,210, 39,164,149, 3,202,248,190,176,212,129, 15,143,229,223, -251,118,246,241, 71,113, 11,212, 49,157,225,180,164,206, 86, 79,120,225, 89, 47, - 75,179, 57, 1,129,164, 66, 64, 16,148,103,235, 0, 33, 83,249,140,105,189, 94, -115,111,212,115,115, 84, 44, 25, 42,212,155, 14,224, 50,159, 76,168,233, 15, 19, -214,171, 32, 52, 17, 20, 14,211, 65,158,234,243,113, 56,151, 44,149, 31, 93,255, -127,137, 68,228,182, 71,211,138, 15,229,115, 41,244,246,254, 25, 34,149, 68,239, -208, 41,188, 34,133,119, 3,142,222,206, 25,218,119,150,143,213,135,216,122, 85, - 62,106, 6, 79,245,189, 94, 31, 59,118,103,152,229,207, 9,223, 23,149,248,173, - 98, 73, 29,227, 60, 54, 46, 61, 87,250,237,146, 36, 72, 67,226,212,179, 20, 59, -187,240, 39, 19,142,176,111,150, 45, 82,137,254, 86,236,179,231,132, 23,218, 91, - 82, 61, 36,113,192,107,163,204,191,156,114, 97,198, 22,143, 48,204, 84, 0,206, - 17, 7,149,214,168,173,190,228,196,206,202,248, 74,108,132,201, 72,223,203,204, - 90, 67,141,103,107,222,196,135, 83,177,180,220,155, 74,136, 74,194, 83, 61, 88, - 32,206,177,142,152, 12,160, 61, 61, 32, 69, 81,212,123, 26,144,201, 4, 82,117, - 48, 64,150,203,178,204, 45, 67,197,125,225,214, 61, 95,242,102,220, 55, 18,201, -136,100,132, 34, 45,212,244,206, 68,245,225, 88, 84,210, 58, 9,175,112,107,171, - 12,142,103, 2, 68, 85, 21,214,139,224,124, 44, 23,177,113,158,206,173, 55,144, -247, 38, 18,197,233,154,202,227, 32,168,234,137, 68,162, 2,129, 54,177,157,214, - 90,164,253,102, 57,219,177, 64,213,102,244,150,185,233,206,106,208,108, 68, 88, -134,132, 78,235, 99,103,120,219,214,119,232, 53, 79,176,250,124, 35,149,216, 21, - 50,159, 30,101,130,105,152, 41,243, 13,141,133,103,248,209,173, 31,239, 26, 79, - 25,142, 73, 1, 1,133,204, 45, 95,152, 38, 5, 1,128,223,168,161, 61,170, 33, - 17, 73, 65, 74,146, 44,107, 80,132, 8,149,149,205, 1, 66,177, 48,145,225,140, - 97,196, 25,130, 68, 2, 17,201,136,130,148, 63, 59, 81, 0,213, 30, 41, 21,157, -242,248,153, 23, 74, 34, 59,173,233,174,124,155,100,210,130,233,217, 4,149,125, - 44, 86,226, 53,140, 97,210, 59, 14, 49,161, 19,106,171,246, 92, 74,242, 40, 25, -188, 72, 60,178,218,217,173,158, 47, 74, 32, 34, 25,196, 92,167,105,175,154, 66, -192,176, 10,137,164,111, 9, 31,102,142, 47,153,171,247,235,130, 75,123, 51,130, -176,145,201,215,248,107, 46,169,227,198,143,124,120,161,242,147,149, 47,150, 1, - 18,204, 84, 34,233,239, 46,164, 93,216, 18,243,187,173, 82,181,118, 67,244, 65, - 95,251,100, 1,195,101,108,107, 16, 85, 74, 95, 26,100, 76,232,134, 53, 97,181, -173,144, 89, 26, 52,176,133,124,167, 84, 30,230, 21,237,161,185, 84,144,249, 56, -196, 48,101,113, 74, 5, 50, 74, 37,245,162,161,128,127, 56,215, 15, 57,205,222, -128, 78, 41, 45,239, 56,162,148,162, 66, 13,190,112,144,152,212, 84,203,206, 0, -228, 18, 89, 37, 80,196, 85,130, 44,152,198,196, 85,117,242,236, 54,162, 72,177, -144, 59, 67, 31,255,155, 49,218, 20,231, 8,169, 53,207, 43,202,101,115,185,109, -156,129,100,189, 82, 79, 80,153, 72, 60,215, 41, 40,217,189,242,112, 46,221,129, - 19,148,149,102,226, 37,201,188,137,232, 34, 18,251,203,208,117, 50,172, 89, 28, -213,252,224, 14,113, 24, 76,177,239,144,145,167,224,166, 87, 39,119,224,137,107, -104,214,241, 43, 61, 0,104,127,171,114, 76,222, 83, 94,181,192, 7, 15, 8,128, - 41,251, 5, 46,118, 32,226,182,165,253,175,131,164,169, 65,159, 60,179, 38,217, -154, 32,217,224,118, 60, 8, 54,131, 59,197, 51, 68,161, 75,107,191, 63, 39,116, - 31,224,234, 10, 7, 60, 58,164,124, 65,129,227,188,105, 8,181, 21,129, 14, 8, - 60,208,219,247,209, 55,141, 97,118, 56, 21, 48,178, 27, 0, 72,156, 96,127,133, - 66,134,166,183,130,217, 3, 96,116,209, 41,245, 76,102,111, 21,219, 55, 77, 94, -101, 38, 49,102,187, 18,126, 25, 42,221,129, 39, +// ../Source/Shared/GB_monoid_shared_definitions.h: +uint8_t GB_JITpackage_57 [1355] = { + 40,181, 47,253, 96,173, 18, 13, 42, 0,230,187,177, 40,208,178,234, 1, 16,219, +136,157,133, 86,245, 41,107,222,152, 45,183, 50,195,200, 22,150,119,116,252, 27, + 76,173,188,203, 79,229,240, 34, 87, 51,224, 7,179, 4,163, 0,170, 0,163, 0, +185, 57,245, 9,124,122, 84,214, 23,104,155,127, 18,184, 64, 87,247,141,206,182, +182,119,226,134,163,108, 26, 95,122,135,219,183,220,218, 75,148,198,206,212,139, +141,125,126,199,222,174,161,200,164,112,224,155,140, 29,213,146,235,175,125,174, + 62,175, 3,199,213,229, 87, 14, 46, 42,204, 52,189,115, 29,123,166,113,222, 56, +159,105, 74,169,150, 22, 20, 34, 10, 7, 14, 9, 17,133,134,200,168, 37,252,157, + 88,245, 68,245,103,203,150,123, 77, 75, 25, 85,137,216,186,120, 37, 36,142,111, +236, 50,207,239,101, 16,238,107,181,198,246,202,200, 53,103,101, 75,182, 9, 87, +251,249,235,107, 62,225,244, 27, 55, 12,231,219,106, 57, 24, 33,209, 8, 8,208, + 1, 2, 66,181,181,199,158,227,236,188,150,207,217, 28, 33, 95, 52,217,192,202, +114,101,144,178, 72, 80, 25, 76,252,254,218, 44,189, 99,107, 75,159,141,105,154, + 52, 10, 32,159,196, 32,234, 56,219,145,227,196,219, 9, 72, 62,185,227,252,218, +150, 56,245, 61,150, 82,171,217,246,106,219,226, 89, 99,215,225,141,127,211, 84, +251, 89,122,211,111, 79,238, 49,133,226,116,195,179, 51, 71, 75,181, 11,234,194, +215, 57,158,235, 87,175,167, 87,206, 99,236,178, 48, 52, 40, 44, 76, 40, 48,219, + 84, 48,218,207,234, 2, 80,164, 97,118, 97, 96, 84,227,239, 4, 8,154,128, 25, +118,185, 52, 23,118, 81,172, 10, 86, 86,134,154,200, 96,117, 93,176,139,165,106, + 1,212,235,117,142,128,134,160,201,233,107,248,183,146,244, 69, 93, 85,148,199, +107,246, 58,206, 74,136, 20, 53,182,169,255,213,239,236,156,182,185,171,215,125, +104,215, 65,184, 71, 99,199, 78,136,158,212, 78,231, 60,140,227, 67,127, 93, 67, +162,134,232,238,134, 60, 32, 72,110, 11,131,161,145,190,174, 32,234,235,216,131, + 48, 78, 79,206,183, 29,168, 62,173, 15, 97, 67,232,242, 59, 62, 33,108,249, 57, +102, 92,177,176,140, 69,145,177,178, 13,118,105, 42,215, 38,130,170, 54, 19,140, +229, 98,105,168, 10,179,129,147,203,114,209, 80, 48,163, 38, 96,134,116,220, 52, +202,207,127,101,199,246,249, 51,122,198,245, 59, 99,143,107,159,174,119,214, 41, +167, 62,238,216,241, 59,237,213,206,174, 81, 74,211, 95,203, 54,211, 87, 80,123, +203,239,233,207, 96,154, 38,131,207, 64, 70, 90,125,243,216, 25,137, 56,126,207, +245, 45,219,158, 84,210,252,242, 41,198, 78,171,119, 99, 59,166, 22,151, 10, 37, + 99, 85, 92, 46,152,196, 53,177,252,235,156, 87,219,214,118,121,109,229, 60, 71, +244,187, 65, 65, 89,153, 8,202, 85, 37, 52,196,171,173, 17, 70, 4,196,208, 92, + 26,204,170,174, 60, 61, 71,239,252,230, 47,210, 76, 96,133,194, 46, 75,198,210, + 64, 43, 67, 85, 38, 86,101,107,227,184,121, 44,213,174,119,108,123,247,201, 95, +115,234,211, 77,154,213,202,158, 53,210, 88,159,187,158,123,160, 63,249, 63, 0, +162,118,250,155,231, 3, 34,117, 81,103,212, 68,242,161, 52,230,239,143,246,211, +114,185, 3,129, 16,168,145, 33, 82, 8,209,136,136, 72, 82,152, 66, 90, 3, 81, + 12, 66, 20,229,165,116, 30,194,120, 44, 77, 1, 13,134, 64, 2, 68,137, 67, 68, + 36,144, 64, 68,130,137,100, 2, 9, 19,164,160,121, 22,238,184,187,180,245,135, + 19,209, 22,234,243,157, 95, 88,106, 97, 30, 85, 56, 78, 5,103,225,154,240,147, +244, 47, 87,196,234,191, 16, 98, 53, 45,201,219,180, 87, 73,211, 50, 80, 86,210, +253,181, 53, 68, 36,132, 39,178, 23, 69,109,246, 99,226,188, 41,251,231,137,239, +128, 16, 27, 72, 10,218,244,136,210, 55,139,240, 9,250, 89, 24, 27,174,143,133, +224,155, 0,229, 21,140, 95, 92, 53,137,161, 20, 32,211,125,135, 46,129, 21, 30, +133, 39,180, 88, 29, 14,109,117,172, 66,188,163, 19,234,154,102,161,151, 93,145, +125,226,172,195, 98,174,157,117, 95,160,160, 98,175, 60, 53, 2, 58,223,170,188, + 84, 17,119,203,154, 92, 93,107,222,164,225,107,134,210, 18,206,128, 1,107,121, + 87, 81, 11,231,220,124, 23, 44, 78,194,142,181,204,177,242, 95, 95,199, 79,194, +237,104,198,100, 42,171,171,220, 93, 73, 11,151,218, 0,116, 98, 5, 22,207, 28, + 85, 21,126,170, 93, 72,182,235, 45,223,203,119,198, 93,187,252,116,166,231, 65, + 15,205, 69,142,155, 96, 23,177,241,166, 92, 53, 50,218,201, 33,219, 34, 59,157, +149,139,166,235,145, 10, 12,184,127,132,116,188, 94, 60, 84,238,132, 19,154,100, + 43,136,102,254,237,153,200,193,137,193,223, 76,138, 3,167,222,208,127, 97, 52, + 42,128, 46,172,184,199, 81, 85, 2,184,254,199,141,158, 8,104, 15, 92,155,226, +101,224,158, 10,251,223, 63,161, 49,199, 52,218, 91,186,162,205,143,139,110,138, + 13, 41, 51, 94,227, 32,148, 43, 29, 34, 47,147,134, 1,201, 71,109,217,156,105, +172,136,217,245,108,243,212, 30, 1,229,200,108, 97, 33,217,193, 99, 36,159,199, + 97, 32,137,187, 76, 77,240, 22, 2,212,120,144,214, 51,209,118,168,240,214, 75, +208, 64, 23,207,202,175,217, 34,142,143,126,172,136,233,234,200, 88, 86, 23,184, + 5,132,171, 1, 12,188,245, 66,142,183,219, 65,159,144,144, 76,208, 82,166, 25, + 98, 39,236, 78,137,155,137,204,116, 67, 90, 22, 75, 56,100,196, 41,147, 97,100, + 33,164, 47,129,107, 39,182, 68,215,151,227,228,101,235,131, 81,117,231,236,129, +143,220,210,232, 0,131,246, 91,172,246, 64,178,216, 10,195, 77, 1,220,177, 65, +231,153, 71, 0, 66,157,221,109,216,226,153,213,162, 60, 13,113,193,223,240,218, + 88,143,189,178,140, 98,161, 43, 42,194, 65, 13,128, 89,194, 84,161, 6,129, 29, +219,118,247,225, 0, 54,183,127, 13,193,215,146, 67,197,152, 83, 56,238,195, 64, +128,225,211,128,110, 0,106, 60, 22,250,185,226,203,213,177, 14,154,146,202, 76, +107,201,197,230,145,123,145,220,243,195, 48, 85, 7, 96, 7, } ; -// ../Source/Template/GB_compiler.h: -uint8_t GB_JITpackage_80 [2493] = { - 40,181, 47,253, 96,109, 39,157, 77, 0, 74, 90,180, 16, 44,176,110,144,115, 8, - 17,189, 44,245,104, 56,100,186,164,109, 29, 78,116,238,161,240, 67, 39,195,189, -220,172, 66, 22, 10,221, 73,181,108,110,120,205,157,210,159,146,246, 99, 28, 2, - 1, 0, 1,242, 0,212, 31, 14, 88,119,176,116,162, 36, 73,210,164,109, 43,139, - 24,151, 44, 98,185,197, 11,185,217,149, 90,128, 33,208,132, 50, 82, 56,215, 36, - 35,241, 48, 44,190,135,137,200, 54,239,241, 32,197,190,228, 59, 51, 11,133,131, -201, 36, 51, 24, 63,229,114, 97, 38,150, 76, 2,226,135,144,216, 96,178,247, 38, -174,137, 4,246,222, 53, 17, 16,174,203, 2,210, 53,196, 40,154,191,178, 73, 54, -129, 89, 44,168,191,247, 62, 93, 59,219,238,179,111,123,139,189,141, 66,149, 47, -107, 11, 75,103,115,169, 84, 48,151, 5,195,222,193,178,199,255, 99,216, 4,134, -103, 55, 44, 30, 60, 13,197,146,101, 46, 17,216,135,181,249,233,134,197,163,178, - 28,188, 69,200, 93,151, 84,238, 79,223,201, 90,230, 96, 59, 57,182,197,209,153, -100, 42,141, 69,149, 45,107,110,239, 6,106,205,165,188,222, 40, 96, 61, 44, 7, - 2,200,195, 58, 21,167, 55,108,139,224,228,213,245,210,118,105,168, 57,111,108, - 46, 11,196,198,193, 90,145,176,173,144,219,240,237,110,179,176,147,246,133, 93, -161,232,103,169, 77,184, 93,178, 85,149,101,115, 33, 26, 31, 68,229, 14, 14, 11, -135,131, 67,204,177,166,149,224,168,243,188,193, 32,189,129,113,203, 33, 26,217, -115,138, 52, 93,151,202,165,201, 84, 88,120,111, 97, 8, 4, 43,247,204,101, 50, - 23,209, 96,193,231,172,117, 50,214,238, 46,112,141, 84, 74, 24,162, 40, 6, 13, - 40, 6, 12,166, 7, 8, 48, 85,180, 70, 24,186,237,237,158,222,107,172,105,240, -236,185, 38, 59,186, 89,207, 57,174,251,132,111,176,133,113, 98, 31, 90,249, 66, -169, 49,169, 63,236,185,148, 61,186,112,187,103,233,105,107, 41,119, 43,224,102, -127, 69, 61,172, 42, 2,185,157,236,136,231, 55, 23, 91,233,133,149, 57,250, 82, -133,179, 61, 19, 76, 4, 70,209, 38,188, 85, 0,115,240, 56, 27, 77,230,224,188, -221, 91,150, 30,104, 91, 59, 8,202,207, 53, 20, 10, 74,196,123, 27, 39, 2,234, - 60,167,159,107,179,163, 21, 86, 84, 74,241,105,109, 98,140, 71,229,237, 82,182, -142,199, 3,114,135,205,133,146,113, 58,109,173,187,155, 75,216,217,158,248,253, - 80, 75,107,236,203,230,242, 5,133, 51, 42,198, 41, 11,101,130, 98,121,128,113, -174, 12, 86,137, 32, 9, 76,133,226,108, 58,140, 95, 32, 50, 6, 53,192, 17,231, -216, 34,250,107,233, 86,145, 32, 91, 56,251,141, 55,168,200,244, 91,216, 76, 77, - 90,183,172,144, 15, 68,102, 59, 38,157,167, 28, 5,175, 64,154,112, 11, 13,175, - 53, 21, 73,224,233, 43,148, 48,218,179, 4,205,182,135, 28, 33,103, 43, 42, 29, -253,118,180,222, 81,154,240, 98, 89, 90,190, 37,207,166,115, 93,222,101,153,160, -247,140,161, 45,223, 14,181,100,174,116, 29,181,161,241,173,212,114,133,255,100, - 37, 88, 43,252,118, 65,147,165,131, 34, 33,211, 68,112, 48,202,196,162,162,182, - 42,118,229,201, 32,182,211,111,255,218, 46,100, 53,186, 93, 14, 53, 4,176,231, - 19, 70,206, 95,217, 59, 57,196, 23, 94,123,134,147,223,184,178,131, 37,207, 41, -202, 74, 56, 74, 77,103, 72, 8, 76,147,246,141,157,198,245, 22, 58, 54, 8, 76, -103, 72,254,233,138,211,209, 61, 95,200, 53, 54, 76,207,188,219, 6, 71, 39, 14, - 38, 49,161,104,222,228,146,109,222,108, 40, 27,138,160, 22,106,251,211,121,201, -123,183,108,187,198,157,176, 37, 4,130, 61,219, 96,174, 95, 58, 37,244, 86,155, - 1,156,139,226, 64, 34,131, 97, 40, 42,179, 47,141,218,119,114,136, 90,144, 21, -192, 18, 68,105,197,178, 44,203,178,172, 71,230,172,140,172,189,199,161, 84, 52, - 23, 71, 98, 71, 84,155, 77, 65, 77, 86, 1, 76, 70, 49,187, 15,169,114, 29,200, -159,215,113,241,175, 74,112, 84,154,240,236,145, 92,209,242,246,199,206,142,100, - 89,236, 97, 65,222,134,163,137,200,100, 34,143,244,102,249,254, 10,152, 44,130, -219, 51, 82,149, 96,210, 71,136, 8,189, 64, 21,177,212, 86, 6,129,186,222,223, -158,110, 81, 20,227, 67, 18, 65,198, 52, 77,127,143,111,231,233,122, 47,124,239, - 81, 29,168, 16,220,129, 5, 57, 96,117, 38,174, 7,100,194,208,173, 45,186,140, -112,114, 26, 11,246, 0, 24,120,120, 15, 9, 72, 47, 67,134, 83, 6, 30, 58,239, -242,144,160, 3,160,118, 55,242,237, 45, 86,248,203,160, 10, 13, 88, 15,136, 61, -101, 53, 30, 77,175, 98, 95, 24,162,183,131, 37,121, 35,215, 74, 35,107, 61, 58, -252,228,137,227,219,237,209, 53,219,175, 72, 64,100,149, 12,101,129, 60, 34,145, - 6,199, 38,156,205,123,211,130,186,237, 36,247,120,101,153,106,144,111,174, 7, -172,209, 24,130, 92,168,194,163,214, 41,167, 74, 72, 36, 41, 40, 72,210, 26,130, - 24, 4,225, 96, 22,168,131,164, 30,114,168, 68, 71,145, 64,101, 8, 81,136, 40, - 66,136, 33,134,144, 8, 73, 48,145,136,210, 20, 36,199,165, 42,136,117,149,222, -188,204,131, 84,149,162,171,205,189, 63,124,191, 50, 41,166, 4,232, 49,107,114, -199, 62,231, 63,168, 67,157, 51,176,209,110, 94, 37,117, 57, 70, 11, 89,115,195, - 53,232, 18, 35,135, 1,106,104,174, 6,129,235, 5,198,178, 8,143,150,150,110, -129, 66,247, 81, 23, 85, 29, 20,100,134,202, 63,190,115,129,250, 79,142,121, 68, - 21,124,234,140,239, 75,212,157,199, 24,198,197,162, 54,240, 96,190, 45,188,107, -223, 91,170,121,241, 2,131, 95,207,146,239, 27, 29,140,104, 96, 90,194,103,199, - 5, 45,209,100,132, 15,214, 55, 9,105, 45,103,138,249, 59, 26,240,165, 34,194, -110, 67, 44,225,111,195, 49,248,210,105,223,190,192,120, 75,242,119, 31,129, 7, - 9, 14, 3,202,176,134, 15,182,224,136, 2,132, 30,118, 92, 51, 72, 54, 26,176, -160, 83, 77,240,154, 34, 46,164,123,235,200,182, 95, 84,170,166, 19,205,161,171, - 92,186,198,129, 48, 97,130,110, 55, 28, 7,182, 72,239, 28, 0, 25,191,152, 22, -118, 26,121,175, 54, 26, 24, 56, 13,106,129, 30, 21, 22, 24, 23,247,197,196, 30, -230, 99, 93,132,206, 34,130, 11,201,212, 99, 37,141, 72, 50,144,119,250, 79, 18, -104, 75,158,226,142, 33,116,192, 57, 11, 28, 77, 43,112, 51,177, 12, 8, 10, 0, - 36,145, 47, 99, 90,238, 37,213,169,234,253,125, 39, 98, 55,206, 48,244, 8,237, -142, 58,149, 75, 85, 93, 92,229, 50,139,149, 81, 78,235, 13,177,185,159,144, 52, -159, 64,142,137, 84, 48, 13,197,120,120,203,178,103, 16,255,237, 19, 21,172, 71, - 34, 83,212,248, 0,244,151, 77, 38,119,226, 26, 19,225, 11, 57, 37, 79,128,104, -215,156,138,223,242,186, 96,104, 8,224,145,185, 84,158,150,224, 61,228,119,239, -117,201, 55, 12, 94, 26,186,190,172,211,210, 67, 18,174,217, 9, 26,103,183,213, -216, 50,112, 57,161,150,251,253, 83,212,255,245,222, 12,110, 67, 60, 21,245,105, - 55,138,232,181,152,185, 78,211,117,129, 65,123,193,195,128,187,186, 70,230, 82, -219,235, 42,215,252, 58,192, 88,105,246,147,214, 42, 21,177, 78,245, 28, 71, 36, -144,246,120,192,217, 0, 4, 20,242,212,134, 29,173, 20, 89,207, 37,136,149,119, -171, 35, 78, 6,129, 77,255, 66, 12,234,181,221,207, 40, 53,135, 18,172,227,162, - 5,207,159, 32,143,146,128,154,238, 70,210,166,205,187,245,183, 64,174, 44, 37, -163,103,146, 58,184, 59, 79,225, 31,119,242, 20, 68,207, 1,246,191,116,215,219, - 91,127,134,171,238, 27,139,235, 47, 96, 97, 94,151, 71, 95,213,239, 9,206, 79, -223,182, 79, 63, 3, 80, 34, 82,130, 60,246, 27, 57,241,237,223,110,204,160,139, -112, 94, 88, 91,136, 51,229, 81,150,151, 31, 92,166,131,222, 66, 61,172,229,189, - 1, 70, 83,238,212,128, 45, 89, 89,142,205, 92,186,235,143,170,186,132, 38, 59, -241,211,121, 6,204,205,108, 11,155, 38, 96,147, 72,227,248, 99,120,214, 19,151, - 63, 88,253,144,216,227, 48,232, 96, 4, 65, 38, 30, 87,231,228,171, 22,147,190, -161, 96,243,203,246,224, 30, 82,219, 78,132, 4,228, 48, 7,241,244,186,178,178, - 15,140, 6, 66,111,245,188, 38,143,171,238,142,196, 82,117,160,180,220, 52,248, -200,138, 22, 64, 96, 83,143,140, 91, 27,244,106,117,119,239,124,137, 36,249, 81, -220, 58, 54,140,188,133,224,133, 86,191, 18,158, 10, 91,130,188, 79,253,253,242, - 73,124,134,198, 12,143, 31, 96, 28, 7, 2,196,182,124,217, 33, 54,126,212, 48, -125,114, 50,110, 16, 13, 24,219,136,204,139,166,226,106,107, 55,211,195,171, 74, -168, 62,113,177, 1, 61,145, 97,184,121,239,152, 52,229,229,233, 86, 51,148,163, -188, 53, 18, 76, 15, 23, 11,218,132,196,113,164, 40,112, 0,182,178,221, 40,153, - 43, 52, 1, 19,246, 23,245, 49,142,143,147, 58, 93,206,204,113,172,138, 80, 44, -136,197, 44, 80,197,142,107,209,185,169,143, 16,194,104,234,233,244,247,158,253, -168,135,176, 60,203, 73,104,136, 15, 80, 78, 1,227,128,179,235,219,213, 0, 96, - 70, 64, 76,142,215, 92, 87, 22, 1, 88, 47, 22, 59, 80,254,215, 10,212,102,242, -116, 81, 50,219, 16,254,222,222,103,233,230, 73,143, 67,240, 68, 37,240,213, 93, -238,116, 2, 99, 84,200, 11, 93, 62,250, 76,239, 50,244, 89,151,209, 69,117,212, -149,134,131,182, 27,236, 75, 36, 63,121, 38,156, 90,147,157,144, 35,236, 16,236, - 17,225,159,186,176,173, 54,178,117,208,173, 53, 91,122,213, 42,244,146,171,149, -134,120,197, 80, 94,231,236,196, 16,156, 79,178,170,145,216,167,116, 53,147, 12, -205, 52, 43,189, 72,246, 75, 49, 58, 21,220, 1, 51, 63, 59,168,195, 34,118,235, - 26,149, 93,119, 22,212,164,105,188, 39, 78, 76, 49,248, 28,141, 35,240, 45, 89, -140,165, 79,248, 91,135, 73, 28, 70,232, 63, 49, 61, 82,127,230,184,163,192, 27, - 66, 42, 88, 5,180,245, 36, 8,227,209,193,241, 66,156,117, 44, 71, 3, 68,205, -202,221,112,167,249, 62,124,244,114,137, 29,167, 8, 39,107,209,105,185,206,249, - 33, 94, 16,167,214,151,206,164, 94, 63,139, 59,240, 86,246,183, 9,234, 15,185, -139, 38, 24,231,206,225,171,125, 47,210,251,231,130,255,224, 51, 94, 73,100,156, -121,187, 65,231, 24, 43,255, 3, 66,197, 23,114,212,178,187, 92, 92,177, 52,143, -208,204, 91,184,221,253,251,251,102,130, 87, 51, 88,219, 11,143,122, 67,212, 31, - 94,247,223,204,189,224, 91, 1,119, 24, 17,161,194, 75,201,243,141,135, 82, 88, -105,223,216, 7,113,224, 86, 27,110,177,172, 92, 24, 29,146,128, 26,237,245, 32, -236, 9, 46, 7,194, 37, 77, 30, 77,238, 18,178, 13, 13, 54, 71,183, 83, 52, 46, -162,132,198,144,199,248, 3, 64,140, 80, 35,109,225,108,240,147, 42, 29, 96,112, -240, 73,160,193,101, 34,242,129,251, 76,141, 96, 91, 67,203,251, 23,158,196,120, -181,239, 3,242,236, 18, 11,232,252, 32, 85, 49, 61, 83, 14,192,221,252,191, 59, - 31,134, 25,199, 94, 18,102,124,227,232,196,215,147, 96,117,245, 47,228,109, 17, - 38, 69, 46, 16,130,161,170, 49, 9,120, 50, 90, 68,105, 92, 7, 77, 92,203, 76, -183, 32,172, 61, 15,164, 11, 53, 16,144, 58,166,219, +// ../Source/Shared/GB_mxm_shared_definitions.h: +uint8_t GB_JITpackage_58 [1360] = { + 40,181, 47,253, 96,100, 23, 53, 42, 0,198, 53,164, 40,176,208,217, 28, 61, 55, +193, 62,251,137,120, 85, 52, 60, 84, 15, 61,166,245,242,176,253,169, 88, 43, 23, +127, 45,145, 39,151, 79,126,208,127,176,244,131,115, 1,148, 0,150, 0,159, 0, + 34,126,131,249,223,164,176, 69,157,119,134,141, 79,169,124,166,163, 60,110,111, +138,236, 21, 47, 25, 64, 34,143, 6, 59, 41, 90,159,220,158,223,204,181, 61,236, +209,184,118, 55, 55,143,144,229, 3,241, 90,116, 27,119,118,156, 65,139,153,157, + 82,235,148, 36, 98, 16,121, 40, 84, 6,145, 59,186,233, 20,158, 34,105, 57,196, +250, 8,204, 54,156,219, 41,205,218, 80, 64, 81, 94,204,164,241,149,162,214,121, +142,154,132,105,215,219, 24,167, 12, 88,191,246, 59,182,183,147,225,171, 13, 67, +219,125, 2, 66,112,181, 51,207, 58,191,246, 56,175,175, 4, 49, 23,106,132, 28, + 5,243,130, 2,233, 81, 80, 16, 87,198, 57, 52,154,138,215,158, 90,203,208,180, + 98,180, 94,150,150,126,167,110, 91,116,174,115, 58,214, 64,155,207, 55,189,218, + 1,146,193, 49, 29, 44,195, 56,151,198,113, 26,150, 97,214,135,131,232, 88,239, + 38,181, 21,225,168,146,164, 12,167,117, 60,216,134,117,176,203,101,225, 44, 87, +102,101, 52,142, 19,226,212, 15,192,155,182, 90,128, 75, 18,100,195, 52,150, 5, + 84, 1,125, 42,175,242,148,215, 89, 62,250,138,167,186,121,187,182,197, 71, 21, + 63,158,223,126, 72,211,249,225, 41,208,222, 72,187, 58, 3,110,243,175,157,158, + 64, 7,188,118, 87, 60,219,250, 22, 73,240,184,177,236, 78,229,236, 58, 88,165, +197, 81,222,144, 29, 62,237,218,235, 43,109,253,228,255,165,106, 49, 49,150, 84, +118,243,118, 56, 86, 10, 37,187,182,205,242, 26,227,238, 58,105,253,179,199, 61, + 82, 41,210,104,182, 75,187, 92, 60,149,198,210,241, 84, 46,237, 84,133,101, 23, +182,249, 96,219, 6,196, 57,158,191, 86,180, 31, 81,113,102, 58,134,214,214,185, + 56,215,230,195,193, 56, 78,179, 50,156,204,181,195,249,200,181,143, 84, 8, 33, + 7,235, 85, 30, 75,240, 33,139,163,217,180, 12,187,112, 29,140,115,144, 16,145, + 84, 46, 24,140,114,144, 16,145,124, 46,160, 83, 7, 9, 83, 68, 18,145, 36, 84, + 9,213, 2,104, 97,235, 96,220,198,227,161,100,158,208,102, 99, 5,213, 29,211, +228,152,254,217,222,152,248, 3,211,116,136, 19,193,165,137,231, 83,211,127,125, + 32, 54, 46, 2,146,241,157, 57,227, 49,204, 35,190,157,235,180, 98, 87,199,143, + 26,137, 93,216,225, 41,236, 89, 48,119,120, 12,196,155, 86,148,109, 61,229, 53, + 30,223, 21,183,249,248,121,118,147,138, 26,253,190,115,204,232,219,184,193,141, + 82,217,152,118, 64,245,142,199, 62,227,190, 20,196,167,194,185, 56,115, 82, 61, +106, 83, 2,113, 66, 96, 89, 62, 32,130, 59, 46,102,118,101, 54, 11,147,169, 57, +133, 50, 51,147, 41,113,218,176,236, 33,191,225, 20,162,196, 53, 42,142,139,217, + 77, 87,102,109, 42,151,133,211, 4,129, 52,168, 1,150, 66, 70, 35,146,148, 20, +150, 10,195, 1, 97, 8, 49, 12,130, 10,235, 28,178, 88, 60, 9,161, 36,130, 33, +136,177,144,128, 24,227, 8, 65,136, 68, 73, 36,146, 36,202,204, 7,111, 26, 70, +192, 95,163,250, 68,216,183,241,159, 75,236,200,186,117,182, 18,123, 98, 25, 84, + 68,107,206,199,162, 63,231, 23,182, 56, 28,105,231, 70, 8,137,112,175, 84, 66, +156, 98,236, 65,146,223,118,224, 38,116,102, 66,157,132, 13,134,128,163,159,226, +134, 68,132,199,132,195,121,130, 14, 52,237,218,233, 29,216, 1,218, 28, 79,163, +111,132,151, 30,183,203,148,239,109, 71, 77,121,100,162, 30, 13,105,160,207,203, +208, 10,190,166, 72, 42, 99,131, 97, 76, 41, 14,147,213, 87, 70,223,169,224,163, +110, 80,225,235, 28, 66,168,140,147,193, 90, 16,255,215, 21, 91,199, 23,120,180, + 37,215, 61, 14,110,196,220, 35,207, 38, 5,204,162, 36,205,136,155,123,202, 75, + 58, 51,128,139,138,119,203,239, 33, 93,187, 55, 2, 73,198,200, 66, 80,156,149, + 32,142,233, 38, 80,208,170, 3, 89,243,202, 8,141, 60, 38,125, 0, 50, 1,141, +193, 46, 10, 24,219,111,190, 43,174, 93,240, 34,103,163,197,134,129,248, 74, 26, + 39,201,137, 86, 83,103,179, 99,172, 2,200,141,188, 57, 37, 30,180, 69,118,140, + 56, 74, 91,109, 89, 6,170,190, 32,217, 83,117,100,125, 94,178,229, 67, 77,108, +218,181,208, 73, 18,132,237,240,190,241, 9, 67,192,215,255,142,201, 55,182,197, +186,124,159, 97, 6,113,151,222, 44,155,204,206,119,217,132, 82, 27, 62,120,134, + 65, 69,201,185, 38, 49,129,188, 44, 14, 72,245,237,153, 44, 58,226,240,245, 22, + 75, 70,254,237,159,247,253,145, 67, 70,185,197, 18,130, 27, 25,151, 40,136,252, + 38,135, 81,160, 43, 4,137,220,244, 9,199,112, 51, 49,218,114, 38, 32,250,102, + 13,140,100, 22,218, 97,227, 58,219,178,195, 72,250, 55, 99, 28,164,251, 94,166, +128, 28,221,239,199,221,109,161,212,157, 86, 57,101,138,189,165, 50, 65, 47,177, +117, 95, 16,212,156, 75, 41,197,119,219,206,186, 12, 50,236,201, 92,118, 99, 89, + 81, 43, 9,156, 58, 47, 82, 88, 89, 38, 83, 66, 22,120,104,204,113,119,132,133, + 74,183,118,204, 13, 51,101, 99,152,200,185, 27, 68, 50,152,150, 72, 69,218, 81, + 6, 19,185,104, 54, 29,181,241, 65, 92,231, 21,240, 18,147,101, 92, 40,174, 43, +200,169, 75, 31, 44, 29,172, 10,168, 6,164, 32, 77, 1,225,245,255, 25,149,246, + 9,210,124,190, 87,134,177, 61, 33,195, 3, 81,103,127, 1,232, 49,250, 14, 5, + 69, 85, 66,137, 34,204, 37, 79, 14,109,217, 96,198, 76,115,227,237,101,120,122, +145,117, 76, 76, 5,101, 35,163,106, 44,240,228, 87,118,123, 32,175,154,230,181, + 74,188, 97,139,155,224,120,122, 16,141,174, 12, 45,250,217, 35,220, 72, 61,240, + 1,129, 22,234,155,190, 96,143,212,233, 47, 16, 11, 90,192, 78, 72,185,202,189, + 35, 61, 89,206,225, 12,162, 91,204, 52,202,134,137,254, 75,194,181, 60, 21,155, +165, 14,235,194, 2,139,102,254,153,105,114,194,193,122,151,176, 82, 90, 97,155, + } ; -// ../Source/Template/GB_concat_bitmap_bitmap.c: -uint8_t GB_JITpackage_81 [432] = { - 40,181, 47,253, 96,254, 2, 53, 13, 0, 38, 90, 80, 32,240, 24,231,240,113,107, -181,191, 37,164,147, 34,164, 20,115,105,245,243, 95,138, 33,166,120,242,191, 58, -197, 97,145,196, 83, 47, 72, 0, 72, 0, 69, 0, 95,188,150, 64, 24, 16, 4,198, -193,128,120, 54,177,107,184, 81,146,242, 66,188,202,203, 33,216,156,107,155,120, -153,120, 86,222,138,131,226, 43,237,134,230, 62,109,174, 84,223, 44,193, 48,215, - 62,253, 58,255,242,149,222, 97, 37,152, 59,212,101, 57,107, 56,187, 73,229,219, -118, 17,182, 45,141,199,179,148, 4,187,107,166,122,242,230,181, 85,149,216,164, -242,200,177, 72,210,235,229,218,197,231,218,207,184,134,243,255, 47,214,101, 40, - 32, 8,212,155,210,198, 59, 46,237, 81,231, 74, 69, 22, 2,197,149,206,190, 16, - 58,148, 76, 65, 68, 81,151, 98,170, 57,206, 30,169, 53,255, 2,172,193, 96, 85, -229, 33,143,246,143, 27, 30,121,180,216,255, 43,155,157,101,198, 24,253, 78, 34, -234, 77,252, 12,235,192, 83,253, 13, 71,255,232,247,201, 43,237, 45, 24, 94,130, - 36,121, 45, 32,218,231, 78,177,200,181, 67, 18, 66,124,228,161,248, 60,251,102, - 76,175,224,185, 11,215,213,186, 90,135, 16,151,133,184,187,120, 45,218,107,156, -197,238,201, 96,184,110, 82, 73, 69, 16,103, 63, 79,113,223,182,121,193, 57,174, -109, 9,213, 31, 60, 95,153,113,207, 71,206,245, 86,122,188,210, 15, 37, 31,120, -180,143,188,207,202, 64,209,126, 30,138,216, 71,253, 43, 41, 32, 96,100,198,208, - 14,249,192,214,176, 68, 68,155,238,196,220,118,190, 22, 27, 64, 60,169, 11, 2, - 11, 24,171,248, 78, 85, 8,158,128,219, 61, 98, 12,250,131,149,112,107, 20,140, - 91, 18,229, 97,110, 48,127, 1,109, 19,154, 64,209, 10,231, 72,135,170,221,118, - 92, 26,185,247, 15, 97, 55,104,106,158,153,210, 6,202,106,253, 3, 50,214, 33, - 50,216, 88, 0,167, 12, 76,207,152,162, 96, 8, +// ../Source/Shared/GB_opaque.h: +uint8_t GB_JITpackage_59 [5059] = { + 40,181, 47,253, 96,150, 94,205,157, 0, 90,148, 52, 28, 45,144, 16,157,109,170, +127,207,100,147,150, 64,106,101,228,132,228,161,187, 11,215,235,241, 15,193,197, + 72,195,171,236,112,236,191,239, 29,139,198,138, 0, 0, 0, 0, 8,145, 8,128, +174, 1,191, 1,193, 1,147, 80, 66, 81, 35,180, 66,104,125,208, 91,183, 99,163, +156,198,222,245,225, 92,174,213,214,150,125, 72,243, 59, 21, 24, 69,195,241,157, + 43,232,137,135,193, 71,242,134,232,218,105,223, 31,181,181,176,109, 72,114,115, +131,196, 2, 32,194,113, 54, 77,139, 24,135,116,245,172,247,164, 54, 33, 44,200, +198,116,208,186, 88, 63,187,182, 17, 58, 84, 31, 31, 75,195,209, 96,203,168,249, +128,203,184, 13,195, 92, 32,241, 45, 59,108,227,128, 18,166,143, 54,147,103,174, +183,116,137,139, 45,190, 29,206,166, 51, 22,197, 74,226, 93,243,123,132,134,161, +129, 65, 57,248,131,195, 56, 38,243, 69,114,196,222,117,121, 49, 84,226,207,154, + 94, 20, 93,171, 11, 72,190, 43, 22, 65,170,178, 58, 25,202,228, 17,145, 68, 46, + 7,228, 17,177, 40, 7,232,154,112, 91,230, 85,208, 19,248,181, 94,192,138,176, + 88,192, 41, 75,227,112, 44, 84,229, 18,238,221,103,252, 53,242,235,210,255, 98, +255,110,117,234,218,198, 22,173,195,242,138,206, 85,172,158,246,135,229, 31,186, +187, 51, 48, 48,198,242, 62,215, 89,178, 70,255,135, 61,143,240, 92, 67,207,191, +191, 34,171,111,249,228,185, 61,187,127, 12,183,205,213,243,239,107, 49,233, 25, +131,254, 89,177, 94,248, 46, 67, 78,249, 91, 88,209, 43,159,197, 23, 12,198, 52, +153, 78,117,157,228,151, 70, 27, 96,146, 79,166,244, 2, 24, 20, 29, 6, 98, 64, + 59,156, 11, 90, 1,140,234,225,106,124,232, 85,146,122, 37,191, 5,237,190,255, +101,141,215,247, 61,171, 53, 42, 48,157,135,239, 47,242,235,247,184,222,161,200, +122, 92, 20,169, 83,142,171,186, 26, 18,171,186,124,242, 36,167,180,189,168, 24, +127,160,126,134, 27,143,150,115,234, 67, 53, 75, 72,214,172,169,188,206,149,252, +252,182,229,135,161,183,247,163, 16,118, 7,177,235,139,237,182,215,130,255,121, + 37,124,248,178, 66, 37,113,103,209, 56, 4, 4,163, 1, 1, 17,156,121, 86, 19, + 79,131,114, 78, 62, 32,173, 99, 86, 73, 5,189,118,140, 88, 16, 79, 70, 59,162, +205, 53,111, 27,202,213,191,223,222,139,175,157, 58,205,199,131,237,116, 96, 54, +206, 5,251, 80,151, 13,117,220,199,147,101,118, 73, 90, 93,127,172, 58,151,251, +179,239, 26,110,159, 78,234,130,219,208, 36,169, 36, 7, 40,218, 4,147, 72, 68, + 24, 96, 0, 32, 27, 6, 26,217,234, 95, 82,143,204,178,225, 64,216,222,134, 70, +124,193,125,227,155, 63,220,142, 10, 53, 89, 13, 45, 98,239, 86, 44, 3, 22,167, +169, 84, 84, 69,114, 90, 69, 48, 13, 4, 49, 0, 74, 38,195,145,152,148, 19, 18, + 16, 69,243,142,104,153,135,123, 77, 53, 44,164,147,105, 25, 3,162,106,191,198, + 67, 67, 51,140,136,189,145, 67,107,184, 5,156,189, 50, 25,176,210, 5, 49, 63, +219, 85, 96,152, 45,115, 80,177,184,101,184, 71, 16,214, 47,118,209,181,223,125, +242,191,140,125,139,165,126,143,254, 92,110, 79,103,175,203,206,252,239,218, 73, +163,211, 1, 39, 64, 64, 98, 66,114,134, 4,159, 36, 12,211,225, 60,240,208, 13, +212,125, 50, 14,200, 58,104,253, 41, 11,251,140, 42,200,104, 68,177, 12, 88, 19, +235, 18, 18, 62, 77, 35,202, 74, 84,178,157, 36,219, 56, 25,151,125, 56,157,143, +122, 68, 50,246,203,177,175,173,136, 85, 99,242, 35, 92,182,101,153, 91, 47,100, +163, 27,104, 31,143, 76,118,222,138,113, 72,148,171,195, 67, 69,117,180,151,134, +110,178,139, 69, 49,207,119,235,231, 15, 45,140, 46,174, 30, 10, 54,206,229, 20, + 47,222,247, 47,126, 10,102, 89, 23,207, 62, 27,117, 16,123,213,218,238, 91, 71, +167,204, 12, 78, 42, 60,153,144, 39,113, 88, 46, 17, 48, 63, 36,227,193, 54, 87, +199,177,138, 68, 7,221,108,168, 70,187, 58, 86,167,178, 42, 71,101, 89, 35,197, +218, 92,147,203,187,101,222,146,203, 6,242,112,223, 45,113,142, 96, 54, 16,199, +147, 49,196,195,225,104, 25,209,254,227,210, 50, 76,228,216,128, 54,205,101,213, +234,162,148, 15, 1,252,191, 82,244,174, 21, 16,225, 26, 10,112,153, 2,234, 65, + 91,170,114,208,134,165, 67,132, 79,216, 48,173,195, 54,116, 51, 53, 17,252,218, +202, 35,194, 45,138,240,251, 98,247, 99,189, 16, 16, 21,101, 81, 96,196, 93,254, +175,126,168, 35,118,231, 32,228, 58,107,206,213,201,137, 6,213,167,184,239,231, + 92, 94,220, 31,244,247,225,112,255,232, 91,227,113,255,185,241,189,213,243,240, +253, 15,133,215, 71, 32, 18, 47,226, 69, 68,209,173,159,227, 77,138, 31,126,198, + 96,120,123, 86, 84, 71,255,144,187, 34, 96,100, 34,113, 72, 30, 18, 72,228,146, +152,149, 63,220,114,255,119, 86, 11,213,169,239, 47, 88,177, 90,191,161, 87,223, +255,179,218,171, 34,153, 63, 52,150,215,207,123,201, 52,251, 98,111,162,225, 21, +127, 45, 86,208, 17,248,164,105,160,109,202, 83,102,145,190,107, 45, 64,236,245, +195,205,153,184, 11,166, 97, 31,202, 68, 18,129, 60, 22,108, 32, 10,206,129, 93, +156,102, 97,149,131,211, 80,168, 9,199,131,225,235, 20, 37,137, 64,168,199,133, +243, 95,112,188, 93,111,177,172, 30,161, 75,252,121, 5,131,113,244,130,121, 58, + 24, 70, 34, 57,166,102,202, 44,214,226,184, 70, 35,235, 82, 96, 85,151,197,118, +223,197,222,107, 74, 54,154,140, 70, 18, 5,150, 1, 43, 98,157,212,214,217,130, +144,236,115,245,211,134, 76,239, 81,161,117, 54, 21,167, 72,243, 63,209, 97,117, +180,147,196,222,245,160,195,185,228, 58,126,182,232, 6,243,124,120, 4, 43,139, +179,201,108, 76,158, 33,133,227,116, 30, 80, 92,147,139,147, 68, 32, 15,135, 70, + 81,215, 68,195, 57,147,147, 64, 27,106, 43,147, 81,124,178,232, 85,149,229,209, + 46,154,242,217, 47,154,112,152,230,110,144,108, 25,155, 20, 34,223,173, 4, 32, + 25, 59,149,225, 97,113, 84, 92,244,148, 60, 67, 6,159, 42,203, 83, 81, 36, 40, +152,230,192, 68,243, 9, 9,167, 1, 16,193, 78, 83,130, 48,192,220, 2, 38, 31, + 14, 76, 15,196,213, 32,195, 56, 88,216, 38, 11, 12, 6,104,191,251, 2, 44, 22, +139,197, 34, 89, 44,148, 82, 74, 41,165, 18,165,155,205,102,179,145, 54,155, 79, +252,176,195,104, 24,197,133,123, 37,252,167,151, 62, 26,109,176,117,110,241,204, +253, 34, 93,186, 90,209,226,223,252, 22,126,134, 62,227,236,105, 70, 37, 69,112, +147, 98,109, 59,106, 82,169, 34,100,133, 72, 42, 68, 37, 11, 25,193,237, 0,159, + 72, 75, 82,150, 74, 89, 24, 82, 33,149, 40, 38, 88, 68,240,138, 79,146, 59,248, +100, 65,222, 23, 47, 42,101, 65,145, 25, 87,173,223,243,232,120,249, 92,252,203, +245,187,117,107,183, 26,103,168, 97,121, 37,196, 62, 30,218,249,120, 48,157,195, +144, 37, 37, 60,204, 76,146,139, 98, 9, 78, 83,104,162, 1, 64,242,137, 74, 29, +186,225, 24,100, 29,183,165,166,195,248, 90, 79, 52,180,105,142,172,209,126, 23, +160, 21,177, 55,178, 14, 25, 95, 75,126,151,236, 30,194,135,107,253,193,100,220, +255,139, 26, 78, 38,229,223,223,173,173,168, 95, 36,203,253,222,120,225,148,174, +116,110,165,170, 30, 1,234, 92, 42,127, 97,119, 21,253,253,108, 87,146,162, 10, +168,163,193,219,195, 91,128, 89,199,238,234, 17,103,210,181,128, 73, 75,185,179, +185, 79,114,204,109, 94,234,174,212, 36, 57, 57,218,209, 28, 63,167,238,206, 88, +119,248,203,175, 59, 83,115,177,213,250,179,248, 58,100, 86,139, 53, 81, 22, 7, + 42,113,161,146, 95, 91, 93,107,161,119, 73,238, 18, 55,232, 62,188,221,179,224, +214, 57,127,126,145, 8,139, 21,253,241,190,129,105,243,174,161,183,235,184,189, +106,190,235,241,183,245,135,147, 54,123,250, 49, 17, 34, 89,142,250,251,170,139, +174,205,118,252,143,158,240,149,124, 91,243, 27,167,152,235,139,227,133,137, 6, +137, 35,206,109, 73,156, 63,139, 47,222, 56, 60,156,162,182, 30,122,150,242,108, +254,251, 34,175,142,183,174, 30,227, 67, 78, 81,231,165,166,181, 4, 8, 3,134, + 48,168,195,199,179,162,101,108,102, 36, 73, 82,200,178, 6, 3, 52, 17, 12, 20, +149,141,198,154,162, 85,123, 19, 1,179,136, 36, 14, 26,133,132, 81,158,163, 48, +152, 98,140, 24, 34, 18,136, 4, 34, 66,193,164, 81,154, 29, 0,140, 61,251, 9, +197, 70,214,171, 73,128, 17,233, 52, 56,135, 2, 90,112,100,163,197,143,114, 27, +147,159, 85,192,136, 16,170,201,240,140,166,177,193, 40, 36, 3, 48,116,110, 99, + 50,203,119, 69, 38, 38,197, 36,192,192,228, 52, 40,131, 17, 88, 75,143,106, 60, +241, 14, 17,193,160,150,226,103, 44, 44,211,193, 35,231, 13, 56, 63, 59,125, 61, + 46,232,233, 98,133,152,250,144,160,118, 71,156, 3,119,209,228,134,147,124,178, + 18,204,141,171,211, 14,150,196, 45, 49, 57, 23, 56, 81, 98, 53, 5, 47,201,179, + 66,202,188, 41,120,168,128, 48, 19,235,187,212, 96,117, 60,235,210,130, 61,232, + 96,207, 63, 64,171, 1,156, 3, 24,113,121,108, 71, 36,244,186, 64, 66,239, 52, +214,228,248,205, 42, 86, 14, 92,166, 24,133, 95,170, 20, 58,154, 76,241,204, 54, +174,105, 41,181, 27,223, 64,179,223,207, 40,218,130,137,111,223,190,211, 65, 57, + 61, 72, 72,186, 23, 53,175, 32,155,152, 45, 23,135,197, 27, 71, 6,236, 72,156, + 74,118,134,170,119,132,219,115, 73,120, 90, 17,167,181,109,138, 4, 75, 48, 3, +124,158, 47,222,193, 37, 35,135, 86,111, 37, 60,189, 22, 16, 56,104,122, 4,254, + 36, 1, 63, 46,100,138, 35,128,147, 88, 10,129,117,111, 10, 41,138,231,128, 97, + 61, 23,183,174,114, 46,130, 98,200,160,116,247,192,191,159,196, 24, 43,171,136, +237, 62,170, 76,158,225, 71, 12,115, 19, 46, 77,220, 3,228, 60,215, 8,241,116, +158,175, 89,142, 34, 50,254,226,189,162, 50,133, 24, 6,171, 64, 26,205, 72,250, +237,233, 2,240,162,200,185,116,160, 90,142,220,237,250,202,229,151,213, 36, 50, +154,122,185, 8,123,224,154,201,238,141, 93, 64,119,225, 8,138,189,187,232,232, +106,200,234, 74, 86,111,240,177,249, 18,173, 12, 47,144, 2, 49, 76,130,140,251, + 95,232,173,157,119,145,217,151,215,182, 69,242,107,119,132,131, 64,202, 22, 95, +111, 90,147, 62, 94,163, 41, 55, 52,191, 28,124, 95, 84, 42, 54, 20,148,142, 61, +181, 16,113,154, 96, 17, 85,133,131, 22,154, 31,105,129, 8,210, 43, 72, 87, 16, + 12,174,120, 16,127, 18,125,209,139, 4, 89, 4,156,162, 56,203, 30,247, 73,106, + 60,137, 3,192, 54,211, 46,191,126,199,100,218, 17,146, 83, 3,198,141,244, 93, +101, 72,120,167, 62,200,101, 83, 87,193, 59,156,179,253, 15, 31,141, 8,129,176, + 63,153, 33, 72,129, 22,197, 2, 93,162,166, 99,239, 49, 37, 20,179,126,123,207, +174,190, 79,105,213, 57, 68, 59,237,214,209,251,232,253, 87, 97,151, 58, 83,201, +114, 48, 62,247, 5,247, 73,250, 44, 93,212,247,229,192,243,244, 89,228,156,253, + 73,186, 28,184,144, 35, 23,124, 13,183,148,176,169, 64,179,189, 65,114,124, 84, +233, 84, 58,122,228,100, 1,194, 10, 84,116,142,220, 64,123, 9,238, 52, 17, 42, +239, 1,164, 0,228,112,214,150, 40,231,137, 29,239,242, 79,208,133,240,170,209, +201,253,120, 98, 64, 31,223,247, 80, 79, 95,153, 61, 66, 0,201,100, 23, 47, 65, + 96, 85,108,124, 72, 20,146,124, 76, 25,146, 78,109, 25, 44,178,170, 24,173, 19, +118, 17,183,130,120, 58, 18,102, 10,126,223,139,241,181, 87, 26,139,228,191,132, +181,118,149,108, 26, 70,254,228,112,207,121, 77,137,182,166,135, 66, 30,110, 84, +237, 70,203, 28,208,166, 0,202, 60,240, 3,155,107, 3,189,174, 17,245, 79,130, +138, 8,142,165,130, 55,118, 94, 43, 71, 90, 41,159,241,231,190,173, 56, 32,162, +236, 38, 24,139, 46, 14, 79,235, 76,169, 63,125, 27, 99,132,118,160,251, 71,203, +246, 57, 86,169,200,165, 64,124, 61,147,205, 14,216,181, 88,180,160,177,106,218, + 9,189,206,229,232,154,251,255,111, 32,110,210,109,243,189, 10,219,224, 1,230, +190,223, 80,120,224,218,118,139, 9,134, 80, 26,122,150,123,215,220,154,157,155, +222,111, 1, 88,252,246, 50, 55, 82, 34,161, 74, 24, 81, 69, 9, 4,192,249,206, +250,141,208,123, 43, 66,108,128, 97,196, 28,253,128, 22,230,136,207, 92, 41,221, + 30,199,105,209,146, 60, 58,174,110,224,180, 63, 62,210,200,229,182,218,133,202, +134,244, 75,215,212, 41,116, 24,134,151, 10,152,245,102,215, 35,214, 93, 18,175, +165,171,171,159,234, 14, 33, 74,115,136,196,185, 79,188,118,100, 87,169,137, 8, + 71,106,215,228, 80,246,109,209,104, 93,239, 40, 64,233,221,248,112,141, 24,155, + 5,165,173,128, 34,135,133,208, 17,104,110, 50,151, 20,221, 25, 1, 52,144, 14, +157,178,119,209, 96, 97,116,115, 68,138,183, 90,171,138,187,199, 49,243,152,156, + 64,153,240,177,129, 31,236, 65, 59,162,232, 7,165, 87,169, 10, 87, 85, 91,149, +167, 72,185,117,134, 81,195,132, 68, 60,149,138,245,139, 69,249, 51, 60,112, 24, +151,125,181,138, 13,130,161, 51,107,208,156,207,129,113,207,116,250,157,140,136, +247,254, 59,143,179,136,150,155, 37,151, 11,169, 69, 76,194,192,136,186,177, 22, +101,131,127,100, 63, 88,199,182, 58, 95,114,110,162,235,220,165, 60,221,150, 81, +253,199,122,251,205, 98, 47,251,168,139, 96, 2,134, 50,218,126,243, 11, 94,230, +128,205, 67,103, 18,120,124,176,179, 97,183, 11, 88,165,126,210, 9,110,196,195, +124, 5,205, 35, 47,144,254,174,133,251,205, 95,230, 9,204, 77,181, 20,121,251, + 1,254, 22,122,234, 26, 30, 44,146,117,250,209,142,224,215,140,137, 28, 7,157, + 4,210, 29,234,230, 50,185,202,208, 93, 21,117,183, 55,181,195, 45,181,251,104, +229,145,187,182,185,186, 70, 94,130,237,128,145, 90, 41, 70,133, 62,146, 21,193, + 48,119,100,121, 61, 89,219, 6, 40, 56, 9,219,141,193, 18,227,197, 67,129, 90, +101,198,192,154, 58,126,183,132,178,230,216,165,102,119,214,236, 47,113,227,163, + 39, 55,138,119, 89,254, 52, 83, 22,204, 75,232,144,225, 57,142,107,162, 57, 86, +178,235,248,105,194, 1,155, 16,153,188, 99, 17,144, 9,180,118,215, 6, 51, 94, +204,255,176,124, 9, 7,217, 35,177,195,181, 68,103, 75, 3, 0,115,247,177,196, + 46, 16,130,221, 64, 68,154, 49,168,150, 96, 82,212,186, 94,239, 28,226,160,159, + 46,245,112,103, 48,120, 55,113, 38, 19,135,136,133, 33,189, 25,145,227,147, 17, + 11, 50,246, 56,233, 66,184, 13,232,200,162,137, 10,184, 25,146,165,165,172, 24, + 52, 76, 75,216, 50,228,182,221,162, 25,163, 77,131,205, 95, 4,245,186,111,250, + 6, 69, 89,214, 32,124,195, 47,215, 8,119,143, 52,190,142,183, 19,120, 80,215, +218, 78, 30, 63, 85,151,151, 61,226,133, 62, 24, 85, 66, 41, 47,240,105,177,165, + 79,202,163, 24,251,238, 19,101, 20, 9, 8, 60, 30, 3,118, 16,227, 34, 23,163, +132, 6, 95,201, 73, 9,235,130, 96, 91,228, 22,187,149,216, 29,133,217,202,191, +255, 41, 25,201,231,132, 80,222,148,157, 30,150,224, 8, 19,156, 48,166,104,255, +229, 59, 35,161, 84, 22, 8, 9, 69, 48,161,142, 15, 83,117,227,160, 95,249,173, +199,231,104, 37,213, 2,243, 7,158, 2, 20,242,230,186,158,193,162, 26, 84, 83, +250,191, 12,108,138,195,195,201, 79,201, 57, 69,121,185,232,174, 82,235,200, 82, + 55, 17,234, 33, 74,157,200,174,110, 74,204,112,255, 58,214,149,246,235,176, 53, +205,101,128,133,101, 72, 59, 25,247,158,195,156, 88,254,154,205,173,180, 16, 94, +108, 63,222,231,124,243, 28, 43, 87,211,152,121, 77,224, 79,166,192, 35,244,228, +161, 69, 62, 30, 54,154,239,201, 7, 51,207, 76,208,125, 70,150, 37,132, 85, 78, +204, 34, 47, 8, 69, 85, 39, 25,254,192,198,137, 13,123, 62,144, 43,149,222,128, +204,196,252,107, 80, 6, 46,244,229,235,199,250,191,141,240, 4,227,191, 70,110, +176, 45,181,115, 4,153,142,248,122,196, 45, 52, 41, 87,128, 13,137,213,213,174, +248,187, 54,227,148,236,191, 95,201,226,184, 37, 27, 13, 65,193,214,173,102, 8, +219, 60, 93,139,225, 9, 88,125, 29,232,144,104, 24, 32,140,204,133,107,115, 82, + 70,254, 14,200, 90,185,109,113, 22, 96, 73,125, 45,176, 40,146,145, 98,232, 16, +175, 96, 52, 71, 98,212, 43,164, 39,157,230, 11, 58,235, 1, 66,118,132,116, 23, +155, 99,219, 58,233, 99,130,244, 57, 9, 50,118,210,240,175,147,142, 30, 37,251, +101, 24, 7, 56, 70,227, 45, 77, 69,247,120,195,238,134,149,210,144,228,215,179, + 51,208,107,160,242,199, 41, 25, 12, 19,226, 6, 73, 14, 42,224, 72,182, 13,232, +240, 33,197, 20, 81, 49,160,203,192,109, 18,230,221,188, 80, 63,118,166, 84, 41, +243,247,222, 58, 42,226, 81,180, 0,114, 55, 77,147, 98, 1,228,140, 51,208,109, +192,207,161, 9,242, 50,146,226,202,138, 73,146,215, 64, 85,245, 45,142, 91,107, + 48, 87, 67,222, 29, 76,200, 53, 27,223, 20,171,177, 70, 97,158, 38, 94,120,232, +224, 79, 70, 77, 12, 66, 95, 96,153, 48,168,133,195, 96, 29, 8, 10,194, 23, 7, +231, 98,167, 54,110,149,160,172, 25,207,107,138,163,100,159,136, 33,120,184,121, +221,222,134,105, 97, 74,225, 12,218, 16,184, 68,117, 30,236, 26, 11,241, 97, 64, +129, 31,160, 12, 81, 37, 8,247, 43,239, 23,175,173,193, 70, 65,118, 65,199, 24, +119, 44, 97, 94,171,135,115,176,254, 5,111, 31,140,118,124,242, 34,176, 96, 56, +178,111, 67, 27, 24, 45,157, 81,207,174, 0, 12,233, 95,107,163,186,178, 30,221, + 59,237,183,200, 35, 67, 76,206,173, 42, 31,142,248,156,188, 44, 87, 40,113, 39, +209,127, 27, 5, 68,159,172,134, 86,157, 48, 21,229,192, 12, 75,126, 28,158, 32, +230, 26, 78, 98,252, 89, 9,154,225, 84,129,114, 50, 63,243,109, 33, 97,212,209, +113,124,207,123,250,130, 73, 51,136,103, 78,190,109, 76, 28, 49, 16,133,197, 55, +110,168,186,232,135,246,237,180, 44, 40, 18,221, 37,239,138,166, 5, 13,188, 27, + 86,206,142, 14,165, 79, 17,227,192,143, 19,189,168,118,119,225,246, 89, 86,104, +194,235,206,251,187,124, 53,243,165, 53, 20,166,169,108,195,137,110, 53,176,188, +152,252,199,127,179,241,219,202,136,249, 70, 18,233,242,130, 68, 82, 96, 9,130, +144, 87,126,253,225, 51, 95,242,105,133,110, 44, 76,203,153,150, 11, 82, 47,159, +153,138,106, 4,234,207,242, 9, 59,199,159, 97,206, 86, 22, 15,100, 35,249,154, +127, 19,221, 91,104,238,164, 43, 1,211,141, 45,113,225,151, 38,241, 15, 13,250, +154,101,235,174, 64, 73,235,164, 0, 69,182,143,241, 97,220, 70, 67,232,212,156, +191, 33,163, 36,185, 13,127,165,220, 19,123, 92, 16,144, 31,228,159, 48, 1,135, + 2, 50,146,146, 53,202,162,119,102,131,118,228, 71,232, 50,219,103,195, 7, 43, +227,251, 13,153,253, 52, 71, 29, 67, 80,187,235,181,240, 6, 17,146, 19,170,102, +182, 85,181,187,132,141, 66,110, 48, 36,144, 90,178,249,124,196,229, 86,105, 31, + 67,249,102, 58,105,158, 4,220,230,107, 61, 53,169,229, 75,116, 72,154,116, 73, + 52, 50, 3, 18,196,113,254,144,151,148,215, 11, 65, 84,152,209, 8, 23,183,116, + 94, 96,216,145,254, 31, 77,179,236, 15, 2,112,179, 7, 15, 88,195, 33,195,172, +209,246, 73,147,109,138, 23,250,187,158,166,103, 35, 99,165,223,189,162, 83, 26, +180, 49,165, 53,148,148, 89,253, 55, 50,235, 30,191, 31, 74,205, 26,208,164,212, + 74,243,223, 95, 18,167,191,162, 30,160, 85,252,193, 88,102, 97,221,212, 40, 66, +182,142, 47,188,204,173,199,207,218, 44, 50,232,209,179,170,196, 57, 6,255,186, + 7, 47,129,184,185,228,229,111, 66,201, 9, 12,241, 34, 44,210,206, 47,251,214, +239,197,125,201,188, 19,195, 44,222,220,108,213, 34, 47,243, 37,165,173,163, 18, + 69, 4,213, 36,188,130,106,200,211, 45, 57,184,197,242,138,179,238,155, 15, 16, +116, 76, 25, 36,102,246, 3,131,227,238, 58,126, 17,181,215, 88,136,199,132,125, + 67,249,144,227,150,172,167,139,236,124, 69, 76,243,182,123,136,244, 62,172, 91, + 61,181, 54,157,178,155, 94, 13,215,186, 0,179, 45, 11, 21,138,155, 81,186,147, +192,164,182, 74, 35,212,106, 50,107, 21, 78,235,205, 84,181,137,151,199,147, 48, +140,126, 45,139, 41, 64,170, 49, 96,108, 22,109, 74,214, 70, 77,144, 16,210,100, +229, 12, 95, 80,116,191,242, 94,163,174, 96,177,154,230,177, 57,215, 42,130, 85, + 97,119, 61,200, 31,182, 96, 11,195,194,209,244,176,184, 77,174, 59,142,194,199, + 88, 29,107,100,235, 81,129,139,176,196,232,165, 97,195,117,121, 53,248,215,198, +104,131,142, 56, 62,190,173,129,213, 93, 58,194,116,118, 14,221,167,252,117, 94, +223,200,103,167,192,170,142,246,217,174,157,164, 64,166,147,167,213,140, 6, 32, + 11, 99, 28,142, 94,119,186,252, 97,147,195,117,183,138,141,163,150, 17,113,236, +140,121,193,104,185,144, 16,152,184,178,209,133,154,242,189,102,129, 6,140, 1, + 36, 14, 52,241, 1,113,216, 64,144,131, 88,146,198,150,144,242,203,113,196, 56, +228, 52, 58,254,185,136,194, 37,251,122, 81,173,208,249,196,233, 55,133, 13, 35, + 94,227, 91, 17, 7, 88,120,205, 61,143,108, 66, 7,138,106,125,197,121, 38,106, +197, 21,168,250,237,202, 49,102,214,228, 69,151, 10, 66,152,199, 0,172, 12,136, + 10,171,154, 76,171, 99,226,166, 71,153, 52, 51,167,150,255, 55,161,167,189,159, +100,242,192, 40, 12,100, 9,191,202,104,136, 48, 2,146,220, 45,152,131,131,249, +213,128,243, 43, 83,252, 67, 4,134,155,102,245, 60, 80,101,126, 40,175,183,112, + 61,240,209, 77,186,120,135, 95,167,189,120, 66, 38,212,234,182,190,118, 81,118, +111, 84,218,109, 99, 6,139,207, 0,187, 17, 23, 1,190,106,229,157, 46, 85,138, + 55,237,221, 13,229, 16, 88,232, 55, 12,233,163, 2, 17, 8, 89,164,240, 55, 51, +238,227,188,131,226, 57, 69,231,213, 65, 4,234,229, 41, 80, 97,214, 7, 87, 57, +135,253,169, 29,116, 47, 65, 0,123, 58,237,102, 12,219, 56,158, 51, 16,186,196, +165, 77, 8, 22,171,192, 42, 97,110,134,188,218,159,112,121,150,234,111,216, 28, +173, 65,193,126,152, 48,149,152, 67,195, 8,229,133, 17,182,244,194,163,191, 2, +142,112, 80,104,224, 25,200,106,125,141,113,220,219,250,157, 83,139, 56, 10, 30, +152,162,172,227,181, 51,155, 63,152, 47, 23, 41,138, 6, 73,161,184, 99, 53,145, + 27,187,195, 99,109,254, 73,247, 65, 9, 81, 73, 20,232,200,214,117,222, 34,210, +231,155,163, 4, 0,138,248,176, 2,242,227, 89, 53,227, 82, 9, 20, 68, 15,116, +208,180,211,101, 38,225, 32, 99,100, 23,116,113,129,181,169, 22,249, 54, 7, } ; -// ../Source/Template/GB_concat_bitmap_full.c: -uint8_t GB_JITpackage_82 [401] = { - 40,181, 47,253, 96,138, 2, 61, 12, 0,246, 87, 74, 33, 0,151,115, 22,190, 38, -235,218,246,129,244,186,203, 44, 29,116, 84, 31, 58,169, 15, 47, 41, 62, 98,237, -179,255,255,123,127, 8, 1, 64, 0, 66, 0, 63, 0, 24,166,164,142,156, 16,111, -234,242,231,209,204, 49, 76,164, 64,186,219,160,132, 49, 49,216, 23, 51, 51, 13, - 49, 85,137,130,185,189,191,255,101, 75, 63, 43,205,127,223,206, 51,106, 13, 65, -220,109, 47, 83, 15,151, 91,218, 79,114, 16,201, 53,173,202, 52, 45,159,158, 96, -151, 45, 23,159, 45,125,198,246,147,255, 95,161,170, 2,225,144,205, 78,246,141, -103,128,147,130,104,182,243, 51,201, 38,182, 83, 82, 74,166,137, 88, 8,159, 73, - 2, 39,158,151,227,220,133,232,229,181,198, 99,136, 67,225,144, 45, 12,133,195, - 47,105, 61, 47,252,241,120,173,255,213, 37,105,238,140,173, 89,195,207,236, 36, -254,101,113, 94,104, 15,126,160,215, 89,107,131,125,127,189,239,237,133, 26,188, -128,120,159,185,132, 34, 91,218,248, 85,106,143, 59, 54,178, 97, 39,143,157,108, - 91, 16,201, 31,199, 1, 85,149,170, 82, 6,207,118,125,152,114,241, 88,188,199, -182,107,125, 99,169,108,157, 24, 59,219,229,188,180, 93,211,228, 5,223, 54,122, - 69, 36,250,193, 51,216, 25, 83,249,199, 55,170,137, 26,183,179,146,250,129,199, -233, 81,131,193,201,246, 29,143,247,141, 38, 32,112, 38, 32,202,243,121, 22,129, - 4, 43,217,120,176, 0,196, 23,187,197, 8,116,184,214, 1, 67, 90,172, 36,211, - 25, 92,193, 1,189, 95,199,192,136, 35,159, 88, 71, 8, 91,217,176, 25, 98,190, - 5, 20, 33,230,111, 17,209,236,168,137,142, 54, 35,251,253, 99,176, 27, 52, 55, -207, 76,109,227,236,106,125, 3,226,222,224, 23,214, 24,128, 63, 14, 67, 81,224, - 6, +// ../Source/Shared/GB_partition.h: +uint8_t GB_JITpackage_60 [404] = { + 40,181, 47,253, 96,228, 2, 85, 12, 0,118,150, 69, 32, 16,179,115, 63, 35,144, + 35, 88,139,216, 18,207,165,216,237,201, 58, 94,130,152,140,247, 61,126, 69, 96, + 68, 0, 0, 8, 24, 4, 61, 0, 63, 0, 57, 0, 30,154,184,132, 61,164,221, 78, +211,147, 79, 9,214, 64,104, 27,234, 41, 46,254, 60,186,145,240,237,142, 4,114, +198, 82,239, 32,174,182,111,233, 51,182,239,117,217, 63,219, 25,215, 95,154,100, +187,190,125, 61,186,177, 32, 20,159, 38, 24, 77, 83,142, 7, 99,194,152, 68, 48, + 72,198,213,102, 13,128,148,100, 69,172, 97,232, 6,251,229,113,103,125, 45, 87, + 70,196,159,101, 76, 55, 34, 74, 2, 34, 85,246,120,252,113,228,223,213, 50, 29, + 57,199, 97,159, 3,139,178, 34, 66, 69, 89,151,152,248,249,117,220,165,211,213, + 24, 31,184,140,241,255, 97,229, 82,237,251,251,121,157,125,125, 57,237,172,125, +227,165,175, 82,246,180,107,167, 9,134, 56,142,118, 56,252, 42,178, 23,117,214, +238,185,182,167,235,127, 85, 75,207, 0,184,176, 4, 16,102, 93, 45, 3, 32,156, +149, 64,218, 88, 69, 86,225,211,254,243, 58, 92, 82,191,193,112,195,171,173,246, +157,118, 90,219,172,182, 40,171,200,218,226, 85,109,182, 59, 95,234,241,166, 59, +199,245,231, 82, 78,151, 82,218,120,201, 1, 46, 32, 64,132, 8, 76, 29, 31,224, +134,155, 33,134,242,193,225,185,200,134,181,223,176,204, 75, 46,137,209, 29,248, +173,127,100,221, 13, 34, 64, 4, 27,227, 18, 78,255,194, 12,192,249,110,203, 2, + 55, 27,238,189, 97,117,172, 23,156, 97,129,213, 39,186, 19,221, 11,168,142,118, +188,132, 71, 76, 34, 66,105,229, 90, 6,195,125,177, 67,150,128,160, 0,244,125, + 93,255,177, 86, 51,104, 50,207, 76,181, 81, 90,109,159, 0, 5, 48,133, 69, 90, +172,168,115, 3, } ; -// ../Source/Template/GB_concat_bitmap_sparse.c: -uint8_t GB_JITpackage_83 [717] = { - 40,181, 47,253, 96, 35, 6, 29, 22, 0,214, 98,107, 32,224, 28, 23, 3, 24,151, - 69,201,197,185, 35, 73,201,157,162,130,246, 0,119,100,178,249, 21,177,195,187, - 19, 49, 70,230, 24,227, 98, 0,100, 0, 97, 0, 3,171,177, 13,175,102, 32,154, -120, 8,162,117,149, 86, 91,240,122,143,168, 11,158, 36,231,187, 4,194,128, 24, - 48, 14, 6,196,185,112,123,167,175,171, 78, 78,152,135,141,155,181,186,160,119, -159,169,145,140,185,150,149,143,221,183,245,209, 94,183,220,117,245,215,179, 54, -190,183,228,221,127, 61,182,111, 88, 93,214,172,105,174,171,125, 77,116,215, 16, -179, 66, 42,169,188, 80,208, 6,133, 66, 31, 78, 36,237, 72, 99, 24, 79, 52,159, -133, 67,167,227, 90,165,107,167,197,106,203,113, 99, 58,127,186, 34,182,158,142, -199,226,171,209, 76,250,125, 32, 5,183, 28,231, 54, 85, 44, 54,190,239, 80,248, -134,151,212, 84,101,233,220,254,129, 83,227,125, 19,154, 1,191,144,230,227,128, - 95,134,130, 46,152,147, 21, 79, 23,240,255,154, 38,211, 12, 4,196,192,142, 97, -205,243,141,210,222,211,221,216,138,151, 91, 87,210,241, 18,233,118, 82,200,183, - 46,239, 73,117, 77, 38, 16, 60, 28, 55, 28,178,113,225,221,117,235,205,146, 45, -209,142,161, 62,183,209, 85, 11,191,100,157, 78, 90,146,172,101,205,207, 43,214, -235, 10, 85,203, 44,222,125,239, 56,102,200,243,252, 14,111,185,181, 45, 3,223, - 26,179,194,119,161,117,225,200, 96, 94,240,119,135,119, 25,176, 19,162,162, 11, - 8,154, 27,250,121, 23, 77,154, 54,155,105,179,131,201, 59,199,210,215,203,219, - 71,158,142,247, 42,121, 47,239,133,194,189, 0,242,153, 73,191,127, 56,126,200, -103,158,108, 46, 31, 58, 55,149, 9,122,184,131,160,227,234,179,167,187,214,189, - 19,177,125, 55,243,246,233,161,160,175,130, 45, 25,184,119,169,151, 83, 23,124, -151,117,107, 87,232, 57,206,169,222,141,115,251,164, 22,200, 83,143,171,238,120, - 37, 31,121,168, 49, 45,132, 2, 27, 25,145,180, 32, 41,181, 6, 64,132,144, 98, -118,117, 2,217, 36, 21,177, 44, 21, 16,145,161, 0,149,164,124,237,103, 3,192, -164, 33, 39,233,202,148,194,233,150, 7,227,145,105,109, 65,232,122,249,185, 60, - 47,238,109,253, 49,158,234,155,208,173,118, 90,237,202, 55,105,154,238, 67, 86, -200,179,177, 76, 98,201,208,163,148, 49,104, 17, 49, 18,214, 86, 55, 36, 82,123, - 17, 93,130, 35,112, 62, 55,191,129, 38,146,232,216,130,233,106,185,131,150,221, -200, 1,104, 38, 44,118,157,217,161,112,227,221, 40, 60, 91,253,150, 83, 32, 93, -227,164, 81,133,216,242,102,169,171, 7, 75, 91,253, 0, 55, 74,192,102,160, 65, -136,114, 69, 75,112, 65, 70,218, 88,149, 12,177,151, 97, 50, 42, 39,190, 6,135, -148,219, 35,101, 86,221,139, 31,204, 28, 93, 10,201,151, 44,204, 6, 33,148,191, -128,232, 71,130, 54,255, 22, 38, 23, 61,182,224,165, 16,121, 0, 58, 90,242,234, -164, 97,241,215,191,101, 49,202,111,249, 99,214,209,179, 82, 29, 68,214,155,169, -221, 44, 83,162,139,149, 96,161, 24,227, 83,183, 32, 58,104,162, 85, 96,218, 74, -201, 0, 45, 10,255,240, 56, 69,167, 64,251,186, 12,243,122,112, 76, +// ../Source/Shared/GB_pun.h: +uint8_t GB_JITpackage_61 [371] = { + 40,181, 47,253, 96, 32, 2, 77, 11, 0, 38, 85, 64, 31, 16,149,115,231, 77,110, +182,132,103, 62, 91,185,179,136,150, 3,254,141,193, 67, 34,235, 55, 62,232,136, + 0, 0, 16, 56, 8, 61, 0, 54, 0, 51, 0, 24,227, 19,226, 80, 56, 80, 9, 67, +225,112,129, 37,125,154, 11,122,142, 87,140,143,174,206, 62,123,249,100, 97, 72, + 26,151,246,228, 67,161, 83, 62,205,162,189,155,197,117,120,249,170,141,250,138, +171,226, 77,219, 52, 30, 39, 16, 28, 69, 32, 4,240,239,243, 29,106, 63,149,253, +185,215, 13,123, 32,236,239,211,213,155,113,133,234, 64,233,101, 61,141,113,133, +212,141,219,172, 48, 66,233,100,181, 86, 66,105, 28,148, 10, 42, 72,234,212,202, +103, 95,157,173, 28, 11,115,251, 64,181, 84, 42,100,200,239,147,212,230,205, 52, +193,224,210,223,179, 62,212,158,114,163, 94,253,152,125, 78,149, 16,190,235,117, +249,171, 14,111,207,103,101, 28,122,111,156, 79,205, 42, 53,198, 13,206,197,133, +172, 82, 64,186, 52,144, 46,152, 54,229,141, 10, 1, 14,178,153, 96, 40, 81, 33, +199, 5, 56, 87, 5, 62,223,167,217,123,245,188, 86,140,179,115,114,122,191,224, +108, 53,145,242,187,114,222, 25,191, 3, 41, 32, 48,132, 24,196,152, 29,135, 0, +128, 2,144, 26,196,141, 52,234,177,183,173, 17,235, 65, 66, 97,123,102, 32, 32, + 92, 31,205,128, 42,141,114, 51,241, 64, 81,145,225, 18,142, 89, 20, 3, 36,232, + 88, 1,249, 27,145,155, 12, 44, 72,124, 0,123, 1, 54, 65, 98, 7,175, 67,105, +141,150,230, 56,128, 67,224,225, 48,164,244,122, 52, 58,200,166,217, 60, 51,105, +123, 91,173,187,131,234, 31, 32, 40,122,221, } ; -// ../Source/Template/GB_concat_bitmap_template.c: -uint8_t GB_JITpackage_84 [586] = { - 40,181, 47,253, 96, 64, 7, 5, 18, 0,182, 89, 81, 32,240, 88, 55,208, 69,138, -162, 47,207,144,131, 73, 49, 47, 49, 84,161, 40,212, 33, 68,125,249, 62, 43, 63, -136,195, 34,193,162, 66, 69, 0, 72, 0, 73, 0, 93,200,246, 68, 41,109,152,173, - 2, 95, 12,237,214,133,208,220, 76,192,145,146,151,135,103,146,142, 33,127, 91, -134,174,148, 37,159,134,221,180,197,199,182,253,218,111,218,254, 20,123, 63,252, -233, 29, 67,127,110,164,225,219,142,123, 90,177, 88,185,201,165,179,236,194,178, - 44, 26,110,195,100, 62,247, 62, 27,152, 14,126,123,152,182,214,239,165,238,238, -190, 46,214,117, 48, 36, 48, 7, 43, 29,103, 63, 72,183,159,125,236, 30, 6,243, -140,189,218, 13, 54,162,124, 12,158,159, 72,207, 14,234,252, 96,201,130,250,222, -217, 5, 69,226,144,192, 26,136, 67,162, 7, 85, 16, 14, 77,211, 82, 3, 65, 71, - 58, 53,251,171, 37, 63, 59, 73,232,202,135,180,109, 83,235,120, 52, 14,127,214, -195, 87, 20, 59,207,215, 3,180, 9,145, 94, 97,170, 85,236, 23, 34,193,102, 71, - 58,180,222,137,246,115, 11,198, 99,219,159, 61, 33, 12, 55,197,108,185,217,142, -237,166,210, 1, 85, 2,215, 44, 3,215,213, 34,125, 84,129, 77,138,253,183,164, -159,123,144, 54, 81, 39,187,206, 89,214,143,158,164, 46,237,153,214,193, 96, 10, - 90,245, 22,172,111, 81,185,149, 61,127, 38,103,195, 76,174, 3,170,225,222,242, - 3,180,123,229,173,120, 35,178,112, 44, 77, 53,138, 21,210, 93,247, 92,107,160, -241,169,161,161,161, 73, 81, 81, 10,173, 1, 80,132,204,212, 25, 55,181, 4, 81, - 6,189,145, 66,146, 57, 73, 14, 25,200, 36,119,176, 33,239,128,225, 59,120, 54, - 57,198,249,209, 28, 52,194, 50,135,194,158,146, 99, 19,151,132,217,214, 97, 33, -163,194,226, 27, 92, 89,250,105, 62,102,142,209, 96,220,194, 93, 69,229, 66, 5, -158,110, 35,200, 87,145,115, 95, 44,208,103,201, 93,140, 96,212, 29,251, 35, 58, - 9,172,144,114,116,157, 26,204, 7,197, 52, 70,188, 0, 28,211,209, 4, 8,175, -160, 56,146,166,211,104,251,166,135, 18, 10, 18,255, 57,100,252,225,225,220,134, - 7,224,201,226,176,102,214,197, 8, 67,127,172,131,128,182, 9,216,104,232,112, -132,160,108, 88, 61,183, 37,182, 96, 6, 11,252, 88, 1, 45,219, 82, 22,232, 24, -229,135,241,117, 83,230, 24,143,158, 21, 1,112,225,193, 54,134, 28,251, 90,163, - 5,161, 69,255,234, 99, 87,250,160,229,159,249,130, 80,245,226,195, 66,161,168, -177,148, 89, 36, 7,244, 28, 52, 25,149,153,210, 55, 92,177,107,134, 36,206,112, -250,126,248,138, 22, 39, +// ../Source/Shared/GB_select_shared_definitions.h: +uint8_t GB_JITpackage_62 [393] = { + 40,181, 47,253, 96,118, 2,253, 11, 0,150, 23, 72, 31, 16,147,117,176,245, 14, +175,180,109, 92,129,187, 33,249,246, 95,123,203, 10, 49,197, 93,131,151,161, 23, + 17, 0, 64,149,222, 63, 0, 64, 0, 57, 0,242, 82, 79, 99, 46, 97,213,132, 33, + 55, 87, 33, 11,182,213,109, 24,223,254, 96,145,213,120, 86,238,252,149,198, 91, + 90,159,243,124, 82,143,135,190, 47, 36,101, 39,237,219,179, 35,195, 12,114,117, +210,102,247,177,198, 54, 99, 64, 94, 40, 68, 83,161, 16,145,225, 45,195, 6,209, +186, 61, 50, 80,136,137,229,115, 91,245, 69,229,142,125, 39,195,107, 98, 59,249, +245,100,210, 88, 22, 10, 50,168,178,229,203,237,149,156,190, 92,211,170, 75, 9, +132, 1, 49, 41, 14, 6,196, 9,111,112,201, 54,200, 89,167,170,135, 2,147, 57, + 15,109,126,219,199,252, 20,107, 29,111, 91, 94,206,108, 1,195,143,246,102, 7, + 78,239, 43,237,186, 29, 10, 56,240,201,188,249,165,243, 12,114,242,150,173,123, +215, 92, 63,222,236, 89,222,199,190,164,105,238, 87,251,184, 81,108, 56, 57, 16, + 25, 94,193, 46,106,187,113,136, 34, 25, 70,169, 92,152,139,114, 61, 28, 86,102, + 57, 46, 85, 4,203, 48, 13,199,196,129, 69,134, 51, 2, 0,143, 34, 10,115, 73, + 94, 89,153, 70,198,210,184,188,116,115, 56,221,165, 80,165,247,185,120,233,117, +229, 35, 32, 48, 66,130, 20,149, 7,115,129,137, 4,169, 7, 0,220, 49,194,211, +148, 29, 73,198,147, 88,166,198, 1,106,221,189,112,213,197,202,248,166, 27,130, + 1, 0,191,146, 65,130,152,113, 4,193,225,189,244, 32, 46,253,164, 99,216,241, + 18, 94,105,209, 54,212, 41, 79, 28, 7, 32,218, 98, 44,199,238,155,161,103, 38, +196, 50, 10,172, 99,134,142,201,192,160,162, 96, 8, } ; -// ../Source/Template/GB_concat_full_template.c: -uint8_t GB_JITpackage_85 [561] = { - 40,181, 47,253, 96,179, 4, 61, 17, 0,134,221, 90, 32,240,218,230,224, 56,132, -148,154,154,216,142,137,118,121,144, 25, 12, 16,180,167, 14, 39, 9,240, 9,167, - 56, 44, 98,161,149, 10, 82, 0, 78, 0, 81, 0,161, 83, 26,111,104, 48, 20,140, - 3,100,161, 96,124,192, 9,110,192,147, 37, 47, 71,196,187,190, 28,130,115,116, -131, 40,118, 44,159,149, 55, 19,105,124,165, 21,117,158, 43, 81,214,154, 55, 75, - 48,204,117,190,233,204,191,124,103, 89,251,145,206,146, 90,176,243, 70,233,202, -219,178,228,106,200,109,150,204, 19,137,236,144, 72, 4,156,109,164,217,120,221, -121, 19, 16,251,203,185, 83,255,255, 44,131,101,120,245, 28,214,227,249, 46,252, -114,131,199,243,203, 55,132,120,190,175,124,124, 87,229,181,123,154, 76,129, 96, - 28,250,227,164,141,143,220,158,222,204,181, 59,205,161,113,109,110,118, 14,164, - 11, 8,209, 53,235, 54,238,208,113,254, 82, 51,222,105, 83, 42,175,180,183, 96, -120, 9,166,228,181,209,106,154,166,181, 6,130, 83,222,138,207,220,188, 25,247, - 37, 28, 3, 42,141, 50,111,118,149,134, 33,170, 49,109,128,198,201, 19, 40,127, - 85,112,118,146,202, 33,158,242,218,148, 37,159, 55,199, 35,215,249,140, 63, 34, -205, 22, 67, 60,183,248,174,179,131,241,132, 48, 1, 89,230,117, 87, 87,128, 44, -139,101,177,129, 33,218, 27, 52, 43,120, 9,244, 57,197,147,102, 77,137, 4,119, - 66,225,218,180, 42,214,124,225,249,202,140, 39,119,202,181,153, 80,201, 7, 40, -159,135, 21, 10, 19,201, 21,167, 60, 90,193,128,155, 89,102, 44,104,186,234,250, -227,240, 7,117,139, 2,220,201,190, 95,222,192, 85,253, 13, 3, 80, 32,112, 68, -134,206,234, 1,226, 28, 64,100,192, 44,219, 11,100,150,207, 65,137,178, 37, 36, -186, 15,235,188, 65,178, 8, 48,172, 30,112,163, 89, 71, 98,146, 24, 95,192, 17, -122, 89,231,192,196,167,101, 2,199,131, 53, 8, 99, 32, 52,108, 14,209,239,144, -218, 94, 48,235,168, 2, 36, 21,194,141, 76, 34, 39,141,124, 25, 63,196,198, 81, -152,132, 16,111,159, 16, 52,224,232, 92,194,192,118,205,129, 63,214,123,127, 3, - 50, 34,132,158, 1,126, 30, 36,106,168, 15,155,207,196,218, 26,209, 25,169,192, - 0, 26,230,192, 95,197,221,117,178,192,187,122,124, 61, 37, 0,216, 12, 10,147, - 80,194, 14,224,240,208,141,150,120, 80, 38,106, 25,200, 6,144,167,213,181,108, -154, 29,194, 76,235,224, 96, 13,190, 41, 50,212, 71,224,139,151,196,156,162, 96, - 8, +// ../Source/Shared/GB_unused.h: +uint8_t GB_JITpackage_63 [449] = { + 40,181, 47,253, 96, 62, 3,189, 13, 0,166, 25, 80, 32, 0,183, 27, 22,161,215, +248,158, 49,194, 70,177,137,253,103,198,194,211, 52,252,242,210, 32,136,178, 94, + 84, 85, 45, 8, 12, 8, 70, 0, 69, 0, 73, 0, 7, 30,100, 2,166,236,139, 58, +194,132, 7,151,184,251,121,207, 97,234,122, 88, 32, 28,216,117,210,112, 91, 27, +188,252,126,120, 69,187,209,167,181, 71, 92,189,123,208,251, 50,246, 46,212,246, + 39,127,151,109,123, 91, 87,144, 27, 28, 97,186, 13,105,136, 65, 38, 92, 85, 81, + 86, 85,108, 61,251,180,185,204, 61,166,223,223,174, 78,125, 99,159,220,101,237, + 99,183, 97,103, 14,137, 5,194, 65, 58,151, 53,248,224, 70,245,215,254, 82,159, + 21,233,150,122,246, 22, 9,138,104, 8,211, 69,213,173,111,216, 94,110,251, 13, +119,221,131, 41,196,161,112,144, 11, 67, 33,167, 19, 91, 86,165,243, 64,140, 3, + 54, 20, 12, 9,110, 8, 56,240,253, 12,239,197, 93,135,246, 61,124, 93,170,138, +153, 57, 70,235,186, 96, 27,137,165,162,185,100, 44,167,175,249, 12, 68, 10, 22, +145, 92, 29, 76, 71,243, 73,181, 15,196, 72,240, 44, 83,243, 63, 81,243,253,168, +215,102, 75, 5, 49, 2,166,155,190,235,191, 79, 95,251, 73, 29,240,181, 69,242, +186,149, 55, 12,201,143, 4,240,244,250,246,163, 91,255,228, 65,130, 29,140, 97, + 86, 7, 51,193, 48, 1,107,159,253,165, 61, 29,236,122, 73,222,117,253,217,172, + 9,130,161,224,197,194,128, 24, 73,206,178, 7, 5, 45, 32, 32, 66,131,152, 85, + 30,115, 3,247,131,214, 20, 40,128,193,205, 70, 5,200,250,105,127, 82, 25,140, +135,235, 5, 12, 26, 8, 29, 30,235,134,142,239, 0,157,129, 68, 6,119,139,135, +107,159, 57, 87, 26, 15,243,181, 93,145,182,127,173,140,200, 36, 70,104,142, 25, +130,252,247,114, 81, 49, 21,192, 48, 0,174, 91,204, 15,231, 10,161,147, 26,145, +199,145, 24,144, 90,243, 80,193,202, 91,224, 67, 14,254,166,217, 60, 51,173, 77, +129,213,154, 39, 16, 10, 21, 5, 67, +} ; + +// ../Source/Shared/GxB_complex.h: +uint8_t GB_JITpackage_64 [712] = { + 40,181, 47,253, 96,179, 6,245, 21, 0,214, 33,105, 33,240, 88, 55,192, 9,121, +240,238, 22, 57, 40,149,243, 14, 39,101,183, 23,119,121,212, 43,181,126, 28,193, + 82,100, 19, 65, 19, 26, 2, 95, 0, 89, 0,100, 0,250, 62,181,152, 44, 52,225, +104,245, 79,249,245,119, 92,239,145,100, 59, 78,146,157, 27, 18,220,129,203, 24, +136, 3,231, 24,189,220,160,237,105, 78, 92,235, 92, 53,110, 92,178, 30, 55, 56, + 94,231, 89,130,191,173, 9,180,244,151,170,237, 14,118, 24,201, 88,206,108,241, + 31,183,103, 44,186,190,216,110,123,173,248,213, 29,163,150,122,178, 44, 97, 26, + 74, 82, 22,223, 54, 43,219,182,186,220,123,116,252,107, 51,245,219,183,225,210, + 79,252, 31,116,215,242,214, 78,186,215,122, 29,124, 53,145,244,218,128,255,200, +239,164,254,164, 21, 93,219,171, 88,212, 59,125,135, 92,194,171, 24,240,118,173, +159,210,233,186,254, 95,207,120,207,252, 37,246,250, 89,126,109,242,233,226,103, + 29, 52, 46,251,145,206,178,115, 71,126, 43,218,125,191,126,217, 7, 26,133,235, +181, 32,223, 34,214, 56, 83,155,193, 28,179,104, 58,140,175, 86,152, 15, 67,241, +104,190, 48,188, 0, 46, 16,120,135,242, 9, 61, 48, 19,250,229,238,238, 86,192, +186,132, 33, 10,134,147,217,120,161, 36,100,113,241,235, 21,109,192,178, 2, 13, +110,129, 56, 40, 20, 13,196,134, 51,250, 58,255,254,113,103,215,102,212,238, 47, +141,219,230,153,109,154, 30,141,112,205, 85, 67,161, 80,219,230, 8,150, 37,218, +122, 63, 96,137,182,222, 15,112, 9,236, 11, 9, 94,112, 12,203, 23,118, 93,216, +117,137, 14,123,112,245,227,234,116,102,176,115,218,194, 41, 37,205,146,191, 54, + 85,176,235,201,145, 9, 87, 47,116,223, 19,147, 34, 2,225,249, 7,106,186,215, +228, 35, 28,220,116,188, 46, 19,130,221, 37,148, 96, 94, 73,107, 26, 93,142, 89, + 67,190, 42,161,212,228, 81, 9, 63, 83, 4,226, 94,119,160,193, 45, 98, 68, 70, +100, 36, 41, 73, 10,105, 12, 48,134, 16,114,138,206, 3,158, 49,158, 76,143,151, +191,176,145,179,183,235,177,133,148,131,250, 11,135, 3,238,167, 12, 57, 99,172, +178,133,120,120, 0,200,110, 64, 86, 26,208,121, 53,111,251,131, 8,167, 69, 96, +177,238,186,213, 78, 42,178,176,222,102,164, 40,223,237,205,240,139,181,165, 53, + 34,139,213,172,172,195,212,172,169,214,122,155,241, 58, 17, 81,176,200,127, 8, +203, 59,145,101, 33,114, 80, 8,178, 71, 80, 10, 88,100,214, 88,210,118,144, 77, + 34,157, 7, 88,142,110, 15,178, 3,125,208, 1,218,182, 78, 66,113, 11,176, 0, + 0, 88, 68,225,135, 59, 22,200,170,246, 90,139,183,232, 92, 50, 5, 88, 83, 74, + 38,183,160,251, 91, 42,127,189, 72,165, 11,190,220,140,144, 63, 43,132,183,138, +183,177,163,127, 90,228, 65,131,251,162,104, 3,102,125,112, 80,140, 50, 67,130, +146, 6, 28, 36, 3,117, 3,185,133,165, 98, 86, 8,154, 28, 42,224,117, 65, 10, +220,161,150,107, 64, 26, 88,142,140, 7, 32,160, 11,142, 1, 34,193, 99, 3, 0, +136, 98, 62,170,136,229,180,152,194,250,235,220, 52, 55,234, 77,111, 21,127,109, + 66,139,112, 73,209, 30, 76,220, 82, 20, 56, 1, } ; -// ../Source/Template/GB_concat_sparse_template.c: -uint8_t GB_JITpackage_86 [1015] = { - 40,181, 47,253, 96, 35, 13,109, 31, 0,166, 44,133, 39,224,178, 86, 7,228,235, -235, 61,178,179, 77,125,124,249,229,130, 91,145, 3,119,239,157,115,174,103, 65, -181,177, 13, 68,249,136,151, 38,204, 16, 37,198,132,123, 0,120, 0,119, 0, 52, -132,221,246, 27, 99,156,168, 66,185, 76, 24,171, 32,109, 63,168,220, 87, 95,201, - 86,102,194, 86,114,213, 18, 19,140, 5, 13,197,226,142,202,150, 45,110, 47,230, -105,139,199,216, 62, 13, 92, 42,151,137,129,165,114,121,164,146, 62,217,238,128, - 11,167,180,135,176, 59, 63,205,249,180,105, 18, 10, 24,133,213,225, 96,195,183, - 65,155,232,163,235,133,159, 31,126, 94,217,231,216,247,240,124,161,228, 31,240, -133,145,126,248, 62,182, 21, 82,251, 46,172,228,172,158,130,195, 5, 4,162,137, -128, 64,153,147, 28, 59, 96, 55,134, 81,234,244, 62,130,130, 43, 91,130,129,194, -130, 33,226,113, 50, 16, 87, 91,146, 1,156,115,238, 17,230, 31, 9,147,246,136, -116,234, 31,237,183,234,122, 45,215,128, 51,104, 50, 56,175, 93,203,105,142,162, -194,189,138, 77,230, 98, 75, 94, 13,224,126,217,243,255,143, 34,144, 40,162,112, -101,236, 22, 55,157, 21, 87,120,203,160, 8, 59,110, 73,248,169, 77, 43, 25,187, -159,166,109,247, 43,243, 83, 40,252,220,222,248,157,242, 83,140,160,235,117,126, -170, 28,183, 36, 79,141,222, 54,118, 35, 28,211,129,212, 94,231,173,184,227,216, -205,174, 73,251, 58,135,198, 47,158,163,145,236, 19,214,164,183,247,160,224,112, -234, 28, 8,207,142,249, 59, 26,212, 65, 36, 18, 4,204, 43,167,164, 72,213, 23, - 94, 43,113, 4, 89,140, 85,246, 17,201, 90,144, 43,118,223, 7, 36, 95,231,245, -200, 49,194, 10,233,233,103, 30,126, 60,176, 82,171,239, 93,232,242,128, 10,175, -165, 54,179,240,202,215, 46,129,209, 35,251,101,252,184,234,104,219,187,182,246, - 21, 81, 3, 1, 76,219,175, 57, 42, 61, 67, 83,209,218,135,235,174, 78,189,227, -220, 68,226, 28,237, 52,170,241,110,157,105,137, 4, 1, 67,189,209,133,137,204, -230,181, 9,135,102,161,153,148, 66, 75, 36,179, 92,251, 74,126, 5, 74,192,200, - 54,114, 72,199, 34,153, 44, 84, 58, 69,102, 34,243, 78,157, 98,177,244,136, 17, -246,198, 67, 81,206,135,224,231,152,134,131, 68,168,103,210,175,182, 72, 44, 19, -213, 84, 58,153,198,105,133, 78, 27,225, 47,104,227, 83,163,239,178, 39,180,113, -150,211,186,133,152,128,203,168, 33, 61,135, 12,205,136,140,164, 36, 73,210, 26, - 64,132, 24, 83,101, 85, 7, 66,240, 52, 16,161, 32, 5, 13, 17, 32, 42, 16, 9, - 68, 36, 16, 9, 38, 16, 17, 81, 80, 78,118, 23,139,112, 6, 97,187,168,196,175, - 87,224, 75,218, 81,175,152, 10,188,202,195, 97,141, 41,202,174,214,234,239, 78, -249, 1,235, 66,227,169,217, 70,224,145, 40,114,186,236, 22, 24, 93, 72, 71,237, - 85,250, 61,145,200, 80,111,235,208,169,131, 92, 28, 25, 4,224,155,183, 65,250, - 71,127,222, 77,254,229,248, 75,219, 98, 67,144,247, 57,244,148, 56, 35,168, 16, -156,235,243, 32,253,181,177, 19,186, 44, 59,227,116,167, 48, 94,190, 87, 56,235, -187,113,124,237,157,205, 65,222,223,193,254, 74,248,159, 24, 81,142, 93,182, 8, - 48,126,191,195, 65,208,195, 40, 91, 20,140,208, 36, 5,115,210,112, 5,140,186, -207,136, 99,223, 67,240,126,226,141, 53,253,114, 89,130, 45,112, 76, 19,154,177, - 77,154, 77,117, 22, 25,191,136, 0,214, 32,107, 74,237, 19,164,122,239,130, 67, - 25, 2, 72,202,129,135,213, 39,145,158, 64,242, 60,134,168,102, 48,111,161,198, -239,121, 88,232, 78, 10, 82,208, 23,181,150, 88,128,133,122, 58,111, 12, 49,175, - 33,178, 83, 49,180,160, 79,167,205, 9,164, 15,208, 55, 84,117,165, 22,255,144, -137, 64, 92, 3, 1, 13,105,116, 59,177,193, 59,144, 82, 32,135, 17, 90, 35,219, - 61, 82, 28, 73,144,138,187,216, 58,253,133,100,185,165,129, 22,153,242,222,232, - 5,232,229, 69, 54, 82,179,207,144,214, 15, 3,208,215, 85,101, 15,101,138,162, - 46,145,229,178,126, 56,240, 95,131, 48,110,226, 91,213, 90,134, 5,238, 89,131, - 81,213,224,217, 20, 23,199,131,140,236,234,245,250, 26,241,118, 45,238, 5, 84, - 70, 93,198,139,208,123,187, 17,186,205, 7, 56, 71,215,185,121, 83, 84,232, 24, - 95,241,169,100, 31, 54, 64,110, 87,226, 73,202,211,206,109,233, 7,128,131,152, - 26,102,162,100,106,219,185,169, 14, 9, 28,232,182,217, 52,169,106, 48,205,117, - 93,111,150,130,107,186,157, 35,250, 47,186,175, 52,208, 4, +// ../Source/Template/GB_AxB_dot2_meta.c: +uint8_t GB_JITpackage_65 [2052] = { + 40,181, 47,253, 96, 55, 47,213, 63, 0,150,252,182, 41,176,146,217, 28,170, 70, + 99,199, 27,154,246,231,168,157,119,146,207,118, 82, 3,243,132, 49, 82, 91, 51, + 80,138,156,226,249, 32,142, 31,244, 31,244, 95,120, 40, 1,170, 0,170, 0,175, + 0,249,222,230,167, 96,177,195,209,119,177, 69,109,223,226,124, 37,173,119,118, +126,146,207,125,241,255,135, 64, 58, 32, 24,148,219, 2, 62, 60,218, 49,224,221, +141,149,179,212,162,121, 52,109,169,215, 93, 4, 66, 81, 44,147,254,184, 25,202, + 95,196,166, 30,205,182,187,205,164,177,109,142,114, 38, 20,154, 15,165,107,145, +216,184, 65,199,249,187,160,160,215, 42, 63, 25, 88, 40,203, 36,161, 66, 89, 46, +225,164, 79,152,138,166,230, 20,249,209,151, 47, 72,181, 79,153,228, 84, 95, 56, +197,135, 75, 99,113,134, 89,103, 58,102, 16,156,185,177,187, 98,248, 79, 42, 2, + 16,239, 51, 24,131,245,169, 34, 24,144, 24,235,151,153, 27,220, 44,249,118, 91, +181, 33,183,234,225, 5, 5,144, 73, 65, 65,159, 10, 8,128,234, 24,207,189, 50, +144,252,100, 21,165,161, 48, 51,169,194, 10,226,209,206,118,142,145,142,169,247, +134, 26,215,182, 54, 76, 55,139,115,117, 64,151,196,166,109, 34,188,238, 60, 26, +177, 93, 69, 25,135, 50, 19,235,152,135,172,103, 14,183, 72,160,176,112, 9,135, + 51,225,112, 15,143, 75, 44,233, 31,137,105,155,106,203, 54,210, 53,208,149,101, +114,225,212, 49,199,117,138, 44,247,188, 29, 32, 80,218,222,238,182, 63,141,207, +223,108,233, 51,184, 25,194,180,214,209, 43, 8, 39,152,105, 72,195,246, 82,108, + 27,164,157,216, 32, 62,158,223, 55,168,152, 39,120,235, 25,139,212, 59, 40, 94, +239, 26,183,214,249,225,237,230,119,157,237,229,166, 60,134,150,222,222,143,250, + 11,154, 43,243,124,178,142, 4,105,155, 38,101,135,164,107,124, 67,108,167,152, +183, 77, 86,238,233,216, 49,146,179,237, 16,252,181,159,142,233,173,183, 56, 89, +127,135, 71, 33, 1, 28,165,243,172, 33,216, 57,224,203,116, 67,168, 32, 84,164, +118,213,105, 41, 40,118,230,144,174,101, 29,142,236,108,176,237, 2, 73,142,117, +105, 36,210, 37,146,132, 97,191,188, 1,147,176, 15,230,177,254, 16,188,156,102, + 77,128,180,108,147,200,228,184, 97, 88, 4,203, 68, 24,172,133,144, 61,193,155, +163, 21, 79,123,204,113, 6,158,217, 94, 90,150,101, 65, 30, 58, 27,208, 6,187, +178, 13,180,169,232,200,170,170,170,106, 67, 34,109,104,154, 38, 63, 0,151, 82, + 74, 41,165,148, 82, 74, 41,165,148, 82,134,114,122, 7, 93, 1,144,138,203, 76, +172,143, 10,149,153,100,240,121,107, 14,138, 1,198, 94, 56,192,229, 82, 73, 23, +217,209,107, 47,248, 47, 83,141, 91, 58,201,149,142,161,215, 58,127,193, 34, 5, + 27, 95,186,122,191,119, 23,150, 94,143,190, 59,166,215, 92, 22, 27,142,220, 88, +215, 39,171,147,114,157,153, 48,201, 53, 27, 79,199,131, 29,195,176,105, 82,232, +122,172, 83, 28, 37,121, 98,131,124, 59,233,185, 67,183,216,193, 47, 18,201, 54, +216, 21,187,116, 93,239,187,134, 40,190,165, 66,141,166, 70,157, 17,134, 14,200, + 72,188,153,155, 30, 69, 85,100,133,170,100,117, 1,129,227,198,147,187,193, 79, +153, 62,170,153,114,148,118,247,203, 13,222,114,204, 79, 85,168,143,234,212, 43, +150, 53, 77, 50,130, 71,168, 98,212, 78, 41, 26, 25, 25, 41, 72, 82, 88,214,146, + 41,132, 1,105, 22,136, 97,106,249,194, 88, 52,201, 16, 9,196, 97, 12, 33,136, + 17, 39, 32, 4, 9,136, 34,129, 72,100, 18,200, 4, 51, 10,212, 28, 52, 39, 74, + 35,200, 92,169, 75,101,112, 96, 77,121,195,185, 12, 80,153, 43,131,212, 61, 45, +176,150,227, 87,105, 77,117,173,227,194,191,186,161, 66,128, 25, 11, 16, 50, 18, + 82, 24,134,243, 17,148, 99, 12,176, 54,249,180,170,164, 9, 10, 40,156, 77,161, + 10, 44, 52,211,236, 11, 91,209, 57,161,202,238,102,255, 38, 27, 74,172,255, 32, + 4, 38,227,145, 46, 4,194, 98, 73,246,176, 45,161,113,195,109, 83, 41,126,168, +251,222,158, 80,143,216, 59,246, 85,228, 81, 20,226, 40,237, 77,163, 81,153,168, + 70, 20, 63,138,238,119,152,133,195, 28,184, 50,241, 92, 50,154,102, 54,145, 75, +177,225, 40, 59,149,188, 9,187,144, 88,174, 87, 4,140, 18, 97,176, 33, 16,129, + 86,224, 75, 54, 5,194,209, 27,144,237,218,188,110, 72,139, 41, 3,229,100, 58, +163, 69, 25,209,171,142,240, 13,201,197, 37, 9,154,146,185, 91, 66, 85,245, 83, +120,101,216, 3,212,187,156,101,115,166,176,138,162,188,151,143,212, 98,216,186, +120, 34, 98, 39,112,197,148,180,247,118,168,198, 54,248,170,193,193,120,147,167, + 96, 69,120,178,252,192,253, 50, 72, 64, 93,190,152,215,170, 5, 57,230, 85,149, +182, 49,120, 84, 69,249, 49,169, 14,181,198, 88,179,172,221, 41,236, 72,198,201, +245,157, 23,112,211,127,171, 59, 93,147,220, 85,112,108,112, 27,217,155, 56, 75, +216, 65,116, 10, 52,118, 38, 61,232, 39, 61, 93, 25, 46,132,115,167, 50,191, 50, +152,214,212, 2, 43,116,223, 83,185,122,139,241,227, 48, 36,213, 83,158,212,174, +171,225,162, 80, 53, 74, 67, 57,128, 89,160, 58,227,213,206,130, 49, 14,138, 95, + 16,202,107,215,241,179, 85, 12, 51,111, 47,203, 93,223,150, 83,248,151,131, 82, +157,165,135, 95, 84, 25,110,248,102,114,146, 54,229, 87, 43, 56, 91, 91,130, 2, + 49,124,202, 93, 56, 18, 56, 45, 86, 36,158,225,231, 79,181,255, 86,110,174,101, +109,218,168,180,247,232,175,149,195, 44, 58,173,190,142,149,184,131, 72,154,248, +216,248, 1,121, 12, 2,153,224,112,120, 48,161, 61,254, 37,226,131, 31,187, 19, + 3,121, 51,220, 68,249, 55, 7,251,199,195, 28, 87,111,104, 19,152, 21,178,148, + 17,102,216,116, 77,108, 92, 71,149,173, 41, 68,162,195,112, 7,105,223,167,179, + 1,196, 20,223, 1,158,205,128, 30, 29, 68, 89,165,216, 27,202, 50, 58,214,128, + 11, 82,206,162, 62,247,133,224,243, 11,189,162, 77,202, 19,213, 59,170,179,164, +119,146,132,216,155, 31,151,129,182, 91, 99, 39,226,102,186, 16,101, 17, 31, 31, +196,229,144, 78,229, 26,125,138,129,170, 53,251, 28,225, 17,156, 84,103,176,244, +208, 36,201,253, 38,172,237, 11,115, 21,130,163,246, 71, 67,231, 33,244, 14, 57, + 53,106,227, 54,173,123,128,119,212, 70, 93,134, 36,165, 80,229,231, 37, 63, 85, + 93, 41,111,130, 81,212,229, 34, 19,172,151,140, 46,191, 83,210,252, 68, 72,218, + 72,188,112,194, 33,105, 14, 9,121, 81,132,169,215, 33,114,222,150, 79, 72, 54, +144, 64,120,158, 12, 42,136,200,122,117,118,123, 66, 61, 48,143,242, 64,155, 79, +141,139,207,187, 44,105, 38,186,143, 66,151,240,253, 53, 23,222,177, 92,220,169, + 35,217,202,229,102, 58, 49,213,245,130, 81,143,184, 53,200, 63,102,136,125,237, +249,145,218,110, 65,165,125,126,218, 75, 20,130,131, 26, 19,207, 11,186, 68, 29, +141,130,205,201,129, 4,102,242,149,168, 55,107,232,129, 39,109,183,135,224,114, + 21,152,124, 79, 46,123, 31,188,198,212,233,181, 65,254,189,217, 81, 79, 34, 37, + 81,212, 46, 46, 23, 20, 5, 64,110,210,174,110,102,213,121,160,148, 79,213,106, + 89,211, 84,137,117,186,137,162,100,131,192, 25,181, 30, 57,200, 68, 63,201,118, + 91,252,228,201,222, 93,252,245, 21, 19, 78,100,237,215,168,132,211, 66, 27, 9, +248, 8,131,182,249,125,140,202,185,223,164, 62,127,134,160,177, 73,202,211,192, +139, 79,123,124,156, 69,130, 26,214,165, 11, 66,144,235, 90,174, 0,212, 83,222, +140,201, 38,143, 64,165,108,204,169, 32, 7,231, 87,106,250,128,244,184, 10,132, +125,193,114,195,103, 43, 29,188, 97, 49,228, 73,227, 10,172, 30,254,248, 77,236, +200, 95, 36, 22, 53,148, 57, 16,231,194,174,127,118, 20,198,237,159,108, 6, 98, +104,132, 3,251,150,216,168,146, 18,131,222,191, 1, 1, 5, 87,213,223, 35, 77, +224, 60,240, 37, 86,230,104,110,183, 28, 45,125,226, 64,204,167, 0,204,174,221, + 66, 99,126,236,193,143, 54,181,115, 67, 22,139, 20, 58, 83, 42,246,184,129,200, + 26,227, 67, 31,152, 11,170,104, 55, 16, 84,211,118,191,135,170,146,151,240, 33, + 10,208, 75, 96,246,168, 69,245, 49,194,235,193, 63, 12, 32, 27,202,144,187,109, + 2,247, 69,151,149,128,152, 73,209,221, 67,100,226,105,112,174,209,149, 66,189, +231,194, 38,247, 59,219, 68,232,108, 50,110, 2,181, 7,229,123,130,223,132, 63, + 8,184, 38,247, 91, 93,183, 5, 20, 43,163,250,175, 99,111,205, 84,252, 53, 30, + 31, 23,136,178,248,170,133,156, 50, 72,133,157, 19,145,198,128, 14,158,190,101, +250, 33,114, 15,229, 94,208, 62,209,229,212, 4, 7,189, 6, 59, 41,122,138,100, +253, 88, 60, 55,100, 80, 98,223,249,253,255, 88,132, 3, 80,137, 41, 83,236,115, +205,208,205, 5,241,107,112,227, 27, 63, 33, 65, 51,152, 90,239, 61,111,167,180, +213,129,202, 49,169, 71, 47, 66, 40,218,134,110,116,223,202, 31,144, 85, 44, 38, +233, 87, 45, 33, 63, 64, 42, 94,207,144,108,250, 20,202, 78, 82, 25,115,148,247, + 90, 46,167,183,133, 26, 7,163, 65,243, 66,203, 76,217,141,248,207, 53, 96, 33, +129, 4,123,130, 25,108,217, 71,171, 35, 95, 14, +} ; + +// ../Source/Template/GB_AxB_dot2_template.c: +uint8_t GB_JITpackage_66 [2026] = { + 40,181, 47,253, 96, 53, 32, 5, 63, 0,170, 69,252, 12, 45,160, 78, 25,235,184, +194, 44, 82,108,249,122,136,121, 98,176,241, 11,253, 82, 96,190,194,181,190, 6, +247,144,161,156,105, 67,140, 81, 0, 68, 30, 94,193,235,240, 58,104, 29,158, 42, +193, 0,202, 0,193, 0,207, 69, 88, 78, 77,242,199,194, 37,243,126,155,213, 99, +251,214,100, 97,198, 8, 63,246,205,171,241,149, 51, 11, 77,117, 74, 44,103, 93, + 47,220, 46,136,202, 62,127,238, 61,215, 31,169, 76, 67,159, 87,214, 96,121, 42, + 70,144,135,194,237,118,231,147, 61, 87,248,234,154,132,119,142, 73, 36, 2,194, +159, 12, 82,119, 74,229,246,244,149,172, 93, 16,182,146,179,190, 64, 32, 84, 52, + 17,141, 53, 42, 91,222,220,222,207, 69,111, 30,163,251, 68, 32, 98, 18, 1, 57, + 0, 49,137,184,148, 69,159,108,107,192,202, 35,238,161,207,157, 91,115, 62, 97, +238, 82,125, 40,172, 9, 40,108, 43,164, 24,223, 6, 97, 14,123, 51,144, 54, 43, +253, 97,107,188,122,168,243, 83,245, 48,192, 77, 80, 96, 28, 36,172,159,194, 23, + 70,186,241,125, 17,119,106,175,218,112,175, 74,112,137,196, 1,145, 72, 2,212, +181,190,191,178,185, 2,144,176, 44, 7, 6,135, 84, 9, 16,240,141, 69, 19, 65, + 1,128, 71,111,216, 26, 94,103,173, 12, 48,135,121, 21,153, 12,148,132,113,176, + 11,130,229, 69,246,218,222,224,223,190,173,243,182,207,160, 67, 57,167,189,133, +150, 53,160,253,164,245,148,115,123,157,158,202, 85,145,169,192,188, 8, 25, 23, +234, 60,164, 65,174, 17,222, 90,142, 18,244,201,211,154,124, 60,108,132, 26, 50, +123, 25, 22, 94,234, 16, 29,139,109,100, 7, 71, 6,234,146, 69, 63, 77,209, 45, + 78, 3,141,228,225, 20, 44,106,241, 13,235, 15,146, 99,152,240,255,142,203,165, + 1,130,135, 93,207,106, 7,135, 4, 57, 56, 48, 58,251,196, 37,140,169, 35,235, +148, 5,151,245, 44, 14, 28,246,176, 8,238,193,197, 85, 44,219,119,103, 11,229, +181, 89,151, 26,203,246,176,230, 80,177, 96, 21, 26, 44,227, 54,156,199,169,200, + 4,152,187,146, 45, 87,154,249, 35, 23,178,219, 78,122,202,194,116,187,118,253, + 41, 41, 48, 14, 18, 16,139,247,235, 52,140,215,214,246, 80,159, 59, 93, 6, 6, +201,190,210, 52,249, 68,225, 33, 32,250,101,187,241,214,177, 94, 33,199,236, 82, +206, 54,248, 83,232,210,141,167,246,121,159, 81,167,133, 79,121, 12,144, 11, 18, +163, 3,241,192,176, 56,141,110,193, 54, 78,131, 85, 21,117,201, 81, 35,187, 69, + 41,145, 37, 65, 77, 28, 67, 2, 80,117,170, 10,226,241, 83,176,184, 21, 94,251, + 92,198,239, 43, 96, 32, 64,135, 58,103, 29,109, 71, 94,242,224,181,117, 94,218, + 53,179,172,253,242,197, 31, 15, 43, 47, 65,125,242,137,136,242,136,228,108,174, + 18,196,148,245, 6,101, 72,139, 56,130, 52,254,100,246,146,140,236,231,190, 13, + 36, 35,199, 8, 43,164,167,219, 60,220, 46, 96,165, 1,142,170,170, 42,141,195, +112,174,106,226,209,144, 69, 94,195, 89, 3,197, 76, 78, 18,100,174,205,133,177, + 96,239,226, 44,155,183,185, 92,131,139, 70,178,108,220,197,178, 84,216, 70,232, +121, 24,157,213,121, 12,221,253, 11,111, 47, 81,174,229, 75, 59, 67,154,156,194, +185,134,109,113,234,156,227,206,231,165,216, 86,128, 56, 69, 84,249, 94,152,217, + 75,230,206, 45,252, 76,137, 47,180,221, 62,113, 48,103, 97, 62,129,209,219,227, +156, 29,137, 22,186, 29,170,176, 86,120, 10, 70,194, 76,248, 84,132, 21,116, 51, + 80,189, 22,115, 74,196, 94, 9,121,235, 11,225,216, 17, 78,217,229,103,251,209, +109, 98,206,153,108,251, 41,194,206,152,218,219, 51,210, 13,214,152,229, 45, 79, +237,145,101,229,140,115,174, 5,210, 43, 22, 9,215,197, 93,150, 69,131, 69,143, +209, 57, 27, 11, 22,130, 5,168, 82,164, 16, 42, 52, 83, 34,133, 5, 73, 74,141, + 1,162, 32,132, 1,105,170,232,129, 78, 31,210,112, 72,136,130, 12, 4, 98, 2, +226, 8, 49,134, 24, 34, 5, 34, 50, 18,136, 4, 20,148,164,196, 57,146,123, 75, +104, 91,149,114, 6,164, 54, 98, 62, 29,138,201,159,188, 30,113, 54, 49,122,148, +249, 45, 93, 81, 99, 96,243,184,160,146,200, 69,129, 42, 24,221,136, 34, 63,241, +207, 83, 77,228,175,179, 55,187,113,149,203, 44,198,171, 55,199, 31,210,170, 6, +137, 9,110,166,201,116,168, 17,152,254, 66,234, 11, 26,221,197,131,123, 5, 37, + 78,227, 33,245,176,222,237,139,131,135,190,114, 6, 28,240,193, 70, 91, 29,194, +211,131,148,190,135, 67, 75,173, 3, 20,208,142,171,207,147,128,195, 89,133, 9, + 96,250,242,189,252,234,251,237, 97,115, 71, 23, 53,116, 70, 43, 17,124, 74,131, + 78, 83,223,159,101, 91,204,158, 97,150,232,115, 15, 16,223,143, 23, 34,156,146, + 32, 82,114,109,183,233,209, 4,213, 25,190, 23,225, 15, 20,229, 9,131,139, 53, +190,246, 45,141,177,243, 14,213,131, 80, 0, 71,140,160, 72, 50,251,127,252,165, + 42,191, 83,242,158,122, 61, 61, 81,117,254, 17,112,210,248,233,116,154,194,176, +225, 75,183, 88,155, 64,224,182, 21,167, 90, 74,181, 41, 16,101,143, 73,122, 66, +100,120, 1,113, 22,145,139, 29, 61, 24, 77, 58,117,131, 17,131, 4, 38, 93, 61, +113,162, 1,144, 35,235,244,212, 70,110, 3,114, 5,101,117, 68,100, 71,204,250, + 1, 34, 57,180, 68, 24, 41,190,140,172, 82,137, 85,166, 73,178,114,118,234,196, + 84,186, 78,185, 95, 12, 12, 61, 5, 79,223, 98,110,182,107, 65,190,167,154,106, + 1,239,206,134,250,180,190, 95, 40, 46,119,107, 76,142,161,223, 0, 8, 65, 84, +112,208,248,133, 70,222, 69, 52,103,142, 82,171,237, 63, 48,244, 76, 91,190,142, +230, 36,140,188, 30, 3,161,255, 42,210,120,179, 36,225, 32,123,158,227,220, 4, +252,185, 62, 32,218,221,122, 0, 71,159, 88, 60, 65, 3, 36, 96,176, 1, 36,176, + 44,114, 41,232, 53,215, 51,194, 85,105,213, 10,240,170,208, 29, 53,192, 33,199, +206,107,157, 57,134, 91,157,199,215,152,171,100,105,113, 90,139, 47, 68,180,223, + 28,140,199,210,206,209,191, 85,131,209, 30, 27, 81,149,165,240, 47,109,137,103, + 46, 3, 60,177,147, 6, 11,253,125, 28, 20,205, 74,133,205,143, 38,251, 90, 61, + 20, 16, 78,225, 94, 58,232,225,115, 54,241,115, 7, 95,162,109,201, 90, 10, 34, +170, 87,138, 23, 68,225,206, 80, 77,190, 83, 62,173, 98, 20,191,104,232,191,118, + 42,195, 67,208,228, 23,152,229,200, 76, 17,118, 39,168,145,170,254,194,233,131, + 42, 51,116, 16,133, 41,230,173, 30, 35,231, 24, 21,236, 21,216,111, 30, 34, 33, + 48, 95, 83,208,220,128,165,231,138,111, 77,138,255, 38, 96,116,205, 95,150, 62, + 21,109,232,193,128,226,198,106,190, 3,127,186,150,244,115,169, 86,124, 65,189, + 97, 37, 20,171,222, 61, 93,143,104,229,184, 56, 91, 18,238,212,126,241,167, 24, + 73,253,135,249,210, 97, 80,114, 39, 80,183,253,246, 51,189,167, 32,105, 20, 4, +114,138,247, 51, 23, 27,172, 31, 39,207,180,154,134,181,229,138,190, 2,127,132, + 68,239, 20,140, 58, 82,118,221,171,225,177,167,144, 31,149,133, 88,160,127,120, + 67,174,154, 40,141,116, 19, 38,209,216,170,244,119, 57,128,102, 34,176,224,204, +169,217,128,107, 42, 86, 76,200,131,167,191,116, 13, 78,103, 26,206,167,216, 96, + 21, 63,166,143, 33, 12, 72,226, 14,179,154,178,160,138,196, 44,172,111, 14, 67, +255,150,124, 36, 18, 48,144,177, 40, 2,181, 12,118,100,165, 89,240,121, 45,241, +207,173,177,239,175,205,185,160,135, 69,157, 1,119,185, 88, 53,240,242, 79,130, +168,206, 15,134, 0,186,106,248,252,125,232, 67,121, 10, 13,165,100,182, 53,210, +183,246, 98,188, 52,152, 16, 30,200, 69,163, 53, 79,118, 17, 31, 92,174, 94, 82, +148,137, 27, 64, 52,134, 17,117,139, 87,205, 21,232,137, 98, 54,238,191,254,120, +252,155,212,211,184, 84,157,222,145,208, 35, 93, 94, 43,140,140,251,187,199, 6, + 59, 68, 60,134,201, 38, 65,112,102, 40,246,170,239,123,180,211,178,218,204,103, +120, 24,116,187, 50,129,222,195,183,213,134, 65,107,200, 86, 94,104,140, 48, 16, +188,224, 38,168, 98, 12, 28,161, 43,196,158, 79, 13, 69,145,242,176, 50,138, 43, +172, 19,195,228,166,137,105,239, 53, 96,155,121,216, 79,129, 88, 87,215, 58,112, + 6, 85,120, 61,161, 58,160,201, 48,106, 47,138,157,154,233, 94,255, 61,209, 62, + 5, 49, 12, 43,204,197, 92,186,151, 8, 79,131,225,171, 5,134,242,128, 84, 53, +129, 81, 73, 61, 35,169,219,117,223, 42,197, 2,150,202,123, 2,118,118,254,153, + 71,203,166, 36,107,193, 16,210,119, 72,117,213,229, 8,207,239,133,213, 92,211, + 91,167,153,119,163, 45, 7, 89, 8,196,174,172, 49,198,161,130, 70, 40,126,212, +117,215,178,252, 78,244,246, 91,240,230,228,207, 37,114, 4,219,228, 28, 35,183, +197,200,227, 25,196, 54, 97,175,219,165,183,166,248, 99, 99,210,241, 34,188, 68, + 34, 34,132,182,210, 73, 94, 85, 40, 3, 11,179,233, 10,218, 25,173,187,103,112, + 92,234, 72,141, 81,217, 52,241,129,153,252, 51, 18, 34,199, 40, 94,136,216,143, + 52,160,234, 40,234, 3, } ; -// ../Source/Template/GB_convert_s2b_nozombies.c: -uint8_t GB_JITpackage_87 [709] = { - 40,181, 47,253, 96,117, 7,221, 21, 0,102, 98,101, 32,240, 24,231,208, 90,236, -139,181, 45, 17,235,197,206, 46, 48,183, 86, 94, 12,189, 95, 68, 14,150, 66,112, -192, 51, 48,105, 17, 94, 97, 0, 87, 0, 92, 0,181, 55,138, 33,120, 38,154, 2, -215,225,109,220,155,227,220,145,232,230,158, 39, 31, 21,137, 67,130,208, 64, 28, - 18, 15,108,216, 35,166,225,156,188, 32,175,234, 50,248,209,206, 35, 71, 98, 34, -157,157,183,226,224,116,166, 39,206,101,231,151,169,232, 96,126,227, 59, 45,254, - 7,222,209,229,239,192, 77, 69, 31,184, 2,171, 38, 74, 96, 45,223, 14, 43,184, -105,145,202, 13,134,139, 96, 48, 4, 94,123,222,188,211,222,126,224,231, 71,154, -215, 2,178,115, 52, 63, 87, 26, 56, 88,177, 27,254,255, 98, 93, 87, 33,207,239, -130,163,207,231,218,184,175,237, 27,229,241,124,126,127, 19,191,187,252, 14,103, -119,145, 60, 87,231, 81, 93, 83,242, 47,220,182,170,238, 23,196,244,242, 58, 20, - 18,132,238,182,105,229, 29,183,233,136,230,218,220,133,208, 56,177,147,216,165, -102,137, 84, 14,121,233,152,118,249, 42,209, 43,120,174,243,188,109,193,119,160, - 20, 29,152,252, 8,124,230, 42, 29,253,113,211,179, 63,227,233,101, 15,129,222, - 27,245,176,212, 32,207,248,210,145,233, 89, 91, 48, 6, 3,108,194,243,143,236, -135, 67, 48, 68,220,232, 55,171,138,195,218, 59,113,221,109,248,129,170, 73, 12, -115,179,111,151,181,239, 84, 31,215,213,186, 90, 8,145, 12,196, 71,236, 31, 77, - 70, 2,121, 8,212,219,244,236,113,166, 29,130, 95, 54, 56,181,217,169,164, 33, - 11,122, 74,190, 79,222, 12, 31,233, 83,205, 85,122, 60, 59,138,201, 63,110,159, -221,102,175,237,133,243,130,151, 14,169, 52,135, 16,131,144, 9,116, 43, 31,227, -175, 24,185,218,143,249,206,140, 53,105, 53, 90,135, 82,201, 30, 48, 61,123,168, -193,161, 82,136, 40, 16,145,130,146, 36, 73,107, 48,132, 24, 83,117,230, 1,162, - 8, 61,204,148, 8, 9,148, 64, 80, 32, 34, 21,148,148,255,187, 3,153, 9,101, -115,212,219, 42, 32,102, 14,118,117,136,254, 19, 36,202,220,150,238,190, 94, 81, - 80,140, 5,171,194, 16,164,208,202,187,152, 80, 54,186, 18,241,100,173, 94, 84, - 59, 23, 65, 54, 29,188,253,249,184,186,144,156, 51, 86,248,223, 29, 84, 55, 80, - 6, 50,226, 98,205,226, 3,121, 64, 8,173,254,173,243,117, 92,133,247, 82,138, - 63,207, 21,232,179, 73, 5, 5, 85,246,139,183, 74,144, 25, 8,232,149,184, 51, - 59,223,140,169,235,209,160, 44, 76,157,117, 47,158, 81,103,237,157, 63, 58,165, -157,209, 25, 78,118,118, 61,123, 33, 86,207,215,244,217, 81,148, 38,208,230,242, -134,146, 72,177, 44,193,168, 76,242, 57,108,224,160, 24, 48, 95,184,227,174, 22, -111,102, 26, 95,249,135, 65, 73,247,136,109, 60,183, 30, 11, 51,237, 92, 23,147, - 34,254,218,114,126,219,223,121, 97, 57,125,166, 40, 8,187, 31, 26,170,133,207, - 40,117,134, 72, 3, 26, 64, 46, 5,192, 36,128,164,188,172, 36,178,232, 31, 98, -238, 38,243, 62,123,249, 37, 8, 28,213,124,211,188,212, 96, 82,148,107, 75,208, - 33,143, 56, 41, 85,233, 53, 12,240, +// ../Source/Template/GB_AxB_dot3_meta.c: +uint8_t GB_JITpackage_67 [1649] = { + 40,181, 47,253, 96,113, 24, 61, 51, 0,214,186,179, 41,176,148,117, 14,116, 1, + 51, 1,125,107, 15,196, 4,187, 55, 64,211,134,110, 39,103,238, 32,235, 43, 44, +178,117, 92,124,131, 34,108,127,208,127,176,191,177, 43, 1,166, 0,166, 0,164, + 0,222,185, 58, 54,216, 30,167,175,220, 26,175, 5, 67,238,225,137,134,220,224, + 96,125, 71,208, 29,233,227,192, 42,240,190,244, 19, 71,125,111,171,167, 77, 10, + 46, 26, 75,123, 28, 21,249,214,216, 85, 84, 47,216, 29,199,210, 22,108,174,118, + 44, 25,155,207,165,235,210,216,182, 65,183,215,243,168,160,127, 31,191, 50,208, + 20,104, 44, 9,153, 2,205, 41,142,242,202,214, 18,221,252,194, 63,121, 55, 28, + 85,237, 85,198, 29,233,137,116,140,176,178,190,149,148, 77,198, 22, 79, 30,166, +237, 72, 69,123, 91, 63,223, 99,123, 33,175,236,229, 72, 93, 56,138, 63,173,165, +203, 10, 1, 55, 56, 96, 12,243, 22,189, 61,218, 12,110,216,109,210,196,155,140, + 56, 6, 51,177, 96, 48, 1, 99,248, 30,233,189, 27,134, 40, 7,199,190,151,138, + 63,221,218, 35,106,187, 68,189, 99,115,190, 3,233, 43,249,138, 95, 97,191, 35, + 84,166,101,156,140,139,242, 91, 95,137,106, 7,118, 73,173,115,225,212, 20, 95, + 85,148, 79,205,226,131,169,188, 99,138, 27, 55,205, 87, 48, 11,111,123,109, 53, +245,246, 17,142,255,255,100, 66, 49, 47,137,185,137,222,112,234,163,170,148,121, +107,130, 51,183,235,130,179, 45,211, 96,140, 14,111, 31,149, 11,240, 44, 9, 36, + 5, 92,115,101, 44,241,217, 12,180,138,205, 27,172,162,238, 4, 38, 19,238,178, +221,250,113,235,196, 45,144,107,156, 9,201,111,239,190,170,216,175,193,177, 41, + 78, 99,120, 57, 10, 65,113,151, 13,163,221,234,194, 82, 74, 41,165,148,214,169, +204, 45, 31,213,174, 68,177,158,165,158,201, 84,107,167, 99,225,185,245,112,138, +162,161,129,109,114,140, 96,102,102,102,102,102,102,166,204,204,204, 44,114, 40, + 27,190, 48, 12, 85,132, 31,198, 52,142, 20,233,232,214,208,102,235, 38,223,181, +169,138,174, 73,118, 46, 15,232,162,216,186,227,186, 4,134,106, 40,164, 32,165, + 20, 37,216, 95,137,171,213,243, 68, 7,203, 20,231, 47,103,123,172,156, 2, 93, + 31, 13,137,147,144, 80,126,101, 32,254,112, 52,208,149,101,188,240, 2,240,119, + 59, 64,184,224,168, 63,241, 55, 4,111,235,177,255, 18, 26,133, 34, 33,215,161, +159,232,232,243,162,240,182,235,120,193,254, 21,155, 51,117, 69, 61, 6, 11, 37, + 34, 7,203, 45, 57, 72,146, 18,162,224,207,124,115,105,158, 11,187, 58, 31, 76, +171,240,108,155, 14,131, 44, 36, 87,149,245,209,202,181,104, 63, 66, 73, 30, 24, +192, 48,172,132,187, 88, 48,172,183,110, 8, 25,132, 12,107, 23,246, 81,176,142, +198,190, 34,148,107,153,167, 98,110, 29,246,112,176,237, 2,113,103, 94,155,145, +139,230, 20,170, 44, 13, 94, 77,230, 99,107, 93,147, 62, 90,250,232, 72,178, 61, +138, 31, 13, 29,196,172,174, 63,111,100, 41,247,254, 66,213,218, 80,252, 1,165, +172, 7, 10,134, 97,216,168, 69,170,197, 42,166, 77, 11,144,150,109, 20, 25, 99, + 27,136,165, 24,213,192,115,206, 25,225,225,128, 56,216,149,109, 32,142,134,135, +165,148, 82,154, 40, 77,211,248, 3,112, 25,129,175,168, 49, 81,100,104, 70, 36, + 16,145, 20, 36, 73, 90, 3, 1, 9, 49,138, 58,198,206, 58, 66, 73,152,133, 49, +148, 65,136, 33,130,136, 33,132, 16, 71, 36,152, 96, 68, 36, 40, 41, 72, 65, 33, + 29,166, 86, 65,216, 46,235,170,103,161,138,155, 73, 21, 4, 9,111,162,120,111, + 76,124, 40,162,189,164, 99, 22,170,211, 12,198,251,209, 52,174, 62,174,198,197, + 27, 73, 8,113,152,179, 21,205, 84,218, 35,103,133,103,149,248,236,166, 25,189, + 90,182,156,153,138,209, 23,241,170,155,251,195,136, 7,106,206, 23, 87, 53, 65, +139,243, 38, 3,188,249,161,166,194, 44,255, 66,179,175, 62,236,192,176, 71, 5, +129,175, 77, 64, 53, 98,231,235,157,241,146,184,211,237,196,215, 63,206, 40, 82, +220,202,245,149,185, 35, 39, 10,160,142,101, 25,161,140, 95, 22,153,136,199,206, +207, 91, 53, 44,175, 37,247, 71, 62,161, 88,132, 84, 5,224, 94,191,244,191, 7, + 81,169, 97,165, 78, 56, 32,220,142,164,151, 75,209, 5,112,109, 98, 65,184,155, +247,145,166,210,172, 84, 44,151,242,218,163, 40, 48, 41,120, 84,209,230, 81,134, +155, 23, 56,131,218,130,140, 37, 41, 1, 50,140,242, 43,249, 91,140, 56,124,230, + 6,155,116,164,144,196, 43, 17,140,167, 55,160, 56,112,161,214,168,197, 24,210, +195, 68, 1, 50, 4,133, 97,195, 3, 20,251,157,139,139, 51,115,212, 85,201, 79, + 12,244,227,103,217, 86, 28, 13, 30, 15,177, 11,117, 26, 15, 53,209,253,108,167, + 62,122,156, 73, 77, 87,251,247,245,115,251, 99,183, 68, 33,226,224, 44, 41, 67, +182,187, 31, 91,250, 14,221,140, 84, 20,113,167,122,138,173,137, 17, 51, 33,247, +166,171,182, 2,208,128, 89, 27,120,106, 73,137,172,247, 89, 2, 51,140,207,146, +134,189,109,204,156, 81, 37, 10,201,221,116,248,212, 60, 48,126,198, 62,156, 27, +157,149,223,136,225,225,133,142,105, 26,177,130, 81, 79,244,131,199, 11,147,163, +125,108, 97,146,156, 83, 83, 43, 9,168,169,137,247,102, 0, 50,231, 10,145, 0, +143, 74,215, 22,191,223,151,253, 78, 46,188,201,201,107, 46,137, 54, 56,134,164, +176,118, 98,176, 51,129,186,124, 34,229,105,175, 22,105,111,166,138, 61,162,174, + 68, 6,191, 94,252,155,137, 97,218,133, 79,179, 91,149,128, 82,179, 1, 1,189, + 49, 19,233, 9, 5,210,200,224,133, 74,195,195, 18, 91,190, 26, 22,118,123, 2, +185,185,123, 85,251,187,106,195,173, 21,213,191,187,232, 55,230,226, 14,207,247, + 30, 51, 21,217,218, 63, 97, 27, 76,114, 75,211,173,200,195,147,245,196,236,159, +246, 26, 52,134, 18,137, 39, 39,135,202, 7,194, 1,156,203,123, 86, 41, 12, 70, +146,238, 91, 93,242,153, 44,102,109,219,152,220,196,222,132,179, 34, 24,113,106, +149, 23, 49,132,229,167, 71, 18, 56, 59, 91,128,156,180,108, 53, 42, 74, 81, 9, + 21,174, 50,147,138, 35, 85,101,155, 54, 95,108, 41,131,150,118,157,221,102,190, +128,231,235,243, 85,221, 35,133,215,193,160,108, 10,202, 88, 29, 60,186,100, 34, + 6,181,201,166, 23,252,230,201,175, 39,160,248,246,221, 31,227, 51, 51,207, 0, + 58,203,242, 18, 98,203,171,108,164,194,250,174,232, 84, 73,166,207,114, 7,235, +236,111,152,166,177,223,195, 5, 61,191,120, 87,210, 18,210,232, 75, 58,236,221, + 32, 12, 45, 80, 86,149, 73, 33,157, 6, 92,227, 1,173, 16,125,236,172, 90, 22, +236, 31, 58,131,110, 28,252,144,111,231, 11,186,165, 70,113, 60,219,198,155, 11, + 1, 25, 40, 54,202, 31,139,118,108,160,217,165,162, 35,111, 42,220,129, 39, 53, +141,216,128, 49, 6, 9,238,132,195, 85, 30, 89, 35,106, 29,209,236,121,159, 37, + 64, 93,195, 19, 2, 33,189,173,102,224,107, 80, 91, 3,107,150,103, 47,200, 15, +252, 14,148,115,140,132,251, 16,188,194, 75, 99, 77, 90, 39, 29, 40,160, 14, 86, +199, 61,180, 83,164,141,156, 93,135,200,254,212, 83,167, 17,248, 53, 57, 4,188, + 38,192,244,252,171,220,154,198,121,148,225,111, 41, 49,200,148,163,110, 31,117, +175,153,160, 79, 55,160,223, 52,231,106, 48, 77, 43, 25, 6,201, 27, 62,194, 36, +235,107,149, 12, 64, 41, 45,195, 3, } ; -// ../Source/Template/GB_convert_s2b_template.c: -uint8_t GB_JITpackage_88 [550] = { - 40,181, 47,253, 96,120, 6,229, 16, 0, 22,155, 83, 32,224, 26,231,148,119,132, -182,223,245,238,121,217,178,100, 28,104,133,255,172,116,101,107,172, 15,195, 57, -131, 25, 6,193,188, 23, 76, 0, 70, 0, 73, 0,243, 6,133,134,208,176, 70, 2, -161,125,192, 9,110,192, 53, 69, 39,207,230, 89, 95, 22,195, 26,186, 1, 52, 53, -146,111,164,183,226, 0,117,174, 40,144, 28,105,152,107,233, 98,126,227, 75, 71, -252, 80,188,222,231,239,232, 76,193, 49,236,188,149, 52,188,229,219, 41, 43,114, -155,164,242,195, 65, 98,135, 67,184,239,216,215, 48,143,233,243, 59,164,248,253, -229,119,138,126, 47,205,119,150, 94,213,118, 53,255,236,246,200,250,126, 69, 92, - 63, 37, 34,211,176,254, 56, 58,206, 59,110, 87,175,102,219,221, 5,107,108,155, -171, 26, 76, 52,241,100, 93,167,110,227,254, 28,231,207, 84, 63, 7,193, 91,232, -130, 57,120,181,179, 29,216, 86, 95, 13, 4,171,193, 41,158, 81,104,155,130,119, -109,171,215,221,189, 26,120,216, 6, 83,180,214,239,123,124,140, 96,243,144,143, -243,153,171, 55,227,190,132,231,109,193,200,182, 62,227,249,220,166,255,191,148, - 46, 41,179, 76,195, 43,122,167,207,182, 3, 82,122,221, 89, 84, 64,202,215,235, - 31, 32, 30,185, 21,220,171,162,109, 12,246, 11,192,101,184,107, 41, 20, 91,128, -119,135, 2, 57, 11,162, 92, 36,155, 14,105, 3, 77,139,118,194,165, 25,143,248, -132,105,182, 5, 10, 62,110,178,117, 59,245,214, 92, 5,241,220, 50,190,213, 59, -185, 52, 20,206,135,146, 9, 83,160, 97,185, 49,166, 42, 24,153, 9, 75,138,218, -106, 80, 70, 32,133,144,232, 1,174,185,105,150,184,218, 72,178, 76,216, 14, 29, - 34,232, 74, 28, 82, 56,122, 8, 3,103, 4, 86, 46,196, 80, 85,148,244, 77,231, - 42,120,108,233,187,222, 4,224, 6,107, 36, 8,214,223,218,232, 27,130, 59,191, -168, 33, 41, 49, 16,196,130, 55, 19,232, 25, 28, 66,217,130,192, 17, 23,157,100, - 55, 27,182,150, 65, 56, 8,255, 7, 58, 95,208, 90, 18,108, 47,238,123,201,224, -222,153, 1,204,211, 7,250,250, 16,182,101,239,101,235,147,119,181,247,141, 2, -134,201, 77, 55, 48,184,112,100, 45, 64,122, 86,119, 73, 7,252,231,161,226, 1, - 67, 88, 20,191,184,171,172,252,161, 8,234, 46, 49,139,129,230, 31,156,233, 70, -162, 85,207, 8,146,124,108,156, 39,196,166,249,252,193,116, 43,151, 66, 68, 3, - 34,135, 12,249, 50,110, 82, 20,220, 1, +// ../Source/Template/GB_AxB_dot3_phase1_template.c: +uint8_t GB_JITpackage_68 [1473] = { + 40,181, 47,253, 96,245, 19,189, 45, 0, 10, 66,252, 11, 39,208, 22,113, 14, 84, + 95,152,188,188, 92, 27,233,115,229, 27,185, 69, 24, 67,202,154, 12, 5, 28,227, +130, 0,113,161, 15,245,118,251,128, 47, 30, 2,185,191,183, 0,180, 0,184, 0, +239,255, 43, 39,149, 10, 6, 84,151,235,201, 88, 9, 95,170,220,193, 29,121, 40, +238,107,101, 12,219,150,241,149,235,219, 60, 63,134, 43,225,174,138, 74, 92,147, +207,228,214,204,157,183, 62,246,160,252,112,161,250, 16,100,218,101, 84, 14, 48, + 8, 23,222,176,157,212, 27, 40, 63,237,117,228,140,226,194, 53, 50,246, 44, 46, + 28, 17, 25,152,140, 71, 40, 87,230,188,246, 6,242, 56,135,144,186,148,128,112, +128,112, 97,200, 28, 32,220,130, 69,151,234, 27,217,136, 99,168,135,182,150,220, +243, 92,234, 80, 22,213, 54,151, 74, 52,112,165, 59, 59,220,175,235, 84, 42,130, + 1,234,211, 33,172, 7,205, 29, 78,165,246,215, 87, 67,112,227,190,129,123,225, +228,184,175, 12,215,221,230,149,208, 50,187,170, 18,234,170, 36,110, 96, 80,185, + 24, 24, 4, 27,139, 12, 11, 67,115,121, 48, 46,174,136, 11,234,178,160, 56, 26, + 30,141, 6,199,211,185, 54, 29, 14,149,209,185, 42, 58,148, 21, 61,227,236,218, + 11,176,158,197,189,102,107,144, 20, 50, 61,212,183,245,227,123,133,112,207,221, + 77, 78, 98, 41,199,120,228, 12, 65,226,211,228, 25,123,176,126, 31,229, 43,247, + 82,158,242,251, 19, 75,116,205,146,185,124,154,162,139,227,211, 14,165,252,188, +235, 66, 7,204,135,199,187, 62, 11, 80, 93,207,167,119,165, 79, 3,189, 47,133, + 5, 42,123, 62,138, 85,206,222, 12,242, 87, 42, 39, 5, 5, 53,254,225, 14, 63, +248, 20, 89, 50, 18,246,184,141,161, 44, 98,216,101,188, 97,245,150, 24,213,108, +153,110,125,113, 93,132, 12,225,210,157,159,156,252,114, 32, 75,103,128,195,179, +215,239, 24, 18,110,230, 5,183,160,160, 92, 66, 65,137, 30, 31,247,250, 8, 6, + 44,239, 69,154, 55,214,101,146,206,119,100,140, 10,209,142,252, 13, 91,150,125, + 16,149, 36,220,203,189,174,124,153,110, 18, 67, 62,150,232, 4, 15,129,176,211, +230,114, 31,153,130,143, 16,143,207,234,211,161,192,127,169,246,251,148,188,142, +171,186, 52,171,232,179, 3, 73, 9,175, 75,106,186, 93,175,106,110,117,183,119, + 64, 92,170,238, 89, 67,125,175, 56,155,140,142,137,171, 67,113, 85,150, 16,169, + 33,170, 34,195, 17,238,210,180, 46,101,145, 47,107, 94,178,102,116, 14,134, 71, +179,217,184, 60, 27, 9,237,101,209, 2,186,180,105,162,107,174,137, 74,130,242, + 12,109,242, 91,203,207, 41,111,253,152, 43,100,135,135,116,141, 18,171,103,106, + 89, 30,177,241, 92,108,172,149, 74, 74, 10,215,143,231,241, 73,125,162,164,232, + 23, 20, 22,197, 84, 64, 81,111, 41,138,162, 40, 74,162, 40,234, 89,159,254, 44, +108,242, 42, 87, 98, 69,247,116, 40, 77,237,119, 16,198, 91,198, 28, 37,184,180, +107,172,163,109, 1,156,100, 62,253,195,154, 30,154,135, 91,243, 14,231,247,225, +164,201,183, 46,200, 66,173, 95,236, 94, 25,180,125, 8, 95,215,247,123,119,159, + 75,178, 33,100,146,215,189,230,178, 94, 10,245,228,248,228,224, 19,230, 96,178, +222, 57, 94,252,152,173,116,235, 27, 97, 42, 53,254,208,229, 57,151,159,246,122, +101,236,119,138,241, 99, 36, 73,131, 80,230,190,146, 38,191, 97,116,185, 62, 68, + 55,190,207,247, 76, 95, 39,194,244, 25,236, 36, 6,183,107,108,207, 89,236, 72, + 2,129, 37,168,129,169, 66,138,144,140,136, 72, 10,146,164,208, 24, 97, 12,130, +144,130, 92, 66, 59,114,152, 88, 18,102, 80, 2,137, 16, 37, 64,144, 8, 4,145, + 64, 68,100, 34, 18,145,160,176, 40,206, 1, 25, 21,151,234, 18,113,135, 37,215, + 56,173, 54,137, 23, 14,232,161,102,111,218, 36,202, 71, 44,110,220, 55, 81,223, + 31,118,106, 69,223,202, 61,104,178, 94, 75,138,114,190,195,119, 73,248,169,249, +239, 92,205,128,144,177, 14, 23, 32,243, 74, 16,243, 89, 3,130, 45,250,167, 32, + 28,206,162, 0, 23,166, 32,243, 17,237,136,195,126,165, 32,116, 39,124,148, 59, + 59, 10, 2,162,219,129,207,207, 38,234, 89,148, 32,130,215, 36, 18,108,120,234, + 61,215, 0,247, 95,190,138,119,189,146,247,189,119,228, 38, 57, 73, 93, 41,161, + 44,232, 42,216,160, 58, 7,173, 40, 58, 48,227,255,147, 46, 26, 12,237, 92,187, +156,106,150,205,112,246,252,210,204, 52,200, 73, 7, 68, 48,148,149,114, 55,185, +120,132,158, 46,228, 23,113,242,197,103, 80,179,159,209, 24, 67, 40,254,115,152, +132,137,141, 1, 49,215, 68,199,204,190,211,114,146, 48, 75,243, 21,186, 31, 98, +250,190, 62,153,188,137, 2, 68,254,143,125,240,233, 59, 83,223, 94,221, 79,102, + 95,181,162,248,139,190,135,149, 35, 79,119,222,152, 16, 71,207,153,161, 97,251, +144,222, 75,105,224,136, 71,117, 33, 8,159,235,223,110,132,130, 20, 21,166, 40, +218,221,112,134,191,225,123,192,251,157, 29,211,212,195, 75,169, 64, 88, 95,169, + 9,198, 13, 44,180,234,188,177,125, 90, 95,164,100, 67,169, 77, 20, 1,182,248, +212,196,179,101,136,191, 23,152,137, 38,141,110,149, 75, 44, 19, 15, 84,167, 51, +150,215, 7,147,164, 75,140,221, 35,131,250,113,186,232,130,107,130, 59,104,237, +153, 29, 9,182, 24,107, 78, 40,220, 83,145, 16, 92,221,147, 25,170,105, 28, 85, + 41,218, 60,133,244, 37,193, 73,120, 20,135, 6, 60,202,171,223,127, 14,142, 37, +150,133,154, 23,141,254, 4, 3, 42,243, 96, 89,109,106,225,229, 87, 20,233,169, + 62, 1,137,200, 2, 65, 14,116,138,232,243,132, 0,101,139,136,207, 8,192, 26, +246, 8, 42,218,167, 88, 90,241, 3, 98, 53,150,154, 26, 16,114,135, 6,173,143, + 50,143, 5,163, 74,114,251,148,192, 46,187,115,214, 69, 73,235, 67,148,111, 40, + 48, 42,202,179, 79,238,245,110, 94,189, 66,149, 50,178,199, 79,176, 88,171,130, + 19,156,132,241,130,145,138, 62,120,247, 12,246, 77, 12,157,121,181,190,219, 27, + 81,241, 35,148,254, 60,191,120,227,129,141,238,159, 61, 89, 83, 99,141, 91,142, + 27,248, 47,248, 8,253,149, 68, 98,122, 8,178,244,228,210, 97, 99, 65,159,189, +230,191, 95,207,211,176,223,202,106,171,134,147, 88, 73,238,102,252,109,211,207, +240, 50,166, 33,254,150,129,155, 22,208, 65,193, 82,101,206, 18, 45, 93, 55,171, +103,236,144,128,224, 92, 79, 21,183, 74,131, 79, 87,226, 23, 14,142,163,240,212, + 83, 17,211,162, 23, 52,154, 82, 63,237, 13,104,171,232,166,105,252,153,201,106, +228, 95,207,148, 61,131,204,213, 36,148, 58, 86, 38, } ; -// ../Source/Template/GB_convert_s2b_zombies.c: -uint8_t GB_JITpackage_89 [738] = { - 40,181, 47,253, 96,213, 7,197, 22, 0,118, 99,105, 32,224, 26,231,148,119,132, - 76,207,234,246, 76,236, 36,105, 59,154, 22, 69,107, 45, 81, 73,139,143,120, 78, -196, 24, 41, 50, 56, 4,100, 0, 90, 0, 96, 0,253, 97, 10,141,107,123, 52, 83, - 0, 81, 56,134,175, 87,183,113,119,142, 51,120,162,157,135,161,252,182, 80, 32, - 20, 5, 71, 2,161,184,192,211,190, 97,186,154,148, 27,228, 93, 96, 30, 69,250, -249,230,145, 25, 9,104,231,181, 60, 60,157,169,202,147,217, 41,102, 90,250,152, -223,248, 78,139, 47,142,215,116,249, 63,112,211,146, 56,190,186,146, 2,119,249, -246,170,142, 94, 39,177,252,112,200, 10,135, 67, 96,238, 68, 85,125,216, 97, 56, -239,180,183,226,248, 41,158,230,181, 1,238, 31,205,207,149, 10, 14,102,202,210, -126,248,255, 44,131,101,153, 33, 79,241,142,166,207,231,218,184,175,237,187,201, -227,249,252, 22, 39,126,131,249,189,154,224, 75,242, 95,157,103,117,109,201,223, -112,219,186,192,223, 17,211,203, 12, 97, 80, 20, 26,244,166,149,127,220,166, 38, -154,107,156,238, 83,177,112, 23,164,190,129, 82,187,236, 46, 18,203, 35, 71, 29, - 83, 48,223, 85,122, 29,255,117,158,183,237,248, 22,160,182,135, 38,111, 26,159, -191, 74, 77,135, 60,117,238,207,120,134,220, 73,163,183, 71, 67, 44,187,200, 51, -190,212,148,122,238, 24, 13, 24,129,128, 83,120, 30,194, 29,241,136,150,216, 60, - 42,206,234,250,180, 14, 85, 95,131, 30,190,160,118, 82,195,223,236, 27, 89, 22, -203, 98,137,146, 20,108,223,180,135, 56,155, 73,228,164, 81,123, 51,180,199,153, -246,106, 20, 9,167, 23, 80,237, 21,140, 68,179, 17,117, 30, 12, 64,187,137, 59, -149,148,100, 71,111,201,183, 42,156,171,111,244,173,254, 42, 61,158, 32,213, 36, -228,246,220, 45,247,218,225,106,126,112,212, 35,149,102, 82,130, 64, 74,141,110, -229,183,237,217,182,125,181,191,229, 59, 51,238,164, 13,128,129,168,177,157, 82, -136, 72, 68, 68, 97, 73,146,164, 53, 32,132, 24,195,212,153, 7,178,216, 60, 9, -134,200, 8, 24, 33, 82, 32, 37, 18,145,242,191,119, 41,180,156,133,174, 59, 25, -191, 51, 64,137,115,251,105, 15, 65,107,129,151,163,111,128,237, 77, 31,206,132, -139,189, 40,176, 42, 45,153,165, 81,232,243,139, 18, 79, 75, 81, 62,160, 60,251, - 60, 50,127, 87, 14, 55, 66,144, 43, 5,136,210, 12,126,195,243,173, 97, 93, 64, -205,197, 42, 64, 71,203, 48, 80, 14,131,225,102,206,198, 18,160,128, 72, 89,253, - 27,246,245,174, 34,190, 90,251,231, 89, 81, 31, 4,165,206, 14,229,248, 39,154, -138, 5, 51,200,211,203,113,191,118, 38,142,160,235,173,157,108,189,206,103, 47, -230,227,177, 45,158,107,157,114,249,120, 21, 39, 78,187,234, 94, 58,246,165,107, - 64,224, 40, 77, 23,232,231,194, 36,165, 75, 17,149, 96,160,153,248,179,216,128, - 96, 47,128,190,144,232,213, 44,144, 58, 19,205, 92, 22,249, 37,142,193,111,100, -245, 0, 50,164,114,111,150,180,243,120, 75,129, 54,249,130, 23,214,205,231, 70, - 77,252,252,152, 86,196,123,199,170,109, 48,250, 0,100, 18, 88, 0,245, 3,164, - 20,195,152,197,131,254,169,230,205,100, 7,205,162,126,145, 25, 28, 6,103,211, -236,213, 96,162,203,101, 66, 38, 68,254,224, 40, 80,197, 87, 7,184, 3, +// ../Source/Template/GB_AxB_dot3_template.c: +uint8_t GB_JITpackage_69 [1626] = { + 40,181, 47,253, 96,129, 25,133, 50, 0, 70,122,176, 40,192, 84,117, 14,228, 92, +191,111,207,197,152, 60,188,110,206, 71,161,139, 8,157,241,134,216, 94, 63,253, +231,100, 42, 39, 77, 77, 20,251,111,138, 66, 71,113, 46,162, 0,158, 0,170, 0, +156,223,227, 91,169,101,240,187,174,115,245,163,175,106,151,183,253,238,193, 82, + 77, 96, 61,232, 12,202, 95,223,168,124, 53, 57,184, 36, 88,184,211,228, 23,143, + 1,185,185,190,148, 55,142,133, 45,101,173, 45, 75, 6, 68,231,178,241, 7,200, +150, 61,183,183,243,104,207,231,140,159, 20, 18, 14, 18, 44, 13, 8, 7, 9,167, +104,210, 39,219, 31, 18,226,151,248, 81,119,171,215,159, 79, 88,180,168,238,147, +160, 4, 6,227,219, 33, 54, 1,249, 27,117, 6,108, 65,249,217,219,126,117, 6, +185, 3,249,100,175, 22,110, 21,252,126,217, 31,167, 10, 8,162,230,225,114,168, +142,225, 43,231,231,241,205, 20,110,221, 50, 42, 36,102,148,196, 13, 12, 38, 22, + 3,131,188,157,107, 1,138, 8, 35, 81, 68, 19, 70,170, 52, 14,180,111,193,122, + 53,254,248,156,242,124, 67,219,221,253, 8,244,141,134,149, 19,200, 54,202,213, +151, 85,159,156,153, 75,199,198,175,109,235,115,205,175, 5,155, 19,253,102, 11, + 12, 96,189, 95,131,154,229,237,231,238,254,178,199, 43, 21, 43,178,242,210, 59, +100,126,112,141, 68,177,220, 32,175,138, 80, 76, 69,162,181, 25,252,132,227, 20, +132, 73,107, 79,210,209, 38,241, 12, 55,238, 52,123, 10,149,236, 38, 25,236,110, +230,133,148,251,228, 41,191, 95,122, 30, 18,252, 4, 50,223,250,254,210,254,255, +201,100,100, 50,185, 76, 9,134,224,181, 27,135, 83,126,156, 65, 31, 73,239, 55, +116,196,162,185, 8, 13,129, 40, 36, 36,151, 40,207,143, 23, 60, 52,103,248, 79, +122, 33,106, 14,124, 10, 77,246, 54, 40,164, 53, 50,234,211, 71, 73,255, 66, 81, +173, 51,203, 38,170,179,178,187,198,131,133,242,160,109,195,111,180,185, 99,108, +159,242,108, 58, 26, 19, 25, 22,162, 46,150,175,180, 74, 38,233, 22,156,139,147, +161, 32,115,202,190,147,214, 76,196, 71, 52, 23, 73,231, 16, 42,207,188, 67,180, +241,175,186,160,188,150,235,141, 82, 68,159,186, 74,122,149, 77,128,220,221,102, +182,147, 51, 15, 93, 75,171,118,253, 16,155,143,197,230,218, 88,157,235,162,202, + 62, 23, 22, 25,132, 69,204,172,232,193,248, 84, 24,158, 15,150,109, 48, 79,236, + 96, 89, 5, 22, 47,233, 27,211,230, 2, 19,138,178, 44,140,136, 78,188, 62, 28, +138, 55, 26, 10, 84, 42,216, 7,227,100,108, 0, 2,180, 75, 22,112,222,194,169, +209,238,248, 16, 99,203, 24, 99,140,113,138, 49,110, 12,178, 32,213,163, 80, 88, +164,173,247, 41,228,146,254,193, 98,101,237,237,139, 52,238,180,141,153, 78, 92, + 3,112,245, 18, 22, 28, 15,231,218, 96,153, 21, 55,158,204,195,137, 24, 86, 71, +250,198, 19,173,106, 3,145, 81,112, 42,182, 83,114,215,220, 94,219, 33,156,133, + 90,251,172, 21, 84, 64, 64,233,248,112, 57, 84, 22, 10,212,180, 51, 84,140,145, + 67,218,183,195,177, 34,170,234,219,120, 95, 45, 91,170, 42, 21,135, 74, 83,185, + 31,107, 33,252,105,116, 63,143,111,187,110,175,247, 34,176,130,188, 6,129,144, +168,241,173,154,145, 17, 81, 80, 80,144, 20,164,208, 24, 97, 12, 98, 20, 99,218, + 65,234, 1,242, 88,166,227, 57, 8, 81, 2,226,136, 49,156,136, 8,137,136, 72, + 32, 18,136,140,130, 50,221,152,181, 1, 89,239, 88,236,232, 58,130,149,194,143, +188, 92,122,242,220,128, 83,169,161,211, 32, 70, 45,254,195,196,243,190,152,209, +111,139, 26, 81,250,203, 68,204,218,159,166,148,176, 50,112, 2,238, 43,109, 51, +142, 85,249, 98,178, 38,127,110, 39,224, 6,194,150,168,132, 89,226, 76, 61, 58, + 66,191,175,246,101,166,242, 9,248, 10, 74,179, 76,190,140, 21, 22, 28, 2,235, + 89, 63,215, 91,246,200, 6, 99,111, 42,150,196, 27, 76,162,185, 57,233,237,134, + 24, 63,139, 64,195, 8, 5,172,228,208, 89, 13,183, 25,219, 8,189,220, 40,226, + 38, 74, 49,148, 38,215,190,109,197, 94, 58, 98,157, 0,194,201, 13,155,212,204, +253,228,148, 91,162, 44,230,228,174,186, 41, 61, 62,197, 78, 59,125, 54, 54,224, + 17,240, 90,125,178,119, 4,162, 65,124, 60, 87,178,130,200,107,168,198,185,164, +168,202,142,109,249,119,203, 89,179, 11,139, 13,170,180, 34, 22,199,199,172, 24, +165,119, 49, 42,248,111,132, 36, 26, 39, 99, 42,226,130, 40, 73, 86,106,238,166, +135,210,232,147,137, 34,124,248, 84,153,134, 57, 70,172,187, 19,243,105,212,242, +183,180,118, 10, 12, 76,159,101,224, 51,172,247, 50,141,163, 59,110, 90,174,133, +155, 77,121,201,211,118,108,129, 36,247,152,120,154,171, 32,175,122, 22,234, 3, +168, 63,230,158, 29,170, 85,168,233,174,119,208,144,116, 48, 64,157, 14, 70, 42, +131, 18, 83,111,240,194,168, 82, 44,167,218,189,184,252, 31,131, 95, 65,249,255, +156,158, 5, 35,208,251, 0, 31,127, 52, 49,125, 39,202,162, 68,245, 29,110, 99, + 47,172,186,172,107,172,155,104, 18,109, 43,134,147,142,190, 8,189, 56, 48, 0, + 40,122,147, 83,205, 58, 81, 43,158,165,240,240, 68,252,128,230,100,108,179,179, +181,132,193, 98, 48,194, 18,151,182,180,117,244,177,132,133, 44, 9,255,112, 65, + 9, 45, 40,162,235,138,116, 37,116, 18, 72, 87, 47, 54,198,111,208,151, 17,148, +106,230,192, 6,121,189,149,115, 47,150,253,112,127, 50,101, 17, 29,221,210, 56, + 60,104, 72,194, 2, 18,156,129,209, 8,149,215, 66,236,172, 59, 47, 93,219, 40, +148, 82, 97, 45,178,166, 78, 57,226, 86,196,244, 20,120,169,148, 75,194,151, 3, +100,156, 7, 79,228, 29, 77, 87,128, 26,180, 99,232,194,182,160, 7, 98, 2, 35, + 10,233,116,203, 77, 81,171,170, 54, 52, 27,207, 13, 44,177, 28,223,109,207,220, + 70,140,139,158,114, 10,193,230, 0,190, 4, 23,164, 83, 52,112,224,102, 91,208, +187, 17, 67, 10, 75,180,128, 17,240, 96, 70, 72, 28,192,249,164,197,241,137, 40, +200,160, 41, 67, 41, 38,179, 34,242,164, 8, 39,231,240,135, 72, 36,184,196, 25, +250, 16,130, 38, 28,128,224, 39, 6,171, 72,216, 76,196, 88,134,127,110,149, 76, + 47, 82,204,146,150, 44, 61,166, 73, 12, 46,161,199, 46,164, 81,130, 63, 80,106, +214,116,129,122,242, 37,111,193,120, 95, 97,178,109,129, 43, 11, 17,111, 0,231, + 18,230,206, 80,101, 60,160, 94,204, 1,108, 29,130, 2, 6, 21,105,167,126, 90, +180,126, 36,104, 87,201,172,167, 28, 27, 28,175,151, 65,214,171,163,171, 10, 24, + 75,115, 29,197,229,218, 57, 62, 7, 15,165, 89,208,180, 86,216,150,191, 11, 79, + 19, 2,129, 12, 19,169,216,149,144, 1,213, 95,179,180,108, 53,155, 39,186, 77, +199,153, 29,107,186, 25,147, 17, 51,169,216,153,247,115, 35,106,113, 57, 72, 11, +183, 56,235,159,187,255, 37, 39,174,248,188,127, 63,164, 62, 96,170, 81, 81,226, +155, 6, 42, 57, 24, 92, 46, 39, 63,200, 32, 23, 85,141, 71,232, 99,140, 71,120, + 52, 83, 68,247,190, 11,217,226,121, 14,252, 96,147,176,156,116,194,170, 45,113, +111,188,116, 82, 48, 67,159,122,101,221,111,152,135, 44, 98,180, 71,194,229,229, + 31, 8, 36,192, 20,253,166, 9,253,193, 36,168,106, 74,100,197,206, 67,242, 15, + 0, 95,169,195, 34, 3, +} ; + +// ../Source/Template/GB_AxB_dot4_cij.c: +uint8_t GB_JITpackage_70 [1108] = { + 40,181, 47,253, 96,196, 19, 85, 34, 0,198,108,139, 33,208, 92, 23, 3,152,106, +251,250,230, 58,198,210,204,165, 70,110, 0,234,204,179,160, 25, 68, 82,166,126, + 25,165, 30,184,224, 2, 2,130, 0,121, 0,134, 0,249,188,190,190,247,180,196, + 97, 97,176,169,177,162,222,187,108,111,121, 55,182,100,104,176, 26,219,241,106, + 12,163,138,231, 64,218, 86,182,218,126,174,119, 10,117, 63, 55, 77,239, 28, 99, +145, 88, 24, 30,138,196,226,131,113, 59,167,111,171, 86,126,240, 14, 75,237,147, +117, 67,231, 64,158,230, 75,161, 53, 99, 58,171,115, 69, 65,118,223, 20,164,145, +103,106, 91,214,159,207,178,219, 62,130, 96,112,185,110,243, 62, 41,124,160,226, +238, 6,190, 27, 15,170, 59,138,141,125,146,226,247,242,196, 15,115, 4, 66, 51, + 32, 16, 1,226,183,189,188,128, 61,166,228,153,209, 91, 19,133,175,126,125,247, + 1,136,158,219, 14, 54, 66, 22,140,197, 67, 10,137,160, 9, 68, 75,127,129,223, + 53,242,157,235,214, 98,225, 32,250, 45, 54, 28, 27,223,111,141,207,241, 96,241, + 73,186, 48, 7,219,247,147,171,238,248,109,245,223,133,194, 12,190,103,165,227, + 88, 15,195,245,101,122,155,218,174,211, 52,235,187,206,230,116,167,229,182,168, +255,191,166,201, 52, 13, 60,137,235, 57,180,178,246, 61,153,102, 90,126,231,178, + 69, 97,169, 7,117,191,203,132, 64,159,240, 34,114,194, 77,195,209,112,160, 42, +235,114,219,246,210,172, 54,143, 11,198, 72,227,217,128, 98, 6,243,178, 38,202, + 58,199,131, 23, 4,162, 96,205, 83,122,110,215,211, 44, 49,225,183, 96, 44, 24, + 14,133, 67,113,185,104,157,158,131, 64, 64, 34,141,199,180,179,129, 70,241, 74, + 60,240,189,125, 16,121, 12,223,250, 59,126,176,109,159,124,167, 40,124,243,101, + 89,253, 1,121, 79,124,178,126, 92,173,121,158,167,237, 50, 12, 39,252,132, 27, + 11, 72,252,132,158, 71,252,116, 70, 26, 12,226, 26,141,232, 34,130,194,154, 54, +211, 34,147,163,240,221,186,142, 22,133,193,114,205,251,158,114,221,110, 90,156, +237,234, 54,219, 20, 73,218, 86,213,147,194,200, 51, 24, 40,213,156,173,170,205, + 39, 83,233,167, 47,223, 82,211,202, 75,226,213,170,240,161,231,208,115,171,237, +161, 78,197, 84, 40, 92,114,244,145,123, 40,186, 85,194, 14,167,179, 17, 57,157, + 48, 4,138, 42,150,143, 88,217,132, 32,209,219, 96,188,143,199,234,145,167, 48, +144,216,138,213, 28,121,171,144, 5,116,185,116, 10, 55,121,104,233,215, 91, 37, + 78,193,247,176,188,177,253,214,138, 85,128,228,168,193,157, 51, 52, 35, 51, 19, + 36, 5, 41,165, 49, 64, 68, 32,198, 20, 86,231, 82,248, 64,198,210, 12, 50,142, + 16, 68,136,128, 8,145,184, 33,113, 50,129, 80, 5, 66,230, 1, 0,145,139, 68, +186, 52, 72, 20, 26,185, 55, 44,252,103,100, 89,207, 86,107, 69, 26, 2,169, 70, +210, 14, 0,178,165, 31, 77,145,145,162,176, 19,101, 79,180,251, 19,179, 91, 54, +231, 87,136,247,178, 48, 6,136,236, 42,121,139, 28,150,193, 21, 11,119,195,161, + 30, 47,161, 67,122,133,138,125, 21,218,223,126,234,130, 95, 30,204, 86,255, 57, + 20,233,109,241, 11,245, 17, 48,148,177,215, 24,129,184, 36,142, 20,245,148, 33, + 45, 28,209, 71, 88,201, 77,106,136, 2, 32,107, 65,210, 48, 43, 9,237,100,192, + 60, 57,164, 88,243,167, 78, 24,129, 23, 51, 33, 5,208,241,170,135,111, 21,238, + 80, 25, 9,132,123,207, 7, 6,163, 98,183,246, 97,181, 27,230,217,246, 46, 65, + 65, 32,112,210,134,120,176,165, 74,202, 10,171,117,164, 82,185, 65,101, 36,171, +248,111, 87, 54,172,103, 98, 88, 21,222, 25,209, 23,249,151, 68,157, 10, 38, 98, + 73,128, 24,126,245,165, 8, 64, 72,218, 87,210, 26, 71,134,171,189,170, 71, 11, +182, 5,195,140, 67,191,147,177, 55, 47,209,198,180,254,141,142, 30,148, 18,111, + 88,179, 93, 41,128, 22, 78, 62,149,176,127,217, 1,215,116,157,150, 11,226,101, +250,184,250,124,174, 2,236,191,119,154,110,157,180,151,198, 79, 72, 27, 23, 12, +173, 39,227, 47,138, 1,150, 64, 58, 44,139,147,120, 61, 66,174,224, 24,111,101, +166,118, 34,102,143, 51, 44, 14,174,185, 86,161,137,213,244, 57, 33, 90, 84,251, +114,249,236,102,211, 59,208,193, 10,213,227,225,123, 28,177, 8,238,181,178,108, +154,202, 30,120,253, 8,188, 55, 56, 64, 59,162,217, 12, 33, 92,198,245,250,165, + 50,241,127,115,124, 66, 7,234, 6,173, 74,180, 79,212,173,204,159, 75, 53,156, + 29, 77, 74,144, 30, 65, 19, 83,185,245, 14,200,206, 30, 27, 27,107, 72,142,130, + 18, 34,103, 1, 28, 79,101, 1,203, 82, 60,112,168,225, 4, 5, 72, 33,234,197, + 72, 23, 78,167,239, 59,178,177, 64,137,188, 69, 23, 3, 66, 36,102,170,154,174, + 10,127,231,140, 72, 30, 32,238,147,254, 55,201,165,158, 69,225,228,252, 56, 35, +158, 80, 15,238,199, 53, 25, 71, 72,185,105,190, 63, 51,105,202,137,251, 4, 54, + 12,233,176, 70, 41, 77, 2, 60, +} ; + +// ../Source/Template/GB_AxB_dot4_meta.c: +uint8_t GB_JITpackage_71 [1390] = { + 40,181, 47,253, 96, 73, 16, 37, 43, 0,102,186,173, 40,208,210, 56, 7,104, 33, +108,194, 55,174, 67, 96,233,196,246,146,228, 40, 58, 88, 83, 81, 40,240,111, 50, +144,140, 88,224,203,162,244,186,140, 82, 15, 13,176,188,161, 0,150, 0,168, 0, + 50,222,122,204,174,221,177,229,237, 62, 68,175, 53,157,116,187,254, 11,203,200, +121,150,217,215,248,126, 94, 71,229,181, 25, 79,234,122, 99,119,237, 81, 82,112, + 57,176,240, 38,163, 7,223, 80,185, 67,125, 39,107,150,133,237,100,217, 28, 75, +134,230,226,162,241,168,178,229,207,237,221, 60,250,115,142,131,159, 16, 14, 10, + 14, 44, 11, 6, 5, 7,167,200, 73,143,162,230, 23,248,210,118,105,215,215, 39, + 16,228, 80,155, 23,171, 68, 3,219, 26, 61, 16,223,254, 64, 18,142,251, 66,183, +253,234, 92,121, 3,249,100,175,252, 52, 90,189, 63,246,232, 84,101, 0,102, 8, +170,191, 33, 94,238,176,132, 75, 53,140, 34, 65,140,146, 56, 6, 35,177, 96, 48, + 1,245, 78,142, 28,249,218,105,209,217, 32,149,183,235,249, 47, 26,135, 52, 23, +251,246,236,251,233,227,226,104,178,149,189,210,118,174,241,212, 43,197,192,135, + 44,147,206,211,235,145,248,147, 57,179,113, 59,233,193, 82,201, 26,185, 40,237, + 38,123,202, 62,221,143,158,218,174,254,203,236, 87,203,241,172, 44,250,101, 81, + 68, 11, 87,175,196, 77,122,173,255, 98, 43,223,217,212,155,180,175,156, 95,200, + 14,148, 60,217,113,119,217,149, 39,123, 84, 26,186,198,246,251,213,232,118,185, +187, 84,223,110,131,156, 39,213,206,217,103,148,215, 70, 73,231,111, 12,169,216, + 43,221,169,210, 27, 43,123,244,221, 39, 3, 24,232, 24,103,211,249,108, 42,176, +203,162, 8,181, 64,215,218, 40,163,186,183, 45,203, 24,188, 7,139, 71,253,202, +174,215,114,173,220, 33,243,201,220, 72,254, 98, 9, 10,119,246,175,157, 84,194, + 95,246,184, 68, 50,242, 73,164,209,192,139,131, 97, 65, 81,159, 62, 68,217,228, + 20,230,212, 54, 6,189, 79, 36,248,169, 69,113,114,200,169, 54, 26, 76,229,153, + 76,168, 47,138, 92,179, 87, 48,119, 56,133,139,179,187,202,175,128,155, 15,133, +113, 96,199,178,248,108, 46, 44,194,250, 47, 34,225, 56,133,242, 38,232,125,126, + 2, 18,202, 7,245,202, 41, 61,137, 38,240, 25,130, 39, 92, 30,205,236, 16,107, + 2, 18, 73,149,177, 59,197,155, 62, 90, 78,170,132,107, 35,209,165,236,165,165, + 74,175,140,161, 0,121,225, 27, 57,175,227,139, 5,108, 23,219,152,130, 65,188, +220, 5,156,181,143,147, 83,193, 0, 94,155,202, 33,155,175,156,101,115, 54, 78, + 43,178,241,206,223,217,111,128, 56, 69,150,110,107, 92,214,213,217,104,172,142, + 53, 27,171,108, 4,233, 79,239, 40,216,224,237, 86, 85, 85,253, 20, 69, 81, 20, +137, 50, 33, 93,157, 11, 94, 0, 76,126,129, 58,158, 42,192,222, 74, 61,239,179, + 1,175,180, 86,141,229,233,120, 44, 48,141, 14,132, 16, 66, 8, 33,132, 16,194, +138, 50,249,245,217,128, 64, 16, 70, 8, 33,132, 16,194, 80,107,211,129, 82,147, +103, 56, 74, 51,182, 28,123,232, 6,244,129, 23,160, 11,104,113, 89,148, 23,187, +219,217,103,115,161, 49, 17,129, 71,168,129,189, 81, 72,102, 38, 72,146,130, 36, +141, 1,209, 12, 49,136, 90,203,138, 7, 50,177, 76, 5,147, 16, 35,202, 40, 66, +200,136,140,140, 72, 48,129,136,164, 32, 5, 37,133, 7,120,172, 69,196,159, 3, +196, 82,223,124,247,191, 34,228,188,182,241, 96, 36,173,127, 71,166,184,217,239, +151,154,180, 89,199, 79, 26,243, 82,165, 29,179,125,169,146,205,138, 41,163, 12, +159, 19,126, 99, 10,247,215, 48, 94, 69, 12, 55,153,142,110,217,181,124, 70,245, +245, 57,184, 34,182,193, 71,115, 16,213, 77, 69, 26,244,133,174,128,218,127, 64, +200,114,182, 69,127,163, 91,221,147, 74,247,172,154,101,175,241,188,168, 49, 93, + 92,135, 14, 10,208,159,113, 14,110,181, 23, 41,144, 63,217, 17,254,157, 38,182, +147,181,136,167,144,141,146,181, 20,214, 41,161, 28, 81, 89, 22,140,191,208,188, +192,159,156,245,211, 99,176, 65,140,133,107,184,122,196,186,128, 82,232,161,130, +240,231, 17, 66,226, 10, 64,157, 55, 16, 94,169,110,100, 46,206,209, 22,151,248, +143,146,137, 68, 21,141,186,179, 9, 9, 1,202, 32,205,160,217,115, 41, 94, 34, + 52,102,208, 8, 50,254,127, 49,255,176,205, 74,200,136,168,155,128, 58, 16,133, + 46,136,209, 47,108,138, 29,176,203, 25, 35, 16,110,157, 78, 6,126,217,213, 41, +204, 41,112,195, 47, 99,236,153,161,159,156,136,150,160,221,136,112, 21,252, 25, +180,157,119,172, 84, 66, 97, 65, 36,177, 11, 19,222,201,242,248, 32, 91, 12,234, +192,177, 63, 9, 22,140,239,198, 45,135, 67, 39, 62,158, 94,150,129,152,117, 14, +149,135, 84,102, 68,235,196,215, 76,249, 71,107, 27,185, 88, 65,232, 90, 49, 78, +144,168,142,254,117, 85, 15, 89, 94, 3, 40,205, 37,136, 17,216,119,161,216, 27, +153,149,215,195,161,191,213,163,142, 44, 98,217, 12,239,193,234,143,252, 35,240, +184, 8,107,183,132,233,110, 80,224,225,102, 58,132, 15, 62, 96, 85,154,126, 36, + 21,253,179, 42, 57,182,183,252,166,188,212,131,207, 95, 27,137, 59,211, 19,163, + 70, 72,120,144,183,190,247,188,162, 69, 35, 73,170,122,244,100, 37,104, 73, 80, + 54, 41,238, 71,199, 3,232, 93,178,247,180, 59,254,222, 38,255,125, 91, 34,130, +220,217,179,142, 66, 16, 93,136,224, 75, 17,115,166,129, 30,253,222, 87, 34,105, + 61,161, 70, 73,132, 96, 5,114,236,250,137,223,103, 29, 70,175,169,153, 39,232, +208,216,124, 82,218,139,205, 94,247,169,227,222,142, 39,252,249, 98,199,248,188, +161,180, 40,216, 11, 43,113, 56,193,161,193,188,225,229, 88,184,247,225, 35, 8, + 28, 7, 4,168,196, 35, 62, 53,181,107, 28,110, 9,214, 96,136,161, 63, 99, 44, + 61,125, 11,200, 3,156,138, 92, 22,251,145, 38, 33,130,156,147,131,118, 56,111, +151, 29,157, 22, 63, 66,151,150,110,115,137, 89, 60,165,193,203,124,153,138,191, +210,254, 74, 85, 80, 77, 34,197, 95,224, 11,170,215, 27,229,237, 27,160, 72,122, +122, 25,187, 22,166,116, 56, 48, 61, 71,108,154,183,218,244, 87,142,140,149,159, +119,167,232,213,173,107,233,225,114, 2, } ; -// ../Source/Template/GB_coverage.h: -uint8_t GB_JITpackage_90 [241] = { - 40,181, 47,253, 96, 36, 1, 61, 7, 0, 66,142, 46, 21, 32,223,161,167,221,197, -173,152,155,244,117,174,169, 93, 51,240, 19, 66, 32, 51, 52, 0,160,250,244,237, - 16, 47, 73,254, 77,166,249,175,231,175,220,191,221, 1, 4, 65,146,133,143, 19, -103, 74,172,241, 95,159,254, 57,226, 61,165, 91,244,237,175, 87,123, 26, 0,153, -121, 97,211,119,137, 93,165,246,244, 85,125, 0, 32,134, 82,116, 22, 61,227,137, - 63,114,247,170,255,111, 79,181,162,207,111, 71,253, 86,140,150,103,164,189,150, -251,220, 63, 62,127,118,245, 31,111,219,137, 19,139,130, 40,133,147, 32, 10, 31, - 80,129, 19,179,175, 79,139, 27, 19,191,217, 15,187, 62,228, 4, 56,109, 20, 27, -159, 50,246,244, 89, 62, 99,176,127, 79,131, 64,200, 95,207,231, 63,247,207,185, - 12,171,252, 97,141,190,158,114,175, 97,212,164, 48,126, 28, 64,113, 28, 1, 15, - 0, 88, 0,131,169,193,205,174,156,183,217, 78,197, 66,197, 2, 57, 18,162,136, -221,131,230,207, 51, 83,180, 9,108, 53, 15, 24,148,217, 4,243, 76, 66, 40, 10, -220, +// ../Source/Template/GB_AxB_dot4_template.c: +uint8_t GB_JITpackage_72 [4767] = { + 40,181, 47,253, 96,160,183,173,148, 0,170,119, 44, 22, 45,160,172,174,115,218, + 2,183,125,243,219,143, 33,195,235,246,190, 99, 56,189,138, 94, 50,174, 94,209, + 64, 84, 37,154,162,112,183,138, 29,208,114,106,194,235,240, 58, 24, 11, 94,169, + 79, 1, 87, 1, 87, 1, 16, 38, 48,141,115,241,186,155, 1, 58,158, 29, 6,120, +165,181,178,128,134, 2,237,210,185, 76, 92, 36, 34, 20,112,180,204,131,140,199, +221,244, 90, 64,163,225,240, 73,198,217, 95,229, 43, 65,122,135, 51,161,161,104, + 24,108,226,146,217, 84, 58, 90,101,131, 97, 40,149,136,107, 89,182,247, 2,220, +133,146,155, 45, 96, 70,206, 86, 79,246, 74, 27,176,123, 18,250,246, 99, 82, 6, + 69,252,201,188,217,232,185, 8,226, 65,225,106,148,145,179, 30,174,169,237,212, + 13,233, 39, 61,181,253, 75,103, 40,234,106,217, 70,238, 50, 54,199,160,253,157, +241, 86, 10,126,125,174,241,150, 67,125, 35,215, 18,236, 43,195,239, 11, 58,156, +205, 69, 98,115,193, 40, 24, 36, 80, 24, 28, 93,170,210, 27, 43,131,244, 95,200, +113,209,222,248, 97,204,174,253,177, 61,123,238, 61,250,174,233,164,223,217,211, +249, 25,152,123,204,126,199, 55, 4, 63,202,189,155,241, 13, 8,131,245, 96, 15, + 23, 65,236,146,202,237,245,157,220, 93, 30,108, 39,115,141,121, 60,136,160, 96, +232, 56, 84,217,242,230,246,122, 48,122,115, 41,177, 83,151, 5,177, 30, 7, 42, +136,245,137,147, 78,217, 14,197,136, 51, 96, 31,121, 46,253,186,115,138,131, 97, + 50, 15, 24,171, 69,194,182, 70,144,195,183, 67, 78, 67,202,208,187,237, 83,206, +149, 61, 25,167,236,229,194,142, 86,240,143, 29,122,182, 80, 0,155, 56, 40,191, +132,111,148,224,199, 87,139, 92,218,105,153, 8,211, 50,203, 27, 26, 26,143,134, +134,119,242,175,173,237,129,226,189, 68,139, 24,128,156,146,164,123, 50,114,229, +172,235, 1,134, 34, 67,209, 22, 88, 68, 44, 41, 18, 21, 28, 44,183,144,118,175, +244,212,141, 84,122,150, 75,102, 93,214,101,160, 50, 80, 73, 72, 88, 27,158, 66, +128,128, 83,129,161,144, 92, 97,194, 84, 34,200, 9,252, 74,159,164, 27, 78,159, +145, 37,165,155,244, 9,150,137,203,230,146,169,112, 52,109,163,121,128,201, 88, + 98,204,182,143,151,252, 21, 10, 8, 29,141,114, 65,185,209,193,241,161, 90,162, + 52, 54, 53,214, 88, 99,157, 57,124,178, 12,113, 95,248,135, 2, 78, 31, 74, 34, +101, 15, 14, 91,150, 85,142,243,133,197,173,241, 90, 13, 3,221,192,128,205,225, +204,181,180,219,124,131, 22,175,157,148,171,244,130, 93, 57,203,221, 47, 99,220, +225,176, 32, 27,239,252,131,195, 33,159, 72, 83, 69,113,253,197, 57,234, 36,150, + 30,206,126,154,146,237, 34, 87,207,213,190,112, 74,150, 50,130, 31,125,252, 48, + 98, 5, 5, 56,188,187,179, 25, 98,189, 31, 85,250, 49, 87,203,178,111, 39, 67, +154, 81,249, 94,108,222,201,205,181,231,241, 71,178, 70, 25,114,125, 59,234,185, +252,221,182,167,115, 73,101, 83,209,169,144,104, 0,227,119,123,251,246,137,227, +148,255,127,163, 49,161, 49,101, 39, 64,224, 19, 6, 83, 33,113, 10, 20, 78,129, +101, 58,151, 76,146, 46, 64,139,139, 40,151, 60,193, 39,106, 91,155,173, 81,164, + 79,254, 9,164, 62,205, 73, 2, 26,148, 72,167, 98,121,165,222,187,136,139,102, + 66,147,209, 2,167, 40,233, 12, 54, 26, 7, 26, 69,131,193, 96, 16, 19, 92,215, +107,185, 46, 88,154, 3,201, 51,210, 83,153, 36,131, 72,168,198, 39, 11,192, 49, + 4,120,129, 71, 71, 16,115,192, 64, 22,247, 52,246,201, 32,149, 94,142, 67, 94, + 55,178,233, 1,147,166,132, 25,165,115, 48, 88,131,137,200, 41,201, 33,213, 39, +147,127,221,133, 54, 9,204,176,208,251, 59, 43,181,209, 50,199, 69,107,111,243, + 86,192, 98, 39,119,103,136,247,112,161,149,178,103, 80, 41,163,101,218, 77,214, + 39,230, 64,149,102,220,193, 89,194,140, 93, 57,131, 61,233, 83, 37,253,146,209, +140,212, 13, 59,227,212,118, 41,251,218, 59, 99,215,218,150,122,112, 88,189,203, + 36, 1,184,132,209,108, 38, 42,248,107,217,159, 25,116,130, 44,157, 84,118,138, + 55,236, 18,219, 73,234,249,164,125, 41,149,191,150,206,236,108, 41,104,103,172, +157,145,156,244, 49,111, 4,255,233, 19, 29, 14,101, 12,253,209, 35,138, 31,109, +246,215,176,112,144,126,180,176,169, 92, 48, 20,151, 14,166, 34,115,185, 20,225, + 27,141, 86,225, 96, 23, 74,133,161, 99, 41,105,157,225,121, 59,189, 29,243,252, +165,115, 70,206, 70,239,163,202, 33,182,146,134,249,141,130, 10,103,131, 81,112, +164, 70,133,201, 57, 20, 45,134, 61, 30, 16, 21, 64,145,235,118, 97,241, 45,155, +253, 12, 3,221,145, 57, 48,240, 20, 72,122, 71,227,112, 60, 28, 4,162, 84,104, + 17,153, 11, 71,195, 50, 22,108, 67,193,214,241,234, 17,229, 3, 12,212,169,112, + 36, 36, 52,147, 67,140,106,141,134,215,221, 28,221,254,226, 13, 67,209,147,101, + 89,150,125, 98, 75, 58,126,182, 10,140, 81,249, 59,189, 87,196, 19, 4,154,128, +113,107, 8,233,157, 77,133,195,193, 38,138,186, 2,202, 6,131,176,193, 38, 46, +153,150,185,108, 58,245,122, 44,171,199,214, 18, 41,227,187, 26, 57,219,221,214, + 82,118,174,212,227,237, 12,130,177, 31,182,152,129, 24, 40,157,101,123, 50,232, +125,183,112, 4,135, 24, 93,240, 3,163,164,191, 5, 46, 46, 30, 48, 6, 43,163, +173, 28,138,245,222,118, 53,102,128,184, 24,121,210,142,251,232, 35, 25,185,222, + 25,210, 73,169,141,163,237, 84,199,183,169, 4, 69,108, 39,142, 63, 30, 16, 25, +120, 81, 61, 28, 89,132,100,159, 13,204, 50, 14,209, 45,182, 60, 53, 35,119,127, +202, 1,129, 74,101, 35,193, 92,175,235,186,174,235,138, 68, 34,215,117, 69,174, + 43,114, 93,145, 72,196,138, 92,215, 21,177, 44,203,178, 44,235,186, 44,203,186, + 44,235,178,172,235,186,190,112, 89,150,117, 85, 19,135,163,186,197, 82, 77, 86, + 37,153,125,235, 49,218, 44,150, 10,213, 29,211,133,197, 45,213, 31, 50, 9,132, +235,235,224,123,100,208, 90, 57, 52, 29,149,117, 49,233,136, 8,140,173,140,222, + 41,208, 41,234, 3,202,192, 83, 34,236, 20,104,241,126,131, 30,192,105,161, 79, + 65,184,238, 8,142,139,178, 79, 7,201, 43,201,175, 12,227,231, 15,233, 30,206, + 82,145, 91,159, 87, 15,235, 35,169, 34, 85, 85, 77, 16, 54,154, 76, 37,163,117, + 42, 52, 90, 86, 45,210,103, 13, 47, 87,143, 18, 8,133,106,168,147,249,130,212, + 41, 52, 51, 50, 34, 73, 82,144, 52, 6,163,113, 8, 80, 72, 68, 50,145,147,134, +218, 34,235, 3,163, 49,226, 65, 80, 16, 24,194, 32, 12,129, 16,144,128, 65, 16, + 20, 65, 24, 4, 65, 17,129, 33,132, 24,129,145,134, 24, 3, 85,154, 7, 3,170, +162,222,231, 73,109,228,120, 48, 25,235,110, 59,190,122,219, 72, 85,250,129,243, + 33,124,230,130,173,216,240,166,155, 44, 38,153,103, 12, 94,138,134,184, 55,100, + 24, 21, 70,107,101,232, 47,223,138,134,140,160, 82,233,177,203,180,149, 14,205, + 72,145, 36, 2, 74,153,175,241, 86,170,124,161,104,122,185,232,137, 19,161,184, + 63, 19, 71,227, 54, 0,146, 87,160,201, 12,202, 96,227,252,218,185,166,105,254, +139,221,214,183,164, 44, 82,196,202,137,194,213,162,157,116,121,127, 90,144, 57, +245, 67,211,159, 55, 60,180,188,124,151, 6,110, 48,192,242,125, 80, 49,132,189, + 29,111, 8, 55,182,203,101, 3, 4,105, 71,101,224,173,234, 43, 90,217,109, 51, +198,196, 3, 52, 65,172,113, 79, 10,156,223, 95,129,254, 18,125, 72, 12,226, 82, + 47,199,171,118,203,152, 59, 85, 98,188, 79,230, 62,137,110,185,162, 77,167,226, + 56, 30, 52,106,156,149,255,145, 46,173,254,172,240,152,100, 81,156, 41, 29, 74, +230, 53,170, 36, 60, 36,178, 55, 0,136,200,211,182, 29,124,195,218,183, 96,170, +142,195, 59,180,166, 47, 85,210, 42,220, 2, 39,169,196, 81, 34, 28, 62, 7, 36, + 22,235,171, 59,169,241,152,214,153, 78,118,210,254,124, 76,215, 33,211,131, 52, + 95, 43, 46, 38, 64,122,237,111, 76,203, 58,194,129,248,152,161, 18,136, 22, 26, +106, 82,225, 71, 19, 27,113,218, 69, 2,234,213,114, 99,122, 56, 63,131, 12, 93, +100, 26,133, 44,240,144, 10, 65, 74,240, 24,137,191,210,116,111, 19,227, 25, 8, +216,146, 94, 38, 30, 46, 96, 72, 19, 79,103,169,210, 46,225, 26,235,233,103,107, + 54,179,109,145,197, 91, 43,133,175,230, 66,193, 84,212,218, 59,247, 37, 9,226, + 69,174,220, 67,127,182, 86,135,137,252, 58,112, 17, 50,242,164,200,231, 86,214, +205,119, 1,108,126, 75,175,171, 30, 17, 98, 91,237, 29,242,102, 65,141, 98,175, +204, 86,140,148, 49, 35,149,138,248,231,231, 70,252, 21,107,216, 38,221, 1,228, +126,246,132, 28,141, 17,185,163, 77,149, 21,146,123, 86, 84,161,152,220,137,156, +156,104, 2, 94,147,244,159,128,123,222, 61,129,162, 95,148,211, 15,209, 28, 65, +187,227,100,242,126,153,142,128, 60,168,216,190,211, 9,233, 78,131, 94, 43,220, + 78,164, 13,204,244,170, 64,148,252,223,108, 40, 73,206,205, 46, 35, 69,120,148, +229,217, 58,170, 73,226,146, 49,218, 39,242,213,159,197, 16, 81, 8,217,179,150, +139, 38,138, 44, 91, 77,160,133,140, 91,208,204,248,194,170,115,212,207, 78, 33, +159,191,182,112,235, 88,232,155,106,171,147,233, 23,176,170, 54,130,244,189, 4, +228,113,121,245, 3,255,239,231,209,167, 99,108,140,181, 39,188,189, 45, 12,214, +100,229, 31,130,192, 47, 85,145, 33, 9,224, 73,123,212, 30,113,252, 71,153,213, +227,100, 50,144,227, 79,178, 65,227, 11,178,219,226, 30, 72, 24, 28,126, 99, 89, + 94, 19,214, 32,158, 20,197,129,139,227, 22, 95,180,243,240,190, 58,110,142, 3, +197, 13, 13, 56, 55,102, 87, 50, 91,172, 96,164,193, 82, 25,101, 43, 67, 34,181, +248,235, 69, 19,252, 93,243,188, 11,112,140,221,224,159,177,239,213,247,155, 36, +176,191,118,114, 29, 14,230,134, 17, 4, 35,219, 48,221, 96, 94, 27,190,176,133, +103,195,171,211,109,216, 41,187, 97, 29,153,173,204,184,243,244,163,148,102,113, + 19,108, 20, 10, 8,250,254,241,226,195,118,105,105, 67,151,205,158,134,209,199, + 47,240, 40,126, 69,201,153,143,145,109, 86, 65,235,159,236, 82, 24,135,249, 45, +198,247,235,147, 80, 78,205,249,201,119,159,231,253,174, 94, 74,217,227, 98, 3, +112,245,166, 11,202, 46, 94, 53,213, 88,227,128,169, 82,183,189,203,204,166, 34, + 13,106,208,155,185, 15, 17,126, 40,190,130, 62, 18,151,146, 23,213, 87,148,115, +107,174,170, 56, 2,142, 69,235,176,134,121,158,220, 72,254,240,127,229,209,210, + 49, 21, 90,239,167,244, 1, 25, 34, 40, 9,251, 28, 33,150, 41, 78,137,148,162, + 28, 65,160,147,128, 11,215,231, 59,133, 53, 36,153, 35,171, 96,212,211,222,186, +242,179,251, 7,178, 71, 62,234,113,239,123,237, 16, 95,249, 76,123, 17,154,138, + 69, 20,181,156,153,226, 37, 46, 6,107,177,122, 88,163, 35,238,119, 82,252,192, +119,169,134, 39, 95,176, 35, 41,245,207,106,136,148,136,137, 8, 98,213,144, 83, +102,183, 0,138, 99, 76,236, 87,146,160,152,245,194, 49,116,218,154,134, 45, 65, + 92, 4,224, 72,250, 66,120,165, 0, 68, 90,123, 67,110, 21, 96,212,144,182,186, +206, 13, 36,156, 69,205, 94,236,250,149,151,197,219, 53,115,173, 20, 57, 20, 42, +117,149, 72, 37,156,122,184,168, 10, 76, 39, 96,148,234,151,183, 70,229,250, 17, + 25, 22, 38, 79,196,240,245,102,151,239,211, 27,133,113, 38,176, 38,197, 54, 73, +161, 56,208,130,202,232,226,196,151,100, 93,160, 66, 97, 19, 29, 88,155, 33, 76, + 90,226, 70,162,128, 9,203, 51, 15,254,160,206,240,157,163,141,135, 54,246,243, +117, 52, 96,230, 7,150,219,228, 91, 63,122,184, 48,143, 45,119,127, 58,149, 77, +200,200, 11, 64, 12, 62,162,238,214,152, 99, 9,189,228,231,127,180,248, 1, 99, +147, 35, 27,103,251,248,218, 5,174,242, 14, 20,219,173,122, 0,245,192,171,254, +126,226,188,181,165, 20, 95, 30,150,154, 65, 84, 23,106, 12,211,135,125,190,143, + 18, 7, 97,201, 13,126, 54,206,199, 27,128,116,253,197,235,112, 93, 74,139, 77, + 8, 73,218,150,129, 58,235, 72, 7,107, 4,160, 6, 38,110, 32,190,126,176,241, + 1, 67,216, 5,203,223, 34, 73, 82, 54, 39,132,107, 86, 36,208, 17,235, 77, 34, +235,231,178,247, 19, 27, 48, 28, 34,129,128,160, 96,149, 83,237,237, 95,181,172, +147,168,215,143,105, 32,217,213, 2,174,154, 82,169,249,253, 15, 37,197, 38,221, + 31,235, 15, 36,135,189, 20, 33,240, 55,131,252,213, 53, 42,105, 96, 18,240,113, +127,209,151,158,170,168, 50,143, 20,218,142,212, 75, 25, 58,160,177,252,148,130, + 13, 65, 99, 35, 0,174,202, 12, 35,192,110,204,193, 51,134,224, 61,121,212, 5, + 56, 45,163, 71, 12, 20,132, 6, 77, 74, 72,105, 64, 51,134,115,171,117,224,216, + 27, 63,188, 67, 48, 83,112,131,240,107,214,253,248, 28,238,191,227, 48,102, 94, + 61,199, 17,207,182,250,145,190,101, 10,163,144,169, 35, 8, 81,129,228,194, 61, + 98, 61,135,201,151,124, 50,126,195, 57,249, 71,150,115,156, 66, 42,187,154,242, +187,220,122,230, 74,148,237, 38, 36, 85,234, 12, 10,210,170, 84,250, 70, 95, 26, +230,185, 84, 62, 44,193,249, 93,142, 81,152,170,162, 90, 42, 76,182,148, 20, 64, + 48,214,214,163, 20,103, 63, 62, 2, 93, 8,132, 41,103, 61,102, 91,143,222,119, + 15,122,126,155,228, 38,219, 38,163, 75, 12,213, 17,180,206,167,138,127, 23,128, +142,184,205,162,223,198, 38, 77, 64,255,199,182, 90,239,196,146,207,122,238, 36, +149,184, 33, 2,237,242,181,208,160, 63,207,174,127,244, 65,176,227,207,213,163, + 33,212, 73,194, 63, 53,194,125,102,253,144,233,133,241,192, 23, 86,188,120, 29, +151,183, 42,234, 9,177, 60, 43,197, 59,233, 62, 3,120,134,160,109, 45,134, 78, +218, 70,102, 42,217,161,174,250, 77, 45,162, 86,252,168, 11, 57,148, 79,200,246, + 45,113,232,240,120,194, 23,106,190, 34,181,150, 79,197, 88,161,220,210,198,182, +221,109, 96, 80, 50, 6,149,212, 95,255, 55,116, 15,134,181, 63,183,139,183,162, + 26,104, 20,113, 55,200,177, 71, 57, 66,210,150,204,254,192,211,220, 70, 71,221, +186,157,133,151, 74, 17, 81,102,124,117, 44,124, 47, 73,172, 71,209,223,221, 98, +202,205,125,232, 96,114, 50, 42, 10,233,139,114,115,105,154, 25, 45,127,177,212, + 42,101, 79,112,255,245, 60, 54,188,187,229,142,201, 50,183,244,110,253,184,252, + 76, 51,104,253,153, 62, 30,204,182,125,119,253, 19,233,115,149,121,231,118,213, +108,109,240, 42,218,170, 22, 20,227, 21,176, 17, 26,123, 75, 7,183, 58,208,145, + 52,101, 78,182, 87,178,156, 76,144,122, 82,156,237,110, 50, 61, 71, 17,154,183, + 57, 34,174, 77, 74,103, 19,100,133, 33,135,132,158,223,237,193,251, 45,160,144, + 97, 23, 70,146, 23,197, 72,144, 62,165,204,238, 39,243,232,145, 91,168, 97, 82, +180,191,162, 65, 64,129, 93, 15,247, 97,185,234, 16,215, 42, 77,214, 66, 94, 43, +155,153,125,190, 39, 52, 99,180,176,220,151,216,226,181,144,193,193,225,114,232, +108,196,105,220,189, 58,209,194,102,201, 87, 12,156,163,181, 48, 73,122, 98,102, + 26,117, 5, 83,204, 96, 44, 35,139, 54,109, 88, 56,193,141, 24, 7,252,119, 28, +108,169,240, 63, 29,174,148, 11,220, 99, 97,217,183, 27,169,244,202, 18, 38,179, + 45, 91, 66,121, 46,187,133,107,107,190,118,176, 97,180,153,233, 80,242,132,191, +169,130,154,134, 56,237,209, 35, 78, 29,108, 18,244, 55, 36,191,150, 60,187,165, +105,118,130,108,202,166,135, 6,132,255,205, 75,142, 22,136,244, 75,123, 64, 31, +154,117, 10, 26,222,229,123,100,172, 63,109,146, 40,137, 89, 16,142,223, 63, 56, + 25,202, 97,112, 73,135, 78,149, 76,159, 39, 68, 75,117, 72, 95,204,113, 45,224, +220, 32, 46,169, 89,135,191, 41,180,252,154,175,104,214,178,157,164,255, 47, 19, +108, 47, 17,168, 98, 7, 91,170, 31,248,219, 79,105, 92,234, 5, 78, 6, 34, 54, + 78,142,234, 32,227,180,132, 3,242,247, 2, 65, 46,101,117, 92,218, 67,104, 85, +243,128, 91,171,120,239,233, 99,250, 41,191,232, 24,153, 47, 41, 64,110,131, 63, +206, 57,138,247,213,142,213,170,140,156,122,156,158,169,254, 3, 63,229,245,122, + 50,123,110, 68,160, 37, 35,134, 67,104,121,109,127,187,109,223,214, 64, 92, 49, +216,133,137,162, 85,180,175, 27,111,196,210,220,225,119,119,218,216,191, 84, 31, +169, 41, 96,136,248,212, 81,132, 90,170,226,158, 16, 35,112, 46, 83, 42,121, 44, +160,119,167, 88,166,127,246, 63,166,171, 92, 53, 52,244,192, 94,230,241, 49,167, + 30,232,194, 94,212,117,129, 60,187,131,173,253,222,250,187, 31,154, 47,112,151, +172, 88,237,228, 84, 73, 0,165,143, 83,198, 58,248, 67, 84,231, 0,167, 67,228, +128,235,130, 60, 25,182,186,147,173,118, 99,173, 57,156,172,200,144, 48, 64, 39, +180,234,113,193,137,166, 34,196,138,196, 33,240, 56,251,131,196,112, 21,192,102, +177,129,120,139,106,147,246,184,186,119,191,112, 46,110, 42,222,164, 11, 87, 32, +237, 61,154, 61,126,238,163, 20,149, 42,164, 98, 6,217,213,252, 59,120,161,239, +221,174,238,139,177, 13,159, 7,219,222, 65,164,192,233,214,203,215,181, 46,198, +182, 50, 27,169,105, 29, 78,182, 26,231,116, 73,196,126,234,178, 8,103, 53,254, +102, 56, 97, 3,173, 72,137, 4, 23,209,208, 31,174, 64,138,255,241,226,144,239, +205,214,110, 63,226,166, 43,123, 91, 18,193,157,120,152, 79,205,204, 9,163, 29, + 49,147,173,201,216, 48,208,164, 1,187,124,201, 97,145,190, 37,112, 89,166,192, +129, 81, 39,118, 42, 77,169,239, 99,158,206, 53, 61,197,100,230,130,221,225,179, + 55, 5,147,180,245,182,231,169,145,220, 83,140,182,154,118,161,133,149, 86,148, +187,140,188,150,138, 17,231,152,170,237, 44,224,250,161, 11,186,233, 70,140, 73, +182,203,178, 89, 98,166,230,104, 12,214, 90, 28, 62,160, 13,240,160,155, 66, 75, +249,214, 68, 24, 17,207, 11,174,176,189, 90, 17, 44, 3, 83,180,134, 35,213,131, +215,225, 98,110,139, 1, 31,150, 53, 29,209,250,178, 79, 37, 43,208, 76,196,182, +133, 24,236, 64,165, 86, 40, 81,132, 47, 69,180,125,107,193,241, 30, 60, 9,248, + 77,142,227,142,172,196,157,116, 39,216,120,122, 0, 2,182, 12,133,209, 51, 13, +251,183, 18,220,204,185,219,111,208,181, 75, 12,187,231,108,123,245, 18,102,127, + 25,243,128, 79,164,153, 39, 79, 98, 8,240,173,190,117,106, 91,220, 58, 54, 1, + 51, 74, 65,168, 50, 32,163, 64,231,123,209,238,249, 78,205, 40, 27, 27,117, 29, + 18, 86, 72, 77,165,158, 10,172,110,148,171, 82, 74, 38,124, 16, 36,150,204,182, +145, 95, 23,145,147, 73,136, 30, 29, 8,161,126,192, 61,112, 69, 90,207, 90, 23, +152,170,140,247,126,128,139,170, 86,196, 15,144,222, 2, 10, 74, 65, 37, 8, 20, + 59,156,244,228,238, 27,206,194,133,123,158, 76, 19, 87, 64,178,114,115,216, 45, +248, 16, 14,148,119, 46, 35, 85, 39,148, 80,108,235,217, 44,190, 59,123, 90,179, + 7,108, 99, 91, 7, 41,242, 73,209,114,149,238,149,177,142, 40, 52,242, 59,168, +112,126, 80, 11,162,177, 46,252, 25,120, 1,152,230, 98, 29,228, 54,251,170, 6, + 35,117,169,180,191,134,240, 52, 85,236, 11, 68,148,241, 97, 83, 62,185,204, 7, + 36,194,199,197, 15,195,116,113,120,170, 40,114, 93,237,209,186, 62, 40, 44,215, +182,223, 71, 46,195, 32,149, 51, 87, 69,192,184, 9, 29, 69,192,173, 64,195,203, + 28,221, 0,242,188,114, 69, 55,120,140,231, 78,195,151, 14, 45,113,208,215, 43, +218,195,202,123, 0,215, 45,111, 39, 64, 94, 14,173, 50,239,132, 17,176, 66,250, +243,122, 30,177,226, 57,235, 25,228,223,252,149,249, 69,196, 21,182,192,151,197, +122,209,122,133,220,176, 37,138,136,189,188,171,145,120, 30, 28, 11, 97,140, 85, + 27, 18, 11,125,246, 32,225, 35,187,240, 10, 57,168,107, 27,166,167,172,167, 9, +167,228,139,108, 4,103,161, 4,222,129,133, 83,225,166,253,221,245, 18, 42, 98, + 27,212, 74,246, 61,253, 69, 61,115,183, 38,236,115,116,159,137, 84, 40,130,114, +253, 94, 51,207,132,255, 43,200,167,103, 36, 71, 17, 49,155, 34, 74, 28,107,181, +200, 60,222,123,213,145, 68, 85, 42,120,229,108,193, 53, 8,118,227, 45, 81,246, +106, 15, 72, 15,183,177,215, 70,203, 73,113, 49, 79, 28,250,136,135, 97,124, 46, + 63, 42, 14,226,242,153,244,217,206,168,166, 84,202, 30, 37,189, 92,162, 29, 1, +161, 11,219,195,167, 56,220, 97, 53,215,150,199,196, 69,141, 65,219, 73, 88, 38, + 2, 9,217,108,180,245,184, 60,224, 78,125, 97, 38, 4,145,122,111,214,105,233, + 77,169, 80, 51,152,140,165,141,113,117,226, 63,102,237,212,191,116,199,118, 40, +133,203,155, 98,228,179, 13, 6, 30, 14, 4,226, 1, 32, 60,152, 48,204, 40,127, +142,156,168, 23, 74,132,100, 81,151,205, 91, 35,221, 64, 2, 48, 0,211,132, 20, +100, 43,197, 83, 27, 61, 98,156,205, 75, 34, 65,226, 31,206, 0,185,111,136,249, + 53,245, 68,254, 16,210,254,234, 6, 13,157,199, 24, 24, 46,223,117,249,244,173, +240,197, 97, 44, 31,122,181,169,190, 36, 20,149,232,138, 34,231, 65,222,155, 31, + 68, 77,166,116, 11, 99,137,251, 76, 47,161, 74,104,125,148, 76,248, 60,226,210, +229,235,165,195,201,244,140,211,164,201, 93, 48, 19,108, 38, 2,200,142,137,137, +254,179,122, 90,241, 82, 30, } ; -// ../Source/Template/GB_defaults.h: -uint8_t GB_JITpackage_91 [400] = { - 40,181, 47,253, 96,224, 2, 53, 12, 0,150,216, 76, 31, 16,183, 14, 75,239,172, - 27, 41,222, 52, 28, 27,165,229, 47,245,255,202, 43,213, 36,189, 35,238,202, 71, - 4, 0, 64, 21,204, 69, 0, 66, 0, 68, 0,216, 18, 14,151,117, 81, 11,131,117, -173,128, 11, 44,193,123, 52, 31, 91, 97,107,162, 15,138, 90,179, 4, 13,171, 52, -104, 56, 69, 9,131, 93,156,161,198,223,163, 38, 29, 84,251,159,125, 69,126, 22, - 77,113,134,187, 12, 90,249,127,227,244,184,219, 26,146, 45, 20, 36, 85, 40, 4, -252, 21,228,150,233,175,179, 51,213, 84,176, 63, 4, 37,215, 6,200,108,211, 52, -149, 13, 22,129, 60, 60,238,170,215, 0,105, 85, 23,197,148,155, 33,182, 12,145, -219,235,175,220, 77, 40,246,202, 92, 87,168,206, 3, 83,117, 60, 18,217, 57,179, -254, 20,212,153,253,190,244,151,114,147,151, 71, 13, 90,130,233, 35, 64, 92,150, - 65,195, 50, 65,226, 82, 88,149, 21,216,204,161,153,112,180, 45, 3,193,120, 50, - 89, 61,251,118, 25,108,141,146,100,193, 95,255, 49,172,189, 62,183, 99, 31,249, -179,117,114,251,147,254, 58,143,223, 28,173, 7,238,215, 82,122,221, 85, 6, 72, -169, 72, 92,171,153, 88, 38,155,196, 50,121, 88, 32, 24,231, 47, 28,127, 65,181, -187,202,161, 7, 46,159,218,247,155,253, 93,123,128, 80, 80, 44,155,204, 1,118, - 11,254,134, 68,144,228,223,117, 92, 10, 66,177,239,147,191,253,185,221,100, 49, - 28, 0, 77,176, 50,177,173,162, 1, 93, 25,240, 83,131,123,133,102,159,199, 18, -182,153,171,149, 50, 6, 83,127,130,150, 72, 52,203, 5,154,245, 8, 16,139,140, -141,107, 30, 4,126, 4,187, 19,118,151, 88,161,188, 38,145,179, 27, 0, 41,106, - 3, 51,104,218, 60, 51, 69,155,192, 86,203, 3, 6,177, 47,110, 80, 20,184, 1, +// ../Source/Template/GB_AxB_dot_cij.c: +uint8_t GB_JITpackage_73 [2904] = { + 40,181, 47,253, 96,149, 87,117, 90, 0,186, 86, 40, 16, 41,192,146,117, 14,106, +166,126,159, 61,135,219,228, 88, 54,247,173, 34,237,169,111,132, 51,228, 6, 14, +151,236, 98,102,232,194, 69,151, 1,211, 36, 8,162, 73, 14, 2,243, 0,242, 0, + 5, 1,111, 18,205,147,163,160, 72, 51, 56,134,199,243,162, 52, 61,192,105,129, +224,232, 93,218,242,249,245,250, 43, 86,129, 0,117,145,231,168, 20,211,174,186, +174,212,235, 78, 32,163,193, 64, 33,236, 35, 69,153,150,129, 62,154,188, 71, 43, + 9,183,197,210,168,239,188, 71,156, 97,166, 27,230,181, 71, 30, 71,168,244, 0, + 93,157, 17,158, 7,204, 43, 9,129,249, 5, 55,158,220,187,239, 40,207, 95,235, +189,107, 60, 98,250,206, 19, 20,195,206,199,116,148,253,149,204,141,157,189,226, +143, 63, 41,233,199, 24,201, 65, 5,129,210, 35,110,138,242,151,219,212,163,185, +118,119, 81, 26,215,230,104,135,130,145, 9, 85,186, 38,221,198, 45, 58,206, 35, + 14, 42, 58, 8,202, 87, 9, 8, 7, 8, 20, 6,203, 1,194, 41,110,122,133, 41, +105,102, 94,145, 47,141,178, 13,105,246, 10,147, 29,107, 36,206,203,185, 52,190, + 83,196, 58,211, 17,147, 80, 29, 86, 1, 1, 69,171,203, 36, 15,113,170,163,162, + 19,230,157, 71, 49,180,220, 47, 29,148,211,178,237, 52,235, 67,106, 22,231, 6, + 6, 18,138,129, 65,147, 4, 67,147,249, 92,154, 28, 61,218,213,128, 58, 6,220, +219, 2, 18, 9,237,202,174,207,181,201, 72, 96,154, 7,195, 83, 61, 42,192, 85, + 56,106,144,189, 27, 79,183,167,192, 9, 50, 61,195, 62, 32,140,214,145,159,203, + 35,210,100,154, 70, 36, 59, 24, 77,166, 65,234, 17,116, 55,130, 92,165, 2,221, + 40, 90,177, 47,189,214,160, 4, 86, 91, 65,104, 72, 51,206,248, 25,143,225, 40, +219,141, 66,152,222,217,112,187, 52,108,252, 14, 8,100,105, 90,198,125,237, 12, + 79,249, 40,120,156,185, 41, 2, 97,220,195,130,158,189,173,225,136,241,124, 69, + 77, 32,181,190, 68,113,133, 85,116, 66,161,189,222, 45,159,111, 16,164, 30,175, +121,138,165, 82,247,198, 86, 20, 71,252,234, 54,169, 61,172, 4, 56,111,215,230, +168,186, 58,246,102, 71,165, 44,134, 77,169,182, 86, 75, 51,215,185, 82,122, 11, + 68,198, 71,118,212, 86,235,125,255,190, 73, 30, 55,189,158,253,165, 83, 28,113, +121,134, 47,213,170,171,125, 30,237,113, 6, 39,229,186, 67,139,143,187,163, 36, +209, 37, 67,191, 54, 79, 27,210,147, 73, 38, 46,140,166,177,144,152,134,101,200, +139,142,252, 50, 25,105,125,223,228,251, 38, 20,214,198,163,255,102,223,201,228, +193,225,150,111,202, 92,160, 15,200,163, 97, 42,180,140,231,194, 52,233,225, 72, + 81,168,224,213, 1,229,166,103,157, 10,143,101,189,234,248,182,233,150,197, 84, +147,226,171, 15,249, 42,211,112,232, 55,167, 75,170,195,122,193,193, 36, 27, 79, +110,161, 76, 16, 67,122, 50, 13,182,217,128, 50,190,212,235,111,230, 95, 38, 50, + 76,116,109, 52,133,133,106,154, 48, 58, 33, 15, 70,155,224,124, 52,136,217, 52, +184,141,182,202,147,115, 89, 8, 9, 8, 9, 11,150, 5,203,102,131,241,248,170, +161,161, 99,249, 56,248,192, 79,141,211,148,105,152,137,170,179, 65,107,183,169, + 3,246,136,197,199,220,193,118,183,185, 62,132,243,185, 68,151, 71,131,113, 66, + 6, 6,222,233, 84,108,232,148, 18,164,118,108,212, 69,154, 80,134,132,136,200, + 53,152, 72,134, 48, 13,187, 52,107, 58,117,240,136, 79,207, 68, 26, 12,147, 14, +207,119,102,172, 65,220,210, 20, 22,254, 75, 66, 64,252,249, 11,213, 24,164,106, +131,164,130,137, 20,167, 83, 95, 18,201, 72, 41,211,112,230,209,110,243, 77,154, + 35,203,178, 44,171, 99,210, 11,157,205,113, 59,252,232,122,231,247,125, 27, 61, +196,100, 66, 68, 80, 85,117, 9,140, 72,102,136, 44,205,115,137, 50,202,136,131, +222, 73,246, 26, 20, 45,148,141, 94, 38, 61,135,105,183,209,110, 81,220, 62,169, + 37, 74,113,122,131,116,228, 97,243,187, 82,193, 27,176, 12,187, 48, 52,154,197, + 1,192, 77, 39,204, 29,196, 9,218,103, 2,109,163, 21,124,109,230,154,116,207, + 30,156,248, 54,105,226,238, 78,143,143,155,219,231, 71,153,122,188,171,237,222, +219, 59,112,180,220, 75,125,123,244, 18, 56,251,230,103, 91, 95,193,165,106, 45, + 62,158,207,165,237, 85,215,153, 90, 80,252,104,220, 88,254,151, 82,126,147, 95, +138, 84, 82,147,248,138, 66,137,184,148, 84, 30, 98,227, 15, 23,197,239,167,190, +107, 39,207,254,163, 59, 15,123, 29, 54, 44,148,174,182, 54,249, 6,181, 40,171, + 64, 30,226,152,201,128,250,166, 83, 40, 17, 35, 95,143, 55,227,140,233, 71,107, + 27, 26,223,172,131, 74, 31, 10,131, 34,168, 66,156,208, 49,101,136, 68, 36, 73, + 82, 41, 52, 6,226, 32, 4,130, 64, 32, 75,114,141,221, 6, 66,137, 32, 8, 52, + 16,131, 17, 48, 66, 8, 49,132, 16, 67, 8, 33,136, 8,132,136,136,200,136,140, +200, 12, 59, 18,161,164,188,225,157,159,153, 54,218,159,114, 93, 57,215, 92,224, + 52,160, 62,241,195,164, 86,133,245, 10,173, 59,121,212,195,190, 76,176,168,203, +104, 90,173, 21,166,110, 12,182,207,128,198, 20,243, 61,110, 90, 77, 3, 76, 82, + 3,169,243,134, 1,107,167, 26,239, 21,130,183, 32, 35, 46, 96,175,237, 80,196, +225, 18,187, 64, 44, 1,147, 42, 76,228, 31,207,249,130, 75, 75, 45, 61, 24,183, +224,242,114,246,195,183, 25,239, 64,148,203,109, 53,251,162, 16, 39, 31,203, 67, +201,179,212,109,234,229, 22,220,217,171, 4,250, 17, 67, 11, 53,125, 74,156,240, +220,206,108,165,155, 92, 96, 76, 53,124, 25,166, 30,136,226, 13, 41,147,105,114, + 2, 12,217,229, 22,143, 33,172, 71, 74, 15,227, 1,235,181, 25,170,198,106, 8, + 41,110, 39,223,149, 90, 3,201, 12,111,248, 21, 44,249, 81,187, 62, 45, 27, 15, +152,188, 55,154,231,140,222, 37, 16,182, 34, 75, 40, 95,138,198, 27, 27,122,246, +211,194,254,168,102,187,212, 22,215,214,116, 5,106,237,189,247, 87, 1, 75,162, +153,182,249, 29,234,196, 93, 49, 51,207, 30,214,184,164,122, 34,156, 95, 11, 74, + 71,102, 61, 22,109,237, 43, 86, 69,155,181,147, 38,245, 95,195, 92,212,216,136, + 64,126,213,235,238, 82,213,167,227,175, 98, 15,227, 36, 74,140, 0,232,242, 28, +165,128, 10, 85, 14,235,201,177, 24, 65, 52,138,146,117,181,146,111,248, 43,126, +236,110, 66, 52,213,148,120,241, 5,225,249, 33,145, 7, 33, 76,194, 65,143, 10, +197,184,219, 67,123,208,167,162, 26,225,165, 64, 97, 14, 22,207, 65, 26,241, 23, +162, 0,163, 29,231,116,194,227, 47, 42, 61, 56, 67, 80,213,225, 42, 18,251,161, +197,204,102, 19,131, 45, 79,248, 84,241,101, 71,229,102, 2,122,192,166,234,237, + 42,149, 17,117,119, 43, 34, 54,180, 29, 91,187,148,186, 58, 43, 0,126, 16,234, + 58,140, 3,137, 89,120,202,210, 24, 53,246, 22, 57,239,189,185,208, 89,187, 88, + 59, 43,221,253,118, 97, 44,188,207, 55,216,255, 97,235,186,188,185,223, 22,118, +254,136, 74, 29,139,124, 23, 58,212,111,119,123,254, 80,199, 38,199,165,185,185, + 24, 8, 54,225,204, 73,158, 91,213, 72,174,185,221, 51,245, 90, 83,199,239, 12, +164,131,217,157,212,178,165,115,212,232,237,156, 57,118, 56, 99,206, 28,142,151, + 83,195,185,242,147,177, 29,103,162,200,117,237,113,225,177, 49,252,187,127,181, +162,225,245, 79,167,184,160, 27, 52,248,182,149,230,207, 62,179,194, 31,177, 10, +109,184,129,174, 10,195,134, 5,106,217, 46,116, 69,237, 84, 42,154, 26,217,152, +118,108,172, 64,223, 75,140,239,187,209,167,146, 30,190,198, 39,205,212,225, 94, + 61,103, 30,253, 16, 35, 1,143,239, 66, 27,126,186, 9, 18, 1, 7,119, 77, 85, + 5, 82, 48,251,253,101,151, 19,158,153,224, 84,125, 88,104,115,201, 73, 82, 58, + 70,117, 48,109,217, 3,254, 14, 13, 72, 7, 41,189,101,225, 69, 67,153,120,119, +182,155, 30,134,112,233,121, 62, 46,117, 48,160,112, 26, 13,133,186,103, 88, 46, +186, 0,132, 3,207,169,130, 82, 77,111,225,222, 36, 52, 78, 22, 60,135,227, 14, +111,132, 16, 65, 78,163,104,112, 29, 57,161,143,153, 48, 92,177,132, 7,182,178, + 31, 17, 98,245,168,106, 90,150, 78,115,185,208,133, 63, 30,160, 61,158, 85,252, +223,131,110,179,236,177,183,184, 64, 61,209,175, 67, 8,149,200,123, 0,197, 18, +227, 49,130, 62, 32,123,213,136, 50, 59, 64,113,145,223,106,216,217,227, 64, 10, +204,224,166,148, 45, 31, 35,166,135,115,182,220,233,140, 53,115, 59, 95,206, 26, +142,149, 7,145,224, 57,127,244, 47,233,165,107,249, 23,114,231,171,120, 64, 19, + 43, 72,115, 7, 30,116,193, 66,135, 34,209,250,141,141, 2,137, 32,218, 6, 23, +132,158,148,160,179, 14,232,235,160, 45, 71, 74, 97, 39,209,160, 2, 92,208,118, +159, 58,213, 91, 86, 5, 61,127,241,127,105,139, 59, 51, 88,180, 69,192,170,245, +113,185, 94,227,120,252,160,224, 20, 9,113,117,229,236,230, 5, 9,175, 39, 5, +186,189,239, 26, 93, 12,113, 93, 44, 18,126, 11, 49,177,168,106,149,230, 33, 70, +234, 8, 22,244, 83,229,127,117,152, 63,110, 61, 91,142,220, 84,158,140, 41,113, +185,146,181, 43,144,223, 48,108,143, 58,126,165,133,207,107, 23, 50, 87,171, 14, + 33,151, 5,152, 29, 24,159,238,245,156, 83, 86, 56,160,152,230, 66, 1, 33,179, +190, 11,194,165,156,127,171,125,216,160,148, 15,205,178,226, 73, 79,243, 66, 47, +177,204,240, 16,161,232,190, 67,200, 37,251,179,193,193,224,216,104, 15, 73,137, +195,180,135,212,132, 9, 46,135, 49,207,224,116,192, 83,119, 24,152,149,253, 45, +166,145, 68,225,126,104, 50, 92, 71,133,144,201,217, 70,217, 13,207,106, 12,215, +145,148, 97,168, 21,107,144,219, 99,151,106,158,171, 15, 90,213, 36,213, 79, 32, + 17,213,117, 14,179, 86,241, 39, 75,172,133, 5,203,254,115, 72, 65,131,165,230, + 0,241,193,226,162, 42,240, 19,234,251,248,119,233,186,214, 18, 65, 90, 86,134, + 17, 35, 11, 17,228, 23, 34,178, 9,220, 51,184, 98,252,139, 46, 59, 52,113, 60, + 75,116, 19,177, 73, 26,243,192,150,103,213,251,243, 11,117,185, 2,182, 10,140, + 53,177,161, 74,106, 5,172, 43, 46, 17, 90, 87,205, 15,191,178,179,102, 43,179, +198,180, 70,189,138, 29, 37,192,211,252, 7, 12, 50,203,204,112,232, 20, 32,212, +254, 4,253, 31,142, 35,100,153,154, 29, 33,157, 11, 57,195,113, 34,223,155, 84, +168,237, 42, 86,115,116, 26,108, 54,243, 20,197, 72, 58, 43,138,203,142,226,209, +234, 44,197, 40, 0,175,194, 45,103, 69, 59, 57,171,255,195, 89,227,209, 93,101, + 22,170,236,152, 61, 7,108,254,170,219,186,105, 14, 44, 27, 46,149, 51, 2,121, + 21, 29,240,245, 31,194, 60,120, 41,213,233,161,221, 25,235,199, 30,220,153,103, +215,254,175,106,239,235,241,214,188, 42,100,150, 54,164, 97, 22,229, 98,137, 89, + 24,128,243, 2,225, 58, 98, 7,162,158,201, 53,249,214, 61, 85, 56,201,214,229, + 14,184,198,193, 20, 85,145,200, 6,245,153,195,171,149, 52,157,143,127,106,177, +111,173,103, 43, 63, 1,234,122, 44, 35, 26,178, 54, 33,192,157,129, 3, 11, 12, + 80, 70, 54, 82,231, 74,227,236,197,242,166, 4, 65,150,188,168, 5,148,121, 5, + 68, 11,250, 52, 70, 84, 7,129,120,236,121, 58,134,129,236,139,125,114,133,253, + 72, 1,194, 73,105,222,212,223,202,169,156, 68, 56, 84, 13,117,132,149,121,152, +235, 60, 77,246, 94,194,159,128,153, 77,109, 95,172, 64, 76, 73,217,210,136,140, +109, 43,189, 1,201, 2,200, 83,196,122,151,222, 40, 95,149,215,199,207, 2,231, +145, 60, 11,118, 25,199, 65, 14,200, 65, 79,239,182,151,198, 31, 77, 79,115,122, + 82,233,199,249, 21, 36,207,234,137, 71, 30, 65, 67,118,136, 13,234,135, 61,126, +232, 31,146,204,106,127,235, 51, 80, 18,104, 67,212,146,225,136,195, 85, 88, 93, +124, 22, 44, 78,134,130,158,166, 97,179,255,142,242,245, 89,226,237,216,136,233, +111,128,189, 17, 65,158, 2,126, 50,165, 84,110,241, 75,142, 68, 40,130,251, 1, +204,235, 49,231, 35,105,165,240, 19, 68, 9, 30, 63,142, 71, 1,214, 48,135, 32, + 92,232,152, 21, 75, 91,232,130,196,197, 33,103,219, 59,239,100,129,127,114, 70, +241,155,152,171,182,105, 19,124,193,164,132,218, 92, 38,230,103, 83,123, 71,100, + 92, 40,224, 74, 7, 96, 8,183,120,187,205, 76, 99,125,207,216,134, 66,164, 9, +129, 82,181,119, 91,219, 93, 23,138,243, 34, 95, 35,100, 72, 27, 13,156, 70, 41, +114, 46,251,121,237,188,173,105,108,157, 28,130, 38, 4, 29, 44,147, 90, 53,216, +198, 48, 60,198, 81,148, 74,238,245,180,122, 58, 4, 60,117, 33, 96, 56,146, 8, + 17,196, 1,148,191,106,244,136,229,119,176,146, 96, 69,178,184, 9,235, 39, 76, +213, 8,197, 64, 93,200,143,202,162,240,121, 51,158,111, 57,242, 40,210, 44,185, +236, 35, 96,194,139,242, 20, 99,133,163, 93,115,150,112,226,193, 72,119, 36, 68, + 37, 24,114, 65,136,107,184,105, 86, 14,204, 4, 68,128, 47, 63,136,204,253,166, + 86, 14, 25, 20, +} ; +// ../Source/Template/GB_AxB_dot_cij.h: +uint8_t GB_JITpackage_74 [1313] = { + 40,181, 47,253, 96,250, 22,189, 40, 0,214,182,163, 40,208,210, 56, 7,168, 73, +177,111,246, 72, 71, 89, 58,113,163,105,119,215,150,230,149,180, 27,232,249, 35, + 65, 52, 25,240,252,162,231, 47,240,197, 3, 89,106, 94,152, 0,149, 0,153, 0, +114,179, 63,119,247,150,171,244, 54,230,174,252,228,128,155,242, 55, 86, 40,124, +165,247,141, 88, 59, 8,232, 32,222,164,231,216,146,110,251, 28,237, 46,143,190, +113,167, 77, 5,147,138,132,187, 77,126,240,150,202, 29,234, 59,153,203, 36,108, + 39,111,189,145, 84, 96, 34, 38, 28,123, 84,182,236,185,189,221, 70,123,238,121, +240,214, 65,165,160, 34, 81, 48, 40,168,188,218,168, 91,182, 61, 36,230, 19,120, +144,238,210, 81,107,183, 62,112,115,117,159,172, 26, 11,219, 42,191, 15,223, 38, +125,166,109,160,210,208,237,164,125,123,118,136,185, 91,186, 9, 71,111,241, 82, + 46, 94, 37, 24, 47,205, 41,148, 73, 66,161, 4, 25,132, 39,163,197,140, 7,110, +176,204,181,164,209,217,235,208, 5,152, 35,121,219,236,128,201,237,115,229,238, +131,126,118,202,122,227,165, 51,194,119,183, 63,110, 85,102,255, 26,128, 23,236, +126,188,149,248,150, 45,105,126, 45, 29,217, 59,155,126,135,159,232, 37,230,102, +211,123, 79,146, 58,248,221,165,160,115,189, 46, 13,248, 97,188,161, 39,103,143, + 42,223,135,250, 34,201, 21,244,105, 85, 28,215, 7, 94, 85, 34,171, 41,248, 74, + 95,181, 37,162, 32,245, 11,129, 69,235, 96,166,201,198,236,218, 35,182,223,192, +140, 39,122, 50, 24, 17, 63, 18,155, 8, 90, 57,228,244,254,246, 45,135,180, 39, +173,150,239,173, 83,205, 82,149,152,110,191,116, 82,103, 15, 68,162,156,117, 37, +245, 66,183,108,229, 13,190, 19, 36, 65, 72,160,232,108, 24, 60,153,137, 78,135, +163,201,226, 5,243,103,194,217,254,237, 79, 6,189,224,151, 43,187,218,238,174, + 39,185,198,218,242,139,150,228,125,255,255,105,210,112, 50, 79, 6,145,249,196, +248,201, 66, 29, 48, 77, 31,237,147, 85,100,152, 84,239, 3,166, 7, 44,211,128, + 69,135, 12,251, 36, 5, 76,111, 10,219,184,219, 40,151,173,237, 18,199, 13,233, +133, 62, 37,123,180,187,219,100,235,202,147, 55, 34,179,165, 14, 34, 63,126,233, +148, 63, 87, 90,133, 80,215, 62,156, 14, 22, 55,144, 19, 15, 23, 67,118,219,199, + 96,224, 9,168,135,218,178,181,158,244,152, 91, 20, 89,121, 13, 64,216,229, 26, +216,135,113, 12,195, 52,137,136, 62,193,111,149,215,198,203,177,239, 55, 34, 36, +220,217,159, 28,221, 6, 85,110,137,180,141, 4,196,172,124,175,252, 56, 78, 86, + 2,144,186,174, 91, 28, 34, 16,245,139,242,203, 63, 64,161,182, 35,252,110,149, +224, 45, 45,163,169, 90, 36,169,195,202, 31, 72,103,177, 91,170, 31, 80,231,184, +187,183,184,166,147,142,142,201, 58,156, 14, 68,180,224,192,105, 10, 53, 55, 71, + 22,126, 17,201,240, 60, 57,178,188,112, 2,130,234,250, 44,248, 89, 79,134, 38, +183,205, 60, 43, 0,234, 55,129, 11,168,177, 37, 98, 72,102, 68, 68,146, 36, 41, + 12,107, 97, 12, 66, 12,163, 80, 75,245,226,136, 76,135,115, 24,134,140,128, 16, + 35,104, 2, 39, 16,137,145, 96, 2,145, 64, 38,146,201,134, 49, 85,170,178, 68, +225,153,248,155, 3,168, 7,245,149, 85,248,162,252,211,225, 44, 80, 28,200,157, +120,242,165, 78, 17,205,244,196,202,255,118,229,184, 57, 40,168,251, 59,158, 90, +127, 86, 22,102, 25,174,250,194, 73,250,138, 64,240,181,230,109, 82,213,132, 27, + 31,140, 66,118,217,175,239, 83,146,137,157, 92, 88,148, 57,118,210,192,170,225, + 31,144, 20, 80, 48,124, 87, 67, 6,254, 98,224, 97,196, 63,240,243, 40, 46, 6, + 79,133,240, 19, 63, 64, 66, 1, 0,241, 27,178,201, 77,165, 42,127,125, 22,156, + 45, 44,143,187, 45, 24,245,242,210,203,106, 37,186, 60,227, 56, 15,128,251, 70, + 14,135,144,178, 90, 77,149,249,141,219,193,243,161,171, 83, 55, 13,126,117,154, + 49,160,245,162,215, 79, 88, 88,190,194,105,134, 62,142,172, 27,136, 13,229,124, + 56,125,199,159, 14, 62,219,167,140, 90, 2,213,204, 6,205,106,190, 91,235, 49, + 86,241,112, 70, 34,137,158,212,163, 94,190, 22,223,175,132, 66,122, 11, 44,190, + 51,184, 37, 24, 26,211,140,233, 30,250,134,132, 71, 80,212, 89,180,116, 35,250, + 92, 39, 51,205, 71, 72,101, 4,137,146,200,114, 50, 58, 95,180, 25,208, 12,143, +162,249,237,173,205,230,228,217,149,199,115,126,187, 71,216,225, 68, 44,133,134, +246, 85,206,139,187, 39,151,112, 3, 8, 21, 18,101,205,155, 97, 92,182,242,105, +144,149,244,106, 38,100,164,233, 60,227,112,142,184, 67, 21,220,159,159,190,167, +100,150, 8,115,139,121, 26, 88,136, 85,175,148, 15,127, 4,153,121, 4, 54,175, + 83, 71, 26,168, 34,238,231,243,172,150,133, 61, 68,215,169, 76, 2,118,115,100, +169,191,131, 52, 21, 91,161,144, 88,162,178,194,153, 56, 46,130,222,246,120,116, + 80, 81, 72, 29,234,150, 43,208,166,214,100,226, 6,136,122,242, 32,226,126,192, + 54, 68, 9,213,233, 11, 85, 34,158,235,242,180, 24,221, 58, 23,162,165,195,232, +197,159,149,132,116, 90, 10,206,165,106,161, 7,207,222,230,192, 36, 44,165,115, +135,233,211,123, 51,235,150, 82,187,113,215, 58,194,121,206, 43,102, 38,148, 74, +133,199, 73,159, 73,180,143,106,206,143, 12,186,145, 85, 84,249, 1,120, 36,248, +236,121, 27,234, 78, 82,110, 41, 48,220, 42, 74, 65,126,241, 33,194,160,207,151, +173,152,205,205,165,170, 83,249,170,102,170, 25,114,246,170, 14,142,201, 55, 91, + 64,163,117, 0,129,144,216, 66,143,105,100,218, 39,117, 66,200,197,238,124, 45, +118,154,161,185,246, 34, 60,168,184,173,145, 81,210,136, 20, 40, 58,106, 24,151, + 53,102,175, 80,110,225,136, 62,183,104,183,106,101,139,155, 38,169, 50, 83,155, + 49,210,190,136,108,126,210, 45, 77,170,149, 85, 12, } ; -// ../Source/Template/GB_dev.h: -uint8_t GB_JITpackage_92 [395] = { - 40,181, 47,253, 96, 84, 3, 13, 12, 0,246,215, 72, 31, 16,147,117,155, 25, 37, - 40,215, 65,196, 21,194,221, 34,211, 96, 88, 66, 12, 89, 66,117, 5,223,153,205, - 8, 0, 40, 0, 84, 65, 0, 66, 0, 59, 0,137, 19,172,193, 11,182,181, 71, 93, -106,124,187, 46,197, 26,243,194,165, 49,113, 92,159, 87, 33, 19,219,250, 62, 23, -190,157, 93,220,157,140,125,168,100,141,225, 25, 82,235,149,198,219, 73,251,246, -236,200,240,211, 37,105, 12, 57, 14,200, 13, 6, 23, 25, 12, 1,240, 91,245,201, -118,102,223,203,246,142, 3, 46,194,209, 60,168,200,112,198, 14,184,131,148,136, -248,178,222,167,241,169,114,199,190,147,161, 36, 98, 59,217,234, 73,180,161, 42, - 18,100,173,178,101,203,237,189, 58,109,185,148,141, 23, 20,137, 67, 34, 90, 32, - 14, 1, 1, 1,223,119,237,249,186,231, 74, 35, 87,191, 54,243, 92, 0,201, 56, - 4,135,240, 61,210,179,236,120,150,157,217,246,175,147, 85, 76,125,210,207,154, -221,211,155,209, 67,198,168,117,174, 14,101, 70, 47,123, 41,223, 11, 87,102, 47, -114,206,197,134,147, 3,206, 85, 40, 25,138,242,160,176,245,234,253, 86, 41,198, -216,217,210,106,171,172,253, 17, 54, 57,105, 51, 64, 84,218,111,144,217, 10,177, -148, 13,250, 96,226,217,242,182,175,251,153, 73, 41, 0, 92,146, 3, 2, 56,195, - 76, 90,179, 3, 33, 32, 64, 66, 98, 16,195, 30, 5, 33,102, 33,171, 58, 32,208, - 44,130,228, 64, 21,233, 98,102,238,181, 24,227, 19,101,230,131,158,138, 9,132, -169,144,172,209,235, 90,223, 0,224, 41,136,129, 12,212,209,249,219,150, 46, 93, -139,196, 57, 26, 86,171,236,139, 57, 13,177, 8,198,201,104, 86,104, 35,181,213, - 12,154,206, 51, 19,109, 3,175,246, 46, 16, 90, 20,117,110, +// ../Source/Template/GB_AxB_macros.h: +uint8_t GB_JITpackage_75 [323] = { + 40,181, 47,253, 96, 1, 2,205, 9, 0,102, 18, 61, 32, 0,181,115,187,239,245, +255,243, 94,189,182, 75,165,157, 6, 77,199, 10,128,130,102, 53, 17, 43, 55,222, +161,255,127,247,135, 23, 50, 0, 52, 0, 51, 0, 49,187,104, 56, 47,100,209,248, +206,112,235, 92, 63,155,132, 59,144,230,254,222,117,158,158,190,239,236,252, 40, + 20, 77,124, 65,239, 95, 80, 10,131,151,155,159,188, 68, 81, 94,144, 87,149, 52, + 85, 85, 53,219,238,176,169,177,109,174,102, 19,166,161, 81, 93,131,110,227,174, + 28,103,202,169,149,123, 60,241, 3,131, 69,176, 38, 69,129, 96, 93,192, 5, 62, +192, 21, 52, 27,167,226, 71, 52,131, 95,181,124,176, 5,205,205, 16,119, 46, 24, +122,211,124, 91,143,237,247,241,128,220, 61,240,183, 55,223,199,182,173, 0, 41, + 34, 55, 74,133, 17, 37,242,194,120,221, 89,175, 2, 36, 2,101, 77, 77,185, 25, +198, 47,110, 87, 47,146,228,213,206,118,226, 89,118,121, 72,202,134, 33,174, 69, +137,225, 6,217,160, 68, 44, 14,137,180, 96, 87,174,155,195, 29, 26,108,147,153, + 99, 18, 53,121,200,104,152,184, 29,110,235, 59,120,230, 83,110,118, 24, 0,100, + 0, 16,209, 69,147, 0,132,159,197,127,140, 4,232,230,139, 14,208, 24, 38, 11, + 0, 52,140, 40,104,193, 66,232,182,175,205,149,247,155, 11,236, 68, 6, 28,248, + 72,116,153, 65,243,231,153, 41,218, 42,182, 90,157, 98,208,248,249,242, 22,140, + 41, 10,134, } ; -// ../Source/Template/GB_ek_slice_kernels.h: -uint8_t GB_JITpackage_93 [1313] = { - 40,181, 47,253, 96,239, 27,189, 40, 0,118, 49,149, 40,192,208,170, 14,184,214, -177,207, 95, 46, 96, 16,145, 13, 74,104,186,118, 29,237, 42, 20,184,140,168, 31, -234,158,146,239, 37, 73, 46,192,178, 8, 2, 0, 83,205,139, 0,130, 0,147, 0, - 18, 67,220,100,216,131, 6,107,136,216, 5,147,109, 98, 3,198,245, 86,185,233, -144, 38, 17, 11,210,157, 38,191,235,148,219,147,155,185,246,134,129, 52,174, 25, -164,147,144,137,108, 29,186,141, 91,115,156,187,139,169, 57,165,215,161,128, 53, -177, 32, 5,213,196, 58,165, 77,135,120,134,100,194, 35,215, 71, 93,182,159,201, - 57,220, 92, 25, 66,247,201,187, 64,105,124,229,183,233, 60, 65, 27, 9, 67,126, - 46,207,217,227,107,179,214,161,111, 85, 30,247,188,185,246,187,203, 63,165,139, - 96,218,245,182, 23, 91,155, 20, 71,175, 35,194,194, 37, 18, 9, 34,145, 4,212, - 52,157,242,234, 7,167, 42,106,106, 76,123,163,242,234,150, 83, 19, 53,185,197, -242,233,156,134, 68, 73, 24,242, 19, 59, 13,244, 57,158, 25,203,166,207,242,157, - 38,251, 29,154, 23,208,171,160, 78,179, 27,149,217,102,239, 90,209,155,122, 64, -118, 59,140,183,191,216,212, 53, 85,184,209,238, 98, 70,149,207,113,128,160,206, -172, 29,214,199,115,157, 25,244,101,144,189, 68,242,255,210, 36,109,211,134,104, -157,215,102,150, 25, 95,203,189, 49,232, 54,127,147,125,187,236,248,220,206,189, -157,130, 61, 44,115,149,186, 78, 71,220, 41,151, 76, 76,120,184,226,149,137, 28, -108,129,130,175, 92,235, 80, 53,128, 88,238, 93, 81,229,214, 35,230, 43, 51,254, - 2, 36,189, 37,102,124, 39,231, 61, 50,174, 86, 59,236,108, 76,104, 32, 28, 48, -135,168, 0, 17, 57, 17, 16, 17,225, 46, 76,175, 23,148,251, 86,158,101, 87,196, - 48,141,130,228,241,209,181,159,254, 60, 36,215, 56,149,101, 17, 15,220,132, 85, -192, 67,224,240, 12,155,136, 76,108,208, 96, 18,135,135,241, 14,199, 59, 19,192, -244, 10, 12,216,153, 26, 52, 16, 18,241,237,249,136,202,103, 12,162, 23,117,226, -203, 14, 70,195,185, 28, 54,168,170,115,193, 7,140, 3,230,241,146,196,205,173, -182, 67,170, 70,158, 87,251, 89,155, 43,220,119,230,218,183,190,137,204, 36,173, -184, 88, 84, 1,191, 5,197,111,185,136, 82, 57, 61, 31,209,106, 63,146,159, 87, -174,160, 65,121,151,239,167,172, 47,126, 23, 8, 33,244,224, 54, 51,188,124,112, -171, 13,227,245, 77,218,101,186, 85, 5, 84,149, 83,181,105, 72, 30,122,135,223, - 53,253,138, 25, 74,135,172, 71,102,143,253,251,202, 91, 31,172,190,195,201,215, -137, 14,237,213,176,140,140, 60,223, 58,203,219,181, 47,222,183, 69,239,142,115, -161, 60, 72,153,174, 43,191,173,206,129, 41,168,177, 41, 67, 51, 51, 34,146,164, - 32, 41, 12,107, 97, 16, 66,144,210, 82, 66, 61,162,104, 84, 20,163, 64, 2,136, - 70, 8, 33,196, 16, 39, 64,134, 16, 9, 68, 34, 17, 17,137,132,100,166,195, 1, -103, 11, 32,186,118,108,137, 30, 64,181,204,162, 55, 2, 23,162, 64,160, 2,101, -121,129,188,135,129, 24, 26, 72,171,184,134, 80,245,240, 44,162,244, 27,192, 28, -236,186, 45, 68, 9,204, 8, 42, 10,117, 28,244, 18, 69, 71,198, 12, 48,130,161, -230,177, 67, 92,125, 61,208,190,130,158,183, 66, 0,243, 35,188,201,168,237,211, - 81, 22, 12,119,101,105,130, 55,234,108, 35, 81,246, 37,180, 70, 41, 14, 85, 17, - 12, 32, 82, 81,194,168,160, 37,170,159,240,162,141,248, 13, 37, 52,122,145, 98, -205,170,213,179,151,153, 59, 6, 18, 87, 85,129,174,229, 70,137,140, 91,151, 83, - 57,210,213,226,231,204, 0, 61, 18,212, 80,137,233, 42,249,199,214,137,138, 96, - 21,102,211, 33,211,239,109, 29, 21,139, 7,173,201, 3, 92,194, 86, 29,208,113, -103, 52, 44,171,172, 40, 64, 73,174, 41,183, 17,184, 43, 94, 0, 61,129,243, 87, - 10, 3, 55,141,242,180,212,234, 32,110,131,164, 40,239,144,160,209, 97, 1,117, - 10, 71,140,189, 64,162,174,248,170, 86, 6, 7,219,243,189,140, 45, 6,170,222, -191, 86,111, 72,187,193, 85,243, 35,145,227, 31, 62,105,231,249,137, 92, 0, 4, - 28, 30, 48,165,152,171,168,135,207, 49, 15,100, 24,214, 77,126, 74, 78,239, 46, - 56,185, 63,175, 43, 8, 32,108,210,182, 35,152,107, 50, 47,164,110,217,118,135, - 26,173,201,101,252, 94, 32, 0,198,240, 79,178,126, 13, 20, 6, 59, 13, 51, 39, -189, 54,129, 27,253,220,194,217,188,240, 89, 3, 25, 81, 62,144, 10,154,186,177, -200, 88,155,118,184, 59,228, 55,220, 91,221,187, 31, 70,253, 35, 4, 51,166, 36, -118,124, 5,178,193, 8,106,149,223, 36,147, 98,112, 15, 90,145,196,158,184,120, - 52,197, 26,161, 70,135, 22,170, 1,218, 16, 65,236, 30,109,238,245, 74,181,144, - 64,127,224, 79,139,102, 88, 41,109, 20,152,121, 51,249, 55, 45, 70,221,155, 72, - 1, 12,140,139, 13,106,192,128,223,202,221,202,190, 88,108, 6,197, 68,143,204, - 65,109,216,102, 49,163,159,213,139, 96, 44, 20,221, 19,222,215,134, 99,150, 68, - 93,198, 73, 54,134, 2, 24,200,108,228,174,197,167,192,213,115,147, 36, 64, 9, -236,249, 29,137,119, 53, 92,143,166, 97,162,243,127,136, 53, 31,178, 40,240, 77, -150,142, 98,148, 25,217,248,138,241,161, 89,246,111, 4, 98,160, 15,234, 2, 64, -119, 44,160, 43,117, 85, 77,209,179, 36,136, 69,158, 17, 21,158, 57, 49,126,157, -132, 91,235,234,133,228,208,126,180,106,188,229, 70,241, 38, 42,107,170,250,151, - 66, 56,213, 62,176, 86,101, 1,229,230, 91,182, 23,149,249, 4,222, 79,150,111, - 18,241,197,136,220,200,163,110, 41, 32, 73,151,185,139, 90, 33, 3, 37,124, 95, - 41, 12,246,180, 32,143,224,130, 12, 55, 15,102,165,207,231, 91,112,155, 21,198, -114, 29,239,180,134,202,145, 7, 20,109, 96, 14, 77,236,183, 98,157,153,252, 51, - 74,219, 49, 43, 12, 56,173, 78,110,124, 21, 6, 78, +// ../Source/Template/GB_AxB_saxbit_A_bitmap_B_bitmap_template.c: +uint8_t GB_JITpackage_76 [2034] = { + 40,181, 47,253, 96, 92, 46, 69, 63, 0, 10, 66,108, 12, 40,176,148,117, 14,104, +161,216,247,231,240, 22,185,101, 49,202,214,112,144,109, 18,210,147,255,231,116, +195,169,154,153,193, 58,122, 36, 63,232, 63,216,254,193,185,185, 0,187, 0,186, + 0, 31,166,249,153, 43,141, 25,219,203,253,255,167,105,100,154, 42,217,189,251, + 81,254,205,182,223,213,177,230, 76, 57,124, 91,235,150,251,215, 88,197,144,209, +199,139, 63,247, 52, 76, 71,255,252, 21, 16, 44,121,150, 58,210, 99,239, 36,238, +103, 19, 65,165,128, 82, 71, 28, 21,229, 49, 99,109,175,179,173,157, 70,169,216, + 86,174, 61,148, 11, 7,138, 74, 87, 61,198,138, 43,232, 56,143, 58, 26,116, 16, +148,191, 12, 10, 8, 10, 40, 9, 23,130,130, 87, 28,245, 11,183, 7,117,120, 69, + 62,100,148,111,216,162, 95, 33,233,193, 70, 34, 29, 33, 48, 21,143, 84, 12,213, +220,165,208,148,105, 56, 94,239, 33,150,254,243,235,217, 47,108, 34, 53, 22,195, + 39, 96, 33, 59, 6,155, 34, 13,167,156,185, 55, 16,138, 39, 6, 34, 39, 6,113, +139,101,162, 88, 44, 1, 31,219, 15, 25,179,173, 94,255,227,166,121,145, 56, 36, + 18,137, 99, 93, 18,218, 71,251, 39,154, 95, 40,157,173,141,201, 35,205,184, 53, + 1, 78,198, 50,181,138,115,105,212,179,215, 92,226,126,243,115,237,248,136,101, + 45,100, 78, 85, 24,164, 30,150,195, 88,148,189,157,185,241,211,198,171,203,197, +117, 72,109, 72, 71, 85,176,212,213, 17,135, 95, 81, 51, 44,217,131, 21, 4,233, + 72,197,139,225, 61, 13, 59,232, 40, 6,116,157,183,204,132, 99,121,117,161, 88, +191, 80,199,252,242,134, 87, 4,215,104, 62, 53,251, 60, 15, 16, 64,104, 56,175, +207,150, 70,220, 47, 74,115,220,209, 58,142,178,125,230, 85,216,221, 54,121,101, + 43,232, 65, 95, 81,212, 53,255,198,251,241, 10,110,165,219, 41,116, 14, 16,190, +201,208, 66,115,227,209, 68,213,182, 87,187, 0, 28,199, 76, 56, 76,136, 62,140, +230, 29,250,133, 15, 67, 97, 24,121,141,245,113,199,105,123,147, 19,141,115, 19, + 68, 94, 52, 37,238, 81,174, 29,116,188, 25, 31,164,220, 5, 95, 71, 10,114,181, +203,125,177, 63,252,204, 51,109,175,187, 27,190,110,207,215, 90,202,125,154, 74, +198, 92, 75,182,115,149, 1,168, 62,148,215,157,205, 68,234,164,158,159, 41,218, + 64,120, 13,214,130, 15, 80, 29,102,206,145,137, 26,223,178,107,190,113,207, 83, + 33,243,190,245,201, 51,241, 83,145,174, 30,107,182,125,197,119,119, 55,192, 7, + 6, 22, 78,122,230,213,171, 31, 23, 4,233,172,153,118, 98,105,130,247,110, 30, + 79,197, 3,133,252,136, 52,140,132,228,160, 13, 5, 70,196, 4, 77,204, 77, 8, + 36, 41, 66, 51,164,205, 78, 72,126,188, 14,200,106,135,165, 56,119, 24, 62, 29, +175,118,182, 20,112, 8, 9, 13,164,125, 52, 73, 49, 49, 36,100, 71,235, 8, 82, +233, 64, 81, 97,149, 88,150, 88,107,230, 85,254,181, 17,105, 32,139,201,209,178, +201, 39,154,231,175,167,156, 34, 79, 69,230,164,111, 98, 24, 70, 29,203, 53, 4, +215,219, 77, 92, 95, 54,218, 25, 7,174,221, 83,230, 28, 7,137,137,108, 19,154, +160,137,135, 41, 34, 93,187,149, 96,216, 70,186, 62, 10,219, 72,216,118,108,194, + 25, 55, 72,173, 72, 24,236,157, 78, 9,201, 57, 52, 28, 31,229,163,110, 85,148, +166,164,172, 62,201,209, 4,184,167,244,238, 43,174,157, 85, 42,149,239,251, 40, +179,186, 54, 73,125,163,223,173,203,133, 19, 92, 18,155,244,252,149,220,175,248, +138,216,210, 49, 87,145,198,247,238, 47,220, 97,123,236,176,226,219,166,100,176, + 75,219,199,251, 80,117, 58,122,193,130, 2,168, 2,212, 80, 49, 68, 50, 34, 34, +146, 38,201,176, 6,178, 24,132,193, 80,162,135,177,164,187, 1,162,112, 36, 12, + 50, 20,195,112, 16,130, 48, 40, 66, 8, 97, 2, 98, 8, 35,132, 16,161, 64,100, + 36, 16,145,235, 28, 56,194,179,200, 36,226,118, 14,229,201,129, 35,135,215, 4, +105, 32,173, 0,172, 10,199,240, 34, 76, 37,168,234,210, 95,129,247,229, 64,250, +121,198, 77,237,229,109, 91,172,193, 34, 12,185, 16,225, 44, 38, 71,144, 96,117, + 76,107, 23,154, 13,219,253,223,140,114,112, 43,207,202, 77,141,233,180,197, 12, +186,176,180,123,121, 75,160, 12, 77,202, 99, 10, 77,243,118,223, 63,176,232,110, + 68,166, 62,238, 29, 13, 16,146, 59,201,109,168,176,250, 21,124,235,214, 25, 38, +246,100,217, 43,165,215,192, 72,155, 22,159,234, 69,149,136, 69,120, 66,253,185, + 75,137,124,202,152,254,125,217,211,194,175,152,156, 35,253, 70, 35,199,191, 71, +120,224,160,152,141, 80,220,181, 87, 49,250, 68, 75,176,242,114,202,136,239,196, + 69,245,176,130,232,227, 7,179, 20, 81,174,230,219, 29,181,208,208, 92,236,243, +182,103, 96, 76, 63,107, 31,193,251, 34,230,139, 76,207,254,250,229,208,195, 13, +210,154,158, 81,187, 72, 10,237, 72,227, 34, 71, 71, 31,108, 71,105,105,241,242, +177,236, 70, 5,250,138, 41,143,101,192, 21,192,245,121, 58,247, 81,243,228,233, +135, 53,166,146, 70, 22,237, 22,187,119, 89, 81,182, 95,192,147, 62, 53,206,173, +240, 48,153, 30, 36, 34,129,218, 6,195,102,153, 0,203,159,162,217, 12,249, 75, + 83,221,158,143, 0, 0,196, 53, 5,166,127, 73,188,129,184,187, 35,244,124, 38, +107, 96,182, 2,182,162,170,148, 5,213,128, 52,113,176, 61,198,234, 27, 65, 8, +132, 33,194,160, 74,153,129,169,219,255, 49,131,192,162, 52,236, 59,159,228, 30, +170, 78,212,245, 60, 54, 41,143, 30,142,138, 97, 60,169, 72, 59, 9, 64, 15, 8, + 4, 91,201, 62,129, 28, 70, 8,250,231, 44,135,209,141, 11, 39,200, 77,248,182, +199,175, 10, 4, 55, 25,163,206, 3,156, 70,146,102, 91, 60, 72,150,145,135, 24, +126,118,216,189, 44,251,140,162, 4,254,132, 71, 85,136,204, 97, 96, 26,217,213, +234,136,202,200, 74, 48,115, 42, 1,155,160,204,140, 73,212,161,106,179,140, 94, +141, 51,220,212,225, 7, 99, 4,255,216, 47, 92,200, 13,221, 93,161,135, 48,159, + 89,214, 81,214, 95,196,226,241,253, 94,187,182,188, 73,255, 6,133,155,140, 39, +194, 67, 91,107,192, 60,175, 3,146,108, 32,222,181, 53, 12,209,173, 50,180,230, +146, 53,176, 8, 56,220,124,108,108,131,212,125,190, 91, 32,100,127, 39, 46,236, +211, 63, 95, 3, 2,104, 87, 9,189,117,128, 18,229,175,227,116, 6,125,183,183, + 61, 19,217, 35,230,205,156,156, 81, 58,183, 98,110,167,101, 87,160, 32,205,251, + 6,130, 26,202, 32, 34,125,251, 55,250, 75, 72, 62, 2,219,196, 61,223,131, 39, +181, 17,167, 29,255,105,161,154, 60, 73,181, 38,243,143,199,196, 57,177,245,234, +156,245, 19,161,102,148, 61, 96, 29,154, 15,135,242, 80,250,136,248, 77,121,154, +203, 53,144,248,186,143,113,182,243,140,107,110, 2,143,188,182, 82,172,121, 71, + 76, 20,210,200, 59,240, 47, 78,252,104,250, 65, 77,167, 86, 52,144,159,252,218, +241,145, 65,101,112, 67,155,247, 4, 50, 87,108,203,247,109, 94, 12, 38, 95, 6, + 74, 45,170,212,243, 76,179,234, 46,177,132,176,196, 60,239,224,182, 14,240,198, +178, 49, 56, 86,212,163,162, 15,129,152,164,140,136, 49, 58, 84,127,108, 4,228, +244, 84, 90, 73, 86,193, 8, 84, 37, 40,162,211, 12,156,110, 34, 59, 18,254,152, +102, 57, 44,247,250, 17,229, 73,171, 36,242, 80,101, 68, 77, 50, 17,252, 45,191, + 72,120, 39, 37,122,205, 89, 99,217,168,201,149,218,207, 95,228, 82, 75, 61, 11, +161, 88,192,144,197,219,128,118,225, 47, 74,233,240,165, 65,135, 24,134,216,250, +185,231, 22,125,150,233, 94, 57,122,198, 91,180,118, 68,108,236, 3, 3,152,128, +161, 8, 71,229,132, 12,145,204,161, 3,215, 76, 24,248,161, 0,241, 12, 6,150, +112, 29,133, 24, 69,138, 76, 17, 50, 58,231, 20,245, 94,243, 97, 32, 47, 26,116, +215,166,133,214, 88, 0,247, 17,246, 34, 55,182, 56,193, 16, 57, 52, 63, 90,209, + 34, 78, 90,173,155,139, 24,220, 29, 18, 80, 50, 52,200,154,199, 2,213, 75,201, + 82, 56, 61,131, 47,138,148,137,197,211,111,196, 43,131, 12, 65, 15, 24, 98,133, + 25,207,208,165,201, 18, 77,230,157,245,106,102, 64,196,210,226, 63,174, 36, 69, +199,144, 73,207,243,211,130,252, 87,248, 78, 54, 77, 95,133,243,236, 25,176, 28, +117, 37,154, 75,156, 38, 28,173, 92,193,255,151,147,128,198,130,217, 66, 76, 76, + 33, 74,132,252,139,171,227,220,140, 90, 26,195,168,251,192, 23, 46,241, 27,105, +122,153,216,247, 41, 3, 6, 17,167,103, 72,240,222,139,180, 92,208,224, 18,225, +227, 21, 76,204,156,130, 63,148,169,219, 26,159, 95,145, 59, 18, 43, 20, 93, 50, +246,144,221, 66, 4,194,254, 25,138, 99,133,195,195, 44,183,253,132,176,104, 9, + 24,120,192, 20, 12,241, 37, 66,154, 74, 40,114,211, 61,150,140,195,190, 30,199, +100,178, 37, 51, 8,219, 12, 15, 81, 11,168, 2,126,159,131,107,163, 26,177,126, + 85,166,168,124,137, 38, 87, 81, 2,208,252, 38, 85,192, 51, 58, 5,146,129,190, +102,159, 90, 75,241,125, 77,218,124,158,126,153, 77, 83,171,101, 38, 39, 7,235, +229, 27,196, 74, 14, 96, 83, 57,175, 8,130, 10,215,243, +} ; + +// ../Source/Template/GB_AxB_saxbit_A_sparse_B_bitmap_template.c: +uint8_t GB_JITpackage_77 [4065] = { + 40,181, 47,253, 96,174,115,189,126, 0,138,110,116, 20, 45,160, 14, 93,231,122, +116,135, 4, 1, 73,208, 36,142, 42,115,127,127, 22, 25,112,137,252,151,177,241, +167, 13,244, 52,233, 10, 79,113,181,154,155, 43,120, 29, 94, 71,158, 28,103, 8, + 52, 1, 69, 1, 55, 1, 18, 62, 61,162,214,159,156,163, 77, 98, 47,220,248,163, +217, 79, 83,178,155,228,250,185,217, 23, 78,143, 15,126,244,242,243,200, 10, 54, + 68,190,245,253,111,125,178,157,149,151,106, 89,255, 63, 3, 67, 5, 12,195,184, +222, 38, 55, 48, 76, 19,204,131,141,196, 20,218,158,103, 55, 48, 76, 32, 88, 52, +153,132,227,109,114,221,176,177, 48,248, 54,229,227,180, 53,157,244,123,198,114, + 97,178, 7, 19,215, 22,122,218,108,233, 35, 77, 90,143,103,229,238, 90, 87,158, +236,169, 44, 91,169, 73,238,209, 97,243, 81,231, 12,126,124, 63,155,141,109, 88, +233,149, 94,248,133,154, 38, 79,167, 3, 59, 71,207,159,123,122,103,127,227,202, +247, 74,205,126, 50,203,207,111, 87,122,206,114,199,229,119,120, 94,200, 57, 72, + 30, 29, 42,131,163,207,117,135,237, 99, 12, 15, 14, 72,131, 63,154, 4,175, 87, +149,155,235, 59,121,179, 52,216, 78,214, 90,162,225, 32, 2,227,216,248,162,178, +229,204,237,253,120, 58,115,207,187, 30, 9, 64, 30, 32,141, 3,143, 7,200, 39, + 77,122,180,125, 33, 35,238,184, 62,250, 92,250,245,230, 81,115, 73, 72, 62,160, +172,148, 74,195,183, 67, 13,131,103,246,231,142,166,252,229,241,216,163,132,113, + 89, 9, 46, 13, 16,216, 43, 80,126,153, 36, 99, 91, 37,104,179, 43,187,221, 17, + 73,155, 73, 68, 87, 38,161,220,193,129,161,225,224, 16,147,136,140,129, 69,194, + 4, 2, 69, 80,231,145,172,252, 54,242, 38, 80,236,164, 79, 93,108,233, 58,152, + 72, 96, 46, 20, 24,132, 1, 3,158,153, 88, 36, 48, 22, 74,214,117,118,101, 27, +137,138,203,131,109,231, 83, 71,194, 92,151,205,196, 68, 51,201, 96, 50, 80, 23, + 78, 74,169,176,215, 9,233,230, 61, 78,121,228,215,145,123,146,107,246, 43,169, +199, 69, 88, 40, 38, 40, 46, 25,132, 0,182, 32,211, 84, 72, 96,176,202, 37,210, +171, 63, 92,193,169,237, 76, 66,137, 18, 52,182,166, 23,146,132, 34,153, 24, 29, +137,244, 73,234, 80, 42,111,149,190, 82,144,252, 62,191,208,163,218,103, 63,130, +179, 49,234, 52, 58,143,147,117, 74,164, 1,206,200, 33,143, 6, 4, 84,129,211, +162, 32,172, 63, 36,211,163, 81,197, 74,138, 15,143,220,101,251,241, 87, 37,123, + 26,227,167, 46,210, 56,146, 36,154, 78,153,176,100, 44,151,137, 38,203, 52, 0, +222, 48,217,187,208,206,184, 69,132,179,214,158,205, 42,210,169,115,156,171,117, +189,150, 43,227, 55, 67,112, 67,237,244,138, 42, 92,133, 53, 9,218,174,210,208, +101, 79, 38, 49,153,216, 88, 36, 14, 46, 77,180, 92, 44,214, 61,158, 18,108, 88, +159,125, 31,191,222, 46, 58,143,210, 39, 40, 44, 27,203, 38,115, 97, 38,131, 30, +111,149,215,130,126,179, 2, 6, 46, 38,177,124,193,179,191,202,151,183, 83,212, + 60, 68,228, 15,183,164,201,122,242, 98,106, 21, 37, 77,218, 87,171,103, 8, 24, +197,130,108,211,145,128,210,179,176,181,185, 78,192, 29, 44,199,245,143,214,159, +144,141,143, 70,150,101,243,244,254,225, 31,173,236,153,178, 94, 50,233, 45, 95, + 89, 25,164,231,207, 70,235,143, 94, 57,137,136,184, 38, 17,155,204, 68,163,185, + 88,147, 30,216,152,163,141,155,218,254, 70, 63,151,191,201,159,208,185,134, 55, +228,102,159, 59,247,188, 14, 93,203,239,136,215, 11, 45,215,203,241,137,190, 76, + 82, 41,167,247,134,224,236,207,206,176, 75,231,227,198, 87,106,212,243,228, 71, + 30,118, 81,215, 43,191, 56,242,238,228, 90,195, 11, 20,197,220,221,170,128,143, +153, 73,101,115, 81, 38, 12,148, 14,234,236,146,109, 38, 20, 9,137,138, 5,211, +227,242, 9, 0, 62, 65, 62, 64,146,250,187, 71,105, 39, 83,201, 50, 20,217, 68, +163,105,160,185, 46,151,119, 26,127, 44,176, 14,166,253,145,115, 56,251, 78,170, +125,178, 0,112,198,187,210,125,202,122, 67,188, 27, 59,189,175, 76,193, 12, 3, + 35,159, 64, 7,231, 33, 64, 1, 52, 71, 86, 96, 4, 6, 56, 95, 17,152, 10,139, +154,108,185,130, 23,174, 37,122,148, 62,217, 88, 50,156, 81,189,147, 31,226,249, +202,244,112,203,186, 5, 8, 68, 85,192, 8,231, 42,145,127,154, 58, 30,233, 14, +140, 83, 45,189,114,134,195, 43,116, 60,147, 77,133,131, 74,247,216,127,236, 90, + 62, 70, 62, 93,233,147,204, 37,129, 5, 12, 12, 23, 40, 14,215,215,134,160, 77, +254,134,157,199,141, 57,122, 27, 94,176, 59, 14,199,122,119,119, 40, 52,157, 3, + 17,177, 30,154, 42, 72, 75,183,221,176,242,220,167,141,175,149,218,157, 66,161, + 24,187, 45, 24,147,244,234, 12, 80, 4,203, 58,182,134,132,170, 71,136, 3,233, +234,209,156,137, 35,157, 47,180,196,233,230,112, 64,169,226,112,143, 12,233,164, +255,156, 87, 14,182,216,247,133,150,235,230,119,112,244,182,242,103,235,203,145, + 31,208,222,214, 26,147, 47,218, 51,161,243,159,219,161,199,199,227,113,117,246, + 94,142, 70, 52, 76,190,183,107, 40, 18,169,116,134,140, 71,131,192, 43,125,132, + 60, 62, 30, 31,110, 43,207, 16,101,239,192, 99, 68,176,153,176,100,147, 76,197, + 6,115, 97, 23, 14, 84,168,108,211,237,194,109,233, 16, 0,116,100,125,198,193, +243,116,226,119,240,149, 27, 24,126,122,114,179, 44,238,124, 74,141,107,204,114, +161,216, 92,149, 91,176,240,200,187, 3, 4, 8,240,164,144,233, 2,192,178,164, + 63,104,101, 10,241,210,121, 80,107,213, 67, 53,251, 59, 95,121,109,131,111,207, + 22,241, 54,251,234,134,136,220,234, 80, 89,215, 69, 56,120, 93, 83,148, 80,186, + 83,214, 37,224,187,169,235, 30, 63,151,244, 43,171,116, 20, 69,117, 29,164,171, + 30,221, 37,157,250, 36,194,170,106, 82, 43, 47, 66, 10,227, 65,129, 34,103, 16, + 49, 65, 17,132,106,168,147,137,146,214, 57,166,100, 68,100, 36, 41, 72, 90, 3, +243,160, 16, 16, 20,145, 76,230,147,161,168, 85, 31,163, 97, 17, 57, 16, 29, 67, +129, 72, 20,130, 64, 60,130, 32, 32,131, 64, 32,130, 64, 8, 33, 16,193,132, 16, + 70, 4, 68,236,142, 27, 5,186, 41, 71, 39,255,139, 14, 55,255,247,179,236,238, +207, 3,131,249,124, 91,219, 86, 9, 20, 45, 65, 46, 5,210,177,133, 40,221,200, +203,206,212, 20,252, 81,156, 4,213, 53,143,237, 25,254,144,177, 75,164, 7, 25, +126, 66,169,101,166, 41,190,210,235, 97,239, 58, 39, 60,203,154, 9, 72, 43,185, +152, 66, 65,139,164,202,243, 99,176,244,135,116,226,139,219, 7,212,242, 55,243, + 82,246, 56,219,171,126, 51, 68,116,141, 89,230,161,222,197,168,189, 67, 79,208, +193, 3, 46, 96,197, 24, 25,156,191,139, 38,204,171,130, 96, 14, 58,209, 23,150, + 99,164, 93,242,187, 68,108,128, 20,173,164,188,252, 60,105, 20,181,227, 41, 2, + 4,179, 5,203,157, 90, 26, 6, 80,132, 31,105,219,135,170,252,160,157, 4,135, +160,232,135,191,210,134, 11, 62, 18, 20, 98,142, 55,245,242,121,173,108,255, 7, +100,206, 83, 91, 19,242,244, 41,169,199, 12, 87,190,101,180,156,255, 22,119,196, + 6,148,218, 16, 65,150, 42, 90,189,126,192,249, 29,100, 0, 75, 1,130,209,134, +170,187, 50, 21, 14, 54,249, 8,130,159,181,152,229,143, 97, 13, 99, 50, 69, 73, + 63,188,141,163, 67,129, 34,228, 42, 52,102,182,117,215, 8, 67,122,252, 14,124, + 81,227,163, 55,177,131,210,252,229, 52, 68, 93,163, 50,184,243,138, 99,103,212, +142,189, 46,227, 25, 85, 83,118, 79,224,201,248,111,148,239, 3, 94,108, 1,107, + 71,157, 45, 80,134,122,185, 68, 52,117, 94,243, 3,250, 75, 30,214,157, 66,236, + 81,244, 86, 37,104,225,105, 27,203,129,201,156, 49, 78, 46,213, 20, 85,116,119, + 38,203,228,246,132, 53,135,252,131, 11, 31, 63,183,241,133,176, 23, 36,139,158, +173, 22,164, 42,205,181,139, 39, 99, 47, 2,236, 66,103,200,136, 89,150,153, 85, +153, 48,204,120,224,238, 62,205,190,221,130, 26, 61, 74, 9,152,185,188, 68, 67, +206,244,106, 24,115, 93, 87, 12,122,210,156,205,158,110,222, 71,199,220, 40,154, + 92, 53, 27, 28,109,112,228, 19,137,107, 37,202,240, 39,242,253,183,190,176,136, + 21,182,220,237,161, 26,149,227,150, 38,106,237,123,223, 80,243, 73,113,218,104, +166,160,147,118, 68, 56, 17,148,188,112, 78,172,172, 19, 52,217, 92, 52,115, 54, +202,213,194,236, 72,188,110, 27,211,149,240,196, 13,185, 77,165, 51, 90,194,199, + 52,196,112,140, 42, 74,246,218,116,139,237,243, 65, 39, 80,249,220, 55,218,237, + 40, 29,170,238,202, 18, 49,122, 52,119,150, 10,166,198, 62, 50,194, 43, 24,192, + 46, 16,172, 5,222,180,204, 81,165,204,103,117,127, 74,133, 63,193,180,205,137, + 10,245,222,231,248,226,138,102,130,189, 36,174, 72,212,200,230,140,165,148, 14, +161,207,217, 15,224,176, 0, 13,126,119,246,116,238, 22,127, 38, 44,217,138, 38, +140,103,226,134, 41,140,227,121, 57, 38,130,240, 75,158, 31,244,243,233,203, 17, +183,227,138, 38, 91,224, 32, 93,130, 59, 19,110, 17, 77,200, 47,186,118,168, 24, +233,219,152, 42,209,107,144,156,166, 55,236,162,169,133, 41,235,234, 50,164, 73, + 2,121, 76, 41, 24, 87,219, 65,201,104,138,154,106, 41,223,100,201,131,122,136, +174,242,187,182, 68, 80,181,119, 57, 33,146,158,106,144, 41,101, 47,132,203, 2, + 95, 37, 17, 11,140,182,124, 0,211, 95, 38,198, 30,109, 45, 6,162, 96,210,157, +218, 16, 32,109,130,192,232, 8, 59, 1,218,169, 59,247, 65, 79,171,128,242,194, + 1, 50, 41, 99,157, 69, 23,255,113, 96, 68, 7,252, 49,202, 37,228,220,156, 20, +198, 30, 66,190, 26, 32,133,155,155, 91, 81,130, 69,132,101,150, 83, 26, 35, 58, + 8,210,194, 54,124,165,215,104, 77, 8,203, 57,145,178,140, 14,217, 29,101, 19, +231,139,254, 72, 35, 7, 80,215,186,196,226,184, 83,153, 55, 75,177, 37, 31,146, +183,241, 22, 78, 72,150, 49,208, 45,203,130,110, 16, 78, 70,115, 98,155, 19, 79, +123, 54,183, 70,223,220, 92,231,253,113, 64, 65, 3, 46, 57, 34,159,123, 15, 8, + 25, 77, 6, 73, 11,183,119,104,123,152,237, 96,204, 4,172,233, 37,146, 60,108, +213, 4,242, 73, 65,169,248,248,202,181,119, 45,212,168,105,200,113,209,240,139, + 65,236,156, 96, 83, 66, 7,157,138, 84,135, 86, 97,143,186, 17, 17,208, 87,121, +139,216, 43,138,114,213, 15,144,118,160,220,226, 39,118,169, 79,211,190,239, 46, +213, 74, 66,118,211,104,150,129,253, 61, 15,133,179,178,152, 13,146, 6, 82,204, + 90, 14,158,162,231,118,175,166, 74,246,213, 1,167,112,234,221, 38,121,134,102, + 33,185,147, 94,113, 21, 27, 85,150,128, 56,235, 18, 44,102, 2, 48,151,182,183, +105, 49, 30,128,234,248, 48, 1, 92,146,158, 87, 67, 67,138, 71,205,209,144,158, +209, 73,237, 16,182,180,125,202,158, 53,200, 48, 20,178,119,227,122, 6, 81, 65, +132,136,189, 61,108, 53,213, 52,222,195,199, 90,246,102, 85,222, 6,119,195,125, +141,129,100, 37, 72,150,239,241, 12,218,217,142,130,150,112,154,140,121,252,152, + 18, 18,105, 69, 94,140,132, 0,149, 52,200,117,192,150,238,132, 9, 74, 21, 15, +102, 58,194,232, 39, 67, 30, 9,206,103, 59, 6,207,178,180, 68, 31, 57, 1, 73, +208,224,190, 37,131, 6,214, 36, 74,201,229, 74, 90,100, 20,120, 62, 52,199, 48, +155,231, 27,245, 15,194, 38,238, 26, 85,209,149,233, 98, 48, 37, 37, 71, 86,158, +212,125, 98,113,158,210,223, 14,135, 91,158, 54, 86, 46, 9,237,162,133, 41,209, +184,165, 27,218,216,154, 99,242, 32, 92,166, 4,119,225,101,152,133,125,183,151, +179, 71, 2, 57, 77,235, 20, 47,194, 21,104, 40,178, 90,125,115,184, 88,216, 22, + 97, 51,188, 93,198, 67, 23,176,130,236, 3,206,190,158,199,144,101, 97,102,245, + 34,217,175,184, 40, 39,112,118, 73, 66, 13,185,114,108,243,155, 1, 67,135, 66, + 72,116,168,132, 79,238, 40,210, 39, 48, 48, 67, 29,165, 32,146, 34,120, 88,116, +101,236, 88,175,125,210,235, 16,210, 96, 60,247, 60,163,108, 56,195, 30, 34,131, +179,100,197,238,220,112,121,238,107,207,203, 94,159,127,186, 63,163, 4, 90,222, +183,229,141, 18,225, 13,126,227, 22,133,225,210, 93,119,195,226, 41, 48, 85,162, + 53,182, 7,231, 29,253,233, 53, 76, 86, 54,130,230, 12,201,202,238, 25,212, 56, + 50,154,192,125,113, 71, 73, 25,235, 90,134, 90,108,167, 31,201, 96, 82,164,244, + 21, 57, 55, 97, 59,186,199,213, 76, 92,180, 78,241,141, 38,103, 53, 56, 61,220, +133,191, 60, 80,136,219, 41,199,116,242, 75,252,226,117,135,225, 62,244, 19,214, +143,129, 8,139,233,112, 82, 15,114,208,144, 18,212, 73, 6,246,240,100, 77,209, +139,141, 76,188,157,239,163,221, 4, 74,236, 88,195,142,152,164,129,104,132,244, +150, 29, 61, 87, 70, 16, 36,141,203, 93, 15,138, 96,102, 29,107,181,241,137, 11, + 63, 72,134,240,221,135, 0,134, 17, 57,107,197, 22, 51,221, 98,136,119, 63,120, +106,122,144,123,239,154,111,203, 4,178,140, 35,117, 41,155, 84, 97,248,233,250, +141, 96, 67,179,190, 87,151,240,154, 60,138, 19,166, 55,239,163,183, 89, 91,114, +249,227, 91,102,158,108, 55, 51,216,101,192, 92,167,228,110, 50,176, 15, 41,141, +112,157,113, 32,226,246,221,232,165,119,184,255, 72,192,247, 96, 40,119,227, 44, + 36, 21,112, 67,122,216,227,194,100,210, 50, 12,136, 77, 56, 19, 60,110,202, 88, + 66, 30, 12,228, 24,123,222,199,131, 98,247,253,179,189, 62,224, 24,126,188, 74, +163, 35, 87, 59,246,136,139,215,121, 67,203,241, 85, 66, 70, 11,126, 97, 42,192, + 65,170, 36, 72,155, 82,141,181,131, 8, 51,199, 32, 60,151,108, 45, 19, 39, 91, +158,226, 35, 76, 69,252,170,154, 49,193, 20,237,232, 26,163, 59,205,178,227,107, +178, 34,254,152, 1, 48,104,144, 9, 52, 12,255,159, 64,132,165,148, 12,151, 67, +201, 73,222,242, 86,149, 83,253,242,116,115,244,118,202,129,198,246,190,102,156, +168,149,155,167,204,251,109,147,232,108,116,254, 95,235,216,118,217, 65, 15,237, +178,243, 56,178, 48, 45, 55, 69,236, 30, 97,116,167,112,215, 14,139, 99,180, 79, +192,134,206, 73, 69,175,142, 58,165, 13,201,217,251, 16,179,121, 97,117, 60,196, + 76,195, 66,131,122, 27, 58,189, 84,145,151,114,131,197, 25,198, 85,245,196,193, +203,155,197,188,219,159,229,245, 68,236, 33,139, 71, 10, 1,195,129,186,133,199, +187,115, 43,221, 2,143,231, 13, 19,213, 67,251,192,125,172,191,130, 99,163,108, +135, 17, 89, 93, 66,233,166, 29,192, 22, 65,156, 12, 74, 98,162, 16,121,147, 71, + 77, 80,227, 1,154, 19,134, 62,166,229,217,137,179,116,116, 30,184, 72,190, 94, + 77, 32,133,108,201, 9,121,254,125,106, 84,101, 41, 96, 12, 9,164, 18,255,197, +148,169,240, 52, 91, 45, 16,187,218, 95, 44, 52,152, 29,233,150,237,249,178,151, +158, 89,113,168,225,182, 38,244,249,105, 54, 78, 59, 65,170,193, 17,229,219, 96, + 78, 49, 68,100, 4, 9,161,200, 44,167,163,251, 43, 12,252,101, 33, 46,108,126, +142, 16, 27, 85,214,173,209,242,166,161,197,242,125,209,140,202,249,174,147,181, + 43, 81,222,193,206,180,204,210,181,153,185, 33,188,132, 8, 64,160,158,200,196, +107,208, 41, 36,151,198,249,159, 60,163, 93, 49, 86, 10,113,168, 79,155, 2,138, + 41,249, 27, 82,147,184,224,144,193,121,175,205, 55, 13, 42, 95, 11,219,206,138, +178,192, 33,234,130,139,225,179,138, 92,102,209,218,197,101, 56,148, 4,220,102, + 68,199, 73,254,178,225, 5, 98,231,199, 31, 10,185, 78, 18, 59,146,173, 70, 60, + 22,178, 8,127, 53,165, 80,241, 99,198, 88,210,191, 17,114,140, 80, 77, 25,198, +155, 98,230, 87,208,155,154,112,209,213, 90, 59, 19,219,109,189,251, 40, 83,212, +180,106,173,131, 69, 20,252, 74, 50,255, 81,172,142,179,101, 60,190, 29, 97,149, +204,204,129,147, 4, 38,116,123,239,130, 90,253,225,250,124, 20, 35,185,191, 63, +183, 15,253,158,126,125, 13,174,128, 17,222,110,177, 73,102, 89,191,197, 70,101, +166,111, 9,198,254, 24, 39,177, 41, 41,171, 7,183, 48,134, 69, 90, 62, 58, 37, + 22,187,216,161, 75,196,186, 82,124,178,170,164, 12,170,154, 4, 13, 33,126, 21, + 15, 5, 62,206,167,226, 65,136,179,160, 55,240,135, 24,222,136,108,178, 84,145, +153,145, 7, 16,252,105, 96,184, 35,144,195, 19, 28, 76, 70,196, 11,102,186, 54, +101,185,169, 92,193,191, 48, 65,219,201,144,164,229, 63,100,208, 95, 92,169,123, + 15,134,189,209, 83, 29,180,125,131, 33, 59, 68,130, 40,142,143, 39,178,237, 71, +245, 57,110, 47,112,101,172, 87,216, 99,155, 93,121,255,123,232, 76, 46, 47,232, +243,110,141, 12, 39,118, 16,149,204,243,155,167, 52,201, 61, 64,194, 24,233, 22, + 14,150,217,188, 19,179,163,184,246,240, 52, 32, 24,164,219,160, 36,134, 1,244, + 79,205, 38,175,189,191, 56,221,126,122,216,156, 58, 48, 82,197,161, 49, 7,147, + 59,131,151,100,244, 72, 36,185,132,207, 64,120, 19, 71,130,247,119, 62,180,168, + 62,166,247,243,147, 27, 68,160, 63, 11,202,131, 77, 11,118,223, 22,174, 16,111, +178, 64,188,231,254,234,179,207, 19,114,254, 70, 76,132,128,228, 79, 80, 37,133, + 22,222, 71, 46,123, 88,141, 65,168, 96,204,242, 77,219, 43,182,159,217, 54,218, + 67, 84,210, 52,198, 92,182, 56, 59, 77,183,187,161,175, 69, 82, 64, 24, 68,131, +195, 6, 67, 59,229,142,120, 48,210,232, 25,172,109, 44,211,111, 12,153, 96, 51, + 74,152, 78, 76, 20,152, 6,176, 72, 53,122, 6, 87,152, 20,239,138,244,247, 37, +219, 48, 60,248, 0, 63, 49, 71,249,146,228, 57, 40,244, 20, 21,146, 64, 1, 57, + 89,141,111,153, 62, 15,202,113,104, 94, 5, 2,126,222,179, 9,145,244,153,249, +176, 65, 93,101, 73,168,237,149, 66, 68, 95,178,111, 16,179, 90,175, 73,231,163, + 6,206, 77,227,102, 65, 31, 89,130,166,221,216, 57, 66,129, 70, 42,235,162,221, + 99,154, 9,138,107,233,193,184,179,184, 40, 80, 33, 36,162, 68,127, 84, 34, 18, + 99,112,200,184,171,112,140,103,102,247,204,145,183,214, 44, 60,228, 33, 58, 31, + 40, 54,205,172,110, 48,177,157, 99,158,129, 51,117, 12,217,127, 24,215, 37,153, +112,122,142, 97, 27, } ; -// ../Source/Template/GB_emult_02_template.c: -uint8_t GB_JITpackage_94 [813] = { - 40,181, 47,253, 96,108, 11, 29, 25, 0,118,226,107, 33,240, 88, 55,172, 23,242, -240,156, 43, 19, 73,155,178,241,156,116, 67,186,162, 1, 77,125, 13,140, 94,128, - 82,100, 19, 65, 19, 26, 2, 98, 0, 93, 0,100, 0,123, 44, 93,144,147, 36,117, -140,177, 72, 44,178,135, 34,177,240, 66, 72,112, 76, 95,148,181,184, 70,125, 53, -110,179,188,158, 99, 29,229,212,241,180, 25, 19,233,126,223, 83,119,145,228, 73, - 68,156,182,220, 23,172, 78,194,214,243,159,171, 17,241, 58,219, 83,187,190, 78, - 29,255,152,242,106,208,168, 83,124,243,200,111, 75,158,229,239,111,145,248, 54, -121, 42,255,171, 24, 71, 32,174, 12,129, 8,121,235,207, 6,223, 95,195,177,241, -245,173,177, 25,110,213, 49,234,251, 75,238,238,126, 93,172,235,210, 48,215,184, -108, 58,166, 63,159, 38,109, 75, 55, 59,174,173,127, 62,237,240,148,183,246,213, -190, 95, 90,237, 63,110, 31,247, 77, 57,182, 93, 9,109,145,253, 24,218,147,122, - 36,255, 21,239,198, 79,202,100,175,241,135,151,147,137, 44, 31,141,244,168,252, -250, 65,174, 3,212, 69,211, 31,155,133,193,128, 0, 40,108, 4,247, 64,151,174, -163, 30, 39,196, 93, 62,241,146,112,173, 18,210, 52,193,215,228,215,234,233, 50, - 31, 53,245,125,124, 57,151, 14,232,178,249,188,140, 70,124,146,120, 5, 11, 55, -100,187,245,169, 77,218,110,124,176,164,169,132,239,103,250,239,195, 75,106,250, -109,157,175,104, 2, 43, 89, 5, 43, 68,130,159, 68,221, 59,142, 18, 63, 43,217, - 73,125,135, 55,215,213,114,247, 66, 37, 56,166,192,225,132, 58, 78,161, 56, 71, -112,241,134,159, 45,231, 18,176, 21, 8, 53, 27,240, 39,157,200, 16,127,198, 40, -231,101,234,199,242,116, 42,156, 96,178,121, 54, 41,155,183,133, 64, 94,247,225, - 60,219,183,233, 40,119,150,102,248,153,180,229,238, 61,207,109,219,182, 90,107, -149,184,170, 64, 80, 93, 62, 35,111,220, 38,246,125, 2, 29,243, 7, 29,219,208, -171,103,211, 3,128,162,160, 49, 73,164,148, 76, 48,163, 32, 73, 10, 10,133,225, - 96, 68,132,172,108,117, 27, 9, 71,139, 96, 90,136, 38,223,128,144,205,212,241, - 40,212,128, 54, 91,244,209,248, 5, 6,212, 1,216,241,227, 40,140, 56,248,183, -145,141,215, 48, 78,143, 32,151,156,166,141, 44, 35,130, 0,215,210, 46,198, 65, -109,100,144, 40, 41, 12,176,145,195, 30,136, 21,136, 30, 32,148, 23, 59,228,160, -245, 67, 10, 17,243,141, 97,163, 30, 88,130,228,147, 32,129,229, 15, 97, 42,242, -244,131,192, 12, 80,231, 54, 3,253, 50, 3,187,221,118,104,172,109,120,198,118, - 14, 23, 34, 97,196, 4, 45, 47, 4, 33, 77,225, 8, 4, 40,162,210,224,208, 60, - 15,110, 0,147, 66, 24,100,249,132,205,141, 9, 40,144,113,110, 34,141,160, 50, - 94,128, 37, 19,128,112, 65, 52,102,243, 82, 4, 68,120,147,104,240,172, 54,134, - 1, 70, 68,124, 18,143, 96, 98, 67,111,107,111, 18, 20,145, 12, 82,176, 6,142, - 58, 27,210,159,136,155,145,195,129,195,238, 44,158, 23,215, 45,235,128,160,132, -108, 60,154, 68,230,200, 24, 35, 56,231, 65, 70,135,159, 96,100,115,196,225,158, -142, 6,136, 9, 64, 13, 86,126,115,164, 80,168, 39,136, 17, 44,229,175, 78,222, - 36, 7,244,162,234,217,122,198,110, 64, 56,163,131,112,223,108,128, 0,184,209, - 12,232, 51,218,214,116, 4,219, 31,134,143, 13, 51, 86,139,110, 47, 22, 61, 97, -125, 53,178,191, 49,148, 51, 54,215,140,206,106,159,175,190,183,224, 91, 36, 91, - 41, 35,100,111,236,190, 17,252,180,113,146,183,100,211,196,252,193,132, 86,255, - 10, 35, 4,130,139,134,210,231, 87, 85, 20,140, 1, +// ../Source/Template/GB_AxB_saxbit_template.c: +uint8_t GB_JITpackage_78 [2199] = { + 40,181, 47,253, 96,208, 59,109, 68, 0, 22,253,183, 40,192, 84,117, 14,228, 92, +191,207,158,227, 11, 23,146,239, 51, 9,202, 26,192,226, 60, 48,177,183, 43,166, +238,194, 48, 56, 38,108,241,244,187,138,130, 45, 10,184,171, 0,166, 0,180, 0, +147, 82,233, 57,206,126,239,237,156, 23,218,121,235,154, 13,118,241,185,128,168, +112,141, 67,174,202, 79, 0,191,174, 5,189,111,152,103,120, 51,126,119,249,184, + 43,253,110,231,230, 30,202, 20,107, 33,112,114,169,100, 40,221, 77, 9,198,107, +110, 83, 16,205,181, 57, 14,165,113,237, 73, 43, 40, 24, 15,158, 10,215, 31,183, +113, 99,199,185,227,160,216, 61, 47,126, 50,200, 92, 50,148, 4,204, 37,115,105, + 70,159, 48,253,144, 15,175,196,135,186,108, 63,250,249,148,197,138,170, 3,229, +141,208, 52,190, 18,204, 58,211, 48,155,128,242, 59,166,183, 94,187, 3,121, 69, + 16,169,134, 75,128,193,186,102, 86, 58, 75, 15,252, 58,107,153,110, 33, 18,107, + 85, 72,212,170,136, 91, 44, 19,138,197, 18, 27,137,142, 86, 85, 91, 85,225, 26, +171,143,114, 82, 60, 69,213,246, 62,230, 1, 66,198,213,206,133,111, 13, 20,235, +212, 55,235,121,210,155,113, 95,130,103, 77, 33, 87, 26,146, 32,158,252,194, 37, +201,138,238,137,215,135, 83,105, 85, 68,244, 15,182,201,178, 88,197, 79,215, 39, +235,185, 57,254,255,147,201,200,165, 95,227, 91,100, 28, 13,227, 68,143,150,209, +241,170,125, 14,183, 87,249, 10,197,110, 15,201,239, 85,252,237, 46,211, 77,230, +252, 85, 37, 74,158, 23,130,166, 41,212,125,234,232, 89,126, 19,215,161, 39, 63, + 60,201,245,215,118,126,202,182,230,218,184, 47,120, 13, 71, 13, 85,121,113,212, + 86,251, 97,249,254, 36,253,181, 89,222, 6,237,191,112, 78, 9, 10,147,201,138, + 42,189,212, 49,209,232,122,232,230,218,239,166,236,204,169,130,111, 88,160,198, + 71, 44, 75,127, 59,103, 57,177,197,210, 64,201, 82, 72,116,141, 67,116, 41,132, +210,109,235, 58,240,186, 70, 34,128, 83,215,117, 93,210, 21, 65, 96, 22,218, 47, +151, 44, 58, 31,235, 2,251,100,158,203,194,210, 40,178,120,105, 30, 88, 94,223, +229,123,214, 90,132,226,144,143,118,117, 21, 21, 23,157,139, 58, 21,163, 68, 66, +242,232, 90, 45,198, 24,165,140, 92,123,219, 23,118,104,113,246, 71,149,148,110, + 91,215,129, 7, 35,182,241,100, 72,108, 50, 44,122, 50,128,186,224, 89,187, 53, +246, 90,179,152,106,213,187,210,138, 77, 7,219, 80,104, 31,206, 4,168, 57, 16, + 21,144,170,232,156,215,157, 38, 82, 43,117,145,186, 69,127,168, 8,147, 73, 73, +135,115, 81, 62,123, 65,207,244, 87,182, 55, 63, 45,204, 83, 37,184, 39,189, 89, +126,247, 60,249, 99,226,181,112,131,107,142,185,195, 37,204,165,175,124,188, 38, +151,215,240, 82, 89,226, 39, 91, 79, 81, 63,128,133,161, 82, 17, 68, 42,126,210, +219,181, 57, 66,215,230, 41, 65, 1, 49,224,205,133,222,172, 63,198,224, 96, 15, + 12,220,235,122,219,227, 35,156,237,114,231,217, 94, 99,203,178,172, 73, 68,135, +131,113,174, 77, 86, 85, 85, 85,197, 24, 99,199, 3, 48, 41, 49,192,100, 48,246, +182,200,215, 65, 53, 26, 92,169,157, 7,177,245,214, 65,152,147,125, 59,156,235, +196, 81,233,164, 94,107, 25, 45,187,168,240,104,216,230,243,137, 86,214,137,224, +100,217,116,197,233,242,233, 1,130,163,168,130,212, 12, 25,146, 17, 17, 17, 73, +146, 20, 50, 28,194, 41, 4, 2,113,152,199, 97, 41,111,146,152, 28, 19, 65, 36, +130,192,136, 35,134, 17, 34, 32,132, 32, 66,228, 68, 34,145, 68, 35, 34, 34,109, + 3, 50, 36, 99, 83,106,231,140, 74,109, 26, 80,169, 77,128, 42,181, 21, 43,133, +171,143,157, 43,233,207,133, 59,160,138,125, 75,105,145,204, 34,181,254, 36,181, +105,143,162,180, 45,130,156,160,106,200,251, 68, 75, 77,150,193, 74,153, 58, 24, + 60,253,203, 2,116,159, 97,209,208,198, 82,127,244,129, 5, 30,136,162,115, 34, + 77,100, 94,230,132, 34, 70, 64, 45, 44, 95,104,188,216, 43, 43,210,161,195,246, +183,172,196,147,168,157,158,115, 92,122,104,119, 8, 18, 0, 73,238, 4,176,233, +205,216,107,208,116, 4, 44, 19,203, 4,160,126, 64,111, 6, 82,185,171,204,180, + 14, 49,204,150, 79, 58, 3, 64, 61, 40,222,184,100, 19, 65,104, 35, 40, 54, 78, +221, 27,183,176,165,132,167, 20,117, 68,171, 24, 62,213,142, 82,210, 13, 87,230, + 60, 38,133,119,137, 0, 52, 1, 20,173, 33,152, 61,216,134,174,138,126,168,155, + 24,226, 97,158,181, 27,254, 4, 82, 58,235,153,147,132, 14,208, 37, 43, 77,165, +227,187, 59,204, 97, 15,103,250,195, 13,168,222,204,149,177,247,172,193,122, 4, +124,160, 48,215,125,199,131,213,133,203, 14,163, 11, 25, 26,144,114,213,107, 44, +162,187,102, 48,166,224,208, 28,222,168, 18,192, 3, 33, 49,245,214, 98,202,164, + 78,240,137,224,180, 77, 33, 22,156,197, 10,139,214,214, 45,156,202, 38,116,169, + 61,163, 75, 47, 15, 31,218, 41,225,165,201,203,114,164, 56,226,136,157,165, 4, + 62, 85,202, 28,234,228,200, 61, 14,123, 97,207, 6,143, 93, 31,138,109, 73,162, +218,226,173,254,253,203, 23,168, 0,155,159, 35,213, 91, 89,217,106, 57, 19,223, + 75, 15,100,164,234,149,137, 39, 63, 59,246,143,252,183, 45, 87,106,145,250,132, + 84,104,101, 37, 32, 4, 76,171,204,120, 90, 28, 17,200,158,228, 62,209,212,114, +248, 26, 46,221,180, 38, 34, 92,157, 24, 37, 64, 80,175,139,240, 11,145, 79,216, + 68, 49,113, 11,203, 50,190, 70, 37,148,126,197, 10,193, 51, 59, 1, 6, 67,158, + 82,128,144,222,234,152,229,213,139,143,249,106, 52,243,243,188,134, 56,124, 29, +164,195,187,155,115, 84,161,150,143,147,209,149, 67,137,209, 7,212,224, 17,225, + 9,200,247, 72,118, 24,122,191,128,157,185, 83,127, 87,168,221,247, 9,110,110, +141,232, 31, 48, 50,204,211, 8,191,208,141, 16, 17,245, 83, 58, 1, 55,126,144, +168, 29, 52, 54,105, 18,248, 65, 80, 0, 26, 22, 0, 62,172, 64,170, 94, 85,141, +251,236,241, 79,230,169,163, 13,184, 36, 87,230,173, 74,248,203, 12,109, 57,220, + 25, 66, 35, 47, 79,120, 20,162,229,133,140,221,238,126, 52,154,125,235,113,216, +183, 43,138, 78,169, 46,162,253,181, 11,225,199, 33, 25,198, 65, 59, 87,246,238, +239, 49, 98,207,110,140,148,230,216,115,216,207,217, 82, 70, 61, 3, 98,241, 41, +147,204, 38,101,176,166,171, 60,238,131, 52,118, 39,122, 48, 40, 89,248, 19, 88, +228,234, 85, 32,187,182,244,192, 59, 95,216, 36, 27,155,253, 80,222,168,244, 33, +212,132, 26,247,237,140, 55,127,235,106,224, 53,138,155, 74, 55, 72,164, 9, 79, +174, 96,168, 53,226, 83,154, 17,254, 41, 97, 2, 74,146,175,220, 6,208, 56,118, + 45, 14,215,252,187,246,120,122,166, 10,152,160,132, 37,238,164,150, 31,235,153, + 16,159,110,236,118,177,164, 57, 96,231,155, 20,139, 68,199, 62,172,128,215,108, + 11, 28,144,142, 51, 46, 59,147, 37,129, 87,112,202, 33,190, 3,217,224,130,195, +145,114,142,104, 21, 56,206,226,150,153,228,238,249,193,204,253,219, 50,252, 36, + 9,235,210,153, 59,172,233,149,171, 64,118,107, 43,164, 66, 43, 87, 4, 94,248, +179,153, 29,169,127,252, 81,139, 58, 49,196,240,210, 30,145,202, 64,223,232,230, +108, 38,132,213,148, 79,149, 66, 75, 21, 54, 45, 55,188, 56, 20,249,138,254, 50, + 1, 95,118,228, 36, 48,192,195, 14,179,169,219, 39, 16, 93,135,214,169,169,241, + 66,102,144, 29, 5,130,195,111,158, 65, 41,164, 69, 71, 89, 31, 18,225,158,143, +234,160,214,223,196, 8, 63, 63,107, 1,188, 11,204, 57,234,151,220,158,198,119, +202,240, 94, 43,222, 12,142, 43,168,153, 33,205,189,157, 3, 93,201,141, 27,192, +195,132,194, 20,144,136, 21, 79,249, 89, 95, 43, 66, 88,203,116,252, 66,231,191, +202,105, 24, 75, 99,248, 82,100,190,193, 10,247, 26,136, 62,169,188,165,194,102, +226,217,188,177,220,154, 67,209, 63,254,211, 85,243,130,110,201,195,226, 78,197, + 23, 94,240,131,119,125,172, 71, 44,240,153, 10,113, 80,152,161, 50,103,204,104, +108, 60,201,191,108, 77, 65, 67,230,117, 62,169, 52, 45,113, 76,126,108, 82,232, +246,206, 3,111, 71,141,198,155,187, 55,170,157,133,152,166,160, 32, 19,105,121, +118,164, 50,237,200,249, 58,176,226, 80,167,155, 96, 47, 20, 32, 32,133, 32,145, +174,150, 40, 68, 34,119, 80,174,222,124,237,244, 22,176,146, 84, 2, 26,198,152, + 22, 25,127, 44, 50,139,197, 75,124,172,168, 77,113, 55,176, 72,227, 78, 28,137, +114, 1, 16,238, 21, 45,175,249, 62,189,154,184, 13, 58, 42,116,155, 28,216,131, +203,113,141,206,120, 68,248,103, 91, 74,191, 44,210,159,146,101, 96, 37, 10, 66, +163, 57, 43,153,238, 20,134,168,152, 19,110,237,161,226,138,195,178,212, 5, 47, +132,114,184, 56,219,115,224, 43,214, 86,120, 87, 36, 28, 6, 50,230, 56, 90, 87, +111,116,209, 12,255,189,132,136,161, 62,245, 80,231,163, 7,101,177,120,219,221, +139,248,237,185, 50,207,225,120,160, 59,197, 11,105, 77, 88,149, 78,128,120,122, + 89,156,129, 59, 40, 18, 1, 73,191, 18, 38,128,169,222,221, 21, 33,165, 12, 10, +182, 73, 79,138, 80,136,102, 79,102,176,146,147,199, 7, 93,133, 41, 0,114,113, + 10,203,121,145,211,215,192,222,161, 3,233,152, 48,224,232, 61,215, 95,182, 78, +141,129,157,162, 20,168,190,120, 16,111,127,235,244,239,255, 26,150,186, 66,106, + 94, 13, 51,181, 37,103,152,106,133, 92,250, 12,255,235,137,255,211,106,179, 45, +238, 7, 17, 9,201,223, 41,170, 53,158, 48, 96,181,124,130, 16,198, 21,234, 6, +137, 93,200, 96,116, 8, 18,208,179, 96, 63,165,171,101,238,170,248,138, 54,198, + 19,190, 5,114,209, 50,191, 39, 90, 27, 99,222,206,251,126,247, 42,223,149,237, +126,223, 84,113, 96, 38,181, 33,126,115, 70,212, 66,142, 95, 83,225, 70, 18, } ; -// ../Source/Template/GB_emult_02a.c: -uint8_t GB_JITpackage_95 [723] = { - 40,181, 47,253, 96,167, 6, 77, 22, 0,134, 99,108, 33,224, 26, 29, 3,144,186, - 96,130, 62,240,135, 92, 91,132, 77, 96,109, 15,214,118, 93,117,137,212,134,207, -107, 96,134, 97, 24, 47, 4,100, 0, 95, 0, 97, 0,215, 66, 0, 69, 52,133,207, -170,178,213,118,115,189,193,210,221, 60, 12,231,165, 34,113, 72, 16, 26,136, 67, -226,154,151, 93,234,171,170,145, 23,230, 91,224, 70,137,183,115,201,153, 22, 14, -196, 53, 79, 28, 28,187,111,138,131,225, 42,238, 59,226,254,141,245,217,226, 22, -104,176, 58, 87,172,175,239,231, 71, 11,174,206, 9, 10,243,219,187, 59,106,226, - 64,119,152, 18, 45,229, 38, 55, 24, 48,130,193, 16, 84, 76,141,207, 40,210, 67, - 27,134, 53, 87,124, 44,162, 94,197, 82,205, 56,240,248,119,247,247,120,109,222, -186, 59,180,154, 37, 62, 20,184,237,229,255,143, 97, 46, 12, 43,200, 61, 90,109, - 51, 62,233, 42, 30,133,185,174,183, 57,181,189, 84,222,250,173,125,173, 88,245, - 45,184, 15,238,187,186,236,176, 67, 33, 65,176,160, 87,241,188, 35,219, 75,186, -123,180, 95,133, 96,245,104,189, 82,118,223,104,233,196,151, 19,103,239, 52, 52, -130,153,116,106,104, 71, 50, 25,109,168,186,224,166, 92,183,166, 28,126, 92, 59, - 93,130, 51,251,164, 20,110,242,237, 38,200, 79,127,252, 91,215,240,113, 81,232, -214,187,161,158,116,251,214,249,146, 78,223,116,193,112, 13, 6,250,144,199, 15, -223, 50, 13, 33,189, 43,214,177,245,101, 54, 76,125, 22,244,244,181,145,206, 76, -127,213,102,112, 7, 24,246,194, 94,131, 65,135, 73, 55,112,121, 89, 93,118, 77, - 70,194,169,124, 36, 28, 55, 66,233, 75,231, 37,107, 94,154,110,205, 62, 37,155, -105,233, 36, 17,218,177,120, 46, 18,154,225, 84, 72,246, 27, 73, 55,176, 93,212, -117,220, 5, 5,205, 36,111,102, 83,227,221, 35,202,187, 38,226, 70, 28, 32, 59, -233,126,176,125,226,208,239,252,246,123,200, 39,254,227, 29, 98, 32, 53,172,161, -184,187,196,199,164, 12,117,160, 81, 41, 67, 6, 13,201,136,136, 36, 73, 65, 33, - 29, 32,134, 24,228,216,213, 1, 25,129,210, 0,209,221,169,230,251, 23, 72,244, - 79,112, 83, 65,130,221,164, 33, 41, 20, 92,219,132,128, 72, 52, 54, 48, 25,192, - 3,110, 21,124, 33,164,192, 96,104,244,145, 8,109, 2,147, 17,249,228,132,112, - 7, 90,199, 95,180,229,220, 57, 60,216, 50,233,175,118, 26,181, 4, 99,194, 29, - 0,249,137,178,140,112, 96, 76,152, 48, 13,117,136, 18, 21,186,154,201,234, 10, -180,197,132,155,150,208,255,209,221,112, 26,240, 79,153, 98, 38,236,186,240,160, -109,225,165,181, 33,212, 68,163, 95,254,202,176,181, 77,234, 81,101, 16,118,182, - 12, 56,203, 6, 75,227,208, 14, 5, 70,163,148,230,236,115,237,155, 30,249,100, -191, 25, 1,154, 5,124, 11, 93,186, 22, 75, 92,251, 20,229,227,214, 88,177,220, - 99,152, 0, 68,230, 31,152,101,141,156,240, 73,195,203,192,121, 99,203,222, 54, - 24,215, 30, 50,185,124,152,221,143,228, 42, 87,111, 65,168, 82, 72, 7,162, 16, -137, 66,166, 37,116,168, 35,137, 0,201,156,100,132,244, 70,233,203,128, 38, 70, -137,182,201,155, 38,134, 10,166, 91,213, 45, 44, 4,209, 43,138,207,101, 88,149, -162,128, 9, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_M_phase1.c: +uint8_t GB_JITpackage_79 [838] = { + 40,181, 47,253, 96,214, 9,229, 25, 0,134,100,113, 32,208, 28,231, 12, 34,100, +239,121,205, 27,203,134,128,226, 28, 13, 53, 26, 13,112,206,188, 47,217,127,129, + 47, 30,200, 82,243, 2,107, 0, 99, 0,103, 0, 29, 90, 78,129, 84, 1, 25, 84, + 13, 59, 27,119,232, 56,179, 86, 54,116,146, 4,255, 45, 20, 8, 69,193,145, 64, + 40,238,133,221, 63,108, 97,181,114, 3,248, 25, 43,151, 46, 59,250, 39, 2, 57, + 19,150, 89,207,203,195, 20,117,182, 47, 17,215, 57, 43,219,216,191, 91, 98, 88, +205,127,104,201, 50,229,154,225, 63, 18,141, 43,203,164, 29,138, 95,151,198,103, + 45, 67,186,152,153,178,138,233, 68, 6,210,201,229,135, 3, 87, 56, 28, 2, 4, + 66, 37, 35,144,103,124, 90,113,188,228,227,248, 76, 25,141,124,109,151,122,130, +112,187,241,115,207,158,203,171,186,245, 95, 66, 34, 57,203,187,178,199,246,148, +127, 8,137,215,250,108,215,249,227,191,229, 12, 98,249,159,165,248,241,172,174, + 71,142, 50, 24, 12,166,139,152,127, 51,146,172, 54,219,155,249,127,174,198, 33, + 12,138, 66,179,194,106,130,127,156,109, 69,155,111,171, 50,133,198, 55, 88,113, + 9,193, 99, 52,186, 91, 46, 30, 48, 68, 93,157, 14,171,137,199,179,140, 53, 43, +191,204,215, 62,219,159,157,115, 13,113, 71,180,170,219,144,247,235,218,124,203, +240, 30,130,118, 91,169,135, 44,160, 18,198,102,187, 69, 20, 2, 65, 34, 42,202, +208, 73,119,209, 6,102,217,116,245,109, 86,236,141,107,120,178,218,176, 77,124, + 14,114,196,199,209,116,147,242,232, 38,207,189, 58,228, 45, 58,161, 35,203,197, + 11, 28,119,195,109,207,124,251,118, 95,158,167,106, 50,229,122,181, 40, 8,184, + 64,112, 15, 4,187,174, 11,125, 60,183, 91,172, 47,129,128, 87,149, 20, 33,135, +193, 19,157,127,253, 58,243,224,181,211, 53,155, 76, 95, 43,182,106,172, 35, 56, + 82,112, 20,203,143,144,147, 44, 21, 79,134,182,198,215,110,228, 19,243,144,135, +148, 95,123,159,239,171, 12,191,127,249,172, 25,211,142,217,133, 44,163, 17, 72, + 17, 61,113,132,248, 28,128,159,168,145,169, 66,104,134, 2, 17,145, 36, 41, 40, +164, 49, 64,132,144,161,171,234, 1, 34,145, 72,131, 82, 84,133,136, 49, 2,105, + 2, 9,103, 38,144,236, 68, 37,137, 7,144, 12, 32,129, 60,250,226, 21,152, 70, + 20,247,254,248,195, 19, 58, 24, 12,143, 99,120, 76, 24,226,199,243,196,207, 84, +220,128,148,251, 75,189, 59,118,241,127, 20,250,202, 85,162, 30, 88,135, 86, 39, + 60, 85,129, 4, 47,139,117,137,148,227,194,173,141,181,172,156, 83, 24,202,225, +227,195,226,139, 57,105, 77, 34,199,174, 18,184,192,156, 0,153, 16,153,145, 35, +227, 56, 88, 57, 37,180,137,160,198, 57, 9,189,150, 29,245,216, 6,245, 3,192, +122,255,123,180,120, 77,240,206, 14,147,130,146,178, 30,206, 24,201, 54, 96, 9, +217, 11,157, 6,234,195,224,146,196, 39,232,246,103, 93,170,140, 57,245,135, 52, +238, 59, 89,169, 1,235,114,111, 49,182,234,198,122, 71, 94,143,211,186,242,114, +123,189,186,148, 73, 86, 62,240,186, 65,184, 76,149,166,124, 2,136,107,140, 1, +231, 92,246,213,170, 2,121, 53, 3,206,193, 88,216,101, 27,218,102, 53,164, 53, +152,173,102, 1,202,214,160,201, 42,147, 97, 61,210,193,104,204,158,138,186,199, +169, 2, 51, 31,232,226, 23, 4, 30, 21, 82,162,150,240,152, 53, 38,171,207,248, + 76,239,187,248, 3,197, 69,228,195, 8,209,159, 53,116,234,150, 56, 40,194,148, +131,192, 14, 52,231, 95, 31,218,193,251, 5,208, 61,254,240,186,109, 79,245,177, +161,217, 76,157,135,140,234,170, 21,205,174, 22,239,128, 14,110,158, 65,243,254, +193,196,150,173,205, 57, 53,124,243, 33, 28,254, 14, 48, 41,221,129, 38, } ; -// ../Source/Template/GB_emult_02b.c: -uint8_t GB_JITpackage_96 [679] = { - 40,181, 47,253, 96, 36, 6,237, 20, 0,198, 32,100, 32,224, 88,231,168, 27, 52, - 3,181, 19,212, 42, 51, 3,100, 80,118,234,119, 79,160,117,168,147,149,197,187, - 26, 49, 70,226, 12,227, 92, 0, 88, 0, 88, 0,168,219,184, 53,199, 57, 28, 89, -205, 69,145,126, 38, 16, 6,196,128,113, 48, 32,158,121,216, 39,182,168, 10, 57, -129,126, 21,102,211,104, 57,159, 27, 90,225,194,178, 94, 73, 99,211,217,158, 54, -151, 40,158, 64,238, 31, 89,127,187, 92,133,133,198,183,150,248,216,158,158,236, - 48,117, 46, 64,160,223,254,120, 67,132, 48,116, 89, 60,141,221,113,146, 23, 10, -215,160, 80, 8,166,215,113, 84,111, 9,208,254,217,252, 76,218,190,219,227,141, - 76,132, 33, 62, 83,152,219,242,255,191, 46,214,117, 17,102, 38, 27,247, 45, 75, -184,142, 55, 93,142,235,251,158,178,119,186, 25,127,149,109,143, 21,191,195,252, - 48,219,212,231,227, 50, 16, 16,131, 14,189, 90,210, 55,110, 91,208,102,178, 63, -202,160, 49,217,158,173, 12, 62,144, 12,225,235,168, 7, 78,186, 53,227,142, 43, -181,103,165,207,144, 98,167,221,132,147,124, 59,201,241,210,181, 63,227, 42,106, - 15,129,222,158, 21, 49,237,182,103,124, 45, 88,122,238, 20, 11,150, 64,128,239, -208,110,248,134,101,135,233,217,177,146,171, 15,107,241,244,117,232,225,103,100, - 71, 49,252,213,190, 97,238,198, 19,249,107, 2, 47,182, 40,214, 91,203,151, 99, -215,213,186, 90,160, 5,124,218, 7,246, 12, 38,178,161,120, 34, 28, 39, 50, 97, -219,169,232, 39,201, 86,236, 52,162,161,149, 71, 4,210,113, 42, 29, 75,164,195, -108, 40, 36,104, 1, 95,147, 22,236,239, 43,177,126,211,110, 47,216, 78, 75,208, -173,229, 30, 32,208,111,207, 72,211, 98,119, 92,251, 65, 48,179, 50, 51,231,156, - 31,217, 29, 45, 63,105,153,233, 56, 17, 9,217, 98,113,160,145,169, 51, 67, 34, - 66,162, 32, 73, 82, 74, 7, 32, 68, 96, 16,131,103, 7,169,129,118, 11,221,177, -241, 0,132,242, 5, 55, 16, 68, 60,168, 25, 16,190, 2, 5, 1, 97,224,192,206, - 4, 9, 96,113,161,180,235, 5,128,248,193,248, 24,204, 22,219, 28,233, 80,206, -128, 13,214, 19, 24,244, 77, 4, 37, 46,113, 97,118,181,208,159, 74,221, 20,225, -241,233, 57,242,214, 31, 76,194, 42,118, 53,111,113,126, 86, 8,207, 68,194,174, - 67,161,160,120, 4,217, 6, 5, 61,186,208, 20, 89,149, 25,242,196, 30, 63, 76, - 22, 26, 8, 40, 38, 26,153, 28,161, 69, 8,248,100,180,116,134, 54, 0, 33, 15, - 78, 35, 96, 13, 9,186,150, 64, 77,178,229,213, 39, 61,250,201,190, 25, 13,135, - 1, 72, 54,180,184,168, 22,116,237,115, 52,223, 93,199,250, 36,188,198, 15, 76, -150, 61, 34, 25,183,187,224,211, 6, 38, 11,224, 69, 40,191,111, 51,183,214, 50, -183, 82,184,238,199,178,202,245, 83, 16,170, 18, 18,135, 36,124, 80,113,133,116, - 2,229, 35,242,142,159, 68, 18, 82,250, 2,242,101,152,146, 3, 66,222,190, 77, -243,161,130,233, 86,225,139,148, 6,230,147, 33,121, 57, 87,165, 40,192, 3, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_M_phase5.c: +uint8_t GB_JITpackage_80 [1094] = { + 40,181, 47,253, 96,105, 20,229, 33, 0,182,169,130, 33,208, 90, 61, 64, 7,193, +227,154,212,178,180,100,130, 86, 6, 0, 2, 59,124, 14, 78, 66,137,197,162, 54, + 75, 61, 12, 90,112,240, 2,124, 0,115, 0,122, 0,133,193, 65,112, 75,209,158, +223, 55,246,197, 36,238,250,142, 20,193,229,250,138,248, 34, 8, 69, 54,131,241, +174,246,229,151,243,188,151, 38,204,121, 20,234,123, 14,113, 40, 28, 4, 12, 67, +225,240,154,152, 61,199,241,202, 70,126,240,189,171,236,102, 10,123,158,235,124, + 23, 72,121,218, 45,105,156,157,219,177,170, 67,159,211, 38, 95,217,254,207, 65, + 2,159,247,192, 56,192,111, 40, 46,183,229, 89, 49,149,171, 36,151,111,107,138, + 21,225, 58, 91,150, 87, 72,235,171, 16,201, 19, 8, 84, 64, 32, 4,221, 95,149, +198, 93,155,226,107,133,247,178, 39, 5, 79,122,233,147,216, 61, 41,103,209,159, + 32,120, 62,133,105,219,102, 81,142,238, 59,223,152,204,239,125,206,223,107, 98, +209, 53,206, 74,111,216,244,189,252,251,117,125, 55,245,168,237,115, 6,207, 27, +140,119,155,218,132,159,227, 47,120,218,137,195, 25,230, 27,255,143, 7,164,249, +191, 77,242,243,182,169,119, 60,105, 48, 24,136,158,156, 60,231, 66,161, 44,238, + 88, 83,184,204,109,255,255,255,167, 20, 70, 3,144,243,187,231,239,218,119, 69, + 31,129, 95, 24, 52,238,185,190, 43,230,204, 56,161,199,243,129, 29,122, 69,123, +242,188, 77,150,185,111,239, 86,228,244, 13,135,247, 54,141,187,215, 18,139,236, + 67, 73,230,227, 84, 12,134,146,120,212, 55, 22,248,222, 3,107,216,201,132,145, + 26,122, 62, 27,140, 6,124, 17,239,171,111,217,199,203, 85, 28,151, 30,250,176, + 17,212,244, 69,173, 68,144,194, 9, 51,228, 29, 53,137, 1,180,145, 65,190, 95, +211,169, 66,170, 39,148,152,227,155,253, 77, 26,151, 1,148,198, 34, 25,142,166, +163, 79,188,109,224, 41,122, 12, 62,165,251,150,221,118,217,229, 18, 78, 60, 31, + 85,149,226,182,151, 87,215,182, 26,151,234, 54,201,154,205,250,101, 28, 77,102, +251, 34,155,207,166, 25, 46, 71,221, 88,111, 77,186,215,250,127,232,161,112, 64, + 53, 52, 9,100,108,223,251,158,241,229,131,225,182, 35, 4, 62,240,216, 11,192, +188,206,123,178,124,216,232, 43, 22,202,213,152,188, 35,192, 43,101,155,191, 92, +191, 76,154,159,187, 15,133,145, 12,165,158,242,107,199, 7,128,236,168,161, 49, + 67, 37, 51,146,130, 20, 20, 21, 50, 28, 48,132, 16, 82,140,170,234, 18, 81,168, + 67, 57, 12,225, 4,132, 32,163,136, 17, 16, 1, 97, 36,146, 64, 36, 70, 68, 98, + 90,139, 1, 33,232,190, 97,222,119,142,129, 28, 23,223,119, 20,205,159,247, 30, +180, 95,178,209,222,167, 9, 66,202,186,161,155,162, 58,210,151, 20,232,219, 13, + 82, 33, 12, 91,120, 14, 14,193, 10,254,205, 72, 73,221, 73,213,106,169,210,221, + 51,186,225,176, 42,157,207,133, 78,231, 46, 65, 82,178,204,108, 73,155,249,194, +128,106, 20, 95,149, 34, 0,167,177, 23,187, 30, 16,250, 28, 36, 38,253, 47,130, +172, 45,150,101, 11,230,208,242, 44, 86,108,236,204,142,200,250, 38,133,103,249, +200, 78,225, 96,147, 51,130,137, 58,152,114, 58, 45,238, 35,168,246,185, 64, 41, +242, 67, 37,108, 8,140, 32,242,168,160,112, 38, 68,205, 93,156,136,246,214, 0, +158,104,184, 1,186,150, 34, 49,212,147,213, 74, 81,191,236,145, 80,194,238, 49, +150, 45,188,239, 72,166, 83,201, 9,162,252,212,167, 18, 19, 87, 72, 21,225,137, +137,168,116, 35,180, 80,253, 25,157,238,190,252, 53, 52, 26,226,253, 57,238, 37, + 66, 79,232,244,209,136,163,131,235,248, 33,212,185, 76,240,148,131,103,226,150, +254, 10,152,170, 28, 91,144, 10,122, 68, 36,249,221, 98, 81,230,125,110,206,235, +208, 50,254,211, 24, 27,169, 66,224,183,127,169,198,191, 87, 68,132, 12,194,128, +134, 37, 73,217,216,254, 98,187, 43,228, 23, 35,148,166,122, 75,187,195, 85, 40, +140,102, 89,130,216, 34, 62,226, 25, 10,160, 45, 17,247,170,226,164,226, 3, 77, + 14, 32, 43,194,175, 36, 20, 84,151,157,237, 48, 63, 34, 0,163, 67,241,153,189, + 54, 62,138, 54,102, 2,232, 83,205, 92,150, 67, 73,199, 46, 93,251, 40,210,120, +191,108,217,156,207,123,191,187,203, 8,105, 40,168,147,181, 89,219, 93, 87,100, + 87,165,195,133, 5,243, 50,209,136, 76, 17,241, 76,195, 13,244,129,108, 92,245, + 32,248, 5,253, 93,209,237,152, 28,214,116,207, 13,241,129, 63,185,149,217, 26, + 36,194, 21, 57,125,132, 74,144,237, 16, 74,203, 54,184, 57, 67, 38,127, 98,144, +242, 45,116,131,241,184, 42,138,187,130, 99, 0, 38,242,255,113,187,115,111, 29, + 74,121, 1,237, 56,138, 83, 9,212,160,224, 19,206, 61,136,240,251, 7,240,192, +219,239,102,137,210, 26, 74,196,228, 26,205, 15,154,243, 15,166,110,181,183,157, + 44, 58,231,147,156,236, 34, 68,129, 16, 87,154, 4, 78, } ; -// ../Source/Template/GB_emult_02c.c: -uint8_t GB_JITpackage_97 [862] = { - 40,181, 47,253, 96,252, 7,165, 26, 0,230,103,123, 41,208,208, 58, 7,120,178, - 4, 77, 37, 80,196, 89, 88, 54,203,209, 29,206,141,174,206, 51,178,195,217,134, -176, 82, 51, 67, 38, 95,234,246, 1, 95, 60, 48, 75, 47, 1,113, 0,108, 0,110, - 0, 96,107,149, 35,137,200,116, 38, 91,103,220,198,237,112,156, 59,139,234,112, -207,147,143, 3,150,138, 69, 98, 32, 80,177,156,210,166, 71, 92, 51,104,230, 19, -249, 81,151,195,175,126, 30, 61,146,115,117,150,222,205,197,211,185,134, 60,146, -231,133, 56,138,165, 95,174,160,247,165,191,190,129,244,217,171,219,118,212, 81, - 26, 95,106,241,113,189, 60,216,157,198, 47,200, 68, 90, 8,217, 3,131,253,162, - 89, 42, 51,123,161,175,231,181, 57,133, 34, 73, 40,148,249, 21,130, 36,127,207, -179, 55, 42,166, 68,212, 52,253,114, 14,231,129,225, 9,167, 38, 6,166,217, 36, -210,116, 36, 62, 51,171, 14, 66,144,100,183, 14,202,158,181,122, 51,238, 11,249, -243, 60,200, 96,125,198, 96,168, 69,203, 22,118,185,179,255,191, 36,113, 72, 82, -252, 36,147,199,244,125, 67, 89, 11,221,140, 63,202,181, 63,138,223, 93,126,151, -171,198, 35, 38, 85, 38, 22, 73,119, 26,181,242,151,219,149,171, 25,236,109, 65, -210, 56, 96, 79,105, 31,165,157,142,117,102,134, 65, 78,217,153, 31,205, 6,108, - 47,227,144, 95, 92,154,241,188,108,117, 10,227,177,147,211,229, 84,176,126,129, -169, 78,189,234, 20, 19,111,173,122, 88, 78,235, 25,223,202, 97, 60, 79,130, 2, -142, 72, 4, 31, 83,189,114,107,162, 4,162, 86, 63, 10,142,182,169,189,208,214, -157,134, 79,129, 83, 78,120,163,125,187, 60,191, 16,248, 27,114,247,218,243,232, -165,246,246, 11, 79, 63, 11,122,237, 99,171, 1,146,212, 33,117, 68, 34, 24, 87, - 31,143, 85,132, 77,239, 52,104, 60, 11, 16,154,235, 2,133,184, 78, 41, 31,169, -198, 65,114, 48, 77,102,126, 56, 15,153,102, 54,120, 22,184,222, 64,174, 62,172, - 83, 96,216,117,200, 36,214, 73,123, 5, 21, 69, 31,143,196, 2, 2,158, 77,175, -223,189, 48, 4,117, 8,172,153,162, 34,232,154,126,205,235,218, 0, 76,231,234, - 35,214,165,157,120,149,183, 94,143,121,117, 76, 32, 18, 41,219,153, 22,123,180, -151, 98,140, 17,219, 2,128,156,168, 97, 49,100,102, 68, 70,164, 32, 41, 72,161, -208, 24, 32,134, 24, 83,118,230, 1,162,113, 48, 71, 17,195,140, 50, 2,195, 8, -149,204,132, 37, 73,253,227, 1,153, 66,185, 49, 54,155, 73,201,154,148, 10, 58, - 22,228, 10,189,221, 92, 78,182,226,209,173, 89,232,176, 49, 84,160,111, 54,216, -207,224,156, 71,139, 38,227,195,215,100, 6,106,180,207,204, 17,173, 55, 62,234, - 96, 91, 36,244,233,223,124,103,158, 82,222, 70,230,132,121,182, 32, 98, 20,170, -209,163, 23, 85,233,127, 83,102,108, 44,109,209,230, 42,113,240,193,112,209,170, -204,216, 95,201, 48,254,179,103,131,126,164,139,116, 10,159,214,101,175,128,229, - 14,194,109,235,160,132,244, 93, 94,178,186, 71, 16, 38,242,232,146,150,252,159, -127,236,201,230,191,165,170, 3,177,113, 33,214,140,121,180, 45,126,179,133,234, -253, 59,216,149, 60, 37, 85,115,176, 81,114,202,210,222,109, 65, 92, 11,180, 57, -106,186,217, 87,105,216,176,233,229, 71,226, 55, 39,131, 0,218, 65,128, 80,143, -215,179,212,218,109, 55,200, 5, 22, 77,138, 52, 14,182,228,185,238, 49, 38,147, - 59, 44,164, 55, 5,243, 62,148,184,182,165,123, 11, 25,209, 20, 30,169,141, 2, - 90,152,202,143, 84, 2, 22, 45,100, 27,107,106,246, 36, 87,169, 82, 79,249, 3, -137,110,190,128, 10,240, 22,188, 2,221,123,118,164,161, 42,208, 70, 28,122,233, -117,164, 84,136,156,242,104,127, 42,241,253, 18,132, 26,176,254, 9,154,195, 79, -201,155, 64,208,155,166,250,131, 9,172, 6, 67,136, 12,110, 28,228, 79, 41, 13, - 52, 1, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_noM_phase1.c: +uint8_t GB_JITpackage_81 [764] = { + 40,181, 47,253, 96, 78, 8,149, 23, 0,182, 99,107, 32,224, 90,117,160,231,236, +231,115,156,176, 66,181,246,104,133,192,205,131, 4,183, 68, 37,213,119,164, 94, + 3, 51, 12,193,188, 23,103, 0, 96, 0, 99, 0, 18, 77, 97,196,168,147, 45,111, +110,111,137,212,155,143, 99,247, 77,145, 56, 36, 8, 13,196, 33,113, 13,204,190, +217, 70, 81,201, 11,221, 87,165, 91,146,221,249,198,233, 46, 94,201,164, 39,197, + 97,114,248,246,137,131,137,150,146, 47,235,183, 90, 90, 20,189, 63,216, 99, 41, + 34, 87,246, 14, 4, 91, 90, 50, 63, 76, 89, 63,123,162,176, 61,105, 9,126,138, +149,169,162,246,243, 84,221,231, 81,110, 48, 96, 4,131, 33,191, 76, 58,119,211, +231,125,157, 9,229,191, 54, 24,208,241,193,253,218,179, 67,241,144,139,226,239, +183, 96,220,218,217,127,172,133,213,147,237,107,166,173,179,200, 43,151, 82,229, +253,101,123,219, 15,245,207, 50,188,120, 82,242,143,135, 10,133, 2,232, 97,229, +219,106, 28,105,223,174, 22,236, 80, 72, 16,184, 4, 82,179,187,227,228, 14,251, + 86, 30, 89, 8,108, 43,131,125, 33,120, 2,218, 35, 89,229, 68,170,137,157,248, +117,226, 42, 44, 47, 94,197,163,218,220, 61, 19, 73,198,242,153, 68, 68,247,226, +206,167,218,183,150,224,234,154, 36,223,118,132,251, 67,162, 8,186, 25, 57,246, +214,225, 16,200, 89,213, 36,210,190,153,104, 62, 21,151,235, 19,206,166,211,112, + 62,142,229,243,178,135, 29,176,220,231,173,124,174,229,203,147, 89,191,101, 75, +193,143,180, 65, 54,237, 49, 71,230, 5, 24,246,194, 44, 55,163,168,165,131, 65, +101,182,183,148,123,138,107,127,227,211,121,181,240, 16, 64,183,216, 15,238,247, +164,215,126,157,217,153, 20,172, 60,162,192, 63, 4,130,143, 42,127,143,123,230, +185, 31, 14,106,131, 65,118,200,195, 95,203,182,242,232,150,201, 18,100,209,195, +254,106, 60, 41,159, 84,251,210,218,228,201,247, 91,237, 11,134, 61,170,172,189, +131, 60,128,135,168,129,173, 83, 68,164, 68, 70, 10, 11, 74, 10, 25, 14, 48,134, +144, 82, 85,212, 3,194,105,154, 36, 33,158,114, 2, 34, 48, 88, 64, 51, 50,202, +191,138,117, 12,148, 4, 2,230, 31,202,172,121, 77, 19, 56, 50,123, 80, 65,218, + 14,227,159,117, 23,113,170, 29, 2, 25,232,171,176,225,182, 5, 24, 50, 1, 6, + 66,243,113,232,166,186,197,147,120, 56, 37,128,124, 1,215,222,121,102,203, 92, + 48,163,102,187,173, 56, 43,213, 93,230, 56, 53,235, 17, 23,102, 66,208, 26, 13, +236, 2,124,128, 52,225, 33,155, 37,196, 63, 37, 38, 53,108,131,136, 84,235,180, +200,179,118,232, 23,184,213,168,138,169,243,136,221,165, 4,233,136, 65,250,168, + 36, 28,161,160,195,134, 5, 29,195,114, 61, 20,216, 36,185,244,204,211,245,101, + 21,219, 15, 8,254,200, 10,170,229, 36, 19,159,145,176,251, 84,133, 88, 43,178, + 35,106, 93,235,225, 1, 17, 5,204,171,163, 72, 50,148,158, 4, 15, 26,252,242, + 85,160,226,221, 21,235,169,254,206,251,169,227,220,197, 38,196,211,223,132, 46, + 87,236,190,158,171, 46, 21, 5,145,168,114,133,143, 24, 82,219,190,232,146, 30, + 52,118, 99, 42,169,149,130, 64,175,249,255,150,225, 31, 8, 55,224, 61,175,194, +182,149,145,104, 21, 33,166,197,185,117, 22,215,138, 34, 43, 97, 59,237,108, 46, +238,108,106,211, 28,255, 96, 82,212, 45,246, 25, 16,184,103,240,176,126, 33, 76, +168, 58,192, 24, } ; -// ../Source/Template/GB_emult_03_template.c: -uint8_t GB_JITpackage_98 [813] = { - 40,181, 47,253, 96,114, 11, 29, 25, 0,230,162,108, 33,240, 88, 55,172, 23,242, -240,156, 43, 19, 73,155,178,241,156,116, 67,186,162, 1, 77,125, 13,140, 94,128, - 82,100, 19, 65, 19, 26, 2, 99, 0, 94, 0,101, 0,174,247, 88,186, 32, 39, 73, -234, 24, 99,145, 88,100, 15, 69, 98,225,133,144,224,152,190, 40,107,113,141,250, -106,220,102,121, 61,199, 58,202,169,227,105, 51, 38,210,253,190,167,238,202,127, -174, 70,196,235,108, 79, 93,157,132,173,147,228, 73, 68,156,182,220, 23,116,125, -157, 58,254, 49,229,213,160, 81,167,248,230,145,223,150, 60,203,223, 31, 35,241, -109,242, 84,254, 87, 49,142, 64, 92, 25, 2, 17,121,235,207, 6,223, 95,195,177, -241,245,173,177, 25,110,213, 49,234,251, 75,238,238,126, 93,172,235,210, 48,215, -184,108, 58,166, 63,159, 38,109, 75, 55, 59,238, 90,117,109,253,243,105,135,167, -188,181,175,246,253,210,106,255,113,251,184,111,202,177,237, 74,104,139,236,199, -208,158,212, 35,249,175,120, 55,126, 82, 38,123,141, 63,188,156, 76,100,249,104, -164, 71,229,215, 15, 10,143,205,194, 96, 64, 0, 20, 54,130,123,160, 75,215, 81, -143, 19,226, 46,159,120, 73,184, 86, 9,105,154,224,107,242,107,245,116,153,143, -154,250,126,212, 31, 95,206,165, 3,186,108, 62, 47,163, 17,159, 36, 94,193,194, - 13,217,110,125,106,147,182, 27, 31, 44,105, 42,225,251,153,254,251,240,146,186, -126, 91,231, 43,154,192, 74, 70, 65, 10,145,224, 39, 81,247,142,163,196,207, 74, - 86,157,226,103,245, 29,222,215,213,114,247, 2, 37,120,197, 20, 56,156, 80,199, - 41, 20,231, 8, 46,222,240,179,117,202,129,173, 64,168,217,128, 63,233, 68,134, -248, 51, 70, 57, 47, 83, 63,150,167, 83,225, 4,147,141,178,121, 91, 8,228,117, - 31,206,179,125,155,142,114,103,105,134,159, 73, 91,238,222,243,220,182,109,171, -181, 86, 85,129,160,186,124, 70,222,184, 77,236,251, 4, 58,230, 15, 58,182,161, - 87,207,166, 83, 23, 77, 15,128,162,160,113, 73,154,154, 9, 50, 74,146,146, 74, -134, 3, 96, 68,132,140,110,117, 33, 9,167,151, 96, 42,137, 38,111, 64,206,102, -218,241, 22,112, 64,157, 45,247,104,188, 12,246,168,131,224,195,239, 40,155, 48, - 20, 56, 68, 13, 56, 6,119,108, 60,234, 18, 33, 85,133,230, 12,130,161,149,109, -236, 65,141, 8, 64,136,148, 14,208, 20, 14,147, 17,203, 66,158, 29,148,139, 17, -224,186,209, 67, 22, 34,134,219,135,198, 57,186, 83, 42,214,167,228, 73,144,117, -185, 71,184, 10, 63,217,200,153, 65,212,121,205,160, 95,108, 96,135,219,132,198, -181, 13,102,204,222,225, 35, 16, 47,240,109,184,160,101, 80, 16,210,196,142, 35, -111, 25,149,134,140,246, 50, 88,131,152, 0,231,144,209, 7, 60, 39, 46,208,128, -134,115,137, 16, 50,149, 81, 65,150, 77, 8,226, 5,208,152,221,139, 17, 18,185, -185, 39,102, 52,176,112,107,200,128,240, 32, 46,137,135, 49, 95,188, 71,139,111, - 4,138,216, 12, 34, 64, 3,227,142, 14,171, 39,233,230,224,121,120,220, 51,157, -211,201,117,123, 5,224,168,161, 26,140,145,153, 61, 40,202, 8,142,108,172,241, -160, 83, 76,109,152,248,238,193,209, 1, 53,120,249, 77,151, 66,193, 60, 39,186, - 98, 9, 59, 96, 2, 77, 34,208, 23,173,206, 45,207,214, 9, 15,125,244, 0,252, -155, 8,188,193, 24, 76,128, 63,168,111,205, 70,176,253,101,232,184,176,100,171, -226, 30,176,125, 53, 98, 0, 96,148,179, 55,215,136,198,106, 74, 93,253, 57,204, -111,149,182, 94, 22,120,240, 11, 84,226,144,230, 91,189,105, 98,254, 96,242, 86, -213,229, 40,129,235,162, 33,234,248, 85, 41, 10,242, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_noM_phase5.c: +uint8_t GB_JITpackage_82 [930] = { + 40,181, 47,253, 96,118, 17,197, 28, 0,102,231,120, 32,208, 92, 23, 3, 12, 34, +210, 48,115, 79,189,251,237,101,102, 38,131,210,156,195, 50,233, 64, 81,118, 90, +228,106, 6,188,120,130,115, 0,108, 0,110, 0,120,231, 59,106, 14, 87,231, 43, +226,205,129,116,241, 32,198,235, 74,175,190,159,235, 93,166,240,231,171,149,119, + 67,131,161, 96, 28, 34, 11, 5,227,156, 56,184, 65, 99,151,189, 28,225, 61, 86, +238,147,133, 67, 55,128,188,141,165, 68,109,138,145,160,160,187,113, 11,180,153, +218,178,126,230, 27,242,169, 93,118,255, 34, 78, 47,171,149, 47,121, 92,109, 75, +180,114,206, 92,117, 11,115,117,106, 79,177, 54, 98, 40,204,234,106,129,121,213, +130,121, 34,177, 29, 18,137,175, 95,109,197,175, 44, 22, 47,170,187,171,170,165, +134, 64, 76,108,163,172,123,142, 63,247,205,244,124,253,204,255,187,223, 86,198, + 59,159,226, 57,197, 41,131,147,135,159, 22, 5, 89, 86,137,221, 79,166,105, 58, +250,125,168,229, 99,182,231, 84, 6,201,224,251,190,169,127,219,102, 92,161, 96, + 87,147,238, 91,167,152, 52, 79,185,105,126, 87, 7,100,103, 60,120,122,146,255, +191,205, 54, 5,130,113,184,165,104, 81,239,146,244, 98, 50,132, 67, 22, 87,175, + 46, 24,118, 42, 72, 83, 75, 97, 88, 67, 48, 51,170,177,116,231,251,187, 74,101, +172,111,175,109,105,249, 77, 77,206,228,184,244,162,177,242, 52,218,117,213,184, +122,131, 11, 4, 95,160, 82,203, 34,241,152,111,237, 63,193, 59,229,171, 32, 40, + 4, 47, 21, 12,137, 60,156,206,135,200, 55,245, 91,238,241,234,214,247,153, 53, + 46, 67,255,246,217,199,229,187,114,137,159,230, 3,134,228, 29, 51,137, 3,227, + 53,254,247,124,203,219, 86,251, 37,252,116, 64,221,113,161,240,161,166,227,239, +220, 25, 63,189,229,182,131,205,198,171, 31, 48, 19,242, 10,222,197, 35, 42,212, + 54, 44,211,157,219, 63, 24,210,124, 70,149,148,233, 78, 56,254,140, 2,248, 9, +155, 78,102, 8,148,239,141,136,131,177,137,189, 73,247,157,218,173, 43,229, 30, + 74, 65,105,124, 20,155,166, 53,171,119,242,188,121,216, 29, 51, 38,129,151,208, +156, 61, 91,113,204,183, 78,110, 65,223,253,177,244,186, 42, 1,128,178,168,129, +169, 82, 12,201,200, 40, 72, 65,146,210,112, 64,132,144,161,170, 42, 15, 18,121, + 36, 78, 50, 28,130, 51, 74, 96, 5, 68,128,200, 9,136,226, 36,146, 60, 18,170, + 26, 3, 25, 44, 38,217, 27,147,118,174,134,214,178, 14, 98, 36, 47,253,198, 68, + 98, 50, 55, 37,216,101,181, 69,166,213, 19,176, 66,177, 55, 37, 96, 82, 99,146, +171, 94,109, 94, 0, 22,163, 80,162,194, 41, 77, 89,220, 3,225,133, 58,217,201, + 62, 54,129,177,160, 84, 81, 48, 65, 99,185,247, 84,188, 1,103, 40,166,132,157, +182,240,145, 9,124, 83,105, 89, 83, 48,131,153,202, 8,143,252,158,110, 76, 42, + 77,224, 83,176, 47, 13, 57, 16, 58,173,165,206, 12, 75,240,128, 67,193, 34, 23, + 10,237,209, 56, 64,168, 55,228,164,118, 83, 70, 33, 48,143, 14,130,180, 16, 72, +253, 97,230,228,146,235, 70,162, 91,115,245, 56, 43, 90,187, 92,118,239,227, 72, +194,161, 40,193, 40, 81,108, 0, 88,196,151,212, 18,129,235, 14, 33, 74,117, 78, +155,186,187,162,182, 68, 9,117, 18, 29, 67, 54,154, 81, 37, 48, 84, 29, 38,109, +149,181, 58, 37,182,119,252,106,185,205, 30,214, 40,148,216,115, 82,244, 27,255, +150, 36,231,171, 48,250, 13,198,248,145,198, 4,246,154,108,162,211,131,251,232, +163, 78,110,210,232, 66, 84,168,226,118, 43,183, 53, 38,210,241,165, 78,255, 31, +116, 10, 3, 1, 40, 92, 95,148, 56, 55, 45, 90,229,158,169, 26,244, 73,122, 10, + 85,207, 29,141,189,131,197,222,182,102,176, 64, 16,100,179, 30, 24, 11,145, 55, +139, 61,157,116, 74,123,144, 90,180,252, 99,244, 91,220, 18,134,171,160,208,141, + 43, 15,232, 19,136,157, 59, 41, 96, 51, 42,252,230, 57, 93,120, 81, 77, 69,126, + 28, 2,199,144, 5, 24, 85, 73,251, 90,148,220,171, 20,151,202,100, 1,216,201, + 26, 21,245, 72,184, 67, 36,252,131,230,247, 15, 38,173,222,186,158, 59,129,119, +126,139,239, 12, 1,175,106, 5,136, 1, } ; -// ../Source/Template/GB_emult_03a.c: -uint8_t GB_JITpackage_99 [724] = { - 40,181, 47,253, 96,167, 6, 85, 22, 0, 22,229,112, 40,208,208, 88, 7, 52,156, - 65,253,142, 54,163,159, 33,135, 69, 99,186, 29, 2, 37,103,215,112,170, 39,133, - 38,102,158,108,158, 3,250,131, 43, 60,210, 65,252, 2,104, 0, 97, 0,100, 0, - 10, 15,182,147,173,198, 60, 36, 42,153,233,226,139,202,150, 29,110,111,102,209, - 14,215,180,119, 71, 32,137, 72, 30, 7, 3, 17,201, 37, 43,186,179,125, 33, 43, -159,222, 63,217,237,108,253,112,167,121, 24,152, 81, 89, 47, 19, 13,223,246,104, -160,202,244,147, 65,216, 86, 73, 45,252, 53,229,169,220,110, 87,220,246,223, 39, -103, 24,135, 2,211, 59,245,234, 19, 73, 16,137, 87,243,108, 28,225,229, 16, 8, -244,128, 64, 2, 17, 70,246,146, 92,179, 27, 55,207,124,237, 96,215, 88,211,100, -149,244,116,235, 92,110, 22,178,210, 0,202,175,190,191,179,185, 82,213, 39,146, -140, 8,174, 78,118,121,225,255, 15, 65, 26, 16, 52,185, 59,217,114,165, 28, 43, -183,119, 24,254, 9,222,202,115,245, 92,203, 83,175,253,231, 54,111,210,158,179, -251,236, 54,198, 93, 5, 69, 38,201,131, 51, 75,210,247, 73,229,198,250, 78,190, - 2,180,186,163,135,156,115,174,162,119,215,228, 8,233, 29,164,209,171, 76,172, - 48,188,248, 50,241,193,114,137,240, 50, 89,187,184,192, 55, 85, 94, 27, 31,165, - 92,226,220,101, 48, 58,140, 9,240,114,234, 27,132,115, 78, 57,245, 95, 43, 53, -202, 41, 38,206, 86,107, 22, 70,234,215,214,198, 56,191,177,192, 64,195,225,176, - 71,160, 60,114, 42,146, 6,156,213,155,156,159, 43, 98,205,115,113,102,217, 75, - 51, 16,180, 1,109, 56, 28, 21,214,215,228,128,187,206,168,162,103, 26, 44, 26, -133, 8, 11,132, 21, 29,219,241,221, 61,122,151,241,238, 54, 45,163, 63,139,195, -195, 84,150, 74,124,192, 64, 44, 88, 98,131, 70, 1,227,107, 98, 29, 64,157,162, -170,224, 5,166,119,234,210,198,117,196,158,217,119,118,172, 75, 20,143, 78,188, -226, 1, 68,199,250, 14,234,144, 78,188,225,169,247, 17, 14,233, 41,175, 6, 28, - 78,162,153, 24,109,160,145,169, 82, 68,134,100, 68,130,180, 32, 37, 73, 7, 32, -134, 24,196,236,186, 1, 25, 1,165,177,241,187,214, 74, 30,161,255,130,219, 10, - 10,108,147, 6,228,210,112,101, 19, 4, 2, 97, 80, 0,103, 0, 14,216, 50,120, -193,201,129,134,141, 34,180,101, 76, 70,228,147,211,132, 59,120,244,127,162, 88, -230, 78,217,131, 71,121,158, 70, 90, 35, 51,241, 87,138,101,135, 5,123, 42,132, -111,212,121, 52, 73,217,197,108, 22, 87,216,144, 89,103,154, 5,255, 65,161,225, - 36,224,191, 2,197,204,176,243,194, 75,211,202, 99,195, 86,208,136, 22,253,250, - 55,203,158, 86,169, 87,149, 1,216,153, 50,160,133,229, 1,213,110,104,202,210, -175,127,105, 17, 31,246,141,146,208, 56, 32,183, 16,197,189, 90,234,218,231,184, -122,221,170,212,195,184,193, 78,230, 31,152,101,141,220,176, 9, 3,151, 7,224, -143,165,244,188,197,220,183,150,145,229,195,227,126, 36, 87,185,188, 5,209, 76, - 33,142,161, 24,129, 66, 38, 36,116,104, 34,169, 66, 98,154,204,233,248,217,148, - 24,165,249, 54,111,154, 24, 42,152,108, 85,141, 96, 33, 8,188, 82,120,198,132, - 85, 21, 5,119, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_notM_phase1.c: +uint8_t GB_JITpackage_83 [789] = { + 40,181, 47,253, 96,149, 8, 93, 24, 0, 6,228,109, 34,208,152,205, 1,192,153, + 59,213,232, 77,168,100,135, 83,136, 96,106,211,224, 67, 42, 72, 24,160, 62,212, +252, 5,190,120,144,165,230, 5,103, 0, 96, 0, 99, 0,144, 75,246,105,210,217, +184, 49,199,121, 4, 85,204,203,146, 59,134, 56,104, 7,194,194,160, 29, 46, 8, +175, 99,184,146, 40,228, 25,247,211,152,175,168,102,142,125, 92,165, 27, 77,122, + 74, 24,230,215,185,142, 62,203, 3,124,204,181,116,204, 94, 76,162,249, 15,107, +121, 61,162, 19, 62,195,208,152,142, 38,232,229,107, 65, 60,146, 52, 62,233, 13, + 65,196,201, 52, 81, 12,118, 38, 14,236, 36, 47, 20, 44, 66,161, 16,138,108,235, +101,187, 61,199,116,252, 88,106, 24,124,250,188, 22, 84, 47, 62,102,112, 56, 50, +219,141,159,251,244,124,237,113,253,227,152,230, 16,132,176,122,121,103,252,175, + 86, 38,222,255,188,226,201,147,138,222,120, 39,203, 50,206,197,201,177, 83, 89, +210,154,171,165,188, 80,248,127, 43,101,105,217,129,208, 99, 72, 77,238,140,179, +171, 88,179,237, 15,133,208,216,118, 88, 43, 4, 77, 61,230,223,108,235,115,253, +217, 57,211, 16,123, 98,253,216,222,222, 35, 91,179,189,225, 5, 26,202,134, 60, +130, 99, 34,151,205, 68,165,122,228,195,112,151, 15,252, 40, 96,119, 93,172,129, + 83, 54, 69,109,123, 44,189, 49, 13, 95,210, 26,182,137,111,109,215, 58, 36,201, +185,249, 96, 92,221,115,131,182,135,192, 14,204, 68, 36,255, 5,131, 1, 45, 27, +219, 51, 62,171, 72,222,113,146,124, 6, 19, 1,150,181,194, 93, 87,167, 51,219, +126,169,237,233, 96,128, 65,180, 20,183,167, 52,239, 88,143,206, 92, 47,174,222, +212, 31, 91,201,202, 53,182,115, 38,103,146, 28, 9,114,164,120, 79,110,215, 68, + 32, 22, 10, 24, 34,109,227,157,249,237,225,227,182, 30,101,237,179, 29,221,112, + 19,143, 29,203, 39,205, 24,244,204, 11, 19,201,100,184,199,183,221,112, 77,124, +198,135, 59, 6, 94,135,212,196,228,121, 75, 1,128,144,168,161, 37, 99,102,130, + 18,145,130, 20,164,160,146, 14, 48,132, 16,132,172,140, 7, 2,209, 40,132,114, + 88,196,140, 17, 12, 54,129, 4, 9, 10, 74,202,127, 61,128,208,208, 68, 39, 91, +137, 23, 60,166, 50,236, 18,144,169,202, 20, 25, 37,236, 35,100,229,202,238, 5, +249, 6,134, 21,150, 5,191,127, 16,153,131,150,224,207, 40, 73,225, 13, 44,226, + 67, 38, 24,247,123,108,252,205,177,176,169,163, 65, 57, 30, 29,193,181,206,173, + 23,117, 84, 47,109,147, 81,210, 72,151,184,104,202, 66, 63,194,103,147,228,120, + 36,153,139,100,126, 38, 23, 94,179,127, 16,166, 72, 38,199,167,238, 34, 39,139, +248, 67,200,222, 24, 9, 65, 42, 52, 26, 99, 8,170,138,133, 19,230,123,226,117, +171, 80, 57,212,169,165,227, 81, 98,254, 8,156,132,242, 12, 55,254, 83,163,181, +178,100,228,190, 31, 7,164,246,174,160,168,218,126,217,221,104,145,150,163, 57, + 67,189, 98,146, 7, 85,169, 34, 24,139,255, 96, 67,128,175,230,207, 26,189,166, +179,169,120,107,160, 61,149,244,225, 72,141,154, 40,168, 2,121,100, 86, 99,229, + 3,240, 32,108,243, 64,145, 90, 80,196,243,170, 64,166,102,124, 65,151,187, 28, +185,147, 57,210,169, 17,154, 88,236,194,162,140,138, 8,196,220, 66,255,216,233, +195,107, 54,111,227,117,223, 22,186,190, 11,236,176,127,204,147,242,134, 28,245, + 7, 21, 23, 30, 56,104,253,127,208,196,169, 96, 90,234,150,129, 46, 1,254,121, + 70, 46,123, 50, 48,169, 58,174, 19, } ; -// ../Source/Template/GB_emult_03b.c: -uint8_t GB_JITpackage_100 [679] = { - 40,181, 47,253, 96, 36, 6,237, 20, 0,150, 34,105, 33,240, 88, 23, 3,172, 29, -137,101,120, 11,237, 84,153, 57, 97, 41,208, 20, 2,110,157,229, 84, 90, 15, 58, -128, 5,158,129,148,129,135, 98, 0, 92, 0, 95, 0,148,129,231,129,201, 62,107, -202, 86,219,204,245, 14, 69, 55,115, 81,228, 62, 17,135,194, 97,176, 48, 20, 14, -199,188,235, 83, 95, 83,125, 60,227,158, 10,119,105,188,155, 79, 13, 71,161, 33, -174, 57,194,208,216,125, 75,141,149, 45, 78,133, 4,171,115,197,154,254, 35,235, - 69,177, 4,175,239,185,147, 54, 60,157, 6, 50,238,219, 29,103,132, 16,133,110, -139,229,104, 59, 26, 57,129, 96, 13, 8,132, 23,173, 40,214, 92,241,241, 88,122, - 29, 69, 53, 99,128,246,239,238,111,242,218,188, 57,206,192, 66, 23,226, 43,133, -219, 86,254,255,150,165,178,172,108,110,210,106,155, 49, 73,215,241, 37,203,159, -209,235,122,155,203,237,149,121,235,167,246,181, 99,213,183,225,126,184,239,233, -211, 97, 21,178,195,192,134, 94,197,220, 25,217, 94,240,110,210,126,147,129,213, -164,245,110,159, 20, 95,231, 48,221, 6, 18,233,104,132,180,162,233,129,143,114, -221,186,227,176,118,140,244, 25,210,235,180,147,208,200,183,143, 26, 39, 93,251, -246,111, 93, 69,237,160,207,173,119, 69, 77,187,237, 91,231, 11,146,190,187,132, - 66, 37, 16,232, 55,180, 23,190, 93,152, 97,122,119,172,100,234,187,172, 88,126, - 54,244,244, 49,178,163,151,254,170,205,225,238,198,146,124, 46,129, 1,150,181, -178, 86,224,253, 72, 11,248,188,142,235,152, 11, 68, 51,233, 64, 40, 13, 93,167, - 37,125, 59, 14,127,162,184,207,209,173,215, 57, 72,134,163, 56, 32,143,110, 67, -225, 84, 32,221, 69, 51, 33,193, 11,248, 44,121, 65,251, 61, 37,214,111,218,239, - 5,219, 41,254,252,210,111,191,244,129,140,251,118,108, 52,239,245,198, 41,190, -118,131, 96, 98, 24, 51,231,156, 31,105, 59,138, 3,104,160,145,165, 66, 72,134, -132, 38, 73, 10,146, 66, 26, 3, 48, 68,128, 16,187,243,233,128,206,182,180,131, -160,120,130, 13,132, 34, 66,203, 64,248, 13,224,226,195,216, 0,194,180,176, 44, -119,225, 35, 48, 62, 14,102, 19,108,134,116, 40,101,192, 6,235, 1, 52,125, 99, - 64,133, 73, 92,153,186, 90,225,239, 74,222, 22,213,219,167,112,127, 12, 21,190, -230,105,184,197,253,156, 48, 60,115, 9, 57, 14,133, 2,226, 33,144, 61,104,211, - 2,133, 38, 51,244,140,115,253, 27, 44,111,161,161,152,106,228,211, 8, 45, 49, -192, 71,195, 37, 50, 90, 64, 22,162, 32,109, 55, 52,101,233,215, 95,218,136, 15, -251, 70, 41, 20, 28,128, 92,104,113, 89, 45,227,154,231,104,224,154,213, 82,143, -113, 3,147,101,143, 72,166, 54,174,177,169,129, 73, 67,241, 99, 41,115,222,182, -183,173,101,190,124,120,156,138,100,133,235,167, 12, 84, 74, 36,188,144,232, 65, -197, 21,233, 4,250, 71, 84,199,173, 76,194, 30,188, 45,149, 26,160, 97,155, 55, -205,204, 31, 76,182,170, 66,160, 28, 4, 62, 33, 74, 15, 92,149,162,151, 9, +// ../Source/Template/GB_AxB_saxpy3_coarseGus_notM_phase5.c: +uint8_t GB_JITpackage_84 [979] = { + 40,181, 47,253, 96,232, 16, 77, 30, 0,166,230,119, 33,208,154,233, 64, 7,238, + 70,126, 9,199, 65, 35,252, 58,136, 18,211,129,143,110, 23, 0,144,205,173,250, +131, 43, 60,233, 32,126, 1,114, 0,104, 0,111, 0, 54,223, 46, 47,132,198,183, + 73,139, 33,128, 40,155, 66,217,169,181,113,115,142,243, 73,178,156,155, 76,221, + 55, 69,226,144, 32, 56, 16,135,196, 5,100,246, 13,219,212, 72,121,161, 59,235, +204,233,201,134,223, 58, 29,102,114,170,227, 90,121,168,157,206, 22,213,193,190, +221, 20,167,198,252,111,147, 65,199, 73, 64, 64,196,251,131,209,120, 60, 85, 17, +204,233, 21, 49,170,210,120, 29, 83, 82, 84,176,212,213,136,197,201,170, 19, 39, +149, 27, 12, 24,193, 96, 8,104,232,170,231,169,199, 92, 2, 77, 27, 77, 17,200, + 51, 94,173,137,158, 59,138, 62,139,139, 70,190, 54,251,154,154,183,123,244,242, +142, 8,173,236, 53,189, 36,155,226,111, 8,142, 43,220,110,252,220,172,231,244, +122,223, 14,156,160,180,217, 12,252,227,255,209, 53,114,145, 13,221,180, 60, 64, +192,177,253,233,125,230, 55,121,109,103, 67,241,152,255,255,199, 48, 23,118, 40, + 36, 8,125,146,163,218,253,177,182, 53, 3,106,198,249,194,176,243, 58, 88,147, +163,138,209, 53, 85,165,107,231, 60,146, 24, 59, 34,113, 78, 3, 65,211,150,183, + 95,131,238,156, 39,126,157,204, 71, 17,191,208,179, 1, 53,222, 73,187,246,109, + 82,217, 24,133,237, 25, 98,119,149,143,204, 19,220, 54,165, 72,239,194,249, 50, +102,151,215,180,129, 71, 54,121,110, 82, 73,156,136,225, 87, 73,203,167,249,164, +107, 79,200, 27,117,109,190, 41,121,193,225, 92,118,147,112, 81,235,150, 72,200, + 69,104, 24,246,162,100, 56,154,206, 85, 59,143,189,146, 86,211, 60, 53,116,235, + 97,107,159,121, 36,101, 24, 76,103, 9, 59,173,163,108, 60, 26,215,216,212,175, +252, 21,228,130,252,127,225,133,243, 17, 65,150, 65,198,120, 64, 60,126,112,206, +222,197,221, 60,109,214, 89,212,118, 17,200,185,119, 42, 55, 66, 71,180, 67,197, + 14, 53,211,163,144,131, 62, 74,230, 34,150,208,251,200, 39,234, 33,199,103,173, +157,194, 36,131, 55, 16,130,237, 91, 94, 69, 48,128,211,168,113,177, 98,106,134, + 36, 41, 40, 40,168, 20,134, 3, 64,132,144,169,170,162, 7, 2,113, 36,138,147, + 12,131, 20, 48, 99, 28, 18,140, 80, 80, 49,146, 87, 20,164,202,112,153, 5, 40, +203,128,114,252, 50, 65, 6, 91,194, 80,132,212,128, 82,125,169, 36,106,127, 7, +172, 71,116,234,141, 84,220,186,177,149,244,141, 7,183, 67,171,180,153,168, 28, + 65,138, 96, 41,183, 12,165, 43,133,188,209,123,179, 10,117, 21, 30, 80,222, 45, +148,168,246, 29, 37, 38, 36, 53, 9,136, 90,245,254,255,105,194,153,107, 2,209, +198, 30,114,169,164, 7,178,123, 4,122, 21,181, 3,197, 59,185, 35, 73,145, 20, + 6, 98,231,148, 93,234,103,229, 37, 19,144,160, 32, 24, 16, 74,128,196, 53,164, +109, 70,134,106,133, 54, 23, 90, 74,135, 80, 52, 34, 52,202, 87,213,239,161, 51, +206, 2, 91,199,100,139, 66,150, 1,155, 18,162,108,115, 44,207,113,180, 27,125, + 47,246, 60,164,157, 81,183,145,148, 85,241, 46,245,194,114,213,213, 4, 5,144, + 61, 71, 8, 41,249,212,233,255,189,177,124, 3, 69, 24, 18, 42, 98, 76,191, 12, + 28, 52, 4,159,117, 81, 47, 52, 26, 17, 30, 25, 65, 12,161,141,173, 6,251,126, +104,122, 43,120,231,246,194, 71, 41,100,119,161,193,185, 39,238,132, 95, 12,180, +129,182, 60, 93,194,100, 21,235,224, 16,234, 34,175,169,174,181,225,129,168,139, +223,148,249, 9, 36, 13, 12, 7,231, 19,176,244, 28, 67,182, 6,254,178,231,241, +103, 8, 86, 14, 76, 85,104, 97, 10,137, 81,103, 31,109,177,150, 78, 75, 95,113, +220,199,214, 48,192, 25, 99,120, 57, 15,235,211,209, 55,157,126,229, 39, 59,160, +132, 93,176,234,222,114,109,156,222, 21,119, 10, 89,171,221,230,216, 1, 95,197, +240, 47, 49,220, 15,252,170, 85,155, 69,230, 35, 61, 28,209, 18,160,109,196,208, +196,246,137, 98, 36, 54, 49,178, 4, 21,238,130, 63, 59,243, 6,157, 11,109,247, +140,160,106, 51, 96, 30,243,223,245,241,187,243,244, 37, 7,156, 34,123, 64, 1, +211, 19,234,232,222, 48,155,129, 77, 51, 40,166,149, 28, 29,209,160, 89,250,131, +137, 43,155, 77,168, 99, 7,213, 53,194,223, 20, 9,149,198,170,104, 32, 6, } ; -// ../Source/Template/GB_emult_03c.c: -uint8_t GB_JITpackage_101 [861] = { - 40,181, 47,253, 96,255, 7,157, 26, 0, 38,232,123, 41,208,208, 58, 7,120,178, - 4,205, 2, 45,226, 44, 44,155,229,232, 14,231, 70, 87,231, 25,185,241, 88,158, - 91, 64,159,226, 22,110,154,246, 1, 95, 60, 48, 75, 47, 1,114, 0,109, 0,111, - 0,146,198, 95,103,150, 35,137,200,116, 38, 90,103,220,198,237,112,156, 57, 11, -235,240,174,147,143, 3,150,138, 69, 98, 32, 80,177,156,202,166, 71,108, 51,106, -230, 19,249, 17,151, 65,207,126, 30, 61,146, 51,185,176,222,205,197,211,217,134, - 60,210,237,112,196, 81, 26,223, 26,226, 99,251,217,117,161,141, 18, 86, 47, 91, -208,251,214,203,107, 95, 61,246,175, 57,141, 79,200, 68, 90, 8,216, 3,115,253, -146, 13, 84,104,238, 66, 94,211,185, 57,133, 34, 73, 40,148,249, 21,130, 36,123, -207,180, 55, 44,166, 68,212, 52,253,114, 14,231,129,225, 9,167, 40, 6,174,216, - 36,210,116, 36, 62, 20,171, 14, 66,144, 96,183, 14,194,158, 51,123, 51,238, 11, -249, 51, 61,200,159,125,198, 31,152, 85,213,128, 6,114,185,177,255,191, 36,113, - 72,210, 36,202,127,130,205,227,250,190,161,156,133,110,198, 31,101,219, 94,197, -111, 46,159,203, 86,227,241,146, 42, 19,139,164,185,172,134,242,151,219,118,179, -249,107,109, 33,218,215,116,134,143, 51,156,126,117,104,134, 65, 82,217,161, 31, -205,230,235, 46,227,144, 95,220,154, 49,149, 97,117, 10,227,145,155,211, 39, 85, -176,126,129,169, 94,187,234, 20, 19,239,204,118,120, 82,235, 25, 95,187, 97, 60, - 83,130, 2,142, 72, 4, 31, 83,189,114,107,162, 4, 98,102,189,250,141,180,169, -187,144,214, 92,134, 79,125,116, 78, 88,171,125,185, 76,189,208,247, 11,110,239, -186,235,234,173,225, 67, 15,124,245, 44,234, 13, 31,154, 13,146,212, 33,117, 68, - 34,215,102, 31,143, 86,116, 77,239, 52,104, 60, 11, 16,154, 57, 65, 32,182, 84, -202, 71, 91, 53, 14,146,115,105, 50,244,195,121,192, 52,180,193,179,176,181,246, -109,246, 97,157,226,186,230, 33, 19,121, 43,218, 41,123, 5, 21, 69, 31,143,188, - 2, 2,142, 77,183,222, 59, 16, 4,117,232,179, 57,130,228,116, 73,231,220, 0, - 76,223,236, 35,214,103, 56,113, 59,111,221, 30,243,234,151, 64, 36, 82, 97,135, -134,215, 99,120, 41,198, 24,175,128,156,168, 97,177, 99,102, 68, 70, 68, 65, 82, -144,130, 66, 58, 48,132, 24, 99,236,234, 1,226, 97,170, 71, 17,195,140, 50, 2, - 40, 16, 27,153, 9, 75,146,250,199, 3,153, 66,185, 16,137, 57, 41,139, 38, 21, - 64, 15, 66, 66,133, 10,110,110, 90,146,156, 28,231,251,215,120,220,209, 64,111, -222,214,246, 57,228, 22, 40,195,194,151, 78,230, 20,222, 25,207,190,110,136,162, - 43,161, 5, 72,159,130, 77, 51,243, 80,150,144, 68, 55, 91,206, 49,138, 98,254, -104,136,170,240,223,228,179,108,156, 89,146,230, 74, 27,250, 24,145,104,209,249, -243,117,133,141,159,129,147,254, 17,158, 53, 67,222,218,207, 86,202, 80,131,149, -180,194, 5,116, 26, 71,194, 46,240,179,186,163, 32, 51,221,113,145, 6,248,215, -165,228,147, 93,159,126,170,209, 97,115, 9, 89,187,120, 29,237,203, 86, 1,165, -254,159,179, 16, 67,128,170, 88,216, 46,209,203, 98, 45,141, 71,124, 44,141,101, - 54,103,161, 5, 4,246,153, 30,247,163,128, 13,231, 20, 0, 29,228, 30,202,127, -113, 22,230,229, 54, 95,142,126,197,199, 73, 43,226, 86, 68,186, 7, 35, 25,229, -254,161,168,153, 49,191, 86,233,223,144,239,111,101,228,125,120,240,247, 8,228, -193,196,127, 18,224, 1,250,198,182,108,169,135, 41,243, 92, 25,137,210,238, 63, -210,142, 8,238, 16, 91, 44,213,208,123, 74, 53, 26,241, 13,169,239, 32, 66, 15, - 32, 37, 33,114, 26,141,148,246,186,105, 1, 88,208,226, 67, 43, 76,169, 5,154, - 16,201,166,233, 82,193,180, 42, 85,142,148, 66,240,209,104,202,140,167,170, 5, - 78, +// ../Source/Template/GB_AxB_saxpy3_coarseHash_M_phase1.c: +uint8_t GB_JITpackage_85 [973] = { + 40,181, 47,253, 96,248, 12, 29, 30, 0,214,106,129, 32,208, 92,117, 12, 66,236, +247, 27,111,159,131, 98,141, 5,189,134, 34,104,163, 71,153,181, 89, 13,186, 46, +163,212,195, 11,148, 18,124, 0,116, 0,121, 0,134, 38,195,138,126,135,164,109, + 71,155,111,139, 25, 67,227,219,161,229, 24, 72, 21,208, 65,108, 87,218,184, 67, +199,153, 84,217,208, 77,243,123,199, 88, 36, 22,134,135, 34,177, 56, 23,110,239, +176,117,213,202, 15,223, 99,100, 62, 89,118,244, 78,244,113, 38, 36, 90,211, 11, + 4, 21,117,182, 45, 17,160,115, 50,219,215, 59,241, 36,115,179, 78,254,161, 53, +207, 20, 43,134, 15, 81, 52,174, 36, 10,118, 64, 18, 87, 76,227,180,158, 33,200, +136,161,176,138,193, 9,236, 3, 39,151, 35, 16, 0, 3, 2, 17,215,110,169, 43, + 10,135,219,141,159, 59,246,124,222, 78, 1,249,199,119,246, 18,174,236, 32,219, +119,213,181,247,214, 16,191, 77, 75,190,142,211, 55,174,225,177, 37,243,104, 47, +118,122, 94,149, 61,229, 93, 66,194,173, 58,187,117,222,137,109,209, 86, 24,158, +183,117,200, 8, 56,140,227,197, 91,143, 50,221, 98, 46, 57,249,220,156,195,120, +254,233, 57,190, 76, 43,235,145,163, 14,135,131,233, 35,230, 93,204, 52,171,205, +246,102,142, 64,252, 63, 96, 6, 72, 28, 22, 1, 87, 60, 49, 62,227,197, 37, 5, +174,225,216,110,185,120,190, 16,200,234,116, 88, 81, 92,166,231,171,201,252, 51, + 95,251,108,159,118,206,157,209,138,183,189,119,235,218,124,207,240, 92, 66,118, + 87,169,135, 44,160, 18,134, 70,187, 69, 20,250, 64, 34, 80,148, 1, 39,219, 71, + 43,136,101,148,213,199,246,183,201,151, 89,109,216, 40,246,158,184,228,168,178, + 52, 29,165, 64,182,201,115,171,238,125, 5, 78,192,145,229, 82, 40, 84, 51,226, + 61,227,212,142,229, 37, 47,203,103,176,225,200, 1, 0, 64, 13,183, 77,243,237, + 55,153, 1, 99,115,156,216,102,138,213, 90,129, 95,224,131,193,185,239,219,182, +208,199,243, 81, 68, 53,239,133,194,237,198,199, 85, 85,205, 87,223, 99,219, 58, +199,219,119,221, 74, 51,231,121, 47,107,167,169,115,137,209, 59,130,112,237,237, +197, 19, 56,206,110, 63, 93,179,201,244,181, 99,139,101, 45,193,175, 28,207,151, +222, 73,150,138, 39, 3,174,202,207,196,219, 96,228, 19,244,222, 67,202,175,189, +236,222,231,219, 58, 67,140,232,195, 4,128,191,168,241, 25, 51, 36, 51,129,200, + 72, 10, 74, 82, 72, 7, 80,134,136, 80, 21,149, 7,194,248, 32, 4, 18,141, 69, +144,128, 10,148, 9, 38,144, 72, 40,144, 64, 36,144,236, 4,201, 14,144, 46, 64, +150,117, 96,137,228,232, 1, 81,232, 40, 16, 13, 0, 88,164, 71,233,140, 92, 36, + 86, 18,181,188,243,173, 27, 9, 84, 40,110, 69,189,171,114,187,134,154, 85, 8, +108,162,194,128,201,161,176, 91, 98,195, 10,119,183,161,237,214, 9, 71, 64,134, +161, 24,228, 45, 2, 83, 66,232, 20,116,135,234, 30, 16,187, 27, 36, 3,109, 46, +195, 28,243,200,203, 11,153,143,201,115,249, 70,120,227,133,133, 70, 49, 7, 97, +134,156, 1,151,213, 9, 25,106,134, 49,128,116, 47, 33, 95,197,135,219,239, 37, +140, 78,247, 30,135, 93,177,194,147, 89,216, 96,217,208,138, 75, 54,221, 21,132, +251, 74, 79,134,241,230,140,190, 81,230, 6, 54,153,171,162,221,185,111, 30,122, +173,222,201,166, 56,129,181,220, 30,122,251,112, 77,100, 72, 28,200,157,180,152, + 83,128, 65, 53,197,121, 93, 3, 33,139, 2,159, 32,155, 18, 26, 9,159,195, 82, +215, 39, 12,241, 92, 42,211,137,233,128,127,108, 40,219,144,137, 98,159, 62, 14, +229, 95,139, 59,149, 13, 97,151, 9,133, 22, 14,169,197,143, 53, 12,156,162, 2, + 93, 69,200,131, 32,104,164,132, 5,128,119, 67,218, 20,243,133,117,214,184,228, + 97,118,214,177, 53,252, 83,205, 62,172,145,190,164,193,248,178, 48,212, 99,112, +122, 60,241,115,243,168,228, 18,199,198, 4, 90,108, 11,157, 22, 56, 82,188, 7, +125,210,192, 91, 88,125, 63, 33, 54,202, 82,156, 3,113,156,224,128, 2, 77,155, +185, 80, 34,244,253, 39, 55,124,111,194, 12,123,248,204, 11, 21, 52,145,100, 13, + 88,222,185,174,236,151, 18, 43, 17, 44,239,237,172,185,124,132,193,239,149, 65, +225,123,222, 34,244,129,114,140, 17,141,245, 31, 52,125, 84, 48,197,138, 39, 31, + 79,139,123,220, 35,204, 48, 16, 14, 74,209, 5, 15, } ; -// ../Source/Template/GB_emult_04_template.c: -uint8_t GB_JITpackage_102 [1145] = { - 40,181, 47,253, 96, 64, 13,125, 35, 0,230, 48,149, 40,192,146,213, 49,170,170, - 18, 27, 13, 54,104, 34,139, 59,118,246, 95,163, 8,205, 93,232,226, 81, 78, 70, -141,153, 81,163,192,187,167,223, 85, 20, 4,217, 96, 6,139, 0,135, 0,141, 0, - 86,255,110,251,219,198, 27,135,250, 26,127, 74, 22,202,101,114,183,204,230,120, -204,119, 49, 8,239,238,106, 14,147,171,187,155,225,205,132, 66,211,161,104, 87, -227,187,250,122,174,247,134,129, 61,231, 56,130,139,229, 50, 57, 24,176, 92, 78, -101,211,161,198, 26, 86,243,142,109,123, 34,140, 29, 94,113, 35,183,108, 63, 6, -204,117, 55, 30, 93, 18,199,141, 64,149,108, 69, 27,127, 46,175,117,246,241,240, -187,185, 99,171, 92,253,217,172, 79, 15,101,132, 18,159, 81,160, 9,243,152,187, - 45,151, 69,119,215, 2, 75,221,220, 72,116,171,100,120,165, 34, 77, 42,149,115, - 78, 41,165,172,206, 65, 77, 28, 86,167, 2,219, 94,247, 61,250, 28,254,126,222, -217,236,242,159,247,120,144,231, 81, 2, 2, 19, 64,117,106, 78,199, 60,214,117, - 69,108, 35, 65,173, 10,194, 90, 39,101,197,121,222,231,106,238, 74,201,185, 28, -106,244, 52,174,241,183,195, 27, 43,194, 99, 65, 84,204,225, 1,116, 53, 16, 14, -144,178,250, 71, 97, 18,159,249, 39,126,103,248,219,250,126,145,239,138,176, 59, -252,173, 59, 47,155, 80, 30,198, 67,250,125, 49,254,255,146,244, 33, 73,148,143, -165,215,246,247, 27,237,108,244,109,253,142,141,175, 40, 22,210,135, 68,146, 80, -221,242,204, 68, 13,192, 12,139,108,215,161, 77,151, 27,105,119,203,244,169, 73, -107,246,126,219,174,162, 81,247,207, 3,157,187, 28,103,111, 69, 24,246,203, 26, -222,215,248,244,247,187,219,198, 11, 52,111,219,151, 86,191, 60,242,217,173,179, -222,157,196,114, 33,140, 14,215,208,173, 25,230, 52,173, 91,127, 24, 20,194,120, -230, 74, 97,114,115,199, 22,253,122, 96,221, 93, 78,131,226,192,124,179,145,136, -248,194,169,105,162,148, 98,188,109, 89, 97, 66, 51, 45, 48,160,176, 41,225,193, -174, 14,229,204, 10,113, 69,154, 69, 94, 86, 67,218,210, 25,146, 20, 34,133, 72, - 36, 51, 31, 98,142, 57,189,195,177, 46,135, 9, 75,202, 15,140,135,216, 90,158, -184,153,150,166,118,153, 95,204, 41, 31,161, 68, 42, 3,226,169,122,230,255,160, -228,116,169,217,187,117,135, 15, 2,242,171, 71,135,154,102, 49, 28, 13, 7,163, -240, 37,240, 19,167,199, 42, 41,200,129, 93,113,130,104,182, 56, 78, 56,205,175, - 62, 7, 36,144,130,185, 83,243, 60, 60,132, 16, 78,173,187,149,230, 67,154,167, -207, 78,213, 68,196, 26, 59, 21,179, 24, 30,121, 70,117, 42,116,184,209,233,180, - 54, 72,134,140,132,234,175,126, 17,128,252,168, 49, 69,102,106, 70, 68, 68, 82, -144, 36, 25,214, 96, 68,100,204,170,115, 50, 97,164,168, 48, 14, 98,204, 40, 1, - 22,136, 8, 6,101,164, 48, 5,245,109, 9,106,144,142,115, 34, 11,225,111,124, -133,220,241,206, 10,191, 70,219,142, 93,178, 55,237,127,204,101, 51,103,114, 59, - 64, 53,252, 54,241, 56,219,113, 36, 92, 14, 64,217,180,237,255, 10,223,227,143, - 72, 2,255, 46,133, 12, 82,203,188,107, 8, 14,193,166, 20,233, 47, 43, 56, 80, - 54, 34,193, 28,139,205,208,132,109,204, 90,213, 27,252,147,240,195,160, 83,101, -227,134,215,248,118,199,202,138, 84,112,179,211,196,183,229,138, 71, 50,198, 16, - 90, 68, 65,201, 72,222,254, 69,238,148,254,141,177, 45,175,174, 76, 2,228,101, - 10,159, 93,239,235,197,194, 41,252,155,125,253, 60,240,117, 33, 68,211,173,236, -236, 54, 61, 42,205,116, 28,226, 72, 1, 42, 60, 87,208, 8, 87,197,214,110, 97, -206,150,112,126, 61, 3, 23, 3, 66,134,213, 1, 84,208, 48,252,164,111, 98, 91, -128,135, 1, 78, 88,255,154, 89, 70, 55,217,216,181, 97, 45, 6, 45,231,176,248, -132, 80,190, 81,142,181,108,179,209,109,166,231,113, 29, 47,239,155,219,221, 1, -153,147,156, 99,112, 64, 48,220, 67,104, 18, 27,148, 44, 28, 25,203,125,178,113, -166, 4, 54,165,189,214,203,125,214,235,121,217,238, 51, 78,106,251, 34,172,155, - 4,180,243, 84, 0,250,173,210,165, 52, 44,196,134,199,153,176,136,105, 69,250, - 51, 17,144,115,163,129, 21, 58,106,105,244,207,124, 28,225, 98,179,194,201,152, -221,132,116,106,248,118, 56, 33,240, 59,108, 94,102, 94,130,117, 28,187, 43,209, -106,203, 24,200,107, 69, 78, 86,132,142,205, 80, 10, 80,251,225,144, 24,174,139, -154,200,173,173,124, 7, 42,195, 60, 70, 45, 50,239, 69, 14,234,175,227, 52,103, -143, 50,104, 81,223, 0,240, 18,147,164, 50,147,217,138, 97, 81, 83, 44,214, 80, -250,131, 12, 54, 80,118, 88,214,111,137,156, 65, 44,135,164,225,134,184, 15,235, - 93, 80,207, 38,150,151,232, 65, 43, 19, 68, 95,141,188, 33,200, 98, 53,200,221, -159,103, 8,210,135,192,111, 28, 27,108,181, 59,243, 68,164, 40, 43,232,188,139, - 57, 68,126, 20, 90, 54,107,161,216, 25,238,161, 16,211,182, 75, 67, 83,250,137, - 35,151,229,166,201,170,167,215, 79,154,233,208,242,127, 46,143,210, 75,241,142, -142,170, 7,215, 4, +// ../Source/Template/GB_AxB_saxpy3_coarseHash_M_phase5.c: +uint8_t GB_JITpackage_86 [957] = { + 40,181, 47,253, 96, 51, 13,157, 29, 0,166,103,122, 32,208, 30, 23, 3, 4,229, +206,118,228,234,138,161,151,139, 54, 95, 34, 66,117, 69,176, 0, 60,199, 98, 59, +200,213,112,192, 61, 21,117, 0,107, 0,114, 0,228,170,154,225, 31,167,189,227, +221,217,138, 25,130,213,217,174, 46,135, 96,170,128, 10,162,141,157, 86,219,208, +245, 38, 89, 55,116,151, 43,252,167, 72, 28, 18, 4, 7,226,144,184,183,234,254, +233, 27,171,149, 23,194,211,200, 93,190,238,232,159, 40,228, 76, 72,179,158,151, +135, 41,178,251,194, 68, 28,227,255,254,111, 34, 8, 35,146, 14,132,242, 7,195, +234, 74,154,180, 67, 73, 93, 49, 86,159,181, 92, 81, 5,205,156, 85, 77, 39,179, +144, 78, 46, 55, 24, 56,130,193, 16,223,250,188, 35,126,228, 24,127,211, 69, 99, +231,219,169,142, 24,100,107,245,183,165,125,151,249, 67, 68,190,251, 72,153, 89, +151,242,239, 16,241, 90,223,237, 58,127,140,133,113, 76,157,126, 49,143,156,252, +182,156,194, 88,254,103, 57, 30,159,245,117,200, 83,133, 66,225,244,143,230,114, +213,187,111,206,140,152,151, 59,223,139,246,180,123,215,149,190,152,171,169,175, +239, 59, 31,214,117,159,252,255,115,156,141, 59, 20, 18, 4, 27,183,251,109,168, +107, 54, 25,155,239,104, 69, 64, 68,133, 43, 14, 49, 13,241, 88, 30,127,102,197, +124,193,155, 44, 21, 79,134,182,240,109, 89,204,150, 66, 62, 49, 39, 19,140, 40, +196,128, 71, 36, 30, 25,228,251,192,183, 70,128,247, 22,141,238,150,139, 39, 12, +209, 71,215,249,182,172, 22,237,208,145,229, 82,138, 47,247, 89,249,146,224, 45, + 44,223,157,203,213,189, 67,247,145,240, 84, 45,183, 86,224, 83, 24,159,110, 82, + 40, 38,103,243, 6,131,234,130,128, 1, 28,119,235,222,162, 20, 90,177,132, 44, +152, 81,120,161, 21, 79,232,195,141, 86,204, 48,240, 30,185, 58,171,213,148,118, +214,124, 85,244, 44, 71,138, 75, 26,118,161,143, 39,164,136,194, 10,136,100,119, + 21, 77,216, 65,171, 93,246,118, 7, 3,138,121,250,165,236, 25, 6,188,183,255, +117,183,140, 50,161, 18, 53, 33,100, 54, 95,223,223,127, 22,118,110, 1,190,245, +145,111,124, 57,164,142, 7, 30, 87,123,170,238,129, 55, 8,158,239,239,197, 11, + 60, 47,128,201,168,177,165, 67, 37, 50, 34, 10,146,146, 36,133,225, 80,132,200, +208, 25,231, 1,194,232, 60, 2,178, 52, 1, 34,136, 8, 16, 17, 40, 66, 4, 39, + 16,161, 80, 2,145, 80,196, 82, 29,217,184,192,134,121,115,228, 44,151,255, 17, +118, 70, 9,135,158,206, 27, 42,221,153,102,231,146,118,143,140,230,188, 60, 18, + 44, 73,253, 15, 38,116,216,148,137, 20,166,117,104, 1,240,187,250, 69,106,186, + 95, 47, 66,130,170, 4,181,154, 39,121,172, 14, 87,133,125,174, 37,179,179, 34, +131,118,159,176, 59,135,172, 27,156,157, 55,177,240,106,169,120, 65,227, 5,247, +232,121,159, 52,215,184, 18,244,171,122, 85,123, 64,161,235,178, 95,216,117,186, +241,210, 44,192, 3,196,137, 46,195, 52,217,184,106,109,178,207,188,215,169,185, +244, 58, 93,170,185,111, 47,209,141,158, 35,170,242,144, 38,166,194,141, 35,235, +121,136, 37, 35,185,142,201,104,180,188,141, 28,231,215, 58,132,162,214,147,255, +198,171, 57, 93, 60, 22,194,183, 25,135,121,142, 4,209,210,246,230,254,139, 53, +205,169,189, 12, 50, 56,219, 69, 83,197, 53, 75, 96, 65,147, 7, 12, 80, 68, 77, +166,148,167,136,184, 2,188,103,230,140,186, 67,140, 53, 84,119, 56, 90,200, 6, +181,145, 17, 24, 15, 77,216,135,140,182, 61,116,253,141, 55, 76,219,211, 86, 27, +143, 79, 68,248,121,204, 48,151, 5,101,228,192,132,117, 94,160,138,234,167,232, + 39,252,178, 25,196,242,100, 16,152,177,215, 59,115,185, 84, 36,234,244,184, 76, +172, 79,162, 93,201,219,164,168,242,249,237, 82,118,187,214,164,113, 36,168, 79, + 64,253,171,194, 65,172,252,123, 59, 49,171, 28, 14,160,192,137, 15,238,237,140, +155, 28,108, 74,234,172, 71, 27, 76,139,168,226, 98,239,227, 39,156,169, 80, 21, +145,155,114,221, 68,255,214, 3,163,142,157, 50, 62,183,225,249,224,255,192,251, + 64,100, 22,135,250,203, 24,132,130, 40,186,151,156,180,125,208,148,254, 96, 26, + 85, 70, 52, 20,211, 51,195,198,106,120,246,133,248, 83,234, 40, 78, +} ; + +// ../Source/Template/GB_AxB_saxpy3_coarseHash_notM_phase1.c: +uint8_t GB_JITpackage_87 [829] = { + 40,181, 47,253, 96, 94, 9,157, 25, 0, 70,230,114, 32,224, 90,117,160,231,236, +231, 27,109,180,176,116,159, 33, 3, 19,181,169, 24,191, 37, 75, 83, 30, 52, 94, + 3, 51, 12,193,188, 23,110, 0,102, 0,104, 0, 76,251, 66,240, 72, 52,219,199, +168,146, 45,111,110,111, 56,234,205, 75,165,238, 90, 2, 97, 64, 16, 24, 7, 3, +226, 25, 21, 92,179,141,154,146,111,221, 87,225, 29, 77,221,185,198,233, 46,144, +144,156, 37,165, 65,114,248,246,137,131, 97, 0, 15,111,167,174,125, 99,120,217, +244,240,167, 93, 26, 69,166,149,125,227,192,118,134,164,135,185, 99,245, 66, 59, + 43,108,203, 57, 82, 47,177, 34, 85,211,122, 16, 85,231, 65, 40, 47, 20, 48, 66, +161, 16,162, 31, 6, 31,151, 99, 29,245,118,104,252,224,181,254,163, 50,219, 95, + 94,253,142,245, 17,205,240,200, 72, 90, 11, 48,215, 62,110,242, 68,233, 88, 79, +111,128,216, 6,130,255,234,124, 8,244,174,252,241,240,151, 47, 27, 56,254,229, + 8, 94, 44,167,233,142,135,182,109, 3, 29,172, 92, 91,149, 74,179,111, 87,203, + 11,133,255,199, 90,152, 97, 67, 16, 56,164,147,236,222, 40,185,193,190,149, 63, + 11,129,109, 13,247,227,173,253,219, 47,249,222, 73, 45, 6,236,175, 50,119, 62, +213,190,117,164,207, 12,172, 74, 18,125, 51,209,124, 42, 46,215, 39,156, 77,167, +225,120, 28,139, 7, 17, 28,236,192,234,146, 38,190,237, 87, 14, 83,103, 59,233, + 75,179, 41,147,246, 24,119,195, 31, 15,137, 34,232,100,164, 33,128,252,242,136, + 59,201,131,120,157, 9, 37, 27, 12,102,201,193,253,218,178, 65,241,143,139,226, +175,167, 88,220,218,130,202, 28, 24,246,178,220,175,236, 37, 78, 46, 69,171,242, + 86,254,188,109,238,131, 1,247,110,238,113,236,173, 20,215, 91,141, 79,229,205, +106,191, 15,102, 89, 11,186, 22,187,115,112,191,229,188,214,235,200,142, 20, 59, +209,235, 68,112,188,120, 21,127,181,185,123, 38,146,140,197, 35,137,117,210,175, +178,231, 56,132, 60,119, 26,121,237,250, 91, 79, 35,173,112,186, 10,247, 3,226, +143, 1, 6,195,116,146, 86, 44,199, 20,135, 1,128,156,168,193, 45, 82, 68, 50, + 65, 10,146,146,130, 74, 58, 64,132, 16, 50,104,236,226,240, 52,130,242,160, 52, + 70, 64, 4,154, 4, 19, 72, 48, 97, 40,255,227, 1,144, 18,152, 15, 56,157, 67, + 9,173,119,198, 36,156,179,101,109,128,192, 20,146, 38,147,145,139,168,170, 58, +160,148,196,134,136,220,244, 90,177, 39,165,129,145,122,155,101, 86,228, 64, 50, + 82,236, 73,121,158, 90, 41,164,104,219, 66, 4, 38, 9,225,112,253, 93,124,130, + 84, 86,104,162,146,116,144, 18,194,221, 61, 12,196, 52, 88,172,113,224,200,230, +179, 48,233,212,131,120,169, 94,200,182, 81,189,193,220,120, 19,126,111,182,204, +224, 4,106,110, 66,142,216,167, 0, 94,130, 58, 92,119, 1, 98,249, 10,157, 46, +137, 23,169,129,140, 9, 4, 27,189,142,212, 66,249,133, 5, 38,193, 8, 5, 8, + 65, 32, 94, 96, 67,112, 22, 81,249,221,232,157,236,255,132,210, 33, 81,199, 78, + 57, 59, 49,100,182, 65,198,205,207, 72,227,228, 51,185, 44,141, 59,230,216, 98, +105, 94,255, 88,231,123,100,107,208, 24,102, 63,147,173, 65,203, 10, 64,195,232, +210,147,105, 68,152,149,198, 35,184,138, 26, 62, 80,159, 30,236, 82,164, 21, 61, +232, 80,212,241,220, 58,163,134,210, 14, 38,182, 49,184, 83,184,178,134, 92, 47, +145, 22, 1,231,183, 69, 35,118,159, 38, 65, 87,194,165,208,134,252,219, 30, 54, +152, 81,182,197,230, 98, 88, 69,232,153,222,201,179,101,232,147,187, 10,143,244, +176,165, 38,184,136,163,145,255,131,102, 74, 5, 83,169,185, 29,233,106, 92, 84, +183,198, 7, 28, 98, 81,221, 57, 60, } ; -// ../Source/Template/GB_emult_08_meta.c: -uint8_t GB_JITpackage_103 [1227] = { - 40,181, 47,253, 96, 76, 17, 13, 38, 0, 22, 48,146, 40,192, 84,177, 14,228,188, -192,235, 47, 55, 9, 10, 19,224, 5,136,246,246,124,231,130, 65,122, 44,194, 36, -131, 16, 68,100, 55, 93, 56,184,174,162, 96,139, 2, 46,136, 0,124, 0,138, 0, -241,151,110,115,161,137,143,233, 47, 93,139, 59,119,220,102,167,201, 69,194, 88, -122, 94,146,123,207,220,166, 25,205,181, 49,142,165,113,237,139,118, 44, 26, 17, - 30, 9,235,143,219,184, 63,199,121,114,208,207, 53,237,189,130,128,185, 96, 44, - 11, 7, 23,204, 41, 87,244, 10,166, 31, 50,226,210,123,104,102,187, 81,208, 43, -212,235,192,201,201, 59,145,105,124, 37, 71,117,166, 29, 53, 1,120,136, 14,211, - 43,176, 64,122,154,233,215,102,199, 96, 85,254,160,177,156,220,159,145,185,183, -138,225, 82,101,173,219,186,130, 19, 55, 48,152, 88, 12, 12, 2, 88,135, 51, 24, -140, 96,235,240,214, 93, 56,107, 29,238,219, 26, 71,165, 88,246, 69, 53,252, 75, -177, 7,150,249, 93,169,196, 47, 77,215,230,171, 63,230, 37,251,149, 30, 55,189, -185,246, 51,123,129, 92, 59,220,117, 60,119,214, 43,153,214, 56, 95,207,182, 30, -183,197,158,145, 40,214,244,190, 61, 65, 26,203,235, 33,173,218, 99,122, 76,103, -142,142,201,206,184, 54,238, 48, 76,214,158,249, 21, 77,235,178,247,149,239, 51, - 91,235, 25,167,111,151,175,238,230, 76, 67,253, 33,231,171,188, 14, 43,239,149, - 49, 4, 84, 69, 26,227, 69,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16,194, -140, 98,181,225,148, 23, 93,163, 89,107, 53,214,186,147, 33,113,207,139, 32, 14, -228,228,150,169,181,161, 62,207, 67,125, 54,158, 13,138,138,226, 84,239, 21,166, -213,235,108, 46, 54, 22, 21,136, 83,145, 53,150,213,214, 62, 40,181, 44,134, 57, - 27,206, 61, 88,222, 53,231,222,243, 69,111,198,125, 11,158,171, 4,133, 92,171, -189,166,248, 10,204,205, 17, 48,165,128, 55,214,105, 87,165, 2, 31,206,243,128, -168, 15, 71, 66,102, 53,227, 75,179, 10,210,255,159, 76, 70, 66,214, 3,147, 73, -137, 38, 47,122,123,235,234, 51,152,128, 75,234, 44, 53,110,235,124, 81,205, 90, - 91, 8, 31,100, 40,157,115,226,166,105,154, 32,132,240,189,247,178,173,240, 85, - 59, 48, 16, 1, 76,209, 65,159, 13, 69, 61,104, 33,134,253, 80,142,185, 70, 19, - 29,243, 71,225, 1,117, 50,226,166,150, 60, 88, 50,133, 18, 18, 61, 3, 17,157, - 18,133, 80,106, 89,115,198,143, 68,207,232,101,123,174, 90,132, 98,128,107, 52, - 49, 70, 10,198, 5, 64,244, 92, 27,247,229, 64, 83,198, 7, 68,121, 34,198, 84, - 89, 80,175,242,192,146, 66, 66,242,232,218, 42,198, 24, 99,140, 1,129, 53,168, - 33, 93, 68, 35, 35, 35, 73, 65, 10, 82,105, 13, 17, 9, 49,136, 66,201,108, 30, -162,160, 32,151, 81, 28,130,160, 64, 10,144, 0, 33,100,196, 34,145,136, 68,154, -130,130, 74, 27,214, 16, 0, 57, 67, 49,141,123,136, 84, 60,225,163,214,162, 92, -229, 38, 22,167,144,252,213,251,111, 87, 28, 15, 1,241, 5,142, 33, 45, 10, 87, - 40, 15, 87,161,186,163,154, 4,242,119,101, 12,114, 22,243, 95,169, 34, 87, 48, - 24,201, 73, 77, 97, 73, 50,104, 37,128,230,218,191,210,110,106,199,210,156,150, - 64,161,165, 20, 78,228,108,107,124, 5, 52,231, 27, 37,198, 37,152,204, 26,154, -162,100,159,130,124,165,182, 26,192,194,205,241, 86, 89, 19, 25, 7,108,131, 63, -109,165,237,121,222,203,179, 76, 69, 58,209,151,124,163, 67,101,250,154,153,182, -246,160,110, 6, 50,189, 46,175,253,252, 44,128,215,243,225,255, 38, 0, 99,104, - 51,154,125,155,153, 43,140, 74, 83, 12,169, 84, 69, 85,190,147,242,115, 52,221, - 8, 80, 81, 82,121,127,201,146, 31, 18,254, 69, 86, 96,166, 16, 34,172, 62,163, -203, 99, 2, 64,136, 28, 71,112,163, 51,107,201, 36,119, 58,215, 93, 60,154,223, - 80,121,205,138,188,124, 39, 10,153, 94, 54,167,246,194, 77,233, 92,132, 37,232, -137,134,214,190, 34,147,238, 41, 39,246, 36, 27, 41,199,133,234, 8,227,177, 65, -150, 18,129,121,129,176, 64, 20,205, 10,236,228,118,208, 88, 49,206, 21,192,149, - 77, 14,217, 80, 72,107,145, 80, 14, 91, 89, 64,184, 10,254,169,205, 45,184, 0, -202, 59,150,241,196, 44,196, 46, 94,152,229, 22,191,185,130, 69,208, 92, 78,198, - 88,206,144,211,210,219, 97,139,194, 37, 11, 8,173,192,251,145, 5,145,130, 16, - 1, 32,194, 9,135, 77,213,155, 60,134,226, 46,153,109,187,147, 4, 56,207,179, - 66,172,186,153, 0, 23,229, 96, 20,101, 97, 49, 44,229,254,196,142,207,241,145, - 27,144,227,125, 72, 67, 51,168,106,168,216, 73,192,105,128, 94,235,219, 82,168, -196, 73,201, 98,255,225,201, 92,208,122,166,219,106, 25,245, 18,157, 40,211, 55, -102, 67,105,158,243, 33,171,242, 35, 10,129, 20,184,107,127,143,226, 99,121, 98, - 69, 26, 89,234,151,102,194, 31, 48, 81,128,244,233, 97,223,174,143, 72,106, 90, - 47,172,138,146, 69, 29, 49, 76,116,228, 5, 12,176, 64,233,160, 53, 28,179,187, - 29, 77,238,136,177,102,139, 82, 68, 25,185, 67,132,161, 64,153, 66,140, 45, 13, -199, 29, 17, 96,106, 26, 50, 65, 5,145, 36,133,118,185, 31, 79,251,176, 55,233, -209, 74,157, 14,103,194,253,200,156,108, 9,125,244,179,157,166,100,129,174,233, -206,143, 62, 3,103,152,126, 39, 3,144,162,165, 72, 86,163,135,245,163, 50, 39, - 53, 83, 69, 35, 41, 18,126,211,124,171,204,132,245,225,198, 61,228,120, 20,193, - 72,227, 36,165, 90,214, 9, +// ../Source/Template/GB_AxB_saxpy3_coarseHash_notM_phase5.c: +uint8_t GB_JITpackage_88 [887] = { + 40,181, 47,253, 96,105, 10,109, 27, 0,230,163,111, 33,224, 90, 23, 3,148,119, +226,218, 99,201, 62, 75,187,166,136,204,116, 68,142, 45,253,186, 48,237, 26,132, + 57, 17, 99, 36,196,240, 11,106, 0, 97, 0,100, 0, 58,219,240, 90, 4, 32,137, +166, 19,109,234,180,218,110,174, 55, 73,186,155,155, 76,223,185,131,129, 96, 16, + 44, 10, 4,195,181, 48, 59,167,111,170, 74,222,125,103,145,187, 60,221,206, 57, +206,103,129,144,102, 61, 41, 12,147, 99,247, 69,113,176,196,207,253, 28, 36,240, +121,143, 11,192, 17, 57, 35, 97,117, 37, 77,122,217,101,166,164,174,160,213,103, + 45, 67,122, 96,153,171,170, 41,100,245, 81, 8,229,131, 1, 38, 24, 12, 2,249, + 17,142,224,105, 37,238,102,151,115,162,189, 38, 42, 12,203,140, 58, 99,236,198, + 81, 20,250, 5,239,157,252,182,150,110, 44,255,179, 28,143,207,122,186,227,162, +174,235, 66,231, 88, 38, 83,189,251,230,202, 8,190,220,249, 94,180,167,221,187, +134,250, 98,174,166,190,190,191,156,195,186,238,147,255,127, 12,115, 97,132,206, + 32,176,100, 88,205,239,140,211,222,241,238,108,197,138,192, 6, 37,156,197,108, +169,227, 16, 19, 2, 1, 57, 31,216,120,193,112,111, 99,100,151,111, 75, 42,209, + 11,237, 76, 40,165,248,114,159,148, 47,217,184, 69,229,187,115, 25, 94, 35,220, +203, 62, 10, 46,106,229, 82,216,184, 8,227,208,205, 72,196, 60,230,210,182,173, +154, 28,141,111,125,222, 17,223, 59,198,223, 20,161,216,249,102,163, 23,182, 50, +147,110, 87, 96,252, 30,119,239,101,107,245,183,101,125,151, 1, 24,246,202, 94, +162, 17, 42,153,108, 38, 96,231,163, 80, 9,102,147,225,188,182, 79,162,241,116, +251,222,238, 42,154,168, 55, 94,184,218,115,180,109, 17, 51,178, 87,160,182,207, +101,159,116, 42,155, 15, 5,129, 1,239,219,226,185,220,123,151,202,230,107,206, +162,206,173,221,143,154,118, 47,190,159,163,241,125,214,173,233,103,126,166, 55, +194, 21,127,152,126,120, 44,143,191,178, 98,190,141,131, 38, 18, 76,133, 6,128, +195,168,161, 49, 83, 36,193,136, 76,144,130,130,164, 50, 28, 64,132, 16, 82,103, +182, 1, 66,113, 32, 34,145,208, 40, 66, 12, 34,134,146, 96, 68, 2, 42, 41, 74, + 25, 53, 30, 89,155, 33, 14, 78,180, 8,134,128,255,175, 89,253, 78,138,132, 18, +144, 84,161, 1,247,163,105,147,247,223,221,214,186, 37, 62, 96,120, 73,132, 33, +143, 69, 25, 60,144,127, 5,153, 64,102,106,196, 21,187,114, 34, 33, 5, 68, 99, + 31,125, 37, 39,116, 25,238,131,167,224,248,204,160,108, 38,197, 65,229, 23,224, +129, 60,229, 50, 72,215,204,237,153,101,225,178, 53,177,172,128,171, 10,172,103, + 49, 32,165, 40, 67,147,140,219, 91,211, 80, 9, 16, 35, 77, 3, 84, 59, 36,237, + 22, 80,253, 56,159,208,238, 98,129,247,194, 65,130,133, 8, 74,235, 83,228, 72, +199,147,106, 32,108,253,105,134,140, 67, 16,204,122,227,193,169, 34, 99,230, 36, +162, 82,143,114,192,168, 32,116, 20,208, 95, 31,194,191, 36, 77, 56, 39,126, 50, +113,160,151, 8,239,219,111,120,225,161,192, 40,149, 16,180,126, 59, 2, 51,228, +119,102,118, 76,132, 43, 26,156, 13,206,155,117,135,209,230,154, 60,219, 84,110, +235, 90, 12,156,130, 49,164, 35, 66,251, 30, 83,239, 84, 86,231, 78,130,104,235, +222,213, 32, 17,149, 30, 35, 77,201, 43,240,122, 57,253, 60, 54, 51,172, 93,125, +210, 16, 2,252, 22, 3,187,178,202,156,142,171, 34,181, 36, 74,138,176, 45, 5, +141, 65,219,128, 64,167,237,155,106,137,162, 8, 8, 63,114, 97,223,247,118,236, +205, 74,119, 26, 62,237, 21,172,234,111,100, 88, 18,163, 81,113,198, 66, 0, 44, + 33,180,165, 31,120,204, 14,127,246, 86,216,200,233, 97,245,210,198,123, 62,106, +225, 19,118,110,189,212,239, 0,249,255,255, 44,237,211,236,210, 20, 81, 54,149, + 29, 39,247,193, 28, 52,213, 63,152,102,149, 81,122,184,193, 59,163,135,135, 99, +254, 43, 99,168, 74,115,100, } ; -// ../Source/Template/GB_emult_08_template.c: -uint8_t GB_JITpackage_104 [2007] = { - 40,181, 47,253, 96,211, 38,109, 62, 0,218, 66, 84, 12, 40,160, 86, 85, 29,212, -135,191, 16,232,230,237, 70,186,205, 81,153, 46,218, 99, 61,183,227,127,108,161, -150,166,253,193,178,209,186, 28, 47,199,139,242, 58,120, 6,183, 0,178, 0,191, - 0, 19,143, 96,153,223,117, 74,252,213,117,109,214, 90,212,175,243,184,231,205, -181, 31,178, 23,120,115,249, 56,215, 15,127, 34,207, 95,118, 42, 68, 27,103,237, -217,214,227,182,219,173, 76, 99,201,121,214,181, 15,184,243,231,117,246,170, 96, - 42,141,165, 57, 77,122,240,214,237, 25,154,185,246, 86, 97,105, 92, 91,155, 29, - 75, 71,132, 70,181,181,232, 54,238,141,227,204,133,204,141, 83, 10, 79, 29,104, - 48, 26,139, 66, 6,163,249,164, 73,167,240, 20,201,136, 87,240, 35, 46,219,110, -130, 78,125, 96, 39,114,158,188, 19,214,167,243,252, 62,149,219,222,136,187, 52, -190,210,195,199,243,215,107,115, 36,127,240, 0,252,218,123, 28,174, 83,177,160, -130,155,235, 86,103, 73,189,174, 51,182,128,193, 50,253,186,198,226,196, 47,151, -138,229,114, 9,248, 83,197, 46, 9,111,178, 47,151,177,238,171,180, 41,149,191, -236, 66,228,245, 4, 26,190,205, 92,231, 73, 87,123, 16,232,180,161,111,115, 93, -103, 89, 86,217,221, 3, 2,170,106, 39,158, 90,111,191, 54,244, 81,158,221,159, -191,218,100,103, 92,231, 23,142, 39,151, 71,244,222, 92,187,107,234,117,243,185, - 71, 12,199,158,123,207,173, 3, 76, 70,195,240, 83,250,133,184,144,144, 39,187, - 60,179,169,167, 77,203, 22,110,109,150,203,221, 73,213, 99, 65,117,248,205,101, - 57,167,145, 88, 74,109, 8, 84,191, 99,169,125, 55,227,186, 53,205,186,206, 94, -165,246,146,121,179,236, 94,231, 45,198, 40,251,246, 97, 75, 83,109, 4,221,135, -187, 79,123, 95,121,156,233,135,251,110, 85,158,106, 26, 82, 39,150,173, 77,138, -127, 3,159, 56,248, 11, 2,225,115,110,156,125,120,158,211, 38, 5,146,177, 84, - 85, 5,189,143,151, 64,106, 66,234,208,131,161,185,213,254,234,204,147,165,218, - 90,212, 28,104, 96, 0,100,228,227, 30,104,131,243,249,192,140,193,229, 85, 32, -255,229,137, 80,150,116,193,218, 24,117,121, 38, 85, 68,155,158,225,124, 32,133, - 6,168,195,225,225, 8,140,156,226, 46,233, 23, 70, 17, 39,190,185, 8,151, 71, - 40,145,141, 3,158, 34,108, 57,146,247,181,221,175,197, 87, 90,173, 49,237,148, -203, 87, 43,111,123,246,242, 39,210, 67,181,233,148,177,124,179,145,176,174, 51, -116,106,109,246,140, 37,109,168, 64, 62,158,241,236,128,190,121,198,119,134, 70, -158, 49,132,132,107,179, 55,175,134,123,203, 29, 98, 96,112,135,134, 99,190,145, - 50,148, 54, 59, 89, 71,155,212,244,219,154,211, 2,149, 74,202,230,215,116, 73, - 84, 98,215, 98, 24,158,152,199,115,193,179, 1,158,186,222, 32,208,184,155,203, -179, 61,215,180,193,209,240,160,224,124, 54,160,198, 7,251, 84, 96, 30, 26,160, - 85, 1,239,237,163, 90,109,141, 82,121,241,129, 30, 44, 3,163,195,193,216,224, - 92, 96,160, 10, 11, 41,186,196, 83, 68,117,103,199,221, 89,109,132,231,181,198, -183, 97,156, 14,163,236,117,125,177, 38, 41, 45, 92, 27, 55,127, 56,149,213,206, -236, 89,135, 24, 99, 22, 99,150,197, 24, 99,204, 98,140, 49,198, 24, 99,140, 49, -198, 24, 99,164,102,140, 49, 74, 58,125,130, 35,114, 34,182,222,142,130,242, 20, -239,212,172,192,252, 1,131, 19,111,178,113,237, 77,230, 43, 51,198,234,172, 80, -102, 12, 40,232, 65, 73,227,225,214, 69, 58, 29, 14, 12,136,217, 44,189, 98,125, -228, 16, 1,130, 28,168,242,211,146, 41,166, 68, 2, 17, 73,146, 20, 10,141, 1, - 18, 41,132,225, 88,162, 75, 73,183, 30,194,208, 32,141, 82, 24, 69, 40, 33, 68, - 64, 8, 35, 70, 48, 68, 68, 2, 17, 17,145, 72, 70, 68,226, 54, 17,130,164,197, -182,136, 32,101, 25,125,169,170,105,114,197,117, 82,179, 78,253,201,110,179,160, -129, 43, 1,193,139, 46,163,195, 24, 76,221,104,216,149,111,255, 9,245, 96,122, - 91, 26,106,237,230,108,129, 67,183, 89, 26,163, 42,181, 32, 41,236,255, 44,210, -184, 47,185, 56,171, 21,250, 8, 50,224,201,183, 83,237, 65, 87,191,232,199,170, - 37,193,221,118,211,116,220, 38,240,175, 29, 0,102,249, 75, 72,179,253, 6,122, - 53, 40,233,206, 74, 52,204,127, 9, 72,252,144,222, 86,179,192,133,202,159,202, -224,218,243,178, 70, 66,248,202, 67, 50, 85,132, 46,174, 60, 55,156, 68, 22, 52, -132,134,107, 54,218,223,216,123, 83,126,176,112,103,130,221,224,213,175,107,161, - 48,249, 93,193, 86,255,224, 74, 97,228,220, 96,134,104,202,212, 78,151,169, 78, - 89,144,130, 72,250, 15,185, 7,127, 81, 54, 77, 40, 12,160,209, 68,115, 71,175, -243,167,228,212, 77,185, 11,173,102,243, 42, 3,146, 25,152, 54, 45,135, 82,255, -140, 78, 89,111,166, 43, 4,229,116,204,213,120,161,197,159,159,142,141, 38,152, - 22,166,174, 27, 88, 14,223,229,210,238,137, 99, 19,214, 37,126,227,138, 64, 97, - 67,132,203,162, 73, 77,141,200, 79,120, 6,148,238, 75,108,245, 67, 90,131,140, - 72,189,121,218, 8, 38, 24,233,247, 19,143,118,236, 56,121, 45, 50,163,158,218, -167,237,247,212,182,171,237,242, 45, 87, 57, 20,112, 50,145,167,119, 40,231,245, -172,241,154,222,168,189,134,165,189, 56, 59,191,248,251, 51,245,246,150,162,215, -217, 9,213,163,141,207,199, 88, 61, 58,140,210,181, 48,129, 72,217, 33,166,164, -147, 20, 35,160,251, 32,175, 9, 3, 54, 51,196,120,148, 9,131,217, 78, 61, 16, -186,221,176,101,162,198,182, 3, 79,153, 29,127, 37,235, 10, 65, 57, 26, 43, 75, - 80, 77,105,181,249,133, 88,155,176,182,207,140,134,132, 7,179, 49, 87, 89, 39, -115,175,100,124, 71,137, 31, 41, 24,154, 87,121,255, 31,226,212,251,211, 94,107, - 13, 10, 10,127, 50, 3,200,213, 53,216,225,188,243, 5,212,221, 6, 58,237,125, - 26,254,236,121,255, 7,144, 43, 18,189,139,234,249, 6, 20,219, 82,190,100,255, -158,127,213, 76,167,221, 20, 14,247,138, 17,213, 0,236,217,109,220,220,174,163, -221,173, 91,222,244,193, 81, 91, 25, 34,198,136,220,112, 34,230, 57, 2,192, 10, -180,179,125,240, 39, 92,125,215, 32,193,165,146, 93,190, 78, 28, 54, 57, 41,203, -190, 66,230,145, 46,127, 65,105, 73,106,249, 86,187,229,119,106,198, 77,166,168, -145,187,180, 82,230, 13,208,107, 91,252,145, 36, 6,250,225, 5,192,182, 70,109, - 94, 1, 92,191,141, 32,114,227, 94, 49,110, 22, 32,147, 14, 18,207,140, 49,168, -145,225, 94, 11,196,119, 71,213, 10,177, 39,244,145, 51, 48,217,181,175,183,121, -101,227, 54,169,247,103,206,135,138, 0, 30, 8,172,102, 12,242,213, 3, 25, 66, -118, 25,142, 68,139,133,237, 50,204, 64,240, 23, 7, 58, 9,226,190,167, 28, 86, - 4, 40,239,144, 64, 77,181, 57, 79,168, 84,205,252, 77,193, 45,170, 93,174,101, -252, 82,139,237,168, 4, 71, 64,163,203,130, 63,168,229, 44, 63,147,142,253,218, -217, 62, 54,224, 22,175, 13,139,220, 24,183,216,127, 90,123,172,233, 53, 7,104, -114,202,171,143, 37, 54, 84,142, 85, 1,148,239,253, 21,125,129,224,133,101, 96, - 52,237, 40,195, 7,186,145,132,115,159, 36, 36, 9, 88, 3, 17,214, 27, 12,174, -144,239,199, 50, 9, 35,196, 30,142, 33, 74,145,181,153,113, 68,224,140,255, 11, -197,132,120, 52, 43,209, 29,231,167,139, 79, 70, 96, 53,217, 4,190,216, 96,153, - 34,101,184,173,170,169,202,124, 65,196, 39,215,255,161, 62, 15,177, 69, 85,187, -255,219,200,165,168,218,179, 72, 95, 27,169, 44, 8, 76, 38,220, 78, 23,164,223, -134, 16,136,107, 18, 47,120, 37,235,154,135,132,253,141,172,186,234,215,124,112, -179,196,101,128, 3,181,229,139,232, 71, 16,213,147, 66, 83,220, 46, 47,202,216, -226, 4, 17, 79, 31,188,233, 63,162, 67, 60,200, 20, 75, 69, 87, 95,223, 39, 43, - 8,245, 76, 27, 51, 46, 41,201,167,175, 25, 12,161, 51,137,251, 27,225, 81,164, - 17,178,165,217, 0, 55,183, 88,160,172,198,138,115, 27,110,176, 96,201,100,233, -200,122,101,204,208,169,226, 89,235, 92,241, 21,177,221,163,213,135, 57,220,212, -218,165, 93, 12,159, 12,105,239,205,113,242,104, 34,195,152,106, 36,114, 78,126, -138,132,183, 48,204,207,174, 5, 82, 76, 47,135, 42,221, 9,206, 20,244,152,148, - 85,192,148, 80,223, 63, 83,188,236,171,227,144, 63,228,128,238,228,136,164, 61, -138, 97, 65,167,179,156, 8,241,116,227,241, 13,255, 72, 88,245,114, 35,185,193, -178,213, 55,106,119,151,219,170, 42,146, 48, 33, 57, 8,130,149,177,115, 5,155, -224,175, 91, 77, 3,128,143,192, 29, 0, 56,196,217,166,142, 38, 39, 96, 76, 64, - 29,101,132,193, 31,167, 11, 12,140,113,118, 1, 3,109, 2,205,168,160,147, 2, -152,121, 39,205,233,252,222, 24,247, 74, 99,203, 74,179, 71,128,245,152,170, 10, -202,104, 9,134,150,150,125,211,132, 31,130,137,213, 84, 78,135, 97,197, 57,116, -105,164, 73, 90, 43, 24, 80, +// ../Source/Template/GB_AxB_saxpy3_coarseHash_phase1.c: +uint8_t GB_JITpackage_89 [1341] = { + 40,181, 47,253, 96,148, 16,157, 41, 0, 38,245,156, 40,192,146,117, 14,106, 70, +158,166, 33, 20,254, 4,173,116, 91, 27, 42, 31, 50, 32,140,179,150, 21,116, 1, +112,132,243, 76,127, 33,119,112, 93, 69, 97,186, 10, 64,151, 0,142, 0,149, 0, + 93, 23,251,246,236,216,254,117,173,223,112, 5, 96, 52,175,244, 83,102,192,170, + 52,159,238,183,255,191, 68, 18, 34, 41,160, 14, 42,188,201,232, 89,183, 84,110, +173,111,167, 34,219, 83,185,120,160,160, 50,238,168,108,249,115,123, 55,142,254, +188,235,172, 79, 8, 7, 5, 7,149, 5,131,130,131, 79,164,244,201,118, 71,124, + 56,101,125,180, 93, 42,234,138, 79, 32,203,147,217,188, 88, 35, 44, 30,136,111, +127, 32, 9,103,163,104,114,246, 46, 78,218,215,163,159,126,217, 29,197, 68, 35, +123,139, 1,219,184,121,112,179,145,195,182, 70, 42, 33,194,200,251,136, 22,102, + 62, 44,152,137, 56, 1,129,164, 66, 64, 16, 81,190,139, 45,249,242,130, 87,223, +224, 56,141,123, 26,139,148,249,101,142,203, 67, 48, 3, 43, 54, 17,146,144, 9, +133, 18, 59,204,229,215,214,214,184, 87,231,184, 95,152,160,112,103, 75,148,189, +147, 45, 87, 47, 99,251,253,210,153,209,237,178,232, 20,203,216,121,159,253,174, +251,180,138,214, 21, 27,189, 40,186,141,221,158, 50,230, 36,111,242,140,125, 70, +249,235, 91,197, 36, 52,181,164,249,118,219,227,183, 84, 83,191,202,184,189, 79, + 74, 58,191, 91,180,222,158,205,248,141,234,218, 47,123, 40,141,254,149,106,231, +106, 20, 29,243, 13,138,162, 52,174,113, 62,141, 2, 31,156,205,190,252, 98,243, + 48,209,129, 33,238, 33, 6,150,117,177,237,248, 98,161, 96,151, 4,109, 67,236, + 66,134,201,173,241,242,158,209, 1,157,242,201,199,245,137, 36, 93, 98,185,199, + 99, 49,113,135, 15,114, 54, 94,175,126,101,215,107,185, 14,188, 2,218,171,210, + 43,185,227,244, 3, 11, 93,183,149,239,108,234,253,114,196, 79,133, 26, 74,128, +172, 11, 74,104, 54, 28,141,198, 89,189,147,207,147,158,183,123,238,182, 75,235, +108,242,229,252,205,190,147,202, 79,170,131,204, 16,246,207,134, 2,131, 35, 34, +242, 13,232, 99, 81,128, 32,168, 3, 51,210,181, 14, 24, 93, 79,196,147, 55,143, +179, 13, 18,201,136,229, 30,233,223,202,118, 54, 23,185, 98, 0,151,118,246, 19, +233, 51, 86,106,251,253,218,108,249,198,217,162,202,178, 70,182,103, 15,158,143, +147,237,206, 79,113,135,197,219, 61, 77,243,235, 22, 16,168,110,179,142,110, 83, +166, 73, 84,173,223,244,160,245, 44,162,118,106,159, 54, 31,123, 8, 14,200,226, + 84, 60,105,198,182,139,218,171,142, 82,236,142,176,103,124, 37, 95,170,245,189, +230, 38,237,219, 89, 75, 86,115,109, 97, 46,183, 60,203,131,152,103,188, 95, 46, + 53,159, 61,127,231, 71, 37,133, 50,114,225, 34,103,113,208,226, 52,122,238, 1, +129, 53,168,129,173, 51, 51, 67, 34, 34, 73,146, 66, 97, 24, 3, 97, 12, 66, 24, +147,150, 74, 62, 34,177, 40, 75,194, 36, 66,134, 24, 70, 12, 21,136, 4, 50, 65, + 74, 75,202, 40,211, 1, 16, 0,243, 53, 74,127,226, 23,242,130,212, 37, 86, 70, +232, 44, 63,198, 69,128, 69,189,237,151,185,187, 94,186,165, 48,197, 70,143,237, + 72, 64,196,194,150, 69, 17,136,235, 38, 11, 5,130, 1,163,147,171,237,207,173, +211,138, 67,167,182,161,232, 53, 29,110,150,125,146,232, 78,124, 68,205, 93, 6, +238,231,138, 44,159,216, 91, 34,170, 74,101,129,249, 85,196,243,111,247, 90,129, +167, 39,115,182, 52,165,147, 84,226,253,199, 26, 4,112,181, 69,227,230,237, 3, + 66,173, 77,254,113,128, 82,170,214, 48, 82, 55,144, 44,143, 90, 71,103,150, 78, +176,215, 82,134,152,137,105,223, 85,200, 26, 82, 0, 70, 36,244,121,151,170,235, +172,166,202,157, 1,152, 9, 16,219,227, 37,125, 82,207, 80, 36, 52,147,156, 74, +197,233, 35, 37, 42,202,167,113,172, 39, 68,236, 66, 96, 7,137, 55,208,134,231, +200, 13, 53,174, 26, 84, 33, 72,213, 18, 43,111,208,245,210,136, 66,237, 35,217, +127, 37, 83,158,194, 83,220,187, 7, 22, 79, 98, 23,133, 48, 26, 39, 23, 9,148, + 58, 39, 58,255,219,216, 9,245,116,113, 55,173,136, 49, 29,103,135, 1, 36,124, +180,208, 40,120, 42, 56,169, 49, 48,148, 8, 40,124,170,100,228, 83,208,242,160, + 98,176,234,233,141, 22,223,237,177,246,242, 14, 99,193,176, 75, 11, 21,148, 73, + 15,224,175, 79, 88,102,103, 85, 12,170, 82,224,102,167,112, 31,193,147,157,251, + 77,255, 37,210, 64,137,200,235,192, 45,103,110, 40,190, 81,230,142, 82,210,135, +188,171,183,219,231,202,249,213, 19,177,135,196, 49, 44,191,225, 30, 75,147,173, + 21, 23,145,236,146,150,133,122,241, 13,224, 85,241,152, 24,206,233, 72,149,194, + 39, 32,141, 17,203, 58,187, 79,123, 58,172, 7, 62,121,144,140, 70, 18,179, 91, + 1, 26,145,237,107,167,109, 98,200, 43, 16, 14,187, 24, 44, 12, 20,153, 23,209, +202,141, 33,116, 49,142,147,109, 65,108, 22,218,204,191,178,166,154,179, 57,135, +146,218,175,164,152,105,168, 62,193,254,167, 12,113,215,191, 47,237, 6, 29,124, +104,177,161, 73,251, 27,180, 68,236,173,152,200,190,147, 6,103,166, 55,206,125, + 59, 58, 98,177,156, 15, 43, 22,179, 22,195,214,180,145, 21, 36, 57,186, 18,130, +105,144,232, 5,144, 71,180,106,195,249,192,199,225, 23, 30,118,243,189, 84, 55, +185,194,207, 2,235,242,153,194,254,211,252,184, 19,189,178, 67,174,151,213, 82, +170,196,171, 8, 34, 39,187, 8,221,124,175, 4,144,151,154,202, 24, 94,121,121, +152,159,237,198,212, 48,157,152,143, 85,106,212, 49, 69,121,233,111,213,205,211, +140, 96,111, 83, 33,125,207,194,107, 31,112,100,173,131, 81,219, 9, 6, 74, 98, + 4,181, 24,163, 45, 26, 65, 87,200,231,230, 54,198,240,249,139, 15,239, 82,205, + 65,125, 50,193,210,168, 69,214,222, 20,156, 74,142,163, 12,205, 54,131,127,117, +170, 50,152,160,242,217,163,154,227,162, 39,137, 19, 96,191,243,207, 42, 13,175, +120, } ; -// ../Source/Template/GB_emult_08bcd.c: -uint8_t GB_JITpackage_105 [880] = { - 40,181, 47,253, 96,167, 17, 53, 27, 0, 70,165,113, 40,208,178, 76, 7,170, 74, - 60, 27,241,138, 66, 80,142,246, 52,176,161,226,149, 76,119, 83,164,160,213,152, -138,113, 25,152, 81,162,242, 5,190,120,144,165,230, 5,106, 0,100, 0,102, 0, - 91,102,154, 33,157, 90,107,166, 9, 5, 8,201, 54, 53,192, 25,206,205,195,202, - 93,244,230, 93,183,143, 4, 21, 74,101, 58, 24,160, 84, 46,105,209, 99,216, 26, - 82,225,146,125, 7, 87, 61, 79,115, 30,175,213, 48,247, 73,112,225,114,205,218, -159, 11, 2,231,215,193, 77,102, 8,202, 47,124,215,201, 79, 80,158,191, 81,249, -184,143,213, 49, 44, 32, 89,170,250,101,211, 50, 11, 5,171,221,199, 51, 49, 94, -248,100, 2, 77,147, 73, 7,183,115,218,199,243,176, 47, 97,196, 75,180,217, 5, - 94, 33,120,194, 61, 40,134,140,222,105,102,204,165,131,128, 96, 97, 99, 27,157, -179,177,174,107,207, 85, 47,147,192, 89,101,247,134, 71,139,100,249,197, 19, 73, -126,190,128,228,123,234, 85, 70, 40, 61,247,232,227,169, 87,191, 72, 91,212, 98, - 22, 89, 54,143,171,179,225,255, 15, 65, 31, 16, 69, 82,153, 38,167,201,111,127, - 1,103,119,186,210, 25,153,206,220, 40,230,125,234, 22, 85, 37, 85,213, 55,195, -110, 98, 30,137,104, 31, 56, 69,221,186,150, 1, 2,179, 80, 48,142, 38,162,193, - 2,224, 61,213,209,171,127, 72, 49,198,222,199,142,206, 80,109,214,186, 48,138, -205, 58,100,120,163,159,206,243,178,129, 79,251,157, 58,248,209,126,119,199,130, -191,138, 55,159,122,191, 98, 5, 6,149,246, 71, 36,178,209,137, 33,156,191, 99, - 30, 29,244, 58,124, 42,185, 26, 16, 20,194,204,203,219,141, 57,191,122,244,245, -147, 61,172, 97,115,204,229,110,222,128,128,232,179,107,110,163,227,157, 74, 45, -252,244,116,157, 64, 57,105,119, 29,181,185,250,250,241,178,221,152,153,119,119, -119, 89,147,217,161, 10, 20, 18,137, 84, 95,167, 55, 58, 1, 30,251,177,170,162, - 67, 60, 88, 87, 70,194, 98,206,162,179,199,177,143, 28,107, 1,163,101,244,181, - 54,171,169, 44,133,135, 43,128,180,160, 65, 69,198,148,136,136, 36, 41, 73, 74, -195, 1, 80,132,204,144, 21,113, 3,121, 64,149,237, 92,181, 82,245,164,138,237, - 81,102,209,164, 30, 62, 73,237,124, 79, 40, 16,188,200, 58,206,109,239, 48, 2, -184, 72,128, 20,245,248,102, 97,148,124,214, 47,229,193, 53, 86,149,107, 11, 5, -252,237,133, 12, 22, 25,162,254,239,231,177, 50, 22, 89, 24,243,174,133, 16,105, -161, 17,141,146, 28,195, 10,121,149, 91,176, 81,175, 66, 57, 27, 66, 33,135, 63, -226,178,186,241, 9,222, 54, 0,110, 60, 56,193, 12, 21, 44, 5,168, 65,138, 19, -172,241, 4,137, 64,197, 36,108, 1, 24, 32,233, 8, 9, 49,203,160, 11, 80, 40, - 6,119, 99,244,251,150, 98, 33,119,201,143, 33, 54, 30,143,244, 60,138,217,208, -253,130, 90, 33, 19, 28, 50,208,195, 22, 24, 1,241, 96,112,102,176,180, 73,186, -117,219,156, 79, 69, 13, 15, 31,122,161,190, 7,180, 70, 70,203,218, 12,106, 65, -105, 26, 81, 25, 86,224, 9,130, 88, 35,232, 87,227, 42,143, 95,230,109,229, 1, -133,180,211,217,244,192, 58,109,234,160, 99,205, 98, 53, 46,169,176,210, 51, 8, - 30, 42,158,140, 83, 55,174,123, 75,184,216, 45,153,215, 89,160, 42, 10,196,151, -209, 68, 64, 27,155,220,161, 55,138,173, 21,251, 69,101,246, 69, 96,235, 76, 86, - 44,230,112,182, 26,220,202,114,124,251, 32, 64,130,194, 9, 20, 18, 28,133,135, -181,129, 5,246, 99, 36, 45, 1,113,172,231,217,214, 7,246, 5,182, 94,255,200, -178,179, 62,147, 29,228, 13,127,228,248, 79,176,164, 73, 33,101,161,217, 34,173, -107, 79,195, 28,250, 19, 69,251,160,215, 97, 30,110, 60, 42,102,176, 66, 13, 97, -140,195, 14, 76,184,156, 26, 49,107,202,191,194,196,137,231, 84, 44, 16, 93,161, - 28,164,104,208,236,252,193,116,171,212,136, 17, 7, 70, 59,196,168, 42,122,199, - +// ../Source/Template/GB_AxB_saxpy3_coarseHash_phase5.c: +uint8_t GB_JITpackage_90 [1108] = { + 40,181, 47,253, 96, 83, 12, 85, 34, 0, 22, 47,144, 40,192,146,117, 14,106, 70, +132, 54, 47,219, 91, 52,121,126,214,134,106,191,157, 47,140,179,202,186, 5, 50, + 64,149,157,232,120, 7,127,114, 93, 69, 65,144, 13,102,136, 0,132, 0,134, 0, +220, 92, 49,149,119,103, 75,254, 63,138, 58, 34,130,136, 1,132,118,218,180,241, +146,144, 50,199, 93,233,134,129,208, 91,169,198, 25,200, 68, 37, 34,178,209,140, +144, 94,186,249,237,238,130, 55,255,190,248,234,192,128,192, 0,178, 80, 64, 96, +240, 73,147, 94, 93,206,152,149, 71,226, 67, 93,131, 24,156,189,226,196, 12,165, +179, 51,116,144, 88, 14,109, 6,113,162,132,191,218,192,174, 41,198,187, 63, 4, +185, 83, 4,162,117, 93,146, 64,239,236,172,236,238,188,208, 27, 78, 80,147, 7, + 33,187, 49,175,164,108, 68, 73,113,248,192, 64, 4, 25, 24, 8, 93,246, 97,249, +192,137,152,124,184, 44,151,139,163, 27,199, 0, 18,137,242,166, 23, 31, 73,145, +153,197, 1,220, 14,246, 47, 42,119, 13,214,201, 41,168,114, 87, 80,251, 68,112, + 75, 58, 7,185, 69, 1,197, 81, 63,218,228, 22,158, 87,113,123, 93, 54,234,152, + 40,106,126, 13,147,247, 13,153,243,110,221,243,222, 18, 65,161, 43, 75,211,167, + 98,233,122,215,172,241, 75,184, 87,124,107,163,108, 65,154, 6, 86,208, 37, 28, +119,223,234,188,133,117,238, 77, 51, 17, 14,188, 23, 78,140, 55,220, 34, 18,137, + 84,156,187,188, 10,125,223, 12,159,156,162,162,232, 99,114,139, 6,130, 66,163, +145, 26,203, 69, 66,126,228, 37, 45, 89, 39, 2,131,168, 60,137, 34, 48,121,241, +214, 21,189, 99, 10,169, 13,117,247,240,176, 87, 94,150, 81,122, 64,192, 11, 60, + 93,169, 61,189, 31,229,120,171,116,242, 14,103, 95,137,217, 83,247, 96,183, 90, + 99, 26, 10,188, 37, 67,223, 25,130, 90, 3,133,125, 57,126, 21,130,173,209,140, +211,174, 61, 31, 44, 19, 55,157,236,234,108, 50,142,172,104,162,140,136, 88,134, +161, 72, 14, 6,195,190, 15,196, 65, 56,134,220,219,137,209,236,249,229, 99,199, + 56, 13, 81, 5, 1, 92, 7,187,242, 67,218,245,156, 92,122,197,178,177, 92,178, +232,144,109, 32, 56, 20,117,217,171, 45,204, 70,130,223, 96,125,244,225,121,166, +126, 37,221,146,197, 74, 68, 71, 78, 76,222,183,168,141, 75,229,135,182, 73,195, +111,158,207, 28, 10,187,210,207, 83,249,252,105, 98,233, 23, 78,188,112,103, 58, + 88,200,243,141,182, 70, 27, 12, 45,199,183,236, 85,144,155, 55, 79,163,157,198, + 82,100,143, 99, 67,180,209, 90, 30,111,122, 50,122,223,160, 91,229,201, 39, 44, + 21,141, 87,167,118,101,195, 41, 54,128,229,168,145, 33, 99,102,136, 2, 17, 73, + 65, 82,144, 66, 99, 48,132, 16,195, 84, 89, 55,226,152, 64,134, 81,145, 0, 9, +164, 49,198, 9,142, 4, 18,208,200, 4,105, 73, 65,161,102, 3,236,144, 1, 86, +197, 67,199, 79,110, 20,102,230,197,124,218,177, 67, 0,252,249, 60, 16,193,193, + 45,115, 49, 81,155,180, 97,143,155,121, 64, 70, 53, 9, 16,214,110,196, 23, 4, +138, 5,129,225,213,184, 28, 56,177,158,254, 93,104, 7, 73,119, 48,104,104, 62, +241,241, 19, 29,204,209, 57,230,116, 46, 16, 46, 28,253,211,247,237, 38, 84, 8, +135,240, 47, 10,111, 41,135, 0,229,208, 39,118,114,111,138, 57,208,153, 86, 3, +248, 42,178,133, 12,255, 15, 78, 4,147, 60, 85,215,221, 23, 60, 74,230, 21,147, +113, 78,216,154,123,103,136,101, 32,170,190,224,206, 4,144, 48, 30,245, 83,126, +171,179, 54, 73, 7,140,123,228, 38, 30,165,240,133,145,207, 62,165,216,229,254, +112,249,144, 33, 54,249,203, 95, 51, 68, 48,212,140,211, 44,137,144,181, 43,175, + 96, 91,161,127, 64,176, 15, 10,124,196,155, 66,186,158, 65, 56,217,226, 28, 80, + 54,227, 35,125, 59, 95,124,164, 99,103, 64,102, 64,133, 28,237,237, 22,255,210, + 4,186, 34, 20, 33,113,136, 69, 53, 54, 2,172, 10, 3,186,103,173, 37,240, 32, +185,229, 56,139,177, 26,138, 89,118, 78,144,174, 61, 50, 79,123,203,183, 99,212, + 93, 95,169,133,113,231, 48, 9, 46,241, 4, 96,109,125, 99,237, 3, 79, 58, 19, + 39, 11, 34,208, 16,118,137,105,194,151, 13,111,109,164,159,119,148,142, 36, 61, + 35,110,158,232,193, 66, 0,142,106, 48,249,118,143,231, 88,129, 22, 74, 64,182, + 3,104,239, 37,148,117,118, 59, 76, 44,230, 1,206,231, 74,113, 35,200,249,222, + 67, 99,112, 27,119, 25, 70,194, 89,151,225,162, 47, 13,210,122,127,199,123,189, +199,253, 80,115, 85,155, 62, 6, 62,237,169,232,120,132, 87,199,235, 33, 33,221, + 81, 32,226,188,141, 29,204,217,126,200, 57,162,204, 66, 79, 3, 20, 54, 42, 72, +156, 61, 59, 90, 32, 50,172,172, 81,209, 17, 2,148, 91,120,150,166, 10,138,232, +166, 77,227, 3,123, 5,124, 97,233,185,246, 60,111,236, 98,248,185, 22, 76, 70, + 81,192,228,120,216, 7,205,246, 15, 38,174,114,234, 79, 41,187,167,191,147,141, + 80,179, 28, 60,164,122, 0, 77, } ; -// ../Source/Template/GB_emult_08e.c: -uint8_t GB_JITpackage_106 [1262] = { - 40,181, 47,253, 96,243, 17, 37, 39, 0,214,118,162, 40,208,178, 58, 7,202,149, - 12,193, 35,114,204,232,169,106,199, 92,164,205,145, 83, 39, 52, 96, 95,254, 61, - 51,125,219,176, 6, 62, 98, 93, 70,169, 7, 94,160,148,152, 0,147, 0,151, 0, -249, 54,215,209,167,242,252,132,214,123,168,206,247,198,252, 94, 39,119, 25,115, -237, 79,131,247, 99,185,103, 91,143,233,177,191,218, 34, 74,101,145,244,199,205, - 27,127, 9,155,122, 52,215,238, 52,146,198,181, 57,186,145, 80, 48, 68, 84, 93, -111,132,141,155,115,156, 63, 12,202, 57, 8,198, 83, 3, 22,138, 69, 98, 80,161, - 88, 62,113,210, 41, 76, 55, 38,195,171,248,208,151,237,135,118, 78,101,113, 35, -191, 59,195,134, 75,214,153,130,178, 40,236, 27,250, 38,141,195,121,241, 59,156, -199,222,213,249,235,181, 63,142, 75,129, 42, 90, 10, 88,194,245, 75, 31, 80,180, - 12,130, 62,173,201,134, 79, 38,145,100, 50, 9, 28,167, 46, 42,146,170,170,176, -107,241, 14,140,162,216,171, 61,238, 60,195,190,246,127,252,135, 7,207,172,117, -165,158,116,175,171,173, 97, 94,145,220, 58,118,159, 53,130,130, 92,233,148, 65, - 93, 36,236,185, 49, 48,147,148, 7, 1,209, 48,213,162,244, 14, 39,147,101, 50, - 62,236,170,155,157,113,165,159, 46, 44, 21,138, 69,227,249, 93, 77, 58, 56, 70, -165, 24,116, 12,125,238, 80,135, 19,225,120,128, 82,249, 65, 16,228, 89, 16,238, -252,100,186, 77, 7,191,124,164, 95, 94,160,122,252,175,135,246,151,169,165,131, -206,126,185,177,255,127, 20,125, 68, 17,166,239,106,159,241,108,240,121, 62, 30, -107,193,123, 56, 10,210,120, 83,199,244,177,113,237,110,118, 21,100,189, 25, 49, -111, 80,165,185, 90,238, 19,192,212, 30, 20,127, 58, 58, 89,188, 48, 45,131,126, - 14, 90,187,221, 83, 84, 67, 47, 35,141, 68, 18, 48,151,142,177, 13,185,249, 76, - 67, 42,145,169, 54,184,113,138,186,152, 20, 33, 27, 40, 23, 30,139, 95,158,241, -133, 79,150,102,179,118, 73,158,205, 70,226, 33,180,167,166,208,181,220, 57, 44, - 8,206, 15,127, 74,199,243,253,153,248,250,176, 91,214,191,203,211, 24,236, 16, -204, 47, 58,106,241,140,233,166,115, 11,187,161,205, 92,111,188,191,124,207, 62, - 55,222, 64,248, 19,211,127, 28,253, 2, 81, 20,210,218,117,175,107,241,104,192, - 41,122,234,186,164, 71, 64,100, 50,205, 68, 70,202,205,118,196, 83,157, 76, 3, -134, 78,233, 49,195,137,155, 43,195, 16, 65,100, 26,175,187,138, 57,189,245,139, -235, 90,156, 94,152, 71, 34, 30, 53,131,123, 37,147, 69,135,136,206, 70, 2,203, - 4,252,214, 47,233,114,219,182, 83, 82,202, 77, 74, 41,165,203, 77, 90,151, 87, -102,174, 67,218,201,109,147, 19,189,101, 73,143, 20, 69,227,239,112,113, 98, 38, -211, 42, 56,241, 65, 35, 43,151,132,119,126, 92, 56, 27, 63, 20,206, 74,183,137, -218,162,244,168,201,140, 67,234,105,145, 94,114,250,200,115, 56, 51,214,172,199, - 11, 10,129, 11,168, 49, 61, 99, 74, 70, 68, 36, 72, 10, 10,146, 66, 58,161, 12, - 49,200,121,233,212, 3,210,112,100, 16,135, 16,133, 16,101, 68, 64, 8, 34, 34, -145, 72, 32, 18,137, 68, 34, 34, 35,217, 6, 20, 8,235,228, 78, 84, 67,213,111, -105,176,231,121, 83,120,136,179,192,131,241,191, 84, 28, 75, 24,243,210, 34, 56, -120, 35,214, 8, 49,218,150,155,133, 82,185,206, 30,211,128, 87,156,245,177, 94, - 40,146,251,150,192,107,142,208,128,249,215, 41,227, 9, 27,228,183, 49, 72, 59, - 97,127,153,218, 24,142,221,116, 29,118, 38,106, 22, 2, 43,239,205,235, 94,164, - 35, 10,159,211,126,114,148,200, 64,186,253,234,124, 64, 85, 37,223, 15,168, 20, - 70,125, 44,141, 20,165,175,205, 2,113,158, 56, 20,159,254,200,202,164, 44,237, - 82, 23,224,125, 43, 43,216, 82,194, 40,214,189, 95, 87,116,189, 16, 6,245,205, -181,147,136, 36,205, 41,173, 76,211,198,124, 72, 35,103,198,168, 27,149, 43,211, - 72,189, 2,131,119,150,191,214,191,220, 3,239, 4,174,183, 40,186,193,229,226, -206,173, 78,158, 95,159,118,147, 94,134,202, 59, 6,159,205,103,126, 55,255, 41, -252, 27, 21, 15,120,127,167,251, 26, 11, 34, 23, 35, 4, 8,191,129, 0,207,158, -209, 3,249, 36,252, 24,211,188,219,217,106, 66, 91,182,129, 54,226,226,236, 94, - 6, 56,109,120, 64, 70,121, 28,176, 18, 63, 52, 78,176,208, 33, 81, 85, 37, 0, - 55,245,162,207,160,128,122, 0,219,141,230,157, 80,236,190,109,173,203, 98,218, -133,167, 51,218,209,145, 7,121,141,214,222, 92,196,141,134,234,218, 70, 58,176, - 9,141,144, 75,208, 39,179,208,239, 66,154, 90, 86,147,238, 6, 98,246, 73,203, -238,199,103,230,190, 92,124,190,175,101, 76,114,194,248,154,230,221, 89,184,108, - 65, 53,122,194, 32, 56,116, 8,241,126, 98,162, 17, 55,232,179,141,132,252,109, - 58,240,120, 24,116, 46,183,241,197, 56, 42,183, 43, 34, 14, 41, 1,130,221,190, -145, 73,109,124, 48, 18, 27,174,145,117, 46,145,155,233,237, 90,115,207,196,104, -112,236, 60, 34,108,196, 89, 6,207, 65, 48, 96, 95,192, 77, 23, 69,189,109,235, - 42,112, 51, 55,138, 15, 46, 94, 64,176, 53,236,101,222,123,136,150, 73,179,163, -188,181, 36,118,225, 89,153, 64,105,166, 31,179, 21,138,254, 66,226,164,172,238, -164,213,110, 66,191, 59,203,232,131,199, 57,212, 22,167,212,158,188, 71,194,207, - 22,108, 45,123, 88,193,132, 26,161,107,135,188, 38,146, 36,125,170,233,103, 32, -249,252, 24, 57, 65, 30,241,228, 42,247,138, 10,142,222,223,195,173, 39,144, 13, -144,182,157,243,219,164,233, 84, 48,117, 85,227, 56,168,130,122,131, 65,117,103, -137, 1, +// ../Source/Template/GB_AxB_saxpy3_fineGus_M_phase2.c: +uint8_t GB_JITpackage_91 [1109] = { + 40,181, 47,253, 96,118, 18, 93, 34, 0,182, 46,142, 31,208,222,230, 64,230,110, +101,118,245,179,101,232,203, 13, 91,178,176,101,172, 13,162, 10,144,210, 44,245, + 48,126, 24, 80, 2,136, 0,128, 0,133, 0, 3,204, 15, 36,166,249,255,127, 0, + 96, 7, 88, 36, 26,136, 30, 99,212,252, 46, 57,187,138, 53,219, 14, 59,136,198, +182, 99, 21,132, 80,101, 72,137,176,109,103,227, 46, 29,231, 81, 86, 75, 47,203, +239, 7, 71, 99,209, 64, 64, 24,139,198, 9,177,193, 15,184,218,104,230,137,239, +185, 49, 95, 90, 61,253, 96,250, 64,151,209,164,231, 70,210,248,164,166,169,115, +173,153, 0, 63,216,139,109, 52,255,135, 75,225,171, 88, 66, 20,204, 37,141,198, +116, 52,193, 16,136,107,155,182, 85, 4, 29, 57, 19, 71, 49,120,193,125,224,101, +115,133, 2,128, 80, 40, 2,162, 14, 56, 35,193,203,119,183, 52,134, 9, 6, 67, +104, 27,164,252, 98,126,242,129,173,207,152,150, 15, 45,157,156,240, 96, 12,174, +217,136,190, 18,248,220,178, 79, 62, 59,105, 54,245,183,107, 63,177,181,134,163, +209,180,154,159,241, 89,197,159, 87,196,175,100,236,150, 14,198,226,208,231,181, +178,250,155, 23,128, 4,163, 98,235,219,222,240,182, 27,246, 92, 72,251, 44,233, + 47, 57,227, 22,196, 23,137, 69,229,188,207,182,113,159,230,243,181,175,131,208, +197,250,197,113,253,171,182, 46,114, 66, 20,194,236, 32, 9,207,157,217, 54,140, +158,178, 23, 42, 23, 51,159,166, 52,185,248, 12, 70,178,173, 7,184,238,249,116, + 24, 8,239,152,155,118, 92, 27,215, 44,141, 29,215,165, 73,187,177,119, 9,171, +221,240, 61,230,206,245,188, 61, 86,105, 55,211,143,185,222,142,195,122,237,165, +189, 64, 32,191, 87, 12,152,107, 78,157, 82, 10,196,116, 66,163,211,199, 1, 89, + 2,193, 51,157,145,104, 20, 2, 87,162, 15, 52,117,196, 26,168,192, 38,239,154, +173,217,222,216, 9,139, 87, 42,215, 89,146, 14, 46, 86,242, 35,193,143, 20,239, +201,227, 58,180, 85,165,201, 4, 0, 64, 15, 32,118,104,107,147, 19,198,216, 73, + 27,131,185,147,218, 10, 3,207, 43,130,228, 5,191, 65,105, 36,250, 48, 38,177, +134,182,103,235,241, 73,219, 52,233,173,237, 79, 96, 52,126,222, 51, 42,226,113, +110,217,207,182,183,219,101, 29,111,239, 17, 28, 63, 28,196,193, 35, 39, 81, 7, +212,148, 80, 39,210,135,233, 57,118,146,220, 13,111, 56,233,133,134, 63,215,119, +166,161, 89,251, 4, 19, 6,154,211,151, 33,161,190, 59,123,204,247,101, 73, 27, +151,157,113,156,252,171, 56, 32,171,240,103,178,130, 80,161,198,121,188,139,138, + 66,128,220,168,161,165, 82, 76, 68, 68, 70, 65,146,164, 80,104, 12, 64,132, 16, + 33,179,177, 14,242, 88, 34,163,105,196,104,196, 16,102, 4, 68, 96, 4,132, 8, +138, 72,100,161,132, 34,129,144,109, 3,166, 56, 73, 74,122,221, 68, 74,140, 78, + 19,232,113,174,147,142,234, 88,159,228, 65,193, 41, 91,175, 27,239,107, 96,190, +120,243,114,189, 55,113,160,242,251, 32,177,236, 22,231, 51,208,189,159,237,152, + 43,200, 55,209,181,181, 60, 14,166, 82, 21, 71, 7, 7,225, 9, 44, 98, 8, 88, + 66, 14, 69, 94,196,204, 82,178,225,176,236,228,242,155,229,151,110,142,208,115, + 5,117,250, 55, 94,228,120, 17,135, 32, 19,129,247, 63,182, 73, 96, 79,176, 36, + 91, 20,161, 70, 54,219,204,158,202,161, 80,137, 51, 74, 36, 3, 81,198,241,160, +107,133, 90, 89, 69,168,116, 70,247,118, 73, 27,234, 74,165,174, 52, 38,166, 11, + 95,186,151,231, 49, 52,195, 14,154, 9,233, 30,238, 1,154, 92,232,192,205, 43, +142, 96,120,169,168, 84, 43, 97,153,134,149,105,150,246, 56, 18, 2, 74, 6, 41, +104, 67, 1,126, 58, 64, 80, 60,180, 23, 96,135,254,192,218,235,217, 45, 71,143, +206,159,206,240,143,243,120, 6,181, 9,210, 99,205,184,226, 26, 13,106,216,108, +139, 3, 38, 27, 61,101,127,112, 0,140, 23,139,113,173,223,144,132,160, 97,235, +150, 26,160, 98,194, 58,220, 17,238, 69,126, 39,183,139,192,139,206, 26,251,190, +180, 46,108,218,160, 14, 97,205,202,206,231, 73,190,101,179, 20, 23, 33,194, 59, +142, 69,141,108,208, 32,171, 49,240, 53,183, 70, 21,164,114,160, 13,127,131, 17, + 97, 79, 33, 99, 6,215,110,165,198, 44, 41, 81,169,124,193,210, 65,167,138, 31, + 39, 25,142, 3,184,215, 34,143, 42,243, 2, 51,176,162, 56,200,154,218,248,217, + 11,208, 33, 70, 15, 50,164,233,137, 1, 24,214,132,241,144,234, 97,140,161, 48, + 98,251,139, 43, 6,185,207, 11, 64,139,191,187,118,242, 80, 45,156,127, 53,117, + 27,184,193,212,141, 51,131, 88, 75, 0,211,105,210,137,203,166, 82, 83, 96,174, +223, 86,117, 68, 71, 59, 2, 4,117, 3, 12, 73,252, 10,248,150, 74,158, 54,211, +103,145,229,160, 59, 85,148,236, 24,201,120, 72,197,206, 17,102, 16, 52,128, 76, +118, 70,231, 20, 19, 75, 78, 1, 26, 52,157,159,153, 6, 51,195, 57,198,125, 46, +137,129,151,218,175,170,186,187,119, } ; -// ../Source/Template/GB_emult_08fgh.c: -uint8_t GB_JITpackage_107 [1042] = { - 40,181, 47,253, 96,138, 23, 69, 32, 0,118,106,128, 40,192,208,108, 14,250, 15, -102,178, 22, 0, 46,115,129, 27,201,246,137, 6,220, 83, 23, 35,141, 23, 77, 70, -115,173,179,168, 11,132, 43, 96,154, 4,129, 52,201, 65,123, 0,112, 0,117, 0, - 34,253,110,107, 87, 84,153, 88, 36,181,243, 80,145,143, 25,107,115,125,193,186, -105, 36,213,130,213,211, 27, 73,132,130,195,100,171, 22, 99,181,149,115,123,187, - 79,115,238,121,124, 57, 96,169, 88, 36, 6, 2, 21,203, 39,143,116,105,219,130, - 42,124,194,207,232,110,248,117,231, 18,227,205,236, 68, 58,102, 48, 88,189, 29, -194,162,177,138, 25, 29,165,218,145,138,246,182, 95, 29,172,221,197, 39,100,194, - 84,194, 21,128, 80, 29,211,125,184, 75, 37,187, 94,232,171,217,204,156, 66,137, - 36, 20, 74,151,162,235,114, 30,164,221,253,184,189,243,132,190, 79, 32,137,145, - 88, 59,228,150,129, 39, 92, 3, 4, 81,233, 28, 88, 61,139, 67, 14, 58,245, 59, -210,107,179, 75,252,205, 8, 10, 46,216,115, 30,124, 58, 7, 71,102, 59, 99,233, - 29,142,133, 97,255,116, 57,230,147,254,207, 67, 38,231,191, 2, 8, 17,170,143, -181,187, 93,185,203,143,225, 49, 19, 39, 93, 42, 91,216,221,122,253,255,163,104, - 35,210, 94, 71,250,249, 13,164,231,127,226,121, 33,142, 18,145,136,231, 2,167, -168, 91, 24, 47, 56,100,151, 74,214,217, 60, 92, 86,192,228, 83,127,245, 13, 41, - 89,188,108,190,108,233, 11, 21,135, 45, 44,147,224, 48,131,102,110, 96, 40,228, - 4, 46,225, 17,236,119,115, 0,147,248,133,158,172,194,210,107,170, 26,109,191, - 75,140, 14,198, 85,230,143,199,167, 75,188,212, 46,233, 87, 54,103,230,212, 65, -253,221, 11, 67,173, 31,161, 14,146, 45, 93,191,245, 67, 49,197,137,247, 60,245, -126, 36,178,129, 53,155,226, 17, 62,197, 31, 4, 81,212, 49,185, 91,154, 60,185, -155,197,249, 27,130,191, 33,237,246,218,198,168,231,207,238,201,143,135,244,234, -117,119,193,133, 7,169,199,190,126,125, 37, 35,173, 96,123,245,163,246, 55, 20, -106,220,205, 57, 39, 51, 51,243,252, 80, 45,178, 68, 81, 71, 36, 82,137, 92, 7, - 92,246,101, 85, 73,119,104,176, 48, 13,132, 53,167, 38,125,134, 24,124,217,177, - 50,160,166,210,217,226,240,166,178, 20, 26, 48, 13, 87, 55,144, 58, 69, 85, 85, -149, 88,173, 87, 15, 30,128,223,168, 81, 65, 67, 36, 34, 34, 34, 82,144,164, 32, - 25, 14,112, 68,100,136,140,230, 1,130,152, 76,200, 50, 8,134, 80, 12,103,132, - 72,160,140, 49, 2,137, 17, 17, 9, 70,100, 68,210,169,198, 37,176,133,203, 3, -168,192, 70,245,101,183,237,240, 3, 98,166,207,222,232,215, 11,207,213, 91,121, -122, 27,175,220, 29, 56,153,116,130,201,250,195, 55,199, 81,214, 60, 57,145,177, - 24, 39, 64,210,134, 45,252,228,213, 51,129,148, 76, 38,140,235, 91,205, 71, 37, - 68, 82,155, 96, 25,182,244, 75, 49, 96,173, 92, 48,165,169,218,224, 58, 48,184, - 35,234, 47,146, 33,176,146,218, 9, 4,209, 99,182,129, 50, 29, 33,141,115, 54, - 59, 55,240, 77,213, 65, 99,228, 42,184, 42, 60,251,175, 55,220,210,196,138, 70, -213, 75,104, 45,116, 47,147,205, 7,213,107, 28,180,191,228,187,171, 25,161,210, - 0,239,251, 1,128, 39, 8, 49,196,146, 69,195,184,133,207,109,147,127,166,165, -128,133,213, 13,140, 56,223, 72, 41, 10, 44,195, 73,211,207, 86, 59,207,211,203, - 18, 38, 35, 28, 84, 24, 57,125, 89, 75,108,103,146,113,172,122,129, 4,230, 61, -212,149, 34,150,119, 75,223,222,122,215,122,167,178,104, 0, 57, 96,127,254, 41, - 25,111, 31,144,217,197,214, 84,133,218,187,230, 6, 88,178,199, 21,127, 90,216, -226, 49, 52,173,147, 27,176,253,122,223,151, 13,168,189, 70, 20,106, 3, 48,162, - 79, 18,135,129, 10, 54,111, 37,204, 17,251, 81, 87, 9,214, 38, 16, 60,246,197, -222,206,186,153,150, 95, 52,133,132, 68,122,234, 49,224,112,115, 56,180, 33, 37, -231, 84,192, 70, 83,164, 80, 77, 68, 34, 80,119,177, 72, 69,165, 76,104, 81,141, -160, 89,160,196,176,178, 3,117,233,103,190, 71, 23,210,184,246,206, 17, 81,235, - 66, 64, 59, 18, 25, 18, 3, 80,214, 31,177,117, 4,160,155,169,214,198,214, 68, -202,230, 83,131,228, 59, 58,201,126,230,182,198,145,251, 50,236, 61,185,213,211, - 17, 40, 11,170, 22,173,157, 82,120, 8,159, 11,222, 60, 59, 39, 60,241, 95, 33, - 2,155,209,202,147,166,120, 59,208, 98,137,177, 44,211, 60,212,243,131,174,134, - 17,112,161,244, 71,106, 10, 28, 68, 66,118,246, 82, 64, 32, 35,199,167, 98,217, -211, 59,154, 68,230, 77,243,254,193, 4,175, 84,145,162,168, 48, 79, 92, 74,133, -211, 9, +// ../Source/Template/GB_AxB_saxpy3_fineGus_notM_phase2.c: +uint8_t GB_JITpackage_92 [1115] = { + 40,181, 47,253, 96, 59, 14,141, 34, 0,150,109,137, 32,208, 92,117, 24, 45,246, +229,188,175,207, 65,236,108,250, 50, 22,173,229, 53,197,169, 75,106, 72,239, 69, +174,102,240,131, 89, 2,132, 0,123, 0,128, 0,255,255, 3, 0, 54, 64,151,240, + 16,125,170,200,151,248, 47,237,106,214,108,187,204, 32, 26,219, 86, 85, 13,130, + 84,241, 36,202,142,165,141,251,115,156,207, 85,253, 28, 69,197,115, 12,175,243, + 16,143, 69,231,189,160, 34,156,195, 53, 70, 86,158, 16, 79, 59,243,117,213,208, + 57,144,168,153,156, 47, 50,189,124,141, 83,242, 5,234, 92, 97, 32,192, 57,123, +113,140,204, 63, 55, 49,136,161,100, 19,136, 80,254,121,141,201,243, 53,110,242, +181, 35,134, 93,218, 86,115,100,208, 94, 51, 18,143,147,153, 56, 78, 46, 87, 40, + 0, 8,133, 34,163,216, 50,239, 91,159,117,105,235,115,175,192,147, 44, 21, 78, +102,100,181,198,201, 24,178, 92,254,219,110, 73, 21,126,225,112, 40,109,143,145, + 79, 94, 7, 79,168,151, 93,123,208,194, 60,134,215,174,154,159,113, 90,205,167, +215,196,175, 45,213, 69, 25, 92,167,215,174,234,111, 94, 44, 66, 91,223,246,150, +183,221,169,211, 74,178, 83,148,252,191, 47, 46, 65,188, 75,116, 97,122,159,109, +227, 78, 95,207,215,190, 18, 54, 55,235,187,227,122, 84, 61,221,196, 20, 88,220, + 71,160,156,107, 97, 50, 7,109,203, 23,236,223,215,149, 93,118, 91, 6,225,157, +201,140, 95,222, 51,183,235,184, 54,134,205, 26,125,185,174,234,141,166, 96,183, +124,159,185,115, 77,101, 87, 85,215,205,228,207, 92,101, 47,235,181,215,245, 91, + 66,153,207,104,164,100, 54,157,144,136, 25, 77,131,193, 43,153, 14,167,179, 25, + 75, 28,113, 4,101,204, 42, 48,159, 71, 72,182,213,240,240, 89, 35,218,212,218, +170, 98, 4,124, 78,201,140,199,240,226,235,121,108, 56,178,173, 97, 10,124,195, +108,205,246,170, 94,232, 30,134,175,217, 22, 73,104,137,173, 0,192,205,194, 58, +239,233,125, 23,154,199,185, 87, 55,239,211,182,178,219,104, 61,101,103,156,227, + 32, 33,203, 71, 20,242,136, 20,240, 12,219, 71,187,229, 45,193,133, 89, 75,219, +130, 67, 37, 80,210, 92,240,204, 70, 87,182,226,139, 21,143,136,150,102,219, 41, + 50, 93,225,180,143,162,100, 99,180, 1,183, 60, 3, 95,200, 63, 9, 51,154,192, +123, 15,111, 43,152, 1, 48,188, 89, 17, 45,159,242, 99,124,222,226,152,182,178, +245,188,229,185,178, 91,152,116,253, 91,120,199,221,169,155,231, 26,134,146,177, +203, 2,128,239,168,161, 37, 83, 72, 68, 68, 68, 68,146, 36, 41, 12, 7, 48,132, + 16, 82,204,200, 60, 2,129, 44, 5, 35, 17, 81,134, 17, 47, 32, 34, 22, 72, 48, +129, 36,201, 76, 78, 65,118,161, 17,104,207,108,143,217,150,101,244, 69,195, 81, +116,121,228,213, 28, 96,102,198,157, 97,188,215, 41, 85,219, 92,221,140,195, 15, +123,118,160, 70,124, 61, 76, 80, 44, 40,247, 36, 86,211,167,212,134, 86, 56,227, + 58,233,156, 53, 24,199,199, 18, 18,113, 21,171, 52, 88, 84,243,118,126,211,220, +101, 96, 7,208, 12,136,250,116,235, 29,118, 98,184,245,166, 65,211,180, 1, 5, + 0, 66, 15,175,136, 40,174,170,176, 81, 34,105,251,145, 42,252,172,230, 2,171, + 12, 25,106,217, 96,237, 11,107, 20, 9,125, 51,237,207,114,241,114, 42,219,195, +164, 40, 28,156,194,124, 7,239,188,216,121,211,173, 32, 34,134,249,126,228,116, +116, 31,194, 97,155, 57,215, 18,133,213,200, 10,223,144, 54,168,200, 16, 11, 30, + 20,245,240,225, 96,221, 0,184, 88,168,205, 48,201,198, 41,236,232,122,127, 55, + 6, 73, 51, 2, 46,244,207, 71,185, 5,221, 97, 41,124, 24, 77,201,109, 13, 22, + 74, 7,145,114, 37,121,180, 15, 42, 75, 65, 68,127,105,158, 71,123,225, 92, 81, +216,204,183, 3,240, 43, 11,244, 60,109,165, 5,128,148,200,176,162, 84,175,122, + 32,161, 52,229, 21, 26, 20,247,146, 22, 26, 40,132, 15,162, 97,108, 47,238,208, +111,190,228,145,115, 12,222,177, 0, 69,176, 25, 57,252,216, 93,114,184, 64, 17, +221,141,249,206,249, 5,227, 44,139,185, 65, 15,162,147, 5, 51, 92,112,236,122, + 66, 79, 6, 20, 40, 61,177,250,142,193,227,134, 78,231,110, 71,205,244, 59,150, + 65, 6,240,115,245,216, 90, 3, 20, 88, 8, 15,140,207, 43,198, 32,193,251,236, +208, 68,156,174, 95,100,142, 71,133,140,225, 2,228, 55,115, 16, 88,112, 92, 96, +106, 25,229, 2,206,116,192, 5,115, 90, 40, 78,245, 34,169, 95,112, 57, 52, 51, + 23, 0,141, 62,218,176,240,208,142,142,248,186,201,194, 6,124,189, 63, 81, 38, + 49,233,128, 39, 94,221,158,235, 88, 51, 70,170,101,193, 23,132, 9,229,114, 84, + 2,251,204,245,144, 84, 38, 80,152, 85,203, 73, 43, 91,159, 1, 51,216,244, 44, +175, 86,109,244,161,101,243, 35, 60,247,158,236, 75,140,126,164,254,178, 24, 30, +108,108,204,119, 58,147, 0,169, 38,181,195,146, 51, 92, 14,154,209,159,153,198, +157,195,156, 99, 55, 27, 24, 4,247,100, 96, 82, 61,220, 49, } ; -// ../Source/Template/GB_emult_bitmap_5.c: -uint8_t GB_JITpackage_108 [637] = { - 40,181, 47,253, 96,134, 6,157, 19, 0,134, 32,100, 39,224,206,234, 24,248, 48, -200, 37,132,178, 11, 64, 89,156,115,100,135,226,231,150, 41, 46,131,209,231, 98, -230,235, 86, 12,130,177, 72, 25,204, 48, 76,243,112, 90, 0, 85, 0, 88, 0,159, - 92,117,213, 92,111, 14,194,106,222,117,242,145, 0,242,128, 52, 14, 6, 30,144, - 71, 25,124,212,246, 67, 39,159,228, 41,184,253,121,150,243,184,145,150,201, 97, -154, 41, 84,213,153,226, 77,221,214,179,129,166,125,171,174, 25,127,127,247,242, -120,109,111, 93, 50, 5, 38,249,234,214,169, 8,134,169,183,109, 7,219,157,199, -171,216,164,220,225,128, 26, 14, 71, 93,237, 58,154, 41, 62,246,190, 83, 15,130, -102,204,144, 92,179,251,251,218, 63,138,156,242,224,244,121,129,233,242,213, 45, - 42,162,125,220,174,151,255, 63, 4, 89, 64,151,127,234, 58,207,246,252,189,102, -250,121,237,210,203,127,130, 30, 19,164, 81,185,140, 98,121, 42, 87,187,217,125, -171, 86,105, 84,125,107,102, 45, 13,134, 73,102,210,106,240, 18,155,147, 2,191, - 33, 28, 95,242,234,143,177,226,102,240, 9,152, 10,167,194,209,200, 12, 54, 41, -152,132,166,251, 81,187, 21, 63,238, 76,183,198,223, 88,129,129,133, 36, 29, 65, -242,199, 43,168, 59,250,185, 25, 37,193,251,217,157,229, 67, 14,143, 50,187,233, -214,176,118, 30,173,114,153,126,116, 49, 11,106,141,214,204,109,204,243,220,231, -111,123, 16,116, 81, 73,135, 46, 36,105,224,213, 31,112,195, 59,214,102,181, 91, - 25,142, 91,187,207, 1,142, 45,248, 12,230,218, 84, 22,174, 57, 59,240,243,211, - 22,147,143,248,113, 66, 62,114, 46, 74,132,165,240,242,210, 72,139,117, 77, 56, - 22,133,203,133, 97, 54,149,173,106,119,179,140,121, 73,190,122, 20, 17, 45,188, -245, 8,199,206,132,159, 15, 8,120,132, 31, 59, 50, 98,160,161,153, 84, 70, 68, -102, 68, 36, 70, 73,161, 49, 80,132, 76,217,221, 6, 73,177, 25, 92, 31,239,100, - 80,243, 48,104, 87, 73,184,248,202,139,212,185, 81,186, 46,169, 5,128,211,120, -123, 31,176,112, 72, 17, 96,208,178,103, 84,239, 70,222, 30, 27, 56,122, 81,111, - 3,174, 29, 17, 77, 60,129, 50,179, 14, 55,213,204,183, 50, 11,110,224, 59,120, - 22, 66, 53, 95,180, 86,150, 79,244,184, 37, 28,136,227,206,233,171, 41,183,255, -166,167, 89,165, 91,158, 41,153,235,147,198, 65,248,192,138,220,168, 25, 10, 51, - 71,174,174, 13,160,201,238, 34, 45, 80,215,107,248,129, 4,147, 83, 88,169,226, - 54, 98,225, 2,162, 43, 56,198, 75, 2, 18, 72,135,134,171,214,158,122,175,115, -113,139,116, 46,131, 61, 26, 8, 96, 28,219, 24,185,172,107,129, 53, 6,188, 94, - 16, 40, 2,159,144,218, 5,169, 9, 20,226,154, 60,216,238,160,113,221,164,201, -252,204,164, 78, 97, 93,125, 98, 20,192, 18,205,197, 94,209,139, 7, +// ../Source/Template/GB_AxB_saxpy3_fineGus_phase2.c: +uint8_t GB_JITpackage_93 [1010] = { + 40,181, 47,253, 96,202, 12, 69, 31, 0,134,171,130, 32,208, 28,231, 24,149,213, +127,107,213, 29, 47, 59, 22, 38,102, 40,204, 86,201, 34,231,130, 9, 99,185, 69, +174,102,240,131, 89, 2,125, 0,116, 0,122, 0, 0, 5,162, 59, 52, 25, 82,243, +123,228,236, 58,214,108, 91,220, 28, 26,219, 14, 43,231, 96,186,128, 16, 98,199, +206,198, 29, 58,206, 36,171,134, 94,150,223, 57, 70,167,232, 14,143,133,162, 59, + 33, 28,156,195, 53, 70, 47, 71,124,167,145,249,190,234,232,156,232,227, 84, 72, +147,158,153, 72,227,147,154,162,206, 21, 38, 2,156,179, 23,199,104,254, 57,241, +146,185, 95, 63, 87, 41,124,158,229,145,174, 49, 37, 77, 16,195, 50,109,235, 8, + 50,104,230,140, 98,176, 50,251,192, 74,230,137, 4,224,144, 72, 4,174,207, 5, +126,174,241,222,245, 89,139,182, 62, 55,235,255, 37, 55, 97, 46,158, 13,216,114, +129, 21,112,132,201, 28, 96,187,165, 33, 62,193, 96, 16,109,131,147, 87,204, 75, + 62, 88, 29, 83,242,245,178,107, 47,177,176,142, 65, 19,105,159, 37,237,250, 85, +243, 51, 62,235,248,243,142,183,221,248,245, 99, 61,231, 10,111,249,155, 31, 57, +227,148,195, 21, 8,197,105,101, 73,107,174,182, 30,215,171,106,234,163,134,208, +226, 34, 3,203, 57, 23,166,249,255,127, 0,192, 22,103,182,189,162,167,247,241, +242, 97, 66,184, 54,134, 61, 95,251, 89,151,230,235,134,239,114, 5,187,226,155, +204,157,235, 41,123, 88, 95, 55,211,147,185,202,142,197,122,237,125,253,158,225, + 21, 51,218,132, 74,160,101,211,249,140, 62, 13,136, 18, 8,126,217,124, 60,159, + 14,120,242,124,160,104, 51,214,192, 8,201,182,112,239,153, 67,234,212,193, 87, + 93,245,155, 72,158, 79,154, 49,232,253, 51,159,193,134, 35,219,234,173, 36,111, +152,173,217,222,240, 4,197, 61,239, 53,235,162,131,143, 53, 0,192,205,194, 18, + 44, 90,142,157,173,199, 39,109,211,164,178,182,239,126,222, 43,188,241,248,108, + 43,187, 93, 86, 82,246, 27,227, 28, 55, 14, 14, 25, 97, 66,164, 17,232,179,220, + 24,247,108, 17, 92,199, 42,218,190,221,198, 53,236,204, 8,218, 88,197,155,197, +110,251,235,249, 17,150,107,187, 18, 45, 61, 71,232, 60,111, 28, 60,219,198,125, +154,199,245,187,128, 72,103,147,249,190, 44, 27,151,157,239,205, 36, 39,228,223, +164, 1, 81, 98,103, 42,154,176,187,194, 38,195,110,164, 5,128,205,168,145, 41, + 82,104,100, 70, 68, 36, 5, 73, 82,104, 12, 64,132,144,169, 42,235, 6,226,184, + 20,201,116, 8,130,132, 16, 49, 32,193,148, 68,150, 36, 42, 40, 35, 41,213, 1, +217,181, 19,214,153,109, 5,118, 82,142,199,250,178,144, 69, 63,121,147,243,147, + 67, 48,231,187,113, 67,175,114, 76, 65,147,183,117,101, 51, 99, 84,141, 22,116, + 33, 94, 77, 13,218,158, 66,159,243, 94,137, 6, 6,253, 37,185,234,236, 17,226, +157, 57,187,166,178,235, 68,253, 87,104, 45, 76, 32,122,216,234,211, 5,246, 14, + 42, 57, 1,113,193,229, 62, 56,162,154,130, 14,127,171,195,186,131,184,187, 24, +210, 42, 35, 29,155,159, 77,200, 52, 56,150, 18, 88,107, 42,249, 6,107, 85, 97, +122,177,173,178, 56, 32,171,106,184, 7,163,138, 85, 76,144, 38,235, 60,236, 40, + 2,161,171,200, 74, 72,172, 58,187,179, 80, 63,238,205, 69, 90,198,143,223,144, +205, 61, 85,250, 31,151, 74, 55,122,166,228,137,196,193,197,178,170,163, 7,114, + 10,124, 84,179,222, 45,193,100,126, 73, 27, 74,169,148,125,198,111,208,160,116, + 96,104,193, 20,172, 71,225,161, 11, 69,163,146, 75,172,173,191,132, 64,103, 34, + 8,139, 96,149,178,180,157, 88,195, 98, 5,250, 25, 33,240, 85,232, 34,199,140, + 6,209, 45,160,183, 40,152, 63,157,216, 85,184, 93,172,232,142,151,167,100, 24, +100, 47,235, 78,172, 52,166,121,241, 62,185,236, 8,197, 69,188,244,129,240, 72, +174, 58,199, 37,212,164,238,150,128, 36,196,171,255, 2, 86, 21,142,138, 11, 68, +176,206,130, 76,107,243,224,169, 51,133,154,136,166, 13, 69,168,248,247,103, 12, +168, 27,140,234, 29,131, 57,240,240, 94, 25,242,162,124,213,244,196,184,225, 40, +189, 88,177,224, 57,160, 52,123, 1, 77,187, 98, 44,122,252, 17,102,179,131,199, +102, 56, 50,237,243, 8, 50, 48,142,121, 92,101,141,125, 55, 2,173,246,184,245, + 14, 25, 5,123,170, 78, 85,176, 41,241,233, 17,231,228,112,147, 65,153,139,175, + 97,138, 64, 38, 71,154, 62,104, 86,255,204,196, 28,117,215, 69,189, 31,113,168, + 58, 73, 53, 51,161,175,234, 1,136, 1, } ; -// ../Source/Template/GB_emult_bitmap_6.c: -uint8_t GB_JITpackage_109 [1043] = { - 40,181, 47,253, 96, 93, 11, 77, 32, 0,246,237,138, 40,192, 82,217, 28,170,114, -140,166,159,109,232,233, 21, 26,172,152,188, 17, 67, 88,219,119,154, 96, 98,207, -168,173, 90,104,215,205,159,126, 87, 81,168,174, 2, 16,128, 0,124, 0,125, 0, -225, 47, 97,122, 11,170, 72,150, 73,127,220, 20,169, 99,110, 83,143,102,219,157, -102,210,216, 54, 71, 55, 19, 9, 6,142,212,245,231, 54,238,206,113,254, 46,104, -231,181, 82,151, 6,150,138,101,130, 80, 80,177, 60,194, 69,151,152,126, 38,195, - 37,234, 29, 95, 14, 65,170, 93,102,212,166,250,196,121, 51,152,172, 51, 29, 51, - 72,170,117,244, 40,125,231,171,119,118,158,186,108,124,167,136,143, 93,222,186, -172, 8, 36,106, 90,192, 0, 20,172, 99, 46,155, 56,193, 76, 61, 91,174, 35,216, - 91,149, 57,133, 2, 77, 40,148,153,218,121,121, 59,231, 41, 90,250,108, 27,247, - 21, 49,197,222,183,191,141,177, 61,239,168, 54,188,157, 92, 69,125,122, 4, 67, -210,200,234, 92,156,137,134,131,128, 60,114,101, 29,138,147,109,153,102,203,192, - 51,225,145,205, 6,194,225, 19,192,177,232, 90,231,202, 50, 74,206,115,227,205, -216,218,254,242,101, 14,173,167,249,165,174,179,109,176,171, 8,134,220, 31,185, - 28, 3, 70,127, 69, 32, 81,183, 0, 46, 49,151, 46,252,114, 99,255,127, 8,250, -128, 32,233,182,216,241, 81, 48, 61,246,255, 6, 56,234, 58,118,253,113,216,138, - 54,112,180,191,161,247,218,181,206, 59,197,127,130, 23,243,138, 1, 29,205,183, - 16, 41, 78, 61,218,133,160,245, 75,150,214,138,109, 72, 51,197, 97,127,154, 84, - 48, 89,222, 99,157,159, 47,211,141, 75,143, 37,187,206,184, 19,188,237,246, 28, -207, 15,119,179,239,135,179,149, 23,150,114,180,246,134, 29,146,150, 77,187,178, -173,115,105, 26,101,101, 28, 10,211, 52,149,148, 86,244,174,225,183,177,109, 88, -149, 9,179,229,176, 20,222,246,120,152, 95,231,168,209,207,163, 39, 16, 20, 50, - 73, 48,157,222,184, 54, 20, 34,145, 20,220,163,157,237, 0,138,237,250,185,192, - 69, 43, 58,231,225,202, 52, 17, 87, 85,121, 66, 76, 55,241,146,131,186,212,174, - 76, 2,157, 87,135,218, 88, 23,131,182,129,192,174,237,193,235,206,122, 52,160, -186,228,175,162, 87, 31, 24,120, 68,188,244, 80,209,169,173,170, 50, 33,190,156, -162,123, 10, 23,167, 95, 74, 15,203, 69,119,120,208,104, 26, 45, 95,118,182,197, -203,124,197,231,237,224,242, 33,145, 92, 33,225,149, 79, 81, 4, 91, 14, 35,137, -184, 91,241, 8, 71,243,204, 1,128,213,168,161,157, 68, 37, 52, 35, 41, 51,201, -178, 6, 48,132, 24, 99,204,202, 3, 18,137, 80, 75,212, 12, 81,136, 64,129, 72, - 48, 1, 5, 34, 65,148, 36,101,165,212, 1, 73,219, 29,167,214, 75, 11, 44, 75, -136, 14, 94, 49, 31,123,192,154, 71, 68,123, 58, 34, 38,183, 31, 62,234, 67,139, - 68,220, 15,148,227,214,228,167, 69, 33, 61, 93,208, 21, 73, 97,190,195,196,150, -177,143, 73,213,190,234,248,226, 60,233, 24, 88,175,233,160,169, 31,167, 85,156, -135,112, 89, 4, 25, 7, 38,103, 56, 51, 19, 23,138,104, 13, 24, 64,231,218, 89, - 98,200, 58, 13, 22, 12, 26, 5,117,159, 72,146,125, 53, 0,172,254, 54,188,109, -242,233,168,175,140,117,212,125, 40,169,140,239,113, 23,175,218, 21,229, 52,195, -139, 28,179,199, 22, 62, 82, 90, 51, 41,125, 90, 62,249, 74,149,156,113, 40,207, -198,175,147,199,180, 11, 19,196,250, 66,237,142, 53, 98,102,194, 47, 45, 20, 47, -180, 0, 8,181, 61, 9,152, 87,194,252,213,163, 70,172,226, 19,148, 29, 1,179, -118,103,210,170,177, 59, 38, 80,188,254,145,198,155,216,108, 22,190,108, 47, 99, -147, 82, 93,214,164,130,214, 0, 24,118,205,181, 95,125,241,112,119, 76,130,205, -205,122,240,237,166, 40, 53, 98, 97, 35,152,137,209, 80, 29,176, 17,115, 98,221, -125,183, 33, 71, 3, 85, 87, 50,176,148,188, 41,233,178,217, 22,154,209,118, 38, - 45, 46, 59,154,146,191,228,133,189, 70,238,230,218,102, 50, 72, 90,224,185,144, -219, 9,186,202, 27,222,159,175, 58, 88,230,132, 13, 35,163, 88,139,255,230,226, -136,126, 85, 87,120, 96,201,105,242, 40, 0,137,101,133,186, 62,158,222, 50,176, - 13, 26,176, 1,243,192, 48,108, 10,152,102, 44,198, 69, 28,188,161, 17, 59, 44, - 36,151, 2, 33,207,130,150,180, 67, 94, 11, 35, 39,214, 69, 50, 48, 91, 51, 21, -236,145, 33,177,225, 19,189, 54,122,238, 51,255,152, 40, 64,184,251, 67,137, 65, -251,188, 91, 66,167, 49,117,168,219, 46, 61,254,204,189,101,250,152,164,255,104, - 30,229,155,102,165, 6,211, 45, 63,157, 84, 81,124,196, 68,131,253,223, 13,164, - 52, 12,154, +// ../Source/Template/GB_AxB_saxpy3_fineHash_M_phase2.c: +uint8_t GB_JITpackage_94 [1179] = { + 40,181, 47,253, 96, 29, 18,141, 36, 0,118,111,145, 40,192,240, 58, 7,126, 7, +120,190,119,253,151,152, 41,204,181,109,223,123,149,203,120,227, 77, 47,113,209, +191,133, 69,178, 63, 28, 56,100,219, 20, 69,166,232, 64,135, 0,128, 0,134, 0, +223,182, 11, 69, 81, 89,166,204,171,207,206,123,239,255,239, 40, 57, 40,146, 43, +194, 30, 55, 69,237,150,145,155,246,173,220,121, 34,108, 43,115,141, 16,113,208, + 44, 72, 58,182, 24,217,242,231,246,122, 19,253, 57, 8,106,175, 42, 23,229,138, + 16, 88,148,235, 20, 55,189,178,109, 49, 53,151,104, 39,121, 55,172,232,208, 43, +144,134,128,241,196, 57,114, 44,108,199, 41,130,248,246, 8,228,120,245, 87,152, +135,150, 21,108,151,204, 45, 23,219,233,137,114,147,158,157, 29,174, 77,101,133, + 36, 98, 76, 43, 49, 24,154,196,112, 62,153, 56, 34,147, 73,224,229,137, 99,167, + 6,172,233, 27, 78,130,246,145, 20,114,147,161, 13,167,127, 17,214, 99, 87,133, +212, 77, 30,193,121,113, 69,223, 95, 59, 54,253, 24,210,119,197,162,208,126, 21, +222,130,200, 41,146,138, 68, 34,169,174,140, 6,103,223,174,221,199,232,216, 87, +102,209,111, 88, 47,177,178,237, 36,209, 45, 11,210, 97,157,232,119,139, 35,142, + 11,171,142, 63, 46, 4,235,232, 22,250,234,167, 60,203,238, 81,180,242,166,219, +160, 4,196, 43, 91, 52,135,118, 30,222,218,239,120,228,123, 39,103,223,213,121, +123,219, 1, 1,223,132, 52,205, 2,195, 3, 37,141,183,242,217,187, 23,205,113, + 2,203, 52,218,230, 35, 51,158, 77, 33,164, 97,167, 94,137, 65, 81,237,247,233, + 79, 81, 29,144,214,161,174,233,162,174, 95, 46,147,236,216, 78, 81,132,107,136, +221, 58,228,109,245,175, 20, 24,184,181, 39,143, 63,222,147,246,236,247,143,201, +215, 8, 12, 91, 41,226, 6, 7, 30,238, 0, 50, 17,118, 30,213,190, 53,228, 78, +101,212,111, 78,159,246, 73,237,163,225,191, 99,112, 87,219, 97,163, 73,240, 72, +138, 79, 98, 94,122,165, 32,144,174,178,188, 28, 35, 78,219,237, 12, 14,199,134, +131,114, 87, 71, 0,148,199,141,147,173, 36,141,179,182, 72,142, 33,149, 95, 40, +181,233,163,144,160,101, 64,191, 29, 39,139,226,252,197, 22,100,207,167,161,246, + 5,215,211,171,178, 50,122, 75,189, 8, 43, 15, 96,176,189,139,111, 84, 94, 85, + 31,133, 80,130, 71,110, 62, 12,161, 5, 45, 51,121,108, 28,123,229,153, 70,201, + 66, 2,193,201,117, 69,120,231,109,123, 55,236,234, 40,164,239, 87, 60, 26, 47, +101, 81,215, 11, 10, 40, 58,115,140,162,208,141,142,239,236,196,209, 55,121, 20, + 97,167,174, 67, 71,222,103, 16,140, 78, 41,155, 30, 16,128,253,168, 97,177, 82, +106, 68, 68,102, 20, 36, 5, 73,161, 49, 64,134,136,204, 89,209, 3, 18, 89,162, + 3,129, 16,113,132, 9, 17, 33, 2, 35, 36, 2, 38, 16, 9, 68,136,162, 9, 36, +136,116, 14,149,184, 67,152, 9,116,238,153, 68, 29, 77,130,232,166, 44,193, 12, + 57,231,107,207,252, 95,154, 51,220, 51,115,120,150,164,163,211, 92,137, 29, 16, + 54,137,133,199,178,216,162,239,115, 26,173,199,185, 10,120, 36, 93, 40, 9,148, +195, 56,151,138, 59, 9, 77,109,111,171, 80,213,206, 65,153, 12,153, 65,148, 40, + 14, 91, 68,119, 11, 27, 79, 32,173, 25, 51,178,139, 30,229,234, 23,160,201,141, + 79, 95, 52,146, 85, 23,186, 56,222, 63,100, 33,140, 75,168, 70,126,108,199,131, +134, 71,222,212,140,106, 38,160,235,155, 41,133,237,104, 25,118,161,144,151,120, +193, 1,194,142,201,126, 43,101, 84,129, 91, 81,231,211,156,184,211,140, 79, 37, +246,210,186, 69, 5,210,106, 70, 91, 27, 63,100, 35,177,182, 31,204, 80, 14, 76, +115, 46,221,175, 98, 17,128, 25, 40,151,177,192,145, 67,213,211,218,166, 74,139, + 3,209,118,172,170,101,184,219, 86,207,212, 9, 63,233,255,125, 83,231,159, 39, +250,113, 21,127,234, 96, 95,234, 59,201,118,138,220,106,140, 64,121,228,226, 22, + 14,204,232,150, 97,155,115, 43, 16,190, 70, 80, 53,115,190,129,200, 58, 10, 57, +148,140,244,239,216,239,100,156, 79, 74,123, 79,191,194,154,249, 33,239, 27,254, + 69,147,193,152,196,227,251, 5, 37,125, 29, 11, 54,194, 65,224,240, 70,215, 80, +100,131, 56,246,139, 96,106, 1, 56,181,201,149,111, 19, 88,162, 22,230, 6, 12, +210,237,211,123,178,233, 19,149, 61,153,255,113,211, 3, 46, 11,159,105,128, 19, + 86,204,160, 64,101,195, 74, 27,204,215, 85,222, 87, 32,203,251, 64,215, 32, 29, +179, 79,176, 87, 12,212, 8,175,245, 89, 79,246,244, 97, 34, 17,136, 80,103,254, +197, 94,178,208,178,139, 49,147, 90, 14, 89,137, 31,146,178,240,110,150,121,178, +214,167, 95,132, 10,248,254,195,253,219, 43, 82, 65, 64, 40, 34, 28,195,215,255, +234,248,127, 93,109,156,166, 64,155, 65,110,234,157,188,229,200,120,195, 58,170, + 10,178,175,168,127,138,158, 16,115,185, 18, 61, 93, 12, 12,249,218,102, 82, 39, +140, 74, 71, 50,108,192,122,139,188, 16,156,163, 87,190,224, 44,203,141,234,219, +121,245, 56,251,165,244, 18,254,226,236, 96, 81,220,163, 61,105, 43, 34,227,198, + 47,124, 87,244, 22, 49,144,136,231,100,200,206, 68,202,103,115, 91, 88, 31, 52, +255,207, 76,116, 21, 62,156,114,238,170, 17,126,200,193,185,106,229,138, 1, } ; -// ../Source/Template/GB_emult_bitmap_7.c: -uint8_t GB_JITpackage_110 [908] = { - 40,181, 47,253, 96, 91, 13, 21, 28, 0, 70, 41,127, 40,192,208,110, 49,250,125, - 72, 82,180, 35,144,249,194, 37, 28,166, 28,157, 36,161,211, 23,185,144, 45,172, -162, 20,124,149,129, 11, 56,184,174,162, 48, 20, 5, 32,117, 0,114, 0,116, 0, -101,125,101, 94,252,193, 59,223, 80, 19,185, 58, 95, 16,111, 34, 13,152,142, 36, -188, 33,243,234,235,185,222,160, 9,236,185, 40,214, 79, 4,148, 9, 37, 82, 25, -152, 80, 46,129,244,147,198, 33,139,185,164,254, 2,180,201, 17,119,159,184,186, -193, 64,165, 53, 51,213,213,166, 45,185,187,241,201, 69,162,120,126,168,107,218, - 99, 15,179,253, 84, 63,109,183,158,221,194, 30,146,122, 93, 54,135, 37,123, 85, -241, 74, 59,110,252,121, 91, 60,199,235, 97,153, 83, 84, 20,161,168, 23,123,188, - 24, 88, 91,208, 87, 10, 71, 56,189, 10,109, 55,122,137, 90,104, 29,135,206,219, -172,127,151,200,246,235,223,246, 13, 98,115,235,107, 62,254,237, 29,236,140,191, -117, 38, 65,235,210,102,179,144,112, 13,141, 75, 27,125,167,110,157, 6,243, 56, -141,135,101,232, 59,143,198,113, 21,224,151, 42,175, 70,250, 99,127, 72, 94,127, -253,178, 89,158,189,170,132, 36,104,223,237,255, 31, 69, 25, 81, 36,185, 73,254, - 18,141,159, 69, 19, 9, 37,114, 65,160, 13,159,201,162,227,106, 38, 32,112,233, -187, 78,129,199,139, 36,249, 73, 20, 19,166,219,247,157,176, 88,191,254,105,194, -200, 32,189, 2, 71,211,105, 58, 79,237,236, 79, 97,190,229,167,109,150, 5, 6, - 25, 16,200, 45,183, 62,249, 69,181,104, 67, 25,172, 32, 52,147,120,131,230, 35, -136, 75, 32,222,118,107,122,197, 51,188, 32, 80, 95,202, 94, 70,117,104,175, 9, -218,222,120,230,155,228,231,226, 21, 69,107,218,242,229, 72,222,142, 19,214, 44, - 29, 33,222,191, 68,110, 25, 81,180,113, 65, 62,217,100,190,198,215,175, 22,111, -180, 1,129, 12,252,122, 68,249,240, 47,251,224, 48, 95, 7,149,175, 24,122,192, -203,140,190,195,209, 56, 13,131,134, 97, 31,169,177, 87,235,167, 78,203, 88,216, -210, 87,205, 83, 55,153,134,233, 54, 11,155,230,113, 62, 55,204, 31,236,192, 14, -169,191,158, 29,163,199, 42,125, 13,239, 62,127,191,103, 11,102, 39,245,167,123, -154,251, 26, 31,143,212,227, 18,191,250,124,197,193,112,186, 63,168, 91, 0, 18, - 24,128,175,160, 97,173, 83, 76, 72, 36,140, 20, 20,164,160,144,198, 96, 68,134, -202,206, 3, 73, 98, 27, 40, 53,220,226, 12, 27,228, 77,150,187,207,178,148,175, - 61,113, 32, 52, 32, 63, 41,236, 62,145, 29,181,227,228,100,220,112,237, 79,225, -222,143, 2,128,146,174, 69,162, 71,102,205, 78,177,191,213,204,240,228, 0,195, -103, 13,232,122,183, 10,213,228,192,163, 1, 75,208,227, 10, 68, 8,100,140,126, -147,113, 6,237, 62,193,232,150,155,119,180, 88,182, 61, 55,220, 37, 0, 47, 90, -116,240,108,110,236, 39, 51, 3, 11,249, 59, 51, 77, 12,115, 32, 25, 60,125, 81, -144,129,251,142, 21,243, 83, 23, 84,129,253, 43, 91, 80,107, 51, 62, 94, 6, 24, -152, 51, 76, 63,215, 25, 3,212, 10,120, 90, 0, 32, 13, 56,253, 14,109,202, 90, - 73, 62,225,235, 86, 71, 9, 7,129,225,206,104, 20, 77, 35,190,217, 62,195, 75, -105,229,121, 98,169,172,185,231, 52, 22,122,180,132, 5,106, 1, 60, 58,128, 21, -121,208, 14, 19,107,142, 95,190,181, 48,216,176, 18,237,170,216, 1,220,129, 2, -205, 41,156,172,213,172,137, 29,180,180,185,205,189, 97, 5, 98, 87,248,238,158, -214, 75,131,224, 14,110,160, 27, 3,233, 26, 27,144,109, 12,185,133,183,180,223, -106,176, 30, 70,174, 3, 30, 78, 49, 5,203,186, 69,139,235,250, 36,117,231,220, -195,153, 82,230, 62, 83, 6, 55,234, 2,215,187,220,104,134,155,214,121, 48, 8, -171,237,166,229,206,228,197, 13,129, 91,176, 70,111, 33,140,125, 86, 45,133,238, -161,128,109,131,222, 95, 0, 69,161, 2,204,246,198, 5,139,221, 20, 46, 73,199, -241,158,182,158,105, 53,102,230, 62,155, 38,230,103,166,187,142, 87,112,206,168, -124,110,234,138,189,162, 28, 15, +// ../Source/Template/GB_AxB_saxpy3_fineHash_notM_phase2.c: +uint8_t GB_JITpackage_95 [1173] = { + 40,181, 47,253, 96,175, 14, 93, 36, 0,198,239,143, 40,208,208, 58, 7,122, 69, + 25,194, 71, 56, 26,100,102,217,140,243, 89,236,219, 81, 7, 51,161,164,239,218, +177,212,243,166,179, 24,213, 31, 92,225, 17, 31,224, 18,136, 0,125, 0,135, 0, +211, 69,180, 36,203,227,103,229,189,247,255,143,162,141, 72, 66, 80, 65,216,219, +100,152,221,170,220, 93,223,201,156, 2,132,237,228,173, 23, 32, 19,151, 7, 2, +142, 51, 42, 91,214,220, 94,175,211,154,131, 96,246, 56,169, 36, 21,228,128,146, + 84,159, 54,233,209,118,134,188,156, 32,123,200,187, 20,163, 55,143, 16,217, 66, +197, 11,101, 77,176,216, 86, 25, 66,240,109, 15, 68,244,248,199,202, 64,134, 33, + 48, 0, 80, 44,183, 42,182,210, 11, 53,134, 75,167,230, 89,153,225,217,157, 54, + 9,133, 32,105,181, 10, 40,211, 42, 9,143, 68, 34, 72, 36, 18,243,211,227,193, + 77,214, 40,175,132,191, 46,113,222,255,208,249,171,154,132, 56,201, 21,148, 21, + 99,244,253,181,181,187, 87,218,125, 50,219,247, 68,210,245, 35,189, 8,144, 83, +183, 38, 83,103,182,119, 67, 83, 74, 26, 13,202,190, 61, 65,153,170,210,217,233, +150, 44, 20,214, 33,206, 31, 41,234,209, 29,122,182,141, 78, 15,199,223, 70,193, +233,185,213, 61,254,146, 99,216,189,169,139,158,116, 27,180,168,248,228,140, 78, +232, 50,167,119,246, 57,174,124,175,220,236,185, 41, 95, 57, 12,121, 17,123,219, + 15, 19, 22, 97, 54,217,229, 33,130,162,235,128, 80,189,147,207,222, 61, 71,214, + 14,118,201, 48, 26,205,162,192,224,176,201, 58,143, 65,206,236,247,187,105,106, +233, 25,136, 44, 67, 81,183, 18, 99,170,164,235,213, 31,159,170, 83, 40,210, 49, +141, 99, 43, 57, 16,158,244, 58,245,199,155,234,129, 99,191, 11, 17, 12, 45,101, +253,117, 70,185,126,171,188, 86,195,158,133,191, 90,129,193,157,141,113,174,179, +103,246,157,116,251,164, 49, 63, 41,125,217,167,101, 95, 71,255, 29,196, 28,119, +174, 79, 96, 46, 13, 10,218,197,167, 85,180, 13, 38, 33,218,120, 81,212,193, 30, + 80,102,116, 13, 79,237, 43,141,125,239,246,231,151,206, 95, 15,231,182, 74, 14, + 67,249, 74, 65, 35, 49,251, 31,158,151,147,164,138, 84,148, 96,221,173,202,243, + 67, 49,236, 2,210, 25,108,239,243,142, 73,236, 50, 81,227,176,193,104, 34, 54, + 15,153,229,215, 39,199, 56, 54,172, 16, 8,202,173, 49,232,149,183,237, 93,202, +181, 69,117,180, 36,216, 68,113,112, 92, 8, 8,216,175, 41,234,154,155, 28, 16, +117,112,159,228,202,185,199, 30,160,204,175, 79,247, 81,250, 68, 70,123,244, 13, +190,146, 11, 61,143,236,169, 55,129, 3,168, 97, 45,100,102,130, 25, 17, 73,146, +130, 74,134, 3,113, 12, 49,136,106,105,153, 7,226,136, 60,198,179, 16,177,136, + 53, 68, 64, 2,145,145, 25, 17, 82, 82, 82, 80, 80,144, 98,198, 25,214,153,145, + 77,240,144, 60,194,210, 3,240, 16,180, 57, 19,139, 79,106,112, 31, 22,164, 92, +207,126,223, 70, 61, 82,196,133, 59,243,223,223, 29, 30, 71, 22,239, 98,134,229, +109,139,222,163,139, 70, 82, 22,164, 99,190,144,145,120, 86, 38, 59, 91, 34,168, +126, 34,214,187,145,139, 5,113,179,160, 44, 62,239, 74,107, 5, 57, 39,169, 44, +218,178,220, 22, 79,138,187,223,168,252,233,107,141,207, 79,162,240, 47,122,151, +169,222,132,148,185,131, 74, 92, 63, 52, 55, 87, 0, 90,214, 2,161, 45,127,204, +199,179,113, 53,243, 76, 40,215,105, 93, 73, 78,159,124, 48,254, 65,210,145, 95, +165, 30, 97, 36,252, 86,202, 57, 38,240, 36,108,232,231,117,172, 68,209,131,108, + 78, 25,101,206, 11, 77,200, 66, 83, 84, 28,232, 53,187,170,170,152,149,138,232, +181, 51, 53,136,133, 37, 38, 35,114,235,108,239,202, 1,174,138,122, 21, 35, 27, +107, 64,144, 59, 13,102,173, 58, 85, 71, 64, 2, 76, 11,222, 32,187,144, 83, 12, +106, 74, 3, 4, 72,141, 64, 71, 69,195,244,190, 50,130, 4, 62,246,149,177, 97, + 86,147, 89,193, 12, 4, 4, 20,123,204,146,186,114, 73,225, 29,176,196,255,155, +154, 55, 14, 40, 42, 23,131,135,161,193,151,164,217, 10, 15, 58,179, 96, 64,200, +231,228, 91,163,152, 6,218, 42, 24,113,248, 75, 30,224,116,189,241,225,103, 72, +188, 28,253,154, 25,210,107, 51,104, 23, 80,104, 53,204, 90,144,201,162, 9, 64, +214,220, 96, 52, 0, 9,158,132, 86,227, 30,241,113,189, 8, 50, 4, 2,213,100, +154,216, 58, 82,197, 59,205, 13,220,105,193, 64, 35, 51, 98,161, 2,148, 66, 26, +106,214, 97,189, 98,226,154,254, 88,118, 2,174,217,202, 72, 12,165,148, 67, 95, +116,213, 37, 14, 13, 81, 13,155, 29,162,180,105, 38, 7,105,198, 60,238,113,139, +107, 89,245,173,165,144, 30,136,224, 50,119,231, 12,219,177,154,144,210,208,243, + 69, 25, 93,159, 61,115,116,245,246, 93,136, 69,108, 77, 3,123, 73, 85, 51, 97, + 50,169,168,127, 67, 2,171,190,202, 61,124,219, 0, 37,250, 87, 79,247,140,198, + 2,220,236,177, 11,102,231,166, 57, 39, 95,223,195,134, 53, 93,121, 45,191,235, +128,136, 58, 88,160,180,253, 91,208,141, 78,158,209,126,247,220, 60,102, 17,104, + 9,229, 82,102,252, 52,167, 8, 69,114, 63, 64,131,102,244, 51, 19, 94,166, 60, +142, 41,125,232, 45, 98, 55,132,148,234,129,117, 2, } ; -// ../Source/Template/GB_emult_bitmap_template.c: -uint8_t GB_JITpackage_111 [876] = { - 40,181, 47,253, 96, 14, 11, 21, 27, 0,198,165,116, 40,208,176,108, 14,250,141, - 27,255, 96,191,196,151,148,134, 76, 61,146,138, 94,179,165, 62, 67,124, 96, 90, -239,230, 72,128,176, 28,199, 62,224,139,135, 34,247, 23,107, 0, 98, 0,106, 0, -212, 67,179,109,238, 2,105,108,123,163, 24, 8, 69,101, 51,113,253, 1, 27, 55, -231, 56,119, 22,148,243, 90,227, 37,131,137,100, 2, 81, 40,144, 76,254,216,162, - 75,152,126,180,202,167,248,140, 46, 95,143, 98,151,174,136,145,221,167,129, 15, -148,198,160,246, 93,157,105,120, 65,159, 0,156,213,170, 6,139, 97, 94,146, 4, - 83,124,245,121, 74,103,173,126, 94,231,236,211,188, 76, 59, 89,174,161,215,153, -124,120, 36, 2, 65, 34,145,231,224,248, 35, 70,223, 68, 11,187,200,236,186, 68, -199, 56,150,235,138,148,237,250, 57, 72,144,146,122,167, 1, 18, 95,189, 19,159, - 55, 10,102,220, 32,193,159,179,133,108,233, 51,182,119,147,226,165,249,220, 22, -255,127, 8,218,128, 32,238,118,185,189,119,151,111,239, 49,103,251,107,238,214, - 63,213, 26,122, 14,222,191, 65,237, 50,254, 19,166,159,144,100,154, 64,186,219, -180, 47,158, 2,118,222,221,178, 11,172, 89,115,206, 95, 74, 41,169, 99, 60, 34, - 12,203,166, 2,235,242,181,207, 97,231,210,187,115,171,109,151, 7,239,227, 61, -247,109,239,192, 64, 4, 48, 49,204,132,101,201,102,116,174,118,151,105, 88, 91, -253,215,176, 91,244, 10,198, 2,145,201,230,156, 30,202, 89, 41,169,122,111,167, -113,109, 41, 53,241, 98,154,197,183,165, 24, 75,134, 99,145,200,176, 75,132,167, - 57, 15, 21,144,146,250, 3,131,153,112, 8, 16,212, 1, 81, 91,199,173,232,143, -204,171,234, 86,164, 80,171,102,157, 18,104,156, 0,246,151,209, 69, 48, 7,194, -114,113,226,230,178,106,119, 4,108, 19, 66,192,155, 11,235,102, 35, 82,182,141, - 27,252,172, 75,148, 38,179, 33,121,245,207, 4,222,172,129,253,221,123,225,182, -105,221,229, 55, 14,171,214, 27,196,102,250,139,143,105,151,159,113,189,107, 42, - 26,140, 2,222,106, 98,115,130,131, 93,225,198,210,204, 76,226,138,214, 23,128, -172,168, 49, 73,135, 42, 32, 25, 73, 74, 82, 40, 53, 6, 96, 36, 16, 42, 50,154, - 7,242,120, 40, 88,113, 32,168,140, 51,198, 40, 50,161, 4, 18,140, 72, 40,146, -149,106, 27,148,136,162, 97,195, 78, 39,107,248,220, 60, 30,144, 44,226,135, 71, - 2,198,111,225, 24,150, 87,161,112,120, 54, 56,209,106,179,121, 48,193,205,240, -234,230,228, 22, 23, 32,218,105,242,194, 56,185,126,221, 21,160,226,103,132,133, -196,237, 35,105,167, 35, 82,205,246, 44,136, 63, 22,143,122,151, 19,142, 27,101, - 86, 21,215, 69,132, 7,145, 71,142,132,104,227,214,170, 13,144, 7,206,176,232, -129,201,116,141, 73, 60,234, 12, 4, 92, 10, 40, 56, 50,166,120, 17, 69,198,246, -134, 42,145, 97, 79,104,182,187, 48,105, 2,104,198,135,144, 24,238, 44,210,203, -176,108,228, 17, 88,198,135,143,249, 74, 4,185,143, 20, 6, 62,193,221,146,138, -160,201, 62, 58,217,197, 34,163,100,116,244,222,240, 63,124, 5, 34, 75,174,120, - 4, 99,156, 93, 36,197,125, 77,112,150, 11, 27,218, 49, 49,240,231,221,168, 13, -225, 6,243, 41, 14,217, 92,132,239,140,142,145,160,103,179, 12,104, 20, 48,122, -251,132, 32, 18,141, 35, 86, 13, 99,183, 73, 54, 30,145,129,150, 8, 41,167,240, - 32,161,108, 0, 93,108, 67, 55, 3,135, 9,255, 15, 6,142,160,122,228, 20, 34, -212,118,131,216,143,173,163,115,212,142, 39, 25,248, 95, 94, 76,195, 96,199, 56, - 8,198, 48,212, 83, 96,160,135, 38,182,229, 35, 74, 89,221, 94,247,121,200,180, -238,201, 45,130,170, 93, 50, 98, 93,113,192,243,216,210,247, 28,225,171,101,156, -146, 81, 54,118, 57, 42, 40, 76,193, 82, 52,114,129, 86,110,154,163,159,153,192, - 64,167,254,113,182, 91,154, 56,202,107,172,229,148,238,128, 19, +// ../Source/Template/GB_AxB_saxpy3_fineHash_phase2.c: +uint8_t GB_JITpackage_96 [1562] = { + 40,181, 47,253, 96, 83, 25,133, 48, 0, 86,249,168, 40,208,210,170, 3,106, 50, + 90,237, 98,183,121,139,167,215,173, 49, 23,187, 35,253, 14, 17,200,241,107,107, +136, 2, 26, 47,208,185,226, 15,174,240, 20,131,248, 5,160, 0,146, 0,159, 0, + 28,213, 73,167, 61,249,205,242,171,191,176, 56,183,249, 92, 17, 47, 76, 25,148, + 37,101, 78,121, 53,246,187,255, 63, 4,210, 1,161, 76, 42,201,118, 90,252,176, + 91,224, 50,199, 61,119, 99,144,108,157,171,177,131,132, 34, 33, 98,178,173, 8, +220,186,157,215,238, 48,184,115, 41,177, 83,150,138, 82, 73, 12, 42,148,234,147, + 38,157,170, 44,138, 9,159, 96, 31,117, 77, 67,252, 57,229,193, 28, 48,221, 23, +193, 5,107, 43, 24, 63,207, 54,135, 30,200,169,159,154, 86,139,242,147, 76, 62, +231, 93,179,198, 65, 42, 29, 35,128, 93,153, 91,213,214,216,125, 89, 87,227,102, + 39,115,153,101,244,109,196,154, 97, 54,176, 12,179,240,129, 1,136,100, 96, 32, + 43,106, 15,164, 26,167,219,227, 71,114,210,175, 70, 89,190, 29,187,118, 61, 41, + 87,112, 69, 93, 75, 86, 98, 76,174,175,212, 44, 20,183,165,218,115,235,130, 31, +103,219, 26,190,233,220,104,215, 27,250,100,242,183,222, 78,251, 72,202, 56, 41, +247, 71, 63,163,118,206,189, 26, 67,223,238, 3, 58, 95,131,206, 95, 42,203,104, +139, 11,202, 88,109,136,251, 93, 65,230, 14, 82,238,115,183,158,207,241, 41,218, + 8,146, 83, 38,150,201,100,194,193, 50,114,243,228, 87,254,198,230,159,240, 8, +244, 83, 85, 37,194,252,133,154, 70,183, 25,191,173,167, 81, 57,195, 91,220,169, +159,242,235,122, 55, 5,151, 79,181, 25,148, 93, 97,227,193, 54, 87, 83, 89, 63, +234, 47,180,219, 12, 41,183, 33,120,249, 86, 25, 57,174,187,164, 20,180, 18, 20, +123,242,249, 35,176,231,114,149,116,121,245,200,167,234, 7, 7,159, 42, 17,150, +164, 95, 25, 11,252,186,131, 4,135,219,110,109,155,114,252,143, 61,222, 32, 25, +156, 53,120, 48, 78,214,144,209,108, 50,220,110, 28, 3,176,132,177,199,216,193, +229, 13,198,174,217,117,236,123,103, 4, 5, 61,249, 2, 93,190,225,228,158, 84, +251,196, 49,189,232, 97, 94,134,121, 28,189,247,141,221, 22,131, 66,147,240,192, +144,101,120, 25, 38,251,104, 22, 62, 69, 34,219,220,236,224,152,239,151, 75,150, + 69,153,128,180,181, 16,200,199,134, 50,138, 14, 82, 6,191,211,249, 14, 65,175, + 96,220,239,139,175,166,198,206, 79, 20, 72,117,144,158,114,113,183,192,157, 26, + 52, 64,250, 74,238, 52,110, 57, 69,117, 32, 62,154,142,196, 39, 2,203, 92, 60, + 58, 44,141, 67,180, 35,221,216,170, 48,101, 81,174, 74,117, 4,132,138,138, 4, + 44,195,192,129,248, 96, 29,255, 52,109, 91, 35, 72,178,147, 94, 94,121,228, 21, +110, 25,134, 32, 12,157,137,139,244, 79, 71,227,241, 96,205,151,114,134,145,202, +223,218, 42,183,127, 69, 54, 54, 83, 95,243,193, 18, 34, 36, 50,138, 77,179,181, + 29,183, 47, 60,197, 77, 31, 94, 92, 16,244,201,195,131, 50, 93, 18, 40,130, 24, +215,185,119, 80, 76,105, 58, 1,129,119,168,129,177, 66, 70,102, 70, 68, 36, 73, + 82, 40, 12, 7, 81, 8, 66, 16, 36, 33,120,230, 1,178,160, 40, 13, 98, 24, 7, + 49, 66, 4,144, 16, 74, 68, 68, 36,176, 64, 36,152, 36, 65, 11, 10,154, 52, 6, + 89, 96,199, 76, 46, 11,103,152, 40,199,142,238,214, 81,255,196, 61,229, 50,151, + 18,202,148, 67, 51,101,160, 37,102, 70, 85,150, 37,168,229, 38,127, 22,242, 43, +104,173, 72, 9,250,150, 43, 63,199,180, 2, 60, 8,149, 72,207, 1, 45,158,231, +203, 35,234,193,237, 73, 6,156,249, 45, 57,156,204,127,161, 25,186,240, 21,144, +136, 54,148, 69, 85, 37,178, 66,212, 66,143, 43, 16, 91, 14,222, 93,178,211,144, +144,170,161, 21,187,236,242, 10,242,245,145,167, 45,210, 51, 41, 6, 49,254,197, +213,226,171,191,147,101,100, 4,235, 33,169,220,245, 29,177, 6,216, 55,160, 40, + 42,240,157, 20,200,163,216, 13,219, 10,114, 25,148, 7, 13, 25, 54,111,226, 70, +141,168,253,105, 29, 21,221, 94,234,204,159, 1,102, 53, 38,146,175,164,232, 95, + 26,124, 18,184,165, 3,202,131, 36, 74,161, 10, 98,142,125,158, 3, 52, 53,227, +176,163,185, 33,173,177,102,180,135, 91, 82,110,148, 98, 70,113, 51,159, 22,213, +139,149,249, 84, 26, 80,221,189,176,111,213,187, 72,192, 22, 58,150,195,190, 32, +160,149, 12,136, 36, 13,124,232,129, 98,136,106, 60,161, 23,107, 56, 40,202, 65, +241,190,131,130,188,128,127, 98, 98,251,166,161,230, 65,158, 53,252,236,235, 90, +157, 20,134,251, 1,236, 30, 78, 18,217, 42, 30, 43, 73, 43,100,165,211,221, 46, + 26,170,114, 3, 50, 76,189, 73,145, 94,141, 81,103,178,251, 53,104,113, 49, 50, + 21, 67,216,137,172,147,249,193,241,142,172,219,180,248, 78,127, 13,225,103,163, + 80,251, 86,135, 75, 3,176,121, 94, 50, 46,126,228,144,142,199, 82,219, 18, 14, + 13,179, 85, 75,254,122, 59, 61, 56,220,124,195, 53, 50,107, 84, 8,209,161,212, +140, 55, 32, 26,154, 78, 65, 43,136, 44, 28,113,235, 10, 10, 76,151,248, 66, 35, +167,116, 69,191,176,163, 96,229,245, 30,152, 35,207,106, 89, 44,146,175,252,229, + 39, 34,240,217, 81, 60,144,217,146, 26, 11, 71,139,101,171, 40, 41,150,217,108, +179,105, 89,129,116,191,143, 27,140,233,223,186,101,106,176,142, 11,179,112,165, +225,240, 62, 72,185, 16,158, 31,231, 77,248, 85,250,145,244,236,158,211, 7, 62, +175,221, 27, 70, 57, 45,176, 38,170,150,172, 81,163, 38,232,120,212,182, 75, 18, +194,192,108,110,112, 45, 59, 14,188,168,255,251,139,212,110,202,164, 92,196,121, +201,229, 33,254,152, 82,148,127,171, 39,104,145,240,145,131, 88, 5,227, 12, 8, + 24, 86,245,247,178,211,216,151, 11, 32, 2, 20,176, 81, 43,132, 47,224,236, 99, + 10,156, 2,220,196, 32,132, 6, 43, 8,242, 56, 4,252, 83, 95,155,139,243,218, +197, 18, 4,239, 2,249,142, 9,250,187, 89,215,106, 66,141,165,237, 0,136,240, +147,239, 20, 64,207, 86,133,108, 96,156, 64, 68,173,220,162,163,243, 96,118,101, + 79,122,173,182,192,236,160,217,133,145, 14,108, 42,223,131, 61,220,217, 17,129, +204, 52,109,105,104,144,140,132, 81,148,176, 94, 5, 41,148,209,203,177,219, 27, +221,182, 76,169, 37,111, 45,141,136, 3, 54,127, 63, 90, 89,129,201, 34,117,191, +252, 82,193, 54, 40, 84, 86, 65,111, 91, 57,145,222,135, 0,240,194, 40,193,151, +224,132,108,208,122, 25,134,173, 48,113,167,205, 65,234,227, 75,146,173,161,218, + 95,229,149,243,141, 80,194, 21, 68,160, 35,168,122,115,145, 68,166, 7, 29, 16, +185, 10, 5, 37,214, 34,122,132,192,205, 43, 85,155,144,173,161, 95,244, 32, 27, +232,184, 50,198,116, 30,187,120,218, 26, 92,123, 15, 96,211, 87,199, 99,173, 31, + 80, 72,240,209, 15,230, 64,147, 21,243, 9,160, 68,132, 61, 79,157, 3,201, 57, + 92, 14,154,162,159,153,206, 37, 69,119,146,173,210, 36,130,230,135,164, 40,117, + 0, 77, } ; -// ../Source/Template/GB_ewise_fulla_template.c: -uint8_t GB_JITpackage_112 [740] = { - 40,181, 47,253, 96,215, 10,213, 22, 0,118, 33,103, 33,208, 90,231, 64, 7, 52, -163, 10,250, 51, 53,247, 75, 24,152,144,194,255,190,145,200, 53,113,227,167,252, -131, 43, 60,226, 3, 92, 2, 92, 0, 90, 0, 93, 0, 54,243,178,164,223, 20,137, - 67,130,208, 64, 28, 18,215,196,236, 27,182,169, 42,121,129,158, 69,230,147,201, -106,190,129,180,210,145,103,189, 19, 71,227, 91, 79,176,179, 69,129, 88, 99,179, -199,247,173,199, 45,218,155,171,233,138,151,101,125,223, 38, 85,239, 6,244,220, -224,222, 29,157,107,121,154, 58,135,181, 44, 81,162,176,177, 85,117,216, 77,110, - 48, 96, 4,131, 33, 33,213,168,225, 27,229, 56, 47,251,237, 83,174, 54,116,150, -247,209,172,223,186,111,244,249,255, 49,204,133, 97, 5, 92,182,121,187,116,209, -222, 54,123,116,150, 89,127, 79,162,143,141, 81,207, 39,147,212,252,133, 19,182, -199,246,171,147, 5, 59, 20, 18,132, 38,197,122,210, 59,110, 91,145,205, 20,130, -104, 43,132,142, 4, 83, 24, 59,117, 27,119,230, 56,147,163,185,102,156,117,137, - 26,155, 20,241, 53, 51,195, 99,237, 75,230,208,132, 50,203, 46,203,122,235,249, -211,116,122, 53,141,234, 61, 3,148,134,216,134, 52,187,200, 62,126,118, 20,144, - 93,147,249, 64,144,106, 94,102,114,127, 14, 23,140,108,218,103,108,158,196,255, -113,173,101,138,217,193, 10,221, 88, 60,207,235,186,238,241, 85,132, 64,175,101, -231,190,162,130,127, 24,143, 38, 24,246, 10,133,186, 80, 23, 10, 97,216,107,192, - 33,188, 15,164,112, 62,241,113,239, 48,224, 14, 27,162,149, 29,115,177, 80,186, - 42,226,247,173,165,216, 35,162,133,137,236,104, 82,218,160,243,115,238,141,203, - 42,250,118,126, 91,209,111,154,111,242,184, 70,178, 53,123,247,101,104,197,251, - 36, 18,203,197,251,192, 16,164,132,152,139,200,222, 53, 24, 64,126,254,241,195, -185,159,153, 38,218,128,139,160,161, 65, 67, 34,129,136, 72,146, 36,217, 24, 3, - 80,132, 16, 33,187,213, 1,153, 17, 57,165, 29, 14,181,147, 61,112, 9, 22,129, - 8,101, 39,237,255,227,148, 87, 38,245,135,138,170,136,148,181,232,158, 86, 81, -202, 22,213,160,104, 56,102,235, 75, 26,182,100,104,185, 7,176, 12, 60,225,190, -133,172, 13,243,164,183,152,212, 35,133, 80,129, 18,130,193, 2, 69,209, 26,100, -144,151, 70,134, 3,160,212, 12,177,102,142,152, 4, 28, 11,208, 96,150,209, 47, -135,157,129,142,236, 98,172, 20,161, 28,106,165, 0,120, 40, 25,140, 1,133,160, -126,219,117, 73,242,224,131, 14, 71,250, 3,193,232, 53,174, 5,252,101, 24, 51, - 30, 47,149, 1,152,106,217, 90,195,178, 66, 17, 39,106, 3,217,190, 53, 1,211, - 25, 0, 74,218,199,132, 27, 62,243,158,236, 64,194,112,252,153, 67,234,239, 50, - 45,246, 36,143,255, 23, 50,179,176,249, 28,113, 15,128, 66, 63,219,160,192,112, - 9,248, 0,217, 12, 84, 82,144, 3,193,228,109,102,247, 77,176, 33,135,108,156, -145, 96, 69, 30, 57,100,148, 68,116, 59,171,209, 34,130,224, 1, 49, 0, 44, 58, -200, 9,224,111, 0, 64, 15,247, 52,130,165, 86, 33,248,240,180, 75,171, 50, 67, -126, 5, 10, 60, 72, 37, 59,148, 38,134,234,175,108,120, 15, 35, 64,156, 15,227, -105, 50, 17,207,224,212, 24, 38, 51,121, 51,177,214,194, 49, 67, 75, 81,160, 7, - -} ; +// ../Source/Template/GB_AxB_saxpy3_template.c: +uint8_t GB_JITpackage_97 [3860] = { + 40,181, 47,253, 96,225, 92, 85,120, 0,202,105,156, 19, 46,192,172,140,115,247, +168,184, 9,182,237,182, 3,212,250,210, 78, 67,163,109,194,130, 50, 64,199, 17, +248, 25, 56, 10, 51, 33, 11, 0,192, 71,182,125,226,193,117, 21, 5,219, 54,112, + 1, 47, 1, 48, 1, 32, 1, 92,153, 44,210, 43, 15, 26,165, 31,182, 26, 79, 27, + 27,151, 42,141, 20, 15,122, 50, 22, 78,110,183, 63,156, 11,133, 5,230,151, 14, +231, 81,116, 98,220,116, 50,209, 66,109, 71,203,121,246,196, 69,195,185, 52,136, +158, 12, 3,140, 47,172, 3, 88, 62,221,159, 15,130, 44,179, 88, 44, 14,205,201, + 90,200,202,178,107, 39,181,166,137,137, 10,205, 43, 14,233, 30,206,165,211,121, + 15,231, 32, 32,213, 43,231,170, 95,171,235,181, 92, 7,252, 70, 2, 6,238,236, +138,178,156,122,167,224, 47, 95,252,255, 23, 22, 40,112,118,249, 2,144,217,110, +118, 0,206, 87,167, 89,179, 3, 44, 44, 68,106,102,111,251,213,185,114,150, 65, + 89,230, 70,247,162,174, 87,110,191,166,252,197,236,218, 27,219,143,166,196,110, +249,118,220, 70,173, 91,145,133,134,200, 4,194,153, 37,185,119, 74,229,198,250, + 78,190, 50, 16,182,147,173,158,128, 60,136,160,136, 92, 28,170,108,153,115,123, +179,139,230, 92,211,222, 41,135, 73,195, 4,114, 64,210, 48,249,100, 73,167,108, +135,100,196, 35,239,163,236,210,173, 61,167, 58,111,194,146,113,178, 74, 80,216, + 86,201,117,248,118,215, 89,184,104,118,121,251,101,135,238,168, 20, 2, 38,168, + 78, 89, 6,188, 74,117, 10, 95,169,113, 27,223,232, 48,226, 68,210, 70,139,232, + 69,139,196, 25, 24, 22, 32, 12, 12, 1, 24,166,187,144, 91,107,241, 87, 82, 13, +139,200,108, 52, 27, 24, 39, 14,213,130,216,169,152,160,192, 84,152, 74, 66,147, +225,100, 96,230, 81, 68, 11,205, 99, 16,161,217, 84,151, 78,228,108, 22, 68, 79, +244, 92, 36,168,204, 34,221, 18, 49, 24,146, 63,226,173, 22,110,170, 76,106, 67, +242,218, 78, 34,178,237,178,184, 73,182, 56, 20,145, 0,225,158,206, 43, 7,129, + 42,189, 92, 87,203,242,245,199, 99, 62,129, 52, 73, 40, 57, 71,151,196, 90,119, +113,102,217, 79, 83,178,151,228,154,221,168,177,166,201, 95,110, 23,178,114, 87, + 71,172,213, 27,189, 82,132,177,220,105, 50, 52, 77, 24, 20, 69,170,164,107,204, +121,202,130,200,236,211,235,244,102,151,210,202, 94, 80,165, 25,231,173,155,167, + 76,152,171, 88, 44, 22,139,229,189,247, 60,158, 71,225,128, 16, 66, 8,239,100, +110,131, 16, 66,184, 65, 64,182,223,200, 26,109, 35, 46, 19, 22, 88, 1, 33,132, + 16, 66, 8,167,137,162,160,139, 32, 43,161,244, 73,242, 68, 8, 33,132, 16, 66, + 56,189, 65,231,193,184,209, 56, 30,160,130,228,144,111,125,133, 68,162,110, 11, + 10,210,177, 6,155, 89,153,137,250,156, 69,124,147,227, 2, 4,124,122, 79,146, +172, 42,217,198, 81,149,179, 82, 44,130,232,197,218,103,235, 48,222,123,239,189, +247,222,123,239, 61,249,222,123,239,189,135,245, 53, 3,167, 64,179,203, 40,170, +146,184,234, 24,253,214,217,173,179, 78,221,217, 17, 96,112,168,192,224,192,232, +141,147, 30,222,127,188,114,200,177,157,124, 49,112, 55,251, 78,142, 8, 17,114, +127,252,131,161,201,218, 97, 42, 95,219,105, 90,135, 65,176,134, 88,201,192,150, +212,184, 56, 31,142,193,232, 6,213, 5, 83,205,142,206, 73, 2,153, 70, 83, 74, +119,202, 16,107, 92, 43, 95,204,137,166,117,198,173,116,244, 57,118, 74,239,105, +101, 13,219,109,207, 42, 24, 55,215, 89, 22, 61,118, 42,155, 28,106,137, 6,234, +226, 91,217,206,150, 80,146, 71, 75,159,148,164, 34, 29,203, 76,218, 87, 94,121, +229, 47,174,244, 98,244,125,209,197, 86,126, 32, 18,219, 19, 3,217,111, 99, 61, + 47,218,254, 90,201,218, 39,141,253,145, 9,163,178, 75, 51,238,169,189,173,113, +153, 37, 47, 14,182, 16, 2, 38,160,128,155, 42, 74, 0,172, 72,164,142, 97, 23, + 91,203,150, 37, 63, 35, 20,135, 8, 60, 70,127, 77,230,248,202, 60, 19, 73,164, +178,149,214,225, 43,103,183, 89,122, 68,114, 9,111,125,127,173,100, 84,159,193, +243,178,130,142,201,225,149, 74,111,208,100, 55,129,111, 71, 20, 8, 27, 90,130, +151, 38,251,246,236,182,159,204,159,247,169,139, 65, 22,213,102,119, 74,131,132, +134,240, 11, 11,191,253,139,177, 54,154,242,129,239, 5,213, 54, 54,238,128, 19, +143, 83,225,169, 42, 56,158, 78,140,152,152,173,116, 76, 95,182, 5,232,212,144, +238,233,104, 44, 50,241,194,121, 19, 85,100,170, 45, 57,170,210,121,106,242,197, +197,182,251,165,154, 72, 6,213,248,243, 56, 32,218,107, 54,232, 14, 35,109,210, + 95,124, 49,207, 75, 71,115,137,136, 23, 79, 5, 53,186,221,191,154, 78,186, 85, +169, 89,124,189,202,112, 46, 26,233, 23,104, 14,152, 84, 9,153,211,181, 82, 3, + 81, 64,243,154, 29,197,164,199, 35,193,195, 43,212,104, 59,228, 16, 16,150,154, + 28, 46, 64, 42,240,120,112, 46, 24,207,147,120,168, 32,210, 45, 40, 42, 6,153, +135,168,130, 80, 70,220, 31,175, 56, 8,239,234,241,232, 39,120,120,229, 21, 69, + 73,215,108, 50,158,140,231,154,220,167,186,226, 14,185, 4,201, 67, 99, 98, 88, +179, 0, 8, 84, 29,242, 56,218,126,109,114,148, 72,217,216,144,172, 90, 85, 85, +119,229,147, 5,103, 3, 47, 48, 46,216, 68, 79,197, 70,250,212, 90, 98, 23,115, +197,206, 85,242,168,210,141,183,142,118, 58,151,170,170,232, 84, 28, 19,197, 93, +189,167,216,106, 18, 59,101, 17, 73,156,138,162,254, 96,179, 79,177, 89, 27,108, +174, 4, 11,194, 57, 13, 81,213,213, 89,147,108, 59,131, 66, 38,157,212, 86,206, +174,188, 56,101, 21,168,236,224, 84,132,104,168, 51, 89,115,208, 57,167, 76,146, + 36,169,209, 26,179,145, 16, 16, 22,150,139, 71,115, 57, 73,206, 15,147, 17,226, + 32, 45, 20, 16,161, 65, 12,142,112, 28,195, 48, 8,136, 49, 70,192, 4,132, 16, + 66, 40, 33,136, 12,201, 32,117, 14,184,158, 46, 63,252, 32,125, 64, 26, 67,178, +135,204,121,223,116,154,201, 11, 53, 52, 80,121,237,255, 48,136,144,243, 55,153, +209,154, 90,243,113, 93,123,165,194,120,228, 79,187,198,172, 5,239, 57,184, 30, +112, 83,206, 56,254,134,188,172, 73, 1, 53, 1,131,233,156, 57, 52,131, 11,235, + 2,145,174, 1, 92,234, 78,178, 20,255,149, 74,147,214, 88,180,230, 3,206,128, + 47,187,249, 53,203,251,219,180,155,255,136,221, 32,171, 55, 7, 38,103, 45, 47, + 89,251, 23,203,133, 37, 65, 67, 54, 45, 91,182,251,181,176, 66,141, 37,116,123, + 53,219,195, 12,207,101, 25,231, 27, 33, 4,100,201, 74,130,136, 98,199,193,182, + 34,122,108, 36, 36,178,151,201, 20,146, 35,214, 91,237,196,106,244,214,202,241, +242,141,225,169,230,207,253,149,240,120, 14,235, 21,242, 98,203, 30, 2, 3, 43, +118,180,166,171,105, 94, 77, 92,161,255,133,228,174,202, 19,171, 76,163, 96,185, +134,135,199,187,122, 93, 5,222, 71,254, 42,244,107,251, 42, 53,183,179, 74,140, + 27, 60,100, 25,235,249,226, 76,254, 67,203, 9,210, 89, 84, 7, 99, 63,230, 26, +141, 63,166,114,248, 48, 88,208, 91, 36, 6,143, 57, 50, 11,177, 10,111,189, 18, +165,190, 31,252,161,131,195,124, 15, 39,116, 85, 70, 67,108,174,132,223, 17,173, +204,205,179,224, 41,142,130,119,123,232,158, 11, 23,209,153,218,185,195, 24,227, +154,226, 99,164,195, 61,141, 36,185,208, 86, 83,128, 45,207,109,145,171,116,134, + 44,212, 8,191, 31, 68,138,230,236,101, 30,112,241,201,197,232, 14, 80,243,172, + 59, 31, 94, 7, 67,113,239, 27, 9,140,157,155,114, 26, 26, 80,123,105, 91,244, +101, 78,199, 33, 98,120,233,203, 68,185,105,166,138,247,125,216,241,143,224,229, + 32,107,234, 92,192,168,148,145, 64,150,195, 4, 42,139,235,153,116, 63, 82, 42, +216, 88,218, 74,250, 71,141,145, 28, 0, 58,134,218, 45, 42,219,172,130,227, 47, +128,198, 50,211, 52, 10, 5, 15, 7,233,242,138, 83,189,230, 84, 98,117,132, 1, + 14,184,178,111,197, 36, 51,170,194,102, 29,186,239, 81,240,158, 79, 12,160,147, + 7,182, 7,203,230,201,105,140,228,144,216, 46, 46,181, 76,124,200, 15, 15,167, + 6, 86,195,153, 46,151, 74,199,100,203,130, 68,212,242,158, 32,200,156,116, 53, + 92, 2, 54,255,116,229, 95,185, 39,105, 34,126, 39,224,141, 23,156, 61, 19,241, +239, 65, 37,146,117,172,206, 12,195,151,231, 73, 76,246,171,199,124, 50,120,191, + 18, 40,197,238, 51,139,184,101,231, 67,146,135, 60, 13,186,161,167,163, 39,124, +245, 65, 39, 75, 59,147, 9, 54, 87,161, 98, 98,133,117,241,249,251,122, 84,105, +230, 54,100,209, 94,232,120,233, 81,136,153, 2,199, 9,138,199,169,127, 82,121, + 75,197,113, 5, 4, 99, 49, 58,180, 73,247, 0, 63,170,185,248,230,240, 91,113, +203,114,109,153,183, 20,172,139,143,251, 1, 15, 83, 16, 8, 25, 68, 47, 67, 59, +234,126, 32, 64,229,205,185,222, 48, 76,104,159,116, 20, 96,203, 70,207,176, 67, + 79, 30, 17, 10,164,246,235, 11,142, 29, 3, 36,212, 22,111,128,214,240, 22,157, +137,246,176,164, 70,178, 47, 44,181, 80,237,183,153, 91, 4, 58, 79,194, 18, 48, + 9,115, 29,141,116, 56, 19, 6,103, 33, 93,191,202,195, 73, 97,140,147,147,199, + 71,191, 31, 39, 28,223, 11, 18,220, 5,142, 78, 7, 8, 52,221,212,217, 49,133, + 89,131,194, 64,244, 16,144,152, 68,231,210,158,203,116, 49,184,222, 67,212, 69, + 60,173,116, 61, 76,233, 37,246, 77, 17,231, 16, 56,241,129,110,239,203,103,134, + 81,225, 48, 30,198,121,224,191,186, 68, 52, 38, 78,104,116,149, 17,183, 34,204, +163,228, 48,124,244, 32, 82,126,137,170, 47,113,107,103,246,246, 18,236, 49,207, +131, 50, 95, 63,198, 66,178, 46,189, 46,200,165, 58, 71,124,127,147,149, 35, 93, +166,198,163,239, 88,127,219, 71,183, 49, 40,210, 38,139, 67, 18,170, 67, 18,102, + 5,177, 40,173,136,254,129,164, 4, 57, 77, 41,212,233,237,132, 37,209, 33, 75, + 64,177,185,204, 33,145, 4,170, 58, 24, 61, 64,108, 33,156,233,255, 10, 0,128, +198,206, 43, 92,227,221,109,133,208,197, 78, 84, 12, 35, 86,172,122,148, 16,140, +186, 95, 79, 12,203, 47, 73,199,120, 73, 46,117,199,205,106,121,156, 90, 24,249, +184,104,129,182,117, 53,124,132,238,144,213,222,107, 88, 15, 84, 66,165,219, 14, + 30,216, 24, 31,164,186,106,191,127,170,110, 42,158, 34,233, 82,154, 5, 59,215, +248,157,105,127,119,248,141, 66, 50, 86,213,166,129,154, 0, 19,130,175, 74, 65, + 71,165, 66, 81, 3,237, 94, 24, 63,186, 80, 57,240,122, 14,143, 24,228,111,240, + 84, 1, 24, 73, 69, 4,190,106,141,150,129,120,130, 36, 18,112,146,115,141, 64, + 31,202, 63,115, 90, 80,214, 6, 0,164, 16,178, 8, 63,152, 59, 96, 48, 2,205, + 72,224, 12,175, 76,153,225,129,173,163,229,144,130,248,207, 19,242,116, 99,118, +119, 27, 37,113, 76,120,138,142, 61,116,115, 7,204,187,142, 47,243, 58,218,205, + 27, 44,226,122, 31,232, 6, 16,179,184,203,178,207,131, 19,234,127,155, 3,102, + 30,168,170,106, 61, 35,159, 46,245,171,218, 6,195,109, 56, 94,178,141,103,205, +142, 18, 15, 81, 89,105, 7,164,146, 6,186,220, 30,173,151,105,161, 59,174,227, + 52,107,255, 89,253,170, 0, 82,253,106,147, 50,109,214, 8,195,189,211,125, 61, + 10,130,219, 19, 75, 75,140,109, 76,182,236, 82,233, 13,122,242, 84, 21, 15,228, + 78, 51,220,216,116,206, 1, 51,148, 57,249,114,155,230,223, 59,206, 26,209, 13, +100,190, 79,198, 24,139,236,115,251, 38, 85, 57, 92,250,139,216,125,144,186,136, + 23,221,202, 98,136,242,109,130,143, 55,166,131, 35,245, 53,200,143,193, 70, 40, +126,225,158, 99,114,154,175,219, 69,203,193, 19,109, 14, 60,119, 86,182, 89,106, + 15,247, 0,207, 85, 65, 52, 21,170, 26,169, 63,230, 42,110,206, 83, 38, 85, 66, +238,254,193,138, 26, 0,206,230,142,186,107, 60, 57,200,213, 15,209,135,253,237, + 57, 20, 51,158, 19, 40,220, 39, 90,225,246,227,179, 28, 41,148, 75,124,218, 55, + 53, 77, 25,164, 83,216, 75,228, 6,180,110, 68,110,215,220, 48,209,176, 92,137, +237,137, 3,146,247, 35, 70,145,106,104,119, 54,158,140,225,187,194,164, 22, 25, +132, 42, 77, 49,245,133, 10, 32,169,134, 36, 52, 86, 2,214, 56,202, 69,169, 28, + 90,242, 51,131,250, 97, 8, 60, 4, 69, 98,180,207, 21,211,114, 49,138,116, 18, + 2, 77,135, 12,179, 86,100, 64, 0,113, 14, 18, 27,133, 0, 54, 49,154, 62,243, + 26, 63,192, 45,140, 15,133,151, 36, 6,252, 3,164,143,144,100,212, 48, 71, 61, +196, 84, 22,233,251,172, 35,136,168,243, 44, 73,135,108,190, 48, 36,112,133,249, + 24, 2, 40,236, 41,121, 13,220,153, 24, 73,178,202, 70,197,170, 74,116,141, 34, + 98, 82,249,121, 21,138,140,242,201,243,124,119,214,172, 65,189, 34,189, 47,169, +187, 65,223,203,170, 37,141,202,184,253,108,133,183, 40,200,227,189,177,155,217, + 58, 25,151,236, 59,229, 40,186,246,105,167,129,157, 93,164,186, 95, 34, 96,232, +219,144, 34, 27,102, 34, 99,190, 27,205, 96, 98, 3,203,167,150, 19, 59, 33,191, + 73,190,215,182,118, 86, 48,195,109,200,102,102, 50, 29, 46,182, 50,148,153,140, + 62,112,193, 42,204, 48,224, 60,163, 43,173, 11,255,198,179, 11,208, 79,169,219, + 87, 37, 43, 19, 59,117, 23,152,191,202,201,229, 88, 9,254,109, 3, 74, 77, 96, + 74,213,178,213, 16,161,166, 51,188, 53, 65,190,198, 67, 93,149, 35,134, 50,180, + 4, 7,129,188, 76,208,169, 15, 25, 80, 52,141, 63,230, 1,130, 8, 10, 39,106, +129,217, 24, 13,147, 70, 22,119, 53,246,197, 44,154, 30, 72,144,167,212,235,251, +255,155, 1,129, 36,227, 22,237,132,104,120,148,141,253, 80, 37, 84, 34, 45,122, +128,243,182,154,159,217,176, 98, 40,253, 71,207,214, 57,158,131, 18, 82, 50, 14, + 55,175,193,155,195, 50, 13, 48,128,244, 74,235, 32, 12,103, 17,240,239,139, 74, + 30,115,103, 59, 2,172,249,127,109,130,206,176,242,110,227,123, 55,108,121,116, +243, 4,229, 3,161, 66,104,153,244, 39,145,227,106, 20, 41,131,217, 43, 43,222, + 5,184,206, 80,124,113, 97,183,232, 99, 3, 16, 83,169,159, 20, 50,170,162,232, +195,111,255, 61, 0, 18,176,217, 72,123, 35,148,113,149, 24, 64, 47,202,166,132, +121,103,215, 1,116, 88, 97, 4, 45, 68, 4,178,218, 93, 12, 13,137,101, 63,102, + 90,176, 73, 38,164,165, 74,249,211, 27, 22,109,177,195,171, 34,156, 24,133,141, + 68,198,216,220,221,167, 94, 91, 27,151,154, 44, 97,251,114, 9,204,181,131,250, + 55,254, 35,107,171,219,157, 49, 44,182,242, 43, 61,143, 51,245,116, 95,168,222, +158,246,235,216,242, 31,104, 8, 73, 96,165,191,199,241, 11, 13, 34,138,172,188, +114,120,242,103, 64,127,162, 99,113, 34, 77,185,115,190,112,188, 42,225,224,136, + 91, 22,163, 25,170,112, 31, 2,182, 87, 13, 82,202,181,201, 50, 29, 87, 29,215, + 58,184,232,246, 20, 58,185, 58, 32, 6,122,109,149,121,197,252,247,195,177,252, +198, 24,166,105,191, 56, 0, 2,144,248,127,242,107,231,168,147, 61,230,106,143, +228, 53,145, 73, 72, 83,197,134,153, 31, 36,238,159, 99, 17, 1,129, 74, 22, 10, +188,218, 72,101, 32, 33, 33,212, 42, 21,242, 26, 69,154, 63, 63,223, 16, 92,219, +224, 43, 26, 6, 20,139,139, 47,247,176,164,163, 47,167, 39, 65, 31,103,208, 79, +200, 38,153,166,134,175,237,190,114,214, 57, 1, 65, 17, 68, 95,182,193, 27, 87, + 64,166, 88, 3,121, 39, 2,178,117,186,196,246,202,120,102, 71,104,129, 51,105, +208,235, 50,241, 8, 6, 78,206, 3, 84, 93,110,106, 55,185, 88, 61, 21, 51,115, +146,160, 32, 90,252, 94,144, 60, 0,202,135, 38,166,161,137,179,172, 60,152,101, +238, 43,227,178, 59,109, 97,196,198, 77,103, 48,116,122,152, 17, 43,101,148,152, +202,173,224,110,114,187,178,157,237,143, 19, 94,164,101,244, 20,229, 30,146, 2, +198, 99, 64,166, 9,167, 88,123, 49,120,141,172,100, 21, 78,213, 73, 69, 17,108, +161, 46, 34,193, 33,191, 29, 59,206,195, 4,245,108, 28,122,144,143, 69,248,103, +255,198,253, 7,198,125, 67, 54, 12,140, 94, 31,131, 18,213,150,204,236, 66,130, + 25, 9,241,179, 93,240,147, 21,189,191,133,197,132, 69,102, 99,158, 16,124,130, + 43,114, 60, 11, 74,173,224,144, 85, 48,185,140, 34,226, 64,112,150, 43, 63,152, +173, 60,185, 41, 14,255, 66,156,141,132,146,226, 11,115,247,105, 35, 90,112,195, +168,144,131,240,103, 59, 8,251,248, 85,121, 33, 26, 72, 36,145,233, 55, 76,102, +236, 44,229, 57,217, 6, 4, 76, 50,172, 74,188,140,114,144, 25,138, 11, 91, 58, + 0,249,180,135,126, 55,189,214, 75, 38, 42, 76,188,179, 46, 5,181,146, 0,136, + 59, 29,112,238,121,232,171,107, 47,123,196,207,173,230, 56,219, 66,197, 9, 79, + 58,249, 41,207, 8,181, 76,123, 58,214,230,210, 57,173,210, 62,114, 75, 1,160, +247,211, 85,255,158,212, 44, 76,199, 69,179, 34,233, 74, 38,106,204,220, 14, 44, + 42, 16,112, 73,220,181,242, 60,250, 77,245, 68,201,133,130,120,139, 85, 10, 3, + 31, 24, 15,208, 74, 82,230,118,243,195,147,211, 96,136,243, 85, 23,125,194, 59, + 84, 32, 16,114, 70, 55,250,123, 6, 44,186,248,106, 7, 52, 54,205,253,186,204, +100, 6, 53, 66,255, 48, 33, 75, 63,154, 19,240,238,191,252,180,206,101,240, 7, -// ../Source/Template/GB_ewise_fulln_template.c: -uint8_t GB_JITpackage_113 [639] = { - 40,181, 47,253, 96, 10, 6,173, 19, 0, 22, 96, 99, 32,208, 28,231, 24,149,213, -255, 59,212, 71,162,195,106, 72,143,165, 21, 58, 78,205, 40,154,106, 0,244, 15, -174,240, 72, 7,241, 11, 90, 0, 87, 0, 91, 0, 42,219, 57, 73,210,123, 11, 5, - 66, 81,112, 36, 16,138,119, 34,119, 15,219, 87,165,220, 64, 47, 27,115,217,178, -158,123, 33,205,124,163, 89,207,203,163,241, 89,205,176,179,117,133,219,251,172, -199, 45,218, 51,215,214, 23, 39,201,250, 62,123,132,253, 35,208, 75, 14,254,209, -185,146,102,171,179,233,146,164, 43,101,106,108, 97,109,250, 46, 63, 28,182,194, -225, 16,178, 24,120,212,173,247,190,123,244,185, 85,255,255,109,163,109, 91, 96, - 52, 92, 87,224,141,114,145,226,181,130,109, 51, 96,178,239,217,172,247,109,213, -101,183,254, 44, 83, 71, 53,118, 61,151,247,199,118,244,124, 67, 24, 20,133, 30, -197,106,210, 63,206,182, 41,155,111,163, 48,133,198,183, 69,155, 41,136, 40, 28, - 3,170, 95,103,227,238, 28,231, 49,176,107,239,141, 98,237, 58,230, 55,228,230, - 71, 75,108, 39, 5, 16, 0,126, 29,229,158,201,124, 44,166, 16,227,233, 84,194, -144,118, 32,119, 37,127, 54, 49, 26,249,218,103,124, 75,241,144,119,179, 43,114, - 15, 51, 20,164, 1, 65,240,251, 62,200, 99,147, 2,125,199, 93,242, 24, 29,188, -194, 25,121, 76,180,163, 63,203,195, 61, 42,145,128,220,207, 46,115,181,167, 7, -219, 86,219,106, 4,201, 17, 32,119,206,166, 18, 98, 66,149,239,244,157,184,127, - 37,147,244, 88, 99,178,166,238,153,247, 98,244,158,167,114, 89,217,202,157, 86, - 58, 52, 3, 86, 40,167, 17, 8,145,155,135, 28,113,201, 77, 78,180,185,102,204, - 53,233, 66,245, 40,226,119,151,195,168,218,231,152, 77, 45,215, 37,251,172,230, -205, 86,249,218, 82,213,211, 20,200,106, 99,160,113, 57, 83, 51, 34, 18,136, 72, -148, 66,105, 56, 96, 68,102,170,106, 55,205,133,164, 24,108,119,112,107,194,111, - 39,187, 40,104,225,142,181, 17, 69,176, 60, 65,232,113, 49,235, 26, 72,191,209, - 51,194, 4, 19, 65,171, 32,192,148, 29,220, 31,188, 17,139,150,236,207,230, 11, -173,163,241,194, 14, 28,181,229,109,248,108, 69, 74,164,108,111,203,252,129, 51, -184,124,138, 70, 50, 25, 3, 19,123, 99,139,146,180,110,224,124, 76,137, 29, 52, - 69,100,106, 24, 61, 96,116, 54, 5, 69,212, 7,160,120,234, 60,206,250,246,194, -152, 63,113,225,200,108, 2,202, 54, 8,164, 80,172,195, 67,196,116, 78,186,216, -102, 55,142,167, 29,108,179, 75,216, 62, 67,198, 91,230, 47,185, 34, 56,200,194, -195,144, 0,150, 3, 28,236,117, 2,187, 46,107, 69, 0, 73,122,215,105,177, 32, - 52,191, 6, 69,217, 37,146, 37,188,216,107, 19, 52, 2, 84, 3,112, 4, 50, 86, - 8,104,211,236,252,204,148,126,209, 10,183, 8, 19,167, 93, 85, 81,135, 7, } ; -// ../Source/Template/GB_iceil.h: -uint8_t GB_JITpackage_114 [236] = { - 40,181, 47,253, 96, 35, 1, 21, 7, 0,114, 14, 45, 23, 64,219, 1, 22, 70,217, -219,190, 77, 7, 33,125, 81,192, 98,236, 66, 4, 26, 59,154, 4,128, 0, 0,254, -151,125,184, 61, 36,109, 8, 77,244,128, 5, 65,232,161, 43,176,208,245,151,113, -227, 70, 79, 15, 61,205,223, 37,155,118, 23, 55, 88,222, 11,120, 0, 80,156, 85, - 73, 80, 5,250,151,193, 15, 0,228, 80, 12, 23, 61,108, 58,221,156,254,224,167, -217,191,202,112, 52,187,247,150,177, 69,215,241,249,122, 58,234, 88,163,169, 24, - 62,214,227,232,116,177, 40,136, 98, 48, 9,162,244,224, 9, 93,160,191,226,168, - 15,167, 91, 49, 45,201,215,186,200, 28,235, 17, 77,124, 78,141,163, 39, 54, 51, - 79, 95,205,128,161,187, 88,232, 48,127,159, 37,216,104, 46, 63,253,252,160,127, -221,136,199,248,238, 61,247, 76,125, 47, 96,220, 27, 15, 0, 4, 3,194, 37, 40, - 94, 64, 37,196,188,106, 43,224,213, 42,156, 77, 22,208, 39,106, 87, 51,104,218, - 60, 51, 69,155,192, 86,235, 1,131, 8, 59,215,167, 40, 24, 2, +// ../Source/Template/GB_AxB_saxpy3_template.h: +uint8_t GB_JITpackage_98 [4518] = { + 40,181, 47,253, 96,156,116,229,140, 0,250,124,196, 22, 45,176,172,142,115,242, +172,209,203,118, 47,133, 14, 53, 84,106,169, 11,103,148, 5, 53,228,221,125,206, +203,105,203,159,194,141,154, 96,229, 53,203,125,248,167,244,167,193,217,241, 12, + 97, 1,104, 1, 93, 1,214,181,177,116, 58,176,194,185, 3,229, 26,214,109,215, +169,184,109, 17, 52, 89, 40, 50,112,115, 61, 40,223,152,161,237,218, 73,177,136, +227,147,229,104,251,251, 67,214,101, 65,121, 72,202,238,195,197,237,182,231, 15, +158,173,228, 87,152,156,106,104,248,251,211,170,233,213, 85,241,236,109,143, 70, + 99, 92,214, 31,103, 77,231, 58, 17,165,242,122,112,184,102,163,118, 97, 32,120, + 88,179,159,221,222,246,173, 59, 60, 76, 56, 85,153, 43,105,151,237,203,154,254, +153,188, 91,227,181,151,197,253, 94, 4, 34,238,236, 47, 68,248, 66,165, 93, 74, + 36,154, 30,189, 24,143, 78,133,158,100,178, 94,121, 68,207, 55, 86,190,125,122, +207, 92,185, 75, 66,151,117,117, 44, 20, 11,156, 5, 88,168,184, 44, 29,136,177, +176, 44,157,107, 0,134,197, 5,228, 92,213,197,135,179,249,233, 0, 11, 11,144, + 42, 30,254, 67, 95,186,109, 89,187,159,244,217,100,142,179, 95, 58, 79,179,179, +101,173,243, 67,176, 74, 63,183,147,246,237,217, 31,150, 88, 16, 0,129,120,176, +134, 69, 14, 94, 82,185, 63,125, 39,103,151, 7,219,201, 88, 99, 30, 23, 18, 22, +144,140, 71,149, 45,111,110,175, 6,234,205,165,132,127, 3, 32, 4, 64, 60, 10, + 68, 4, 64,156,194,166, 63,219,163, 40,113, 8,124, 73,187,116,235,206, 31, 7, + 98, 42,141,139,149, 66,194,182, 70,142,195,183, 59,206, 66, 70,181,203,219, 31, +123,116,134, 74, 17, 88, 7, 42,127,149, 3,164, 84, 46,209, 32,124,163,228, 54, +190,215,128, 18,167, 17,237, 85,105,192,171,162,248,195,195,194,227,225, 33,143, +116, 56,155,203,132,104,218,186, 41, 9,137, 36,211,172, 42,143,163,226, 34,142, + 83, 42,206,115,135,115, 85, 72,116,201, 51, 68, 34, 8,215,170, 39,152, 94, 61, + 56, 89,203, 50,171, 17,196,245,180, 98,113,187,109,202, 67,231,202, 26,233,175, +250,236,170,226,116,160,133,193,192,208, 85,133,184,210, 9,234, 63,234, 78,183, +108, 32,166, 98,145,184, 20, 92, 42, 27,203, 5, 99,113,233, 96, 26, 88, 23,231, + 98, 65,179,107,111,108, 31,185,151, 40,144,200,104, 42, 22,206,181,209, 76, 92, +157,201,187, 35,183,178,157, 7,158,241,217,239, 83,222, 2, 40, 92,139,108,168, + 55,134,203, 32,139,155, 30,234,235,234, 10,145,141,247, 20,123,172,224,192, 10, +235, 20, 42, 35,226, 56, 5, 10, 14, 16,220,205,190, 20,197, 16, 17, 49, 0, 49, +128,192,189, 34, 34, 16,147,255,239,247, 50,112,103,119,211, 45, 29,140, 42, 98, + 35, 38,185,178,139, 20,111,180,221,166,107,216,109,146,237,100, 28, 61, 25,107, +119,177,174, 94,139,193, 52,200,176,149,212,235,112, 96,133,130,242, 84, 21,197, +157,108,109, 79,147,218, 81,188,172,221, 79, 71,174,158, 55,161, 60,163, 47, 21, + 5,213,208,240, 12,139,131,112, 79, 70, 67,248,167,226,167, 34,167, 80, 40,135, +227, 7, 38, 19, 69, 77,167, 92, 67,195,250,189,150,171,195, 69, 53,110,207,226, +222,189, 68, 54,110, 83,198, 25,243,156,148,228,164,183,146,103,101,209,179, 7, +214,149, 39,131, 22, 48,150,204,198,178,224,234, 92, 20, 48, 22, 57, 43,170,148, +116,136,237, 40, 78,153, 43,221, 79, 30, 53,232,222,136,217, 75,238, 21, 10,127, +153,164, 27,183, 88, 96,116,120,210,236,189, 11,104, 61,100, 46,214,103, 63,174, +236,206,131,245, 70,111,124,236, 17,117, 95, 79,144,190,147,159, 49,199,158,207, +136,157,111,204,184, 78,226,162,201,104,172,123,138,227,146, 11, 9,139, 6, 87, +229, 98,105, 58,240,122, 48,201,102,215, 44, 61,241, 78, 18,150, 87, 42,149,137, + 68, 6,114, 87,239, 41,211, 73,146,210, 70,148,216, 95,229,142,119,101,122,228, +146, 64, 61, 38,157, 19,117,209,172,114, 30, 69,150,179, 39,126,136,140,147,246, +229,104,118, 91,146, 83,115, 43,181,151,100, 44,174,206, 70,163, 81, 81,169, 76, + 78,245, 95,133,155,238,112, 84, 42,167, 96, 63,240,254,228, 2, 38,172, 37,245, +108, 37,251,146,228,218,113, 87,118,150,235, 37, 20,153,203,230, 98, 89, 56, 24, + 25, 8,201, 88,122,182, 46,116, 27,159, 49, 8, 20,229,231,182, 39,149,201,217, +202,218,141, 87,197, 82,209,129, 84,168, 47,150, 1, 33,252,155, 14,101,196,154, +163, 84,190,242,237,232,103,204, 94,202, 34, 87, 25, 29, 38,154, 37,163,185,144, +202, 35, 38, 81,237,175, 82,142, 62,107, 58,233,246,218,179,207,182,139, 52,192, + 88,108, 52, 23,152,179,214,129,208,123,154, 69,110, 75,145, 36,227,189,132,250, +133, 5, 99, 97,105, 42, 15, 24, 54, 23,104, 49, 57,244, 4,207,183,227, 54,138, + 73,140, 51, 81,247,118, 73,169,199,234,134, 80, 20, 97, 20,193, 6, 8, 33,132, + 16, 66, 8, 41, 17, 20, 93, 48,163,170,232,171,184, 63,141,234,143, 18,137, 68, + 29, 43,183,228,250,202,110, 11, 0, 52, 72,118, 69, 68, 34,128,115,214, 73,108, +246,236, 36, 17, 17,216,177, 88,113,163,101,108,140, 57, 46,205,248, 44,155,200, +163,129,138, 56,166,201, 39,148,217,125, 38, 62, 36, 42, 37,253,216,108, 70, 78, +131,175, 97, 16, 8, 68,210,215,224,236,175,196, 97, 27,111,159, 94,186,220,198, +183,188, 81,140, 61,151, 86,222,120,150,211,185, 84, 81,235, 74,170,244,246,178, +113, 64, 77, 21, 19,144,152, 49, 22, 37,215,121,254, 62,146,237,237, 82,119,177, +120, 57,198, 52,184,178,118, 10,194,110, 87,140,179,182,179, 37,224,239, 29, 6, + 8,252, 65,252, 69,108,107,247,143,202,182,163,166,107, 80,236,239,189, 73, 79, +109, 52,153,139, 63, 6,150,137, 94, 66,226, 6,138,149,187,133, 53,153,211,100, +124, 39,111, 44,185,173, 31,230,109, 52,152,207,200,143, 99,177, 46, 29, 2, 17, +160,184,245, 7,147,145,235,101,239,228,217,167,164,123, 27, 33, 6, 84, 38, 42, +223,200, 21, 52,227,180,205,208,179,178,148,113,179,150,235,141,218,181,243,113, +141,183, 91,229,123,237, 82, 15,189,191,182,219,126,173,140,159, 43, 99, 39,129, +223,229,135,100, 44,194, 88,195, 30,219, 38,105,126,200,181, 77,123, 20,181,121, +123,163,215,110,147,254, 88,122, 58,154, 69, 42, 63, 19, 8, 36, 83,239,254,149, + 65, 60,187, 11,245, 54,184,233, 21,149, 11,203,197, 48,157,101,107,164,219,159, +100, 60, 65,109,109,204,100, 71, 53,251, 76,204,220,246,237, 60, 15, 1,229,192, +116, 9,154, 57, 54, 56,135, 63, 18,207,141,133, 4,168, 3, 42, 90, 24,100,204, +212,204,140, 72,146, 36,105, 12, 83,145, 16, 24, 18, 9, 76, 6,163, 65,105,218, + 62,243, 48, 67,249, 32, 38, 68,131, 48, 10, 97, 17, 6,129, 16, 6, 65, 88, 2, + 34, 32,134, 8, 8,129,132, 16, 74,136, 33,210,171, 3, 39, 56, 61,149,231,181, + 65,138,193, 95, 4,110, 84, 34, 78,251, 12,140,193,131, 8,179, 42,224, 37,131, + 70, 17, 8,153,228, 94, 86,175,224,249,208, 59, 89,197, 76,130, 1,135, 57, 29, +193,192, 90,152,216,188, 8, 25, 81, 19,117, 58, 37,114,176, 72,174,125, 33,249, +134,113,174, 72, 91, 34,104, 44, 46, 56,118, 43,133, 71, 47,255,221,207,160, 70, + 12,167,106, 8,189,119,227, 84,163, 16,130,241, 82,235, 35,132,146,130,218,168, +207, 92, 38,212, 10,249,191,160,221,234,188,168, 85,104,113,179, 92, 5,169, 59, + 4,241, 30,179,217,106,244, 47,110, 86,174,195,243, 30,172,154,206, 2,202,169, +236, 36,108,213,102, 87,102,215,236, 47, 67, 72,230,156,210,216,222,191, 27, 25, + 28,142, 0,126,162,138,193, 21,254,115, 39,238, 60, 36,113,252, 19, 8,130, 97, +131, 2, 78,248, 32,111, 19, 91,120,102, 4, 70,155,232,123, 92, 56,173, 23, 61, +248, 35, 5,213,163,180, 22,213, 93, 62,126, 68, 12,138,254,174, 5,146, 95,100, +143,117,166,216, 13,232, 61,203,250,154, 6, 6,132,214, 2, 64,248,245,126, 20, + 96,195, 35, 84,155, 71, 0,134,186,136,180,229,165, 69,243, 70,253, 64,140,150, + 84, 51,153,138, 17, 21,203, 36, 31,171,219,114, 75,243,181,172,211, 38, 74,204, +190, 76, 47, 3,159, 83, 29,134,144,203, 47,171, 84, 71, 6,111,197,164,131,233, +164,149, 61,169,218, 13,184,126, 40, 70,169, 19,253,237,160, 86, 62,207,126, 37, +159,131,237, 36, 31,182,248, 57, 29,237,186,154,243,211,140, 67,220, 3,158,144, +146, 72, 78,162, 8, 91,120,198,221,194,179,186,109,213, 22, 12, 54,174, 34,219, +213,144,170,132,104, 7,109,218, 6,120,151,181,111, 58,219,180,130, 6, 81, 88, + 9, 89, 10,215,235,233, 63, 89, 33,166,138,240,100,161,196,116, 82, 42,246, 37, +227, 70, 53,157,231, 84,197, 11,119,250,207, 50, 88,213,131,139,168,252,208,236, + 66,121,137,248, 69,194, 56,230,247, 74,176, 16, 38, 23,108, 59,173, 55,153,172, + 12, 22, 45, 84, 85,161,117,117,198,175, 96,192,173,204,176,209,115, 23,223, 70, +232, 11, 48,212, 69,122, 60, 69,167,240,187,128,245, 12, 81, 69, 21, 82, 42,108, + 9, 13,162,237, 18, 4,150,212,145,203, 64, 1, 17, 30,127,111, 96,233,159,102, + 81,150,119,192,128, 89,240, 61,161, 42,247, 11, 14,153,147, 35,118, 66,237,244, +210,202,182,147, 18,214,133,211, 96,168,187, 71, 45,189, 38,182,137, 74,198,101, +241, 39,133, 61, 0, 78,154,125, 51, 92, 53,194,245, 45, 23, 2, 21, 47,181, 22, + 69,193, 89, 66, 13, 84,237,154,164, 21,105, 41,213,128,230, 13, 85,194,110, 38, +182, 59, 14, 60,211,105, 7, 89,191, 46,186,144, 69,121,202, 11,171,196,220,157, + 68, 85, 36, 38, 33,226, 11, 31,161, 44, 16, 1,177,237,255,187, 17, 92,146,154, +186,183, 27, 32,250,174,123,234, 35,128, 15, 47,132,124,174,157,200,229,235, 83, +189, 57,223,232,236, 77,188,253, 85,184,153,120, 44,204,241, 10, 8,215, 15, 30, +105,154, 83,221, 19, 32,134, 9,237,123, 98,112,167,145, 90,136, 64,225,100,188, + 34,148,244, 33, 64, 58, 28,174,235, 6,157, 34, 34, 0,249, 55,160, 26,125,238, + 7, 37,124,249,133,174, 45,119, 87,192,253,113, 75,210,138, 15,245, 53, 49,246, + 51, 16,181,236,123, 8,229, 70,169, 58,133, 10, 91,173, 82,218,149, 39, 17,195, +124,213, 84,183, 81,189,172,225,133, 55,178,241,189,169, 11,148, 73,241,173, 17, + 23, 87,105,118, 2, 46,254,110, 93,100,117,253,100,176,225,195, 79,109,211,211, + 5,150,159,136, 84,156, 53,237, 38,206,239,164, 12,195, 10,156,169,198,203, 92, + 28, 42,198,201, 70, 12,230,183,140, 48,108,227, 53,110,252,103,177, 11,235, 20, + 82, 67, 42, 49,101, 8,220,148, 96, 79,106,244,174,246, 39,115,246,230,230,154, +178, 75,160, 14,238,163, 23,110,132,245,148,161,139,123, 42,151,118, 54, 92, 80, + 41, 5,219, 39,202,120, 97, 82,211, 61, 1, 75, 20,234,215,244,175,101, 20,187, + 96, 98,230, 81,174, 74,246,178,222, 81,239,201,243,213,175, 87, 6,166, 89,245, + 40,217,105,200,219,203, 90,238, 27,169, 54,230,124, 23,118,114,109,236,199, 85, +208,106,167, 39,201, 71,193, 38,112, 92, 57, 42,191,230, 8,115,246, 61, 17,221, + 68,142, 80,137, 55,141,159,148,180,112,112,164, 17, 24, 52,102, 66, 97,209,134, + 5, 34,163,166, 69, 85,168, 14,236, 81, 94,149, 23,205,246, 78,124,250, 71,123, + 81, 36, 36,102,236,211, 61,235,141,135, 30,137,228,215,244,135, 30,182,254,133, + 75, 69,251,164,179,125, 56,183,157,116, 36, 62, 87,161,119,245, 28,225, 37,227, +172,127,162,235,146, 61,202, 87, 80, 32,227,233,241, 74,247, 53,225, 33, 84,160, +122, 52,171, 75, 14,149, 28,190,181,246,196,137, 96,161, 81,250,140,165,244,110, +242,185,244,206,193,151,174,218, 4,149, 74,164,160,163,216, 63, 7,247,215,211, +167, 9,232, 78, 37, 12,181,217,250, 43, 75, 85, 91,106, 3,122,159,111, 36,134, + 5, 76, 71,145,187,223, 86, 98, 75,119,234,109, 81,154, 30, 1,131,128,251,226, + 92,186, 27, 14, 26,108,151,240,241,250, 92, 82,171,243, 7, 70,149, 30,130, 99, + 67,226, 40, 69, 89,236, 36, 14, 27,162,187, 80,145,184,105, 7,213,152, 3, 0, + 18, 91, 8,128,111,180,225,116, 70,248,166,168,194,193,159,183, 96,166,128,184, +140,113,131, 7,157, 38, 1, 35, 67,201,101, 8, 71, 47,230, 22,225,145,120,150, + 44, 13,167,215, 60, 33, 42,120,184,217, 15,239,115,106,202,150,194,224, 59, 62, +214, 80, 6,123,209,227,190,235, 70,200, 85, 34,184, 22, 95, 58,217,121, 4,171, +240,129, 12, 16, 87, 64, 78,145,142,132, 48,214, 68,126,166,163,160,196,159,197, +214, 57,110, 54,148, 12,112, 35,129, 36,241, 65,225,136,192, 14,204,173, 1,194, +169, 32, 10,142, 79,200, 75,138,230,174,170, 56,216,106,124, 22,186, 63, 65,145, +197,227, 23,229, 89, 50,230, 81, 38, 76, 70, 52,243,142,111,179, 15, 64, 83, 80, +149,226,254,161, 91,228,212,158, 34, 8, 34,119,132, 26,136,176,185,212, 24, 52, +197,129, 66,120, 2,189,142, 55,209, 22,142,125,224,252, 54,107,160,210,215,129, +210,176, 29,103,153, 9,231,183, 59,196, 26,121,118,122,185, 9,213,249,193,251, +188, 96,227, 91,230,251, 31, 14,243,239,122,156,159,194, 8,100,255,223,184, 3, +235, 13, 20,242,156,208,179, 77,134,204, 86, 37,179, 26,185,126,175, 46,142,110, + 23, 67,122, 12, 33, 17,213,120,196, 24,115, 50, 93, 72, 21, 4, 24,194,192, 98, + 31, 77,194,101, 45,205,245,205,218,216, 46,188,139, 74,172,137,123,111,112,110, + 77,236,184, 69,172,123,122,130, 11,145,244,232,168,179, 97,227,150,174,255, 36, +152, 75, 13, 7,124, 49,210,240, 50,222, 29,189,115, 77,109,207,134,221,248, 90, + 36, 92, 15, 18, 73,164,216,235,164,135,144,208,218,171, 32, 22, 22, 11, 35, 80, +196,211, 66,172, 63,171, 26, 44, 84, 29,210, 1, 74,140,108,192,160, 78, 6,176, + 18, 73, 34, 42,110,101,233,239,181, 51, 55,125,161,222, 97, 43, 76,152,224,222, + 96,163, 31,103, 93,188,107,226,187,228,110, 28, 86,150, 92,233,220,123,191,189, +105,137,149, 78,130, 85,229, 84,191, 35,235,161,220,189, 12, 73,181,180,159, 23, + 95,114,157, 80, 81,148,215,211, 3, 5, 47,197, 5,202,137, 40,183,201, 79, 1, + 61,104,168, 32, 26,245,174, 51,139,241, 36,148, 10, 47, 45, 3, 74, 87, 96,124, +213,102, 68, 44, 81, 98,139,207,229,124, 38, 1,171, 2,129, 77,229,124, 9,108, + 12, 52, 83,147,101,122, 60,191,226, 71,147,111, 74,206,125,192, 47, 1, 25, 62, +156, 83,232, 72, 96,148, 96,213,237,247, 9,134,125,145, 77,250, 8,242,173, 80, +181, 99,137,147, 61,215, 19,180, 51,166,130, 54,229,158,198, 4, 44, 28,152,154, +120, 25,198, 49,178,255, 94,232,229,163, 34,158,227,245,178,115,139,151,180, 41, +122,106, 64,221, 99,196, 65,171, 38,220, 34,235,200, 38, 64, 80,245, 93,143,107, + 35, 18, 50,252, 76,252,211, 24, 70, 5,187, 41, 78,184,155, 34,203,180,183, 43, + 63, 24,134, 88,188, 80,236,164, 33,209, 73, 44, 69,213, 27,229,120,119,179,237, +126,213, 34,114, 52,193,211,143,171, 8, 24,133,129, 39,145,162,109, 78, 3,146, +119,212, 64,170, 81, 5,244,164,159,121, 75, 44,116, 99, 65,240,150,126,216,150, +197,180,171, 63, 42,134,215,108,243,161,113,235,198,116, 55,176, 3,122, 15,229, +201,250,215, 9, 58, 54,140, 2,156, 47, 39, 57,114,160,181,227,183,116, 8,209, +132,162,119, 63,195,214,148, 66, 11, 8,107,213, 6,171,159,139,149, 82,100, 90, +249,153, 84, 48, 44,108,224,154,124,182, 43,177, 45,180,122,166,218,211, 6,120, +111, 50,222,177, 32, 57,130,116,174,173,245, 15,244, 57,207,191,231, 68, 85, 67, +146, 52,180,180,238,136,178,146,168, 89, 53,134,136, 11, 49,129,238,194, 40, 87, +167, 34,193, 21, 21, 72,150, 12, 13, 7,186, 99,178,101, 86, 32, 71,157, 49,150, +123,227,252,233,218,127, 14,245,152,125,199,226,239, 70,105, 65, 33, 69,127, 10, +218,219,242, 86, 44,137, 51,157, 83,223,230,110, 70,175,215,120, 45, 74,201,169, +238,120,140,114, 6,186, 33,234,203, 13,201, 53, 59,158,186,210,119, 75,233, 81, +206,201, 29, 17,243, 24, 87, 92, 45, 37,251,127, 72,167, 84, 52,192, 66,147, 26, +216,208, 61, 77, 36,197,234, 61,138, 13, 31,170, 25,206, 30, 86,140, 89,255,146, +168, 32,250,186, 82,197,131,108, 23,157, 12, 75,156,101,123,104, 79,218,178,113, + 85, 81, 62, 16,169, 9,215, 97, 24,244,128,208,121, 37,243, 96, 76,152,129, 15, + 53, 44, 46, 80,243,225,183,184,147, 82, 54, 49,181,163,135,131,125,242, 34,206, +180,247, 40,172,114, 5,248,244, 49, 72,134, 70,130,245,220, 5, 90, 49,170,199, +160, 62,139, 58,255, 12,130, 82, 48, 4,157,235, 53,122,101,115,168,246,235, 9, +130,239,239,187, 18,205,103,155,127, 20, 13,208,209,244,115,243,165,165, 69, 93, +115,225,252,241,188,135,216,232, 65,190,100,113,146, 44,164,153,247,196, 71, 46, + 65,208,153, 99, 90,184,233,104, 11, 72,149, 26,200,162,187,119,141, 67, 45,239, +192,169, 88,211,251, 47,255,216,183,141,136, 68, 14, 81,171, 30,106,223, 89,133, + 49,161,165,245,210,102,114,121,178,192, 23,194,147,138,201,245, 80,109,202,199, + 65,131, 8, 88,134, 84, 8,106, 17,108,126,118,179, 6, 28,245,167,210,233,115, +212,217,156,217, 73, 92, 3,148, 54, 67, 98, 77,226,104,116, 75, 77,253, 29, 74, + 69, 49,198,207,254, 15, 28, 18,221,219,143, 66,119,138,183,158, 0,252, 83, 15, +162,218, 10,107, 88,167, 79,159,231,202, 34, 68,231,250, 74,186,226,213, 63,162, + 37,238,178,161, 13, 65,187, 88,226, 22,118,153,165,210,156, 51, 64,239,127,205, +226,132, 52,115, 10,205,223,115,153, 39,191,133,222, 7,178,158, 4,227,137,219, +102, 39,217,178,179, 24,136,180,224,154, 3,113,176, 29, 7, 10, 47,104, 9, 73, +159, 31, 45, 52,194, 40,177, 6, 99,108,236,204, 86,166,170,188,195, 51, 46,230, +203, 8,188,222, 23,246,210,168,150,210,209,167, 84,170,202, 84,221,237,131,181, + 45,173, 69, 67, 47, 32,238,114,206,192, 33, 7,207,150, 34,151, 34,169, 7,187, + 71, 78,198,217,246,255, 5, 91,230,187, 67, 3,225,234, 84, 69, 44,219,197, 32, + 61,185,101, 3, 42,228,236,106,232, 61, 21,174,220,255, 51,212,114, 47,225,165, + 7,178,109,128,194, 56,165,185, 14,184,185,191,114,109,153, 77, 43,204,113, 68, + 16,145,235,204,177,208, 72,167,213, 15,196,214, 76, 86,229, 66,166,119, 84,210, +218,222,103, 71,124,179, 14, 4, 14, 47, 64,237, 0, 33,128,125,159,137,207, 64, +117, 2, 89,201,232, 82, 65, 74,107,210,115, 65, 56, 29,118,200, 86,129,222, 8, +182,142, 19,154, 99,133,204, 63,126,246, 96, 23,121, 66,238, 52,208,172,168, 49, + 94, 60, 71,164,144,243,232,219, 42, 77,205,234, 27, 51,100,236,151,183, 68,151, + 51, 21, 89, 53, 3, 79, 62,227,174,229,141, 34, 80,138,248, 95,161,120,191,140, +138,133,241,202,174, 71, 30,170, 86,180,104,201, 20, 0,230, 67,162, 28, 0,230, + 45,162,132, 72,144,108,240, 95,224,213,161, 82,118, 78, 84, 73,120,200,210, 51, +194,254,156,244,123,196,224, 96,219,163, 76, 60,154,178, 73,186,152,220, 10, 20, +129, 48, 40,106, 15, 15,194,109,198,213, 54, 79, 12, 4,165,227,161,222,126, 35, +191,236, 22,205, 29, 99,153,227, 16, 96, 30, 17, 61,185,184, 98,179, 97,128, 76, +236,107,173,240,204,178,136, 29, 32, 5,116,133,176,166,187,194, 11,168,125, 84, +111,115,103,203,131,137, 28, 6, 41,233, 49, 79, 75,204,250,208,170,208,153, 72, +148,149,193,138, 14,145,131, 14, 9, 31, 71,214, 86,100, 49,145,182, 19,135,142, +242, 4,168,251,247, 19, 84,132, 74,255,152,141,215,181, 0,224,251,114,192, 64, +114,217, 54,121,179, 81,106, 74,131, 1, 68,213,175,142,207,245,104, 33,251, 54, +171,100,212,195, 39, 30,214, 34, 71,140,186,203, 31, 6, 2,183,180,234,160,116, + 23, 43, 50,174,230,220, 99, 1,108, 41, 11, 25,209, 58, 5,108,217, 31, 0,118, + 93,141, 36, 26, 50,147,218, 30,168,139, 38,160, 22,230, 87,121,204,110, 36,176, +158,234,188,249, 51, 72, 94, 73,212, 7, 25, 18, 35, 45, 70,164,108,194,190, 75, +235, 62,255,221,136,234, 68,134,151,142,175, 76,116,211, 4, 92, 48, 83, 84, 20, + 2,243, 80,235,134, 21, 24,233, 0,146, 51,167,131, 90,183, 26,131, 2, } ; -// ../Source/Template/GB_jit_kernel_proto.h: -uint8_t GB_JITpackage_115 [2452] = { - 40,181, 47,253, 96,170,145, 85, 76, 0,154, 73, 8, 14, 39,208,176,204, 3,239, -189,192,126,148, 26,178,110, 73,166,115, 34,229,154, 10, 66,140,141,213,199, 70, -126, 3, 33,132, 84, 91, 96,205, 82, 15,131, 43, 30,128,215, 0,206, 0,215, 0, - 60,212, 44,243, 98,109,152, 7, 52,189,251,125,218,142,203, 63,226,108,219, 35, -239, 70,222,187,186, 67, 96,241, 89, 99,189,200,111,250,213,143, 48, 40, 22,223, -249,158,239, 71, 31,167, 95,228,251,156, 10,122,190, 33,228, 31,107,221, 61, 46, - 30,170, 57,212,204,207,182,225, 6,164,226, 98, 97, 36, 30, 54, 95,141,245, 0, - 30, 15,211,194, 89, 46,218,196,172,236, 98, 69, 76,141,245,178,230, 2, 60, 6, - 4,164, 0,251, 85, 10,198, 71,216,246,106,110,207,214,187, 2, 44,207,182, 94, - 44,128,162,210, 4, 60,219,217,150,219,203,243,254,101,220,203, 99, 28, 63,162, - 72, 3, 82,128,193,100, 64,122,168, 66, 62,226,183, 67,171, 23,136,255,249,186, -230, 92,238,163, 45, 98,242, 3,233,118, 64,176,124, 83,112,179,253,134,219,131, - 63,119, 65, 60,198,244,183,214, 60,183,224,167, 63,194, 39,160,187,222,224,196, - 54,111,187,153,253,106, 76,233,240, 18,201, 35, 64, 34, 9,149,118, 24,211, 58, -229,111,182,205, 76,211, 68,161, 80, 50,148,179,142, 74, 27, 33,169,107,111, 74, - 79,148, 56, 75, 53, 37, 5,180, 41,166,149,127, 24, 2, 64, 13,121,254, 30,239, -110,114,248,245, 40,135,154, 37,195,208,248,137,209,203, 82,149, 73, 29,185,235, -228,129,204,119,122, 36,150,211,139,233,219,238, 63,148,243, 30,249, 94,166,239, -161, 62, 34,137,122, 8,246, 80, 79, 15, 53, 37,212,249,196,203,183,155, 31, 12, -130,220, 54,169,178, 75,206, 10, 76,211, 94,242, 59, 43, 82,202, 24, 99,229,163, -140,124,235,197,124,110,236,172,120,212,238,143,231,168,243,139,113, 53,220,157, -207, 13,167, 93,198,168, 50,117,159,212,247,122,119,231,118, 71, 95,101,242, 59, - 63, 74,198, 74,231, 89,215,136,122,207,221,157, 86, 30,242,158, 71,171, 42, 70, - 32, 15, 89, 90, 5,151,245,237, 17,200,191,214,228,107,202,237, 0,129,122,110, - 27, 86,116,112,112, 48, 77,147,148,146, 66,137, 58,223, 87,179,153, 32, 5,114, -116,237, 56,228, 88,105, 96,114, 24,166, 98, 69, 28, 54,119,146,237, 72,105,155, -220,197,154,200, 88,219, 37,106, 27,132,113,168,193, 48, 76, 67,231, 86, 8,164, -156,126,187,217,105,205, 90,172,112,151,156, 92,164, 50, 11, 85, 65, 22,211,202, -177,174, 22, 22,169, 13,179, 80, 29,185,111,218,121,143,216,108,205, 49, 47, 12, -134, 94,198,180,147,183,203, 69, 30,238,241, 13,187, 10,187, 48, 82,154, 16, 72, -158, 14,157,156,126, 51, 4, 43, 1, 1,193, 79,211, 84,161,245,173,249,212, 30, -183, 57, 80, 12,206, 44,137,108, 11,126,190,223,250,249, 83, 31,201, 72, 92, 96, -168,252, 39, 83, 5,202, 7,164, 84,104, 57,252,234, 91,220,133,218,139, 60,148, - 51, 53,153,200, 83, 51, 15,245,114,116,167,211,242, 77,117,157,150,135,209,214, -189,218,206,220, 22,156, 19,234,183,243, 80,206, 93,219,135, 19,143,135,230,122, -217, 2, 60,254, 31,218,128, 72, 84,112,154, 69,154, 92, 56,204,182,105,154, 36, - 77, 36,102,101, 44,214, 37,203, 98, 67,198,146, 7, 7,211, 68,161, 84, 44, 41, -109, 91,131,204, 42, 76, 14, 72, 19,173,170, 34, 1,193, 52, 77, 20, 10,151,101, - 82,130,244, 80, 6, 4,161, 10,244,171, 97, 55,200,245,174,148,243, 94,166, 95, -223,250,227,221,118, 81,190,115,210, 15,196, 52,235,155,195,204,114,101, 24,142, -252, 17,158,233,238, 91, 22, 47, 28, 4,132, 6, 68,214, 88,215,235,202, 87,228, - 61,214,203,215, 39,211,153, 57, 92,219, 22, 37, 6, 33,103, 92,206,105, 23,114, -207,242,240, 37, 18, 10,220, 80,151,118,232,197,224,133,105, 87,146, 36,138,163, -137,229,244, 3, 39,214, 22, 31,180,200, 98, 47,211,111, 86,170, 90,108, 57,101, - 97,214, 86,113,232,157,177, 92, 26, 64,190,217, 26,135, 53,244,236,166, 48,149, -117,201, 57,139,212,242,203, 97,163,181, 93,153,130,144,168, 50,212, 80, 33, 53, - 51, 35, 73, 73, 10, 82,104, 12,130, 82, 4, 97, 96,146,131, 56,233, 32,222, 34, - 56, 36,136, 65, 32, 6, 65, 16, 12, 97, 8, 16,132,128, 70, 16, 4,225, 16, 12, - 97, 64,132, 8, 8, 33, 20, 25, 99,172,146,179, 3, 79,112,160,252,209,165,247, -240,201,209,170,188, 21,191, 16,213, 17,113, 42,235, 99, 48,172, 65, 91, 5, 24, -228,250,251,130, 48, 5,180,158,146, 31,130,114,146, 14, 21,185, 3,129,151,247, -225,254,237,109, 84,247,139,188,136,169,136,224,192, 59,103, 68, 66, 48,186,182, - 92,224, 68,242,122,174, 77,162,126,202, 2,110,224, 75,245, 11, 40,247, 65, 61, -134, 64,108,136,198,203,195, 41,165,174, 1,168, 15,225, 10,248,166, 1, 77, 25, - 33,109,144,185,250,130, 28,128, 99,117,174,248,164, 50, 56, 56,207,247, 79, 19, -208,151,135,101, 61, 46,103,188,132, 39,137, 82,200,185,170,219, 82,199,153,249, - 65, 41, 74, 43, 4, 9, 3, 18,115, 87, 66,105, 91, 69,220,138, 2,106, 8,252, -198,244, 31, 49,155, 69, 81,153, 89,112, 38,154,143, 94,187,115,149, 38,124, 57, -224,140, 75,156,124,247,199,127,165,230,185,162,180,219,229,130, 2,120,228, 20, -244, 46, 26, 82,118, 51, 48,255, 41, 75,172,155, 73,153,178, 76,148, 77,131, 33, -135, 86,113,156,196, 0,178,152, 25, 21,135, 86,249,105,165,215,134,152,127, 54, -179, 62,179,148, 95,141, 27, 78,248,176,209,116, 96, 59, 20, 19, 92,104,244,113, - 83,244,147,135, 61, 10,132, 56,200,170,115,163, 27,108, 95,205,137, 49,102,119, -129, 89,163,106,118,205,105, 63,171, 51,195,173,211, 50,241,192,250, 11, 44,215, - 21, 0,139,184, 11,207,235, 98, 3, 79, 99,203, 62,198,217,111,199,119,214,115, -185,134,205,135, 40,185, 48,166,165, 75,237,195,170, 70,149,203,142, 8,204,138, -157, 70,162,146,108, 89, 35,155,108, 55, 2, 75,144,121,105,119, 49, 11,140,163, -235, 47, 10, 37, 63, 83, 21,200, 87,241, 21,193,202,196, 39,170,114,144, 31, 26, -135,150,156,100, 51,189, 51, 67, 46,125, 86, 5,147,246,205, 10,233,199,159,109, - 22, 31,200, 31,235,113, 43,236, 80,246, 8,164,208,241,215,154, 74, 97, 39, 1, - 99,140,159,143,235,226,110, 21, 43,173, 82,211,134,111,170, 9, 81, 93, 54, 33, - 91,138, 51,250,205, 29, 82, 22,242,127, 20,209, 57, 24,220, 3,117,191, 45,113, -109,111, 81, 52,223,132,194, 63, 76,148,223, 0,146,105, 99,186,138,113,168, 3, - 21,133, 32, 79, 60,204,120, 52, 83, 86, 48,157,181, 35, 9,244, 15, 23, 61,144, - 54, 54, 10, 99, 53,234, 96,133,166, 71,209,205, 54,113, 12, 83, 59, 96, 92,115, -157,168,201,186, 88,120,239,230,117,234, 56, 18,204,128,236, 78,234,157, 87,245, - 21,149,204,155, 10,143,117, 44, 30,149,160,113, 64,201, 9,186, 9, 87, 9,188, - 86,120,255, 44,190,101,182, 10,131,115, 31,148, 1,198,119,250,164,223, 38, 9, - 52, 13, 79,137,136,115, 91, 41, 93, 76,106,165, 50,192, 59,134, 61,221,203, 10, - 90,197,247,208,210, 29, 32,169,196, 3, 90, 64,236, 34,215, 93,214,205,213,231, - 33,141, 86,215, 63,218,104,223, 0,245, 86,107,185,222,228, 30,210, 27, 5, 92, -232,246, 76,233,203,144, 30,154,234, 20, 92, 92,242, 37,137,196,172, 55, 14,173, -128,150, 14, 31, 56, 33,123,220,233,127, 87,125, 91,191, 61,105,161, 25, 21, 58, -108, 52,124,112,225,185,143,160,117,236,141,126, 45,114, 78, 39,202,244,152,162, -109,230, 40, 69,181,128,107,128,140, 96,139,208,135, 36,239, 62, 17,229,177,123, -172, 13,181, 35, 73, 96,120,157,160,133,178, 48, 93,117, 69, 30,250,196,140,180, - 5,145,161, 7,205,178,119,154,236, 9, 26, 14,232,249, 6, 93, 60, 2,110,192, - 67, 58, 57,251, 88, 16, 51,144, 22, 32,204,192,138, 93,188,103, 24, 35, 15, 75, -143, 72, 19,218,133, 99,188, 89,136,204, 38,145, 38,129,196,221,209,124,201,132, -230, 93,235,157, 65, 97,100, 96,165, 65,101, 88,193, 60,171,148, 98, 14,223,109, -168, 86,104, 23,164, 54, 7,100,226,221,249,115,178, 28,241,108,183, 97,139,202, - 34,191, 55,127,187, 53, 16,137, 51,197,143,175, 95,106,174, 11,207,131, 71,167, -126,206, 15,204, 96, 96, 50,174,215,174,220,169,164,179, 11, 15,112, 90, 7, 69, - 61,249,126,229, 37, 98,140, 99,107,126,105, 40,193,208, 50,160,163,190, 29,217, -123, 97, 28, 56, 56, 23,164,135,125, 79,132, 79, 93,193, 10,213, 67,113, 71,178, -128, 39,130,167,113,222,211, 86,136,152,146, 21,117,200, 3, 13,163,140, 80, 86, -237, 78,151,122, 49, 10,111,204, 88, 45, 19,212, 55,255, 97, 21,216, 27,136,163, -102,119,219,139,169, 47,160, 88,114, 36, 31,132, 43, 77, 24,100,210,139,211,251, -182,159, 8, 78, 32,236,103,145, 70,217,253, 7,210,236, 0,145, 19,205,133,247, -197,180,121, 46,225, 67, 20,242, 76,243,173,196,174,210,138,159,111, 54,206, 80, - 42, 58,225, 82,209,148,153, 42,225,171, 28,198,240, 46,218,246, 64,185, 88, 32, - 12, 64,200, 1, 30,120,253, 4,163, 66,166,192, 3, 99, 50,113,104,234,213, 58, -223, 71,167,254, 55,212,241,193,163,133, 15, 42,155, 37,142,157, 56,170, 3, 49, -221, 32,242,142,131, 47,167,230,121,213,155,214,187,155,111, 79,125,153,104, 37, -106,133, 6,248, 43,249,248,149,169, 44,209,145, 8,161,217, 94,113,152,181,108, - 23,220, 28,246, 61, 52,186, 76,249,250,123,253,167,115,241,209,192, 27, 95,249, - 27, 72, 36,158,246,130,202, 90,162, 64, 30, 43, 16, 65,192,148,223,238,227,181, -127,178, 84, 59, 71, 89,138,156, 15,210, 76,160,147,217,132,225,208,150,222, 45, -113, 22, 41,202, 11,205,201, 6,237, 55,160,147,167, 29,171, 43,129,217, 76,122, -205, 86, 90,185,230,242, 10, 99,205,251, 41, 15,170, 8,173,225, 59,223, 43, 45, - 38,253,150,235, 39, 17,188,208,132,186,196, 29,243,141,193, 22,249, 17,164, 38, -216,122, 41,118, 10,208,196,231,109,195, 64,138,205, 30,209,121, 3,173, 52,100, -160,119, 34, 54,169,225, 15, 2,100, 30,133,173, 68,204, 21,184,119,108,174, 40, - 94,184,132, 94,177,155, 11, 93,112,209, 51, 1,214,245,143,103,140,102,130,211, -169, 19, 1, 41, 81,198,134,215,199,153, 0, 25,197, 16,157,159,220,218,137,167, -172, 44, 31, 68, 59, 52,233, 22, 49,178,201,227,112,180, 79, 29, 16,186,140, 77, -159, 6, 86,128,150, 77, 46, 10, 80, 91, 31, 81, 0, 36, 50, 15,130, 88,193,160, - 69,183,102, 73,132, 16,154,130,202,123,207,188,154,127, 82,161,200,242, 47, 86, - 48,111,241,250,186, 58,105,152,179, 6,229,190, 56, 42,217,161,163,241,186, 37, - 5,175, 10, 43, 43,128,240,205,167, 6,254,246,142, 83, 70,106, 76, 29, 69, 99, -128,118, 5,155, 62,160,160,110, 28,120,139,125,203, 8,181, 21, 23,111, 71,132, -185, 66,253,131,230,182, 81, 32,235,106,214, 31, 52, 3, 14,204,244, 75, 71,221, -188, 49,182, 73,237,199, 49, 23, 85,175,238, 23, +// ../Source/Template/GB_AxB_saxpy4_meta.c: +uint8_t GB_JITpackage_99 [909] = { + 40,181, 47,253, 96,254, 9, 29, 28, 0,182,234,129, 40,192, 18, 89, 29, 74, 4, +198, 98, 30,222, 5, 14, 4,172, 77,205, 69, 93,188,126,147, 10, 99,206,215, 97, +170,156,227, 74, 58,143,167,223, 85, 20,138,235, 32, 4,121, 0,110, 0,120, 0, +219,148, 30, 60,195,109,170,209, 92, 59,171,164,198,181, 39,173, 72, 22,148, 75, + 36,107,205,109,220,152,227,188, 97, 80,204, 57, 14, 62, 58, 48, 32, 48,144, 20, + 10, 8, 12, 14,205,231, 17,166, 26, 73,121, 4,126,179,101,219,209,235,145, 5, + 43,113,243,228,133, 96,176, 58,211,207,114, 36,158,236, 50,205, 60, 62,186,237, +109, 54, 73,227, 43, 61, 12, 31,113,220,167, 29,211, 79,143,162, 0,156, 12, 76, +103,144,185, 59, 12, 97,227,109, 72,140,197, 13,136, 69,136, 75, 36,142, 36,145, + 4,158,247,225,190,242,120,210, 78,170,182, 62,171,242, 23, 22, 24,201,168,173, +182,123,111,249,184,183,153,101,247,107,179,228,190,238,155, 83,190, 35,120,210, +108,107,174,254,200, 85, 73,252,218, 71,152,235,122, 59,227, 89,103,121,187, 54, +134,212,215,171,244, 25,203,217,222, 38,223,214,111,153,106, 28, 99, 84,122,105, +215,248,149, 74,153,163, 95,230,215,106,207, 26,127,223,112,213, 30,211,103,118, +203,221, 29,211,237,114, 8, 34, 6, 82, 7,149,137,162,244,199, 73,205, 55,153, +246,149,220,236, 12, 58,117, 93, 68,236,226,170, 46, 11, 69,169, 48, 11, 70, 0, +252,129,177,163, 25, 4, 63,153, 52, 56, 72,211, 39,175,205,105,230, 51,134,144, +144, 43,125,198,213,206,141,212,224,228, 27, 14, 65,211,243, 74,165,226,225,249, +133,161, 44, 11,198, 8, 62,154,120, 52, 61, 55,198,255,223,113, 58, 28, 71,163, + 89,133,228, 74,181,206, 32,191,246,222, 14,112, 40, 21,133,133, 98, 2,195,172, + 74,163, 1, 78,204,181,241, 68,214,249,218,142,243, 65,208,152,235, 15,200,140, +116,150,156,215,117,134,188,179,143,155,149, 22, 92,235,172,126, 1,239,128, 52, + 10, 31,101, 96,217,221,214, 79, 6, 62, 77,211, 52,197, 24, 99,220,128,158,141, +203,130,161,174, 11, 94, 32,134,186, 92, 68, 64,240, 57,101, 97,224,197,130, 18, +206,214, 84, 9, 33,165,219,230,221,131, 78,188,135, 71,124,126,129, 19, 87, 21, + 39, 88,204, 52, 88, 76,177,120,206,218, 76,230,153,248, 60,233,205,184,175,192, + 51,182,192,241,252,178, 44, 20, 19,133,129, 1,128,167,168, 33, 77,163, 12,137, +204,136,164, 36, 5, 73, 26, 3, 96, 68,100,172,170,234,114,112,112,150,133, 41, +134, 20, 36,196, 4, 66,193, 72, 36, 50,138,202, 42, 40,116, 55,113,162,203,219, +178,209, 58, 5, 70,192, 85,152, 56, 30,157,157,222,132, 25, 34,175,251,151,170, + 68,120,240,186,188,108, 41, 90,171,134, 3,106,170,220,226, 72,168,134, 61,197, +195,239,190,185, 79, 72, 41,217, 18, 4,145,228,135, 72,238,199,146, 36, 3,139, +255,144,198, 57,202,166,251, 59,137, 11,109,249, 32, 95,196, 23, 25,133, 67,107, + 96,128,255,229,250,124,160, 3, 33,195,171, 74, 99, 45, 37,134,145, 58,159, 66, + 20,202,212,218,160,101,216, 29,209,219,212, 80, 93,179, 32,132,206, 50, 38,225, +181,145,213,191,145,228,158,226,109, 10, 21,189, 16,162,110, 40,199,208, 48, 15, +110, 51,145,192,215,111, 14, 60, 70,218,163,167,230, 3,172,200, 25,138, 64, 69, +185,182,123,101,170, 68,124,154,192,175, 51,129,164,129,150,112,135,131,217,134, +252, 42,158,104,144, 13, 45,123,165,230, 89, 11,238, 54, 14,142, 5,219, 78,219, +116,202,210,117, 59,100, 62,165, 48,186, 6, 21, 95,126, 66,195,140,171, 69,147, + 23, 33, 85,204,119, 61,221,115,137,242,233,166, 2, 46, 89,147, 41,251,136, 23, +235,212,250, 70, 64,207,120,155, 85,126,208, 75,240,169,209, 5,121,193,130,195, + 15,187,168, 77,247,240,249,149,187, 68,115, 0,175, 66, 30,252,155,255,250,249, +214,190, 60,236, 43,166,228,222,100,154, 58,139,176,248, 52,217,173,185, 96, 29, +158, 6,165,198, 81, 4, 16, 76,181,105, 74,127, 48,217, 42,183, 4,169,228, 31, +209, 91, 86,251,116, 67,245,112,239, } ; -// ../Source/Template/GB_log2.h: -uint8_t GB_JITpackage_116 [613] = { - 40,181, 47,253, 96,114, 4,221, 18, 0,230,225,102, 32, 0,153, 27, 87,209,154, -120,225,232,208,118,180,139,154,137, 13,147, 19, 86,217,177,250,154, 88,174,143, -252,255,255,254, 16, 2, 95, 0, 93, 0, 92, 0,213,187,223,174,208,100,131, 77, - 63, 93,199,206,105,156,193,239, 57, 77, 41,164, 9, 7,173,160, 93, 10, 67, 65, -107,171,139, 77,192,127,146,147,198, 32,173, 2,179, 45,189,167, 9, 29,200, 22, - 1, 77,242, 90, 24,142,175, 52,117, 60,127,216, 1,104,237,217,190,142,178,166, -246,190, 73,157,131, 93,207, 42,187,175,127,158,235, 55, 3,196,180,207, 82, 46, - 98,233, 44, 3, 92, 89, 22, 22,219,219,125, 70,210,201,112, 28,202,134,217,100, - 52, 18,172, 74, 7,243, 87,159,190, 95,107,169,103, 89,177, 61,235,171,199, 61, -232, 69,108, 68, 2,145,104, 21,165,178,116,109,109,194, 87, 45,237,233,245,123, - 92,195,174,178,235, 55,206, 63, 10,120,253, 0,224,194,105, 22,205,230,249,172, -222, 7, 0, 5, 76,187, 28,236,164, 9,210,140,235,239,125,174, 62, 49,151,227, -184,179,180,218,236,187, 22, 11,235,135,117,221,151,101, 12,108,202, 25,108,119, -236,152, 58, 71,163,217, 42, 22,169, 45,167,163,208,206, 24, 99,119,108, 43,115, -136, 68,174, 31,198,184, 97, 40, 83,122,198,245,113,216,132,217,109,145,226,182, -137, 54, 74, 87,180,227,234,103,250,225,136,227,252, 36,193,206,182, 54,118, 59, -219,254, 12,115,167,169, 12,241,127, 58,123, 1, 0,171,208, 14, 71,199, 22, 68, -204, 79,159,229,231,117, 58, 14,219, 71,147,134, 22,196, 93,237, 99,236,215,132, - 31,244,116, 99,246,250,234,218, 38, 88, 84,206,157, 76,121,227,111,210,183,135, - 55, 55,126, 13,200,195, 85, 52, 28,135, 2,210,108,184, 14, 6,224,253,172,134, -190, 12,215, 21,155,209,133,126,180,165,117, 35,118,236, 82, 6, 49, 28,185,174, -131, 89,147, 5, 76, 32, 64,132, 16, 98,102,231,226,139,217,182,166,206,235, 78, -171,176,111, 57,117,149,113, 69, 87,141,131, 65,222,234,181,157,160, 13,100,164, - 40, 23, 16, 26, 41,224, 30, 4,228,209, 28,106,133, 90, 68,249, 84,214, 78,190, - 90, 74, 40,108,116, 96, 81,132,238,203, 21, 33,147, 85, 0, 24, 90, 2,197, 0, - 6,142,198,147,239, 2, 64, 7, 20,185,194,198,196,216, 0,160,149,130,248,120, - 1, 56,192, 72,161, 5,228, 2, 28,146,110,152,202,190,223,130,205,133,145,127, - 22,249, 0,166,172,114, 19, 44,221, 97,129, 90,171, 22,251,200, 97, 35, 16,182, -120, 88, 65,255, 9,191, 8,225,220,184,109, 75, 50, 70,159, 94,152,167,183, 36, -135, 63, 88, 15, 39, 86, 68,186, 64, 37, 30, 34,240,171, 5,102,208,204, 60, 51, -221,134,208,106,243, 67,224, 56, 89,133,162,206, 13, +// ../Source/Template/GB_AxB_saxpy4_panel.c: +uint8_t GB_JITpackage_100 [914] = { + 40,181, 47,253, 96,129, 21, 69, 28, 0,230,167,123, 33,240,214, 54, 72, 4, 78, + 65,105,204, 13, 17,104,121,252,125,153,254,190,111,137, 57,205,201, 20, 70,164, + 76,145, 77,132,109,244, 5,115, 0,110, 0,114, 0,135,130, 70,248, 17,188,103, +117, 6,250, 88,196, 59,127, 72, 33,188,206, 15,226, 10,161, 19,201, 20,194, 31, +161,175, 95,227,122,143, 32,172,241,178,172,142,109,218, 65, 35, 40,178,131,230, + 23,104, 57,166,241,232, 70,188, 80,221, 52,110, 83,132, 61,199, 54,181,194,141, +231, 69, 59,198,107,244,158,155,223, 56,221, 84,254,217, 20,125,226,168,233,157, +160,250, 99,224, 19,103,128,133,242,243, 61, 45,194,116,150,174,182, 92,169, 90, +174,115,131,161, 34, 24, 12, 1,229,245, 31,221,209, 57, 23, 77,215,159,150,119, +228, 31,194, 72,139,115,129, 95,228, 21, 10, 97,216, 10,207,212,191, 4,101,172, +245,239,244, 20,153,160,143, 32, 30, 73,142,109,207, 56, 53, 81,240,138, 92,226, +113, 50, 22, 12,196,118, 38,254,227,246,207, 88,252,240,181,233,133,109, 45,103, +181,173,182, 44, 83, 17,226,126, 25,126,223,242, 20,189,103,249,121, 69, 27,127, + 14,241,207,245,151, 97,190,163,235,208, 28,247,139, 92,227,209,171, 2, 31,248, + 52,227,125, 93,155,134, 66, 89, 0,107,219, 4,154,150,191, 28,125,131,172,225, + 31,210,227,223,225, 3, 45, 50,213,226, 81, 56,187,161,136, 56,144, 17,180, 16, + 35,107,248,133,141,213,242,106, 39, 92,231, 91,103, 19,100,236, 7, 93,131, 1, +248,163,124,221,209,240,131, 63,188,146,190, 45, 34, 97, 57,195, 17,254,250,130, + 94, 85,167,235,204,150,143,224,198, 36,237,238, 94,157,170,170,208,185,185, 51, +246,240,195,107,150,158,255, 63, 83,120, 31, 13, 85,149,170, 66,164,237, 44,105, +189, 10,199,226, 93, 36, 27,137, 38, 99, 67,164,229,114, 26, 72, 49,118,153, 94, +241,195,204, 31, 15,207, 66,254,232,143, 36,207, 52,109,219, 26, 78,222, 71,191, + 42,181,105, 90,150, 29, 62, 80, 61,171, 99, 36,190,150, 87,132, 11, 28,159,167, +199, 49,118,199,153,121,252,244, 48,191,173,167,192, 96,216, 54, 45, 51, 53,182, +156, 99,164, 99,165,206, 49, 79,210,109, 90,214,240,235, 64,130, 44,231, 36,154, + 90,129, 72, 34, 34, 14,115,128,174,160, 65,189, 98, 72,102, 68, 68, 82, 90,144, + 20, 26, 3, 96, 68,100,202,104, 61,209, 1, 30,127,157,214,197, 79,222,125, 32, +127,200,138, 6,157, 24,146,187, 11, 24,244, 46,133, 57,120, 41, 6, 72,189,159, +144, 82, 14, 24, 6, 45, 18, 14, 65,182,176, 54,103,202, 95, 36,250, 9,170,111, + 36,164,250,122, 56,157,140, 56, 49, 59,160,183,147, 7, 61, 65,200,130,218, 42, + 17, 21, 64,149, 13,174,166,198, 80, 54, 42, 5,110,163,254,109,181,143, 86, 83, +125,217, 65,220,230, 98, 63,192, 55, 32,131, 6,242,160, 12, 26,200,160,106,135, + 14, 1,179, 96, 96,186, 52, 96,125,139, 53, 47, 0, 97,192, 67, 67, 60,117,205, +157,136, 90, 53, 57,120,230,176,153, 35, 98,209,114,189, 49, 30,246,201,249, 10, +199,247, 20,103, 39,226,203, 87,111,160,184, 25,193,220,225, 81,162,157, 66, 23, +192,126,192, 68,139,109,215,200,205,226,106, 50,195, 12, 14,183, 32,122, 3,110, +155,223,187, 50,123,248,123, 13, 98,195,131, 67,212, 57, 25, 37,143, 99,248, 77, + 1, 4,197, 92,254,230, 53, 4,148, 65,153, 47, 49,130, 90,129,253,129,110, 45, +230, 44, 56,238, 64,126, 80,139,200,198,163, 8,246,205,130, 7,128,244,103,247, + 29, 32,204,192,213,220, 43,162, 65, 41,212,141,120, 0, 14,236,244, 69,193, 89, + 6,164, 29, 0,137, 1,162, 46, 44,128,177,157,128,119, 59,179, 58, 37,168, 30, +190,189, 12,219, 64, 51, 55,111,201, 41, 90,168, 54, 9,165,165, 28, 99,192,129, + 45, 4,215,142, 90, 6, 45, 0, 37, 54, 1,194, 32,183,165, 26, 32,234,185,166, +102, 56,242, 96,199,136,107, 16,240, 16, 72,102, 38,231,131,105,116,217, 0, 0, +201, 39,232, 86,100, 3, 66,136,241,249,146, 3,210, 77,147,243, 51,147,186, 8, + 87, 29, 82,148,136, 10, 60,128, 57,110, 80, 69,175, 24, +} ; + +// ../Source/Template/GB_AxB_saxpy4_template.c: +uint8_t GB_JITpackage_101 [3122] = { + 40,181, 47,253, 96,236, 72, 69, 97, 0,154, 96,212, 17, 45,176,172,172,115,200, + 50,240,251,252, 57,188, 69,102,150,141,253, 38,154,131,160,219,167,185,111, 38, +172,169,240, 92,229,182,175,114, 77, 14,153,117,252,160,255,160,255,194, 67, 9, + 12, 1, 10, 1, 27, 1, 22,217, 13,220,217,191,103,182, 13, 37,219, 89,121, 49, +154, 97,253,255, 12,134, 4,203,214,218,100, 5,134,116,201, 80, 92,209, 55,202, + 17,218,158,103, 43, 48, 46, 14,172, 13, 86,217, 88,155, 91, 43, 92, 22,131, 79, +249,104, 61,158,149, 59,233, 8,121,147,106,172, 42,131, 81, 68, 84,149, 78,153, + 61,235,202,147, 61,149,110,215,250, 31,242,242, 7,185, 30,234,216,240,182,185, + 75,107, 58,233, 71,239, 61,153,245, 43,189,210, 11,191, 48,203,228,153,187,231, +110, 95, 92,227, 27,130, 31,205, 26,213,169,233,113, 39, 91,174,224, 47,157, 16, +255,195, 54,228,193, 88,120, 72, 28,204,101, 18,172, 62,169,220, 91,223,201,154, +229, 96, 59, 57,235, 7, 71,131,134,204, 67, 99,139,202,150, 53,183,151,243,180, +230,158, 87, 61, 18,144, 44, 72, 28, 7, 34, 11,146, 75, 89,244,104,219, 66, 54, +252, 81, 61,196, 93,250,245,245,184,169, 30, 42, 28, 40,171,195,100,195,183,195, + 13, 3, 2,202,239,118,231,149,199,202, 96,136,131,176,173, 18,180,213,163,231, +133,219,109,223,242, 88,105, 84,212,100,249,132,175,244,192,143, 47, 86, 32, 4, +130,164,197, 42,160, 10,171, 56, 28, 2, 97, 56, 32,144, 7, 89, 30,150,175,189, + 61,195,219,147, 62,235,203, 31,119,187, 74,106, 31,163,237,202, 20,196, 44, 32, +117,122,111,101,123,242, 83, 30,115,238, 36,196, 37,156,138,190, 89, 48, 85,178, +151, 73,146, 20,125,242,133, 43, 56,181,141, 85, 38, 80, 2,135,214,212, 34,170, + 72,141,232,211, 59,149,232, 82,199,225, 98, 8, 42,107,149,190,210,143,252, 62, +191,208,163,217,103, 63,130,211, 17,234, 56, 58,143, 18,117, 7,138,131,162, 92, + 18,113, 72, 62,147,200, 7,156, 12,212, 35, 21, 41,226,152,196, 73,100,105, 28, + 66, 69,123, 22,195,124, 58, 40,227, 68,209,169,155,117,189,150,107,227, 22,122, + 65, 24,206, 36,104,187, 74, 47, 46,123, 30, 46, 17, 5, 40, 50, 13,170, 77,180, + 32, 44,234, 30, 79, 9, 58,168, 75, 49,126,173, 89,116, 30,163, 71, 72, 88,151, +117,105,170,204,255,201,159,199, 91,229,181, 31,219,150,202, 55,122, 91,233,205, +216,130,103,127,149, 47,107,159,166,121, 6,202, 23, 78, 69, 82, 36,102,253,201, + 25,210, 34,246, 66,141,185,204, 94,154,145,213, 36, 87,238, 98, 95, 56, 61,246, + 60,121,240,163,151,159, 71, 86, 80,129,114,173,239, 41,141, 83, 7, 77,246, 2, +212,163, 58,151, 53,119, 97, 99,196,129, 97,115,225, 31,173,236,153,178, 94,235, + 87, 64,122,230,174,172, 63,122,229,132,104,209, 92, 48, 87,229,208,152,131,243, +141, 55,166, 41,239, 79,212,165,207,193,121,134, 15,229, 28,206,190,147,102, 84, +171,244, 59,157,167,128, 52, 6, 97, 2,100,143, 0,103, 45,244,178,249, 9,159, + 9, 3, 86, 13,153,137, 75, 77, 32, 12,229,151,164,142, 39, 58,164,241,169,163, + 99,222,128, 92, 66,199,115,185, 38,186,199,254, 99,215,242,145,114,233, 70,191, +104,170, 7,203,165, 1, 99, 96, 61,144, 62,159,248,233, 60,145,149,215, 66,158, +188,237, 75,159,216, 69,151,186,216, 81,245, 6,151,135, 12,132,132,197, 1,128, + 15, 24,112,205,197,122,200, 88,145, 3,214, 53, 86, 97,215,195, 4, 68,164,115, +169, 19,101, 42,136,203,170,108, 46,154, 12,246,233, 66,133, 73, 29, 48,236,117, + 66,170,125,162,238,145, 95, 83,164,134, 39,185, 98,191,146,122, 91,131, 37, 17, + 33, 1,129, 73, 8, 88, 22, 96,155,137,135, 12,182,177,164,142, 34, 60,118,244, +203,101,105, 56, 88,131,172, 91,202, 64,152,232,227,239,151,139,162,130, 81, 92, +214, 21,113,105,176,176, 77,133,105, 5,112,158,122, 54, 67,247,178,253,132,173, +199, 19,166, 12,198, 4, 14,245,139,115, 24, 40,212, 47,164,137,164,163, 95,210, +248, 90,153, 49, 24,186,145,116, 17, 99, 55,132,134, 20,125,242,198,167,130,210, + 90,114, 49,137, 92,112, 36, 61,137, 52, 71,226, 68,231, 44,212,184, 78,186,209, +125,206, 57, 17,135,195,146,159,243,201, 67,155, 84,227,239, 11,237,228,122,253, +143,141,134, 58,183,149,185, 75, 90, 95, 14, 7,206,190, 94,104,185,222,222,118, + 76,182,104, 15,151,201, 11,157,113,129,138,206,158, 20,121,140, 91,116, 4, 87, +132,133, 93, 52, 19, 87,166,178, 80,148, 83,223, 46, 97, 18,162,148,111, 26,119, + 51,210,202, 17, 54, 8, 93,145, 81,239, 17,196, 55,156,180,111,198,182,107,118, +201,147,106,231,206,175, 13,191,223,142,206, 87,106, 96,120,201, 61, 54,136,181, + 10,172,120, 55, 3,229, 84,103,194,186,174,226, 96, 85, 73, 82,236, 62, 81,175, +128,239,164,174,123,228,170,232, 21,134,233,166,169,235, 36,221, 36,210,109,156, + 13, 99,177, 32, 36,174, 42,250,116, 9,100,241, 64,199,108,182,225, 39,147, 90, +105, 17, 58, 28,132,105, 68,166, 15,131,134, 8, 9,203,101,131,105, 36, 22, 96, + 23,118, 93, 28, 58, 21, 80,122, 16,108,237,173, 19,112, 72,131, 52,168, 66,164, +212, 41, 69, 35, 34,146,146, 36,133, 12, 7,114, 32, 8,131,161, 64,143,181, 40, +232, 14,162,128, 52,200, 81, 32,196,176,136, 33, 68, 17, 67, 12, 33,148,136,136, + 4, 34, 36,129,200, 4, 81, 32, 81, 7,137,231, 84,153,101, 6,206,171,142, 86, +139,213, 55,115, 9,163, 40,196,132, 41,161,220, 43, 18, 73, 66, 31, 12,253,118, + 78, 73, 73,224,222,159,148,222,219,166,174,112,127,182,207,126, 45,223, 42, 25, + 13, 31, 98, 7,181,181,162, 13, 75, 79,181,189, 37,157,106, 55,184,129, 3,173, +208,169,234,123,225,180,156,111, 52, 34, 41, 12,189,135, 21, 8,109,156, 19,150, + 22,237, 30,231, 27,143, 63,209,230,207,170,119,238,172, 35,130,160,120, 70,127, +239,219,182,149,186, 77, 12,155, 83,188, 76,155,142,130, 38, 60, 20, 58,172,132, + 2,196, 58, 31,241,228, 87, 13, 35, 67,150,204, 46,233, 23,242,115,197,141,120, +112, 61, 50,154, 42,196, 77, 81,167,107, 65, 53, 53,226,248, 56,125,244,250,187, +134, 13, 34,203, 53,195, 1, 59, 2,197, 73,181, 63,202, 93, 64,232, 17,182, 69, +149,226,195,130,161,225,205,200, 29,176,194,200,136,118,219, 12,180, 13, 74, 50, +104,135,239,105,240, 83,253,190, 66,224, 11, 61,156,220,157, 45,118,145,159,108, + 4,104,213,161,145, 5,211,202, 7,115, 3,210,204,112,100, 11, 14, 84, 1, 98, +111, 76, 15, 87, 59, 76,200,208, 58,215,137,181, 33,188, 26, 81,164, 69, 59,165, + 6, 38,169,157, 11,232,161, 38,189,234,193, 6,132, 94,153, 70,169, 4,103,104, +129, 77, 82,203,149,152, 51,233, 10,154, 11, 98, 73, 58,138,165,158,250, 16,194, +221,179, 85,229,204, 86, 1,173,198, 88,142, 61, 10, 17, 93, 8, 22,109, 90,218, + 2,251,209, 64, 15,250,107, 52,114, 22,226,213,120,215,220,194,232, 6,142,208, +105, 68, 23,168,208, 12, 48, 3, 99,240,162,147,171, 0,173,181, 70,183, 33,201, +210,201,122,228,150,130, 62,228, 17, 94, 42, 39, 76, 62, 53,112,221, 48,226,255, + 45,125,215,153, 33,142,145,192,114, 91, 56,237,202,207,136,237, 41,143,252,121, + 92, 48,156, 24,153, 54,135,136,164,223, 51,170,175, 47, 6, 47, 27, 78,104, 37, +234, 99,104, 70,155,243,168, 24,123,255,118,241,204,237,190, 79,200,225,167,128, + 55,135,155, 88,230, 87,196,238,186, 1,241, 54,159,177,138, 86,228,198, 91,225, +196, 98, 42,216,176, 63,195,118,145, 72,226,188, 40,137,241, 9,103,216,159,104, +238,210,134,238, 27,167, 77,120, 51,190,252,232,116,141,173, 44, 8,133, 46, 72, +157, 98, 13,198, 54, 42, 62, 21, 25, 55,162, 80, 86,171,236, 79,225,209,142,145, + 33,220,199,150,137,187,227, 68, 22,141, 63, 67, 98,219, 61,189, 99,119,231, 55, +255,144, 83,225,133, 64,204, 57, 93,162, 83,175,126, 71,219, 56, 77, 28,211,203, + 24,121,146, 1, 16,160, 76, 80, 26,190,110, 3,235, 79, 32,253,210,127,222, 23, + 89, 75,142, 60,198,138, 59, 94,145,229,139,105,205,201,111,129, 37, 28, 68,219, +112,136, 68, 74, 55,144,182,143,201,139,202,117,232,146, 54,236,122,228, 12, 73, + 24,193,253,221, 98,113,189,157, 48, 12, 7,233,109,128, 64,118,220,143,124,255, +161,250, 21,229,198, 94, 20, 57,101,184, 35, 23, 64,234,147, 40,210, 89,195,204, +233,167,144, 58, 98,217,212,195,228,243, 28, 46,128,246,156, 16,156, 45, 23, 98, +212, 67,118, 99,107, 16, 69,134,154,184,126,156,236,191,165, 19,170,122,202,128, +251, 55, 5,201, 51, 26,104,158, 75,176, 31,145,180, 62,167,159,203, 64, 98, 5, +117,192,162, 91,160, 30, 2,247, 70, 34,104, 17, 28,230,142,225, 93,103,213,160, + 91,135, 33, 24,173,208, 35,217,122,139,222, 41, 46,246, 54, 23, 18, 94, 93,244, + 70,119,177, 23,121,161, 77, 24,101,230,147, 61, 28,177,160,200,145, 19, 67, 17, +255,169, 91,122,216,236, 96,148,135,209, 56, 18,101,163,206,163,219, 61,200, 54, +149, 34, 8, 66,200,150,160,237,136, 92,118, 32, 9,251, 28,118,124, 68,109, 81, + 70, 22,228,230,237, 24, 2, 37,138, 72, 43,207,184,113,163, 25,209,120, 29,137, + 65,177,179,134,201,135,192, 92,191,103,215,105, 57,171,129,233,236,219,172,195, +125,114,111,166, 54,169, 35,190,185,175,205,224,171,120,238,147,214,215,130,124, + 93, 90, 21, 69, 6,165,103,165, 68, 48, 9,169,243,159, 52,138, 33, 55, 1,226, +231,251, 0,236,117,213,113, 40,148,213, 9, 38,159,160, 42,135,191, 33,219, 61, + 59,119,112,252,111,152,114,183,167,145, 73, 31,223, 56, 87,156,250, 69, 64, 56, + 84,211,188,144,218, 56,205,200,185, 19,126,117, 48,231, 35, 87,149, 14, 86, 21, +230,110,153,160, 68,218, 11,174,211, 38,100,237, 0, 64,130, 41,125,244,232, 0, +116,176,238,222,115,194,240, 4, 13, 44,250, 37, 2,186,248,161, 22,124, 23,153, +132, 16,213,173,174,153,108,181, 92, 6, 34,115, 42,178,135, 34,238, 37, 47, 14, + 8, 99,252, 47,134,191, 89, 28,101,223, 7,160,230,186, 15,240,247, 33, 74, 17, + 56, 56, 6, 94,101, 84,215, 31,198,209,170, 72,204,161, 52, 82, 42,130, 21,134, + 83,224,241, 70,204, 48, 2, 80,211,104,221,217,236, 2, 77,252,230, 87,102,198, +231,134,192,103,131, 66,215,112,156,200, 9, 16,230, 65,194,146,154,127, 29,119, +133, 66,124, 9, 84,146,135, 91,228,138,142,158,243, 42,101, 23, 81, 63,137,196, + 3,148, 1, 92,227,245, 66, 79, 11,202, 41, 60,229, 80, 78, 0, 76,139,160, 43, +137,188,187,197,133,217,172,218,237,164,193, 45,225,204,108,216, 23, 82,195, 6, +175, 66, 32,210,110,253, 57,143, 6,186,153,179, 20,126, 81,159,128,228, 50, 66, +242,106,104, 39, 11, 9, 18,226,109, 12,119, 25, 13, 13,238,196,182,247,157,178, +153,136,140,193, 9,242,145,147,165, 95,181, 15,239,254,136, 80, 63,147, 64, 29, + 38,242, 17,239,239,175,108,240,169,196, 28,217, 37,212,242,245,128, 69,202,213, +229, 76, 52,131, 49,231,179,245,131,171, 78, 87, 55, 80,176,155, 19,108, 19, 39, +156,155, 91,131,161,131, 61,128,235,206, 21, 31, 42, 77,113,244,247,248, 66,189, + 81,182,101,154,228, 49,164,145,255, 88,113,118, 57, 30, 73,126, 84,137, 86, 10, +202,249,225,152,208,117,129,100,120,242,219, 31,173,166,200, 94, 62, 94, 59,115, +222,150,118, 76, 3,254,177,205,165, 41,219, 38,140,245,110,195,202, 26,246, 49, + 37,217, 22,130,148,142, 32,195,182,205, 10,125,205,205,125,117,107,232,200, 70, + 30, 20,226, 85,136,206,244,252,135, 49, 60,202,195, 22,106,229,138,217,136, 73, + 51,196, 32,230,175, 35, 16,102,179,213,101,184,125,114, 39, 27, 79,193,176, 48, +180,160,104,239, 83,130, 51,115,168,200, 56,175,222, 2,110,207,100,206,116,143, +198, 0,113,212, 89, 27, 10, 31,208, 34, 72, 23, 12, 21, 61, 43,133,138, 95,156, +195,221, 98, 94,132, 83,230,125,110,111,109,178,137, 27,170,105,211,209,142, 59, + 64,120,221,120,125,227,178, 49,200, 39,199, 49, 93, 81,144, 38, 13,127, 0, 62, +229, 19, 35, 57, 64,165, 28,238, 48,101,160,161,227,172, 47, 83,192,250,158, 7, + 48, 99,129, 12,130, 80,113, 50, 27,108, 52,150,237,152,115,101, 40,214, 40, 29, +154, 85,170, 50,108,245,232,183,236, 70, 22,154, 2, 82,150,143,158,168,192,130, +129,205,188, 49,128,144, 80, 24, 3,220, 78, 77,190,110,194, 76,186,109, 32, 5, +114,152,197,195,202, 3,253, 11, 40,104, 35,248,130, 22,171,198, 30, 43, 53,102, + 12, 74, 47,228,195, 94,174, 11,207, 85, 27,164, 56, 33,197,252, 71,193, 63, 49, +112, 54,220, 12,212,144, 10,222, 62, 64,208,144,102,188,137,241, 40, 35,194, 8, +184, 12, 61,221,243,183, 65,122,241, 18, 43, 9,242,208, 90,152, 43,100, 44,201, +254, 92,177,100, 36, 70,140,249, 48,216,129,163,159,157, 32,197,163,114, 75,175, +240,132,171,161,251,118,233,255,150, 50, 27, 21, 46, 26,108, 16,101,158, 24,190, +139,119,192, 12,170,133, 22,150,100,155, 0,156, 46, 67,246, 36, 98,103,246,241, + 78,160,200,127, 89,173,138,239,103,138,243, 58,105, 48, 8,203,175,153,208, 84, +145, 40, 42,145,163, 10, 25, 40,136,158, 96, 35, 1, 13, 86,238,176, 60,239,193, + 29,182, 58, 24,170,246, 7, 33, 31, 49,161,244, 82,100,244,155,163,233,233,158, + 78, 56,172, 22,254, 30,240,160, 55, 0, 63, 0,133,114, 88, 79,148, 8,107,228, +225,220,240, 28, 83,138,151,228, 48, 19,187,115, 0,108,109,112,153,112, 66,248, + 45, 21,185,140,156,237, 97, 6, 88,244,255,165,225, 89,124, 76,175,237, 2,197, +180,194, 19, 81, 59,100, 26, 14,211,182, 22, 36,253, 24,236, 50,227, 83,206,135, +177, 43, 30,140,214, 81,113, 65,126,236,127, 62, 76,148,251, 11,124,170,195,131, +116,222, 22, 10,168,176,255, 71,177, 85, 57,149,123,212,236, 87, 39,122, 33, 55, +205,236, 16, 76,244,150,151, 73, 22,242, 17, 65,185,164, 28, 6,199,208, 42,100, +102, 2, } ; -// ../Source/Template/GB_math_macros.h: -uint8_t GB_JITpackage_117 [706] = { - 40,181, 47,253, 96,155, 5,197, 21, 0, 38,164,108, 32,224, 26,231,201, 71, 0, -188,143,108,167,114, 83,140, 76,168, 47,246,154,206, 81,212,123,234,211,218, 49, -140, 49, 24, 67, 8, 1,103, 0, 97, 0, 94, 0,225, 12, 96,134, 14,193,181,248, -201,148,247,198,237, 25,206, 92, 27,212,112,141,107,127,115,195,141, 42,159, 14, -108,214,109,220,160,227, 44,154, 38,232,148,122,223, 18, 8, 3,130, 99, 28, 12, -136,107, 95,246, 13, 79,150,172,188,243, 62,138,217,162,166,232, 91,200,219, 76, -196,148,188,152, 70,227, 43, 83,161,206,115, 21,194,254,166, 41,212,196,111,136, - 29,182,247, 19,179, 68,145, 38,152, 23, 10, 24, 87, 40, 4, 31,177,252,233,218, -150,197, 84,254, 90, 73,249, 59,109,240,194,185, 19,178,223, 78,217,127, 19,203, -210,181,225,193, 43, 51,190, 98,193,176, 88, 44,154,183,152, 95,237,113, 79,218, -247, 27,174,118,102,153, 87, 41,148,253,158,235,180, 41, 46, 75, 75,195, 95,123, - 49,213, 73,197,119,100,231, 96,149,223, 92, 18,245,173, 78, 20,214,117, 6,176, - 12, 41,228, 1, 81, 50, 34,143, 19, 54, 88, 3,242,227, 93,191,221, 15,231, 45, -174,119,149,251,226, 30, 93,225,155,150, 36,126,182, 53,127,187,205,234,150,205, - 68, 92,114,124,227,174, 75,254,184, 43,211,198,205,149, 65,254,106,124,239,106, - 71, 30,167,163,225,252,182,169,115,157, 29,110, 89, 74,173, 40,250,187,121,109, -203, 84, 93,155,213,223, 58, 60, 30,101,139,202,227, 41,230,217,122,127, 31,171, -188, 3,164, 43, 43,226, 24, 22, 78,176,118, 0,195, 0, 98, 55, 1,111,112, 69, -191, 58, 3, 88, 73,218, 86,169, 32, 31, 90, 58,251,123,116, 52,218,152,253, 92, -181, 85,211,184,236, 13,195, 33,145, 44,187,230,202, 66, 19, 79,211, 24,105,120, - 59, 75,106,232, 18, 29,130, 85,231,193,198,171,198,125,237,236,146,160,202,154, - 39,202, 10,154, 37,197,175,174,194,135, 97,248,195,129,114, 77,168,227,189, 69, -145, 45,109, 99,237,190, 1,113,168,225, 36, 99,140, 49, 19,153, 41, 72, 33,211, - 26, 48,132, 32, 67,103, 61,178, 41, 89,105, 8, 55, 66, 51,145,162,148, 31,229, -219, 1, 89, 11, 16,111, 68, 88,227, 19, 7, 92, 68, 51, 48,236, 23,234, 3, 66, -126,132,148,236,126,101, 83, 62, 53,209,176, 84, 0,144, 36,113, 38,222, 41,117, - 82, 54, 31, 45, 1,101,162,211, 78,164, 32,131, 46,188, 57,187,209,220,132, 90, - 92,158, 51,242,178, 51,205,203, 24, 79,219,174, 89,220, 25, 18, 30,164,171,125, - 92,138,152, 71, 89,183,245, 78,138, 77, 50,231,239,125,139,142,204,188, 91, 60, -159,147,250, 97, 96, 81, 2, 10,168,157,243, 60,190, 71,111, 14, 2, 89,236, 27, -182,198,150, 32, 76, 25,183,232, 53, 70, 3, 84,139,123,249, 90, 86, 44,189,142, -124, 4, 84,229,149, 7, 84,141, 33, 46,188, 28,199, 97, 55, 17, 68,111,120,241, - 14,227,220,200, 16,216,216,209,158,215,228,183, 66,128, 50,202,189,163,183,224, - 3,162,102,254,132, 86, 83,196,195, 95, 38,242, 4,179, 48,159, 24,203,123,148, -209, 36, 81, 1, 25, 83,210, 62,104, 82,149,153,178,126, 55,206, 67,236,220, 18, - 79,208,188, 53, 12,188, +// ../Source/Template/GB_AxB_saxpy5_A_bitmap.c: +uint8_t GB_JITpackage_102 [1090] = { + 40,181, 47,253, 96,145, 11,197, 33, 0, 54,115,152, 40,208,210, 56, 7, 84,147, + 52,161, 39,210,162,178,116,226,198,157,168, 82, 16, 8,221,177,141,249, 16,193, +238,238,113,151, 53,210, 99, 31,240,197,131, 34,247, 23,143, 0,135, 0,140, 0, +124,111,164, 25,119, 91, 4,169,166,237,223, 41,159,201,248, 36, 2,138, 65,197, + 26, 22,233,187,165,114,131,250, 74,206, 34, 42,182,146,177,230, 84, 26,153, 11, + 74,198, 32,149, 45,119,110,175,230,209,157,111,219, 59,117, 96, 64, 96, 80, 45, + 20, 16, 24, 92,130, 77,167,108,131,196,204, 41,239, 35,237, 78,174, 61,167, 48, + 30, 7,106, 52,214,141, 5,131,111,119, 24, 82,101, 58,210, 42,108,107,164,246, +240,212,223,169,109,235, 64,183,125,235,146,181,144,195,129,135,153, 88,183, 96, + 20, 26,185,219,159,235, 93, 9, 35, 42,138,246,130,162,119,193,205, 43, 21,169, +170, 84, 2, 25,203,150, 29,214,149, 37,123, 60,224,117,214,202, 2,146, 21,209, +209, 84,104, 54, 32,206, 64, 45, 32,251,148,118, 59,228,214, 67,118,109,142,237, +101, 87,119,107,237,206,143,237,166,118,153,187,109, 59, 49,170,243, 98,241,225, +118,159,111, 44, 43,135,238,137,144,136,175, 19,244,140,175,141,216,231, 50, 98, +135, 63,165, 98,221,142,202,254,104,163,125,183,142,211,176, 27,185, 95,219,113, +127, 7,205, 95, 74,157, 55,206,111, 84,188,121,174,195,176,120,214,238,231,253, + 22,177,206,122,202,201,157, 53, 15,229,117, 30,142, 54, 57, 43, 89, 3,217,196, + 91,151,177,134,217, 75,228,100,179,200, 85,187, 23,215,201,141,183, 45,214, 72, + 79,185,249,200,121,196, 74,179,190,191,178, 37,117,126, 58,215, 99, 38,183, 44, +203,178, 32,132,208,227,121, 23, 23,192, 69,146, 73,164,185,216,240, 92,111,218, +109,206, 15,219,141, 45, 48, 34, 46, 56,109, 95,240, 28, 77, 69, 71, 51,113,117, +107, 26,117,168, 32,133,151,127, 28,170,119,204, 63,239, 23,235,122, 45,215,129, + 51, 60, 27, 50,171,192, 47,151,188,129, 56, 84,214, 49,231,126, 47, 4,133, 43, +251,215,202,137,193,119,202,250,253,127, 73, 18,145, 36, 80,103, 50, 32,146, 52, + 34,141,156, 10,157,234,247, 78,117,244, 39,183, 68,214,244, 76,230,121, 56, 25, + 20,221,220,201,190,146,142,158, 60,202,241,207, 3,152, 14,106,174,123, 32,116, +204, 31, 13, 61, 10,210, 83, 34,120,202,163,217,132, 62,211,161,166,243, 56,150, + 38, 67, 57,222,161,208, 41,165,148, 74, 58,224, 7,199, 41,103,209,203, 37,148, + 6,167,195, 11, 2,110, 36, 13, 23,204,225, 7, 46, 41,168, 44,148,101, 42,152, +252,153,228,203, 59, 56,206, 88,111,199,252,214,120,237, 5, 63,234,188,180, 43, +102, 57,187,200,100, 98, 67, 54, 94,249,134,203, 9,142,153, 10, 40,172,185, 40, + 71, 1,128,215,168, 1, 69,101, 16, 34, 25, 17, 17, 73,146, 20, 50, 28, 96, 68, +100,204,202, 54,226,112,108, 24, 36, 89,166, 8, 49,196,200, 69,150,145,146,194, +250,217, 9,166, 33, 34,206,219,108,216, 78,123, 62,120,239,234,244,116,151,206, +142,251,223, 20, 42,162,112,148, 69,169, 61, 89, 80, 85,145,181,210,150,141,168, +215, 36,235,104,231,147, 54,183,254,226,182,225,152, 85,128, 1,226, 39,133, 48, +157,178,123,248, 58,164,118,140, 69, 35, 18,129, 77,217, 35, 68,100,175, 29,135, +250, 70,224, 47,117,160, 63, 15, 77,236,244, 17,153,237, 44, 11,213, 46, 3, 38, +140, 64, 57, 43,142,210,144, 52,235, 81, 94,212,173,124,134, 98, 29, 50,197,215, +126,177, 24, 57,202,176, 83, 35, 0,254, 50,226,185,134, 66, 9,116,113, 73,193, +205, 92, 99, 69,106,125,220, 95, 13,233, 22,246,150, 11,192, 45, 4, 22,144, 34, +145, 21,180,255, 13,106, 67,231,253, 52, 86,239,180,101,100,171,151, 24,229,159, + 94,126, 26,101,164, 37, 24,198, 6, 25,190, 58,151,106, 40,159,129, 51, 32,153, + 9,135,100, 9,159,108,205,155, 98, 2, 52,107,168, 52,237,164,201,120,207, 20, +165, 44, 45,101,222, 68,178, 11, 13,235,102, 68, 46, 82,141,152, 82, 35,136,137, + 20,203,129,175,126, 35, 31, 29, 60, 47, 24,206, 64, 3,250, 8,177,127,128, 89, +106,145, 58,218, 65, 99,108, 47, 19, 19,252,104, 31,198,248, 49, 47, 42, 31,134, + 26, 45, 54, 45,239,117,230,242, 3,254,138,200,148, 23, 68,127, 48,149, 97,104, +170,218,255,138,107, 48, 7, 16, 57, 5, 12,155,119,246,195,118,151,170,133,156, +128, 80,149, 32,164,195,247, 70, 37,114,225,100, 10,153, 67, 56, 62, 17, 87, 47, + 96, 41,192, 3,168, 94,224,181, 77,195,143, 82,163, 32,152, 46, 61, 13,127,189, + 42,230,122,126,125,177,220,200,182,150,226, 68,248, 62,227,195, 79, 33,163,160, +157, 69, 2,184,189,172, 73,216, 84, 61, 42, 95,250,241,247, 94,123,152,139,121, +118,152,137,220,248, 46,216, 27,209, 10, 54,205,251,131, 41, 41,181,137, 40, 41, +208, 67, 57,122,198, 67, 41,141,135, 1, } ; -// ../Source/Template/GB_memory_macros.h: -uint8_t GB_JITpackage_118 [820] = { - 40,181, 47,253, 96,241, 13, 85, 25, 0, 86, 36,111, 39,208, 20,177, 14, 84,196, -253,186, 96,251, 85, 64,172,128, 59,183, 32,236, 78, 33, 15,224,254, 90,189, 89, - 2, 97,182, 31,127,204, 62,224,139, 7, 69,238, 47,103, 0,102, 0,100, 0,140, - 89,176, 94,110,177, 44,163,188,147,175,137, 9,247,100, 75, 78, 19,141, 7, 11, -202,197, 28,203,205,212,251, 98, 30,146,122,150, 93,254, 16, 42, 6,149,137,194, -129, 65,229,206,130,254, 90,114,224,195, 41,151,119,176, 75, 53,121,241,183,185, - 76, 13, 88,133, 54,194,194,109, 97,221,240,149,219,230,249,164,242, 66,139,102, - 25,252, 45, 24,165,169,181,160, 86,117, 44,213, 88,171, 26, 34, 46, 73,207, 68, -146, 2,175, 3,183,184,107, 32,251,235, 1,232, 1,208,227,157,210, 86, 18,231, - 92,133, 34,232, 4, 4,159, 38,140,138, 51, 0,188, 66,143,146,132,227,174, 95, -133, 48, 24, 10,226,255,159,199, 34,131,241,208,215,226,143, 14,250, 71,250,190, -147, 90,191,147, 39,212, 44,215, 91, 26,111, 97,182,145,173, 37,105, 15, 79, 41, -240, 72, 84, 27, 13,229,112,201, 84, 27,148, 38,131,201, 68,190,102,148, 2,143, - 1,165, 50, 9, 22,172, 13, 98,105, 72,148,215,228,206, 88, 64,228,111,254, 34, -174, 95,245,104,203,199,189,105,128,208, 63,182, 12,175, 14,132,190, 16,158,243, - 85, 12,245,107, 90,198, 53, 20,125, 33,210, 55, 93,116,200,245,227,218,185,111, - 66, 14,154,105,186, 56,148,212,187, 40,250, 37, 41, 7,130, 94,178,112,215,127, -174, 70, 80,197,196,244,170, 10, 51, 77, 64, 84,149, 20,253,145,244, 23, 48, 57, -182,108, 68,118,174,159, 12, 5,165,201,168,158,135, 34, 34,237,133, 13,143, 89, - 91,255, 65, 77,163, 54,114,124,164,124, 81,235,108,217,141,122,192, 75,239,179, - 45,114,111,239,130, 43,255,186, 3, 67,162,252,100, 14,230,167,176,221,238, 22, -167, 60,123, 76,136, 89,157, 11,239,214,241,199, 28,218, 1, 19, 26,222, 99, 74, -214, 96,159,177,123,122,189,147,221,201,214,110,214,185, 25,187,224,128,146,160, -113, 49, 83,104, 68,100, 72, 82, 90,201,176, 6, 64,134, 8, 77,205,117, 3,241, -112, 3, 95, 60, 34, 66,172, 22, 59,156, 67, 20,187,103,217, 24,214,152,113, 51, -220, 32,143,148,163, 24,163,216,248,195, 79, 18,155,111,253, 96, 63,174,118,146, - 9,206,182,185,181,184, 28,152,190,143, 4, 66, 11,201, 60,203,107, 65, 88,102, -219,164,225, 7, 91, 13,182,156, 60,216,164,192,159,226,188, 25,107, 16,205,199, -182,167, 92,163, 1,238, 62,240,153,232,122, 87,137, 10,104, 25, 51,123, 51,192, -156, 98,202, 40,217,171,174, 0, 43, 75,149, 34,222, 20, 78, 4,165,149,134,231, - 66, 41,187,161, 7, 24,161, 68, 99,212, 2, 28, 17, 32,123, 73, 7, 65, 43, 58, - 11, 54,115,212,209,129,215, 95,194, 53,173, 28, 43,193,103, 28,113,176, 92,170, -128, 11,210, 68,120,134,130,117,153, 1,171,117, 31, 5,207, 96, 1,112, 64,103, - 6,126,224,249, 28, 4,114, 13,120, 32, 4, 88,122,187,237, 32, 14,237, 64, 5, -200,108, 63, 1, 88,191,195, 6, 29, 30,200, 18,141, 60,122,213,118, 18,186,133, - 31, 34,113,101,213, 14, 65,239,233, 89,135, 66,186,131, 4, 11,162,244,240, 44, -161,177, 42, 0,247, 99,115, 39, 44,251, 44,133,163,136, 61, 62, 39,140, 42, 32, - 27,134,225,105,176,101, 39, 12,253,140, 3, 30,115,168, 6,195,227, 80,239,147, -215,137, 27, 0,145,126,138,100, 9, 9, 51,135,100,162,193,239,160,116,238,191, - 21, 58, 14,252,212, 8, 57,244,234, 90, 92,115,106, 71, 90,220,192,167,138, 0, - 26, 52, 49, 42, 51, 81, 47,192, 10, 39, 0,234, 62, 24,133, 62,188,162, 23, 15, +// ../Source/Template/GB_AxB_saxpy5_A_iso_or_pattern.c: +uint8_t GB_JITpackage_103 [1253] = { + 40,181, 47,253, 96, 11, 14,221, 38, 0,166, 56,168, 40,176, 84, 85, 29,244,237, + 47, 43,182,169,206,172,243, 71,225,210,191,247,192,153,219,235, 19, 61,145,167, + 98,233,151,220,218, 41,253, 65,255,193,246,148,110, 6,159, 0,150, 0,158, 0, +157,212,122,235, 74,171,247,201, 97,150, 59,109,136,195, 49,212,209, 74,221,201, +229,158,223,168,188,245, 16,247,173,136,192, 98, 64, 77, 78,147, 22,190,225,206, +254,116,166,115,203, 80, 19,211,169,181,134,210,128,216, 88,182, 25,114, 39,158, +156,227,204,121, 52,231, 93, 7, 63, 29, 24, 16, 24, 80, 11, 5, 4, 6,159,104, +210, 39,220, 33, 18,226, 22,248, 16,151,171,215,216,167, 14,212, 68,206,202, 43, +209, 48,241,149,182, 51,115,127,157,232,242,129, 95,172,244,114,123, 14, 63,117, +221,247,185,117, 76,164,192,170, 98,189, 65,179,208, 59,115,150, 54,187, 53,171, +184, 51,152, 37,132,236,136,196, 89, 28,129, 89,148,248,229, 18, 81,151, 75,245, + 10, 28,115, 58,187,144, 7,202,122,117,239, 57, 67, 80,200,180,159, 49,173, 90, +132,159,172,231,255,143, 72,162,232,211, 27, 13,216, 38,109,250,105,125, 39,157, + 30, 15,248,173,247, 78,129,200,202,112,174,139, 75,226, 51,183, 79, 11,244, 39, + 46,183,200,177, 7,237,219,222,196,167, 77,229,174,185, 92, 61,248,171, 92,158, +222,113,227,138,144, 38, 35,242,231,121, 55,233,157,160, 99, 25, 10,249, 91, 63, +223,102,198, 82,243,156, 74,237,241,183, 92,172,252, 89,218, 15,117,182,115,199, +105, 89,122,207,248,243, 14,255,169,207,150, 91,179,172,223,184,128,185, 82, 91, +239,125,154, 38, 63,185,252,154, 31,221,189,122,190, 50,227, 44,126,220,154,109, + 95, 13,207,237, 29, 4, 28,213,229, 54,111,127, 32,243, 94,122,165,130, 65, 88, +102,122, 7,204, 9, 94, 73,147,130, 73,107, 79,210,208, 38,205,238,219, 38,167, +225, 79,168,132, 55, 57, 47,151, 51,239,163,221,236, 58,121,165,189,245,234,165, +231, 33,175,221, 58, 63,211,222,230,215,201, 16,234, 50,239,228, 68, 30, 41,240, + 85,229,150,101, 89, 86,140, 49,198,145,137, 52,114,109, 54, 48, 12,131, 27,128, +138,187, 90, 61, 19,119, 24, 49, 94,115, 93,112,174,138,172,155,227,236, 3, 21, +109,196,220,243, 64,193, 87,247,192,103,173,111,198,243, 82,206,176,129, 22, 88, + 38,102,157, 76, 6,177, 72, 81,132, 47, 16, 69, 37, 37,248,147,101,165, 95, 24, +132,216,100,100, 20, 25,171,231, 71, 59, 79, 58,250,149, 67,203,113, 15, 4,144, +238,221,225,221,248, 19,232,211,188,149,122,244, 39,249, 9, 75,159,162,253, 52, + 18, 63, 97,151,196, 68,122,188, 56, 80, 99, 93, 16,152,227, 76,103,174,244,211, + 7,200,115,202,229, 43,236,234, 68, 68, 96, 84,222,210,113,159,214, 99, 59,183, + 99,206,149,209,108, 50,152, 38,195, 34,203, 96, 29, 78, 38, 2,244,234,208,130, +160,229,120,131, 64,214, 90,107, 39, 29,241,131,227,214,179, 44,230,147,137,139, +210, 99, 54, 81,125,226,128,169, 30, 79,249,164,128,106,152, 26,164,130,202,191, +117,230,248,212, 2,129, 0,168, 81, 65, 82,102, 70, 68, 68, 36, 5, 73, 10, 25, + 14, 80,132,200, 84, 89,113, 3,242,144, 76,140,114,148,161, 68, 64,136,145, 2, +162, 9, 74,100, 22,164,160,126, 54, 65, 75,138, 74,213, 60,162, 85, 2, 52, 2, +141, 62,190,212,160, 62,189,215,181,173,101,125,200, 63,141,165, 81,181,119,136, +108,203,102,214,108,100, 86, 97,234,151, 38,199,107,220,194,137,182, 50, 56,211, +130,139,241,156,121, 72, 68,182, 95,120,123,176,211,253,213, 7,189, 0,162,116, + 98,140, 91,242, 35, 13, 31,166, 54,197,105,151,162, 72, 21,114, 85, 98, 37,231, + 68,149, 8,197,228, 89,124, 30,130, 39, 3, 45,145,222,172,161, 94,132, 97,150, + 32,120, 7,198, 10,196,250,202,115, 56,164,205,110,121, 74,195,146,212,111,156, +229, 5,196,233, 8,124, 59,113,116,143,149,133,134,137,191,156,233,209,100,109, +218,211,169, 90, 42, 63,159, 81, 33,221, 49,148,183, 29, 60,241, 0,105,206, 56, +106, 69,193,138, 27,129,120, 25,113, 82,119,224, 84, 48,153, 6, 93,181,171, 70, +119, 40, 50, 4,178,161,229, 81,248,176,235,130, 42,143, 6,180,111,203,200,236, + 72,180,205,154,249,102, 85,172,182,105,134,161,246, 33, 44,180,163,182,244,113, + 72,117,172,202, 65,124, 32,159, 90,177,196,225,251, 82, 75,254,215, 98, 17,218, +208,166,136,100,140,236, 22,184,199,136, 44,181,150, 87, 37,171, 79,149,116, 26, +245,100,164, 50,195,148, 26, 80, 76, 0,131,173,151, 51,108,221,172, 34, 43,182, +184, 99, 29,223, 16,203,154,173,174, 10,133, 56, 9,206, 79, 18, 8,169,104,111, +178, 50,234, 26,215, 17, 8, 55,239,203,209,229,244,200, 52,223, 18,174, 43,211, + 9,116,127,116,121,144,221, 85, 67,236, 31,152,209,112,224,138, 64,225,154, 64, +141, 24,232,203, 29,176, 3,179,162,132, 5,163, 99, 89,253,170, 68,102, 43,203, +144, 41,161,243,101,228, 26, 22, 90, 29, 24, 22, 24, 23,149,154,126,245, 8, 88, +247,131, 83,144,179, 73,135, 63,204, 32,210, 99,144,238, 59,171, 60, 82, 90,225, + 62, 85,153,217,120, 25, 52,230,208,200, 12, 35, 24, 61, 97, 83, 17, 15, 36,242, + 18,152, 45,255,248,179,235, 60,110,205, 8,171,250, 7,113, 94,102,138,133,199, +254, 19,113,230, 98,137, 10,156,137, 5, 97,216,100, 82,242, 36,136,209,165, 39, +186,241, 99,138, 99, 71,232, 14,151, 24, 77, 2,169,183,218,193, 23,230, 6, 44, + 23, 50,194, 50,159,180, 4,112,193,185,164,120,249,166,249,254,204,228, 51, 85, +201, 75, 63,210,173,213,104, 94, 82,171,210,192, 24, +} ; +// ../Source/Template/GB_AxB_saxpy5_unrolled.c: +uint8_t GB_JITpackage_104 [2932] = { + 40,181, 47,253, 96,105,200, 85, 91, 0, 58, 83,112, 15, 45,176,172,170,234,138, +235, 11,188,206,124,107,248,171, 15, 57, 18, 43, 79,117,184,193,112,209, 84,244, +191, 36, 90,215,140, 80, 53,210,215,221,193,180,246, 7,253, 7,203, 63, 56, 23, +236, 0,244, 0,231, 0,179,192,181,153,252, 97, 28,234,108,197,151,110,142,145, + 56,144, 29, 44,249,243,186,250,134,107,243,188,212,179,127, 64, 81,117,243,144, +103,207,125, 24, 54,109,254, 54,177,154, 85,219, 89, 46,163, 25, 79, 12,227,221, +196,110,253, 13,158,125,103,243,106,222,168,150,175, 97, 25,127,220, 45,213, 51, +246,249, 84,195, 52, 56, 80,140,119, 38,247, 44,241, 55, 92,234,117,180, 99,171, +179,117, 54,210, 93,154,243,244,126,233,183,205, 77,196,226,250,108,187,103,221, +124,229,136, 26, 58, 66, 53,108,122,213, 41,151,214, 76,205, 29,205, 36, 34, 20, +119, 20,171, 19, 17, 7, 16, 11, 54,151, 98, 90,113,156,181,140, 90,241,109,171, + 14,197,142, 58, 34,129, 81,255,129, 61,135,112,221, 76,136, 55, 84,239,104,217, +114, 21,115,200,162,154,176, 52,111,222, 8, 10,197,119,122, 22, 52,215,207,194, +177,109, 95,230,184,222,242,142,106, 27,183, 24,170, 10,196,114, 10,214,144,209, +109,179,183,251, 46,169,227,113, 38,190, 44, 78,117, 89, 17,119,112,112, 68, 28, + 28, 2,143,140, 61,195, 39,248,156, 74,168,248,122,158, 95, 23,205,243,186, 38, +216,224, 65,175,237, 50,234,161,255, 14, 8, 26, 12, 72, 83, 39,164, 81,177, 39, +163, 25,165, 29,189,243,248, 26,135, 52,135, 42, 62,244,160, 24,207,182,207,110, +188,250,181,207,183,217,217,154, 43,182, 94, 70, 87,111,229, 40,214, 60,214, 25, +254,208, 84,175, 64,254,208,128,234, 99,249, 41, 16, 16, 21,102,130, 65,130,235, +128, 4,166, 27,139,197, 98,177, 44,203,194, 96,170, 5, 23,128,115, 8, 68,170, + 63, 30, 78,117, 89,240, 0,115,109,214, 98, 80, 5, 22, 18,151,101,113,189,172, + 79, 92, 40, 42, 46, 8,174, 90, 53,237,225, 30,129,136,245,202, 61,235, 25,171, + 55, 99,122, 25, 42,188, 97,239,194, 31,222,209,109, 67, 32, 98,121,229,220,243, + 37,167,220,213,103,220, 89,204,170, 14, 89,158,255,223,225,152,224,112,100,106, +214, 5,200,104, 87,187,239, 88,189,180,163, 25, 15,112, 47, 93,112, 88, 36, 42, + 46, 20,151,136, 12,205, 50,117, 1,107, 48, 50,138, 63,171,101,202,109,180,187, + 20, 65,231,218,140, 5, 84,148, 82,202, 62, 4, 65, 6,205, 83, 57, 83, 3, 65, + 16,230, 18,241,220,186, 84, 84, 19,150, 11,132,119,241,170,169,252, 19, 60,207, +243,188,232,208, 33, 14,246,188,227, 97, 28,229, 40,110, 40,169, 40,165,148,212, + 33,125,138,122, 60,254,191, 30,242, 60, 15,195,243,202, 33, 38, 65, 72,165,212, +103,130, 18,124,228,220, 7,188, 86, 7,229,106,254,124,158,159, 96,166,248,157, + 61, 20,193,210,184,184,231,113,103,184,198,115,200, 31,144,102, 61,183, 46, 3, +149, 63, 6, 60, 84, 14, 35, 20,136,242, 64,200,127,113,138,213,237,149,231, 59, +179,198,181,217,171, 23,195, 52,123,132, 9, 94,156,131, 57, 40, 54, 61,172,185, +118,227,207, 39, 64, 32, 88,131,103,238, 62,224,225,209, 43, 15,132,176,202,205, +174,147, 61,116,251, 50,170, 97,248,143,238,193,217,164, 87,203, 23,247,117, 27, +221,182,121,167,119,143,179,159, 92,198,188, 94, 86,243, 31,127,232,181,116,119, + 75, 41,165,164, 40,138,162, 40, 80,248,247, 60,163,219,195,230, 1, 14,135,164, +104,214,125, 11, 14, 71, 5, 74,222,190,153,161, 25,140, 32,132,221,221,221,221, + 29,187, 99,199, 24,187, 59,198, 24,163,148, 82, 74, 41,165,148,146, 36, 73,146, +108, 73,146, 36,105,154,166,105,154,166,105,154, 38, 73, 75,166,150, 72, 36,146, +169, 91, 34,145, 72, 36, 20, 69, 81, 20, 69, 81, 20, 69, 77, 38,113, 50,153, 76, +168, 56,153, 76, 38,147, 40,138,162, 40,138,162, 40,138, 96,212, 13,163,110, 8, + 33,132, 48,234,238,134, 16, 66,216,221,221,221,221,221,221, 49,198, 24, 99,140, + 49, 70, 41,165,148, 82, 74, 41,229,195, 53,147, 94, 12, 14, 38,201, 40,187,194, +165,175,163,148,231, 52,156, 4, 15,113,156,212,176, 59, 74, 72,253,144,115,212, +134,203,166,221, 78,241,148,160,128,115,207, 53, 44,215, 13, 44,193,219,252,232, + 25,207, 13, 70, 56, 10, 69,132,171,192,193,100,195,216, 16,123,133,110, 38,174, + 32,201,216, 48,130, 19, 74, 50, 77,146, 36,101,140,221, 16,206, 67, 17,162, 55, +148, 1,131, 95,168, 66,139, 25,153, 25, 25, 17,145, 20, 36, 5,201,112,178, 34, + 4,162, 72,146,197,152, 85, 89, 7,146, 40, 26, 5,113, 8, 3, 34, 8,194, 96, + 8,130, 32, 8,130, 32, 36, 67, 4,132, 8,140,128, 8, 8, 33, 70, 41,163, 17, + 86, 7, 72,206, 33,134,209, 51,166, 33, 19, 13, 24, 40,218, 93, 99,210,197,252, +228,203,164, 88,138,138,124, 15, 66,202,138, 63, 6,238,190,172,217,104, 56,211, + 11,160, 70,123, 11, 67, 34, 3, 87, 77,169,137,225, 64, 53, 32, 47,123,159,115, + 64,216,172, 95, 65,150, 29, 3, 39,171,103,242,105,239, 10, 62,150,114,240,139, +217, 39,126, 6,220,160,193, 25,109,156,219, 2,101, 61, 34,194,239,119,127, 37, +108, 17,120,234,147, 13, 54,148,217, 54,233, 3, 69, 71, 38, 35,248, 69, 21,181, +177,122,100,160,240, 61,141,130, 60, 74, 8,216, 51,110,197,205,122,129,227, 23, + 75, 26,206, 80, 39,242, 16,123, 82, 63,229,158,128,170,239,254, 95,242, 43, 30, + 88,100, 90, 17,185,158,167,128,159,138, 60, 36,100,216, 51,110,109,236,186,192, +227,239, 83,241,250,155, 0,148,250,201,190, 5,186,101,109,100,146, 80, 13,212, + 49, 20,202,242,142,133,241,179, 30,208, 68,119,245, 80, 40, 30,186,255, 48, 17, +222,202, 23,196, 37, 11,167, 56, 58,112, 59, 35, 69,226, 96,152,181, 25, 71, 10, +186,122,168,132,234,173,228, 46,244,199, 91, 81,119,146,202, 28,178, 99,160,181, +203, 24,244,158, 63,221,124, 45, 90,136,203,212,204,236,108, 40, 78,198,168,152, + 76,182, 13, 8, 51, 16, 81, 70, 64, 68,176,164, 20,133,183,131,100, 30,230, 66, +151,250, 74,207,219,147,226,184, 38, 90, 51,201, 66, 9, 47,142, 56,101, 48, 72, +168, 76,125,166,240,127, 1, 55,247,217,158, 13,234,189,238,242,162,208, 73,218, + 32, 94,132, 22,105,179,141, 67, 70, 57, 12,180,114,129, 65, 94, 85,226, 28, 70, + 19,225, 83, 51,217, 97, 67,159,169,201,208,116,250,136,251,114, 9,230,206,200, +192, 59,204,116, 33, 38, 48, 89,236,122,210,116, 42,235, 58,240, 46,137,248,132, +146,105,138,236, 44, 52,163, 22, 67, 99,165,161, 96,232,208,114, 34,219,146, 57, +117,219,226,245,137, 25,110,253,169, 20,255,116, 57, 0,117,159, 1, 5, 27,224, +181,161,239, 30,168, 47,193,252,252, 85,198, 62,195, 54, 2, 48, 79, 47,234,156, + 72,182,242,200,158, 19,247,205,104,110, 94,142, 75, 71,183,189,162,173,199,140, +128,227,208, 69,208,194,216,168,217, 12,207, 26,147,141, 3,238,111, 37,131,119, + 91,226, 57, 79, 34,115, 41,209,103,200, 46,161, 50,245,179, 2, 76,119,186,237, + 29,253,254,198,250, 22,228, 39,193,222, 88,214, 41,183, 21,193,109, 9, 27,111, +233, 19,151,189,172,110,120,198, 70,196,107, 71,177,122,162,216, 13,119,166,162, +213,160,198,207,223, 51, 49,227, 8,224,102, 8, 11,218, 1,189, 28, 60,209,109, + 21, 71, 62,169, 40,253,175,205,130,204,200,195, 95, 58, 10,146,120, 35,153, 93, +116, 26, 27, 23, 69, 72,251,109, 45, 40, 61, 2, 16, 36,229,143, 64, 59,172,108, +211, 57,211,244,214, 60, 89,210,145, 29, 2, 4,134,170, 40,107, 13,141, 35, 27, + 81, 46,208,206, 27,178, 87, 12, 85,156,213, 89, 92,181,204,167,162,210,116, 28, + 37, 47,214, 92,102,124, 62,152, 34, 91, 84,194,244, 30,255,141, 73, 20, 99,238, +168, 46,195, 15,208,180, 49, 29,117,212,176,119, 40,112,162,190,162,192, 53,186, +227,174,216,158,170, 16, 94,154, 34,164, 20,133, 91,233,137,218, 82, 19, 4,210, + 18, 50,164, 36, 2,144,142,112, 39, 21, 81, 34, 13, 65, 71, 10, 66, 70,244, 67, +128,168, 7,119,160, 29, 42,225,181, 13,129, 41, 76,209,229, 71, 39,132, 7,158, +224,251,137, 45,101, 12,167,114,133,185,142,158, 12, 46, 71, 85, 93,212,221, 81, +254,130, 59,207,200, 36,166,243, 94, 0,221,202, 8,168,149,193,222, 43,144, 5, +238,152, 5,102,206,157,218,205,141,128, 40,125, 64, 54,181,129,224,194, 5,252, +105, 2,213,203, 3,168, 45, 41, 11, 24, 17,128,134, 19,192,131, 36, 59,168,102, +132, 18, 40,196,169,202,234, 95, 71,206, 36,213, 80,199,163,200,193, 73, 68, 41, +143, 22, 98,199,251, 81, 69,202, 39,128, 53, 26,143, 90,113,117, 17,117, 4,178, + 9,243, 14, 17, 55,174, 32,165,177,175, 81,217, 31,187,156, 27,195,206,108,110, + 98,212,103, 62,252, 22,103, 27,136, 76,227,243,156,102,197,107, 67,177,126,241, +143,162,178, 99, 17, 7,232,152, 1,219, 64,123,228, 31, 73,247, 13,191,128, 12, + 35,110,221,143,182, 60, 64, 80,205,135,160, 10,225,165, 49,178,187,206,132,159, + 76, 22,201, 12,190, 86,235, 98,254,100, 76,226, 69,137, 21,162, 76, 70, 84,108, + 58,213, 62, 87, 85,212, 83, 92, 86, 92, 96, 27,190,214, 85, 43,133, 23,178, 66, +201,174, 24,216,220,108,181,107,137, 93, 87,159, 3,195, 10,162,175, 68, 96, 30, +203, 83, 49,152, 14, 5,124,185, 50,242, 4,130,126,107,249,190,178,154, 94, 85, + 75,166, 22, 54,245,166,156, 90, 85, 74, 76, 11, 69, 10,159,115,224,206,208, 47, +135,206, 28,185,101,224, 48, 3, 0,105, 0,238, 9,106,145,177,100, 39, 94,148, + 68,230,160,215, 24,202,136,211,243,220,195, 59, 70,172,181,103,226,149,115,232, + 89,208,185,218,157, 10,195, 71,167,203,182,178,149,244,131, 79,156,161, 15,114, + 89,249,204,149, 2,226, 36, 22,147,240, 89,164,177, 90,102, 76,176,133, 66,132, +110,135,137,105,200, 70,186,108, 39,121,216,224, 89, 3,190,173,200, 23,103,114, +177,249, 33,180, 22,245, 16,143,191,201, 47,252, 50,177,133, 90, 31,133,106,248, + 86, 33,153,192,171,146, 76, 25, 26,149, 12,129,204,177, 94, 50,201,224,131,207, +141,105,156, 95, 9,164,110,202,195,217,127,139,225,116,143,145,157,169,211, 49, +192, 51, 45,199, 66, 4,148, 13, 70,121,153,253,251, 77, 95, 69, 16, 63,162, 48, +255,219,224, 44,234, 69,231,213, 88, 9, 96, 45,190, 42,238,140, 63,222,106,199, +203, 52,241,190, 70, 50, 64, 33, 4, 6, 86,241, 79, 3, 96,174,161,104,159, 42, +112,205,192,123,248, 21, 40, 95, 47,136,170,209,216,186,248, 32,112,171,200, 79, + 41, 2,146,112,255,243,146,156,134,103, 67,139,244, 74,128,189,158, 94,140, 66, + 77, 24,162,130, 42, 85,222,118, 72,212,193, 82,148,251,186,155,243, 4, 66,176, +115, 6,170, 14, 99, 22,243,104,255,206,240,252,152,235,135,216, 27,218,181,233, + 52,105, 24,110,131, 34,198,192,215, 7, 15,142,152,186, 66, 81,134, 35, 94, 73, + 89,157, 43,155,229,195, 32, 15, 65,197, 77,186,231, 82,128, 11, 25,193, 99, 17, + 30,148, 21,234, 71,198,134, 66, 61,111, 2, 82,204,245,170,234, 51,108, 62, 62, +161, 62, 53, 56,104,154, 51,210,147,227, 12,216,189,200,172,235,250, 38,215,183, + 68, 35, 20, 57, 26,137, 47,162,183, 23, 72,154,133,240,139,225, 56,230,144,101, +214,255, 46, 85, 25, 14, 86,194, 91, 33,223,253,222,255,110,128,212,186, 26,160, + 78,136,162,215, 67,133,236,157, 98,196,100, 44,163,168, 98, 91, 80,195,105,128, +145,214,105,101,165,211,147,203,252,215,132,228,165,102,165, 86,171,235, 13,198, +110,112, 27,215,104,228,185,213,174,172, 80,146,123,232,106,114,224, 67,172,192, +188,114,244,219, 10,142,129, 11, 49, 74, 12,235,229, 4, 95,167,196,248,156,130, +156,222,206, 80,198, 66,132,115,189,240,139, 32,229,225, 29, 3, 4,133,121, 16, + 13, 90, 23, 68, 56,108, 98,187,142,161,138,182,226,207,247,138,200, 49,132,155, +157, 75,198,167, 83,120, 3, 47, 16,230, 67, 67, 35,245,250,168, 52,251, 35,170, +207,174,150, 10,248, 93, 62, 37,212, 44,108,115, 3,113,167,178, 96,253,183, 85, + 24,227,188,203, 39,185, 95, 61,171, 83, 26,204,228, 50, 9,130, 42, 73,178,110, +151,197,165,229,227, 93,158,226, 80,121, 91, 31, 78,155,141, 95,194,123,253,153, +234,181,135, 95,245,217,241,160,209,232,216, 86,230,219,116,127,119, 41,120,118, +171, 42,100,231,194,187,143, 17,169,150,191,147,242,122,226, 4,198, 74,165,204, +175, 3, 52, 92, 8,128, 96,164, 14, 13, 9,234, 95, 96, 82, 49, 41, 12,110,133, + 30,203,139,221,239,191, 87, 49,238,114, 92, 12, 71,165,255,227,172, 99,210,151, + 47, 53, 47,140,240, 42, 11, 88,192, 90,152,128, 51,187,128,156,225, 13, 81,104, +190, 81,136,240,232,226,189,204,119,179,219, 66,162, 96,176,200,197,150,125,201, +155,130,253, 38,170,141,224, 50,149,192,212,230,138,106,118,177, 19,102,253, 46, +199,247, 49,113, 61, 5, 54, 93,104,169, 26, 76, 73,102,124, 37,183,144,199,144, + 53,190, 74, 31,174, 16, 27,195,230,130,212, 88, 44, 33, 39,205,227,169, 33,149, +244,180, 68,172,179,228,135,163, 85, 16, 19, 23, } ; -// ../Source/Template/GB_meta16_definitions.h: -uint8_t GB_JITpackage_119 [2278] = { - 40,181, 47,253, 96,159, 48,229, 70, 0,138, 77, 84, 14, 45,176,204,138,117, 42, - 46, 0,184,110,151,240, 15, 1, 82, 30, 44,102, 91, 47, 54, 46, 41, 84,216, 84, -165, 0,211,237, 11,170,221, 6,144,231,148, 61,205,157,210,159, 6,255,193, 46, -215, 0,219, 0,216, 0,116,179,222,235,188,115, 20, 40,124,131,193,120,160, 0, -114, 50,255, 15,129, 68, 30,241,224, 58, 24, 9,122, 85,221,211, 30,174,164, 22, - 32,242,137, 40,208,123,101,142,121,190,177,242,237,207, 75,185,210, 83, 62,240, -193, 14,134, 98, 66, 96,163, 30,209,126,155, 94,177,213,190, 97,114,158,107,180, -108,117,182, 58, 47, 21, 61,117,122, 62, 43, 21,179,243, 4,196, 97, 2,193,192, - 22, 21,169, 59,165,114,123,250, 74,174, 50, 12,108, 37, 83,109,193,224, 96, 2, - 99, 82, 49, 71,101,203,155,219,107,109,244,230, 24,230, 30, 17,128,112,128, 96, - 56,240,224, 0,241, 8, 5, 61,178,205, 17, 39, 62,113,223,172, 59,179,238, 60, -226, 56,139,103,209, 88, 41, 40,204,225,219, 26, 7,242,226,221, 61,243,219,109, - 91, 35,181,103,235, 94,206, 87,146, 41, 87,191,209,186,183,213,180, 78,177, 38, - 86,206,190, 45,219,195, 21,140,120,136,151, 51,248, 40,222,208, 0, 97,104,104, - 8,242,146,173,142, 95,206, 87,163,217,164, 78,193,104, 46, 32,104, 52, 80,131, - 81,208, 0,126,224, 5, 98, 58, 12, 48,164,139, 75,124,212,237, 28,116,231, 92, -116,237,156,115,174, 93, 67,174, 47, 23, 37,209,185, 43, 62, 72, 50, 78,221, 45, -191, 53, 94, 11,157,139,176, 86,239, 21, 81, 32,119,230,184,160,139, 58, 19,121, -244,209,244,160, 63,248, 30, 5,228, 73, 1,172,201,190,145,233, 1,192,112, 82, - 39,243, 52, 30,205,120, 95, 23,244,190,213, 43,249,186, 7, 87,178, 47,111,156, -226, 0, 51,161,201,192,207,245, 30, 65,219,208, 65,236,141, 25,134, 69, 79, 87, - 82, 82,185,100,140, 99,250, 2,134,105, 30, 26,179,219, 83,197,132,230,226,130, -225,116, 24, 44,255,144,159,233, 65, 2, 53,174, 43,227,244,221,242, 71, 95,249, -117,221,242,207, 47, 44, 16,113,101,255, 90, 57, 41,182,253,199, 22,227, 8,195, -217, 56, 12, 78, 4,157,211,113,146,133,133,131,155,139, 4, 48,194, 3, 84, 14, -178,242,245, 78,166,226, 85,164, 99, 98, 60,157, 98,182,208,107, 71, 10,163,138, -111,100,224, 74,237,196, 0,219,104, 81,184, 0,173, 70, 49, 41, 8,159, 71, 70, -242,134,237,234, 50,246, 22,156,133,163,193, 76, 84,168,188, 37,146,190,104, 92, -104,198, 61, 46,116, 76, 39,179,105, 0, 43, 50,151,190, 22, 12,164,174,124, 66, - 68, 34,145,168,200, 72, 89,203, 84, 59, 99,123, 44, 82, 77,183, 91,177, 92, 54, - 94, 79,191, 98,108,202,180,207, 45,103,147,226,233,151, 8,196, 31,109,191, 16, -185, 71, 23,122,201,251, 2,125,163, 84,198, 89,195,194, 66, 67,103,131,225,112, -220,172, 62,239,175, 58, 59, 78,117,229, 76,147,159,242, 21,170,177, 57,101,155, -253,134,113,213,232,197, 52,203,245, 20, 10, 77,102,147,145, 50, 14, 3, 62,208, -184,137,251, 39,150, 43, 61, 79,191, 83,254, 90, 45,251,101, 99,246,203,198, 54, -100,219, 71,174, 23,244, 22, 44, 15,183, 88, 30,121,208,135, 12, 16, 72,133, 58, -239,176,197,108, 86, 31,136,106,215,156, 24, 79,205,146,171, 55,204,123,230,232, - 27, 49,174,183, 54,180, 41,217, 85, 94,177, 32,195,216, 20,239, 45, 27, 45,217, -151,204,209, 27,183,241,209,195,237, 22, 59, 48,139,228, 29, 61,106,232, 10, 46, - 27,135,225,192, 7, 27,167,201,188,135, 95,107,163, 43,141, 17, 73,155,158, 99, -115, 78,149,107, 72,146,244,233, 76,170, 60, 34, 81,232,159,134,146, 36, 73,146, -244,137,251,229,218,154, 4,174,147, 89, 85, 34,210, 50,118,219,210,173, 59,167, -115,141,119, 82, 36,147,208, 50,248, 33, 63, 89,132, 1,136, 35, 24, 48,224,159, - 16,129, 16, 94, 19, 58, 8, 2,153, 29, 44,167, 5,129, 36, 97, 81,246, 91,141, -178,167,215, 89, 35,203,198,174,109, 46,224, 7, 74, 80,227, 46,156,107,145,104, -180,196, 77, 96, 48,216, 46,205,216,211,167,125,189,247, 28, 26,218,110,127, 60, -234, 75,222,212, 37,222,175,220,193, 98, 28,130, 77,168,114,180,142, 41, 83, 35, - 34, 35, 41, 73, 10,173, 1,242, 40, 6, 33, 57, 28, 72,113,178,118, 3, 82,160, - 40, 11, 33, 17, 66, 18, 48, 34, 32, 4, 17, 1, 49, 2, 67,160,128, 8,132, 72, - 48, 34, 34, 98, 82,226, 28,164,252,234, 14,113,141, 98,179,139,200,224,224,240, - 16,102, 28,241, 8, 27, 33,158,197, 54,132, 57,143,170,217,173,254,228,120,189, - 78, 73,192,139, 75,209,192, 34, 85,183, 75,205, 28,118, 55, 41,173, 63, 23,128, -122, 39,112,204, 29,126, 83, 55,171,105, 41,146,221,244,148, 39, 27, 4,238, 23, -204, 92,233, 92,154,220,227, 41, 55,115, 99,126,246, 49,180, 10,167,173,122, 9, - 89,168, 65,230, 24,184, 82,189,211, 82, 14,138,216, 15, 4,183, 46,241,231,149, - 51,176, 71,229,200, 27,160,112,218,242,248, 16, 85,255, 3, 52,138, 29,159,227, -180,243,249,166, 29,176, 38,238, 72,117,231,184,110,166,145,235,208,144,247,138, -112,195,160,141,235, 30,109, 1,244,144,156, 97,232, 92,213,247,118,157,245,172, - 75,115,147,146, 29,155,180, 76,115, 21,249,119,220, 54,130, 27,253,180, 11,168, -172,215,195,136,135,211,134,116,118,217,120,117, 65, 67,194,113, 81, 57, 43, 15, -188,124,148, 88,180, 71,171,120,125, 87,217, 35, 0,154,252,191,179,111, 70, 32, - 90, 4,125, 50, 64,233,135, 40,128,203, 37,241, 9, 40,147, 21, 39, 69,108,106, -197,136,248, 92, 44,219,110,169,206,247,183, 11,193,204, 73, 73,188,231, 79,103, - 79,187, 26,168,138,241,115,240, 17,222, 60,164,134, 3,190,177,144,164, 35,237, - 17, 36,117,206,110, 63,143,123,198,240,143,142, 31,155, 1,132,225, 18, 93,101, -153,172, 80,202,252, 95,110, 36,122, 24,211,223,178, 80, 38,112,243, 43, 72, 77, - 14, 69,199,168,118,198, 28,101,104, 56,240,196,107,154,202,224, 46, 56, 66,168, - 51, 2, 22,184,155, 94,224, 46,145, 41, 52, 48, 14,249,138, 64,101,235, 52,242, -176, 0, 4, 99,252, 45,115,121, 33, 47, 61,210,157,101, 62,102,210, 73,228,114, -194,149, 36,245, 69, 53,101, 77,165,111,162,110,252, 28,107, 18,120,148, 73,150, -155,251,235,152, 6,200,111,162,161, 31, 79, 82,168,113,212, 31, 3,228, 72,111, -202,182,208,176, 16, 82,154, 10, 37,141,168,184, 4,149,200,125,236, 3,201,187, - 83,224,245,212,194,163,232, 45,143, 79,122,237, 7,149, 14,224,240, 29,215,211, - 65,142, 51, 46,164,211,137,245, 17,239,160, 16,192,152, 72,128, 67,184, 60,192, - 10, 61, 84,116,199,222,144, 44, 13,231,164, 73, 28, 5,234,169,175, 68, 84, 36, - 17,222,236,125,181,217,167,237,111, 43, 12,110,166,175,235,160,189, 60,116, 73, - 87,117, 84, 32,234,245,156,170, 90,245,125, 92, 13, 99, 84, 9,245,101,249,146, - 97, 19,155, 18,103, 95,213, 84, 55,194,216,181,128,230, 10, 0, 32,203,192,201, - 64, 32,180,237, 2,143, 8,179, 74,194, 41,136, 97,150, 80,139, 86, 13,131,130, -201,172,249,234,245,198,169, 79,147, 75, 4,166,198,180, 96,179,109, 77, 2, 21, - 45, 19,199, 25, 55,150,133,208,105,105,180, 90, 83, 22,145,140,109,240, 33,118, - 16,228, 9,192,188, 4, 83, 78,233, 29, 12, 30,102,142, 6,179, 43, 52, 55,254, -140, 66, 84,195,231,168,204, 10, 74,128,135,204, 30,254,214,246,222, 50,129,148, - 6,192,209, 38, 72, 40,192,244,120,157,206, 61,200, 66, 33, 48, 76, 3, 47,199, - 57, 54,173,215,163,222, 91,130, 31,205,109,231,116,143,192, 5, 57, 32, 38,123, - 16, 3, 58, 49,127, 99,241, 74,149,137, 91,193, 37, 26, 86,218,137,177,240,152, -146, 25,111,210,223,149, 87, 37,156, 40, 59,238, 98,140,100,143,173, 74, 36,193, - 95,155, 10,181, 67,150,190, 24,127, 28,253,147, 85, 68,180, 64,133,220,175, 82, - 60, 29,210,101,139,190,116,189, 95,120,122, 39,111, 43,126,225, 1, 99, 91, 28, -133,131,178, 63,240,145, 2,137, 35, 34,133, 8,200, 1,185,118, 43, 36, 93, 54, -136, 9, 40, 12,140, 43,160, 61,101,144,111, 8, 67,119, 54,163,161, 89,222,136, - 40,130, 55,132,222, 63,245, 12, 0,115,210, 30, 20,102, 22,195, 74, 35, 63, 24, - 86,233, 92,154, 36,196,228,239, 24,134,113,135,198, 60,142, 60,241,128,200,118, -210, 93, 29, 66,118,103,221,128,204, 2,206,244,215, 57,211,216, 14, 20, 80,155, -190, 25, 70, 34,120, 65, 29,134, 53, 63,198,138,135,194,234,161,251, 44, 68, 53, -127,123,144, 35,124,207,113,255, 48, 96,127,186,254, 71, 95,153,244,225,239,200, -109, 71,119, 97, 3, 89,192,107, 37,171, 1, 8, 89, 51,195,190,244,214,204,107, -129, 93, 16,225, 84,241,229, 78, 86, 55, 36,234,158,115, 87, 53, 71,157,237, 83, - 68, 48,157,143,238,163, 55,221, 86, 50, 92,247, 43, 7,150,239,142, 43,129, 31, -210, 70, 28,180,134,151, 87,170,159,171,168,229,116, 59,240, 64, 3,185,214,152, -200, 78, 65, 61, 89,196,206, 61,246,242,152, 48, 10,122, 52, 45, 4,245, 92, 38, -168,128, 98, 96, 47,207,242,139,247,121, 45,245, 15, 15,224, 58, 65, 31,193,193, - 5,206, 13, 47,204, 23,162,216,119, 95,197, 65,159,118, 55, 77, 38, 42, 13,167, -237, 44, 46,159,147, 53,162, 19, 77, 81, 75,158, 92, 1,207, 97, 63,112,113,185, - 35,159,205,250,128,224, 73,126, 8, 93,176,196,232,182,188,200, 71,239,108, 44, - 5,234,204,113,106, 62, 35,129,118,177, 97,225, 80,230,121,128,231, 87,204,150, - 72, 72, 50,185, 91,226, 75,106,246,211,155,131,117,165,198,188,106,172,204, 17, - 49, 61, 88,149,230,191,212, 13, 26,233,184,249,201, 81, 64,239,235,192,116,255, -138,137,173, 94,113,238,216,232,103, 78,197, 13, 79,225,114,239, 25,164,239, 48, -182,156, 59,250, 49,135,248,110,172,118,127,252,176,102,128, 62, 1,246,149,204, -246, 8, 94, 76,122,217,118, 82, 30, 8, 1, 62,145, 8,213, 52,184, 20,198,221, -228, 57,173,182, 17,254, 65, 75, 31, 84,117,180, 68, 62,225,193,149,112, 39, 45, - 22,164,145, 64, 98,174,142,209,151, 73,175, 50,131, 13,223, 55, 77,173, 86,152, -182, 22,255, 64,178,174,127, 18, 53,207,148,181,229,242,167,232, 27, 59, +// ../Source/Template/GB_Template.h: +uint8_t GB_JITpackage_105 [791] = { + 40,181, 47,253, 96,135, 9,109, 24, 0,166,171,125, 36, 16,115,219, 61, 14,101, +196, 77, 68,224, 69,220, 73, 52,151, 98,224,169,251, 85, 40,131,165, 43,222,121, +217, 77,198, 62, 85, 85, 13,170,252, 6,124, 0,111, 0,116, 0,141, 68, 4,113, +121, 42, 22, 19, 16, 19, 51, 56, 53, 64, 99,224, 80, 38,220,214, 82,143, 50, 72, +238,169, 31, 50,131, 38,236,144, 87, 87, 38, 26, 15, 22, 14,227, 15,201,206, 23, +234,223, 56,250, 66,157,123, 84,130, 64, 49,160, 76, 22, 14, 12, 40, 58,176, 4, + 84,226,253,177, 15,234, 60, 90,181,143,175, 47, 42,177, 60,149,134, 70,173,140, + 96, 96,151, 75, 89,248,123, 90, 26,103,177, 61, 63, 85, 25, 39,117, 24,251, 27, +246,196, 76, 25,154,195,191,142,122,124,137, 26, 34,180,160,160,153, 20, 20, 4, + 14,213, 83,143,213,249,197,197,146, 62, 20, 85,198, 73,217,162,234, 68, 34, 10, +123,242,174,167,148,137,108,155,107,229,220,194,216, 15,249, 33, 36, 99,166, 98, +140, 6, 48,108, 7, 91, 87,255,190, 7,168,254,106,249,206, 82,185,189,178, 99, +112, 91,132,157,212,222, 31, 19,201, 62, 55, 46,158,139, 6,168,194, 28, 43,249, +195, 57, 96, 67,185, 25,201,174,169, 23, 87,164, 57, 31,204, 34,202,108,186, 5, +155,163,213,212, 44, 62,253,109,223, 48, 64,149, 4,210,206,174, 39, 8, 10,168, + 66, 1, 69, 14,208,229,185, 88, 38, 64, 51,240, 60, 96, 48, 73,157,235,140,192, +130,115, 82,117, 11, 37, 63,236,166, 97,248,214,151,145,162,166,235, 7,192,200, +214, 47,165,171,222,234,221, 46,170, 14, 59,105,217,178, 84,102,152,125, 62, 53, +190, 74,158, 88, 82,234,250,112,219, 29, 28, 56, 40,100,161,120, 20,198,247,217, +161,222, 42, 97,239,140,228,246, 21,170, 78,108, 54,223,162,110,167,119,134, 90, + 38,162, 40, 34, 33, 32, 8, 77, 51, 53,131, 12,208,172,149,156,219, 69, 61,106, + 98,162,100,170,114,243, 69, 9, 10, 47,249,127,151, 71,212,190,111,137, 87, 59, +110, 0,121,190,183,249,182, 95, 83,190, 71, 24,223,167,112, 68,199,150,101,123, +136,145,156,169,100,124,252,114,185,165, 23, 67,218,146,203, 30, 85,114, 97,123, +148,107, 95,212,126, 31, 79,143,165,226, 75,118,119,199, 80, 50, 38,154, 30,182, +244,213, 47,254,194, 73, 49,131,253,110,238,196,204,249, 3,107, 32, 48, 68,168, +144,157,117, 75, 11,102,231,130,151,241,200, 28, 0, 48, 46,162,114, 98,152, 88, +162,222,178, 80,106,224,122,224,152, 20, 28,183, 61,242, 53,123,204, 36,222, 51, +168,153,192,130,234,210,195,122,183, 35,117,175,132,231,212,183,231,149,231, 34, +178,104,250,222,127,240,204,113,158,101, 2,154, 93, 0, 89,143, 0,207,244, 89, +131,147, 65,250, 97, 67, 63,148,169,124, 43, 97,245, 6,114,112, 19,168,147,129, + 53,129,223,255,142, 86, 48, 72,194,198, 48,110,114,130, 66,193,116,161, 65,147, +240, 57, 7,136,227,134,135, 62, 2, 56,109,137,255, 29, 22,187,129, 67,237,172, +184, 23,207,208, 10,236, 9,173,112, 71, 2,148,220, 95, 98, 25,191, 17,200, 91, +172,233, 96,206,194,197,194,113, 2,180, 27, 13,216,215, 26,125, 56,194, 25,105, + 87, 7, 96, 32, 1,187,190,248,206, 54,120, 45,136, 8, 16, 71,142, 58, 66, 88, + 8,234, 46,190,216, 42,191,169, 49, 2, 60, 90,206, 91,221,194,169, 81,154, 6, + 40,211,134,112, 1,218, 82,159,112,214,204, 79,185,152, 3,112,209,115,226,171, +139, 12,214, 1, 0,157,233,114,154,189,205, 43,132, 61,104,102,158,153,110, 67, +100,181,126, 32, 58,123,125,159,162, 96, 8, } ; -// ../Source/Template/GB_meta16_factory.c: -uint8_t GB_JITpackage_120 [623] = { - 40,181, 47,253, 96,110, 39, 45, 19, 0,102, 22, 70, 32, 32,145,117, 3, 79,107, -131,126, 89,140, 81,194,197,153, 62,122, 70, 61, 75,166,194,250,215,122, 10, 20, - 83, 1,140, 4, 32, 15, 59, 0, 61, 0, 61, 0,223,172,108,177, 74,249, 51, 69, -136,100,105,242, 54, 18,141,175,212,166,206, 85, 51, 57,233, 51,147,143,191,150, -126, 90, 43, 55,118,121,106,143, 27,203,234, 7,248,196,118,109,174, 36,165, 14, - 80,230,198, 40,169,113, 2,193, 65, 4, 66,125,205, 76, 90,239, 43,221,139, 10, - 80, 91,149,212,226, 19,183, 43,173, 57,235,249,128, 26,103, 93, 85, 8,100, 81, - 72,162,217,155,219,184, 39,199,217,202,212,201,175, 43,254, 49, 20, 94, 1, 66, -192, 87,248,160, 18,252,193,117, 35, 21,143, 98,255,100, 33,185, 56,224, 23,211, - 36, 74, 38,106,122, 80,209,202, 22,243, 75,142, 51,160,112,165,162,224,180,254, -191,227, 56,119,128,145,178,136,116, 86,105,207,128,115,209,117,105,232,175,253, -163, 73, 44, 87,204,159,219,218,102,253,193,137, 25,206, 1,172, 8,103,182,230, - 74,123,102,154, 0,181,223,114,221, 50,137,237,173, 36,214,215,185, 14,124,240, -193, 23, 57, 17, 62,248,224,195,245,177,241,213, 29, 64, 21, 97,192,123,106,174, - 42,171,210, 15,129, 84, 24,146, 24,161, 60,164, 23,125,160, 97, 46,153, 17, 10, - 82,146, 58,149,225,112, 2, 17, 17,177,177,217, 1, 36, 17, 50, 14,109, 77, 38, -197,130, 98, 39,179, 83,132,204,150, 58,185, 18, 76,100, 37,212, 78,166,128, 41, -164,163,132, 88,149, 82, 97,228, 74, 38, 67, 5, 10,203, 21, 43, 5,177, 86,152, -108, 6, 86,164, 58,168, 66,149, 80,104, 69,178,172, 82, 61, 82, 19, 42,165, 87, -110, 55,164, 50, 10,149,142, 50, 98,213, 88, 44,113, 16,219, 23, 11, 20,150, 42, - 86, 16,196,108,215,185, 75, 89, 80, 29, 92,177, 90, 80,136,133,207,118, 84, 29, - 9, 21,150,211, 27, 14, 31, 96,105, 74, 1, 67,249, 84, 84, 17,170, 95, 65, 62, - 98,129, 8, 88,172, 58, 64, 45, 18,139, 74, 58, 51, 97,169,122, 48,101,245, 16, -129,237, 60,187,137,154, 38,229,178,144,216,113,104,192,209, 48, 16, 75, 83,148, - 23,123, 79,208,166,246, 80, 82,146,163,140,148, 2, 62, 66,143,132,116,133,169, - 35,177,100,177,202, 32, 22,128,133,105, 63, 12,165,156, 82,200, 7, 87,164, 22, - 84, 14,194, 44, 29, 8, 9,179,139,202, 9,150, 4,172, 82,183, 27,229, 93,189, -147,247, 24,246,119,139, 85,200,214,181, 11,225, 47, 33, 61,251,172,145,192,141, -162,191, 95,142, 53,187,236,187, 40,189,238, 9,202,186, 17,112,208,148,142, 94, -115, 22,192,209,241, 72, 80,184, 34,110, 79,195,144, 82,233,118,119,111, 16,133, - 69, 4,196, 17, 74,101,151, 54,105,138,249,153,201,206,232, 90,160, 47,136, 42, - 69,193, 30, +// ../Source/Template/GB_add_bitmap_M_bitmap.c: +uint8_t GB_JITpackage_106 [714] = { + 40,181, 47,253, 96, 82, 17, 5, 22, 0,198, 91, 88, 32,224, 90, 55,224,207,180, + 99,154,225,243, 48,154,240, 16, 31,196, 35,115,234, 90, 59,108, 62, 52, 39,148, + 36,204, 16,105,196,132, 80, 0, 76, 0, 77, 0,251, 51, 97,144,231, 76, 29, 99, + 44, 18,139, 67, 67,145, 88,120,129, 35, 56,166,113,234, 90, 28, 65,125,245,109, + 17,196, 33,199, 54,218,169,223,120,201, 12,228, 53,121,199,237, 55, 46,183,153, +115,233,101,154, 99, 94,113,172, 26,232,132,162, 9, 36, 21,135,104,118,188,224, +198, 37,219,117,215,214,140,103,217, 60,100, 89, 88,251,234, 83,247,243, 74,243, + 37,203,205,149,228,214, 95,230,155,114,242,191,141,223,187,240, 58,182,197,176, +251, 29, 62,248,121, 4, 69,206, 49, 39, 69,215, 52,246,202, 76, 32, 22,135,255, +184, 59, 82,135,144,143, 61,188,195,239, 52,135,215,225,115,184,115, 24, 89, 62, +136,238, 83,228,235, 7,185, 14, 19, 63, 97,208,179, 40,150,124,146,188, 48, 18, + 62,196, 27,141,102, 67,151,140,173, 25,119,239,187,176, 20,212, 74,105,196, 11, +238,114, 89,141,173, 70,240, 16,232,178,109, 20, 32,113,255,106,160, 62,113,138, + 38,241, 74,196,221,125,206,214,156,136, 15, 69,223,250,126,246, 93,150,124, 95, +144, 20, 61, 95,237,115,190,220,189, 53, 61,220,133,143,215, 14,242,199,213,151, + 85,199, 52,206,255, 10,112,136,198,194, 6,252,187, 50,115,225,183,159,188,181, +211, 17, 97, 62, 84, 11,105,170,221, 52,150, 18,188,213,185,120, 64, 23,142, 13, +105, 54, 30, 6, 20, 44, 74, 95, 15, 71,188,240, 44,172, 65,199, 84, 27,173,104, +131,129, 99, 37,205,214,128,161,160,241, 37, 83, 35, 19, 68, 83,144, 20, 50,173, + 1,112,136, 12, 17,217,230, 19, 40,139, 51, 69, 74, 69,185,141,176, 84, 20,177, + 45,161, 78, 52, 44, 62, 10,155,196, 89, 92,233,174, 24,118,128,116, 23,138,217, +145, 19,231, 67,179, 57,248, 52, 61, 24,115,231, 61,100,129,168, 47, 1, 22, 70, +238,152,113, 13,200,204,156,146,198, 79, 70,244, 8,184,108,214,162, 67, 71,225, + 88,174, 96, 38, 27,231,152,251, 0,117, 50, 25,220,240, 60, 83,180, 44,117,205, +211,137,156, 74, 4, 37,100, 81, 52, 64,146,128,185, 76,220, 22, 79, 68,112,129, +200, 39,168,195, 30,150, 11,135,177, 96, 36,208, 10, 30, 58, 2,131, 35,160,243, +160, 5, 60, 87,129,199, 0,132,103, 36,127, 5,141, 90,192,111, 4,148, 93,112, + 13, 28, 52,240, 36, 65,102, 95,176, 28,235, 23, 5, 8,221, 39, 96,230,185,125, + 59,146, 84, 92,220,211, 73,196, 13,128, 29,169, 71, 24,219,107, 81,154,144,232, +226,184,209, 70, 8,186, 56,106,180, 17,131, 49, 30,233, 71, 27,126,232,146,113, +129, 90,134,145, 5,112,217, 72,193,128,194,225, 35,100,162, 72,113,227,109, 80, +140, 93, 21,166, 51, 62,103,180, 93,190, 29,240, 22, 25, 67, 51, 6,107,132,114, +153, 46,204, 25,194,215, 97, 35,240, 54,247,215,226, 68,169,159,214, 87, 25, 98, +161,148, 64, 81, 9, 48,222, 41,131,180,233, 32,219, 96, 4, 23, 32,118,159,105, +255,148,245, 70, 93, 29,194, 13, 20,126,166, 25,180,105,110, 84,102,106,159, 96, +197, 46, 25, 20,181, 35,113,113,154,102,164,232, 36, 3, } ; -// ../Source/Template/GB_meta16_methods.c: -uint8_t GB_JITpackage_121 [400] = { - 40,181, 47,253, 96,135, 3, 53, 12, 0,118,213, 67, 32, 16,147,117,230,109,189, -195, 75,154,158, 23,212, 5,150,111,250,227,110, 85, 67,243, 67, 40, 80, 51, 98, - 35, 2, 0,168,242, 27, 60, 0, 56, 0, 55, 0,146,194, 80,168, 62,136,130, 19, - 48,237, 64,198, 39,247,207,204,118, 67, 45, 39, 92, 78,242,230, 6,239, 99,209, -248,194,237,234, 76, 57, 87, 20,167,207,181, 57,194,236,218,236, 95, 96,105,103, -194, 0,115,111,176,247, 56, 69, 69, 18, 69, 5,199,246, 70,184,121, 95,168,197, -150,167,168,255,143, 34, 80, 84,152, 42,169,103,132,155,251,226, 54,205,104,174, - 45, 35, 82,227,218,145, 74, 36, 12,195,154,100,119,110,227,174, 28,231,169,161, -149,107,154, 59,225, 80, 21,170, 86, 98,207,227, 6, 71, 88, 40, 12,193,101, 63, -203,145, 35,237,221,158, 45, 96, 78,184, 90,154,105,165, 89, 75,192, 91,114,180, - 88,105,224, 93, 86,120,247,204,254,147, 41,126,207,252,106, 47,107,111, 45,159, -225,204, 1, 81, 20,122,239, 61,137,228,226,176,220,196, 18,121,149,134,149,129, - 52,174,138,179, 46,236,138, 96,159,249, 25,149,181,114, 14,248,181,247, 54,174, - 42, 67, 99, 56, 55,236, 96,104, 92, 14, 98, 97, 7,173, 1,113,234, 12,181,109, -211, 25, 67,228, 47, 32, 80, 68, 48,136, 24, 15, 40, 4,203, 1, 25, 10,139,216, -208, 17, 76, 23, 14,173,251,132,151,103,215,137, 88, 50,160,188, 5,162, 73, 64, - 79, 0,112,162, 9, 44,192, 46, 33, 88, 2,186,229, 81, 68,163, 84, 70,196, 68, -220,227,144, 9, 47, 65,230, 94, 49,185, 83,200,143, 37, 44, 49, 48,113, 47,200, -107,196,106,104,196, 5,221, 30,130, 10, 85,160, 16, 1, 38,170,113, 11,202,160, -105, 8, 51,105,199, 2,107,112,197, 35, 36, 44, 18,170, 23,210,250, 21, 45, 67, +// ../Source/Template/GB_add_bitmap_M_bitmap_27.c: +uint8_t GB_JITpackage_107 [842] = { + 40,181, 47,253, 96,201, 11, 5, 26, 0,230,229,115, 40,208,240, 56, 7,254,167, +122,237,247, 13,176, 93, 64,190, 21,166,199, 48,226, 25, 38, 84, 71,207, 23,252, + 46, 30,172,172,114,205,252, 69,174,102,192, 11,231, 11,108, 0, 98, 0,104, 0, +242,110,157,113, 36,109,183,198, 36,131, 36, 66,243,153,100, 77,170,109,219,225, +246,106, 22,210,225,115,194,191, 1, 75,197, 34, 49, 16,168, 88, 14,193,168, 63, + 43, 73,172,249, 4, 94, 67,187,220, 72,134,254, 64,144,161,210, 40,215,205,165, +109,101, 10,234, 43, 59,208, 52,103, 39,162, 84,207, 54,254,131,127,157, 99,110, +253, 85, 17,152, 73,232, 60, 16,172, 95, 12, 44,157, 72,121,116,229, 21,179,140, + 99,181, 57,133, 50, 73, 40,148,242,242,181, 84,207, 46,107, 13,179,135,108,209, +162,108,198, 93,181, 27, 71,157,232,179,231,228,202,244,116,196,157, 71, 22, 92, +233, 3,243, 76,222,223, 77,102,156,118,187,243,255,159,166,210, 52, 77,180,203, + 93,239,202,112,114,237, 46,214,213,107,187,155, 76,122,109,237,202,190,220,150, +245,221,122,212,147,142, 56,236,239,149,123,199,202, 91, 83,101, 98,145,180,134, + 49,133,191,212,150,162, 21,245,234,250,187, 32,117, 24,171,106,243,204,249, 55, + 30,100,125,187,190,190, 49,102,157,179,127,221,213,123, 43, 15,185,120,146,186, +144, 35,234, 34, 74,125,129,211,137, 33,133, 13,194,233, 49,207,252,239,109,108, + 24,245, 6, 15, 39,196, 9, 57,192, 79,196,176,124,255,178,173,233,223,173,124, + 45,253,141, 4, 5,165, 72,228, 8,199,188,242, 12, 5,177,147, 73, 27,118,137, + 80, 27, 39, 47, 86, 63, 81, 28,130, 5,211,212, 81,185,220,118, 43, 51, 47, 69, +176,103, 94, 65, 39,126, 89, 16,222,230,219, 23,100,145,204, 54, 43,114, 55, 86, + 81,226,227,177, 94, 85,158,140,217,200, 26,157,220,240, 32, 31, 29, 2,148,173, + 39,233, 0,167, 22,245,143, 71, 1,196,129, 80,168,170,139,179, 50,210,191, 12, +248,119, 33, 89, 3, 61, 12,213, 35,240,153, 91, 47, 65,174, 7, 4,156,219,206, +190,206,193,113,198, 52, 26, 24, 61, 32,142,168, 51,145,124, 4,128,156,160,145, + 37, 51,138,208,136,140, 36, 73, 10, 25,214, 64,132, 24, 67,102, 55, 7,201, 98, + 63, 80,156,107,171,178, 51,142, 24,180,114,176, 32, 86,113,113,222, 29, 0,141, + 43,116, 11,243,216, 0,204,123, 89, 32,156, 76, 76, 64, 8, 92, 72,151, 4,120, +112,227, 37, 29, 47, 68, 59,134,136,102,211, 40,198, 19,153,125, 97,241, 36,114, + 61,205, 2, 3,218,230, 65,245,226,181,179,251,104,164,201, 71,184, 13,140, 44, + 16,223, 15, 8, 7, 4, 3, 12,168,182,253, 42, 32, 79,161,243,192, 37,244,154, + 33,104,131,192,236,231, 95, 10,224,242,224,246,178,133, 14,143,106,236,126,101, +225, 12, 50, 76, 2,202, 0, 78,232, 46, 38,118,102,181, 60,143,229,154,192, 68, +193, 45, 1,215, 0, 20, 38, 96, 13,120, 6, 65,119, 1,123,154, 15,139, 46,159, + 12, 3, 34,205, 96, 56,135,199, 28, 78,220,228,231,172,203,120,146, 52, 1, 62, + 68,128,240, 87, 53,192,185, 57,161,232,240, 10,166,130, 0,210,237,143, 26,217, + 2,183, 2,194,144,255,190, 41,211,173,225,192,255,203, 94, 45,157,234,123,203, + 29, 19,199,205,210,172,166, 95,255,219, 63,103, 78,201,106,178,201,166,201,206, + 63,147,216, 37,228,152,117,249,168, 1, 54,214, 48,122,193,134,206,110,207, 74, +210,218,199, 58, 14, 64, 1,103,202, 75, 20, 22, 26, 21, 53, 43, 10, 63, 50,138, +237, 22,195,109, 20,204, 84, 23, 7, 99, 55, 10, 89,200,237,104,196,105,190, 73, +100,133,164,121,110, 73,183, 64, 49, 97,104,212,118,211,110,180,201, 12, 92,124, +211,124, 84,102, 98, 7,189, 54,255, 56,122, 14, 93,127, 17,251, 57, 68, 82, 20, +220, 1, +} ; +// ../Source/Template/GB_add_bitmap_M_bitmap_28.c: +uint8_t GB_JITpackage_108 [1138] = { + 40,181, 47,253, 96, 77, 16, 69, 35, 0,198,235,132, 40,192,208,170, 14,248,125, +236, 97,162, 9,185, 8,203, 6, 37, 52,207,181,239,170,123,108, 61, 47,174,196, + 82,165,150, 92, 4,216, 75,192, 52, 9, 2, 0,150,207,126, 0,116, 0,122, 0, +151, 36,129, 80, 30,189, 97,244,198, 87,190,174, 90,205,182,179,204,163,177,109, +172, 50, 60, 34, 46, 28, 72,214,163,175,113, 59, 28,231,205,162, 58,156,227,226, +225, 0, 69, 66,121, 24, 76, 36,148, 59,176,233, 16,215, 17,189, 28, 18,143,177, +101,175,171,158,195, 78,100,144,219,165, 31,166,210,248,163,183,211,185,138, 58, +210,215, 23, 99,139, 64, 46,190, 60,228, 56,145, 22,137, 80,243,234,215,161,164, +162,133,160, 1,176, 92,175, 28, 80, 52,243,210, 46,215,207,204, 50, 58, 37,230, +145,136,244,136, 68, 2,182,239, 97,254,238,243, 36, 40,208,160,168, 91,170, 75, +110, 77, 14,108,177, 10, 53, 89,175,102,236,187, 68,113, 7, 86, 51,205,120,106, + 78,148,245,134,225, 59,236,188, 38,156,209,254,182, 60, 59,145,118,174, 57,122, +127, 59,239,180,179,160,223, 5,168,158,213,252,108,171,124, 21, 51,111,203,173, +249,255, 75,146,134, 36, 65,112,228,232, 39,202,152,232,203,184, 69, 28, 29,253, +235, 45,215,126,102,233, 97,246,108,214,217,118,215,220,237, 60,236,159,119, 13, +174, 15,119,226,159, 75,210,106,102,175,233,229, 25,167, 4,103,115, 53,230,122, + 35,242,123,104,155, 27, 61,224,247, 18,252, 40, 71, 49, 60,175,233,156,141,135, +235,188,135, 23,241, 16, 84,233, 37,110, 24,104,238,207,169,120,235, 14, 16,172, + 83,195, 67, 66, 39, 3,145, 48,233,229, 18,231,166,147,209, 58,179, 90, 61,252, +196,233,113, 74,137,185,117,250, 60, 15, 14,170,221,116,237, 78, 95,200,104,166, + 39, 1, 99,169,110,253, 16,102, 88,108,122,195, 38,227,201,120, 28, 34,103,134, + 48,205,135, 89,146,180,177, 65, 81, 19, 73,183,203, 81,208, 97,149,242,115,199, +228, 22, 86, 79, 89,151,119,226,181, 90,170,203,207,203, 88,143,190,229, 16,168, + 71,244,203, 2,214,175, 9,117, 57, 16,194,208,148,119,122,228,132, 14, 55, 57, + 93, 78, 5, 16,174,142, 16,172, 76,242,154,119,223, 91,126,102,171,102,169,254, +234, 21, 19,150, 9,196,106, 71, 45, 70, 38, 41, 2,216, 82,148,171,110, 97,235, + 12,245,148,183,222, 88,229,176,156, 25,127, 85, 11, 9,100,108, 61, 76,114, 13, +138,222,122, 69,129, 7,168,225,169, 34, 51, 34, 34, 35, 73,146,100, 89, 3, 49, + 12, 66, 97,144, 91, 73, 61,194,136, 68,138, 50, 12, 75,128,136, 35, 68, 25, 66, + 8, 18, 24,162,132, 34, 73, 19, 73, 65,242, 84, 73, 13,213,121, 90,191,155, 8, + 32, 68,218,144, 35,162,229,163,179,100, 17, 1, 9,250, 65, 41, 4, 31,161, 81, +177,175, 38,194,127,142,107, 22, 46, 21,169,127,143,188,247, 26, 97, 28, 20,247, +223,240, 12,251, 95, 16,165, 21, 8,133,166, 61,118, 2,127,163,186,117,224, 1, +191, 53,242,233, 12, 51,224,215,123, 24,206,139,219,100,121, 29, 79, 75, 5,146, + 34,249,193,195,118, 9, 31, 67, 80, 80, 3,183, 90,117,233,231,230,221,111,131, +102,104,119, 53,236, 35,237,230,254, 45,223,102,151, 72,200,207,147, 85,109, 29, +207,166,102, 65, 48, 29,184,111,254,208,239, 42, 9, 11,245,140, 47, 35,134,185, + 18,126, 45, 94,168,169,237, 92, 66,167,134,171,193,244, 50, 27,191,133,136, 40, +107,223,100,254,148, 46,218,135,121,254,227,235,153,172,167,139,176, 2,152,145, +103, 52,231, 50,114, 26,218,132, 5, 26,152,182,160,195,153, 11, 39, 54, 90, 14, + 25, 22,110, 80,214, 39, 1, 79,147, 31, 49,155,217, 1, 55, 5,169, 84, 15,206, +144,168,205,177,143, 58,250,121,124,246, 44,195, 88, 67,165, 0,117,238, 77,144, +197, 32,138,161, 52, 33,109,192,221, 82,141, 67, 2,104, 77, 63,151,208, 25, 66, +123,250,154,189, 46,164,161, 16, 8, 71, 1, 56, 96,231, 31, 94, 30,198, 36,105, +200, 90,109, 31,224,231, 91,241, 85,253, 20,188, 35, 45, 78,121,236,138,205,241, + 47,174,228, 7, 68,171, 54, 69,152,121, 18,208,235,148, 53, 47, 84,109, 59, 87, + 34,208,212,115,154,125, 84, 16, 57,146,135,153, 1, 76,254, 0,189, 60, 29, 22, +248, 27,198,228,106, 87, 5, 91,208,250, 86, 34,193,221, 94, 54,134,192,106,150, +188,136,206, 27,172,116, 36,152, 24, 56, 2, 63,165, 19,249, 14,195, 93,158, 23, + 1, 67,160,125,174,171,211,150,218,116,220, 75, 53,136,215, 31,102,222, 27,199, +240, 87,172,226,157, 82,221,117,220, 7, 94,196,175,160,111, 19,222,159,164,231, +223, 82, 84, 50,107,235,230,205, 76, 77,135, 14,139,169,157,103, 9, 26, 48, 64, +134,118,248,242, 3,128,200,174, 73, 29,248,117,195,252,195,239, 46,224,250, 13, +163, 51,190,206, 83, 64, 3,171,246, 62, 3,242,204, 40, 0,216, 28,101,180,174, +231, 21,227,252,224, 97,162,238,220, 20,247, 71,161,243,196,215,136,206,215,217, +133,100, 62,255,168,228,202,169,135,243,111, 36, 61, 80,157,228,166,105, 85,102, + 50,151, 74, 89, 39,165,166,183,235,151,108, 63,133, 78,149, 6, 56, 1, } ; -// ../Source/Template/GB_nthreads.h: -uint8_t GB_JITpackage_122 [473] = { - 40,181, 47,253, 96, 62, 4,125, 14, 0,102,154, 78, 32, 0,149,117,214, 44,112, - 77, 54, 47, 29, 47,224, 10,164, 42,208,233, 12,229,178, 0,169,195, 6, 7, 8, -200,255,255,189, 62,132, 70, 0, 74, 0, 64, 0,175,240, 4,193,198, 47,237, 35, -153,173,103, 98, 94, 93, 52, 9, 67,126,224,125, 32, 26, 95,248,185,116,158,221, -229, 85, 59, 57,125, 79,155, 82,120,225,231,215,114,111,220,221,230,159,179, 7, -188,235,244,220,206, 29,143,144, 23,142,176,175,204, 85,195,120, 28,195,158,133, - 97, 1, 92,228,218,127,172,165,240,117,157, 92, 71,192,131,104, 46, 13,205, 97, -129, 96, 40, 92,199,202, 77,192, 19, 92,153,213,114,131, 31,237,136,219,147,155, -185,118,140, 88,141,107,111, 83, 98,101, 26,149, 43, 54,232, 54,110,203,113,150, -156,105, 57,165,218, 43, 66, 38,200,172,195, 64,144,157,218,166, 85,211, 77,103, -227,255,191,233,213,219,229,190,199,176,255,185,206,119,157,180,206,111, 51,195, -140,223,187,170,189,197,143, 21,190,234, 11,109, 40, 19,230, 27,211,198,221,241, -124, 87,251, 17,173,246,181,101,126,213,169,157,220, 2,217, 21,239, 92, 27,122, -239,113, 51,214, 6,188, 87,162,166,106, 58, 37,130,253, 90, 75,185, 83,211, 23, -215, 20, 12,255, 95,226,212, 96,122, 70,155, 68, 22,255,255, 78,122,148, 8,122, - 52,255,159,220, 58,207,241,148,249, 25,195,166,207, 80,110,176,223,160,201,177, -145,194,108,243, 49,236, 1, 59, 32, 48,132, 8,200,161, 62,161, 0,120, 93,226, -129,109,207, 70,193, 34,112,136, 52, 64,141, 6, 43,207, 61, 38,250,188, 96,206, - 97,119, 6,143, 6,190, 54,204,145, 9,194, 30,130, 51, 16, 39,208, 90, 24, 57, - 64, 29,188,233,148,190,128, 61, 14, 12, 36, 69, 49, 11, 30,157,108, 16,200,237, -136,106, 11,118,125,229,185,176, 93,123,201,168,179, 16, 94,203,217, 88, 33,237, - 63, 17,157, 54, 17,187,188, 13,109,107,195,185,252,165, 52,207, 5, 38,103, 79, -211,229, 52,222,238,119,200,224,240, 76, 87,178, 3,218,214, 30, 52, 49,207, 76, -181,101,172, 22,199, 24,114,106,117,159,162, 96, 8, +// ../Source/Template/GB_add_bitmap_M_bitmap_29.c: +uint8_t GB_JITpackage_109 [1142] = { + 40,181, 47,253, 96, 77, 16,101, 35, 0,166,235,132, 40,208,208,234, 24,248,109, +148, 89, 1,171,114, 85, 85, 75, 52,197, 54, 54, 21,205, 35,168,240, 58,116,167, + 88, 53,228, 6,197, 93,221, 34, 87, 51,224, 7,179, 4,127, 0,116, 0,123, 0, + 87, 36,129, 80, 30,148,203, 38,142,175,100, 90,183,186, 47,213, 50, 15,170, 47, +205,170,195, 99, 2,195,129,104, 52,148,169,166, 16,215,155,195,168, 16,183, 54, + 30, 14, 80, 36,148,135,193, 68, 66,249,148, 73,135,186,134, 38,230,144,120, 13, +110,127, 94,245, 28,118,162,131,197,225,153, 23, 42, 84,231,137, 59,116, 87, 80, + 39,202, 20,107,112, 17, 8,214,143,135,214,130,182,136, 5, 53,183,252, 58,180, +168, 88, 37,104, 0, 46,215, 43, 8, 20,141,196,211,219, 21,147,154, 54,165,181, +240, 72, 36,122, 68, 34, 1,135,218,165,248,112,103,252, 45, 9, 10, 56, 40,234, + 23,203, 37,175,164, 73,223,172, 66, 73,247,171, 59,203,143, 44, 62,101,117,207, +173, 37,106, 65, 26,229, 50,253,233,202, 75,210,218,164,153,219,210, 3,109,183, +212,218,249, 79, 15, 99,102, 12, 96,185, 86,247,247,173,241, 22, 75,251,184, 77, + 53,255,255, 40,226,136, 34,136,182,236,204,160,157,129,242,214, 20,100,103,232, +153,114,187,210,107,119, 30,238,239,106,116, 95,234, 81,139,189, 47,123,254,174, +209,245, 1,213, 47,112,197,177, 43,218,170,118, 47,249,109,105, 73, 10,206,230, +186, 69,181,165, 29,145,227,195, 75,109,232, 1,199,135,121,218,153,105,121, 73, +231,108, 62, 93, 37, 62,204,176, 14, 63, 21,195,196,141,131,117,234,147,195,118, +190,250,244,129, 85,122,136, 80,232,100, 36, 20, 36,134,193, 68,185,233,100, 54, +170,221,173, 30, 98,150,116, 75, 90,213,177,111,121,240, 79,245,164,111, 88,122, + 67, 70, 35, 61, 10, 11, 23,203,171, 31,194,141,155, 73,127,216,100, 60, 25, 15, + 68,228,200, 78,207, 29, 81,212,209, 65, 81,147,184,233,220, 20,251, 28,214,199, + 56,169, 56, 77, 94,101,245, 84,245,136, 43, 94,235,197,242,152,191,157,209,208, +185,221,193,233, 67, 67, 51,111,129,234,215,132,194, 28, 8, 97, 39, 35,230,116, +135, 92,148, 30, 37,195, 71, 87,110, 79, 29,172, 72,241,219,135, 79,185,125,237, +214,237,242,174,187,229, 23, 21,151, 9,204,170, 55,175,134, 22, 41, 2,250, 82, +211, 98,220, 42, 59, 42,227,171,211,172, 90, 29,229,214,185,110,157,192,214,247, +203, 36, 20,246,129, 9,168,193,173, 50, 51, 34, 34, 35, 73,146,100, 89, 3, 65, + 12,130, 48,200,173,164, 30,178,120, 88, 16,165, 24,150, 0, 17, 72,136, 81,132, + 8,140,224, 72, 73, 80,177, 50, 75,218, 6, 68, 73,165, 83,121,186,183,155, 11, + 64, 56,216, 80, 42,226,171, 71,143, 37, 45, 10,176,173,231, 39,202,178,167,209, + 76,196,155, 73,163,190,192,152,113,172,149,226, 33, 3, 89,113,130,209, 91, 26, + 13,252,167,237,185,141,210, 61,133, 66,209,158, 68,224,135, 81,125, 25, 48, 74, +198, 30,103,151, 60, 28,200,255,104,115,202,181, 18,244, 98,160,216,199,145,200, + 2, 81, 34,249,133,234,181,242,145, 20, 26, 53,121, 34,137, 46,158,140,223, 59, + 11,136,172,237,144,200,254, 4,184,206,191, 47,110, 69,192, 36, 68,243, 36,177, +182,199,179, 71,179, 18, 92, 15,252, 57,247,251, 1, 74,250, 72,189,242,185,199, + 80,113,165,184, 40, 87,162, 62, 19,221, 26,233,182,251,209,106, 44, 7,201,132, + 91, 15, 38, 68,211,247, 72, 25,134,243, 63,107,101, 51, 52, 45,114, 24, 48,214, +204,150,200,185, 93, 20,210,210,180,130, 52,125,118,212,248, 33, 85,204,204,246, +152,179,195, 88, 31, 72, 18,164,153,253, 6,108,230, 38,220, 96,184,168, 84,114, + 74,130, 0, 56,136,252,253,107,244,100,189, 34, 8,245,198, 85,197, 54, 97, 22, +149, 40,134,210,139,105, 67,220,138,106, 30, 72,136, 86,240,195, 35, 62, 67,104, + 99,158, 51,240, 4, 80,224,150, 15, 83,192, 6, 16,254, 4,151,196,216, 30,141, +165,150, 62,241, 8, 12,127, 44,254, 74, 48,121,182,209,226,138, 71, 90, 10,116, +228,197,136, 27,180,159,108,232, 9,195,240,102, 42,157, 30,128,169, 16,200,215, +214, 94,153,183, 54,191, 15, 9, 87, 38, 11, 83, 51, 99,206,221,162, 90, 9,174, + 35,122,212, 37, 94, 66, 86,231, 45,153,125,155, 8,227,239,170,219,250, 50,140, + 52, 24,253, 28,216,234,114, 24,210, 58, 82,253,244,167, 22,118,133, 91, 47, 31, + 22, 76, 9,237,187, 46, 8, 44,237,230, 52,160, 75, 72,152, 97,190,190, 34, 51, +135,156,196,191,176, 18,127,114, 48,245, 33,156, 16, 26, 23,157,198, 76, 56,126, +172,159,215, 77, 65,242,172,175,155, 69, 51, 56, 61,138,176, 76,237, 54, 75, 20, + 81, 61,180, 49,247, 95,115, 1,143,108, 72,106,250,175, 47,230,141,252, 2,196, +209,239, 18, 61, 51, 67, 96, 78,202,224, 61,142,202,160,207, 64, 61,195,133,159, +205, 81,162,133, 61, 23, 49,206, 12, 30, 26,117, 90,167,184,122, 20, 18, 79, 72, +205,118,126,214, 21, 4,136, 50,137, 74,143,156, 50,112,248,198,249, 2, 41, 68, +110,154, 87,101, 38,122, 73, 17,215, 73,254,116,164,250,157,228, 39,106, 73, 15, +235, 24, } ; -// ../Source/Template/GB_omp_kernels.h: -uint8_t GB_JITpackage_123 [599] = { - 40,181, 47,253, 96,119, 5,109, 18, 0,118, 95, 94, 32, 16,149,115,231,182,111, -244, 50,232, 92,214,162, 49,181, 58,233,130,120, 4,252,226, 98, 66,245, 36,194, - 17, 1, 0, 84,193, 13, 86, 0, 86, 0, 80, 0,149, 45,107,110,175,252,180,230, - 28,103,157, 74, 32, 12, 8,130,226, 96, 64,124,160, 9, 78,217, 22, 65,200, 43, -235, 37,121,105,215,155, 83, 19,102, 85, 28,210,131, 53,178, 96, 91,161,135,241, -237, 15,251,236,103, 44,147, 61,204, 63,179,237,119, 59,105,223,158,189,113,252, - 66, 86,150,227, 89, 25,148,121, 29,205, 28,145, 23, 10, 19,161, 80, 8,241,113, -194, 83,246, 86,234,121,159, 61,237,248, 93,236, 28,252,108,115,142, 89,254,127, -154, 30,152, 37,211, 92,149,201, 99,210,182,149, 69, 44,111, 87,249,114,156, 56, - 48, 73, 50,172,114, 93, 52, 23, 37,203, 88, 48, 27,199,185,117, 96, 50, 84, 8, - 2, 75, 13,122,214, 23,149,123,235, 59, 57, 78, 8,108, 39,107, 93, 33,120, 32, -153, 42,178, 40, 87, 6,147,253, 91,115,220,144,213,236,122,103, 51,206,241,227, -180,217,129,106, 32, 43,203, 86,240, 8,249,218,248, 95, 40,175, 54,191,237,252, -153, 80,106, 36, 46,112,133, 94, 71,181, 71, 6,105,148,171,124,103,223,246, 41, - 30, 81,201, 95,177,253, 32,167,157,235,119, 61,168,105,221,209, 11, 69, 80,254, -210,121,203, 52, 6,193, 65,192,150,187,190,163,255,178, 76, 54,157,108,115, 69, - 6, 23,220, 70,200, 85,222,140, 4,187,236,242, 39, 59, 6,177, 46,141,100,147, -121, 44, 75, 22, 39,220,166,105,235, 56, 25, 48,248,168,188, 61, 58,215,218, 95, -136,235, 1,181,178,194,112, 96,108, 28, 71, 85,190,144,123,165, 63, 84,137,230, - 95,251,117,183,149,185,174,116,112, 9, 82, 40, 32,132, 16,163, 28,154, 7, 18, -106,174,132, 84, 35, 68, 34, 18,205, 68, 52,241, 31,101,232, 1,226, 8,194, 68, -252, 53,193, 6, 4,213,236,208, 49,167,145,188, 97,179, 84, 15, 96, 30,234,136, -228, 27, 32,129,248, 4, 31,237,128, 30, 18,130,113, 16,187,182, 6, 66, 41, 3, - 65, 14, 45, 7,183, 16,128, 22, 25, 44, 50, 37,192, 18, 59, 3,218,241,110,214, - 68,114, 19, 61, 32, 10,120, 50, 29, 89,110,103,140,227,105,222, 52, 21, 21,210, -192, 8,130, 68, 19,104,217, 63, 3,162, 13,228,122,138,102,206, 33,162, 84, 8, -232,107,173,229,255,160, 27,244, 61, 10,244,123,191,177,168,233,254, 30, 84,153, -129, 47,121,118,233,164,119,111,196,214,172,241, 10,222, 71,227,109,211,220,232, - 24,237,194,213,235, 32,121,211, 80,231, 99,118, 43,212,109, 63,230,179, 80, 93, -211,246,160,233,223, 77, 2,224,210,168, 52,128,248,230,188, 70, 43,192, 13, +// ../Source/Template/GB_add_bitmap_M_sparse.c: +uint8_t GB_JITpackage_110 [1476] = { + 40,181, 47,253, 96, 1, 24,213, 45, 0, 54, 57,167, 39,192, 24,113, 14,192, 31, +182,239, 46,215, 70,243, 71,229, 27, 33,230,190, 58, 95, 0,254,168, 32,130,243, +100,196,143, 25, 8, 14,176, 44,130,128,178,168, 64,158, 0,147, 0,159, 0,152, + 1,195,248, 74,151,223,235,190, 74,182, 76,248,174,174, 54, 35,246, 19,184,231, +208,102,135,107,157, 51, 85,200, 26, 63,218,167,104,191, 19, 29, 96, 50, 5,156, + 89, 43,167, 59, 76,110,172, 43,228,203,162,128, 41,100,171, 51, 10, 62, 34, 54, + 48, 23,135, 38, 83,230, 56,173,153, 72,115,252,189,233, 46, 33,115,144, 41,104, + 64, 56,200,220, 98, 73,119,180, 67, 27,113,204,244,147,172, 70,173, 59,238, 60, + 83, 6, 39,147, 59, 41, 60, 92,123,243, 68, 24,169, 69,235, 23,220, 79,150, 39, +153,193,169,187,119,238, 56,151,105, 3, 65, 1, 60,116,238,192,116,174,164, 21, + 85,201,213,106,127,170,235,218,138, 67,113, 3,131,168,192,192, 32, 60,179, 90, +105, 27,252,227,247,118,174,188,212,226, 87, 19,217, 41, 5, 50, 4,115, 43,149, + 20, 68,183,194,203, 62,205, 69, 96, 87, 32,174,168,111,206, 86, 63, 74, 85,149, +206,198, 64, 4,175,149, 2, 67,172,208,162,152, 56, 25, 37,214,191,221, 72,248, +117,251,212,134,123, 71, 29,139,135,147,107, 93, 9,251, 21, 50,229, 41,105, 83, +231,201, 89,201,198,159,159, 60, 24, 57,191, 76,223,220, 50,226, 90,138, 52,183, + 84, 32,186,148,244, 14, 14, 9,143,103,114,123,107,155,149,194,104, 65,206,234, + 93,141, 16,179,248,255,115,126,249,244,205,223,249,140,119,255, 31, 69, 79,137, + 34,204,123, 91, 20,198,174, 77, 35,103, 29, 24,132, 77,230,188,189, 13,101,181, + 75,238, 96, 67,230,207,233,102, 43,209, 74,230,155,135,124, 58,253,139,164, 36, +200,187, 47, 49, 74, 83,237,206,196, 51,117,168,170,181,191, 24, 63,188,205,138, + 53,104,174,246,160,249, 55,167,228,140,213,226,208,179, 10,114,150, 17, 14,237, +172, 4, 31,249,230, 29,137,112,177, 64,126, 33,185,225,156,115,238,130,124, 87, + 81, 82,250,180, 81,117, 72, 80,104,238, 50, 74, 58, 85, 85,112, 40, 70,104,103, +213, 2,114, 14, 82,189, 96, 99, 15,154, 95,243, 16,144, 71, 41,151,203,195, 53, + 63,248,230, 87, 75, 22, 4,103,181,182,240,228,146,248,109, 23,103, 22,189, 69, +162,215, 6, 81,180,178,114, 48,185,238,139, 87,236,186, 86, 63, 41, 23, 70, 89, +105,148,112, 75,226,163,153, 72,107,145,222, 81,148,174,252,206,106,194,135, 75, +171, 5,221,180,200, 48, 98, 45,125,198, 79,159,156,213,230,222, 72,120, 74,174, + 0, 17,245,168,115, 45,206, 72,105,126, 14,135,118, 53, 73,155, 40,138,176,190, + 32, 3,125,139, 45,112,238, 30,175, 44, 63,171,162,206,176, 3, 44,140, 66,166, + 10, 56, 95,219,179, 96, 86,227,231, 60,151, 51, 48,112, 75, 70,134,199,196, 85, + 84,190, 49, 81, 29, 22,156,202, 99, 81, 77,210, 51, 36, 52, 56, 36, 48,170, 14, +139, 11,140, 47,172, 5, 64,116, 53, 17,216,116,123, 99,125, 69,173,243, 99,222, + 11,129, 91,168,177, 37, 67, 68, 35, 34,146, 20,164,160, 80,104, 12, 97, 12, 66, +148,148, 88,170, 59,130,136, 60,206,225, 16, 69, 12, 70, 2, 68, 8, 17, 16, 70, + 2, 9, 36,146,104, 36,148,160,180,122,138,147,156, 32, 45,204,252,102,100, 54, + 33, 49, 61, 5,102,113,188,116, 21,112,217,250,180, 52,243, 85, 38, 88, 89, 84, + 80,233, 98, 72,217, 68, 65,233,193,112,178, 8,152,116,123, 80, 50, 81,187, 71, + 24,217,106, 68, 58,103, 18,178, 15,118, 58,202, 71, 62,138, 71, 71,171,247, 73, +168,170,222,129,179,149, 44, 11,224,246,220,152,168, 41, 84, 56, 56,167,198, 68, + 88, 45,185,229,104,170,169,139, 37, 7, 49,148,107, 0, 61,156,156,189, 91, 18, +183, 20,131,103,137,185, 21,158,185,172,156,109,162, 67,120, 1, 90, 40,219,164, + 91,241,194,180, 60,141,144,109,226, 45,232,148,134, 46,215, 65,234, 35,206,113, +143,154, 93,131,127,164,254,194, 92,170, 37,173, 5,133,182,146,223, 16,102, 50, +125,218, 79, 13,125,170,228,200,122, 54,254,162,157,211,179, 63, 98,167,198, 59, +170,180,214,103, 37,247,183,160,145,169, 50,154, 16,235, 44,206, 42,231, 90,178, +218,135,168, 35,114, 1, 60, 76,176,107,199,138,188, 90,197, 94, 10,118,162,227, +227, 75, 98,163, 12,170, 95,216,227, 73,123,144,170, 39, 56,161, 66,254, 42,118, +196,234, 26,154,135,129, 73,107,247, 96,218,185, 61,195, 87,199,243, 27,215,158, +240,175, 18,171, 73, 14, 39,211,184,158,147,243,137, 42,233, 60, 65,168,103, 61, + 59,147,208, 77, 67,242, 48,127,132,178, 38, 1,122,134,102, 78,117,218,190, 56, + 12,156, 6, 6,138,138,164,244,210,215, 6, 45,241,216, 53,212,150,107,118, 36, +218, 59, 28, 11, 78, 88,201, 53, 31,226,102, 25,187, 35,217,162, 83, 92, 52, 58, + 29, 74,186,232, 24,100, 51,169, 21,116,121,144, 93,245, 44,225, 84,251,188, 76, +134, 79,118,129,169, 14, 75,170,248, 35,218, 96,230,214,113,234, 21, 3,178,158, +246,135,154,233,157,131, 24, 74,144,141,105, 94,120, 62, 22, 22,158,169, 52,117, +195,236, 1,108,198,191,125,238,202, 23,110,180, 49,222, 89,249, 94, 60, 88, 16, + 38,125, 91, 67,211, 34,237,193, 11,169,216, 85,155,180, 74,199, 90, 28,255,235, +170,111,202,238, 10, 64,161,166,177, 49, 11,121,110, 34,251,223,142, 99, 46,118, + 47,147,243, 21,130, 75,236,221, 29, 33,215, 23,156,176,114,236,160,179,243,194, + 48,147,167,196, 18, 21, 87, 74,167,144,100,228,225, 92, 96,224,243,178,238,151, +130, 73,191,227, 14, 82, 25, 43,174,122,176,235,219,177, 39,192, 50, 63, 98,173, +139,186,247,245,203,156, 77, 55,129,149,224,223,237,135,204,209, 25, 0,244,130, +202,177,147, 31, 54,183, 4,229,168, 7, 32, 66, 54,221, 65,250, 40,215, 79, 57, + 4,226,162, 44, 45,206, 24,122, 82, 25,179, 93,247,248,232, 12, 17,167, 7,254, + 76, 74, 23,175, 48,219,140,181,206, 86,180,154,204, 50,239, 46, 22,200,234,232, + 99,212, 98,192,205,160, 13, 33,241,166,117,174,142, 57, 66,161,113, 79, 6, 24, +223, 1, 30,113, 78, 32,165,131, 11,128,156,222,209,122,109,135,182, 9,148, 37, +185,131, 0,170,145,107,223, 65,129, 85,208, 15, 47,185,236,153,164,188, 83,181, +199, 83,132, 99, 79,129,138,243,229,241,193, 2,199,191, 64, 4, 81,121,176,196, +140,222,200, 16,186, 15,140,119, 84,100,254, 83,189,134,237, 83,244, 67,102,181, +125,165, 30, 41, 14,208,146,219,169,165, 49, 83,164, 95,190,105, 86, 63, 48,173, +234, 36,243, 20,111,189, 83,123,225, 58, 9,141, 74,209,107, 19, } ; -// ../Source/Template/GB_prefix.h: -uint8_t GB_JITpackage_124 [259] = { - 40,181, 47,253, 96,202, 1,205, 7, 0,178,140, 41, 23, 32,221, 1,163,204, 96, -126, 23,192,172, 0, 23,171,218,171,103,223,123,129, 4,128,197, 3, 0, 48,110, - 17,125,119,199,158,110,122,245, 43, 48,176,134,133,101,150, 61, 8, 60,246, 97, -214,178,142, 5,133,123,162, 71,119, 0, 88,159,119, 81,147,150,141, 47,162,227, - 14,128,163, 72,136, 47, 67, 80,125,220, 89,127,143,187, 69, 95,188,136,103,209, - 15, 55, 70,120, 82, 86,136,255,174,207,190,230,108, 91,146, 91,115,211,124, 92, - 43,201,145, 16, 13,114, 36, 62,132,130,107,118,191,160,228,197,227,114,217,166, -231,230, 92, 59,207,174,160,186,125,187,221, 13,112, 18,221, 39,136,250,246, 96, - 80,169,130,107,229, 78, 89,196,123,252, 85,253,160,202, 13, 3, 32, 12, 35, 32, - 32, 64, 68, 32,144, 34, 31, 8, 0,156,230, 58,102,161,248,128, 7,130,106,185, - 12, 57, 16, 25,176, 70, 48,231,147,152,195,224,130,106, 28, 80, 24,192,238, 75, -163, 70, 6,216, 69,185,100,104, 95,160, 21, 24,103,207, 99,144, 2,196, 84, 96, - 6, 77,153,119,211,104, 80, 53,251,176,192,249,209,149, 27,123,138,186, 33, +// ../Source/Template/GB_add_bitmap_M_sparse_24.c: +uint8_t GB_JITpackage_111 [833] = { + 40,181, 47,253, 96,148, 11,189, 25, 0, 6,101,113, 39,208,210, 86, 7, 42, 29, +227,242,158, 4,192,207,181,189,224,185,237,200,208, 18,114,218,199,107, 99,162, + 10, 79,192,159,100,149, 46,163,212, 3, 30,176,188,107, 0, 99, 0, 99, 0, 85, +198,233, 48,161,208,120, 40,151, 28, 93,137, 37,196,113,198, 50, 38,196, 41,117, +111, 5, 23,203,101,130, 64, 96,185, 60, 18,167, 55, 60, 71,173, 57,197,189, 3, +203, 89,104, 70,188,125,156,195,195,108,223, 6,204, 71,230, 41,250, 72,148,138, + 64,149,215,220, 51, 87,218, 14,172,114,206,219,171,183, 39,113,212, 2, 7, 64, +161, 58,198,224, 2, 37,190,109, 49,228, 64,219,161, 60, 45,120, 93, 13, 95,195, + 43, 21,105, 82,169, 4,120,146, 84,116, 73, 44,226, 71, 42,172, 38,124,181,188, + 88,134, 33, 81,253,205, 64,167,146,210,190,109,111, 67,217, 59,148,209,215, 6, +100,126,205,252, 92,231,111,246,134,137, 52, 14,192,100,112,185, 50, 44, 75,206, +255, 95,146, 62, 36,137,130,229,204,186,188,253,231,114,149, 33, 73,109, 40,139, +191,106,159,131,231, 43,201, 66,185, 76, 36, 22,219,186, 99,174,156,160,153,171, +188, 54, 19,137, 3,205,114,211, 29,124,175,161, 47,153, 69,210,122,237, 88, 61, +195,111,217,149, 30,199,243, 17,141, 54, 39,234,113, 58, 40,115, 12,107,113,171, + 58,245,248, 12, 19, 20,110,159, 57,245,183,230, 81,227,244,135,206, 38, 98, 19, + 1,225, 60,112, 3,119,126,187,170,180,111,249,118,198,246, 25, 26, 28,124, 72, + 36, 87,200,220,114,106,138, 96,218,163, 26, 49,146,169,102, 51,199,123,233,226, +145, 56,115,231,146, 20, 98,201, 89, 61,158,212, 63, 36,241,148,115,157,165,229, + 26, 52,175, 90,193, 44,195, 7, 43, 60,157,234,239, 54,237,136, 97, 99,150,246, +131,196, 12, 8, 33,168, 84, 73, 71, 23,184,173,166,123, 58, 12,159,205, 4,195, +123, 86,134, 39,116,111,246,141,195,189,105,204,214,184,142,195,187,196,157,122, +117,235, 3, 3,111,137,169,180, 14, 2,242,214,104, 28,236,124, 54, 32,121,129, +102,192,155,254, 44,251,128,157,160,161,169, 50, 37, 37, 34, 34, 41, 72, 10, 82, +104, 12, 64,132, 16, 66,119,182, 1,201, 98, 31, 44,154,183,177,130, 78, 22,241, +199, 42,100, 2, 95,178,227,182,211,192,158,157,208, 22, 51, 20,104, 27,195,181, + 63, 14, 38, 52,193,185, 76,132,194,205,164,196, 66, 64, 30, 47,119,188, 8, 53, +102, 25,124,173,217, 18,170,241,139,208,154,152,120, 33,124, 33,221, 2, 35,148, +109, 52,213,220,117,179,251,192,104, 38, 20,233,165, 16, 25,100,240, 17,216, 10, + 2, 48,176,240, 58,237,171,134, 60, 69, 78,246, 2,225, 45, 12,163, 13, 25,102, + 38,223, 74,129,174, 71, 28, 59,187, 16,192, 17,237,234, 87, 86,230,191,210, 37, +178, 10,124, 65,127,221,146, 80,204,187,199,236,129,104,115, 3, 5, 54, 0,184, +134,161,187, 50, 13,196,155, 6, 90,211,225,112,235,114, 51, 96,240, 96, 38,211, +156, 65, 33, 45, 85,208,229, 84, 30,129,212,126, 44, 80, 62, 59, 70, 86, 13,114, +238, 78, 29,218,117, 9, 64,145, 44, 1,153,147, 78, 68,217, 98,216, 67,132,196, +191, 56, 99,154, 2,165,161,252,170,123,181,252, 20,159,183,240, 80, 60,126, 70, +179, 48,141,248,207,228,105,230,244,150,147, 95,142, 44,204,244,157,128, 47, 66, + 7, 86,204,101,218, 67,227,230,136,139,123, 3,110,218, 47, 18, 9,252, 9,192, + 10,124,224, 57,133, 39,213,168,173, 22,124, 71,248, 34, 46, 24, 66, 18,210, 19, + 11,154,132, 51, 43,143,168, 51, 35,107, 69,216, 33, 12,131,146, 90,155,105,113, +145, 2, 55, 48, 26,108,196,132,235,108,154,157, 63,152,108,133, 47, 74, 10,216, + 73, 68,232,113, 93, 49,198, 73, 62, 40, 69,175, 24, } ; -// ../Source/Template/GB_printf_kernels.h: -uint8_t GB_JITpackage_125 [763] = { - 40,181, 47,253, 96,240, 7,141, 23, 0, 86,163,109, 32,224, 88, 61, 24,247,139, - 43, 50, 6,117,163, 45,196, 88,112, 37,118, 66,155, 55, 17, 32,185,174, 43,155, - 51,152, 97,152,230,225,100, 0,102, 0, 97, 0,133,215,248, 65,171, 41,124, 38, -156,140,254, 41,191,254,206,245, 14, 69,182,243,123, 53,199, 20,137, 67,162,208, - 64, 28, 18, 62, 0, 47,199,180, 61,205,137,103,154,167,194, 45,150,236,231,152, -227,117,158, 38,239,183, 29, 61,203,211, 52,145,208, 52,243,230, 37, 49, 87, 23, - 97,235, 89,172,174,177,104,183,197,182, 62,117, 71,152,233,251, 56, 63, 73,214, -141,109, 54,201,200,230, 6,131, 85, 48, 24, 2, 46,110,119,112, 54,157,137, 69, -233,130, 49, 58, 64, 0,240, 81,255,120,231,201, 81, 79,241, 69, 70,242,134, 81, -138,167,143,247, 10, 60,117, 47,118, 76,139,176,205, 91,251,158,165,193,193, 33, - 16, 55,149,192,188,245,229,131,141,233,203, 34,249,180,141,220, 62,239, 3,150, - 69,122, 26, 10,215, 81, 50,178,242,113,151,142, 83,159,226,106, 3,214, 33, 75, - 20, 62, 4,167, 73,115, 71,126, 91,237,198, 79, 47, 1,245,225, 3, 41,189,173, -211,164,230,145,242,114,149, 5,242, 65,150,101,215, 24,176, 28, 96,200,222,212, -221,224,103, 75,221,191,100,183,227, 49,251,119,193,120, 38, 18,141,161,167, 20, - 77,164,235, 68,232,235, 17,196, 99,117,109,195,239,177, 72, 93, 91, 39,129, 31, -130,158,197,156,223, 69,206, 61,219,119,212,159, 67, 61,222,138,237,209,228, 52, - 79,138,231,214,254,225,222,163, 72,183, 14,150, 85, 45,197,239,159, 75,135,225, -139,227, 38, 28,229,250, 58,237,243, 48,237,242, 56,202, 68,254, 13,229, 49,132, - 39, 56,216,224,143, 66,226, 37,185,108,218, 70,102, 36, 20,139, 68, 30, 14, 86, -199,209, 58, 75,225,233,216,110, 17, 83, 49,220, 95,242,215, 27, 65, 70, 80,155, -255, 13, 77,176,144,239,157,158, 10,137, 25,156,165, 42,238,234, 26, 77,135,171, -214,179,232,216, 95, 91,125,118,156,213, 21,128,131,168,113, 41, 82,134, 72, 70, - 38,140, 36, 73, 37, 29, 48,132, 16,165,172,230, 3,130,184,108, 24,227, 48, 1, -105,148,137, 68,100, 40,144,252, 76, 84, 88,218, 1,222,140,186, 15,206, 2,155, - 40, 27, 31,147, 50, 41,247, 43,248, 78, 5,241,183,244, 47,103, 92,243, 26,168, -189,153,224,151, 52,152, 69,183, 77, 83, 15,206, 42,116,228, 64,140,151,156,112, -147,166, 14,107, 5, 77,156,243,131,197, 81,196,248, 67, 8,236, 6,147, 8, 58, - 24, 28,116, 27,224,184, 15, 70, 95, 4,251,177,142, 40,134,250,179,200,122, 86, -202,109, 74, 56,139, 69, 74,128, 72, 16, 94,248,193, 86,142, 61,247,207, 13, 73, -215, 72,201, 83,172,173,104,162, 80,216, 38, 99,108, 98,228,112, 21, 39,142,159, - 80,232,168,206,149,152, 51, 24,195,138, 86, 49,235,228,102, 68, 4, 35, 72, 26, -136, 45, 82, 35,142, 44, 88, 49, 17, 14, 0,174,163, 33,225,194, 97,122,146,128, - 14, 12, 43, 55, 60,216,166, 93,161, 21, 76,238,220,243, 48,132,181,175,168,248, -233,109,243, 5,184,185,105, 27, 22,106,226,126,153, 66,226,131, 97, 98,162,252, - 67,115,223,148,129, 76,155,198,163,200, 2, 14,240,161, 14,248, 82,146,234, 99, -162,227, 43, 41, 63,184, 82,213, 1, 93,248, 0,164, 80, 57, 40,187,199, 61, 71, -159, 76,161, 15,154,206,127,211,178,186,194,149,193, 67,167, 76, 63,197, 94, 85, - 7,176, 3, +// ../Source/Template/GB_add_bitmap_M_sparse_25.c: +uint8_t GB_JITpackage_112 [1087] = { + 40,181, 47,253, 96, 3, 15,173, 33, 0,134,107,132, 40,224,208,232, 24,248,189, + 18,180,156,212,224,103,121,195, 37,253, 6,201, 64, 85,143,137,126,217,148,179, +245, 8,220,180,252, 77,243, 52, 97,134,148, 24, 19, 2,125, 0,116, 0,122, 0, +146, 4, 66,121, 80, 46,155, 24,190,146,105,221,234,190, 84,203, 60,168,190, 52, +171, 13, 15,137, 11, 7,162,209, 81,166,154, 62, 92,111,238,162, 62,220, 90,248, + 71, 64,145, 80, 30, 8, 19, 9,229, 84, 54,253,233, 58,154,151, 67,224, 53,184, +221,137,170,231,175, 3, 27, 34,135,103,198, 84, 58,116, 87,140,142,100, 45,198, + 22,129,127,153, 98, 13, 46,242,248, 52,183,142,253,197, 10, 94, 10, 26, 0, 11, +246,138, 1, 69, 82,157, 39,214, 82, 35,241, 20,237,250,145,154, 54,101,196, 60, + 18,145, 30,145, 72, 33, 61,247,159,118, 41,254,219,121,110,141,191,101,193, 1, + 71, 85,221, 98, 93,242,107,162,180,157,163,155, 85,170,233,118,117,103,249, 82, +197,169,172,238,185,245, 68, 45,134, 70,185, 76,159,186, 18,155,180, 54,105,230, +182, 20, 97,220,237,150, 90, 59,243,196,199,162,238, 83,116, 49, 51, 14,176,174, +213,253,125,235,115,247, 10,245, 52, 0,147, 1, 69,235,184, 77, 53,255,127, 73, +226,144, 36, 72,252,131,251, 82, 17,181, 88,212,101,215,238,188,174,215,232,122, + 44, 91,231,186,133, 6,182,190, 93, 86,205, 75, 91,213, 46, 38,187, 45,161,156, +224,108, 48,170, 45,237,136,188, 75,237,232, 2,199,151, 94,158,118,102, 90, 98, +211, 57,155, 78, 87,249,151, 1,255, 64,117, 94,224,166, 97,110,250,121, 5,127, +157, 2,189, 58, 57, 64, 44,116, 50, 17, 11,114, 94, 46, 80,110, 58,153,141,106, +119,171, 1,214, 41,252,247,129,211,161,140, 17,243,235,243, 91, 38,252,186, 5, +166,248, 7,155,190, 89,172, 95,255,123, 27, 55,155,238,176,201,120, 50,158, 7, +200,145, 1,146,212,209, 81, 85,147, 24, 39,135,237,148,128,254,106,140,159, 79, +126, 89,153,245,250,234,122,196, 20,175,213, 98,253,215, 99,238,118, 70, 71,231, +118,232, 81,160,238, 84,103, 58,154,121, 15, 92,199, 38, 21,230,188,247, 66, 50, +226,233,144, 35, 61, 11,152,208, 31, 23,167, 71,201, 0,210,149,219, 84,232, 85, +166,248,173,195,167,220,190,118,235,102,177,126,235, 22, 20,150,201,203,170,104, + 94, 13, 45, 82, 6,244,173,166,181,126,113,171, 12, 81, 25,127,157,102,213,234, + 40, 3,128,241,168,241,169, 34, 52, 34, 50, 83, 80, 80,148, 66, 99, 48,132, 24, + 99,204, 56, 15,162,128, 72,139, 66, 24, 73, 96,160, 17, 40, 99, 8, 33, 72, 96, + 2, 73,146,153,168, 37,169, 14, 36, 67, 28,122, 76,179, 10,169, 1, 86, 20, 18, +122,232,219, 22,114,250, 83, 64,231,128, 80,107, 33,218,239,223, 63,228,108,149, +186, 80, 97, 28,218,122, 92,249, 71,136, 64,164,185,188,154, 99, 97,160,120, 55, +194, 66,170,120, 23,184, 70, 76,125,224,216, 84,215, 96, 50,152, 97,132,234, 27, +207,183,210,251,155, 47, 52,177,224,109, 92, 70,178,153,158, 16, 81, 34,254, 96, +175,140, 70,168,136, 34, 64,150,212,151,204,237, 4,159, 68, 19, 60, 11,215,230, +122,134,215,196,137, 20, 3,145, 27, 69,220,223, 17, 94, 37, 63, 77,204, 87, 90, +129, 93,252, 3,241,104, 0, 55,147, 87, 96, 99,185, 16,122,249, 14, 79,202, 74, +213,137, 17, 60, 20,255,245, 90, 84, 6,166,136, 13,234, 64, 59, 51,113,174, 34, + 95,112,238, 40,163,192,145, 24,224,182, 6,213, 44,133, 28, 54,150,114,224, 62, +112, 59,153,109,130,106, 37, 88, 52,236, 18,210, 64,133,196, 25,135,113,164,212, +108,255,197, 44,164,185,160, 46,209,149,148,125,123,214,159, 88,130,122, 66, 20, +129,235, 69,213, 5,130, 64,141,253, 69, 92, 79, 91,249,129,234, 68,185,144, 1, +127, 89, 36,126, 89,128,252, 15, 44,209,137,114, 10,153,171, 52, 16,208, 73,246, +219,181, 76,159, 45, 7,196, 70,234,229, 23, 93, 98, 44, 34, 92,235,117, 57,154, +149,102,226, 6,150, 99, 43, 86,130,145,169,159, 48,107, 46,123,222, 72,224, 62, +115, 67, 94, 13,189,157,201,169,193,241, 97, 44,174,180,178,218, 76,234,217, 26, + 97,207,221,183,141,149,216,199,205, 57,152,109,203, 71, 55,100, 8,131, 12,230, +227,155,176,154,200,186,189,128, 36, 98, 88, 83,204,124,115,231,119,184, 18, 58, + 28,197,239, 50, 44,175,253, 74,252,169,136,121,142, 69,129,102,112,188,244,107, +114,255, 44,248, 73,122, 42, 76,102, 60,203,142,231,239,164, 97, 66, 4, 22, 23, + 25, 50,124,183, 2, 47,184, 1,104,216,178, 4, 62, 94,217, 28,166, 70,125,234, +197, 87,225,164,200, 84, 0,255,134, 7,116,207, 72, 85, 70, 2,230,220,130, 97, +204,247, 84,196, 77, 94,169,196,239,212, 94,104,174, 77, 99,122,168,119,163, 40, +153, 32, 32, 55,205,245, 7, 19, 84,217,227,146, 59,192, 73,245,253, 18,127,156, +157,164,187,170,225,155, 7, } ; -// ../Source/Template/GB_reduce_panel.c: -uint8_t GB_JITpackage_126 [1902] = { - 40,181, 47,253, 96,106, 38, 37, 59, 0, 54,122,171, 40,208,178, 58, 7,208, 43, -129, 98,255, 92,204,225,231,186, 85,189, 48,115,159,144,162, 23, 77,102,237, 58, - 80, 45,141, 77, 45,125,205, 23, 94,112,212, 14,170, 4,157, 0,158, 0,168, 0, - 83, 61,123,222,245,235, 94,253,148, 74,249,115, 13,122,188,210,217, 75,217,155, - 18, 82, 29,225,231, 57,157,219,181,201, 53,119,215,184,174,135,250,190, 67,194, -250,125, 19, 85, 40, 6, 20,115,217,122,213, 25, 40,195, 13,182,100,205,162,184, - 74,206, 32,134,202,176,104, 40, 26,127, 80,174,188,121,109,174, 3,110, 30, 99, -245,233,192,160, 98, 64, 45, 20, 84, 12, 46,101,146, 79, 21,126,172,229,148,234, - 32,174,103, 7,175, 79,156, 10, 19,193,121, 75, 39, 24,184,210,245, 56,220,240, -227, 68,116,227,102,245,251,217, 15,129,180,183,251,254,147, 84, 73, 30, 66,103, -136, 44,215,195, 56,251, 52,166, 88,196,196, 9, 8, 34,138,128, 32, 43, 57, 7, - 83, 93,100, 36, 0,201,175,205,133,195,169, 26, 30, 2, 65, 85,151, 36,127,120, - 72, 6,105, 87,166, 3,175,186,202,153, 85,239,255,143, 34,145, 40,218,160, 38, - 89, 32, 82, 40, 56, 75, 40, 16, 97, 46,153, 74, 35, 55, 14,193,250,142,223,110, -172, 5,112, 20,249, 5,156,181, 47,102, 18, 10, 92, 52, 26, 23,182,241,110,107, -131,196,125, 5, 45,165,123,140,107,154, 51,119,105,220,116,122,222, 87, 65, 94, -214, 45,252,200, 32,101,201, 29,175, 40,179, 66,109,185,171,132,223,185, 55,122, - 29, 55,134,205,158, 42,172,213, 55,139,161,167,155,161,131,228,158, 63,150,147, -188,237, 26,122,166,148,155, 53,148, 60,198,111, 3,113, 15,252, 33,231, 27,134, -240, 65,145, 46,127, 50,230, 50, 7,138,226, 56, 57,144, 95,174,202,162,177,192, - 44,157,207,196,155,120,222,227,194,166,117, 33, 38, 14, 13,222,236,199,216,242, -155,217, 71, 62,159,206,231,147,137, 67,195,255,145, 72,146, 91, 88,195, 59, 28, - 93, 41,220,184,134, 32,125,109,103,188, 84,160, 45, 83,174,165,164, 98, 1,174, -113,183, 79,159,166,234,186, 76,116, 10, 40, 14, 9, 20,161,198, 93, 55,129,104, - 75,254,108, 95,131, 83,206,238, 22,171, 34, 83, 65,129,105,100,170,199,149,176, -163,220, 33, 78,166, 66, 2,195, 84, 25,139, 98,115,185,176,203,166,194, 72, 92, - 44,149, 63, 60, 72, 77, 69,113, 89, 17, 24,199,146, 42,135,144,111, 12, 65,161, - 37, 12,201, 81, 52,130,225,125,239,190,186,205,215,142, 95,101,250,209,190, 92, -214, 6, 35, 70,238,238,254,255,201,169, 42, 39,108,128, 7, 75,117,217, 96, 18, - 22, 69,197,213,105, 25,157,114, 47,153, 61, 7, 45,119,254,226,126,220,131,159, -218,157,158,166,107,243,169,195,113, 12, 77,178,199,208,244,162, 19,132, 53,121, - 7, 41,131,189, 93, 37, 28,185,172, 94,194,186, 79,122,221,252,118, 29, 75, 61, - 13, 54, 93,239, 18,158, 51, 24,235, 37,200,124,109,248,122, 46, 91,142,115,122, -166,230, 10,185,238,216,184, 97, 28,191,103,186, 92,125,253,212,237, 41, 20, 42, -232, 84,164,145,207, 50,245,100, 42,172,203,178, 84,133, 4,131,131,104,129,252, -168, 33, 34,162, 25, 17,145,146,164, 32,201,176, 6, 49, 8, 1, 67, 97, 16, 66, -234,206, 7,194,136, 44, 13,225, 12,132, 49,134, 24, 73, 4,132, 8, 20, 33, 2, - 37,144, 24, 19, 74, 32, 52, 82,118,152, 24,246,107,223, 82, 10,247,126, 35, 47, -131,254, 55,247,126,103, 13,123, 65,131, 32,115,112,223,240,194,205,209, 38,220, -171,159, 54,146,198,253, 68,245,224,253,179, 95,248,115, 35,151,128, 80,170,117, -197, 4, 74, 57, 46,175, 62, 68,197,171,158,247,229,175, 37, 0, 2,131, 91,188, -195, 79,136,110,123,219, 3,128,217,170, 5, 6, 17, 30,184,171, 92, 12,225, 70, -197, 43, 29,179,246, 74,210, 20,174,123,146, 41, 18, 7,113,164, 97, 56,208,164, -108,117, 73, 13, 51,145, 12,101,126, 62,153, 65, 15, 50,153, 57,126,190,246,163, -193,123,241,203, 22, 62, 65,130, 23,120,122, 30, 11, 92,166,147, 52, 86,104, 1, -117, 2,155, 85,214, 49,105, 44, 36, 20,138, 82,160,196, 40,223, 15,161,236, 45, - 70, 12,157,120, 95, 54,217,229, 59,116,196,136,166,198, 21,160,167,145,143,218, - 68, 73, 4,209,132,188,234,150,224, 29, 86,249, 57,100, 98,229, 44,250,136,250, - 9, 0,231,221,122,184,106, 52, 11, 62,201,138,118, 80, 52,156, 93, 57,182,183, -218,146, 3, 91,209, 68,224, 24,184,204,122,112, 3,216, 75,211,153, 29, 68, 13, -199, 23,190, 74,222,203, 77,141, 32,237,203, 15,131,100,127,145,136, 0,157,114, -242,222,134, 89,248,176, 5,166,109,233, 86,232,160,180, 68,128, 44,148,227, 42, -130,150,200, 5,229, 53,137, 4,210,179,177, 49,117, 26, 49, 33, 2, 66,173, 96, -225, 35, 28,231, 81, 75,243, 41, 3,248,243,160,158, 94,198,137,155,125,162, 34, -170, 48,216,198, 94, 7,125, 93, 34, 33,124,119,192,157,243,159, 58,229, 2, 94, - 92,164,255,214,224, 46,227,231,254,124, 2, 44,204,136,255,166,146, 71,138, 48, - 93,240,123, 54, 70,152,157, 76, 56, 80,197,191,114,236, 21, 16,214,231, 45,247, -249,187,211,228, 81, 77, 80,217, 25, 45,195, 71, 53,111,208, 60,246,198, 93,232, -251, 34,162, 92,235,129,239,144, 72, 18, 34,158,148, 44, 91,180, 52,165, 88,247, -234,127, 7,241,212,238,180,145,225,155,253, 48,231,157,194,214,178, 56,194,157, -197,119, 0, 81, 16, 65, 15,241,101,148,182, 22,192, 61, 33,202, 4,191, 33, 28, -172,133,146, 96, 27,142, 75,202,219,111, 45,184,178,102,104, 42, 41,194,216, 66, -153, 8,118,243,180,177,158,186, 82,152, 21, 10,207, 60, 31, 76,114,108,198, 17, - 98, 74,192,163, 84, 43,140, 26, 90,150,190,128, 62, 59,181,237,240,152, 49,162, - 37,194,105, 25, 84, 71, 54, 97, 72, 62, 13,210,235, 96, 62,153,130,138, 34,190, -179,246,112,219, 71,183, 73, 5, 6, 31,167,122, 9, 75, 29,225,112, 92, 49,181, - 6, 95,140,194,124,180, 16, 55,202,143,232, 60,243, 75,239,252, 98, 10,180, 86, - 48,178,134,189, 87,103,213, 29,133, 97, 29,149, 3, 47, 1,218,238,121,152,147, -218,235, 78,163, 63,127,251, 82, 2,117, 54,233, 8, 16, 46,191, 20,196,161,132, -230, 47, 5, 9, 25, 86,136,227,186,229, 66,241,123,111,215,134, 55,118,176, 1, -189,248,228,239,177, 88, 32,216,165,118,184,105, 21,132,187, 0, 10, 13,231,124, -147, 62,182,128,183,241, 2, 66,144,150,219,183,148, 82,235,195,118,123,204,170, -206,214,245, 4, 82,165,168,202,213,241,145,132,152, 45, 8,226,223,163,126, 14, - 49,254,191,194, 72,158,182,243, 64,140,199,144,154, 7, 29,158,131,112,118, 67, - 19, 46,204,227, 28,122, 43, 61, 15,194, 23,153, 14,234, 95,164, 16,216, 85,152, -153,249, 91, 17,182, 15, 13,210,141,127, 67,237,111, 36,202,221, 73,236, 51,153, -237,252, 63, 97, 21, 9, 63,196,253, 66, 84, 39,141, 58, 95,229,181,145,232, 44, -106,135, 54,140, 68,211,237,242,161, 37,120,203,120,216, 66,108, 48,140, 98, 7, -173,153,122, 89, 41, 88,162,189, 69,104, 74,254,147,115,100,223, 82,243,254,244, - 17,136,182,119,229, 88,136,118,209, 86,146,174, 0,132,138,105,109,190, 98, 73, - 56,175,151, 4, 26,186,106,204,190, 50,255, 40,148, 76,108, 72,248,200, 17,178, -130,247, 11,139, 32,137,133,172,183, 69,179,174, 4, 39, 5,126,222,189,144,102, - 64,155,163,172,209,154, 50,210, 67,186,183, 20,231,119,215,214,176, 23,136,206, - 19,109,128,162, 11, 75,184,101, 53,116,248,221,177, 61, 40, 66, 93,232,187,245, -224,228,154, 75,136,125, 69,194,166,208,244,252,116,160,243, 19,248,197, 19, 18, -127, 98,137,245, 52, 96,242,122,203,217, 58,167,202,164,177,198, 23,242, 72, 62, -208, 83,106,238,107,176,200,141,226,136, 99,195,100,119, 27,183,201,213, 46,217, - 85, 75, 45, 51,102, 1,253,190, 6, 20,135,123,238,153,188,213,189,118,253,100, -180,212,100, 37, 16, 63,228,103, 33,131,106, 8,243, 74,190,158,218,158,128, 23, -172,211,147, 17,231,253,115, 31,161,148, 81,222, 57, 13, 41, 89,105,153, 29, 58, - 32,232, 44,249,105,184,147,104,132, 2, 96,128,239,249, 65,117, 61,207,181, 54, -253, 20,152,159, 21, 69,144,167,176,176, 19, 95, 4,119,159, 35,222,125,200,252, - 0,173,166, 58,153,102,226, 98, 5, 61,180, 77, 29, 41,140, 49,154, 80, 20,129, -115,192,169,217,149,158, 51,206,254, 1,225, 16,231, 70, 82, 9,254,237,164,239, -243,180, 55, 77,135,202, 76, 92,137, 97,194, 35, 94,168, 3,208, 17,139, 20, 13, -228, 1, +// ../Source/Template/GB_add_bitmap_M_sparse_26.c: +uint8_t GB_JITpackage_113 [1091] = { + 40,181, 47,253, 96, 1, 15,205, 33, 0,214,107,132, 40,208,208,234, 24,248,109, +212, 86, 66, 6,180,235,114, 46,248, 40,197,153, 82,130,133, 88, 83,191, 26, 67, +167,152,217, 89,234,175,104,145,171, 25,240,131, 89, 2,127, 0,118, 0,120, 0, +199,162,200, 99,226,168, 28,157, 57,158,242, 85,187,217,141,171,134,113, 84,141, + 43,181, 12,142, 8,203,230,161,213,208, 87,117,117,184,222,156,133,117,248,189, +241,144, 96, 18,153, 56, 14, 36,145,201, 39, 42, 29,106, 27,154,150, 63,226, 49, +184,237,125,108,231,144, 19, 25, 46, 46,207,239, 66,225,212,109, 65,156,232, 94, +208, 6,185, 14,191,154, 49, 56,200, 35,204,188, 58,118,120, 81,209, 74,200, 0, + 84,176, 83, 12, 38,178,234,111,102, 45, 51, 50,207,207,182,153,212,180, 41,175, +203, 33,144,200, 1,129, 4,210, 27, 52,152, 14,166,227, 16, 55,178,211,115, 31, +106,184,230,195,253,205,173,243,183, 44, 48,208,160,168, 87,170, 71,110, 73,147, +190, 51,132, 41,133,146,176,103, 55,253, 30, 81,124,162,118,207,173,165,122, 65, + 90,229,168,254,132, 37, 38,105,109,214,143,219,242, 3,194,219,111,189,119,126, + 51, 63,127,188,207,143,197,252,114, 64,117,205,238,111,108,255,121,215, 60,110, +215,204,255, 63,138, 52,162,232, 17, 15,175,141,235,167,222,252,241,232, 53, 60, +175,237, 51,218, 6, 87, 71,185,245,103,183,110, 96,107,236, 81, 42,123,180, 89, + 13, 99,210,219,242,146, 18, 27, 13,246,171,234, 91, 55, 32,207,135,184,222,208, + 5,158, 15,191,121, 39,213, 18,147,190,209,120,218,202,124,120,113, 29,122,108, +102,137, 26,134,235,212, 39,151,239,188,245,201, 3,173,212,240,160,192,193, 64, + 40,200,204, 98,137, 82,195,193,108, 85,195,155, 13,168, 62,229,195,236,146,126, +201,235,186,220,122,246, 45, 17,110,189, 34, 79, 60,195,164,111,149,231, 87,183, +126, 8, 51, 48, 13, 81,180, 65, 81,146, 24,119,157,187,102, 49,226, 57,180,143, +113, 82, 81,114,171,162,213,237,169,152, 39,110,227,173,219, 74,245, 91,143,159, +183,105, 13,157,219, 29,156, 60, 53, 52,191, 93,125,192, 58, 38,161,242, 6, 66, +216,201, 40, 99,222,200,142,194,165, 59,228,162,244, 40, 23, 60,218,114,123,234, + 32, 69,138,223,188,252,202,237,107,216,110,149,119,221,171, 87, 76, 84, 36,144, +218,207,196, 24, 90,156, 12,104, 44,227,169,121, 45,176,149, 93,149,241,214, 43, +181, 1,128,243,168,225,169, 50, 52, 34, 34,163,160, 32, 37, 41, 52, 6, 48,132, + 16,195,152,209, 60,146,112,104,146,164, 24, 22, 33, 8, 9, 36, 49, 2, 66,148, +224, 4, 51,129,132, 21,197,168, 58, 19, 67, 28,228,230,224,242, 20, 18, 2,206, + 19,242,224, 10,205, 66, 44,254,216,130,229,128, 48,195, 66,202,167, 1, 14, 17, + 9,157, 38,165, 20,143, 13,227,114,212,164, 65, 68,195, 69,171,143,194,224,227, +109,204,194,174,241,170,224,235, 17, 37,238,221,124, 37, 86, 92,216,183,246, 24, + 55,119,207, 10, 19, 4,151, 97,224,228, 12,141,192,203,250,178,253,155, 45, 80, + 68,143, 36, 31,190, 52, 27, 33, 7,204,138, 12,127,141,197,222, 78,255, 36, 97, + 89, 59,241, 12,162,137, 19, 74, 6,180,108, 54,112,255,179,188,136,119, 58, 6, +144, 43,170, 11,244,196,169,163, 16, 3, 13,165,247,122,227, 38, 72,255,190, 58, + 77, 46, 93,245,128, 26, 30, 53,191,164,166, 63,219,175,136,135,117,168,159,221, +151,243,243, 53,228,148,105, 58,170,221, 48, 1,108,254, 30,161,165,202, 89,112, +191, 1, 33, 65, 61,223,140, 10,213,129, 88, 66, 96,209,114, 23,189, 68,129, 96, +137,112, 38,193, 83,178, 16,196, 13,165, 32,168, 87,239,168,178,242,136, 65, 40, + 37,140, 90,112, 43,169,183,131,158, 80,109, 95,152,240, 19,237,136,185, 60, 81, + 32,228,207, 88, 22,206,183, 22, 88,238, 47, 23,111,138, 98,125, 48,254, 28, 40, +159,240, 91, 23,159,206,187,117,128, 74, 52,164, 44, 81, 8,198,224,134, 61,128, +190,237, 51,131, 76,114, 96, 57, 27,227,228,209,214, 67,253, 17, 73, 44, 19,184, +215, 72,204, 16,164, 28,247,193, 32, 71, 18, 53, 39,174, 99,153,184,127,221,143, +214, 34,206,155,120,123, 46, 86, 75,179,150, 63,193,128,110,202, 48, 10, 25,192, + 71,157,136,153,126,222, 65,128,154,152,108,138,171,213,220,250, 59,113,209, 92, + 89, 97,225, 12,237,181,100,213,231,116,214,164, 56,112,139,143,134,214, 77,253, +239,157,158,110,167,184,100,182,140,178,149,233,152, 2, 5, 33, 0,235,148,240, + 25,126, 55, 89, 94,210, 0, 21,236,177, 36, 71, 94, 97,172,106, 65,241,212,244, + 73,129,153,134,164,146,249, 76, 67,236,148, 85, 19, 41,193,168, 76,138,195,224, + 54,148, 46,142,179, 5, 59,106,193, 37,239, 56, 28,151, 26,152,238,108, 90,237, + 3, 5,109,140,130, 41, 78,114,211, 92,127, 48,133,202, 6, 47,189, 6, 78,242, +239, 63,228,143,176,147, 52, 84, 74,187,121, } ; -// ../Source/Template/GB_reduce_to_scalar_template.c: -uint8_t GB_JITpackage_127 [1289] = { - 40,181, 47,253, 96,186, 16,253, 39, 0, 86, 53,161, 40,192, 22,117, 14, 80, 61, -209, 98,243,219,127, 12, 93,218,216, 39,157, 48,152, 95, 92,129, 70,210,195, 9, - 49, 3,184,124, 96, 14, 33,219,166, 40, 16, 92, 55, 3,148, 0,150, 0,153, 0, - 21,115,109,237,104,217,171,215,164,101,202, 36,223,104, 60, 9,149,125,163,198, -158,167,207,181, 52,249,116, 65, 8, 6, 10, 21,230,180,232,193, 67, 88,150, 28, -217,148, 55,171,194,151,178, 38, 47, 21, 15,138,195, 96,227, 18,203,151,175,223, -230, 72,228,245, 57,225,167, 5, 5, 4,133,138, 67, 2,130,194, 37, 45,250,116, -101, 73,164,110, 0,239,225,186,118, 18,251,164,129, 23, 10,206,139,246, 2,130, -175,141,158,134, 91,126, 26,232,241,181,127, 34,109,199,238,241,159, 36, 24, 89, - 62,135,224,142,211,235,184, 51, 27,103,212,110, 86, 59, 99,237,219,216,102, 20, - 23, 63, 56,128, 42, 7, 7, 1, 82,116, 34,101,103, 12, 13, 17, 31,153,168,192, - 91, 62, 2,223,154,180,125,217, 18,252,239,236,161,169,124, 95, 90, 53,248,254, -127, 8, 66,145, 62, 83,103,218, 68, 31, 28,153,138,207, 45, 23,233,112,228, 70, - 89, 0,146, 94, 97,144,226,232,144,228,180,153, 62, 17, 83, 41, 0, 93,240, 2, - 43, 52, 89, 6,203, 62,224,117,193,140,162, 32,135, 55,202,169,244,147,136, 12, -249,230,150,130,127, 2, 56,250, 5,156,183,111,106, 84, 10, 64,144, 65,197,241, -129,101, 32,211, 38, 43,173, 29,167,126,206, 93,188,253, 27,185, 95, 79, 52,153, -241,155,232,221,142,173, 38,103, 14,251,239,247, 43, 63,153, 70,239, 1, 24,152, - 65,172,186,144, 34,239,211, 8,197, 5, 64,196,249,163,178, 37, 73,196, 11,185, -180, 6, 6,188,216,181, 28,169,212,214, 63,254,202,123,108, 83,150,247,100,231, - 40, 82, 65,129, 68,196, 17,110,185, 23,221, 86,206,121,146, 80,121, 47, 37,220, - 98,249,221, 34, 91,174,105,116,142,132, 51, 82,217, 89,238,143, 6,115,129, 24, -107,227,170,176,172,170,168, 40,169, 94, 0, 58,107, 29,225, 59, 89, 83, 89, 20, - 27, 25,144, 76, 3, 49, 46,203,145,174,126,178, 27,185, 12, 94, 42,204, 85,105, -100,152,149,129,240,137, 99, 87,165,209, 64, 9, 70,223, 38,115,217,135,210, 63, -226,210,135,198,232,212,165,194,192,156, 4, 16,148,242,251,113,230,119,217,122, -223,187, 47,101, 19,189, 55,150,139,108,178, 67,110,145,210,137,108, 43,204,186, - 54,181,111,235,156,220, 84,183,237,142,202, 42,172,141, 12,182,209,111,234, 62, - 48, 21,101,121, 90, 94,154,166, 41, 58, 38, 99, 97, 22,118, 65, 14,202,222,167, -182,177,239,237,220,216,244, 18, 82,194,164,201, 46, 82,207, 22,241,228,180,123, - 41,235, 62,234,117,245,177, 35,137,214,219,100,255,206,200,185,229,217,228, 57, -163,141, 30,107,114,222, 83,147,250,219,242,151,211, 34, 67, 80,138, 6,172, 46, - 10, 11,171,229, 9,223, 51,109,228,142, 70, 89, 25, 76,102,131, 10,129, 16,168, -209, 41, 66, 52, 50, 34,146, 36, 5, 41, 53, 6, 49, 8,194, 80, 36,234, 36,215, - 3, 50,145, 52,206, 66, 32,130, 16, 54,130, 33,193,132, 40,144,145, 32, 74,202, - 41,214, 3,185,215,129,143, 15, 87,114, 87, 96, 31,148,164,181,234,131,181,214, -249,124,178,117,143,102,107,122, 85, 87,123,220,110,138,169,162, 83,139,106, 52, - 90, 97,211,162,178,254,224,210, 75, 51, 99, 85, 28, 20,157, 43, 90, 65,202,159, -129,148, 46,167,234,164, 60,196,202, 69, 84,107, 14,104,196, 24,178,106, 40,157, - 12,118, 20,245, 38,142,162,175,114, 87, 95,128,242,251, 11,188, 55, 7, 64, 26, -194,248, 67,113,104,119,105, 5, 17,255,153,238, 19, 65,211, 92,144,102,230,131, -168,235, 43, 17,149,147, 34,244, 71,189,156,202,139,202,233,161,127,197,197, 48, - 37,165,187,183, 21, 36, 71, 22,114, 67, 36,169, 33,194, 12,137,196,240, 71, 58, -135,217, 30,181,245,101, 68,157,162, 13,249, 42,255,124,248,171,210,162, 82, 59, - 11,143,197,187,248, 24,166, 97, 49, 87, 41,198, 89,198, 99, 49,244,188,131,138, -119,110,219,149,236, 95,168, 10, 70,232,174, 96,244, 88,144,131,147,138,169, 53, - 21, 6,209,135, 51, 75,193,253,238,183, 62,233, 41, 32, 24,123, 9, 61,136,136, - 30, 82, 13, 42, 59,242,135,100, 62,201, 20,215, 61,233, 18,241,207,146,183,156, -197, 5,192,239,121,151, 51, 28,239, 24,145,129, 17,127,105,229, 56,166,104,122, - 84, 56, 0,168,220, 14,116, 57, 85,212, 17, 8,146, 26,144,125,117,121, 58,184, -201,201,231, 45, 45,120, 20,120, 31,162,166,179,233,102,209,122, 65,162,113,208, - 86, 21,199,166,253,111,134,241,118,139,127, 81,197, 93,229, 81, 78,151,121,234, - 20, 70,238,140,200, 56,123,139,114,167, 93, 21, 51,254, 38, 88, 88,117, 67, 28, - 6,226,225,209,125,230, 92, 73,201,182, 94, 76,169, 57,127,244,203,221, 89, 94, - 39, 48,230, 27,150,203, 74,226,219,173,216,205,165, 96,229,173, 1, 29,243, 40, -229,200,137, 34,181, 67,216,206,216, 24, 80,126, 9,111,166,249, 19, 78, 26,144, -157, 79, 44,230,174,201, 31, 65, 26, 33, 15, 17, 57,159,219,186,180,223, 32,223, -248,113,189,132,184, 99, 15,193,140,217,222,249, 6, 83,165,199,131,144, 48,191, -246,226,172, 74,185,244,184,171, 93,129,227,221,164,211, 34, 7,163,113, 38,182, -192, 34,186,192, 5,157, 78,146,217,174,122,231, 67,120,156,153,242,200,180,176, -176,205,142, 8, 1,141, 82,192,249, 10, 17, 5,194, 6, 36,127, 15, 24, 24,128, -153,250,112,173, 38, 80,183,160, 59,223, 83, 69,105, 63, 92, 93, 54, 77,196,109, -153,205, 60,137, 65,116,207,251, 72, 12,173, 35, 76, 65, 20,233,126, 42, 5,168, - 86,155, 80, 4, 33, 31,177,193, 77, 51,255,153,201,252,185,150,123, 58,198, 62, -246,166,116, 2, 23,190,238, 86, 39, +// ../Source/Template/GB_add_bitmap_noM.c: +uint8_t GB_JITpackage_114 [467] = { + 40,181, 47,253, 96, 49, 6, 77, 14, 0,166, 19, 64, 33, 0,211,230, 87, 31,107, + 24,153,192, 65,209, 9,245,246, 51,119, 85,154,112,205, 72,127, 59,133,131,133, +157,244,255,219,127, 40, 1, 55, 0, 55, 0, 51, 0,139, 87,243, 28,111,204, 96, + 48,229,211, 54, 33,212, 11,173,216, 64,116, 22,109,184,245,136, 53,155,164, 23, + 51,159,159,142,125,162,131,169,192,142,136,100,192, 26, 90,204,136, 45,245, 94, + 91,105,227,150, 37, 41,203, 10,248,152, 36, 84, 23,213, 30,103,195,121,132,216, +184,195, 35,216, 55,163, 58,131,205, 97, 8, 85, 89, 76,170,219, 27,177,115,107, +207,163,119,193,218,191,111,126, 50, 92,132,139, 58, 20, 8,215, 37, 46,250,148, +241,198, 6,125, 59, 44,160,128,196, 37,122,143,167,102, 92,103,116,138,198,216, +182,153,171,211, 15, 62,175, 56,118,203,250,127, 41, 59, 82, 86,223,167,233,222, +162, 5, 63, 47,182, 55,226,150,252,149,100,137,158, 3, 82,126,126, 8,234,176, +236,240, 5, 13,157, 47,177, 67,142,103, 77, 95,127, 2, 92, 85,184,106,224,125, + 53, 31, 7, 94,208,126, 74, 20,130, 62,153, 17, 74, 70,235,150,213, 25,189, 3, + 97, 72, 52,198,163, 82, 50, 71, 23, 85,160,193,177, 52, 51, 19, 22,148, 36,149, +114, 53, 64,134,136,177,185, 30,201, 36,139,102, 29,149, 94,217, 63,102,178,136, +171, 57,163,104, 81,142, 75, 0, 21, 22,142, 46,145,228, 24,150, 16,122, 12,156, + 65,131, 40, 58,104,134, 54,135, 0, 26,191,212,146, 65, 68,153,104,147,182, 89, +176,139, 58,232,204,219,112,215,168,130,103,151,217,105, 24,212,243, 32,105,168, +196,112, 61, 50, 92, 62,201,124,185,180,141,101, 2,144, 89,121,212, 64,142,160, +167, 10,220, 23,230,118,198, 71, 24, 46, 2,104, 56, 90,220, 59, 75,158,244, 67, + 56, 86,208,202,232, 53,171,129,159, 97,147,117,154,218, 21, 1,135,123,176,142, + 0, 60,143,221, 94, 14, 53,142,179, 6, 0, 89,163,210, 66,178, 5, 54, 2,216, + 29,232,163,129,219, 92,202,246,166,169,243, 51,147,187,130,149,158, 40, 74,162, +147,192,198,148,162, 64, 15, } ; -// ../Source/Template/GB_rowscale_template.c: -uint8_t GB_JITpackage_128 [887] = { - 40,181, 47,253, 96,233, 8,109, 27, 0,230, 43,132, 40,192,208,108, 14,248,118, -213,110, 18,204, 73,136,175,208,121, 36,118,103,197, 29, 83, 31, 91, 39, 14,132, - 31,165, 75,149,212, 27,224,224,186,138, 66,117, 21,128,122, 0,115, 0,121, 0, -161, 55,199,234, 9,183, 41, 72,115,237, 47,155, 26,215,246,104,101,146,184, 48, -143,175, 59,183,113,107,199, 57,212, 80,237,162, 88, 93, 42,144, 68, 36, 19, 2, - 65, 68,114,135, 23, 93,194,180, 51,175, 63,170, 99,132,217,110, 40,119,105,171, - 42, 50, 28,231,165, 36, 52,190,115,220, 58, 83,206, 6,125,232,205,115,115,113, - 86,171,153,244,123,223,201,185,192,159,199,244,215,251,118,232,185, 20,184, 40, -235, 9,157,167, 56,110, 58,119, 45, 78, 15,123,236,237, 36,229, 16, 8, 52, 65, - 32, 1, 87,116,128,201, 29, 14, 43,122,195,165,187,176,138,180, 60, 48,116,146, - 18,157,211,176,109,171,112,230,140,149,222,194,251,255, 67,144,198,237, 78, 87, -139, 63,233, 51, 39,115,233,250, 31, 95,139,153, 13,167,226,157,121,157,222,173, -127,117, 94, 62,170,122, 59,231, 57,190,195,124,208, 30, 99,180,222,228,177,225, -188,213,121,246,245,110,255,245,215,157,103,152, 47,138,243,237, 85,138, 47, 89, - 76,173,131,217,191,198,156,103, 91,143,105,200, 65,145,135,100,234,119,142, 31, - 55,246,115,163,153,119,252,104,150, 28, 50, 75,134,191,217, 55,204,245,212,177, - 5,158,185,190,182,216,201,168,149,250, 63,185, 35,163,102,162,111,149, 10,194, -129,230,206,224, 32, 87, 10,210,175, 74, 57,161, 68,107, 51,141,197,150,242,178, -101, 22,211,238,122, 87, 90,193, 28, 52,172,161,227,178,131,253,129, 52,192,178, - 44, 75, 74, 41, 39,255, 44, 76,215, 29,209,169,127,174,103,143,222,140,251, 10, - 28,195, 76,112, 93,245,140,171,245,228,245,220, 26,139,233,194,100,201, 16,180, - 1,109, 8, 80,143, 88,209, 49, 23,108,203, 34, 48,249,145,151, 42,104,134, 74, -244,210,231,186,196, 97, 20, 74,191,232, 21,166, 85, 21, 11,187, 42, 36, 26,201, -131,246,159,254, 42,189,199, 94,105,188, 68,101,116,217,101,244,227, 21, 62,126, -114,234, 24, 69,166, 93, 56, 11,131,232, 46, 75,182,117,149,133, 82,105,151, 46, - 25,151,113, 90,133,169, 61, 94,202,119,212, 24, 24, 80,152, 60,114, 42,114,120, - 52,207,140,163, 22, 57, 95,135, 30,190, 35,234, 54,156,250,107,193,139, 45,138, - 51,128,156,168, 97, 57, 82,102,102, 70, 68, 65, 65, 97,146,180, 6, 80,132, 8, -153, 89, 55,242,200, 72,203,164, 14, 25, 51, 19, 92, 32, 73, 38, 40, 41,255,242, -145, 90,166, 71,117,100, 42,184, 15,169,118, 32,114,100,161,213,240, 70,177,198, - 82,234,180, 24,128, 73, 25, 37,126, 76, 15,126, 24, 1,174, 79,247,204,235,178, -140,252,105, 29,187,240,182,125,231,193, 93, 3, 60, 26, 24,117, 39,178, 73, 34, - 42, 25, 71,102, 92,237, 35, 30,211,150,185, 13, 51, 75, 33, 1,107,194, 10, 32, -208,133, 25,136,133,155, 36, 46, 28,123,189,138, 21, 13, 55,185,233, 79,146,138, -206,210, 63,211,200,112, 43,101,139, 4, 58, 47, 21, 8,177,192,164, 94,135,237, -181,253, 16,209,207,233,160, 64,201, 48,211, 64,233,112, 28,168,247, 49,232, 83, - 26, 61,114,180, 17,200,172,146,146,148, 85, 3,121,131,186,158, 53, 68,123,203, - 57, 32,214, 8,155,253,145,131,235,170, 50,101,117, 97, 28, 70, 25, 26,240,222, -213,163, 35, 74,215, 79, 25,185,115, 40,189,105,119, 28,195,155,236,138,128, 57, -141,154, 8,175,240,138,161,226, 0, 64,176,232,120, 33,224,128,208,166,216,220, - 41,193, 99, 68, 50,110,106,183,199,102,108,162,129, 77,210, 33, 16, 49,174, 98, -230, 65,184, 43,136,236, 81, 44, 74,111, 10, 89,228,141, 67, 8,192, 2,202, 1, -162,135,234,141, 40,109,215,224,132,134, 18,128,179, 9,152, 55, 31,100,111,211, - 48,129,213,215,128, 18,194,116,136, 91,231,249,166,201,170,204,180, 97,100, 1, -132, 95,232, 74,119, 69, 12, +// ../Source/Template/GB_add_bitmap_noM_21.c: +uint8_t GB_JITpackage_115 [687] = { + 40,181, 47,253, 96, 19, 9, 45, 21, 0, 70, 93, 92, 32,224,220, 28, 3, 28,146, +176,166,194,249, 74, 52,132, 37, 37, 14,140,171, 9,170,161,233,113,207,204,142, + 97,140,193, 19, 3, 14, 83, 0, 81, 0, 82, 0,182,115,189, 85,169,219,121, 24, +206,203,133, 2,161, 40, 56, 18, 8,197, 7, 31,119,169,239,171, 82,110,152,143, +169,182,216,186,159, 75,207,196,116,170, 92, 71, 11,196,234,177,102,143,221,215, +229,217,186,131,184,126, 94,222,187,236, 8,115,226, 29,146, 80,208,140,136,105, +174,173,125, 79, 20, 4, 43,237, 44, 63, 28,182,194,225, 16,152,122,156, 6,171, + 29, 85,155,182, 92,248,163,136,122,104,199,154,159, 91,226,107, 43, 85,199, 12, +136, 28,188,251, 27,223, 48,172,114, 94,130,162,106,219,204,255,127,219,102,155, + 29,171,190,247, 54,132, 65, 81,176,170,175,230,121,200,104, 47,234,110,108,193, + 75,193,106,108,191,139, 41,136, 40, 28, 3,104, 95,163,213, 1,153,244,211,252, +228,223, 55,125, 80, 40,147,110, 60, 23,148, 5, 81, 87, 18,249,228,151, 82,134, + 63,238,154,205,229,115,249,116, 38,135,178,116,221,151, 32,182,249,114,143,117, +235,252, 77, 25,141, 25,129,112, 73,228,136, 79,184,129, 14,235, 11,127, 16, 2, +135,197,187,191,241, 91,233,131,239,238,186, 53,103, 67, 23,168, 63, 8,219, 86, + 35,124,222,156,117,219,211,156,168, 11, 98,143,138,155,118,116,196,217,120,239, +198, 26,214, 79,211,170,202, 97,213,128, 46,160,150, 56, 96, 27,190, 30,120,246, +184,115, 54, 21,207, 37, 84,233,186,147,168, 47,205,151,176,121,185,186,149, 82, +230, 6,211,157, 48, 88,201,203,125,187, 64,192, 29,101,117,104, 35,221,105,180, +155, 2,128,132,160,241,169, 66, 52,193, 72, 82,148, 20, 50,172, 1, 64,132, 24, + 83,118,245,201,130,102,128,244, 57, 44, 98,153,139,238,106, 51, 7, 47,235, 4, +143,192, 11,119,168, 68,197, 61, 12,242,153, 20, 15,108,202, 0, 23, 77, 65, 79, +134,154, 86,194,146,154,208,242, 45,115, 42,146, 96, 18, 17, 11, 41,100,187,186, +184,254, 94, 30,229, 67, 12,183, 64,230,131, 90,182, 18,224, 32, 28, 77,139,172, +238, 48, 4,198,170,216, 87,209, 11,168, 50,192,135, 3,156,155,117,210, 34,166, + 2,171,131, 34,199,221, 60,218, 54,148,245, 99, 42, 11,216,172, 16,239,163,161, + 8,117, 40, 89,166, 0,102,107, 19,189,160,107, 64,111, 4, 99, 57, 19, 92,138, + 11, 53, 87, 68,109,128,164, 5,216,161, 40, 73, 62,156, 60, 38,200, 58,100, 56, + 5,251, 87,186,136, 4, 87,188,169,210, 66,147, 27,104, 43,213, 90, 89, 58,241, +183,214,135, 8, 6, 1,196,145,161, 47, 76, 45, 62,243, 60,183, 78, 17,148,153, +100, 44, 9, 78,203, 41, 3, 38,124,204,210, 44,107, 6, 9, 99, 24,112,189, 13, +160,182,189, 69, 18,241, 62,130,113, 0, 11,152,121,206, 7, 15,207,140, 82, 48, + 69, 56,106, 63,160, 40, 11,187, 28, 72,132,204, 22,169, 51, 43, 9,133,142, 66, + 15,122,109, 48,152, 75, 89,185,105,122, 84,102,186, 59,180,194, 27,140,152, 9, + 39,109,131, 41, 69,221, 19, } ; -// ../Source/Template/GB_saxpy3task_struct.h: -uint8_t GB_JITpackage_129 [492] = { - 40,181, 47,253, 96,235, 3, 21, 15, 0,118, 24, 77, 33, 16,149, 30,166, 38, 44, -202, 36, 34,136, 71,194,103, 26,135, 18, 89,232,206,161,223,106,142,254, 98,201, - 48, 34, 0,128,170,154, 1, 68, 0, 70, 0, 65, 0,161,248,104, 43,235,143,102, -251,249, 75, 83, 90, 70,105, 80, 47, 94,136,194,241,141,158,230,249, 65, 26,148, -150,102,255,116, 55, 4, 25,195,209,215,206,198,213,126,254,250,211,101, 43,168, -149, 57,208,205,120,243,224,152, 11,159, 39,138,120,107, 64,250,186, 96,117, 93, - 1, 23, 7,198,114,209,182,137,150, 93, 10,154, 74, 38,211,166,203, 58,127,130, - 3, 11,171,156,114,209,203, 90,113,253,231,231,234, 82, 82, 57,174,206, 61,165, -202, 60, 42,150,244,208,117,236,150,198,153,114,222,210, 93,151, 53, 85,192, 6, - 88,133, 32, 12,176, 14,112,128,166,240, 7,247,198,143, 8,188,219,196,220, 20, - 71,218,211,250,232, 49,237, 16,170,133,172,238, 53,213,150,187, 54,115, 30,106, - 78,253,235,234, 69,231, 27, 51,238,188, 25, 14,185,126,119, 55, 36, 65,247,190, - 12,161,229,253,229,176,203,142,212, 18,101,238, 19,140,108, 1, 16,206,151,213, - 39, 8, 23, 13, 75,211,246,180,125,162,103,167,249,186,140,222, 53,126,154,251, -219,180,172, 32, 59, 59,208,161, 20, 0, 71,215,111,236,127,115,245,158, 22, 61, -170, 29,110,251, 62, 34,209,181,137, 57,229,219, 80,224,235,170,109, 12,232, 47, - 6, 74,160,177,165, 83, 67, 65,105, 74,202, 72,181,112, 80,134, 4, 68,105,117, -122, 68, 99,150,161, 9,173,247, 70,130,181,195,182, 7, 76, 46,208,118, 28,146, - 88, 82,216,245,104,103, 25, 33, 43,116,197,248,208, 83, 6, 73, 1, 30,182, 7, -133,232, 19, 19,244, 5,252, 2,128,218,112,120,131,146,134, 62, 5,187,110,171, - 41,161,184,117,225,120, 45, 3, 54, 8,110,140,125,163,203, 95, 55, 37, 25, 50, -190, 19,110,198,184,215,222,105,174,100, 1,173,177,253,232,162, 31,207,236,236, -181, 7,104,245,230, 18,167, 18, 40, 97,152, 40,244,219, 64,203,136,160, 13, 53, -246, 90,105, 83,237,240,208, 66, 20,120, 47, 62,230,128, 15,154,204,207, 76,235, -148,215,206, 39,138, 78,113,198, 84, 81,128, 7, +// ../Source/Template/GB_add_bitmap_noM_22.c: +uint8_t GB_JITpackage_116 [1013] = { + 40,181, 47,253, 96, 34, 13, 93, 31, 0,230,167,121, 40,208,208, 88, 7,120,107, +239,101,162,127, 4,216, 47, 80, 65,135,193,222,181,214,216,222, 62,222, 55,160, + 55, 13,185,101,196, 59,101, 59,200,213,176, 2,191, 23,114, 0,106, 0,110, 0, + 16,202, 99,106, 87, 91,248,202,157, 52,163,185, 78, 44,243,152,184,206,139, 50, + 60, 38, 48, 27, 8, 54, 65,119,226,249,112,156, 53, 12,250,240,109,131,127, 3, + 20, 9,229, 97, 48,145, 80, 62, 93,210, 31,166,160,198, 28, 2, 31,210,114,199, + 81,136, 63, 14,100,136,154,237,171, 80,225,204, 76, 51, 56,209,157, 54,164, 69, + 38,190,109,241, 35,252,187,245, 23, 41, 88, 89,175, 80, 40,178,161,171,210, 54, +151,105, 71, 98, 88,203,168,240, 72, 36,122, 68, 34, 1, 7,231,160,168,203,237, + 45,151,188,186,149,166,139,230,206, 88,154, 91, 6, 54,181, 11, 75,146,203,168, +191, 93,246,109,110, 91,223,114,221,155,195,232,107,237,179, 36, 40,200,149, 78, +188, 77,203, 39,140,245,188, 90,174,210,250,219,168, 23,252,235, 88,210, 67,246, +226, 38,247, 8,131,129, 82,195,201,100, 19,203, 40,192,111,119,203,188,125,120, +172,246,177, 78,203,179,225,255, 31, 69, 28, 81, 4,137, 63,196,244, 86, 36, 9, +183, 51,182,248,131, 59, 87,170, 55,140, 74,229,103,202,248,234,243,162, 27,142, + 50,227, 75,179,143, 64,198,181, 67,120,224,173, 65,245,234, 87, 86,148, 81,172, + 90,178,203, 18, 74,138,141,198,234,136,212,185,129, 30,112,251,119,123,235, 11, + 75, 75,250, 70, 99,249,212, 97, 42,237,159, 6,252,243,208,150, 14, 37, 6,106, + 24, 58,207,206,169,201,243,168,116,203, 65,147,113,136, 72,224,100, 36, 18,100, + 75,207, 44,191,176, 21,175,222,207, 50, 81,212, 81, 81, 20, 53,233,136,173,217, +173, 61,127, 52,198,206,235, 36, 61,163,167,162,173, 56,165, 23,203, 95, 61,218, +219,229,107,130,174,229,207,155, 60, 19,212, 55, 11,220, 99,217, 9,101, 55,239, +189,247,254,100,180,210,225, 70, 66, 36, 40,124,254,180, 40, 61,202,133,234, 30, + 76,167,207,171, 72,241, 89,247, 60,181,124,172,210,236, 98,185,124, 5,199, 5, +163, 21, 74,170, 29,205,215,181,248, 52,121, 23,229,186,134,176, 72, 17, 8,128, +226,168,209,169, 66, 51, 35, 34,146, 36, 73, 97, 89, 3, 32,132, 24,164,170,140, + 30,194,144, 64,142, 51, 36, 66, 24,177, 2, 98, 68, 40,144,192, 2, 9, 36,148, + 64, 65, 97,105,218,201,106,196,233, 17, 51, 41,173,236, 17,156, 29,134, 36, 15, +206, 82, 56, 67,251, 84,184, 56,225,241,119,185, 37, 54,207,139, 1,171, 42,211, + 7, 50, 60,176, 37,138, 28,153,248,161, 29, 57,141,234,151, 13,255, 63,190,192, +192, 43, 83,101,111,187, 56, 23,129, 51,115, 47,200,145,199, 18, 56, 28, 21, 44, +150,152,228,173,144, 32,242, 51, 40, 98,108,104,145,130, 44, 10, 70,115, 26,156, + 82,123, 68,225,109, 34,132, 34, 82,165, 16, 15, 7,246,245, 77,245,111, 61, 59, +137,166, 60,223,107,190,158,252,211,156,132,196,192,106,163, 14,247,241, 86,130, +241,167,136,153,103, 37,118,129,173,202, 94, 86,174,129,106,207,124, 23, 66,252, + 32,109,187,250,164, 46,154, 5, 85, 9, 76,253,206,117, 50, 89,126, 22,169,184, +145, 55,102,214,231, 60,185,227, 46,242,173,231, 44,163, 89,208,130,253,147,201, +107, 79,194, 51,142, 17,247, 59,112,161,121, 11, 26, 9, 46, 52, 94,209, 17,129, + 97, 21,112,165, 14, 64,118, 2,155,163, 21, 5,163,245,239,187,109,149,138,149, + 21,169, 67, 40,232,122,112,253,187, 91,102,241,137, 9,168, 65,166, 32,153,161, + 43,111,202,165, 66, 8, 67,178,209, 39,105, 92,150, 94, 58,147, 80,190, 90, 86, + 98, 20, 44,224, 26, 33,171, 29,108,101,185, 10,160,152, 40, 0,152, 7, 53,253, +209, 44,146,131,212,223,102,142, 3,208, 54, 46, 48,238,246,247, 25,191, 38,105, +250,129,124,132, 81,228, 39,238,205, 58, 35, 54,231,242, 34,184, 29, 57,187, 90, +147,104, 9, 0,183,142,234,124, 59,152,206,205,201,189,214, 38,213, 84,129,150, +230, 88,177,195, 69, 95,122,183,207,168,148,194,206,178, 84, 72,124, 32,122,195, +129,144, 47,148,139,119, 25,119,172,180, 17, 46, 87,216, 51,104, 84,225, 52, 48, + 18, 77,209, 91,241,178,224,229,219, 78, 58, 4,168, 61, 54, 1,227,240, 66,231, + 85,112, 79,113, 45,145,153,188, 15, 57, 83,158,206,113, 24,181,240,205, 8,174, + 20,246, 98,110,158,128,198, 78, 62, 10, 61,155,166,171, 6, 83, 86,213, 8,198, + 48,230, 23, 63, 95,174,179, 13,151,210, 3,112, 2, +} ; + +// ../Source/Template/GB_add_bitmap_noM_23.c: +uint8_t GB_JITpackage_117 [1015] = { + 40,181, 47,253, 96, 33, 13,109, 31, 0,102,232,122, 40,208,176,170, 14,232,147, +180,248,102,126,137,175,235, 54, 53, 57,143,233, 92,107, 16, 38, 45,252,153,247, + 71,170,228,226, 59, 13,172, 89,234, 97,208,203,128, 18,115, 0,106, 0,114, 0, + 3,147, 71,115,217,180,241,148,219,116,163,185,182,134,121, 52,174,157, 81,134, +199,132, 69, 51,160,181,231, 54,238,135,227,204, 97,208,135,119, 93, 60, 36,152, + 68, 38,143, 3, 73,100,114, 41,139, 14, 49,245, 76,203, 7,226, 63, 92,254, 60, + 10,113,184,137, 12, 22,103,231,189, 80, 54,157,105,198, 6,178, 14,111,219, 15, + 7,105,124,167,197,143,135,191, 14,173, 41, 86,215, 41, 4, 19,217,240, 85,105, +167,151, 41, 38, 53,109, 74,235,114, 8, 4,122, 64, 32, 1,175,142, 61, 75,132, +115, 76, 83,229,246,212, 35,175,110, 35, 41,163,121,102, 28,117,151,161, 53,151, +225, 72,122, 25,245,247,219,222,117,215,205, 91,239,251,244, 48,230,181,246, 89, + 22, 24,228, 74, 27,119, 77, 93,194,218,236,203,229, 42,175,195,141,154, 89,135, +216, 21,253, 99, 51,175,189, 67, 22, 75,148,153, 13,102,107,109,163, 0,191,223, +169,190,243,214,181, 58,175,125, 92,238,134,255, 63, 4,113, 64, 17,211, 95, 80, + 36, 19,129, 59, 51,182,184,131,103,174,211,236, 48, 42,149,157,150,241,213, 59, +163, 29,142, 50,227, 75,183,142, 64,198,245,163, 18, 30,184,155,158,154, 97,175, + 46,104,163, 90,189,228,151,165, 37, 41, 52,153,235, 86, 7,164,118,231,121,192, +237,225,157,221,204,176,188,162,107, 50, 31,166,210, 30,106, 88,135, 28,138, 69, +183,164, 37,102, 24,172, 79,159,156,237,230,171, 75, 28, 72, 35,135, 12,198, 33, + 66, 97,131,145, 80,144, 88,244,141,250,133,173, 56,102, 5, 16,212, 81, 77,211, + 36,233,136, 51, 55,198, 57,164,143,113,214, 41, 74,209, 55,250, 41,218,138, 83, + 90,161,254,234,209,222, 47,103,237, 57,151, 59, 80,226,180,103,222, 76, 93,224, +156, 75, 50, 89, 13,132, 16,194, 67, 25,173, 70, 66, 40, 92, 58,135, 92,140, 30, +229,130,117,121,117, 14,166, 92,150, 58,144, 18,197,111,223,115,115,249, 90,165, + 91,133,186,124, 5, 71, 69,163,148, 41,170, 31,205,217,181,184, 36,129, 25,245, +102,253,104, 49,128,225,168,225,173, 50, 52, 34, 34, 73, 82,144,194,178, 6, 32, +132, 24,163,152,217, 60,194, 80, 96, 20,200, 56, 68,224,136, 20, 32, 35,164,130, +137, 68, 2,177,140,210, 20,180,216, 41,107,210,231, 33, 87,146,194, 45, 15, 85, + 13, 12,153, 13, 46, 13,166,147,125,162, 92, 71,211,209, 29,254, 41, 98, 58, 47, + 53,174,172,194,158, 78,248,189,172,108,112,152,230,183,152, 24, 26, 18,205, 92, +184, 13,223,111, 96,148,170,146,230,174, 93, 17, 8,159,185,232,201, 81,131, 38, + 41,254, 23, 98,157,148, 76, 38,221,152,242,129,162,199, 10, 0, 26,135,177, 1, + 23,247,231,156,219,156, 98,252,136,246, 86, 91, 21, 9,217, 41,120,217,181,125, + 27,211,191,219, 51,132, 68, 27,120,118,212, 14,207,151,154,161, 24, 59,128,170, + 81,199,253,121,229, 57, 7,135,152, 36, 87, 48, 23,195,234, 98,179,218,171,129, +226, 39, 19,122,130, 64, 7, 30,218,196, 23, 58, 0, 78, 21,224,255,173, 58, 76, + 70,190,139,216, 3, 73,155,102, 52,185,223, 57,208,165,128,203,146,203, 30, 11, +236, 60,190,214,222, 5,230,245,115,174, 56,202, 65,121,192, 97, 15, 55, 70, 94, +205,241,109,232,153, 84, 38, 11,150, 73,112,115,186, 83, 72, 90, 84,225,243,181, + 82, 0,206,210,134, 31, 20, 84, 53, 15,187,192, 54,203,122, 16,172, 80,176, 89, + 97, 77,163,141,221,226, 23, 38,208, 51,229, 66, 95,210,227,114,250,159, 77,212, +248,131,144, 5, 5, 0, 95,110,115,217, 17,160,149,227, 66, 0,209, 50, 11, 0, + 37, 13,250, 35,217, 7, 9,180,255,110,205, 89,255, 28,224, 57,223, 41, 31,142, +129,116,162,100, 31,189,128,236, 47,242,210, 51,236,120,122,253, 72,228,230,242, + 56,174,129,105, 73,248,175,197, 55,173, 45,231,230,157,243,243,237,115,167, 43, +137,107,229,157,223,150, 52, 11, 53,143, 31, 47,164, 81, 16,138,100, 37,170,253, + 47,150, 10,228,165, 81,165,148,191, 41,152,131,186, 76,246, 2,225,163, 87, 35, +135, 11,191,136,238, 71, 73,197, 17, 66,218,217,237,227,200,160,246,105,234, 24, +142, 39,161,170, 18,241,148, 82,178, 82, 16,237,206,188,251, 90, 18, 15, 83, 11, +175,132,252, 48,113, 78,170,204, 92,131, 6,151, 39,229,166,217,212, 96, 26, 42, +218,129,105,100,191,240,191,173, 67,109, 85,162,244, 0,242, +} ; + +// ../Source/Template/GB_add_bitmap_template.c: +uint8_t GB_JITpackage_118 [730] = { + 40,181, 47,253, 96, 8, 8,133, 22, 0,118, 39,118, 40,208,208, 88, 7, 52, 58, +177,179,237,158,184,159, 33, 99, 53, 92,195,156,189,136,209,149, 34,124,198,204, + 78, 68, 63,120, 64,181,116, 25,165, 30,120,192,242, 2,112, 0, 98, 0,108, 0, +191, 68,146,105, 18,225,236, 57, 90,157, 82,185,177,190,146, 97, 67,132,173,228, +215,154,200, 4, 6, 98,130, 12,170,108,185,115,123,179,138,238, 60,198,234, 18, +193, 68, 50,137, 28, 12, 72, 38,135,188,199, 37,219, 32,135,249, 84, 61,148,221, +169,117,196, 37, 79,165,177,100,212,213, 5, 10,219,234,168,135,111,111,158,232, + 10,150, 35,225,114,201, 34, 80, 85, 46,167,240,117,145,106,124, 47,234,180,219, +159, 11, 66,119, 89, 22, 78, 81, 81,132,162, 2,135,108, 45,191,231,126,167,188, + 88, 46, 85,199,230, 45,111,209,129, 32, 71, 40, 93, 6,177, 0, 36,235, 83, 62, +110,217,186,247, 9, 18,157,214,151,206,135, 98,116,175,239,188, 84, 11, 89,119, +174,238, 22,206,236,178,246, 24,221,227,161, 72,169,251,188, 87,114,191,198, 48, +134,210, 93,226,186,221,183,213,107, 31,186,109, 31,146,238, 12,114,217,165,123, +183,110, 97,157,118,206, 34,254,201,118,175,243,213,116, 37, 91,174,212,202,120, +240, 84,214,197,217,104, 50,155, 78,230,225,138,104,112,192, 24, 98,237, 64,184, +228,149,219,232, 64,242,253, 94, 5, 6, 87,246,180,209,221,150,248,185, 72, 35, +178,177,134, 83, 59,127, 46,191, 27,149, 77,225, 96, 56, 17,167,168,255,143,162, +140, 40,154, 56, 54,246, 10,217,112,139, 79,182,227,156,221,135, 62,135, 44, 27, + 99,232,192, 96,170,139,227,105,200, 94,103, 23,178, 47, 77,219, 88, 7, 81,180, + 17, 33, 60,133,200,229, 87,157,151,237,235, 16,141, 70, 98,243, 74,229, 86, 20, + 97, 13,229,246, 57,172,243, 18,219,203,162, 88,206, 95,235, 56,254,186, 95,202, + 15,131, 47, 93,167,213,137, 89,162,163, 36,200, 87,178,198,145,106,243, 85,166, +161,140, 98, 72, 39, 3, 65,193,112, 13,141,103, 60,157, 10,194,115, 89,143, 99, + 29,121, 35,224, 77,214,148, 1,231, 24, 55, 76,190,122,229,236, 54,111,178, 59, + 63,175,243,113, 75, 96, 32, 32,132, 16,162, 20,218, 13, 44, 67, 84, 23, 49,219, +182, 64, 10, 11, 90,151,186,151, 99,154, 13, 10,162, 75,192,106,130, 8, 40,143, +177,129,170, 3, 16,133,107,244,250, 34, 8, 44, 0,103, 9, 5, 8,130,228,110, + 1, 0,204, 5, 49, 31,205, 29, 24, 68, 39, 1,242,201,197,129, 17,144, 6,221, + 90,199,172,227,108,229,160, 30,131, 12,175,160,122,192, 7,130,236, 19, 54,108, +238, 34, 24, 44,232,155,176,149, 8,123,130,249, 5,124, 22,137, 22,100, 87, 43, + 69,194, 13, 9,176, 40,128, 64,108,225, 86, 20,206,200,113,145, 11,146, 74, 42, +163,128,164,240,152,135, 35, 64, 91, 33, 67,198, 64,132,127, 56, 87,205,225,150, +171, 44, 35, 8,112,144,161, 32, 18, 48, 27,141,180,138,210,200,139, 13,152,201, + 9,217,197, 7, 45,239, 93, 71, 69, 98, 34,225,224,129, 89,146, 26, 96,223,250, +121, 25,220, 98, 93, 55, 1, 17,172, 64, 74,227, 49, 32, 25, 27,218,210, 92,172, + 97,228, 61,126, 27,112,191,178,139,220,188,105,106,158,153,108, 91,188,154, 43, +128, 24,154, 88,192, 37, 43,138, 2, 55, } ; -// ../Source/Template/GB_select_bitmap_bitmap_template.c: -uint8_t GB_JITpackage_130 [637] = { - 40,181, 47,253, 96,108, 7,157, 19, 0,182, 31,100, 32,208, 92, 23, 3, 24,157, -249,214,174,223, 80,173, 93,212, 20,227, 78,144,226,143, 28, 38,210, 92,171,249, -194, 11,142,170, 89,129, 91, 0, 88, 0, 87, 0,176,212,106,235,185,222,167,234, -122,142,162,224, 13,140, 69, 98,225, 61, 20,137,197,187,146,187, 65, 95, 88,189, -252, 0, 94,118,110, 87,235,142, 55,124, 64,177,114,230,154,102, 34, 86,167, 53, -127,236,190,175,207,118,125, 15, 62,117,223,177,240,235,220, 6,144,251, 44,143, -216, 93,209,220,178, 59,215,214,190, 40,114,151, 22,181,154,172,100,142, 64,108, - 30, 2, 17,132,239, 51, 76,241,108,150,109, 59,187,186,117,205,239,216,162,176, -250, 77, 54, 28, 27, 95,201, 99, 20, 15,124,199,253,123, 12,252, 46,111,186,181, - 77, 9, 15, 59,164,145, 4,183,198,174,242,255, 55,218,182, 29,108, 90, 15,222, -196,245,150, 45,113, 88,120,246, 44,107, 6, 31, 73,237, 77,221,141,173,169,241, -172,198,182,188,162, 55,186,116, 14,166, 13,166,197, 55,101,205,167,110,224,148, - 75, 71,129,168,242,155,132, 32, 86,130,231,127,191,167, 21, 10,147,231,103,174, -139, 20, 56,236,186,187, 76,191,153,222,149,119,215,173, 57,139,190, 76,123,150, -250, 29,230,180, 89,109,122,110,178,245,194, 79, 93,169,163, 22, 69,107, 90,243, -115,203,245,218, 82,213, 52, 7, 18,255,174,209, 10,195,229, 13,185, 62,219, 86, -219, 36,223, 59,139,154,184,158, 36,129, 43, 88, 82,215,196,247, 82,198, 76, 40, -174, 68,142, 37, 81,184,163,240,178,209,136, 56, 30, 0, 6,195,249, 50,160,230, - 66, 1,221,127,147, 95,111,197,125, 48, 16, 53,158,209,106,212,214,254,119,249, -134,108, 45,139, 59,134, 67,134, 32, 17, 12,145,227, 39, 28, 81, 37,247, 84,119, - 15,103,180,132, 98,248, 33, 73,158,113, 19,114, 15, 99,160, 81, 49, 83,140,140, - 76, 32,162, 73,146, 44,107,112, 68,166, 10,171, 3, 79, 36,220,140, 52,174,203, - 84,172,108,145, 89,233,144, 34, 25,226, 85, 71, 93, 49, 8,233,160,209,246,117, -156,133, 44,222,204, 12,244,152, 69, 53, 52, 5, 20,212,139,212,105,162, 36,218, - 58, 79,216, 58, 94, 26, 77, 76,108, 4,152,146, 38,161, 73,153,127,164,122,205, - 0,155, 13, 17,114,198,193,183, 7,215,156,108,179,102,107,143,204, 55, 91,251, - 13, 27,249, 16,239, 77,100, 48,250,131,141, 75, 54,194,144, 31,138, 95, 47, 62, -219, 65, 12, 29,160, 81, 66, 56, 60,121, 88,208, 14, 88, 25, 24, 29, 53, 96, 42, -130,172, 7,180,159, 32, 28,191,245,106, 6, 51, 5, 8, 34,255,230,179,250,229, -202, 68, 41, 76,245,178, 32,107,158,134,106,238,193,230,224, 29, 2,123,240, 92, -233,153, 37, 95,115, 43,154,219,196,111,184, 25, 90, 51,151,223, 52, 63, 42, 51, -173,219,112,205, 53, 68, 29, 39,156, 18, 25, 39, 77,144,162,188, 9, -} ; +// ../Source/Template/GB_add_full_30.c: +uint8_t GB_JITpackage_119 [360] = { + 40,181, 47,253, 96,143, 2,245, 10, 0,246,212, 66, 33, 0,211, 28, 3,252,221, + 12,211,251, 17,189,170,182,177,209,110, 12,169, 23,232,203,178,125,135,104, 22, +133, 89,250,127,175, 15, 33, 57, 0, 58, 0, 55, 0, 87, 83, 21, 23,204,115, 56, +240,235,238,228, 18,155, 14,202,229,170, 25, 6,187,117,205,152, 5,111,136,197, + 91, 93, 79,191,121,245,243,242,250,129, 74, 51,113,221, 80, 17, 50,140,195, 75, +182,109, 53,163,140, 83, 84,156, 40, 42,160,125,252,255, 99,244,196, 74, 96, 77, +150,211,106,158, 55,104,123, 47, 23,244,236,214,152,236,246,172,118, 29, 83, 69, + 17, 17,108, 86,163,237,182,146,111,144,195, 92,201, 49,158,151, 4,171,178,166, +194,160,178, 30,105,208,229, 14,136,231, 31, 94, 61,241, 12,253,143,145,118,193, + 10,110,200,226,112,179,156,182, 31,121,217, 5,237,173, 90,205,129, 89, 23,122, +215,223,229,216, 98, 92,117,205,207,221,247,218, 97,170,206, 0,140,171,156,151, +219,199, 5, 49,126,226,135,242, 44,214, 60,240,124, 65,143, 64, 22, 88,131,178, +160,212, 2,157, 30, 30,125,251,102,243, 50, 95,110,230,101,230, 86,232, 51, 83, + 76,136, 35,163, 12,122,105, 62,241, 40, 35, 47,244,235, 30, 73,234,120,218, 3, + 32, 32,112, 34, 19,164,235, 1, 94, 2,223,109,198,216, 22, 27, 2, 28, 12, 72, + 58,135, 17,228,151,211,149, 53,104,140, 34, 59,251, 25,100,195, 99,136, 53, 91, +168,173,193,187,170, 36,216,235, 64, 33,115,197,168, 76,146,207, 53,163,112, 65, +114, 69,205,160,233,121,102, 90,219,128,171,185, 0,100, 18,175, 90,209,233, 6, -// ../Source/Template/GB_select_bitmap_full_template.c: -uint8_t GB_JITpackage_131 [607] = { - 40,181, 47,253, 96,127, 6,173, 18, 0,230, 30, 98, 33,208, 92, 23, 3, 24,221, -252,109,191, 67,231,188,177,160, 41,198,157, 32,197, 31, 57, 76,164,153,156,243, -133, 23, 28, 85,179, 2, 1, 89, 0, 87, 0, 84, 0, 39,234,118,142,241,247,194, - 66,129, 80,116,142, 4, 66,113,142,220, 94, 72,175,171, 90,110,248, 14, 59, 55, -107,117,197, 23, 60, 95, 72, 57,117, 69, 49, 16,155,162, 85,123,236,190, 45,143, -246,244,254,187,121,207,169,114,235,220,133,111,243, 42,135,216, 93,177, 94,217, - 61, 98,220, 50, 71, 93, 87,251,158,198, 77, 90,108,211,145,130,249,225,160,117, -135, 67,121,210, 89, 13,219, 54,118,211,213, 45,189,103,139, 93,245,123,100, 52, -118,190,145,191, 38,221,119,110,187,247,215,247, 77, 94,116,167, 22, 29, 28,228, -140,196,241,219,105,102,145,255,175,201, 52,205,112, 67, 69, 67, 24, 20,157, 61, -201,170,191, 67, 80,123,205,187,179, 45, 51,157, 77,179, 37,111,216,137, 44, 28, - 67,105, 93,168, 77,109,231,233, 14, 54, 95,211,150, 55,111,224, 68,126,143,143, - 67, 74,112,125,239,247, 50, 2, 65,114,125,189,113, 16,194,150, 89,119,147,232, -181,210, 57,242,238,186,211,205,226, 86,105, 79, 50, 61,151,183,180,172, 22, 61, -247,184,106,229,163, 44,243,216, 98, 92,209,170,175, 87,172,215, 21,170,162, 58, -128,184,247, 20, 87, 87, 38, 95,208,245, 3,239,177,154, 54,211, 34,222, 57,139, -203, 92,207,113,176,205, 8,222, 77,154,244, 83,197,188,101,190,119, 34, 98,192, - 48, 21,110, 42, 8,194, 21,129, 22, 77, 38,180,233, 0, 46,151,141,135,249, 50, -150,201,231,222,147,252,118,169, 45,204,116, 68,108,239,113,250, 5,109,173,106, -251,101, 51,130,159,240, 3,141,162, 7, 20,223,217,136, 21, 48, 4, 61,227,168, - 35,106,192,237,101, 90,160, 97, 53, 84, 21,136,144,148, 38, 5,133,106, 53, 96, - 68,166, 10, 89, 7, 79, 68,110,147,228,174,198,200, 73,202, 68,181,164, 9,181, - 86,231,248,173,234, 42,199,112, 1, 1,149, 40, 52,246,240,202, 73,109,116,230, -225,164,111, 52,133, 65, 15, 92, 45, 26,203, 75,253,232, 37,228, 20,203,117,140, -234, 16,164,139, 55, 52, 80,125,125,123, 36, 77,246,111,183,181,183, 0, 71, 43, -227,134,177, 66,148, 57,196,143,207,102,232, 79, 3, 82, 89, 56,214,192, 26, 80, - 27,179, 48, 48, 50, 52, 96, 44,198,177, 8,180, 27, 33,221, 95, 59,213, 13,177, - 1, 50, 52, 83, 51, 89,189,115, 69,146,212,102,116,178,160, 42, 49, 12,106, 88, -194,140, 1, 63, 5,230,240,201, 90,240, 70,178,252, 78,140,118, 7,117, 72, 54, -157,194,184, 22,103,161,213, 55, 77, 71,101, 38,239, 46, 88,113,203,177,195,178, -146, 69,176, 87,212,229, 1, } ; -// ../Source/Template/GB_select_bitmap_template.c: -uint8_t GB_JITpackage_132 [410] = { - 40,181, 47,253, 96, 93, 4,133, 12, 0,198, 83, 66, 33, 0,243, 54, 62,167, 5, - 18, 73, 57, 58,225, 4, 74, 85,224, 94, 42, 59, 16, 26, 55, 70,110,196,209,144, -199,168,170, 90, 16, 8, 16, 55, 0, 56, 0, 56, 0,229,103,102,139,215,230, 87, -118,191,241,217,209,156, 79,209,205,142,187,198, 94, 93,196, 78,216,144,231,184, -163, 58,104, 88,190,248,253,229,146,243,251,150, 31,103,227,204,221,224,231,215, -247,145, 57, 69, 81,137,162, 2, 34,222,228,135,154,244,154,124, 16, 91, 9,115, - 85,166,240, 61,230,235,231, 92,239, 81,131, 57,207,185,122,132,168, 12,149,148, - 56, 24, 42, 39,128, 3,143, 52,246,124,151, 79,213, 63,227,238,112,176,231, 81, - 87,237, 99, 12, 36, 22, 48, 60,227,144,170, 55, 60, 83, 11,190,175, 98,147,152, -162, 42,117,226,105,143,219,105,183, 90,140,194, 97,146,235,105, 17,241, 67, 17, - 11,220,221, 41,136,210,201, 39,139, 26,166, 74,250, 17,252,202,234, 11,243,113, - 20,179, 94,134, 89,187, 89, 24,236,162,104,151,141,131, 64,182,172,106,151,133, -219, 60, 11,179, 88,119,173,198,121,228, 41,160, 52,228, 78,176,214, 66,241, 6, - 96,224, 34,166, 34, 14,201,215,249, 67, 1,112, 10,248,135,103, 6, 3, 52, 32, - 64,134,136, 49,186, 14, 85, 56,160, 53,110, 91, 99,118,141,205,140,143,230,142, -224, 0, 77,166,175, 13,249,255,196,213, 78,131, 16,197, 64,213,116, 43, 7,229, - 16,133, 44,198, 13, 6,230, 43, 64,251, 12, 24,140,193,129, 7, 96, 6,181, 59, -241,182, 66,220, 5,246, 8, 64, 35, 65, 39,192,219, 69, 27, 20,137,128, 16, 65, -208,225, 17,142,135,117, 15, 71,102, 2,109, 0,111,124,240,134,217, 0,225, 0, -198, 33,151,179, 42,209,104,179, 25, 44, 54, 77,204, 51,147,219, 56,172,214, 55, - 66,135, 3, 14,105, 15, 68, 81,231, 6, +// ../Source/Template/GB_add_full_31.c: +uint8_t GB_JITpackage_120 [466] = { + 40,181, 47,253, 96,125, 4, 69, 14, 0, 54,152, 76, 33, 0,181,142, 1,106, 66, + 73, 74,224,238, 46, 83,220, 88,218, 9, 16, 29,140, 24, 98,150,168,230, 40, 48, + 58,204,210,255,187, 63,188, 66, 0, 68, 0, 64, 0,191,180, 21,209,198, 7,242, + 36,112,143,161,189,252,226,100, 68, 3, 49,205,143, 68,213,153, 98,174,110, 27, +226, 40, 76,195,109, 61,215,246,218,175,215, 76, 47,239,137,244,219, 21,154, 64, + 50,182, 39, 10,135,121,111,232,155,158, 71,167,246,120,150, 81, 88,150, 5,199, +225,120, 26,126,104,198, 0,133, 55,130,187, 74,254,255, 20,101,162, 8, 3, 3, + 86,193,142, 98,249, 68,174,246,179, 91,172, 30, 4,171, 90,172,157,141, 96,154, + 70,101,224, 85, 81,174,186, 90,174, 55,248,177,150,223, 43,127, 29, 12, 4, 3, +134, 40, 16, 12,183,186, 42, 17,237, 2,121,198, 45,208,101,171,111,239, 96,206, + 61, 90,245,207,158, 50, 9, 4, 37,177,251,226,248,138, 19,206, 56,174,254, 83, + 86,103, 55,221,186,170, 55,228, 85,176,211,183,196,185, 85,218,163, 53,131,123, +134, 33,241,121,252,126,235,189, 52, 83, 28, 20,117,250,172, 39,110,115,220, 83, +206, 77,133,178,101,122,105,167, 39,221,213, 51,161, 64, 38, 24, 14,242, 89, 64, +213,183,158, 50,177, 94,209, 3,199, 91,245, 10,197,193, 65, 50, 14, 77,243, 84, +215, 20,183, 70,109,167,252,133,127,141,228, 47,144,165,213,229,108, 72, 74, 61, + 32, 80,136,144,148,157, 7,177, 0, 76,225,200, 97, 28,178,115, 96, 74,225,162, +209,232, 24,192, 30,194,192, 10, 56,195,193,175, 12,232,129, 13, 92, 0,185,225, + 0, 69,144, 11, 21, 1, 26,173,193,162, 19,144, 97,173, 62,248,244, 96,122,192, + 89, 55, 81,113,194, 57,208,183, 95,204, 39, 49,254,130,165, 1, 81, 15,200, 96, +101,158,120, 95, 23, 11,220, 56,232, 24,125,246,139,230, 48,234, 66,190,161,251, + 64, 36,143,161,193,250, 88,232,110,131,145, 85,161,181, 31, 12, 13,112, 39,202, + 14,169, 52,163,236,130,228,128,154, 65,243,121,102,106, 91,227,213,114, 70, 68, +245,239,250, 20,189, 67, } ; -// ../Source/Template/GB_select_entry_phase1_template.c: -uint8_t GB_JITpackage_133 [1235] = { - 40,181, 47,253, 96,252, 16, 77, 38, 0,182,115,152, 39,208, 22,173, 14, 84, 95, - 81,123,110,255,103, 90,124,249, 35, 8, 46, 78,165,226,106,139,189,196,236,196, - 21,135,193,244, 28,176, 29,228,106, 56,128,223, 11,142, 0,134, 0,142, 0,147, -250, 72, 72,193,104,111, 47,124, 37,249,238,183, 63,255,255,202, 73,101,224, 66, - 48,245, 69, 49,117, 79,168, 13, 45,120,101, 87, 18, 83, 91,217, 20,172,152, 58, - 28, 50, 46, 85,143,212,182,205,185,189,215, 7,114, 30,163,123, 43, 32, 24, 32, -152, 16, 48, 3, 4,151,168,232,205,194, 17,118,248,197, 61,116,221,153, 65,207, - 91,199, 85, 48, 92,148, 43, 68, 66,219,202,180,211, 23,130, 58, 21, 9,147,160, -235, 54, 23,105, 26, 94,167,117,219,240, 87,130, 38,245,132,190, 28,105,214,247, - 97,218,242, 69, 95,168, 94,217,239, 82, 29,219, 62, 6,136, 11, 8, 84, 38, 1, -129,161,144, 14,121,136, 51,254,101,201,157,193,139,228,205,154, 29,146,129,228, - 59, 99, 27,138,215, 7, 52,235,229,188,149, 19, 94,219, 23, 68,179, 73,189,226, -174,215,253, 69,241,230,191, 72, 88, 68, 27, 42, 71,166,108, 95,247,243,190,106, - 10, 84,117,189,133,151,176,150, 16,185,143,252,186, 88,143,192,120,107,246,229, -169,243,215, 80, 61, 34,101,199, 17,134,240,186, 28, 93,152,168,203,156,224, 1, -149,175,165, 22,179,124,165,133, 99,230, 15,235,231,174,121,187,119,109,133, 22, -246, 75,193,122,109,215,128,223,103,112,112, 37,252,181, 50,145,132,105, 20,204, - 88,134,170,168,227, 69, 89,249, 92,244,104, 54,207,217,135, 43, 5,136, 29, 35, -195, 75,146,217,125, 78,196, 81, 80,190,233,112, 92, 70,231,117, 36, 50,151, 36, - 23,157, 2,227, 57,108, 42, 24, 44, 52, 38, 60,156, 77,167,227, 50, 88, 45, 76, - 77, 67,151,255,251,218, 4,218, 18, 41, 42,217,100,120,120,158,171, 92,218, 71, - 66,146, 25,227,180, 26,198,194,145,227, 5, 51,205,123,140,229,253,145, 44,225, - 49, 27, 35,223, 90,104, 89,243,157, 77,251, 89, 77, 27,217,222, 25, 29, 51,213, - 9, 43,125,119,100,120, 43,211, 10, 94,233,151,150,178,235,204, 30,149, 74, 74, - 37,115,169,181,214,104, 67,116, 76,127,106,103,175,227,249, 31, 9, 45,232,214, -172, 36,223,148, 55,112,228,216, 54,182,230, 41, 22,139,100, 65,137,118, 99,209, - 61, 56,158,139,205,123,192,120, 27,141, 10,183,241, 60,157,141, 7, 94,225,142, - 62,115, 19, 41, 66,129, 96,166,203,229,114, 71, 63, 36, 4,193, 88, 26, 8,246, -113,218, 90,107,173,146,253, 28,125,115, 52,227,121, 54, 16,153,183,203, 69,119, - 47,130, 1,226,154,139,204,107,205, 74, 66,235, 10,199,158, 57, 71,230, 32, 31, -154,200,191,124,172, 78,146, 79,121,219,179,146, 11,183,224,137, 69, 33,243,129, -107, 2,129, 8,168,113,177, 67, 67, 51,129,136,130,130,164, 32, 73, 99, 81, 8, - 98, 16,244,210, 65, 62, 98,128, 64, 81,132, 32, 2,149, 34,138,137, 36,144, 56, - 9,100, 70,146,100,148,206, 3,127, 75,199,215, 15,101,158, 93, 61, 1, 76, 23, -187,177,126,245, 17, 82,182, 42, 16, 41, 66,189, 88, 11,165, 15,209,173,209,252, -118,122,170, 32,137, 61, 18, 35,214,108,107,201,100,250,142,103,188, 80, 45, 70, - 85, 41, 29,150, 45,234, 58,160, 91, 9, 62, 26, 3, 55,245,115,123, 71,164,191, - 75, 23,118,222,146,239, 46, 88,197,237, 19,156,129,142,164,105, 87, 44, 85, 65, - 8, 19, 92,180,213,181,125,124, 70,198, 73, 28, 58,164,199, 18,216,161,235,246, -211,128, 80,193,135, 99, 82,252,200,103, 90,127, 82,253,232, 58, 52,198, 29, 60, - 3,119,108,207,160, 79,162,212,165, 57, 37, 33, 48,244,234,174,199,172,162,212, - 91, 10,129,177,243, 81, 99, 18, 29,115,181,160,164,106, 74, 12,248,114,191,225, -132, 96,199, 68,179,202,172,238,208,115, 75, 43,168,247, 83, 28, 84, 81,223, 25, -169, 49, 43,208, 64,214,220,201, 94,240, 21,244,240, 25,119,135, 82,160,159,199, -138, 4, 5, 6,107,132,242,197,240,211, 84,184, 25, 63,236, 8, 3,205,230, 81, -151, 12,221,126, 58, 22,214,237,196,120,192, 72,247, 80, 41,205,195,125, 80,206, -183,224,155, 12,230, 36,105, 0, 79,208, 76, 58,196,115,152,184, 12,152,122,188, - 99,236,175, 44,219, 28,117, 34, 87,203,150,158,130,199,145, 99, 40, 46,147,111, -141, 92,138, 49, 6,119, 0,131, 47,209,156,231, 97,219,115, 4,208, 13,206, 40, - 70, 73, 69,102, 90, 48,147, 86,156, 0,190,145,218,241,178,232, 82,171, 19,137, -130,144,182,253,241,148,173,144,209,207,110, 30,199,147,189,142, 52, 36,158,136, -231,189,165, 13, 39,128, 16,145, 41, 84, 66,160,128, 32,167,150,169, 75,203, 97, - 14,120, 33, 24, 48, 54,203,162, 28, 6,144,143, 56,242,170,174, 80, 25,174,234, -175, 82, 31, 45,151, 36, 59, 75,116, 16,100, 12, 78,152,232,127, 73,139,194, 39, - 46, 52, 88,195, 79, 12, 16, 18,104,205,149,143, 13,189, 7, 52, 98, 99, 6, 39, -141, 76,204, 23,250,242, 99, 82,131,255, 9,140,239,201, 39, 95,103,155, 70,138, -136,103, 6,159,173,192, 37,102, 49, 50,242,154, 81, 60, 4,246,167,211, 1,117, -230, 20, 0,127, 82,160, 70,137,244,202,229, 87,157,161, 71,170, 47,163,230,157, -241,110,141,115, 19, 27, 8, 8,165, 85, 86,142, 72,217, 30, 58, 64, 64,100, 37, -177,157,205,160, 97,159, 12,133, 27,133,143, 36,106, 43,200, 70,194,222,225,124, -203, 56,182, 17, 2,236,138,190,124,156, 73, 9,110,110,113,208,160, 9,127,102, - 98,118, 80, 96,231,196,124,253,249, 1, 64,165,194,181, 9, +// ../Source/Template/GB_add_full_32.c: +uint8_t GB_JITpackage_121 [784] = { + 40,181, 47,253, 96,252, 7, 53, 24, 0,134,100,110, 33,224, 90, 23, 3,212, 55, + 98,221,119,225, 94,213,220, 59, 84,155,121, 81,254, 23, 3,155,192, 90, 1, 5, + 29,195, 24,131, 48,194, 11,103, 0,101, 0, 99, 0,133,171,199,235, 97, 75, 1, + 20,209, 24,190,171, 42,175,190,155,235, 29,150,240,230,162,200,125, 46, 20, 8, + 69,193,145, 64, 40, 46,240,178, 79,141, 85, 54,114, 3,119, 86,184, 73, 20,238, +124,114, 56, 11, 13,179, 45, 39, 15,206,221, 56,197,193,202,155, 89,225,225,234, +210,102,125,141, 79, 63,127, 75,123,238,223,104,223,125, 82, 2,183,117,255, 67, +177,168,162,152, 2,235,247,217, 74, 39, 63, 28,176,194,225, 16,166,137,179,119, +119, 97, 50, 21,140, 71,194,169,124, 36,149, 83, 1,177,139, 64,104,141,222, 33, +207,215,142,248,246,156,253,199, 4, 30,222,118,235,236,138,169,239,134,158,190, + 96,172, 93,166, 63,123,203,112, 87, 84,106,124, 73,130, 23,175, 40,218,210,230, +103, 20,121,139, 42,217, 50, 3, 94,146,215, 62, 50,220,247,242,255,199, 48, 23, +134, 48, 40, 10, 55,244,108,230,254, 40, 47, 6,241, 30,239, 87, 9, 84,187, 98, + 80,218,173,179, 62,105,187,199, 74, 79,176,162,246,210,136,235,233, 86,250,237, +215,195,162,166,117,235, 18,131,167,193,119,101, 52,246,136,191,245, 72,122, 24, +136,191,177,171,228,174, 92, 13,105, 50,221,213,226,125, 29,198, 43,170, 30,120, +254, 44,173,104, 61, 93,187,236,154,140,118, 1,169,113,229, 62,243,231,138,251, + 52, 97,155,157,171, 17, 46, 99,177,251,146, 78,224,190, 93, 16,216, 11,123,153, + 62, 49,165,164,227, 19,182,211, 44, 58,198, 16,237,223, 78,115, 73,110,239,170, + 30,238,211, 20,152,174,202,150, 91,251,224,166, 46, 39, 8, 89, 51,231,156,243, + 27,239,103,165, 57, 59,167,169, 29,201,228,244, 25,210,236,180, 82,232,228,219, + 77, 26,135, 91,112,154,143,140, 30, 36,191,111,184,255,141, 24,132,252,116,237, +215, 62, 18,125, 59,228,195,137,233, 97,148, 29, 89, 95,128,141,168,177, 41, 67, + 68, 34, 34, 90, 80, 82,144, 66, 26, 3, 48,132, 32, 83,102,230, 1, 98,152,112, + 20,101, 64,138, 96, 98, 4, 22, 5, 35, 83, 25, 41,163,164,164,232, 1,145, 64, + 89,129,123,161,172,110, 74, 12,184, 13,189, 4, 23, 36,210,244,101, 68, 36, 68, + 1,165,227, 78,231, 1,240, 5, 48,101,108,197,146, 83,246,109,125,126, 62,185, + 89, 79,249,188, 66,179, 39,178, 7,172, 26, 60,183,223, 79,101,201,143, 54, 6, +159, 21,232, 2,131, 56,141,165, 20,104, 96,126,127, 76, 20,144,253, 78,102, 82, + 36, 69, 0,162, 26,202,253,218, 58, 3,217,152, 10,236, 39,204, 8, 58,235, 34, + 71, 35,159,223, 14,242, 75,238,114,108, 61,137,104,150,135,155, 43,151, 7, 30, + 9,230,237, 18, 88, 50, 81,168, 62, 64, 99, 24,248, 84,209,146,146,203,235,157, + 70,248,100, 0, 78, 61,183,207,249, 14, 20, 25, 20,226,124,142,132, 30,104,249, + 74, 72,252, 31, 41,120, 69,166, 71,134,188, 62,229, 14,185, 80,101,108, 29,184, + 15, 60,212, 74,168, 6,136,144,215, 64, 33, 92,125,111,112, 20, 18, 5, 71, 77, +181,119,129,239, 63,165,149,229,168,178, 43,246,185,126,183,212,158,109,188,142, + 52,235,212,191,201,237, 37, 76,173, 18,193,137,183,214,121, 39,204,141,246,173, +122, 66, 31, 41,204,172, 54,188,100,130,164,173, 90,229, 14,106, 31, 96, 33, 40, +205,156, 28,194,230,160,201,254, 96,210, 74, 5,166,176, 19,124, 50,249, 0,230, +149,210,128, 19, } ; -// ../Source/Template/GB_select_phase2.c: -uint8_t GB_JITpackage_134 [1500] = { - 40,181, 47,253, 96, 44, 27,149, 46, 0, 38, 58,172, 40,176,146, 85, 29,170, 38, -139,138, 75,130, 61,172,200, 6,243,136, 8, 45,127, 75,155, 91, 3,244,133, 30, -235, 74,242,196,141, 13,154, 59,165, 63, 77,239,142, 75,159, 0,160, 0,155, 0, -184,177,212,158,113,253, 78,231,179,230,167, 88,249,229,249,249,109,143,166, 81, -100,125,163,242,112, 90,135,214, 58,150, 31,121,180, 62,211,198,125,109,158,207, -161,207,225,109, 59,234,126,235,241,241,188, 37,169, 80, 46,147,238, 52,105,227, - 19,110, 79,110,102,218,155,102,210,152,182, 54, 55, 19, 11, 6, 14,101,107,143, -219,184, 59,199,185,227,152,157,123, 94, 60, 44,184, 84, 46, 19, 4, 75,229,242, - 73,147, 14,241,244,144, 12,167,196,143,186, 92,191,137, 29,122,226,102,161,179, -242, 58, 36, 52,190,210,122, 58,207,144, 71, 50,129,104,168,203, 48, 74,149,245, -132, 75, 99,217,217, 44,107,237, 53,206, 22, 28, 78, 64, 32,153, 16, 16, 4, 22, -131,176,204,148,146, 30,230, 28,116,102,160,206,180,233,225,152,101,124, 39, 7, -226,230, 70,251,155,205, 68,195,179,109, 77,212,199,189, 85,205,214,123,176, 35, -129, 89,215,230,242,100, 92,111,148,155, 1,211, 20,165,115, 34, 4,166, 89,200, - 60, 26, 0,233, 88,231,242,120,226, 38, 59, 99, 58,191, 53, 14, 29,143,228,135, - 39,111,125,119,249,144,155,223,220,104,123, 30, 82, 97,146,229,115,214, 32, 19, -139, 38, 73,116,113, 46,176, 44,206,217,117,152, 91,133, 73,124,117, 27,159,181, -121, 51,238, 59,240,231,204,224, 32,211,249,140,105,213,226,115,115,252,255, 37, - 33, 18, 9,197, 33,106, 24,126, 43,119,207, 11,113, 31,125, 42,246,228,105,211, -122,221,176, 76, 78,161, 80,158,177, 81, 41,237, 87, 53,204,167, 13, 80,198, 45, - 20,156,108,148, 30, 51, 78,102,173,195, 67,120, 8, 58,132,150, 61,220,104, 31, -102,209, 74,183, 56, 25, 67, 68,204, 34, 39,195, 46, 7, 60, 71,159,211,250,173, -179,188,109,235,251,243,154, 63,129, 96,130, 20,207,213,231,141, 78,238,153,131, -142,121,205,216,227, 95,189,220,105,157,152,111,100, 84, 89, 30,116,235,199, 43, - 61,238,186,157, 42, 60,132,162, 50,152, 87, 94, 73, 22,168,205, 79,210,209, 38, -181, 23,218,186,211,240, 39, 9,111,178,111,151,179, 47, 68,251, 74,123,251,213, -203,143, 67, 94,187,205,252,234,214,229, 3, 87,102, 28,146,107, 51, 17, 10,200, - 88,168,145,202,226, 98,136,208, 52, 52, 72,216,195,169,177,228, 74, 33,236, 79, - 28,221, 76,251,158,164,149, 67,206, 13,211,143,250, 44,187,201, 35, 52, 53, 95, -155, 9, 57, 32,146,152,184, 58, 0,169, 79, 75,250,200,106, 95,127, 25,234,182, -203,245,243,190,242,175, 92,193,126, 82, 29,132,142, 62, 40,221, 34, 66,104, 50, - 91, 51,198, 49,135, 10,137,142,198, 69, 68, 62,125,163,233, 96, 94, 75, 70, 40, - 74, 20, 69,150,104,190,250,134,101, 89,168,204, 45,123, 1,129, 87, 10,183,236, - 57,219, 13,146,222, 32,145, 93, 19,155, 72,145, 97,158, 11,219,152, 17,175, 0, - 62, 99,204, 96, 94, 61,218,238,161,122,199,244,139, 14, 22,113, 73,223,154,206, - 63,129, 89,168,161,173, 51, 66, 35, 34, 18, 36, 73, 82, 72,107, 97,136,192, 40, - 40,153,244,204, 3,130,192, 44,149, 81, 36, 66, 24, 33,198, 56,129, 33, 2, 67, -130, 34,129,136, 72, 32, 35, 18, 69,129, 40, 29,144,224,146,127,198,252,216, 10, - 77,130,142,224,155, 8,120,216,247,106,212, 23,191, 87, 83,241,112,149,227, 98, -228, 67, 35, 21, 10, 99, 88, 34,173, 23,152,242, 16, 77,186, 42, 48, 51, 61, 21, -110,122,204, 25,234, 15,151,255, 0, 35,158, 49, 99,131, 17,195,143,180, 56, 31, - 1, 56,218, 77, 13,117,127, 31,220,110,193, 84,113,141,143,243,106,245, 35, 31, -104,163, 19,218, 46,140, 64, 60, 20,227,210,115,175, 34,115,234,121,247,132,125, - 79,149,175, 84, 91,191, 45, 97,215, 2, 54, 17, 32, 73, 41, 82,221,131,237, 60, -179,196,165, 23,226,169,214,203, 75, 19,155,142, 57, 90, 85,251,211, 39,246,101, - 71,134,245, 26, 69,145,134,197, 86, 14,185,124, 39,197,200,239,189, 50,164,204, -244,249, 76,219, 97, 4,253,235,131, 20,146, 44,191, 21,190, 61,249,189,123,167, -188,162,199,245, 22,248,232, 74, 98, 23,172,187,223,144, 8, 8, 93, 26,164,237, - 61,152,205,137, 28,145, 12,192,198, 95,144, 65, 98,227,149,207, 33,227, 54, 44, - 2,195, 33,252, 84, 92, 50,183, 62, 63,134,244,250,102,156, 97, 65, 40,190, 21, -116,218,156,164,106, 30, 44, 61, 36,213, 61,195,200,120, 38,254, 84,136,251, 75, -211,155,187,139,143,147,128,125,150,142,146,229, 78,192, 31,122,140,129,207, 3, - 97, 64,187, 47,239,252,197,182,151, 10,149, 79, 40,224, 39,206,144, 39, 40,193, - 71, 25,184,149, 97,171, 64,201, 0,177, 34, 42,123,160,122, 30, 38,189,211,132, - 4, 72,180, 25,151,156, 1,118, 32, 82,131,233, 80, 39, 62,254,122,230,148, 1, -170,195,229,207, 45,198,162, 54,102,234, 90, 21, 33, 38, 14, 69, 86,130,125, 27, - 97,184,151, 86, 61, 30, 81,228,148, 8,125, 34,106,196, 83, 43,252, 99,175,119, -166, 21,207,122,211,113, 95,149,250, 82,198, 37,253,244, 39, 16, 76, 60,169,138, -243, 85,158,110, 9,236,242, 78, 72,214, 94, 43, 9, 63,184,190,103, 36,208, 34, - 94, 74, 15,188,109, 5,242, 85,155, 25,220,221, 97, 68,142,206,236,154,182,207, - 75,184, 17,163, 13, 74,141,158, 39, 14,127, 36, 92,157,138, 92,149,195,218,194, -120, 97,100, 80, 26, 21,167, 95, 83,185,196, 0,131, 53, 38,226,209,127, 30, 74, - 68,136,121,173, 5, 28, 27, 6, 98,194, 2,237, 38,165, 33,101,214,160,242,209, - 27, 18, 46, 21, 81,220, 64,170, 24,227, 7,228,135, 35, 32, 98,126,200, 11, 2, - 3, 83,207,133,108, 56,252,185, 73,106, 2, 69, 45, 66,133,188,242, 72,172,236, - 89,231,143,232,194, 1, 81,141, 78, 51, 74, 59, 50,180,136,103, 75, 75,248, 6, -123, 61,129, 69,157, 91, 48, 32,188, 29,219,194,160,179, 23, 77, 10,104, 28,201, -153,162, 15, 59,115,219, 18,219,101,131, 79,186, 84,130,125,137, 40,196,153,217, -162,247,142,125,253,129, 49,159, 91,192, 95,129, 6, 54, 9, 67,195,142,138,237, -220,238, 85,152, 23, 83, 83, 51,152, 98,131, 9, 4,195,253, 95,119,180,190, 72, - 68, 11,145, 11,104,120,140,246,126, 11,220,140, 14,186,216,100,193, 18, 67,161, - 21,115, 26, 4,200, 12,237,179, 8,239,188, 66,102,211,245,124,131,181,237,250, - 72,213, 26,148,161, 68,220, 94,211,111,169,144, 65,173,100,194,135, 18, 40, 1, - 92,153,224,168, 36,207,141,123, 64,253, 80,176,197, 37, 26, 73, 63, 33, 76, 89, -196,213,208,166,169, 80,153, 9,231, 81,175,190, 99, 60,180,152,106,101,117, 2, +// ../Source/Template/GB_add_full_33.c: +uint8_t GB_JITpackage_122 [467] = { + 40,181, 47,253, 96,128, 4, 77, 14, 0,118, 24, 77, 33, 0,181,142, 1,106,162, +134, 21, 44,222,168, 50, 88,220,147, 1, 16,141, 12, 90,165,150,168,230, 40, 48, + 58,204,210,255,187, 63,188, 66, 0, 69, 0, 65, 0,191,246, 21,213,198, 7,242, +164,111, 20,193,123,249,181,201,200,252,114,213,143,132,221,186,230,205,142, 55, +180, 81,185,130,227,245,124,223,203, 95,183,186,126,190, 11,235,181, 43,166, 64, + 50,180, 63,113, 56, 80,140, 67, 30,237,186, 74,231,227, 89, 70, 97, 89, 22,249, + 25, 20, 95,193, 79,213, 25,160,232,196,111,180,146,255, 63, 69,153, 40,194,192, +128,217,143,171, 89, 62,161,237,245,238, 24,218, 14,130,217, 29, 90,238, 70, 48, + 77,163, 50,232,172, 72,219,109, 45,223,227,247,185,150, 99, 44,127, 29, 12, 4, + 3,134, 40, 16, 12,183,184, 42,146, 18,153, 23,200, 51,110,129,174, 91, 93,123, + 39,115,238,145,213,189,123,202, 36, 16,148, 66,238,139,231, 43, 78, 56,227,185, +250, 79, 89,220, 29,235,184, 43,139, 67,157,253,184,125, 43,164, 90,181,187,106, +245, 55, 82, 48, 20, 94,139,222,177,197,184,234, 26, 20,117,242,110, 23,106, 84, + 28,233,164,155, 10, 69,251,212, 21, 87,110,211,250,101, 92, 39, 20,200, 4,179, + 65,188, 11,176, 27,219, 83, 22, 90, 44,122,224, 89,171, 94,161, 56, 54, 72,198, + 49,167,167,250, 84,220, 18,247,165,242, 87,254, 53,146,191, 64,183, 86,151,180, + 17, 60, 32, 80,134,144,152,153, 7, 73, 0,168,230,200,129, 53, 88, 5, 39,184, +126,250,130,105,101,162, 64, 2,105, 92, 0,192, 12,248,119, 43,113,193, 28, 53, +248,158, 8,110, 0, 70, 89,213, 96, 14,139, 85, 64, 40,180,202,193,231, 5,115, + 7,156,113,147, 21, 39,144,163,125,251,197, 92,137,177, 23,172, 13,216,122, 64, +134,149,121,249,157, 93, 44,112,226, 0, 99,244,217, 47,152,195,175, 11,226,134, + 54, 3,161, 60,134, 6,235, 99,161,186, 13,126, 86,117,107, 63, 56, 26,231, 78, +180, 24, 84, 9, 70, 57, 3,201, 1, 53,131, 38,230,153,233, 54,199, 87,203, 27, + 65, 5,176,181, 40, 90,220, +} ; +// ../Source/Template/GB_add_full_34.c: +uint8_t GB_JITpackage_123 [793] = { + 40,181, 47,253, 96,255, 7,125, 24, 0, 22,228,109, 40,224,176, 88, 7,248,157, +220,153,122,131,216, 76, 64, 6, 11,134, 41,119,105, 46,152,247,217,218, 79, 62, +167,183,121,246,197,147, 34,101, 48,195, 48,140, 23, 2,101, 0, 99, 0, 97, 0, +141,107, 95,147,225, 49,145,128, 25,144,221,185,141,251,225, 56,103, 24,243,225, +148,190,187, 2, 73, 68,242, 64, 32,136, 72, 30, 93,208, 29,158,157,152,240,129, +119,141, 44,111,155, 9,113,151,121, 12, 85,102,227,173, 76, 50,157, 39, 39,243, +220,182, 26, 25,164,241,141, 22, 31,207,191,187,247,141,175, 46,107,188,245,169, +146, 30,101,253, 19,131, 2, 72, 41, 7,131, 82, 70, 88, 85, 14,129, 60, 15, 8, + 36,145,198, 77,232,214, 57, 28, 46, 22,135, 8,133,140, 69, 66, 1,102, 44,216, +228,144,164,141,122,157,114,251,233,145, 83,183,208,255, 39,186,102,142, 25, 67, + 77, 57,178,179, 11, 63,170,208,130,176,140,125,179, 12, 55,156,138,157, 54,165, +241, 70,123,187,217, 30, 55, 24,241, 90,128,223,237,147,220,178,220, 13,255,255, +231,225,120, 34, 3,146, 71,103, 87,180,239,147,219, 19,155,185,182,180, 60, 2, + 26,242, 77,151, 8,220,152,177,197, 26,142,185, 74,145, 78,199,168, 19,106, 13, +223,169,247, 53, 41,126, 48,227, 59, 49, 77,224, 25, 26, 28,228, 58,159,113,221, +174, 7,155,178, 90,112,203,176,130, 20,152,139,245,170, 49,237, 14, 72,109,218, +121,192,237,221,141, 52, 94, 24, 90,208, 49,151,233,209,134, 39,180,119, 25,213, +157,102, 94, 64,175, 96,194,187, 48, 84,151, 30, 51, 75,227,169, 7,207,211,209, +161,185,155,127, 47,206, 75,212,159,173,248,156,210,163, 76, 63,245,103,239,150, +175,238, 60,203,154,139, 52,221,137, 55, 79, 23,184,198,178, 4,146,197,184, 63, +206, 57, 39,107,223,193,103, 49, 16, 66,161,162,221,101, 15,250,131, 11, 85,229, +212, 53,120,102, 57,210,220, 4,122,199,182,231,206,242,101,157, 24,229,218,167, +127,186, 69, 5, 69, 78, 2,119,205, 77,172, 1,128,146,168,145, 45, 67, 84, 34, + 34, 82, 80,144, 36,149,198, 48,132, 24,164,174,204, 3,146,128,128,146,101, 36, + 68, 20, 49, 4, 82,129, 76, 77, 82, 82, 30, 37, 69, 15,153, 6, 92,130, 0,143, +192,108,143, 45,156, 82,133,166,196,121,166,132, 6,202,199,166,221,147,237, 11, +181, 2, 5,200,253,154, 7, 88, 11, 32, 32, 99, 56, 54, 42, 43, 85,159, 96,157, +194,122,138,231, 21, 52,171,128,124, 32,180,137,120,253,151,149, 30, 39, 89, 76, + 61, 43,232, 5, 18, 77, 34,165,164,106, 64,226,221, 49, 33, 67, 8,118,164, 9, + 33, 20, 39, 49, 25,170,252, 9,181,199,108, 31, 5,182, 75,210,107, 54,108,110, + 37, 11,185,243,224,146,187,156,236, 65,211,199, 68,106,214, 2,187, 41, 63, 9, + 78, 18, 12,248, 37,235,146, 60, 33,221, 16,238,240,124, 70,233,182,164,220,239, +119,154,206,147, 65,104,253, 97,191,186, 3, 73,100,200,164, 16, 11,134,196,123, +194,243,116,144,212, 64, 34, 80, 17,142,143, 60, 60,232,147,135, 28,101,242,255, + 3,164, 76,130, 99, 22,106, 43,213, 44, 9,234, 26, 62, 12,213,215,228,197, 19, +126,217, 49,201,132,220,140,146, 44,238, 78, 73,201,168,216,232,224, 45,150, 23, +116,207,204,164,209, 73,246,242, 89,210,248,130,114, 79,109, 64,233, 91,228, 12, + 19, 58,140,166, 80,249,132,118, 40,243, 81,249,171,192,123, 73,233,148, 69,107, + 26,218, 96, 40, 84, 71,131, 77,164, 92,130,228,126, 48, 7,205,251,131,105, 43, + 53,157, 34,111,240,137,152, 2,244, 85, 74,187, 77, } ; -// ../Source/Template/GB_select_positional_phase1_template.c: -uint8_t GB_JITpackage_135 [1796] = { - 40,181, 47,253, 96,176, 36,213, 55, 0, 70,187,176, 40,176, 86,117, 14, 20, 56, -163, 9,104, 20, 95, 66,172, 50,227,177, 72,160, 20,174, 11,111,178,224,100,179, -230, 36, 87, 51,165,119,252,160,255,160,243, 83,130, 11,161, 0,164, 0,164, 0, - 89,215,107,185, 14,252, 98, 7, 8, 87,246,175,149, 51, 19,201,206,218,179,183, -183,175,201,120,248,203,162,255,127,165,114, 82,201, 96, 10, 40,230,178, 72,225, - 55,149,123,235, 43, 89,179, 40,182,146,179,246, 80, 25, 15, 31,140,198, 34,149, - 45,131,110, 47, 39,106,208, 61, 15,126, 50, 40,200, 20, 80, 9,154, 76,193, 45, -153,244,201,182, 72,124, 56, 6,190,132,187,115,212,161, 79, 23,244, 52,112, 52, -214,136, 13,219, 26,233,197,183,191,171, 98,233,228,199,221, 9, 74,149,195,235, -220,110,185,235,149,252, 43,191,153,125,195, 55,122,116,196, 23,211,176,141, 28, -197,188, 40,103,223,182,147, 98, 55, 99,143, 45,214, 16,113, 2,130, 10, 69, 64, - 16,149,187,216,232,147, 30,123, 94,172,145,158,142,230,227, 72, 20, 43, 13,232, -234,188, 25,139,156,203, 34, 95,246,185,172, 70,182, 47,169, 81,246,199, 55, 31, - 72, 17,178, 26, 0, 48, 58,229, 71,162, 53, 22, 1,173,135,170, 58,107, 51,163, - 83, 2,117, 62, 26, 18, 71, 65,121,231, 2,193,207,133, 93, 22,231, 22, 11,148, -254,208,241, 52, 80, 92, 76, 0, 72, 15,129, 58,215, 5, 45, 3,222,204,126,167, -252,253, 62, 62, 13,140,204,186,109,243,147, 40,182,246,233,235,122, 63,121, 93, -175,116, 58, 95,101, 44, 34, 37,123, 34,177,155,227, 32, 93,160, 40,228,188,224, - 3, 53, 94, 75,109,103,227,149, 24,252, 37,122,156, 99, 29, 99,240,213, 25, 98, -215,214,222,186,223,150,231,115,105,234,161,165,251,213,133,115,254,234,213,110, -187,162, 92,231,198, 31, 11, 41,253,202,119,139,231,209,204, 46,219,243,226, 79, - 20,222, 91,107, 18,164,251,196, 73,128, 64, 64, 88,124,250,116, 49,121, 44, 80, -136,109, 40,162,227,241, 56,160,169, 87,183, 28,100, 17,114,232,120, 58, 23,150, -209,121,168,176, 48, 44, 64,210, 53,150,189,177,246,173, 3,168, 79,109,117, 75, -240, 37,204,221,204, 23,164,111,156,179,245,226,246,234,154,252,230,252,160,162, -137, 4,201,170,107, 46,191, 38,121,234, 62, 81, 40, 29, 98,159, 99,144, 90,186, -105, 35, 93, 46, 10,239,206,121,230,213, 59, 73, 99,173, 63,145,196,222,167, 49, -151,217, 91, 36, 6, 37,171, 69, 14,149,139,141, 53,249, 5, 68, 47,229,178,185, -230, 12,167, 23, 16,176,109,229,200,252,141,220,167,140,244, 12,232,113, 5, 15, -205, 69,122,133, 69, 97, 97, 10, 30, 28,213,141,239,234, 28, 57, 79,109,225, 10, - 90,223, 95,217, 21, 76,157,178, 59,140, 58, 92, 36,251,102, 95,189, 86,106, 92, -251, 11,169, 30, 26, 10,131,201,112,216,232, 97, 96,156,239, 71, 83, 28, 60, 58, -142,211,141,219, 93,239,179, 92, 69,211,171, 96, 46,173,113,170, 46,109,111,214, -143, 41,185,116,196,156,107, 63, 16,234,159, 44,153, 87, 11, 18, 5,192, 17,201, -150, 29, 79,153, 44,219,152,157,187,243, 99,100,202,203,133,106, 46,211,214,217, -188,167,167,204,221,116, 9, 7, 16,236, 92,152, 6, 8, 86, 88, 13, 88, 40,129, -198,168,193,161, 66,102, 68, 68, 68, 68, 36, 73,146, 12, 7, 65, 12, 66, 16,115, - 88, 66,106, 7, 50,136, 28,143, 66, 12,138, 80, 12, 2,209, 16, 65,132, 16, 98, - 4, 68, 96, 4,226,136,140, 80, 32, 97,130,106, 14,136, 98, 60,242, 43, 5, 15, - 63,243,240,209,209,252,192,130,185,241,127,131,219,178, 43, 37,243, 19, 44, 49, - 82, 38, 64,166, 97,111,211,207,125, 64,191,225,103, 99,233,193,154,201,129,232, -107, 14,186, 54,195, 4,161, 19,205,234, 47,249,166,215,139,141,197,224, 49, 40, -181, 48, 55,216, 62, 40,199, 56,216, 5,189,212,130,208,135,202,122, 23,150,249, - 92, 13,101,213,189, 1, 37,127,161, 48,157, 26, 54,197,207, 11,247,243,245, 42, -245,241,230,176,193,246,219,207, 76,114, 68,118, 48,161, 7,184,196, 29, 40, 34, -249,126, 18, 94,173, 89, 51,154,118, 97, 45, 0,250, 35,234, 12,160,109,148,225, -244,120,105, 0, 88, 10,205,254, 2,140, 85, 38, 70,104,247, 6,211,240,147,138, -183,100,211, 37, 63,182,110,147, 32,212,156,196, 30,142, 99,126,188,201,150,217, -197,236, 72, 53,115,121,207, 54,212,163,194,181,131,192, 11, 12, 95, 5,103,224, -160, 85, 64,244,208, 49,188, 98,212, 12, 99, 68,180,138, 0,114,141,169,199,186, -219,146, 62,182, 47, 59, 42,103,116,198, 8, 68, 48,237, 43, 48,193, 55,126,120, -197, 16,104,153,177, 19, 88,171, 9,165,190,220, 48,161,195,146,157,118, 41,121, - 75, 84, 28, 26, 8,168,218,236, 82,254,101,192, 15, 62, 92,156,141, 64,149,142, -124,237, 91,164,177, 30,164, 92,141,236,252, 71, 68, 67,129,101,150,202, 68,103, -243,195,206,160,190,188, 52, 78,104,233, 64, 68,204,213,142,106,123,129,156, 57, -205, 57,148, 81, 7,214, 51, 88,217,125,123,114,173, 13, 85, 35,116,239,180, 57, - 15,243,217, 80,255, 97, 23,179, 81,183, 56,132,235, 71,199,123,225,106,215, 11, -206, 19, 71,169, 42,116, 81, 67,237,148,204, 38,234, 15, 39, 68,198,126,161,194, -214,206,210, 4,220,225,113,185, 52,129,167,173,121, 34, 71, 63, 85, 88,201,237, -179,196, 83, 42, 35,222,166, 10,198,227, 56,240, 13,234,129, 1,219, 11, 31, 27, - 27,194,188,101,200, 98, 63, 73, 95,128, 29, 46, 65,177,125,236, 13, 1,180,121, - 89, 31, 61, 90, 24,252, 22,147, 55, 25, 74, 46, 82,111,189,242,126,221,197,182, -237,210,196,183,152, 69,213, 28, 34, 36,205, 56,233, 17, 45,132,107,201, 33, 44, -109,248,194,202,132,105,151,157,104,199,239,162,223,216,193,171, 42, 95,116, 34, - 64, 20,153,130,132,192,228,132, 13,126,144,244, 21,174, 27,177,169, 93, 51, 27, - 87,120, 12,109,148, 77,161,181,119, 74, 12, 87,239,117,121,169,216, 10,224,144, -167, 60,220,103,169, 62, 17, 76, 90,168, 58,237,231, 14,100,183, 8, 54,232,195, - 49, 39,123,169,197, 34,186, 28,234, 8,212, 60,157,172,151,177,116, 59,110,243, -118,142,185, 65,252, 14,248,214, 67, 11, 84, 83, 20, 99,163,226, 92,238, 96,128, -171, 11,180,112,200, 75,193, 65,133,215,165,240, 87, 28, 38,120, 41,216,236, 77, -186, 88,130,254, 79, 72, 71,104, 11,227,205,247,235, 77,128, 66, 33,193,214, 75, -137,124,199,225, 96,193,122,139, 84, 50, 50,184,157, 44, 72, 21, 82, 37,146, 12, - 50,221,229,156,246,121, 17,128,231,206,200,219, 40,196, 13,239,235, 22,145, 72, - 61, 70,218,155, 92, 40,176, 69, 33, 64,125,231, 40, 67, 52,194, 10, 9,184, 68, -107, 7,248, 16,103, 10,255, 43,211,124, 69, 95,247, 99, 72, 93, 46, 10,184,181, -167,203, 30,206,108,141,197, 98,120, 15,248, 32, 92, 22,251,134,157,206, 68, 63, -142,151,146,112,198,183, 69, 38,231,229, 59, 77,105,111,143,112, 95,181,188,242, - 30,176,161,146, 11,150, 77,242,201,112, 71,143,233,143,175,204,117,200, 97,192, - 17, 5,182,206,167, 96,129,213, 80, 48,130,119,175, 23, 24,250,211,202, 71,255, - 64,217,182, 69, 80,129,148,162, 70, 67,143, 40,150,114, 12,102,156, 45,170, 80, - 2, 41,213,176,127,174, 14,190, 38, 77,124,227,171,245,177,209, 45, 91,124,125, - 91,212,174,203, 23,170,250,222,145, 26, 11,172,157,199, 67, 79,193,255,233,171, -232,253,171,113,122, 58, 19,196,177,222, 57,201,175, 16,116, 25,187,119,165,191, - 86, 82,196,222, 18, 9,134, 92,150, 94, 76,202,173,159,105, 17,196,239,164,135, -216, 68,251, 42,116,212,116, 45,146,127,228,196,101,142, 50, 17, 98, 44,185,246, - 56,242,106, 38, 77,216, 60, 69,241,172,113, 90,207,200,136, 74,249,254,211, 18, - 25, 97,140,155,117,227,109, 23, 25,110,112,121,229,192,113, 42, 52, 96,202,114, - 15,217,229,136,237, 78,134, 41,236,243,216,196, 32,148, 34, 19,219,166,211,249, - 98,111,102, 28, 9, 66, 64,124,168, 67,240,152, 40, 21,146, 72,206, 93, 31, 52, - 79, 63, 51,133, 69,102,206, 67,130,187,107, 53, 74, 29,107, 19, +// ../Source/Template/GB_add_full_template.c: +uint8_t GB_JITpackage_124 [667] = { + 40,181, 47,253, 96,161, 11,141, 20, 0, 22, 93, 89, 32,224, 88,231,136, 23, 28, + 41, 58, 98,173, 45,214,108, 48,104, 98, 82,102,252, 48,229,250,192,247, 12, 74, + 25,204, 48, 8,230,189, 81, 0, 78, 0, 77, 0,109, 26, 27,183,231, 56,123, 35, +235,249,189,243,150, 34,113, 72, 24, 26,136, 67,226, 4,110,112, 11, 91, 19,149, +252,154, 71,121, 57,252,236,231,150, 54, 51,153, 39,210,177,226,104, 60, 82, 81, +235,108, 75,154, 60,182,143,252,145, 21, 38, 36,242, 59, 58,211, 43,126,157,183, +123, 75,221, 86, 43,221,178,202, 49, 76, 26, 48, 44, 53,244,114,127,111,220, 94, +126, 23,254, 34,136,244,203, 86,244, 49,252,216, 34,202,179,240, 91,244,122, 75, +225,233,145, 91,141,237,105,236,193, 51,216,184, 71,241, 57, 4, 53, 39, 97,250, +189,189,207,127,201,195,149, 48,180,199, 81,113,222, 49,182,237,108, 6,187, 90, + 12,141,193,230,108,198, 16,146,116,174, 26,158,137,166,205,199,197,231,109,193, +200,160, 77, 73,137,100,110, 28,205,210,117, 5, 59, 27,144,242, 10,235,195,252, + 17,104, 61,234,189, 49,245,196, 99,235,229, 91, 21,164, 15,177,237, 44, 87,246, +194,231, 33,143, 28,195,254, 95,202,235,210,207,102, 49, 60,234, 94,202,217, 28, +102,241, 67, 97,250, 30,233,113, 82,118,182,130, 29,144, 43, 57,255, 11, 4,157, + 93, 40,230,204, 26,119,182,130,137,198,136,206,212,124, 44, 25,182,207,254,152, +183, 87, 0,238, 58, 40, 0,239, 90,186, 28,120,111,102,205, 91, 17, 66, 38, 16, +156,178,205,193, 83,153,201,198, 51,193,108, 31,203, 37,187, 74,181, 97,187, 77, + 66, 38, 3,218, 28, 2,185,102,240, 79,128,133,160,241,173, 35, 50, 34, 34, 41, + 44, 40, 72,105, 56,112, 70,132,134,174, 27,240,201,202, 13,133,191,244, 56, 61, + 0, 77,107,154,171,193, 38, 32, 77,251, 7,187,210,238, 93, 49,200,116, 26,246, +207,225,158, 51, 44,186, 65,147,136,196,135, 89, 1, 14,146,176, 7,205,113,162, + 33,254,247,126,140, 13,189,153, 45,134,243,178,253,172, 12,140,139, 64,229,200, + 30,188, 57,115,199,136, 33, 22,184, 3,156, 82,226,118, 88, 64,116, 24,155, 15, + 70, 59,118, 54, 0,158,208, 41,183, 5,143, 31,223,221,193,113,255, 16, 51, 54, +249, 70,140,107,104, 58,164,105,142, 57, 83,226, 33, 36, 2,114, 33,236, 76,201, +158,100, 54, 27, 5, 36, 76, 56,100,238,181,166,130, 22, 11,199,176,125,175, 26, +203,224,149, 17,241, 16,217,116,129,154, 1,126, 48,112, 68, 64, 35,178,220,108, + 22, 42,219, 38, 84,123,146,236, 6,164, 50,217,181, 99,234,116,172,245, 5, 8, + 79,210,201,168, 44,108,190,147, 72,148, 29,156,236,210,225,160,112, 44,104, 32, +230, 83,232, 98, 27,203,234,197,143,240,225,174,225, 60,203,214,167,109,129, 13, + 90,152, 54, 12,155,198, 64,123, 92,143, 96, 20,104,234, 78,129,166,115,203, 45, + 84, 64, 75,181, 10, 19, 29,178,176, 93,147,166,206,207, 76,119, 64,173,240,255, +184,252,185,254,138, 2, 61, } ; -// ../Source/Template/GB_split_bitmap_template.c: -uint8_t GB_JITpackage_136 [585] = { - 40,181, 47,253, 96, 81, 5,253, 17, 0,198,155, 87, 32,224, 26, 29, 3,212,159, - 96, 2,110,167,154,216, 43,110, 92,212,176, 94, 82,243, 32,143,234,249, 7, 95, -141, 24, 35, 69, 6,135, 78, 0, 77, 0, 79, 0,162,252, 32,129, 48, 32, 58,198, -193,128,248,246,105, 31,104,203,162,148, 19,228, 93,225, 86,141, 22,244,193, 71, -106, 38, 33,166,217,226,168, 58, 83,252,169,219,174, 62, 89, 21,237, 86,237,107, -223,178,121,211,241,167,191,163,110, 42,226,177,110, 15,211,113, 91,147,183,173, -136,181, 55,177,188, 80,200,186, 66, 33,146, 78, 62,242, 91, 69, 22,253,246, 20, -139,125,173,166,178,241, 84, 50, 30,232,130, 57, 85,240,100, 1,242, 53,220, 7, - 47,253,252,174,168,255,127,150,193, 50, 3, 1,209,213,240,163, 88,222,145,171, - 61,217,125, 43,120,233,170,190,245,179,154, 46, 68,233, 16,192,202,202, 85, 87, -207,245, 14, 81,214,115, 49,215,155,154, 6,105,205,225,246,198,213,125, 86,157, - 46, 86, 81,164,153,226,227, 81,117, 58,162,104,198,134, 71, 62,241,156,115,182, - 54,173,210, 17,129, 60, 9,186,104, 58, 31,143,243,185,220,147, 5,111, 5,204, -105, 50,201,239,207,230,173,107, 22, 52,182,190,170,239,187, 32,242, 22, 29, 95, -119,180,224,252, 30, 1,153, 92, 1, 34,215, 34,101,221, 44,198,113,155,196, 31, -136, 58,156, 86,107, 30,182,105, 63,149,100,105,226,209, 77,147, 94,112, 41, 45, - 78,177,236,185,239, 76,183,182,244,145, 75, 91, 72, 61, 2,145, 91, 24,199, 65, - 38,214, 54, 7,167, 93,149,221, 95, 38,125,251,236,166, 91,107, 85, 92,129, 53, -252,244,183,100,160, 33, 69,199, 8, 13, 73, 10, 10, 10,146, 74,107,112, 68,166, -204,186, 1,211,154, 92, 75,100, 32,145,252,177,148,189, 4,166,225, 45,143, 64, - 72, 20, 6, 8, 6,175,205,168, 5, 39, 64, 52,105,217, 23,136, 27, 62,163,202, -159, 37,179, 81,198, 22,100,179, 52,130, 41,154, 28,145,101, 96,246,131,166,150, - 76, 69, 25, 95,150, 35,180,172, 60, 76,100,250,140, 75,244,186,234,249,160, 45, - 1, 15,106,168,206,139,124,173, 29,244, 97, 45,173, 70, 58, 96, 54,248,216,176, - 80,247,179,106,133, 32, 20,242,190, 32,143,193,252, 28, 69, 9,137,110, 4,131, - 57,192,218,179, 82, 13,108, 62, 70,181,131,173,173,253, 89,213, 95,104,157, 5, -240, 41, 87,105,177,227, 24, 13, 0,220,225,200, 38, 35,201,162,107,129,217, 85, -231, 22,238,186,253,165,188,221, 95,100, 93, 45,244,195,133,150,198,137,169,100, -147, 28, 81,115,208,236,168,204,180,110,131,149, 92, 83, 84,226, 32,242,208, 81, -111, 95,209, 59, 6, +// ../Source/Template/GB_add_sparse_M_bitmap.c: +uint8_t GB_JITpackage_125 [1607] = { + 40,181, 47,253, 96, 93, 54,237, 49, 0,214,250,170, 40,176, 84, 85, 29,228, 88, +159,138, 65, 82,179, 28,203, 38,133,217,193, 66, 60, 66,189,254,137, 20, 5,120, +173,109, 3,134,230, 39,252, 83,250,211,228,236,120, 6,164, 0,149, 0,159, 0, + 37, 81,100,225,178,197,222, 87, 62, 66, 42,239,151,179,239,102,252, 81, 9,186, + 86,229,169,108,235,175,189,214,185,118,215,212,235,108,246,198, 30,146,221,115, +231,183,224,121, 43,194, 88, 10, 42,205,101,210,131,207,220,158,219,204,181,181, + 78,165,113,237,108, 78, 84, 54, 30, 44, 44, 90,131,110,227,190, 56,206, 28,200, +188, 56,165,240,148, 65, 1,166,160,162, 64,128, 41, 56, 37,147, 78,225, 9,146, + 15,183,192,135,184,108,187,137,113,202, 3, 39, 34,231,201, 11,145,241,116,158, +159, 39,186,117,234,182, 23,226, 46,175, 78,197, 9,110, 28,172, 6,202,135,202, + 72,213, 51,158,236,242,196, 46,235,106,124,165,135, 47, 77,147, 87,132,248,229, + 18, 85, 46,151,159,146,245,220, 32,207, 72,116,172, 11,131, 3, 17, 89,242,231, +229,207,190,218, 87,223,236,155,100, 98,220,217,167,245,125,158,221,205,204,101, + 87, 54,190,188,121,164,111,235,177,166,201,247,109, 14,164,206, 60, 45,245, 70, + 56,191,165,251,178,236,218, 58,127, 59, 75,122,173, 39,245, 60,105, 49,149,207, +248,235,222, 92,126,109, 80,111,243, 90,227,239,141, 29,135,164, 8,149,215,232, +103, 57, 28,130,101,247, 80,149,185,246,204,230,182,245, 67,183, 65,199,243,154, +229,114,119,199,147,195, 0,248,255,248,233,240,155,191, 2,176,143, 83,245,219, + 92,158,253,107,183, 83,148,126,219,255, 71,209, 3,148, 15,239,211,161,215,241, +249,233,115,154,222,112,239,154, 99,190,185,244,140, 37,141, 51,227, 59,183, 11, + 78,236,155,205, 73,234, 71, 94,158, 65, 32,176, 94,178,213,166,160, 15,252,243, + 77, 20,227, 77, 76,142,231, 5, 47, 56, 30, 15,180, 80,176,107, 47,141,107,107, + 82,122,174,141,251,122,199, 61,111,174,125, 74,229, 27, 36,185,119,155, 61,190, + 54,103, 13,162,242,211, 38,104,106,117, 62,127, 24,165, 1,160, 92,155,230,148, +238,212, 8,134, 7, 86,150,128,192, 41,150,119, 10,179,164, 91, 87,220,252, 51, +187, 83,107, 49,205,231,167,231, 43, 51,190, 54,183,188,231,235, 32, 33,215, 25, +121,156, 50,165,174,243, 91,107,245, 11, 16, 9, 81,116, 18, 99,140, 16, 66,152, +109,189, 38,111, 77, 31,127,237,225, 73,140, 49,198, 24, 29, 14, 61, 8, 33,140, + 80,122,211,201,137, 52,200,237,238, 25, 76, 1,140, 12, 48,206, 72,240,110, 44, +179,208, 0, 97,110,153, 27,131, 16,194,248,140, 2,118, 82, 93, 54, 95,241,226, +176,168,168, 30, 79,174,164, 50,195, 23, 69, 69,135, 34, 67,114, 30,149, 84,252, +184, 26, 30, 67,217,235,250,120, 38, 96,162,232,100,154, 42,111,155, 90,165,124, + 78,205, 83, 85, 37,221,162,130,227,233,104,112, 98,140,152,165, 78,141,192, 83, +159, 41,165,195,235, 1, 86, 76, 84,120, 58, 85,213,152,182,230,211,148,157,128, +227,129, 17, 22,215,195, 3, 12,136,159,224, 55,175, 46, 61,198,129,119,168,113, +185, 50, 36, 34, 34, 35, 34, 73, 82,144, 52, 6,145, 12, 65,138, 49,232, 32, 44, + 15,130,112, 68,142, 97, 12, 67, 33, 8, 69, 64, 16, 33,132, 16, 43, 32, 2, 34, + 64, 2, 34, 32,132, 48, 33,137,148, 92, 29, 33,136, 88, 98, 60,251,199,249,188, + 14, 44,133, 76,245, 61, 65, 32,199,201,187, 42,124, 83, 78,136,167,199, 5, 83, + 90, 68,248,210, 84,120,213,182,231,187, 79,252,233,143, 79,203, 29,213,233,143, +202,160,220, 7,222,244,199, 39,154,254,155,251,113, 85,251, 66, 85, 57,134,138, + 66, 72, 67,155,158, 43, 53,164, 90, 82,233,157,132,248, 44,129,157, 96,246,231, +153,100,216, 18, 95,238,252,116, 69, 25, 89,156,111,156, 85, 73,120,242,134, 4, +103,124, 67,233, 99, 8,162,235,202,206,189,226,188,127,135, 82, 17,186, 1, 71, +193,243,255, 43,131,233, 82,240,243, 5, 69, 57,138,244, 27,228, 39, 66,136, 10, + 50,235,112, 8,208,201,220,217,156, 69,159,209,229, 71, 87, 91, 72, 6, 20,105, +193,225,208, 79, 20, 87,198, 2, 33, 10,104,201,184, 89, 44,198,211,163,123, 21, +110,101, 39,249,211,200, 87,200,171,189,120, 94, 34,120,222, 0,250, 49,239,164, +154,106, 58, 36, 0, 4, 59,113,170,169,209,208, 5, 67,252,251, 11,103, 0,131, +179, 51,143,240,135, 18,254, 15, 1,157, 54,108,171,154,116, 1, 95, 27, 68, 7, + 43,206, 81, 24, 10, 60, 46,202, 65, 88,220, 27,236,100,206, 21,113,158,220, 91, +157,143,192,107,231,230,205,125, 19, 40,111,166,255,107, 58,215,174,161,233,250, +242,222,236, 40, 27,225,114, 51, 75,131,205, 43, 79,138,246, 1,164, 80, 14,242, +210,115,120,224,173, 8, 73,221,236, 13,177, 51,118,192,192,204, 53, 96, 95,241, + 14,251, 55, 85,127, 0, 72, 11, 79, 98,168,184, 12,118,227, 27,126, 47, 94,214, +138,160, 30,194,136,250,169, 17,169, 4, 63, 58, 23, 91, 93,114,226,123, 80, 51, +173,152,250, 91, 64,207,248, 38, 74, 55,249,207,229,105, 46, 32, 72,132, 28, 13, +172, 0, 18,208,207, 88,136, 51,124, 91, 29,199, 14, 8,155, 91,234,252,234, 99, +216,253, 89, 39, 8, 8,108, 90, 46, 4, 59, 23,212,206, 45, 78, 9, 16, 18,117, +106, 33,156, 37,141,120,242, 40,137,160,213,166,175,119,188,210,181,164, 81, 63, + 96, 76,135,221,213,168, 35,226,198, 2,171, 41,242, 61,150, 92, 82, 79,246,120, + 50,141,143, 23,198,196, 52, 64,245, 17, 46,133,162,142,106,138, 14, 54,102,120, + 13, 79,136,102,163, 87, 29, 4,124,227,133, 30,138,190,225, 13, 22, 41,114,182, + 90,249,134, 37, 18,254,189, 40, 64, 58, 53,216,174,225,214, 24, 73, 17, 0, 46, + 35, 28,200, 19,154, 43, 72, 33, 10,254,100,152, 48, 19, 45, 95,188,109, 4,220, +236, 46, 69,162, 26, 10,207,180, 64,152,216,167, 2, 50, 19,138,134,192,154,117, + 57,207, 51,199,176, 17, 10,215, 42, 91, 0, 42,156, 85,251,135, 16,248,216,195, +148,152, 36,192, 54,105, 41, 16, 53,209, 78,243,222, 83,155,220,135,127,220, 16, +238,183, 83, 54,228,164,126,170,154,134,244, 76,180,122, 86,166,176, 80,144, 5, +199,235,172,126, 32,218,145,252,135,195, 46,208,128, 69,176,186,116,225,129,222, + 77, 13, 76,109, 8, 38, 52, 2, 11,199,103,147, 17,149, 72,235,171, 91, 43,114, + 90,167,212, 30,176,133,105,168,187, 95,208,212, 11,148, 6,210, 46,230,195,158, +228,236,186,226,231,110, 64,225,145, 13, 27, 4, 55,142, 57,216,162, 2,213, 82, + 0,128, 91,144,226, 82,200,243, 55,233, 32,209, 9,168, 23,226, 27,249,231, 52, + 97, 79,175,249, 33,128,195, 5, 7,125,202,138, 47, 24,163,194,179, 29,144, 31, + 49, 35,244,172, 41,216,185,172, 85, 54, 97, 31, 19, 52, 83, 66, 12, 6,181,133, +124,154, 59, 57,154, 59, 73, 46,152, 53,150, 19,236,108,105, 94,132,193, 71,145, +204,187,199, 61,155, 97, 99,176,202, 20,212,128,242, 62, 31,177, 40, 85,211, 7, + 62, 34, 0,107,141, 94,198,108,183,133, 50,174,248,236,113,181,203, 26,149, 75, +108,206,166, 89,249,131,169, 95,209,120,209, 87, 61, 68,141, 44,219, 60,163, 43, +193,188,127, 95,237, 43, 30, } ; -// ../Source/Template/GB_split_full_template.c: -uint8_t GB_JITpackage_137 [538] = { - 40,181, 47,253, 96,101, 4,133, 16, 0,246,156, 89, 33,208, 90,231, 64, 7, 28, - 75, 96,220,125, 44,237,204,237, 32, 4, 97,104,189, 17,129,135, 39,245,162,116, - 25,165, 30,120,129, 82, 2, 81, 0, 76, 0, 82, 0, 57, 52,213,207, 69,113,222, -192, 88, 36, 22,135,135, 34,177,248,192,203,110,192, 53, 69, 43, 71,204,179,194, - 76,142, 53,116, 3,104,110, 40,225,165,229, 5,210,184,164, 23,212,185,162, 64, - 88,139, 53,147,217,214,175,106,153,233,248,211, 31,210,153,138,119,236,220,137, - 34, 10,236,114, 21, 47,238, 40,151,107, 26,118,208,180,253,129, 53, 48,255, 89, -122,238,185, 77,255,127, 12,115, 97, 24,130,196,245, 93,210,227,246, 58,204,183, - 29,170,254, 53, 70, 61,147,246,184,254, 35,195,220,227,113, 13, 67, 88, 2,177, - 56,116,232,209, 59, 15, 41,187,130, 53,219,254, 48,135,198,182,189,186, 57,136, - 42, 30,196,215,169,178,113,127,142, 3, 36,120,177, 69,145,150,244,254,142,228, -233,104,162,229,229,238,128,196, 21,144, 61,244,177,128, 64,147,227, 56,110, 53, -200,190,125, 53,159,113,151,132, 91, 60,163, 80, 55, 51,182,164, 7,214,207,118, -192, 59, 97,123,203,142,245,227,188,200,228, 48,191,221,182,152,162,207, 93,195, -145,109,221, 88, 56, 31,139,166, 11, 97, 50, 96, 24, 6,246,103, 81, 1, 12,123, - 97,175,193,188, 55,140, 60,157,210,156,223, 94,226, 46, 73,211,232, 9,159,179, -222, 83,170,190,240, 92,210,140, 43,253,246, 89,181, 83, 68,176,189,222, 85, 40, - 72, 34, 79,124, 59,119,179,129, 87, 51,205, 56,107, 17,245,117,232,225, 15,108, -199,101,248,163, 93,134,185, 27, 81,246,101, 72, 32,128, 2,153, 42, 43, 15,242, -204, 64,222, 96,152,219,187, 83, 15,208, 14, 40, 13, 8, 9,220, 7,135,107,128, -225,181, 14, 26,102, 49,147,152,206,124, 5,135,233,101, 93, 7, 70, 52, 37,136, -126,159,214, 65, 32, 3,189, 97,115,136,126,199, 70,247,130, 91, 71, 21, 32,209, - 16,110,100,130, 58,209,185, 31, 86, 11,144, 39,112,220, 71, 97, 17, 34,188,125, - 66, 80,194,161, 62,212, 23,235, 70,124, 28,207,209,215, 35, 29,195, 18,227,138, -178,100, 7, 22,148,141,245,236,178,112, 39,246, 23,120,117, 7,147, 85,213, 2, -120, 88, 8,137, 39,225,111, 64,138, 25,152,147, 32,134, 45, 97,111,211,244, 60, - 51,177,173,146,213, 58,197, 72, 27, 63, 41,215, 0, 17,156,162,124, 8, +// ../Source/Template/GB_add_sparse_M_sparse.c: +uint8_t GB_JITpackage_126 [2495] = { + 40,181, 47,253, 96,125, 47,173, 77, 0,170, 82,244, 14, 40,192, 20,217, 28, 36, +173,112,153,132, 78,254,107,212, 6,235, 0, 32,210,171,103,177, 75,227,173,186, +221, 63,186,114, 94,232,211,167,223, 85, 20, 4, 69, 1, 8,228, 0,225, 0,228, + 0, 20, 91,220,188,112,189, 56,235,163,113,215, 39, 28, 90,221,120,198, 53,130, +226,213, 4,175,205, 89,135,188,185,252,205, 62, 55,198, 66,124,202,101,149, 19, +153, 56, 44, 21,138,162, 38,184,241,145, 57,213,249,207, 30,119,166,246,127,124, + 73,244,129,105,190,250,171, 27,244, 77,251,250,194,220, 82,121,245, 9, 62, 95, + 9, 10,249,171,184,126,206,231,238,232,219,156,200,165,191,250,181,219,193, 48, + 55,254,255, 83, 40, 37, 20, 10,245,107,143,189, 47,165, 24, 80, 7,149,230, 50, + 10,198, 95,110,215,173,230,175,181, 77,165,241,215, 89,141,168, 96,100, 58,148, +214, 33,183,113, 79, 28,103,174,163, 78,188,235,226, 39,132, 3,131,131,202,130, +197,224,224, 81, 6,125,194, 53,132,102, 78,197,127,184,108,189, 74,241,201, 19, + 35, 36, 7,210,251,224,233, 92, 67, 15,229, 54,248,225, 10, 62,175,125,244,214, + 39, 41,197,170, 97, 50, 68, 30,211, 5,178,126,153, 87,227, 75, 65,124,105, 26, +189,228,195, 11, 10, 40,149,130,130,150, 87,213, 53,158, 8,209,185, 50,153, 40, + 16,125, 66,223, 43,213, 73, 62, 15,111,186,246, 83,215,133,219, 47,165, 91,141, +195,219,252,207,237,144, 75, 99,154,189,163, 53,107, 16, 71, 17,195, 38, 38,143, +164, 70, 33, 72,202, 8, 48, 63, 48,240,107, 82, 29,197,108,215,113,154, 81,159, + 92,187, 61, 63,133, 43,166,216, 43, 31,172, 66,255,105,207,184,167,214,152,214, +142, 70, 8, 81, 30,200,175, 30,196, 93,111,254,250, 93, 71, 31, 89,160,139,214, + 89,238, 25,135,222, 49,194, 27,247,103, 39,144,122,185, 98,217,126, 31,205, 46, + 35,213,209, 27,230, 44,188, 25, 99,183,249,243,184,111, 13, 65,250,254,179, 53, + 87,237,179,217, 3, 62, 48,245,254,193,180, 3,222, 28,197,137, 69,250,186, 11, +249,244, 9,156, 87, 71, 62, 24,188,106,248,229, 30,119,184,108,190, 62, 26, 42, +243, 85,117,142,143,141,137,121, 20, 17, 81, 33,241, 10,224, 20, 19, 26,143, 39, + 70, 31,208,102, 7,187,181, 83,232,220, 60,166,111, 47,218,197, 79,125, 62,234, + 61,196,174,125,252,109, 46,215,254,151,193,206, 70,250,249,235,154,213,109,235, +123, 82, 68, 0,253,151,132,156,115, 70,130, 99,105, 60, 87,135,211, 89,189,153, +122,239,190, 92,190, 92, 16,162, 41,103,148,191, 28,108,213,195,130,222,225,104, + 60,155, 11,141,148,152, 29,137,159, 60, 42,205, 68, 78, 4,199,179,217, 90,251, +166,132, 46,107,189, 52,213, 8, 61, 94,155, 40,154, 70,166, 39, 90,179,206,106, + 89, 24,233,146,196,128,185,193,171, 67, 26,141,205, 4,135,194,210, 88, 92,153, +185,241, 92,113, 62,196,137,206,244,248,139,197,162, 89, 46,247,188,148, 50,227, + 91,183, 43,214, 87, 98,227,109,179, 87,140, 34,232,155,109,146,138, 79, 48,205, +249, 73,122,181,160,204,107,111, 78,204,171,231, 75, 51,190, 44,208,186,253,110, +231, 76, 65, 76,214,209, 26, 82,111,198, 97,254, 66,155, 61,171,157,197,188, 15, + 62, 37,165, 75, 27, 4,105,231,143, 94, 26,118,112,249, 95,205, 95,223,226, 79, +209, 3, 20,202, 73, 87, 7, 82, 82, 14,236, 40,118, 98, 93, 54, 95,241,202,232, +112,172,147, 75, 59,154,225,139,230,198, 36, 56, 27,137, 10, 73,178,192,250,234, + 28,150, 37, 73,191,181, 85, 22,134,125,146,152,148, 18,147, 82, 74, 12,147,209, + 39,232, 30,205, 38,162, 51, 55,211,116, 8,107, 34,102, 76, 68,137,141,180,100, +174,163, 94,144, 82, 24,119,247,133, 23,177, 29,174, 17,147, 21,186, 20, 65, 48, +252,176,182,251, 71,134,249, 66,187,209,136,121,135, 95,205, 17,128, 71,245,222, + 89,139, 93, 94,138,181,132,225, 19,234, 16,202, 61,146, 28,224,198,177, 8, 77, + 26,237,140, 65,175,243,149, 96,112,121, 93,112,225,100, 56, 18,206, 93, 72,143, +227, 79,245,116, 59,211,238,211,181, 86,179,214,114,119,116, 84,220,119,218, 54, +212,167,198,247,237,231,208,118, 14,165, 20, 43,203,106, 93,104, 57,252,137, 41, +247,249,173,210,236,153,158,203, 46,109,250,225,182,218,163,107, 55,104,226,198, + 52,111, 10, 60,155,105,253,117, 84,220, 1,130,165,168,226,195,144, 57,132,102, +100, 68, 36, 73,146, 66, 99,194, 40, 4,163, 96, 32,232,114, 10, 31,178,104, 84, + 18,197, 32, 8, 98, 26, 67, 8, 33, 2, 66,144, 64, 68,100, 36, 18, 25, 73, 18, +180,176,205, 1, 27,212, 22,172, 54,146,112, 78, 95,116, 10,157,194, 84,191, 59, + 49, 38,130, 48,127,116, 94, 82,222, 28, 36,130, 49,208, 99, 42,216,224, 13, 81, +138,229, 27, 22,218, 65,138, 46,209,224,173, 37,102,167,127,102,100,214,248,180, + 98,158, 26, 92,238,143,108,149, 18,127,164, 62, 77,117, 38,111,196,127, 64, 81, + 6,244,173, 92,147,172,118, 84,244,203, 18, 40, 38, 3,233, 17,237,154,241,139, +246, 18, 43,208,255, 98,238,141, 64,185,226,192,234,234, 11, 51, 42, 31,141,255, + 71,212,153,156,124,121,255,105,151,181,218,153, 63,240,204,110, 38,200, 50, 82, +125, 52,160,211,127, 8,139, 58, 35, 93,130,159,191,247, 48, 30, 90, 24,142,170, +106,121, 34,148,198, 71, 32, 8,111,203,184, 61,135,208, 16, 31, 48,109,217,132, + 78,203, 11, 58, 59,144, 31, 18,120, 2,224,188,120,141, 15, 74,195, 62, 33,113, + 4,224,197,255,131, 15, 48, 35, 64,122,215, 81, 67, 75,159,199,245,155,164, 95, +179,225,172,110,135,167, 0,252,189, 24, 28, 11,223,184,110,121, 1,110,246,191, +229,205, 73,124, 16, 23,174, 74,123,218,128, 77,104,186,209,185,111,227,223, 78, +241, 45,128, 78,110,174,229,120, 8,151,209,115,161, 82,185, 74,114, 17, 61,230, +249,164, 93, 20,170,170,173,165, 18,233,145,114, 65, 60,245,238,112,150, 8,101, +131, 92, 93, 67, 49, 34,181,137, 99,141,165,158,179, 6,168,133, 7, 18,247,246, + 8, 13,104, 18,194, 20, 90,199,236,186,100, 55,221, 60,173, 36,230,111,226,254, +144,193, 27,115, 41, 89,252, 62,122,242,111,210,116,153,178,232,136, 62, 32,110, +244,138,116, 15,170,224,208,169,113,179, 73, 72,118, 47, 71,246, 38, 8,186,124, + 24,196, 25,116,134, 57, 62, 97,210, 3, 37,254, 14,136,211,167, 4,119,248,154, +213,187,136,190,150, 6,166,220, 84, 1,220,182, 60,184,178, 66, 75,195, 47, 12, +229,215,190,252,206, 28,147,104, 67, 1,180,213,252, 11, 60,126, 84,124,159,210, +189, 72,125, 93,112, 94, 85, 79, 14,142,228, 81,183,244,253, 47,114,217, 16,112, + 52,249,184, 60,161, 88,119,202, 99, 98,230,212,246,124, 46, 80,126,188,137, 76, +198,246,240, 46,172, 50, 88,229,228,142,159, 96, 37,167,240,251, 71, 88, 58, 53, + 22, 52,210, 64,154, 53, 57,207, 43,142, 72,164,229,126,128,194, 74, 81,242,164, +248,105,215,250, 20,217, 87,191,168,162, 62,164, 99, 8,251, 1,239, 2,214, 22, + 56, 11, 17, 62, 43, 72,200, 36, 6,167,167, 16, 65,238,125, 76, 82, 49,168, 82, +249,227,164, 9, 1, 91,183, 49, 59, 89, 72, 44,152,174, 11, 32, 47,205, 97,226, + 48,153, 15, 2, 29,244,138, 25, 72, 23,176,167,182, 22,130, 5, 87,165, 48,106, + 31, 47,162, 39, 98, 2, 32,145,231, 28,113, 98,118,154, 73,215, 20, 72,207,104, +189, 73, 86,111,166,153, 47, 55,235, 15, 42, 87, 82,157,101,203, 58,213, 16, 20, +100,216,102,228, 57,106,236,230, 69, 95, 27, 46,129,254,198,142,103,168, 25,193, +177,116, 52, 52,185, 16, 50, 31,174,205,152,184, 57,233, 12, 55,118, 89, 56,122, + 19,173,188,134,210,153,136, 60,241,166,117,171,142,153, 66,150,129, 43,112, 32, +158,173, 81,180, 72,118,241,248,214,183, 20,239,164, 29,170,220,176,131,234,194, + 1,167,179, 45, 36,180, 3, 55,236, 69,194, 92,121, 65,130,203, 18, 97,106,114, +137, 97, 82,228, 5,235,194, 93, 24,230,189,197,207,114,204, 77,218, 5,145,162, +102, 56,136, 61,160, 60,207,156, 33,200,120,187, 58,251,141,228,235, 0,131,187, +235,108,173, 69,104,100, 12, 37, 81,242, 78, 40,108,132,146,208,189, 48, 69,105, +129, 7, 37, 28,230, 98,240,183,141, 10,218, 59, 25,103,169,200,192, 86,124,114, +220,109, 11,150,156, 22,124, 32,128,131, 49, 53, 78, 24,168,183, 9, 40,191,221, + 58,109,177,231,192,193,208,229,165, 99,183, 41, 42, 37,181,211, 92,113,100,123, +112,156, 64,177,129,142,234,115, 70,136, 41, 56,100, 50,189,213, 63,111, 95,168, + 77, 52, 53,254,159,195, 74, 76,145, 53,168, 32, 29, 7,152, 25, 34,161,191,121, + 12, 99, 28,201,219, 19,237,242,178,182, 59,113,155,247,112,174,178, 65, 90,140, +183,150, 0, 81, 90,190,120,245,181,246, 53, 27,223,210,140, 53, 82,213,156,153, + 44,220, 18, 10,237,162,215,217, 17,218,229,166,193, 42,217, 87,155,102,237, 26, + 82, 74, 96,243, 97, 38, 83,170, 84,198, 67,119,225,250,127, 46,199,183, 13,109, +136,255, 12,227,164, 18, 34, 96,138,104, 66,175, 24,240, 61, 80,225, 55,173, 47, + 34, 46, 21,178, 87,137,138, 30,166, 71,255, 83, 72, 89,207,148,253,198, 25,137, + 76,117, 17, 87,103, 81, 92, 18, 68,216,232,126, 72,223, 97,183,147, 0,205, 69, +102,149, 22,178,184,119, 4,144, 7, 75,195, 37,174,193, 69,244,186,190, 19, 58, +226, 92,176,198,131,231,197, 38, 98,206, 35,223,211,196,192, 45,221, 10,197,190, +223,241, 27,226,102,127, 34,203, 55, 57,199,242,185,231, 81, 79, 55,193, 46,112, + 39,210, 71,167,239, 30,146,196, 94,167,186, 14,252,150, 65,110, 20,142,251,252, +177,121, 58, 61, 17,132, 39,201, 69, 73,186, 66,134,214,217,164,139, 5,187,188, +128,126, 11,225,143, 69, 75,194, 1,187, 1, 58, 95, 58,227,158, 66, 95, 4, 27, + 66, 25,247, 70, 68,225,240, 9, 2,181,146,231, 41,217,139,168, 48,191,237,201, + 61, 35,158,185,204,135, 30,243, 38, 13, 51, 84,235, 62,211, 80,126,126, 53, 0, +131,237, 49, 21,157, 16,161,101,142, 99,112, 7, 6, 53,220,138, 36,109,246, 12, +139,154,176, 37,144,231,166,198, 48, 74, 85, 8,158, 76,154,184,250,214, 4, 39, +153,172,215,129,229, 96,148,148,115, 71,192, 42,205, 90,126,135,230, 26,218,185, + 90, 34,159,229,146,109, 9,201,221,198, 52,197,233,136,102, 44, 17, 9,215, 99, +119, 30, 47, 71,226,236, 56,177, 45,132,243,109, 14,159, 32,232,248, 26, 26, 15, + 23, 79,145, 42, 20,209,129,248,209, 97,109, 7, 66, 29,134,146,162, 80,139,134, +230,240, 28,198,131,156,239,186,216,255,212,177,132, 19, 47,162, 5,117,113, 66, +172,181,218, 45, 76,212, 35, 78, 9, 34,237, 39,226, 17,165,174,101,221, 79,234, +115,229,197,186,224,213,171,192, 92,225,216, 13,184, 19, 93,162, 80,144,213,115, +177, 93,133, 50, 65,186,200,104,155, 29,158,220, 57,241, 94,160, 62, 9, 8,171, +213,107,220, 93,143,160, 89,101,103, 37,240, 64,137,133,213,114, 24, 32,210,241, + 67,161,204,195,228, 26, 47,220,209,166,205, 61,177,147, 41,161,105, 10,182, 25, +202, 2,162,114,224,211, 13,194,205,166, 89, 15,192,244,215, 38, 82,158, 68,171, +119,182, 23,203,181, 74, 35, 58,248, 78,171,182,162, 63,129, } ; -// ../Source/Template/GB_split_sparse_template.c: -uint8_t GB_JITpackage_138 [803] = { - 40,181, 47,253, 96,167, 8,205, 24, 0,198,163,108, 32,224, 88,231, 24,203, 4, -119, 25,145,215,107, 59, 67,106,120, 21,143,129,176, 1,154, 44, 51, 74,240,205, - 25,204, 48, 76,243,112, 99, 0, 99, 0, 99, 0, 89,227,219,157,205,100, 33, 9, -135,224,117,170,108,220,157,227, 12,150,108,231, 97, 72, 63, 19, 8, 3, 34, 99, - 28, 12,136, 7, 58,236, 19,219, 84,149,156, 64,191, 2,243, 40,218,207,167,135, -102, 34, 32, 89, 75, 74,195,211,217,162, 60,151,202,150,185,138,127,189, 56,150, -223, 59,180,249, 29,150,174,197,175,127,163,115, 13, 73,177, 51,215,184,172,217, -134, 36,230, 34,148, 23, 10, 87, 86, 40, 4, 32, 73,102, 78,177,200,215,102, 38, -154,206, 4,195,125, 44,151,207,122,183, 1,219,182,109,191, 28, 87, 65, 50,250, - 0,118,237, 42,250,220,217, 50,227, 46, 5,159,112, 68, 31,142,102,124,199,238, - 99,201,112, 60,220,198, 99,249,218,187,159, 5,108,255,198,151,174,237,108,136, -223, 96,158,219,189, 91, 79,159,187,244,255,191, 46,214,101, 32, 32,178, 6,187, - 74,210, 55,202,182,159,205,183, 61, 75,218,169,233,225,248, 73, 35,237,172,193, -224,225,184,225, 26, 22, 56,204,206,138,245,174, 60,172, 67,148,215, 96,135, 31, -184,220,134, 97,175,118, 9,102, 78, 68,221,151,227,247,176,195,176,150,149, 60, - 41,142,175, 98,169,150,164,103,243,243,181, 99, 62, 5,243, 87,228,216, 33, 46, - 40,107,198, 36, 62,225,154,239,160,134,220,169,185,222,184,140, 75,251,157,200, -109,211,126, 59, 76,117,214,130, 1, 23, 69, 1,174,171,117,181,166,136,179,177, -245,153,118,210,182,153,166,197,174,245,110,253, 44,136, 41, 57,186,165,214,145, - 13,180, 83,211,164, 22,163,255,198,171,218,187,246, 15,199,175,125, 35, 95,142, -185,235,212, 7, 7, 53,254,190,145,163,164,195, 96,206, 57,231,244,110,127,114, - 27,201,225, 62, 19,202,105,164,221, 64,222,107,175,251, 62,143, 55,112,170, 19, -164,216, 41, 87,137, 80, 30,128,157,168, 81,193, 66, 52, 67, 34, 73, 10, 82,200, -178, 6, 80,132,204,148, 29, 61,226,184, 84, 74, 98, 28, 66, 84, 96,136, 21,136, - 4, 34,129, 72,152,168, 41,111, 7, 14,135, 80, 28, 61,225,160, 41,203,110,126, - 98,162,185,113, 77,124,219, 13, 72, 64,204,124,149, 56, 56, 66, 30, 43, 43,182, -130, 82,194,143,200, 8,155, 33, 64,129,149,128,155,111,176,196,133,197,188,226, -199, 72, 94, 5,225,247,245, 80, 48, 89, 91,215,233,235,145,247, 9,200, 93,196, -204,122,175,138,149,174,147,168,150,155,226, 43,229,100,186,127, 62,184,115, 35, -202, 6, 32,226,175, 2,206,130,107, 24,197, 28,203,113,204,161, 12,236,199, 27, -131,172,186,148,218,178, 28,187, 40, 98, 84,221,147, 40, 90,142,135,185,134,115, - 79, 40, 76, 22,188,125, 12,236,240,145,121,131, 85, 2, 92, 4,248, 67, 40, 46, -141,101, 26,229,130,100, 24, 28,208,144, 70,179,192,141,209, 17,100, 26,164, 96, - 66, 61,169,118,150,232, 2,169, 51,149,248,237,126,229,205, 56, 83,183, 70,133, - 43, 10, 51, 73, 52, 35,147, 38,114,185, 10,205, 85, 79, 16,197,171,151, 64, 17, - 56, 95,211,201,243,180,112, 3,165,245,139, 3,221,168, 77, 49,182, 56, 35,112, - 27,130, 19,160,181,216, 53, 88,200, 65,107,186,160, 18, 40, 42,151, 15, 21,193, -189, 64, 75, 12, 38, 94,166, 0, 12,110,250, 96,140, 29,188,141, 30, 24, 34,109, -212, 87,148,206,232,233,193,171, 12, 1,223, 3, 83, 9,166,100,144, 92,104,115, -208, 68,213, 96,178,186,134,108,216,128,107, 74,188, 71,248, 21,227, 71, 6,105, -184, 52, 1, +// ../Source/Template/GB_add_sparse_noM.c: +uint8_t GB_JITpackage_127 [2031] = { + 40,181, 47,253, 96,118, 63, 45, 63, 0,234, 70,236, 12, 40,176,148,177, 14,180, +145,158,138, 11,149,130,216, 47,240, 78,183, 38, 21,184,176, 27,178, 30, 64, 24, + 71, 39,113,155, 6,104,126,194, 63,165, 63, 77,239,142, 75,194, 0,191, 0,200, + 0,179,203,213,252,110, 62,238,219, 81,213,176,207, 55, 42, 95,253,214,121,229, +241,212,250,102, 57,250,253, 42,119,207,147,231, 60,148, 59,179,244, 62,109,238, +240, 1,104,176, 60,158, 58,252,230,214,188,179,251, 54,219,179, 86,230, 47, 59, +192,111,125,149,233,196,243,218,231, 74,143,251,159,255,255,100, 50, 50,185, 88, + 50,149,217,105,210,194,107,238,108,174, 51,157,155,167, 50, 49,157, 90, 75, 84, + 48, 56, 20,150,109,130,220,137,103,232, 56,119, 29, 29,186,231,193, 87, 5,153, + 75,166,146,128,185,100, 78,209,166, 87,184, 65, 36,231, 22,248, 82,151,235,168, + 69,175, 46, 40, 17, 59, 43, 47,132,230,154,185,191,107,242,129,229,232,149,190, +186,211,150, 58,130, 91,175, 34, 5, 55, 20,143, 74, 51, 89,215,124, 42,197, 38, +190,210, 98,108,219, 36, 22, 33, 78, 64, 48,169, 16, 16, 4,215, 96, 46, 31, 1, +129,115, 1,222, 44,201, 78,201,111, 46, 66, 61, 52, 11,204,199, 37, 73,242,184, +122,122,103,206,210,126,118,162,223, 2,127, 43,119, 60, 61,251,229,119,208,222, +232,180, 92,125, 8,238,139, 78,186,136,130,199,157,214, 29,233, 85,110, 73, 42, +101,223, 75, 30,173, 31,161,100,218,213, 3,247,134,205, 43,177,136,109, 84, 98, +240,152,111, 54,239, 92, 48,130, 2,227,112,224,116,174, 3, 98,100, 56,229, 36, + 36, 24,110, 12, 78, 23,133, 58,215, 5, 41,217,111, 37,192,116,110,114, 58,158, +125, 51,157, 19, 68,118, 31,113,245,248,214,172, 77,144,123,242,219, 26,164, 55, +218,149,231,125,156,149,163,220, 89,151,107, 22,161,165,203, 77,250, 54,243, 23, + 41,184,177,126,139,132, 68,197,196,177,252, 86,187, 60, 71,199,221,229,215,124, +218,223, 38,198,210, 62,189,125,249,194,109,113,167,215, 33, 25,203, 2,230,180, +223,241,101,151,199,119,118,116,244,205,115,171,218,185,250, 73,219, 35, 85,207, +171,156,102,163, 95,189,242,227, 86,210, 23, 48,151, 12,102, 93, 31, 44,212,145, +240, 80,124, 40,217, 89, 79,198, 44,203, 10,178,238,238,238, 74, 51,100, 22, 86, + 51, 6,177, 12, 10,144,117,165, 39, 53,140, 81,148,204, 51,155, 0,121, 38, 42, +112,149,241,120,213,150, 53,157, 2,212,185, 60, 23,157, 24, 99, 54, 61,214,234, + 85, 8,124,229,209,114, 58,196, 56, 16, 36, 1,186, 60,220,220,104,140, 20,216, +223,156,195,158,186,101, 55,222,214,169,219,142,167,224, 55, 61,221,162,168,134, +219, 51,252,242,205,237, 51,102,128,144,105, 79, 29, 13, 79, 8, 36,178, 58, 22, + 24,231,227,185, 48,248,129,128, 33,138,103, 44,189,216, 25,223,230, 48,216, 27, +105, 29,127, 93,190, 38,147, 73,201,196, 44, 75,101,151, 24, 51,104, 39,153, 43, + 61, 67,230,166, 23,127,235,161,101, 99,140, 49,118,140,209,225,176, 33,132, 25, + 74,132, 2, 2,211,167,215, 29,169, 71, 18,231,175,102,242,130,137, 49, 70, 8, + 33,140,215, 44,200, 74,165,170,122,122,132, 21,130,157, 11,203, 8,193, 9, 79, +228,238,213,154, 97, 94,129,246,155,107,105,191,191,209,230, 54, 58,177,104,223, +240, 56,161,181,179, 54,241,157,153,182, 8,165,175, 80,217,105,223, 72, 97,224, +153,130, 59,192,152, 0, 99, 83, 25, 99, 62,111,229,102,118, 60,175, 65,104,144, +242, 21,132,241,154, 3, 14, 10, 87,167, 72,227, 15, 84, 49,190,178,218,154, 94, +178,218,104,142, 74,217,224,210, 29,101,140, 22,250,137,171, 29,205, 92, 73, 12, +127,139,188,211, 86,206, 4,200,234, 92,153, 2,235, 1, 19, 93, 33,207, 67, 85, + 3,129,249,168,129,181, 50, 52, 34, 34, 34, 34, 73, 65,146, 52, 6,161, 12, 49, +134, 57,166,180,179, 14, 34,120, 56,154, 34, 34, 4,193, 16,194, 16, 66, 4, 74, + 64,168,128, 16, 33, 34, 70, 40, 50, 34, 34, 82,101,115,213, 13,208,120, 61, 87, +243,102, 19,147, 8, 54,251,251, 77,188, 12, 39, 34, 85,231, 50, 82,246,190,185, +252,235,213,231,148,180, 71, 31, 20,102,165,186,160,237, 90,173,107,190,108,173, +114, 45,214,233, 57, 76,180, 57, 7,128,137,129,198,144,220, 42,107,197, 27,181, +210,143, 90,173, 38,243, 22, 13,214,101,224,139,194, 3,202,151, 62,165, 3,255, + 84, 60,212,110, 16, 7,199,252, 69,208,177,115, 49,163, 92, 63,232,174,178, 19, +174,129, 93, 39,178,160, 21,169,226, 32,125,102,106,197, 96, 48,214,159, 75, 83, + 79, 56,205,105,116,106, 4, 35, 36,111,111,191,230,242,187, 80,182, 87, 53, 78, +152,205, 22,249,223,138, 52, 63, 91,100,170, 42,217,105, 23,158, 22, 20, 15, 71, + 29,183, 77, 79,156, 41,142, 3, 95, 39,140,197, 54,164,223,224,200,209,237, 0, +120, 82, 28,147,121, 67,130,221,144,227, 1,100,156, 50,208,172,210,226,110,241, + 71, 75,186, 3,212,243, 3,180, 7, 68,112, 53,145,175,129,173,152, 63, 26, 67, +169,191,172, 62,195, 65,227,228,121, 78, 8,184, 81,152,240,195, 53, 85,181,162, + 15, 33,182,194,182, 14,196,231, 39, 13,199, 77,157, 80,161, 71,128, 84, 43,189, +114,232,147,178, 41, 9,134, 90, 25,255,205,235, 96,217,100, 23, 60, 24,122, 11, + 9, 9, 9,131,113, 7, 48,108, 41, 9,212,214, 25,143,236, 70, 8,139, 49,248, +100, 19,148,150, 58, 56, 38,175,110,132,152, 71,119, 98, 84,174, 16,172,128,135, +238, 74, 77,112, 9, 73, 57, 46,189, 98, 22,161,251, 52,114,246, 48,172,159,167, +167, 40,201, 65,114, 83,133,141, 12, 75,207, 18,144, 30, 95,251,207, 78,136, 89, + 74,115,222, 84, 61, 76, 16, 74, 93, 28,163, 63,104, 42, 57,117, 25,172,147, 48, + 40,102,188,106, 3,236,114,255,232,151,173, 76, 26,221,157, 0,221,229, 28,124, + 28, 20,188,140,111,187,129,234,201,139, 53, 84,255, 1,188,219, 43,204,175,239, + 56, 28,104,167,224,132,206, 20,163, 20,247,251, 23,203, 29, 1,140, 27, 59,249, + 56, 19, 26,194,169,189,211, 71,218, 44,224,165, 11, 60,180,143,186,165, 50,193, +150,171, 47, 0,238,177,220, 35,160,220, 55, 63,236,238, 47, 48, 10,225,248,112, +157, 55,192, 87,235, 84, 2, 13, 53,144, 59, 13,102, 53,159,205,208,140,127, 52, +111,140, 99,130,218, 0,254,115,240,183,157,198,104,125, 97, 27, 48,164,150,197, +192,128, 88,220, 38,130,210, 58, 36,249,147,166, 33,148,217, 66, 58,180, 57,108, +192, 52,140, 60, 65,244,241,177,116,141,232,133,135,221,168, 63, 57,173, 69, 18, +220, 5, 13,118,166,180, 4,187,124,229,248,209,152, 2,212, 0, 55, 0, 77,158, +111,233, 82,207,116, 58, 49,187,109, 24, 4, 4, 88, 60,232,145,101, 64, 14, 58, +224, 50,184,107,167,187,253,148, 3,142,131, 19, 42,205,120,159, 34,233, 27,116, + 11,168, 69, 17,162, 40, 79, 71,217,116,209, 12, 88,174, 14,178,176,129,169,196, +175, 45,187,177,248, 7,223, 53,186, 21,194, 69,149,116,236, 44,160, 3, 63,125, +110,249,173,115,141,115,125,122,205,232,170,220, 78,227, 6, 99,134,177, 23, 23, + 10,125,248,239,152, 94, 34, 69, 72, 45,145,109, 62,191,164,169, 52,128,210,106, +111,135, 82, 88, 52, 45,103,110,139, 46, 58, 10,160, 91, 49,187, 36,184,184, 59, + 87, 1,220, 95, 8, 73, 2, 47,151,188, 37, 0,187,232,124,127,118,207, 83,203, +137,181, 23, 19,215,210,251, 89, 31,188,168,108,187,160, 60,163,253, 18, 97, 23, +124,182,188,130, 87, 42, 7,110, 96,101,103, 1, 13, 33, 67,144,211,246, 60,234, +113, 42,117, 11,239,171, 35,161,149, 5, 4, 51,218, 26,197,100, 67, 87, 64,122, + 47,136, 48, 7,180,201,210, 16,150,181,176, 89,102, 46, 58, 76, 50, 68,128,114, + 4, 29,117,197,105, 37,236,208,205,200, 11,141, 52,197, 80, 81,217,180,161,201, +115,210,185, 9,127, 28, 99,238, 9, 26, 31,156,139,241, 42, 79,220,193,154,182, +221,203, 78,227,151,171,203,128,207,137, 7,152,193,154,164,198,144,205, 36, 39, +239,152, 42,135,158,146,160,178, 21, 18,180,242,107, 77, 51,237,126, 35,145,240, +182, 24,247, 83,156,147, 34, 27, 72,187,229,119,189,201,168, 46,141,188,230,231, +135,148,152,219, 55, 34, 19,140,212, 14,130, 10,130,242, 38,116, 27,103,115,128, +108,211,200,135, 70, 61, 28,236,126, 37,175,184,148,165,177, 97, 93, 66,220, 25, +111,181,151,104,166, 50, 64,113,207, 45,122,116, 9,150,180, 96,164,130,101, 32, + 88,191,143,116, 52, 39,242,119,125, 35, 44, 94,140,109,235,202,197,197,229, 38, +198, 49,128,145,160,188, 66,157, 76, 50,210, 21, 53,166,156,240,177, 94,128, 73, + 55, 74,101,114,141,206, 28,109,238,108,131, 40,219, 45,125, 15, 60, 72, 73,198, +164,238, 24, 77, 85, 90, 16,146, 40,244,143, 27,242, 58,105, 58, 53, 55, 57,238, +215, 14, 84,136,118,226, 86,141, 83,136, 43, 20,179, 59,246, 4,214,224, 54, 56, +147,219,114, 20, 53,200,214, 16, 79,142, 73, 68,241,146, 26, 39,252, 86,129,217, +169, 36, 53,203, 74, 14,182, 28, 52,235,255, 96,194,170,217, 97, 38,235,224,152, +106,116, 88, 23,103, 22,156,106,191,109, 2, } ; -// ../Source/Template/GB_subassign_05d_template.c: -uint8_t GB_JITpackage_139 [1166] = { - 40,181, 47,253, 96, 56, 15, 37, 36, 0, 54, 49,153, 41,176,148,117, 14,100,161, -216,231,123,124,194,197,117,107, 15,192,171,196,169,118,156,102, 12, 33, 19,162, -209, 66, 24,219,129,249, 9,255,148,254, 52,249, 15,118, 1,143, 0,141, 0,140, - 0, 26,118, 97, 50,113,244,181, 1,211,179,236,162, 24,166, 65,220,235,238,150, - 2, 38, 11,193, 65,165, 63,174,138,215, 47, 99, 91,207,230,219,157,167,210,248, - 54,103,179, 10, 6, 7, 68,208,117,200,216,184,181,227,252,121, 88,237, 32,120, -221, 66, 56,176, 28, 84, 24, 12, 44, 7,175, 56,234, 22,182, 33,149,115,130,235, - 36, 95, 14, 73, 54,116,107,187,178,205, 39,214,177,115,105, 60, 86,113,235,108, - 75,219, 4,130, 37,239,216, 94,190,199,254, 68, 62,242,204, 53,211, 65,254,210, -185,130, 34,169, 51,237, 20, 44,244,122, 88,140,171,168,132,233,166,243,130,130, -169, 82, 80, 16, 33,143,103, 3, 66,108, 53, 21, 9, 80,125, 40, 7,203, 54,179, - 66,130,122, 72,195,182,237,154,239,110,189,124,110,143, 91, 92,135, 92, 77,101, -158,242, 91, 13,183, 38,245, 9,237,115, 65, 49, 60, 90,232,154, 20,147,158,108, -171, 58,176, 63, 90,114, 47, 39,195, 34, 40,232,196, 93,237,241,179,240, 8,215, -124,233, 60,166, 93,153,196, 56, 24,251,208,187, 30,186, 25,241,232,150, 62,238, - 93,151, 88, 92, 1,107, 9,164, 31,206,247, 47, 96,131, 96, 29, 43,232,147,201, - 52,157, 96, 94,101,154,176,144,175,189,229,113, 45,103, 65, 76, 71, 77, 39,117, -208, 7, 68, 39, 2,239,216,152, 52, 3,130,245,185,126, 52,134, 34, 15,239,113, -135,221,237, 47, 87,112,116,205, 51, 30,173, 55,186,103, 41, 20, 7,204, 45,207, - 80,149,129,197, 89, 82,189, 36, 29,213, 96,169,235,143,195,175, 40, 74, 42,221, -143,161,119,241, 34, 41,124, 37,121,212, 81,236,172,228,164,148,242, 54, 24, 50, - 71,168, 95,158,101, 21, 20,127,160, 94, 81, 35, 24, 40, 35,100,237,247,137, 68, - 13,162, 56,109,143, 3,159, 60,219, 93,140,166,210, 34, 73,206,156,244, 76,159, -241, 13,185,198, 96,135,100,133, 22,218,232,196,118,101,174, 52,102, 92,103,134, - 81,104,216, 4, 13,211, 73, 21,218, 46, 89,137, 54,222,116, 98, 73,241,214,136, -164, 46,105,152,233, 88,193,202, 97,154, 1,250,112,207,188, 67,138, 27, 31,177, - 30,138,188, 3,230,207,124,138,152,134, 71,251,132, 36,102, 65, 57,211,179,209, -107,118, 46, 13, 68, 77, 68,243, 2, 2, 25,234,222, 7,102, 32, 83,125,200, 48, - 31,231,107, 67,241, 82, 52,160, 88,149, 8,178, 44,171,187,125, 43, 99, 58, 69, -234, 23,136,134,176,206,173,111, 82,159, 52, 98,211,249,192,150, 68,244, 27,190, -235, 92,199, 22,195,183,232, 97,126,117, 47,124,238,174,245,238,240,209, 49,175, - 46,214,133,194, 4,128,236,168,113,189, 66, 51, 34, 50, 34, 41, 40, 72, 82, 24, - 14, 64,132, 24, 83, 69,214, 13,194,216, 48,138,242,156, 34, 76, 17, 34,193,136, -144, 4, 18, 72, 32,161, 4, 18, 69, 73,230, 24,216, 20,136,204,121,220, 50,191, - 56, 69,109,116, 85, 23,224, 19,112,100, 68, 25, 66,141,103, 76, 56,104,190, 72, -178,133,169, 38, 65, 54,101, 30,100, 96,145, 39,209,125,247,132,210, 11, 18,210, - 84, 28,200,116,235,145, 86,140, 64,147,114, 22,109,179, 89, 22,138, 48,214,154, - 96,142,160,193,202,129,104, 78,170, 14, 81,140,227, 46,196, 50,128, 53, 74,134, -233,143,109,248, 85,128,212,241,196,224, 4,141, 23, 3, 63, 44,172,240, 60,185, - 40, 99,248, 68,244, 53,133,126,232, 12, 11, 79,138,177, 97,100,111, 59, 67,223, -137, 68, 61,192,245,135,141, 96,196,101,221,248, 82,140, 46,142, 61, 11, 54, 83, -151, 14,187, 17, 59,195,184, 35,120,224, 93,184,165,146, 68, 39, 34, 70,183,170, - 0,158, 58, 63, 14, 40,221, 99,249, 47,134,245,168, 26,209,232,223, 24,155,155, -124,196,203, 27,168, 76,174, 4,126, 77, 13, 27, 44,140,197, 39, 14, 68, 68,205, -206, 15,150,210, 15, 49,245,171,160,167,115, 80, 96, 11,153, 94, 48, 10,252,173, - 6,151, 48,199, 36, 0, 83, 67, 93,199, 22,196, 43,194, 47, 55, 84, 58, 77,234, -169,137, 42,143, 21, 42, 86, 22, 12,176,204,109, 1,110, 10,216, 85, 8, 11,204, -166,178, 37,167,194,239,160,183,129,222,198,135,137, 65,102,187,102,229, 69,111, - 15, 87, 69,235, 32, 72, 47,236, 70,241,172,229,199,247,129, 21, 36, 88,250,100, - 78, 87,135,201,110,127,192,105, 58,150,150,110, 80,198, 51, 73,151, 12,224, 18, - 91, 5, 62, 58, 5,180, 56,176, 37, 13,127,137,128,141, 22, 89, 54,119,122,232, -117,114, 5, 83,195,213,166,221,133, 64, 57,169, 23,235,127,143, 5, 12,127,162, - 22, 6,129,241,192,220, 45,157, 55,176,218, 88, 49, 33, 79,211, 42,149,228,234, -231,130,191,150,141,221, 52,108,140,220,101,116,126, 29,229, 55,196,114, 91,216, -255, 99, 26, 8,236,212, 71,250,109, 78, 15,135,140, 84,244,166,193,139, 22, 25, - 8, 18,148, 85, 33,121,116, 19,143, 8,242,193,126,200, 47,204,186,190, 80,122, -193,113, 6,181, 41,156, 89,128,230,251,244,209,246, 38,106, 83,241,245,166, 16, - 86, 93, 62,102, 58,184,128,153, 91, 12,160, 65,211,255,153, 41,207,120,133,209, - 23,181,149, 58,128, 19, +// ../Source/Template/GB_add_sparse_template.c: +uint8_t GB_JITpackage_128 [1707] = { + 40,181, 47,253, 96, 89, 34, 13, 53, 0,246,252,178, 40,192, 84,177, 14,104, 89, +224,245,150,180,253, 21, 50,184, 48, 63,135,107, 27, 45, 32, 65,240, 5,178, 83, +169,100,104,165,248, 80,102,183, 77, 81,232, 40,206, 5,169, 0,159, 0,167, 0, +157, 55, 59,170, 88, 7,149, 45, 58,150, 0, 26,235,145,194, 79,125,225,113, 99, +242,102, 56,250,221,106, 6,159, 77, 0,104, 62,231,150, 89, 56,202, 82, 84,157, +250,179,220,189,178, 78,161,100,126,235, 41, 6,212,193,165, 53, 12, 90,247,204, +109,153,201, 76, 59, 78, 92, 26,211,198, 36,231,162,241,128, 65,197, 6,185,141, +219,115,156,181, 14,233,249,156,238, 19,194,129,193,193,101, 1, 99,112,240, 10, + 38,125,194, 18, 4, 62,156,114, 31,209,114, 29, 73,208,167,143,227, 60,205,194, + 27,145,249,116,150,219,135,114,219,142,104, 5,199,242,214,105,107, 33,111,232, +104,172, 79,207,226, 42,235,207,116,134,211,142, 58, 95,141, 47,180,248,138, 17, + 94, 47,226, 5, 5,148, 75, 65, 65,114, 4,233, 72,148,122,110,177, 53, 12,191, + 66, 47, 75,194, 17,246,213,242, 53,218,232,236, 57,225,133,246,135,163, 14,120, +173,128,245,131,138,199,148,145,172,107, 24,236, 83,121,220,242,102,218,207,116, +171,216, 51,152,151, 80, 40, 21, 41,211,183, 94,241,167,251,166, 53,102,110,133, +160, 70, 68,143, 88,106,217,250,173, 89, 99,219,205, 56,207, 13,247,125, 86,143, +111,141,141, 55,128,169, 49,196,222, 51, 82,168, 61, 87, 90,227, 67,234,140, 85, +203, 61,122,107,160,159,106, 60, 97,246,129,225,232, 26,153,214,194, 99,122,183, +220,247, 35, 89, 82, 4,141,161,102,107, 62,135,147, 97,113, 12, 79,229, 99, 99, + 12,109,231,180,181,252, 41, 6,180, 55, 42, 51,173,216, 43,151,208, 79,197,219, + 32, 77, 53,208,192, 64,165,121,232,131,227,214,146, 14,242,108, 62, 31,135,177, + 88,150, 10,253,183, 44,142,180,175,201,178, 36,212, 3,171, 28,179,249, 56, 9, +140,235,225,193, 9,124,124,210, 44,233,214, 37,241, 34, 94,221,195,210,242,199, +228, 81,105,168, 60, 8,174,183,142,104,197, 23, 86,172,241,236,147, 99, 13,242, +158, 89,125, 99,114,226,195,211,122,220, 25,222,182,245,240,210, 51,218,179,130, +185,188,170,164,171,169,204, 62,107, 21, 61, 99, 56, 25,168, 16,199, 51,150, 28, +208,171,103,124,101,246,241,124, 37, 40,100, 42,111,205, 86, 94, 12,119,204,185, + 59, 44, 22,124,205, 25,110,240,234, 81,102, 9, 51, 97, 1, 20,202, 73,117,203, +146,178, 58, 33,149,217,201,175, 91,177,188, 58, 37,141, 59, 21,207, 6, 99, 67, +226, 38, 38,223,124, 60, 14,227,115,125, 38,174, 78, 0, 70,117, 42, 13,120,199, +109, 98,180,226,227, 58,215,133, 5,103, 99,225,217, 84, 92,160, 9,138,172,227, +173,239,150, 87,111,152,144, 86,153,109,213,188, 39,122,239,137, 68,239,189,247, + 68,239,189,247,222,123,239,189,247,222,155,228,123,239,157,200,137, 23, 97,240, +134,203,201, 72, 37,108, 76, 59,194,124, 97,198, 87,118, 42, 29,196, 88, 42,147, +179, 78,194,104,120,230, 30,119,120,197, 93, 53, 95,150,244, 43, 51,237,144,115, +207,185,177,104,195,242, 26, 38,181,144, 79, 33,204,133,162, 40,103, 57, 46,226, + 38,233,166, 59,235, 50, 25, 3,129,183,168,129,181, 66, 51, 35, 34, 34, 82,144, + 36,133, 52, 6,209, 12, 49,200, 65,233,164,121,130,144, 40, 79, 98, 24,194,224, +136, 17, 24, 66, 32, 65, 4, 9, 70,130,145, 64, 68, 98, 70, 68,134, 60,169, 1, +122,194, 61,137,232,172,140, 74,218,144,168, 62,234, 64, 89,114,124,100,100,134, + 18,198, 72,149,218, 51,239, 40, 35,235,212, 68,233,226, 93, 37,202, 82,255, 6, +121,225,127,118,189,166, 21,204, 64,172, 44,232,224,254, 71,118,132, 60,197,118, +160,114, 12,176,108,117, 10,160, 22, 67, 46, 79,194,169,130, 65,191,182, 94,233, +250, 66, 46, 1, 34,250, 78,201, 21,101, 25, 11, 68, 58,194,252,248,240,114,149, + 95, 74, 24,175,199,194, 82,176, 38, 74,115,150,133, 71, 84,224, 19,220,165,148, +237,254,125, 13,142,219, 35, 55,248,191,133, 54, 63,129,138,230,147,138,246,241, + 12, 95, 19,241,215,201,110,108, 44,141,221, 85,168, 17,107, 49,180,109,111,143, +102,211,166, 59,154,111,181,189,102,185, 95,119,150, 93,175, 59,150,209, 28, 38, +166,103, 96, 53,102, 10,244, 26,243,130,152,199,197, 46,251,143, 50,175, 74,186, + 1,116, 80, 57, 15,142,186,229, 70,200,206,172,202,219,167, 77,201,246,222,172, + 90, 58, 53,223, 87,228,106, 71,203,146,173, 16, 21,241,138, 12,175,229,109, 77, + 88,117,219, 12, 19,146, 95,235,250, 72,151,153,240,253, 17, 20,251,230, 64,125, +132, 52,240, 84,182,159, 13, 18, 73,177,208, 83,104,244,226,252,152,196,215,190, +131, 2,127,219,216, 63, 43, 66, 43, 8,136,188,105, 84,198,194,215,106, 8,242, +245, 47, 19,149,178,103, 80,217,123,119, 29,226,234, 20,151, 9,101, 25,153, 24, +112,102, 14, 35,240, 51, 86,100,227, 49, 32,161, 72,219,236, 85,142, 89, 39,176, +142,176, 33,101,235,173,215,126,167,167,224,116, 98, 16,158,135,100, 36,143,248, + 4, 34, 72, 89,201, 54,159,107,105,114,255,223,198, 82, 94,156,102,173,172, 67, +144,228,244, 31, 29, 73,152,188,128, 91,201,152, 8,119,117, 19,105,211,231, 79, +252,249, 97,219, 7,231,140,197, 46,134,208,157, 3,120,177, 28, 32,115, 35, 82, +178, 40,156, 83, 29,244, 30,249, 91,113, 25, 21, 14, 33,185, 61,228, 63,183, 20, + 96, 48, 34, 3, 28,168,227,189, 9,222, 34,164,124, 3,223, 84,216,240,111,187, + 22,206,246, 4,208,161, 43, 0,102, 94, 66, 48,235,162,236, 42,195,204,212,206, +237,173, 57,218,114, 78,153,183, 12, 54,226,252, 22,131,137,179, 16,137,120,155, +147, 45,162,190,228,116, 9,109,189, 72, 12, 35,114,150,165,172,201, 27, 52,241, + 89,160, 42,198, 52, 0,212, 29,150,252, 87, 1,120,223, 77, 77,169, 97, 88,131, + 59,103,109, 89,218, 98, 12,196, 94,111,205,189, 71,239,208,193,159,211,101,125, + 44, 99,123, 62, 86, 78,165, 56,250, 6,252, 98,222,237,248,239,127,116,148,195, + 4,196, 74, 68,119, 9,236,121,232,122,133, 92, 6,107,167,135,144,217,226, 90, +250, 77,180, 48, 4, 55,251, 90, 12, 19,104,247, 75, 41,248, 18, 5,134, 71, 27, +170,158,136, 13,184,200,137, 70,171, 11,252, 56,227,182, 47,165,112,247, 86, 4, + 45, 10, 79,122,254,189, 2,223, 69, 63,171,243, 73,174,114,184,127,219,172, 9, +240, 62,130,217,217,149,253,230,227,237,149,139,112,184, 21,114, 66, 88, 91,147, +206,139, 6,110, 76,125,151,123, 67, 8, 83,189, 92, 1,188,207, 72,225,180,203, + 32,249,109,208,182, 10,149, 79,250, 66, 81, 3,216, 48,200, 4,113,153,236, 31, +179,154, 12,153,188, 39,241,149,126,115,182,100, 88,239,141, 0, 9,147,178,232, + 86, 4,254,165, 5,143,193, 12, 68,226, 74, 46,200,185, 48,167, 8,185,217, 62, + 2,129,165, 48,154,141, 2,157, 84, 88, 73, 16,194, 78,250, 16, 11,152,147,193, +253,177, 98,121,164,167, 86,140,247,203,173,167,130, 22,163, 84,138,144,147,197, + 55,175,199,193,248, 5, 33,122,241, 33, 1, 42, 69,119,111,221,204,178, 38, 33, +250,188,111,178,115, 6,202,209, 68,239, 89, 17, 78, 28,205,117, 16,248, 66, 65, + 15,240, 10, 23, 27,231,144,132,209,227,169, 42,139,158,132,141,156,107, 22, 56, +202,143, 43, 98, 69, 18,133,183, 39,124,177,110,218,236,189,184,229,228,106,105, + 73,167, 13,255,107, 25,232,104, 34,193, 35,113,128,143, 75,150,140, 70,215,163, + 70,231,140,157, 52, 73,127, 48,121, 43,137,230,209,208, 59, 98,253,144,242,161, +243,104,171,210,202,213, 4, } ; -// ../Source/Template/GB_subassign_06d_template.c: -uint8_t GB_JITpackage_140 [2482] = { - 40,181, 47,253, 96, 36, 80, 69, 77, 0, 26, 74,220, 13, 40,176, 86,117, 14, 84, -114, 79, 19,104,134,208,160,171, 26,251, 89, 97, 43, 12,243,105,120,183, 22,226, - 76, 23, 78,137,212,133,129,227, 7,253, 7,189,159, 18, 92,215, 0,214, 0,201, - 0,191,231,133,156,148, 30,201,201,176,136, 9,194,166, 5, 82, 82,174,161,137, -235,180, 50, 11,227,147,129,166, 5, 72,114,178, 22,222,140, 41,103,115, 93,124, - 46,139,153, 97, 21, 92, 13,192, 57, 4,109,125,119,249,185, 69,159, 78,166, 41, - 5,243, 42, 79,133,133,108,235,163,200, 86,173,122,120,142,122, 74,234,158,142, -103, 90,124, 46,141,255, 39,211,199,219,214,128,105,179,145,243,186, 62, 18,231, -122,179, 97,192,100, 64,128, 96,233, 78,163,160,252,229,118,229,106,182,189, 97, -150,198,182,181,186,177,108,104, 60, 4, 91,143,220,198,253, 57,206,157,168,126, -238,121,242, 49, 1,193, 0,193,194,112, 96,128,240, 74,163, 30,113, 29,161,154, - 19,200,151,186,252,145,106,246, 8,146,155,136, 14,164,119,226,210,248, 82, 16, -212,185,134,160, 73, 62,243, 7,233, 96,253,210,153,122, 32,169,243,220, 22, 12, -166, 21, 85,140,105, 40,196, 51, 98,226, 5, 5,147,165,160, 32,119,224, 19, 23, -152,230,226,242, 88,116,166,230,218, 68,112, 48, 36,117,208,133, 69,112, 58, 29, - 0,242,155,149,242,216,240, 40,169, 91,124, 58, 26,115, 3,251,100,146, 51, 47, - 11,219,128, 82, 6,222, 64,253,242,131, 67,188, 58,120,134, 42,161,164,249, 24, -169, 47,255,179,211, 79,184,219,162, 75,189,211,227,173,219,254,219,215,229, 38, - 97, 6,142,144,160,245,136,173,252,153,143,238, 71,242,246, 66,225,183,225,141, -246,237, 34, 30, 97,154,237,148, 55,177,148,186,102,115, 81, 92, 76,215, 71,110, -172, 75, 51,178, 97,167,125,179,120, 52, 20,233,127,242,253,139,215,158, 71, 47, -245, 84, 22, 10, 10,245,236,115,129, 64,146,171,155,197, 60, 88, 26, 44,229, 60, - 31, 44,159,148,152, 87, 22,245,140,247,125,161,103,108, 63,173,177,215,127,172, - 74,228,171,129, 95, 30,142,108, 82, 20,245, 12, 36,173,170, 77, 42,166, 81,130, -177, 68, 82, 27,157,111,179,193,144, 8, 22, 60, 72,250, 78, 73, 34,122, 65,155, -109,227,190,224,113, 87,207,163,191,120,244,134, 24,139,253,108,135,110,169,118, -249,190,221,145, 60, 86, 90,238, 71, 11,206,242,123,171, 35,117,251,229,210, 55, -204,161,133,193, 54, 26, 60,198,249,229, 25, 82,233,228,240,116, 38, 16, 3,143, - 74,251,228,185,239, 29,122,116,228,211,168, 91,150,101, 89, 37, 85, 9,192, 5, - 4,222, 84, 83, 7,109,100, 6, 65,149, 97, 21,241,126, 89,163,220, 99,219, 22, - 81,247,218,222, 30,189,180,117,174, 37,239,214,173, 20,250,214, 56,180, 95, 99, -170, 29,215, 46,251, 9, 42,210,253,184,127,182,116,179,237,183, 39,162, 47,121, - 61, 82,179,214, 28,215,191,223,111,109,235, 98, 2,155,150,102, 89, 27, 15, 7, -203,141,111,187, 67,199,180,139, 29,222, 72,194,182,226,219,246, 70,104, 40,212, - 80,107,215,129,160,124,214,234,205,184, 3, 83, 24,240,204,100,107,135, 68,159, -151,146, 34,155,163,190,117,232, 25,135,164,148,171, 3,251,116, 50,235,202,144, - 82, 86, 75, 74, 25, 43, 22,134,230,250, 76, 13, 7, 3, 77,201,153,144, 31,143, -149, 25,120,200, 51,150, 5, 30, 84, 98, 5,122, 98,140,210, 51,179,107,226,177, -147,212,229,164, 8,233,145,119,121,244, 88,133, 56, 96, 62,170, 46,241, 66, 97, - 14,226,145,201,244,179,199,253,109,249, 15,231,170,195, 65,212, 42,137,218,210, -118,132, 15,128, 21,234, 97,254,140,156, 25,223,202,141,168,117, 76, 5, 41,174, - 23,185,157,152, 11, 77,185,193,245,241,126,143,248, 54, 88,234, 14,158,169,132, - 50,167,126,209,193, 50, 44,251, 72,207,140, 49,223, 41, 29, 46, 21,202,126,247, - 91,205,143,211,193, 99, 40, 55, 38, 53,105, 74,145,143,224, 99,137, 5, 2,254, -164, 82,113, 56,120,204, 13,168,154,105,198, 84,123,225,214,157,134,169, 73, 10, - 3,130,148,168,162,172, 20,161,153, 17, 25, 73,146, 82,161, 49,114, 24, 4, 34, - 81, 26, 72,121,180,119, 30,146,160, 40, 15, 66, 24, 66, 65, 40, 66, 12, 33,196, - 16, 66,140,192,145, 9, 39,144, 64, 68, 68, 36,184, 77, 58,133,129, 65,123,218, - 2,106,135, 86,180,202, 86,174,243,116,154,144,217, 44,188, 87, 85,161,186,135, - 58,179,255,247, 11,241,248,105,239, 60, 34,235,172,136,130, 31,212, 45, 38, 87, - 55,144,158,208, 22,201,171,167, 16, 7,102,234,239, 50, 9,250, 3, 74,104,132, - 84,162,212, 90,253,244,207, 97, 8,208, 66, 15,144,151, 21, 84, 56, 37,124,163, -227,171,105,165, 49,106, 33, 66, 67, 89, 63, 83,166, 56, 45,238,173,130, 30,220, - 94,133,104,140, 61,104,186,152,171,189, 51, 24, 18,231,180,219, 49,101,173,188, -231,241, 35, 22,254,212,149,221,188,209,125,143, 45,129,153,177, 32,185, 20,200, -209, 6, 48,219, 93,123, 53,126, 3, 31,205,249,162,236,238,118, 44,156, 60, 55, -123,179, 61,142, 38, 49, 80, 23, 53,194,221, 78, 84,215,105,124,226,245,253, 46, - 65,190,248,145, 39,137, 46, 67, 99,142,235,254,234,235,107,125,177, 99,241,237, - 86,243,147,134,228,182,161,210, 18,134,143,253,112,212, 0, 27,189, 0, 30,251, -223, 69,253, 35,214,184,178, 6, 88, 67, 0,151,109, 10, 73,128, 87, 29, 0, 64, -157,255,199,225,207, 23,232,135, 11,126,147,194,190, 38,160, 47,143,157,128,192, -255, 1,247,195,192, 0, 75, 65, 0, 23,245,191, 9,180, 9,246, 35, 63, 30, 13, -176,140, 89,115,187, 31, 87,188,241,252,187,114,108,206,199,242,232,114,108,188, - 40,248, 45,241,157,224,177,249,163, 5,223,248, 19, 20,191, 39,170,122, 44,253, -118,108,210, 26, 11, 3,164,217, 98,254, 76,210,238,175,183,170,106, 33, 21, 30, - 6, 9,106,177, 4, 15,114, 98, 18, 14, 44,165,141, 78, 15,119,187,248,101, 98, - 61,138,183,196, 11,158,222, 54,134,139,227,148, 44, 19,107,158,105,183, 23,173, - 78, 33, 83,220,192, 74,189,140,128,140,147, 23,255,247, 66,172, 81,113, 93,103, - 53,247,224, 7, 80, 63, 5,199,135, 28, 42,150,129,251, 62, 44,101,114,117, 18, -182,131, 20, 49,133, 53,152,112,163, 63,109,169,236, 85, 2, 12,106,179,141, 97, - 29,131, 68,183, 71,253,174, 56,148, 56, 35, 15,147, 24,155,133,227,139,247,254, - 7,174, 70,144, 5,169, 16, 57, 50,229, 32, 92,161, 72,149,121,167,102, 98, 15, -115, 95, 36,212,209, 53, 35,195,126,100,171, 79,250,215,199,235, 3,112,173,147, -104,212,151, 70, 94,250,190,111,137,200, 29,194,234, 62, 35,199, 77, 96,172, 28, -236, 54,167, 13, 41, 93, 81, 89,146, 96,254, 39, 17,184, 39,177, 2, 50, 47,133, - 39,218, 24,194, 28,135,212,220,188,146,120, 71, 25,130, 92, 92,104, 23,131,186, -163,225,216, 19,221, 34, 51,166,188,235, 10,223,145,155,215, 32,186, 12, 99, 81, -254,185,152, 46,193,137, 10,198,171, 37,144, 89,238,237, 97,174,228, 21, 9,160, -179, 28,124, 62,182,148,238,183, 39,148, 3,125, 44,102,103, 44,128,131,157, 55, -170,141,210,190,221, 23,139,214,230,200,103, 79,253, 23,121,129,202,104, 93, 67, -115, 18,206,165, 52, 94,147, 11,207,242,207,153, 61,101,230, 89,231,200, 65, 70, -142,203,136, 80,164,198, 92,111, 2, 91,182,108,199,112, 40, 27,254, 0,207,123, - 83,150,156,238,198,229, 83, 89, 48,214,207, 14,186, 41,247, 34,165, 65, 67,202, -178, 51,121,243,197, 22,246, 89,246, 55,216, 11,196,141,126, 97,126, 82, 14,188, - 31, 20,175, 43,246,194, 49, 18,147,120, 23,180, 95,140, 19,186, 24,154,230,177, -164,116, 93,137, 76,139,201,244, 94,254,255,152,253,204,221,104, 60,253,161,113, -157,252,188,219,116, 52, 73,203, 45, 99,206,241,190, 16,248,109, 14,112,209,223, - 14,216,245,197, 99,133, 90, 72,111, 67,199,160,180,191,249,246, 66, 31, 74, 58, -207,199,176,210, 77, 88,212,148,148,116, 24,234, 17, 0,227,173, 2, 83,231, 80, - 0,139,134,140,250, 56, 25,233,116, 20, 37,198,232, 15, 50, 92, 26,176, 15,139, -169,209,233, 51,157,234,221, 68,158, 40,112,148, 75,152,226,209,190,145,201,148, -188,106,116,239,247,116, 3,147, 47,122, 47,200, 90,118,189,163,173,220, 50,128, -193,179,178, 11,140,184, 22, 83, 51, 2, 58,216,166, 19,238,211, 21,252, 90,209, - 82, 10, 0, 74,224,120,192, 0,170,215,231, 2, 95,200,201, 50, 87,185, 58, 49, - 5,233,246, 98, 21,233,181, 64,255,135,164,234,205, 15, 65, 90,134,247, 95,168, -182,161, 92,177,200,130,195, 11,141,124,117,229, 10,101,158,246,104, 85,181, 30, -165,243,218,239, 17, 64,121, 49,156,155,225,130, 97,113,231,157, 8, 64,169, 49, - 31,207, 8, 83,172, 44,212, 58,135, 57,234,230,197,158,146,107,238,104, 99, 49, -142, 41, 80,152,245,181, 4,182,104, 76, 58,101,219,175,128, 35, 99, 98,117,161, - 40,172,205,175, 7,149,204,169, 96,151, 72,104,246,220,248, 34,134,208,159,236, - 10, 91,127,184, 66,116,145,218,124,144,147, 46,130,169,139, 35,231,167,202,242, - 60, 3, 0, 11,183,127, 44, 25, 82,248,223, 50,126,155, 0,227,141, 73,180,129, - 47, 58,165,250,148,151, 72,220,140, 9, 19, 86, 64,219, 77,193, 48, 7, 82,115, - 27, 12, 27,143,110,149,213, 98,192, 17,157, 87,223,112,178,196, 51, 63,194,193, -170, 40,190, 68,113,140, 57,229,205,222,159,157, 0,180, 32,243,188, 64, 73, 62, - 38,168, 53, 81,104,148, 34, 16, 32, 49, 60,138, 60,206,255,136,217,162, 91,210, -188, 97,108,115, 74, 16, 20, 6, 83, 95,184,135, 25,218, 19,201, 33,222,255,140, - 19,168,166,221,127, 92,174, 8, 32,224,184,117,154,116, 65,180, 10,214,136,169, -102, 59,173, 15,144, 50, 33,118, 89,103,153,207, 4,233,128,191,146,124,234, 51, -136,164, 76, 32,124,159, 5, 21, 10, 0,103, 99,211,198,183, 10, 90,224, 99, 7, - 81,198, 37,204,112,108, 30, 63,116, 52, 8, 95,185, 62,130,211, 32, 47,176,251, -121,142,254,254,108,250,202,100, 91, 99, 68,211, 86, 10, 83, 36, 88,120, 3,138, -203, 41, 54,131,119, 41,149,159,206, 5, 40,114,170,160,113,133,246, 80,237, 1, - 56,231,241,161,139,137, 51,243,115,154, 42,218,202, 87,218, 71,108, 61, 13,205, -165,219,134,127,197,143,114,215, 95,232, 65, 76,188,170, 19,101,202, 40,106,171, - 45,194,240,119,230,160, 85, 24,235,236,208,239,255, 93, 4,168, 54,146,200, 37, - 42, 1, 15,205, 23,128,192,255,145, 55, 68,228, 70, 57,204,174,187, 37,187,234, -152, 61, 19, 33,168, 4, 13,236,112,106, 63,160, 47,126,220, 38,187,172, 29, 53, - 37, 93, 28, 20, 72, 31, 19,128,159, 91,128, 11, 49,100, 0, 12, 65, 51, 38,241, -115, 31,151,201, 8,199,211,188,245,160, 23,153,227,112, 61,217, 61,102, 87, 94, - 81, 59,160,184,132,195,255,145,234, 21,113,225,253, 81, 86, 22, 24,201, 42,156, - 9, 21, 94, 72,241, 23, 1,176, 52, 40,192, 55, 90, 73,100, 96, 42,107,232,213, - 89, 10,101,246, 37,217,173,231, 42, 66,127,217,227,122,170, 76, 98,176,217, 78, - 75,170,193, 45, 81, 55, 26, 52,133, 7,102, 90,242, 40, 23,248,206, 79, 83,206, - 84, 18, +// ../Source/Template/GB_add_template.c: +uint8_t GB_JITpackage_129 [1639] = { + 40,181, 47,253, 96, 9, 26,237, 50, 0,118,125,182, 40,192,146,117, 14,106,182, +112, 62,191, 53,181,167,215,237, 25,162,165, 19,187,149, 16, 12,163,199,247,180, + 98,147,102, 17, 90,159, 62,253,174,162, 32,200, 6, 51,168, 0,173, 0,167, 0, +167,125,203, 13, 94,202,231,234, 5,206,221,189,189, 52,180, 97,199,111,152,189, +226, 60,182,183,111, 93,251,173,244,150,235,246,202,132,214,166, 23,223,182,200, +182, 49,184, 2,171,229, 27,126,161,106, 73, 7, 19,138,132, 59,109,126,241, 21, +144,155,235, 75,121,203, 72,216, 82,214, 90, 35,201,184,116, 38, 27,139, 64,182, +236,185,189, 29, 71,123,238,121,241, 85, 2,229,128, 34, 97, 64, 56,160,156,210, +166, 87,182, 69,243,242, 73,252,168,187, 53,212,160, 87,159,168,145,221, 55,193, +137, 10, 91,112,126, 31,190, 29,126, 36, 0,136,235,193,122, 37, 11,162,197, 58, + 88,185, 83, 54, 58,143,192,118,118,223, 95,225, 59,189, 47,196, 23,219,182,137, +201,137, 27, 24, 72, 18, 3,131, 92, 39, 94,160,140,252,102,232,118,134,249,120, + 98,231, 99, 61,152,142, 6, 69, 60,200,223,168,195,108, 99, 81,210, 96, 54, 30, +140, 5, 6,202, 84,112,188,113, 45, 64,217, 19,117,103, 89, 67,215, 57,252,131, +144,124,241, 87,107,240, 90, 6, 9,126, 49,133,133,107,105,213, 28,190,245,165, +109, 93,175,228,171,248,203, 28,151,164, 16, 73, 58,152,151,179, 23, 72,249,130, +123,243, 22,235,149, 75,217, 50,248,245,169,142,170,167,120,174, 17,190,225,100, + 54, 23,152, 79, 6, 3,131,125, 50, 76,155,227, 77,160,194,141,178,111,161,173, + 80,182,129, 80,104, 67,161,118, 6,231,237,245, 66,203, 96,197, 30, 7,109, 59, + 89,107,207, 30,108,235, 97,231, 61,211,150,248, 39, 22, 88,175,198,162, 78,155, + 28,175, 40,148, 79,182,218, 93, 14,253, 78,238,171,218,153, 86,176,218, 87, 96, +189, 19,228,239,159,119,110,148, 63,222,110,143,178,143, 60, 90,191,177, 13,111, +251, 8,150,214,190,125,202, 71, 32, 36,151,162, 62,166, 87, 34,166, 83, 83,119, +150,117,221,117,233, 33, 0,191,166,115,109,185,174, 11,100, 93,120, 64,159,171, +133,224,181,157,139, 99, 97, 22,159,136, 81, 34, 34,159,192,138, 93,215,117, 93, +215,117, 29,132,126, 49, 6,105,251, 1,194,174,190, 54,151,148, 82, 74, 41,165, +148, 82, 74, 41,165,148, 82, 74,201,245, 70, 29,106,181,125,206, 62,154,161,203, +248,238, 86,215, 11, 67,204, 30,237,209,208,225, 84,156,110,241,106,205,216,122, +204,169,154, 11,137,223,243,194,146, 36, 73, 26, 10,140, 84,219,212,244, 83,242, + 99, 2,179,216,122,108, 89, 33,217,116,249, 8,194, 76, 60, 98, 60, 81, 99, 97, + 46, 27,151,149,148,217, 36,169, 42,126,213, 71,156, 34,118,137, 28,205,229, 12, +156, 22,203, 94,117,244, 28,160, 95,229, 96,154,184,225,100, 64,153, 15,167,227, +205, 80, 72, 95,161, 72, 1,218, 36,224,188,133,158, 70,169,131, 44, 98, 58,177, +237, 91, 90,123, 53, 11,141, 44,194,109,203,118,106, 79,120,197,154,190,121,220, + 97, 32,148, 30,132,106,211, 47, 26, 12,197,166, 59,203,186,206,250, 44,203,178, +164,148, 50,198, 24, 45,128,233, 32, 15,230,243,137,212, 41,183, 88,166, 83, 30, + 41, 58,216,229, 18,233, 68,107,144, 41,115, 84,214, 99, 10,178,199, 71,147,251, +108, 81,129,173,168, 97, 73, 66, 35, 36, 34,146,130, 36,169,180, 6, 33, 9, 33, + 8, 74,167,206, 60, 98,144, 32, 21,145, 24, 2,129,136, 38, 48, 68, 17,162, 72, +137, 68, 2, 33,145, 96,164, 48, 73,218, 41,151, 35, 84, 98,207,148, 52, 37,209, + 0,253,205,142, 63,195, 35, 93, 0, 51, 43, 15,252,224, 66, 43,205,229, 66,233, + 64,168,235,166,196,173, 7,228,122,132,120, 26,184, 91,210,180,215,229, 7,124, + 34,232,191,122, 16,100,215,130, 88, 35,248,187,210, 65,116,195,242,244,143,175, +120, 86, 46,162, 2, 31,160, 98,252, 29,155,188,151,196,109, 0,194, 90,201, 74, +156, 52,191, 7, 77, 31,121, 63,134, 21, 14,114, 84,226, 88, 85,235,248,208,177, +192,211,211, 66,123,132, 32, 4, 75, 65,208, 92, 7, 97,122,177, 52,162,139,166, +116, 33,202, 21,220,209,199,210, 0,196,186, 17, 34, 12, 90, 34,170,215,208, 82, +107,247, 96, 92,233,107,116, 28,149,249,172,142, 66, 12,226,239,130, 77,124,235, + 38, 29,221,235, 43,132, 28,217, 14,196, 82,145,231, 42,211,190, 54,184,176,136, + 81,121, 16,189,104,134,208,155,205,117, 97,134, 67,240,220,251,189,172, 19, 91, +210,151,198,155, 48, 2,212,208, 64, 37,237, 4, 87,138, 82,147, 55, 88, 6, 2, + 20, 67,106,212,148,155, 94, 27,100,237, 78,219, 45, 83, 47, 29,176,125,148, 16, +203,215,188,150,176,181,144, 30,222, 8, 37,219,110, 54,216,255, 23,190,168,126, +179,137,186,210, 70,131,208, 58, 13, 51, 64,176,228,218,117,196, 51,226,204, 99, + 24,113,173, 29,198, 15, 98,180,152,233, 2, 38, 50, 58,135, 4, 92,240, 11,155, +194, 35,121, 30, 67,194,114,237,230,248,212, 94,116,204,105,119,187,254,108,179, +227,226, 76,192, 46,113,244,173, 29, 14,101, 68, 18,103, 17, 65,231,144,131,143, + 46,180,234,198, 67, 7,154,156,251,245, 68,213,176, 64,110,212, 15,112,174, 26, + 88,178,208, 13, 5, 69,223,153,220, 29,181,221,240,212,169, 17, 80, 21,232,205, + 44,241,230, 62, 50, 85, 29,171,167,137, 23,204,170, 20, 93, 35,205,108, 14, 20, +102,138, 70,170,199, 15, 68,177,152, 47,165, 69,227,115,178,198, 87, 16,145,172, +113, 74, 63, 84, 74, 25,106, 27,169,173, 11, 55,205,127, 77,119,154, 40,211, 37, +113, 3,144,218,160, 61,243,245,169, 88,197, 88, 68,105,189, 39,243,199,135,188, +201,171,223, 12, 67,229, 61,218,246, 77,237, 83,219,147,234, 26, 54, 81,232,134, + 5,189,147, 64,116, 94,159, 56,210,104,186,180,209,243,127,157,253, 98,100, 82, +162,116,166,254, 57,104,141, 36, 71, 34, 88,239,136,231,106, 99, 39,111,189, 24, +214, 40, 89,156, 61, 96, 6, 55, 53,101,127, 10,219, 28,113,128,239, 40, 58,192, +149, 65,250, 32,187,220,174, 70,213,248,116,212, 22, 23,168,147,191,191,234,174, + 89, 40,251,230,222,165, 87, 27, 28,158,133,108, 74,148,204,148,191, 7,237,176, + 86,247,168, 50,215,243, 41,207, 36,134,238,164,196, 23,129, 28, 33, 41, 2,249, +136,128, 1,116, 7,153,140,145,151, 52,252,110,246,118, 33,210, 29, 16,223,197, + 49,121, 88,244, 48,142,170,237, 41,114,183,135, 43,112,214,198,191,216,244,113, + 81,168, 65,201, 14,217,213,149, 89, 30,129,102,194, 77,104,100, 38,112, 58, 78, + 23, 14, 76,111,197,193, 10, 80,147,144,173, 18, 97,211, 9, 32,217, 56, 8, 7, +252, 71,220, 52, 28, 6,114,119, 21,207,164, 73,254, 81,152, 97,213,186,117,232, +253,185,254,222,117, 17,200, 44,138,234,193,239,154,194, 4,153, 81, 28,203,120, + 87, 80,231,169, 69,134, 65, 59, 84,242,188,110,198,199,117,238, 80,119, 26,139, + 94,201,171, 36,149,123, 38,209, 36, 51,157,176, 69, 45, 86,140,201,139,144,129, + 48, 75,160, 6,152, 27,186,217, 29, 7, 57, 79,103,108,162, 17,117, 50, 12,128, +220,237, 20,192,132, 87,174,159, 96, 0, 30, 75,179, 33,128, 65, 73,219,159,243, + 41, 7,109,179,150, 75,184,251, 35, 72,211, 96, 77,210,217, 24,233, 41,218, 52, +221, 42, 51, 45,109,230,230,154,102,109, 57,111, 92, 31,142, 85,122, 88,157, } ; -// ../Source/Template/GB_subassign_22_template.c: -uint8_t GB_JITpackage_141 [578] = { - 40,181, 47,253, 96,145, 5,197, 17, 0,102, 30, 94, 32,240, 24, 61,208,133,145, -136, 47,145,124, 48, 47,150, 42, 43, 50,238,192,245,239, 45, 28, 36,253,232,202, - 5,158,129, 52,135,191, 85, 0, 84, 0, 82, 0,135, 77, 99, 32, 14,155, 11, 40, -230,153,174,167, 57,241, 2,231, 42,112,139, 97,229,120,214,113, 23, 9,136,103, -174, 52, 94,231,137,187,223,117,236,174, 60,237,164,218,167,202,191, 59,221,218, -145,228,186,186,244,207, 15,162, 92,229, 16,130, 75,111,252,158, 22,135,191,189, -109,243,110,169,106, 61, 71,163,246, 36, 21, 55, 24, 46,205, 96, 8,250, 51, 14, - 71, 74,231,211,105,241,103, 79,126,159,197, 91,170,222,216,116,204, 91,191,182, -147,132, 67,145,122, 38, 61, 47,151, 78,198, 27, 95,182,109,254,137,224,126,204, -117, 40,108,218,131,116, 98,206, 27,249, 43,169,238,251,159, 69,123,125,159,214, -139,246,153,104, 10,223,159,242,235,223,184,222, 96,169,110,220, 90,206,179,196, - 22,155,214,188,245,231,129, 83, 52, 32,142,244,253,165,212, 12,189,204,116, 71, -144,122,118,125,235, 43, 82,137, 93,136,251,246, 20,139,125,171,187,195, 5,171, - 75, 49,239, 46,156, 39,227,201,215,163,139,219,245, 55, 63,131,219, 73,162,231, - 31,133,227,245, 7,183,255,173, 97,254,253,159, 95, 23,235,186, 10, 87,188,157, -115,251,126,215,213,186, 90,153,196,158,165, 36,230, 81, 56,220,165,131,233, 72, -201,153,178,136, 18, 73, 28,242,148,179, 8,132,135,195, 15, 14,113,137, 49, 1, -173,123,110,141,189, 29,191, 7,169,118,193,197,188, 44,146,220,190,181, 51, 79, -236, 56, 20,125,134,165,153,113, 64, 98, 81, 87, 0,230,156, 13,165,235,184, 84, - 68,147, 46,192, 28,226, 41,233, 1, 73, 32, 32,132, 16,197, 84,157, 7,222, 32, -224,117,112,246,203, 14,140, 12,111, 35, 15, 18,149,128, 8,252,197,230, 13,186, - 23,147,104,215,211, 78,162,129, 35,175,192,186, 54,129, 46, 56,199, 26, 0,118, - 61, 67,154, 77,200,152, 2,155,120,224,183,113,112, 77, 56,144,125, 78,227, 4, - 7, 69,185,108, 26, 44, 97,152,212,162, 52,161,136, 37,135,197, 19,110,196, 50, -164,103,208, 98, 98,164,105,111, 27, 12, 5,144, 1, 99, 13,154, 18,196, 27, 39, -152,156, 89, 21, 43,252, 5, 70, 79,197,133, 68, 2,130,232,181, 54, 16,129,225, - 25,132,222, 14,141, 35,117,138,160, 33, 95,183, 6, 4,161,227,239, 88,133,154, -170, 7, 28, 17,195,205,120, 35,244, 68,230,224,184,204, 57,231,108,173, 50,156, - 77,179,243,204,132,182, 77, 87,235,154,226,209,152, 43, 84, 20, 12, 1, +// ../Source/Template/GB_apply_bind1st_template.c: +uint8_t GB_JITpackage_130 [394] = { + 40,181, 47,253, 96, 63, 2, 5, 12, 0,102,151, 74, 33, 0,181,142, 1,202,145, + 96,116,103,248,176, 11, 75,176,143,166,171,186,195,164,118, 60,130,136, 70,112, + 23,243,255,127,175, 15, 33, 66, 0, 67, 0, 62, 0,135, 79, 77,126,210, 55, 84, + 33, 39, 88, 23,113,219, 3, 93,204,167,139, 53,161, 92,174, 95,132, 97,245, 87, +243,197,238, 11, 94,226,164, 83, 40,159,189, 63, 30, 94,103,216, 93,187, 12,178, + 59,219,218,176,225,203,201, 68, 93,206, 53,163,145, 23, 10,145, 42, 20, 2,215, + 52,190,193,188, 65, 47, 11,175, 79, 41, 56, 86,217, 96,178,235,127, 36,197,138, +112,160, 44,167,213,108,157,241,217,219,185, 27,219, 77, 66, 89,141,173,118, 39, +148, 6, 82, 33,108, 54,244, 89,109, 45,215,155,243, 92,203,187,206,250,132, 56, + 84, 7,106, 97,168, 2,141, 87,127, 60,203,255,113,106,119,215,173,165,237,192, +205,114,154,254,196, 82,111,213,126,220,206, 64, 32,254,231,117,222,217,174,171, + 95,205,207, 32,239, 21,228,169, 95, 14,228,239, 44,161,216,248, 82, 74,233,156, + 27,204,248,102,161,148,130, 7, 49,150, 98,169,250, 20, 94,242, 21, 10,118,145, +100, 48,171,187,218,249,148, 63,133,244, 19, 6,139,204,207,229,200, 83,204, 98, + 77, 46, 12, 98, 65,124, 55,246,180,207,153, 63,113,168, 60,205, 40,141, 0,228, + 59,247,241,164,193, 96,132, 57,119, 60, 63, 34, 32, 96,130, 49,166,243, 78, 8, + 80,184,246, 29,199, 1, 73,233,106, 63, 12,175, 84,235, 29,160, 98,206,177, 35, +131, 17,107, 91,164,182,102,194,189,217, 29,220,129,212,221,105, 38, 70, 4, 48, + 95,251,168, 8,220,111,208,112,204, 70,144,167, 53,230,147, 23,157, 98,189, 65, +147,134, 48, 19, 58, 2,172,161, 14, 56, 90, 20,117,110, } ; -// ../Source/Template/GB_subassign_23_template.c: -uint8_t GB_JITpackage_142 [1589] = { - 40,181, 47,253, 96, 52, 27, 93, 49, 0,166,184,172, 41,176,148,177, 14,180, 64, -128,155,185,229,142,112, 94,128, 59, 82, 73, 16,216,154, 94, 73,180, 8, 34, 37, -222,203, 16,232,157, 37, 74,127,208,127,176,191,177, 43, 1,163, 0,161, 0,161, - 0,148,195, 50,164, 37,164, 14,250,128,100, 69,232,202,248, 95, 66,241,120, 87, - 42, 64,233,116,160,188,174, 80,196,181,206,234, 23,176,225,175,126, 1,239,236, -227,176, 74, 5, 40,151, 2,140,165, 55,108, 94,248, 6,175,169, 70,115,237,140, - 99,105, 92, 27,163, 29,139,198, 6, 84,144,181,201,107,220,161,227,188,129,208, -208, 57, 14,222, 66,192, 92, 48,150,133,131, 11,230, 21, 70,221,194,212, 52, 55, - 47,128, 63,109,217,118,116,116, 75, 4, 59, 16,219,157,158, 68, 67, 99,111, 94, - 81,103,250,137, 40, 28,247,105,199,244,241,237,245, 38,114,120, 77,229,241, 13, -157, 39,119,187,206, 18, 1, 35, 43, 8,197,120,146, 62, 44, 33, 36,110, 96, 64, -177, 24, 24, 4,109,178,239,252,221,206, 98,183,249,157,177, 19,139,107, 52, 31, -133, 46,145, 40,243,203,200,236,100,253, 54,236, 22,229, 89,248,236, 37,149,137, - 9,117, 13,107, 83,173,104, 30,226, 89,145, 55, 71,250,108,150,113,189, 73,146, - 90, 79, 82, 39,245, 77,231,154,176,192,217,108,111,179,112, 8,158,185, 74,248, - 43, 4, 59,241,218,140, 80, 47,207,238,240,189,229,183, 70,179,154,121,176, 64, -155,113,181,152,134,179,150,212,152,235,143,237, 92, 68,252, 32,232, 25,113, 32, -164,136, 35,225,157, 93,166, 36,137,169,132,157,203, 34,116, 85,200, 17,135, 66, -163, 2, 56,127,183,210,231, 6, 57,165,132, 66, 57,201,188,202, 50, 65, 33, 87, -122, 11,164, 82, 44, 29, 8,207, 5, 5,214,222,222,252,150, 45,233,214,141,212, -175, 17,236, 92,120, 46, 98,220, 50,173,124,164,191, 74,115,245,113, 59, 0, 42, - 21,135,223, 75, 85, 24,205, 51, 99,170,185, 47,235, 13,195,175, 40,217,125,245, -158,213,206, 53,199, 77,111,222,223,206,126,118, 32,211,187, 2,151, 68,202,146, -161,246,231,229, 91,151, 91,150,180, 89,150,232,148, 27,160, 79,252,184,116, 84, -167,141, 60,177,190,167, 12,175,217,247,199, 77,211,109,117,162,190, 17, 49,172, -170, 98,140, 49,142, 84,212, 53, 31,129,207, 24,245, 50,110,143,224, 23,104, 99, - 20, 1, 34,192, 45, 12,194, 45, 72,189, 34,244,201,144, 26,156,208, 8,122,228, - 21, 57, 29, 17,188, 23,148, 19, 10,127,114, 2,255, 67,250,202,227,189, 69,115, -234,144,249, 53,135,247,226,224,132, 62,163,120, 97,200,141,135, 35,146,208, 35, - 1, 67,160, 99,122,128, 15, 12, 16,188, 20,171, 82,180,249, 56, 87,106,239,227, -197, 42, 11, 69, 93,243,198,181,179,210,188,101, 89,214, 45,121,234, 64,114,116, - 73, 28, 84,222,214, 5, 73,120,111,109,144, 58,148, 19, 37, 10,166, 91,142,149, -102,159,179, 74,181, 59,100, 94, 53, 88, 13, 84,230, 31, 29,243,121,218,122,220, - 54,171, 15,215, 40,197,225,192,194,104, 55,235, 41,203,232,189, 91,153, 92, 6, -202,140, 61,170,133,100,205,145,186,175, 20,177,218,156,105, 82,186,109,247,126, -228,230, 10,129,133,168,113,185, 82,102, 68, 68, 68, 36, 41, 72, 65, 50, 28, 97, - 12, 98, 20,148, 16,106,230, 1,146,120, 80, 20, 5, 41,144,193, 4, 17, 68, 24, -145, 64, 68, 68, 66, 17, 17,145,160,156, 77, 7,176, 64, 48,165,157, 92,226, 77, -180,100,153,206,226,137,220,161, 42,211, 77, 20,222, 88,215, 64,168,211, 17, 14, -217,255, 73,127,224,232,164, 2,222,156, 68,198,183,174,253,242,230, 26,189,131, -218, 31,237,105,228, 0,151,199,224,107, 27,229,203,213, 35,121,132,160, 69,113, - 17,178,160, 41,138,153,185, 26,251,115, 91,194, 85,159,125, 43,124,204,183, 90, - 17,251,125,100, 58, 42, 4,156, 72, 33, 38,151, 29,109, 46, 1, 40, 0,124,157, - 65, 99,125,150,140,254, 17,164, 62,144,211, 48,229,248, 87, 49, 42, 80,124,107, -191,248, 56,213,232, 18,160,247,216, 16,204, 48, 0,237, 71,160,255, 77,104,144, -164,153,143, 31,182,124, 64, 37,121,161,106,140, 69,206, 2,162, 32, 16,143, 62, -120, 25, 6,206, 26, 75, 78,131, 36,255,133, 6,153,175,188,239,191,203,146,246, -189,252,174, 0, 60, 67, 4, 27,181, 33,156,231,255, 45, 44,157,115, 5,247,176, -136,124,140, 30,115, 97,135, 79,177,102,163, 86,106,226, 71,116,116,157,145,225, -190,148,113, 2,138,143,190,178,153,141, 16,130, 56,240,124, 18,154, 24,180,163, -221, 42, 0,175,120, 20, 38,160, 97, 13,129,202, 91,141, 39, 20, 67,138, 70,245, -126,169,186,234,152, 33,133, 44, 79, 41, 49,219,160,225, 0, 55,243, 64,165, 33, - 50,130, 63, 36, 26, 2,193,196,139, 98,144,171, 48,208, 10,140,191, 0,148,192, -193,102, 63,112,179, 11, 96,223,218,100,254, 79,196,146, 95,219,152,237,213,208, - 72, 45,247, 0, 29,204, 90, 36,172, 36,177, 5, 42, 18,194,229, 14,209, 7, 18, -152,225,104,184, 31, 24, 88,177, 35,149,242, 81, 49,142, 37, 92,145,197, 97,196, -203,113, 47,145,195, 13,226, 11,100, 51,188,119,244, 99,153, 68,138,185,153, 16, - 3, 0,201, 53,103,120,144,246,170,193, 1, 80, 64,203,129, 0,237, 10, 22,169, -189, 64,197, 20,159,165,156,129, 57, 45,121,224, 68, 92,110,182, 2, 60, 10,102, -128, 23,195, 38, 65,127, 69,168,237, 99, 56, 78,158,156,143,187, 86,121, 92, 96, - 77,126, 73,114,148,183,100,160,148,193,102, 67, 0,213, 62,166,148,214,193,217, -233,143,139, 61,218,234,147, 56, 20,253, 12,132, 3, 88,205,204,235,228,130,237, -130, 9,103,165, 2,222,213,233, 5,154,161, 66,104,202,181, 42,131,190, 16, 21, -123, 64, 26, 96, 40,155, 64,178,195,139,103, 51, 27,105,111, 97, 97,190, 62,141, -153,248,136,216, 29,138, 76,163, 53, 65,214, 21, 72, 48,237,238,179,236, 9,100, - 25,105, 71,168, 74, 86, 1, 50,133,121, 73, 67,175,116, 93, 77,250, 85,196,151, -144,151, 18, 76, 85,103, 22, 21,239, 68, 94,143, 44,130, 89, 6, 7,110,218,154, -102,189,208,165,228,189,253, 59, 12,233,252, 20,210, 5,147,209,133,121,167, 95, -237,173,187, 56,213,243, 80,232,170, 55,152, 91,109,147,238, 68,194,130,176, 46, -142,184, 98,238, 33,131,254,217,184, 14,122, 39, 53,125,248, 63, 50, 94,163,210, - 35,243, 2, 0, 1, 39, 24, 99,210,105,157, 37,250,104, 16, 50, 73, 40,195, 20, - 89,253, 84,129,122,220, 84,157, 35, 17, 28,245, 83,212,118,158,214,122,197, 89, -206,245, 75,119,225,193,159,188, 85,105,160, 75,120,212,239,188, 85,150,204, 31, -245,182,119,246,160,103, 87, 20,150, 29, 22,198,168,175,200, 85,149, 90,119,238, -187, 56, 29,198,238, 17,159,232, 39,140,112, 44,150,122,196, 38,222,240,126, 17, -213, 91, 26, 13,190, 29,228, 1, 62,109,221,117,119,147,142, 66, 12,166,173,129, -227, 67,115,155,204, 41,178,170,204, 39, 15,101,173,139,137, 45, 56, 88,187, 2, - 22,222,196, 66, 1,205, 10, 27,175,174, 46,210,191,223,209,155, 99,125, 67,211, -206, 25, 47, 55,130,195,174,253, 8,137, 77,174,197, 41, 26, 52,159,159,153,154, -137,116,184, 28, 81,165,138,182,198, +// ../Source/Template/GB_apply_bind2nd_template.c: +uint8_t GB_JITpackage_131 [392] = { + 40,181, 47,253, 96, 63, 2,245, 11, 0,134,151, 74, 33, 0,181,142, 1,166, 20, +101,120, 35,252,169, 19,156, 81,183,187,103,176, 51,198,100,132,156, 9,137, 81, + 99,243,255,127,175, 15, 33, 66, 0, 66, 0, 62, 0,213,103, 38, 79, 63, 28,178, +144, 19,234,195,109,119, 32,140, 57,189,212,201, 99,211,214,139, 44,238,231, 89, +125,185, 27,131,151, 56, 67, 90,229,117,119,199, 69,214, 23,119, 91, 78,131,238, +198,180, 92,105, 25,115,176,144,211,218, 98,143,200, 11,133, 56, 21, 10, 1,181, + 50,190, 65,189,193, 14, 19, 89,159, 82,240,171,178,193, 96,214,255, 72,138, 20, +161,154,238,150, 89, 93,191,240, 46,238,224,157,175, 38,153,238,151,111,134, 39, +147, 6, 82, 33,104, 55,228,221,239, 90,254,237,205,131, 45,231,184,122,122,168, +168,106, 82, 24,168,103,156,186,227, 90,254,143, 51,195,219,238, 79, 94, 14,212, +238,150,125,159, 89,126,154,189,222,182, 49, 16,152,239,117,157,115,151,227,172, +103,245, 53,168,187, 5,121,172,167, 3,250, 27, 67, 36,118,198,115,134, 82, 10, +194,127,147, 49, 38,170, 53, 49,150, 98,137, 58,165, 78, 67, 75,190, 66,185, 46, +146,204,117, 63,206,118, 78,245,169,168,158, 98,174,200,252, 96, 43, 95, 47, 75, +157, 88, 23,228,130, 25,239,220,101,159, 83,159,114,170,124,197, 30,143, 8, 64, +190,131, 31, 79, 26, 12, 70,217,190,113, 29, 33, 32,112, 2, 25, 91,121, 14,217, +236,130,195,128,164,187,218, 14,195, 95,170, 22, 7,168,124,231,208,145, 33,136, +181, 45,178, 90, 51,225,222,236, 14,237, 80,134,121, 34,219,123,198,195, 24, 46, +236, 81, 10,147, 8,249,138, 33, 79,107,204, 39, 47, 58,197,122,131, 38, 25,194, + 76,232, 8,176,134, 58,224,104, 81,180,184, 1, +} ; + +// ../Source/Template/GB_apply_unop_ijp.c: +uint8_t GB_JITpackage_132 [743] = { + 40,181, 47,253, 96, 68, 8,237, 22, 0,118, 35,106, 32,224, 26,231,144,114,132, +156, 16,101, 12, 86,110,108,163, 35,248,168,179, 79,154,173, 57, 2,155,140,146, +132, 25, 82, 98, 76, 8,100, 0, 92, 0, 96, 0,180,189, 12,161, 49,237,110,106, + 8,160, 10,167,224,181,234, 54,238,206,113, 6, 75,179,243, 48,220, 30, 21,137, + 67,130,208, 64, 28, 18,215,186,236, 17, 79,149,172,188,176,189, 5,230,138,154, +159, 71,207,166,153,128, 86,222,139,163,241,149,214,211,121,166, 60,152,233, 37, + 58, 61,218,182,189, 71,109,203,110,235, 35,167,220, 97, 77,147,179,149,166,184, + 86,104,173,228, 38,151, 27, 12, 24,193, 96, 8,143,188,187, 25,226,141,203,248, +206,239,244,220,205,155,113, 95,193, 51,183, 96,100, 58,159, 49,253,143, 97, 46, + 12, 43,220, 14, 67,217,189,193,124,186, 29, 85,239,119,175,167,173, 29, 73, 66, +160, 60, 90,137,202,147,244,190,242,148,123, 84, 78, 74,197,143,120,126,251,151, +249, 67, 18, 42,101,122,147, 78,101,247, 13, 59, 20, 18,132, 6, 59,105,183, 59, +110,207,111,230,142,232,200, 30, 31,137, 34,207,242,167, 91, 87,175,244,184,171, +119, 42,249, 55, 7, 3,200,227,135, 71, 50, 68,236, 38, 74,210,150,151,117,152, +242, 26,236,240, 53,202,109, 25,246,100, 95, 48,115,168, 20,253,173,223,195, 43, +237, 45,170, 94,162, 74,242,218,128, 55,243,185, 80,210, 58,243,196,213, 62,114, + 22,229,143, 39, 46,184, 50, 99,139, 79, 88,102, 58,144,225,131, 59, 53,183, 5, + 24,246,181, 71, 83, 1, 12,123, 97, 47,155,157,179,225, 66, 26, 14,103, 27, 89, + 81,167,232,204,154,102, 31, 73,147,201, 5,144,253,155,135,220,254,113,171,153, + 16,131,168,209, 14, 85,210,114, 98,140, 49,122,180, 31,185,205,114,184,143,229, +242,120, 4, 55, 14, 51,185,152,240, 4,243, 91,164,211,122,175,179,188,109,235, +155,244,154,207,210,254,213,103,143,206,239,144,159,254,184,166, 5,128,128,168, +113,181, 66,166, 70, 68,130, 4, 73, 10,147, 66, 99, 48, 66,130, 16,179,236,226, +192, 76,136,243, 16, 18, 64, 67,232, 36, 94,137, 68,242,199, 7, 61, 52,206,188, +214,118,135,196,127, 85,251,172,225, 91, 29,184,165, 73,137,180,254, 76, 84,208, +144, 88,166,218,236,226,113,139, 14, 27,151, 73,192,134,198, 90, 11, 69, 10, 82, + 1,137,121, 13,143, 13,223,171,143, 36, 15,219,136,201,249,126, 92,166,183,150, + 73,198, 78,145, 74,217,146,114,170,109, 26,166, 17,123,253, 60, 70, 32, 3, 29, +172, 50,174, 48, 67, 97,219, 78, 14,136, 1,175, 82,250,144, 11, 12, 99,147, 66, +204, 96,104, 27,237, 22, 96, 10,234, 24, 49,110,185,176,218, 24, 40, 64, 3,211, + 78,200,136, 59,236,183,162,241,138,163,118, 84, 51, 82,129,173,166,220,239, 31, +184,142, 55, 36, 17, 44, 9, 17, 68, 37,128, 50, 98,224,191,138, 49,177,172,206, + 17, 70,128, 73,146,144,180, 67, 70, 0,206,102,217,130, 58, 64, 53,131,229,186, + 52,186, 75, 36,118,249,114,243,174,196,177,132,204,182,137,183,247,142,227,132, + 81,241,123,121, 2,236, 86,130,114,228, 38, 75,159,130, 2, 27,133,150,151,140, + 8, 23,143, 88,207, 9,111,128, 14,133, 65,165, 46,205, 63,214, 9,165, 0,165, +150,254, 50,238, 84,143, 36, 54,210,166, 9,253,204, 52, 30,104,240, 93,144,174, +212,113,155, +} ; + +// ../Source/Template/GB_apply_unop_ip.c: +uint8_t GB_JITpackage_133 [372] = { + 40,181, 47,253, 96,136, 2, 85, 11, 0, 6,151, 72, 33, 0,181,115,106, 8,156, +239, 98,247,240,113,109,199,218, 70,187, 99,124, 64, 81,255, 6, 0,172,160, 66, +225,164,255,223,254, 67, 9, 63, 0, 64, 0, 60, 0,144, 91,243, 34, 46,127, 94, +197,156,186,204,201,197, 93, 10, 70, 22,141, 65,122, 47,157,107,120,137,245,246, +187,168,179,223, 61,182,106,182,111,107,167,166, 41,127,191, 59,254,248,226, 86, +236,126, 54,196, 68,221,189, 20,187, 34, 31, 12, 98, 53, 24, 4, 90,119, 29, 47, +252,188, 59,183, 52,251,140, 4,203, 80, 53,151,209, 59,191, 0,187,110, 53,219, +214, 36, 85, 99,219, 89,157, 84, 25, 72,197,210, 26, 4, 54,110,203,113,230, 60, +213,242,174,155,167, 14, 6,130,161, 82, 20, 8,134, 79,153, 60,133, 43,136, 6, + 25,203,238, 66,173,185, 12,127,178,216,148, 88,163, 13,114, 25,243, 66,123,240, +219,222,117,215, 81,144,222, 95,239, 59,245, 60, 20,188, 1,198,239, 51,134, 72, +100, 91, 67,143,255,127,140,164, 24,173,199,135, 79,225,250,249, 77,242, 91, 1, + 49,110,173,217, 48, 16, 99, 41,150,166, 43, 95,161, 96,154, 73,165, 50,177, 43, + 50, 77, 31,170,202,115,238,166, 67, 91,179,253,178, 79,211, 61,213,153,242, 19, +187,174, 8, 64,126,171,143, 39, 9, 4, 35, 75,223,248, 61,227,132, 59,126,101, + 86, 51, 13, 25, 0, 69,113,207,171, 92,137,150, 77,177,100, 32,118, 3, 46, 38, + 59, 92, 38, 67, 13,214, 18, 75,245,192,149,105, 11, 46,174,204,200, 84,120,237, +159,136, 44, 51,233,161, 48, 3,217,120,232,101, 46, 98,205, 59, 54,205, 31,194, + 76,209,161,176, 53,152, 39, 12, 10, 21, 5, 67, +} ; + +// ../Source/Template/GB_apply_unop_template.c: +uint8_t GB_JITpackage_134 [420] = { + 40,181, 47,253, 96, 45, 3,213, 12, 0, 6, 25, 79, 34, 0,213, 22, 3,106,132, +109, 87, 58,203, 2,207,174,120,108,139,249, 81, 66,108, 6,232, 64, 66, 1,239, +157, 96, 46,253,175,255, 80, 2, 71, 0, 70, 0, 67, 0,244, 87, 2, 97, 64, 96, +140,131, 1,113, 11,172,126,233, 43,170,145, 23,232, 73,226, 46,201,155,249,133, +161, 29, 68,204,213,156, 52,172, 54,107,198,216,125, 79, 12,101,209, 42,151,223, +206,189, 1, 22,236,174, 99, 38,237,254,114,137,207,143, 52,230, 92, 63,200,228, + 89, 70, 97, 89, 22,249,251, 83, 44, 54,190,248,126, 35, 74, 41,213,190,207,242, + 27,113,183,170,111, 31,113,131, 75, 60, 78,230,227,254, 83, 38,202, 80, 64, 96, + 86, 4,107,166,111,152,246,130,238,198, 54,164, 96, 86, 99, 11,222, 14,219, 68, +188, 66,104, 69,166,213,246,114,189,197,208,189,124, 28, 3, 35,238, 89,118,202, + 68, 32,148,112,189,227,249,218, 13,223,158, 43, 11,188,187,110, 93,217,241, 12, +173, 8,234, 91,184,210, 97,181,166,184, 63,242,196, 55, 75,208, 71, 59,142,213, +172,249,153, 44, 95,201, 80, 53,115,224,212, 77, 86,215,105, 42,223,182,127,104, +117, 80, 20,117,210,110, 79,124, 55, 46,193,127, 40,128,123,185,241,125, 40, 32, +101,144,180,228, 73, 99,253,231,129,209,107, 86,151, 89,227,106,238,151,248,151, +213, 21,124,174,228,190, 31,171, 71, 75,157,180, 91,249, 87,174,238, 89, 62, 78, +231,121,180,250,183,123,114,231, 1, 35, 32, 80,130, 65,202,172, 60,165,196,241, + 25,108,243,203, 23,184, 9, 83,208, 13, 75, 93,132, 55,103, 0, 24,132, 4, 27, + 35, 43,203, 15,129,249, 5, 98,122, 40,201,149, 88, 28,231,128, 85,108,173, 2, + 88,148, 4, 51, 50, 97,153, 29,155, 26,190,211,238, 20,154,129, 8,249, 58, 16, +132,104, 42, 73,129, 30, 52, 61,207, 76,108,227, 95, 45,124, 23, 90, 20,189,110, + } ; -// ../Source/Template/GB_subassign_25_template.c: -uint8_t GB_JITpackage_143 [1745] = { - 40,181, 47,253, 96,136, 29, 61, 54, 0,198,190,188, 41,176,148,177, 14,180,128, -192,141, 72,117, 36, 16, 19,131,205,214, 96, 4,104,153,188,130,232, 17,196,244, - 12, 38,227,151,160,191, 8,255,148,254, 52,189, 59, 46, 1,174, 0,182, 0,175, - 0,213,235,123,226,238, 52,101, 58,186,103, 15, 97,215,125,164, 99,176,211,181, -218,179, 54, 71,250,117,146,236,171,215, 57,207,219,156,232,199,192,110,122, 95, -214, 62, 15,211, 99,135,243, 56,123, 51, 99, 74, 6, 83,112,105, 78,155, 55, 94, -227, 53, 37,209, 92,123,187, 46, 26,245, 92, 48, 58, 32,204,214, 33, 94,227,206, -142, 51,231, 65,179,119, 93, 60, 52, 40,200, 20, 92, 20, 8, 50, 5,175,104,212, - 33,166, 33,179,115, 76,252,137,203,214, 68, 69,135,161,232,113,224,238,244, 32, - 52,141,189,121, 67,157,233, 23,162, 52,174,189,197,111,117,254,148,143,233,171, -183,215,156,200,227, 57,111,192, 24,170,107, 58,207,238,154, 58, 75,132, 2, 89, - 61, 40,198,115,244, 97,233, 0,241,129, 1,202,101, 96, 32, 19,217,231, 66, 98, - 92,153, 40, 98,210,170, 46, 79,168,178,117,205, 73,146, 90, 59, 30, 43,130, 66, - 98,184,132, 39,196,219,108,143,203, 85, 98,183,178,232,169,172, 78,169,126,156, -246,173, 73, 40,190,116,243, 3,233, 91,236,125, 77,215, 93, 55,189, 9, 50, 49, -241,120, 42, 30,168,139, 50, 43, 20,138, 36,186,213, 77,195,197, 70,234,156,206, -218,209, 27,119,253,177,160,136,137, 46, 7, 25,186,100,148,152,202,232,177, 40, - 50,107, 66,138, 46, 9, 18, 13,192,249,187,149, 62,183,199, 41, 37, 20,202,201, -230,149, 44, 15, 18,114,165,135, 30,149,106,180,195,178,212, 18,163, 14,250,128, -228, 68,102, 93,252, 47,161,112,188, 43, 13,160,120, 60, 81, 90, 86,246,112, 82, -111,245, 11,160, 80,240,108,211,196,111, 46,159,203, 84,228, 91, 7,175, 80,210, -244,213,123,150,244,251,107,178,159, 38,143,233,221,128,141,230,111,158, 57,167, - 86,157,103,123,218,123,244, 58,181,227,166, 35,147, 37, 57,129,153, 67, 40,109, -150, 31,116,202, 12,208,199,234,124, 42,217,137,152,231,134,253, 60,185,252, 74, - 43,139, 15,237,245, 99,182,198,223,189,246,168,182,187,173,199,148, 19,117,100, - 54, 42,154,205,207,120,106,125, 79, 57,246,215,205,144, 18, 25,169,147, 74,158, - 21,209,168, 87, 85, 85,141, 84,168, 17, 17, 0, 5,196, 37, 57, 85,156,163, 81, -252, 66,237, 46, 4,163,148,227, 46,231, 23,155,248,200,142,229,113,192, 42, 36, - 50, 11,148, 17, 17,202, 34, 40, 84,157,115, 90, 61,107,212,203,184, 61,129, 87, -135, 90,135,212,134, 11,118,203, 15, 23, 14, 3,148, 47,128, 94,150,198,149,125, - 68,149,101, 33, 59,216, 21,146, 17,131,136, 25,200,155,125,239,124,215, 81,145, -122,139, 57, 22, 74, 29,116,121, 30, 42,139,229,243,184, 77, 86,235,209,201, 33, -188, 35, 21,245,170, 82, 74,189, 99, 68,111,121,196,238,198, 41,195,230,231, 28, -187, 2,255, 56,167,181, 74,241,179,205,199,185, 82,123, 31,239, 49, 31, 4, 22, - 88,185, 32, 8,183,218,135, 18,187,212, 35, 72,138, 44,136,210, 33,135, 81,199, -100,196, 71,254,105,244,106,189,190,214,230, 87,242, 86, 41,233, 12,155, 87, 52, - 80, 67,201,205, 59, 54, 48,201,121,158,109,183, 87, 60,187,210, 27,158,177, 71, - 73, 37,139,133,129,170,104, 44, 84,181, 52,107, 94,133, 0,106,212, 52,235,105, -163,186,251,182,230, 52, 28,129,174,168,225, 45,154, 33, 17, 17, 73, 74,146, 66, - 97, 56, 65, 8,194, 80, 32,118, 82, 50, 31,146,144, 56,151, 65, 12,163, 40, 68, -136, 33,142, 24, 19,136,136, 72, 32,209,196, 72, 36, 19,206, 3,133,177, 98,222, -210,233, 61, 38, 34,173, 70, 86,220,154,146,130, 11,245,161,173,198,158, 6,199, - 40, 78,250,225, 11,253, 21,196,107,136, 0, 83,114,144,112, 84, 54,143,202,141, -198,116, 40,107,164,150, 13,228,208, 10,104, 69,249, 39,194,226,206,235,199,134, -114,163, 23,251,108, 63,249, 36,121,247,188,253,234,153, 89,195, 8, 40,152, 7, - 79, 1, 22, 20,248,185,154,247,142,219, 95,240,105,215,142,143,250,238, 15,251, -199,161,215,207,108,179, 79,114,150,154,119, 15, 78, 65, 77, 7,129, 43,232,157, - 0,124,106,171, 10,237,207, 14, 9,160,180,205,167,144,255, 39, 4, 52, 65, 89, -190, 58,198, 89, 51,222,110,207, 42, 15, 45,234,201, 35,160, 28,140,129, 89, 16, - 88,205,162,190, 64, 35,212, 78,183,224,139, 64, 72, 85,181, 86, 61, 16,154,240, - 21, 28,139, 67, 95,217, 4,186,226, 41, 30,252, 39,167,190,190,251,216, 40, 1, - 75,155, 42, 41,147, 9, 65, 81,236, 61,177, 17,203, 24,239,193, 1, 60, 77, 37, - 64,164, 2, 25, 22,140, 24,118,194, 2,127, 12,176,175,143,217, 2, 99, 92, 72, -171, 96,105, 28,104, 24, 46,243, 61,217, 50,186,189,145,220, 49, 57, 98,100,226, -120, 95,197,162, 35, 58, 54, 35,111,161,227,240, 29, 37, 55,107,141,148,162, 36, -236,240,121, 94,137,233, 63,117,251,169, 50,191,167,135,125, 72,221, 95, 3, 32, -197,213,231,113, 12,238,220, 24, 89,210,165,214,220,153,157,235,109, 32, 47,170, - 59,166, 27, 85, 37,104,237,226, 35,118, 48, 49,232, 81, 44,240,186, 41,162,165, - 34,177,208,247, 50, 62, 59,137,211, 98, 49,238,178,207, 47,153, 31,249,138,247, -123, 76,208, 23, 67,190,203,216, 54, 73,109, 11,142,164, 29,234,247, 49,254,195, - 34,169,103, 1, 93,188, 15,152, 23,197,132,196, 93, 97,192, 54, 50,127,202,238, - 93, 37,239, 25,139,194,217,185,207,190, 64,176, 21, 27, 11, 76,173, 34, 2,189, - 72, 98,211, 44, 86,114,173,101, 40,234,101,234,139, 69, 60,252,133,132, 26,241, - 51, 66,160,147,175,145, 32, 86,152, 59,199,102,182,139,174, 13, 30,110,190, 19, -174,218, 72, 74, 87,163,242,147, 26,119,181,102,164,146,103,126, 0,125, 95, 89, -250,125,140, 79,198,246,193, 33, 23,244, 98, 4,190,250,238,149,198,111,158,131, - 72, 16, 35,227, 31, 4, 74,115,149, 42,134,127,225,214, 13,104,243,129, 51, 99, -159, 8,181,151,181,243, 49, 28,170, 62,171,182, 64,209,242, 80, 30, 38, 75, 3, - 68, 94,140,129,187, 26,128, 61, 99,223,137, 2, 32, 93,180,113, 88, 71,111,164, - 9, 33, 9,152, 33, 23, 27,228, 92, 13, 45,128,237,171,247, 5,170,186,102, 62, -159,175,217,157,164, 45, 86, 95, 62,210, 50,141,247,146, 97, 1,154, 93,188, 23, -148,171,233,208,139,101,208,107,163,122, 21,197, 92,127, 97,111,185, 48,186, 29, -203,101,178,229,121, 4,137, 46, 27,219, 89, 95,130,181, 53,246,229, 21, 98, 53, - 28, 27,134,199, 46,122,252, 78,195,230, 68, 79,129,185,101,180,155,228,199, 94, -140,196,167,150,233, 59,229,250, 55, 2,249, 18, 27,161,138, 0,116,239, 83,130, - 36, 28,236, 91,199, 82,251,251, 82, 36,241,195,129,186,250,111, 85, 39,169, 16, -166, 75, 50, 20,182, 89,210,157, 11, 97,208,188,136,196, 68, 40,159,120, 69, 41, -185,115,101, 74,177, 86,162, 43,105, 17, 60, 28,122,194,119, 50, 69,109,165,195, -169, 50,230, 95,152, 13,145,227, 79,143, 45,232, 42, 48,133,226, 23, 19,100, 59, - 81, 66, 94,146,236, 98,125, 4,174, 7, 90, 32,238, 88,246,126, 5,152,179,224, -106,172,162,237,148,173,219, 22,245, 52, 62,209,178,187,174, 75,165,114,143,178, - 60,232,226,130,239,169, 71, 49,159,158,185, 85, 38,169,196,169,200, 9, 91,133, -210,128,223, 57,203,132, 1,183,127,236,192, 64,149, 52,120,179,135,202,145,222, -215,189,196,116, 9,254,219,142, 59, 72, 87,232,240,238,245,229,213,156, 75,178, - 60,166,220, 56,216, 71, 57, 80,177, 46,242, 65, 19,207, 46,118, 77,227,103,110, - 0, 17,100,154,147,243, 92,168, 36, 56, 29,173,119,178, 91, 62, 61,119,169,129, - 75, 2, 46,164,169,169, 26,216,100,166,243,230,154,185,198,182,139, 33, 18, 0, -139,210, 10,144, 7, +// ../Source/Template/GB_assert_kernels.h: +uint8_t GB_JITpackage_135 [986] = { + 40,181, 47,253, 96, 43, 14,133, 30, 0, 54,172,134, 40,208,206,108, 14,116,121, + 77,128,239,142, 86,102, 45,172,211,208,220,132,208, 82,163,158, 68,175, 41,230, + 96, 97,122, 44,178, 78,121,145,171, 25,120,225,124, 1,122, 0,124, 0,119, 0, +231, 79,223,211,176, 94,187, 26,206,221,109,218, 28,207,119,104,119, 58, 33,135, + 39,100,224,128, 52,184,147, 17,164, 30,169,220, 92, 95,202,243,106,176,165, 44, + 27,107,108, 42,140, 99, 50, 69,101,203,217,237,237, 58,157,221,243,168, 79, 8, + 16, 3, 72, 35,225,192, 0,114, 73, 70,159,108, 83,196,234, 14,234, 22,221,253, + 62,173,125,202, 80,152,164, 3, 99,165, 68,216,214, 8,102,248,118,152,129, 44, +253,250,145,206, 97, 61,166,149, 61,219,173,108,109,220, 36,148, 63, 30, 80,227, +241, 8, 23,134,105, 44, 91,118,217,104,191,192,225,178,113, 61,233,100,143, 19, +109,179,245, 56, 35, 67, 65,225,146,229,194,166, 0, 26, 49, 7,188, 7,124,219, + 44,236, 90,216,182, 7, 60, 50,217,235,200, 61, 32, 58,166,162,169, 36,128,232, + 92, 95, 68, 92,218, 68, 28,214,123,219,223,252,241,248,127, 8,162,104, 36, 86, +197,181,150, 89,153, 12, 5, 41,252, 81,112,233, 81,193,227, 44, 0,105,217, 69, + 66,157,227, 73, 67, 1, 40, 34, 57,237,253,243, 85,238, 22,222,149, 92,123,254, +214,143, 19,207, 54,124, 92,195, 27,114,175, 31,247,201,181,195, 9,174,125,182, + 81, 94,144, 61,119, 92,202,181,134,210,134,244,243,254,209,223,144,115,238,187, +125,253,186,130,149, 41,190,203,177,247,105, 70,158,183,240,188, 72,249,210,190, +237,223,200,243,147,183,158, 26, 63,151,172,234, 50,217, 42, 42, 58, 87,102,120, +100, 66, 6,172,204, 98,160, 24, 38,218,133,226, 32,136,157,188, 95,135,160,114, +167,211,245,254,126,244,223,188, 38, 73, 19,209, 49, 48, 46,129,210,196, 4, 70, + 25,235,194, 48,149,208,140, 40, 34, 42,178, 17,253, 62,145, 6,252, 34,169,130, + 19,127, 34,157,110,132,185,178, 73,198,170, 40,140,154,100, 15,155, 43,211,168, + 10,197,114,101, 87,165,186, 46,150, 75, 69,155, 88,152,149,209,104, 54, 86,101, +185, 48, 23,136,140,178, 92, 18, 11, 3,161, 57, 60, 50,114, 60, 47, 74,218,175, +145, 65, 48, 74, 26,114, 44,105,219, 79, 52,172, 92, 35,219, 43, 89,130,243, 93, + 54,215,146, 65,235,145,220, 73,131, 75,243,195,245,204,249,244,194,175,226,151, +242,135,111,188,118,234,100,119, 21,180,163,128,185,168,225,153, 66,104,104,100, +164,160, 32, 41,100, 88, 3, 48,134, 8, 72, 29,209, 57,114,152, 48, 2, 34, 92, +133, 56,132, 9, 8, 33, 70,128,168, 48, 5, 34,161, 84, 32,129,146,212, 3,211, +178, 97,205, 2,100, 18,253, 45,113,126, 28, 25,138,127,175, 49, 93,216,113,254, +172, 31, 54,136,193,206, 16,186,111,114,178,247,201,212,167,163,165, 33,231,164, + 42,219, 67,221,121,250,176,215, 28, 49, 36, 75, 80, 37,204,238,146,232, 6,170, + 96, 8, 80,219,139,232, 92, 26, 65, 65,130,111,197, 61,240,101,135,116,195, 42, +251,199,134, 34, 14,213,139, 88, 31, 63,240,224,197,171, 16,111,107,253,117,143, +131, 92, 60, 44,221,215, 87, 3, 8,160, 96, 0, 83,172,236, 22, 23,230,110, 67, +180,177,249,138, 57,247,147, 31, 29, 21,163, 12,105,229,101,194,192,174, 86,126, +139, 38,202,161, 46,251,106,149,230, 73,214,118,109, 58,144,152,142,168,210,138, +121,196,204,226, 30,212,209,205, 92, 99,143,229,154, 42,220, 60,116, 40, 62, 84, + 38, 15, 5,120,181,240, 14, 33,231, 73, 67,185, 9,130,104,227,195,126,136,220, +227,148,108, 79,226,181,138,104,209,181, 20, 45,253, 69,218, 87,156, 17,200, 89, +188,101,182,148,198,152,143,110,240,102,151, 6, 6,181, 87, 89,217, 67,183,132, +252,147, 52, 48, 7, 37,202,228,161, 23, 45,177,212,192, 53,217,136,215, 33, 61, +157,184,252, 9, 84, 89,196,154,223, 16,159, 93, 82,223, 92,139,135, 11,169,205, +226,108,183, 2, 20,168,152, 78,206, 9, 98, 44,107,202,224,164,125,125, 20,216, + 71, 72,173, 9,176, 86, 81,102,211,120, 7, 50,188, 2,235, 8, 10, 15, 25, 21, + 5, 52, 1,141,167,155,223,139,246, 71,121,166,131, 21,152,141,176,241,214, 18, +159, 86,253,120, 48, 43, 2, 64,124, 60, 66, 90,202,212, 86,183,187, 7,170, 46, + 96,197,135,137,211,254,100,108, 97,210, 68, 85,102, 10,227,143,236, 55, 56,158, + 42,242,215, 29,104, 2, } ; -// ../Source/Template/GB_task_struct.h: -uint8_t GB_JITpackage_144 [1044] = { - 40,181, 47,253, 96,110, 12, 85, 32, 0,150,172,131, 40,224,178, 56, 7,200,165, - 49,196,246,110,149,114,175, 91,232, 44, 85,172,126,117, 78,221, 61,125,223,139, -118, 3,195,191,163,235,155, 51,152, 97, 24,198, 11, 1,127, 0,116, 0,113, 0, - 43, 35, 64, 4,113,105, 48, 24, 23,154,204, 37,145,161, 52,217, 66,153, 69,128, -104, 96,178, 72,171, 97,143, 82,191,212,141, 89,108,185, 48, 66, 90,150,139,197, - 9,105,195, 96, 49,193, 5,213,229,189, 56,183,198,137, 23,223, 54,234,142,192, - 50, 96,145, 14, 42, 3,150, 79, 48,201, 29, 71,208, 99,248, 68, 61,164,245,244, - 68,205, 93,134,154,168, 52,250,234,195,101, 57,179, 29, 63,153,168,206,166,177, - 98,188,240,223,118,219, 94,125,244, 23,109,106,236, 83,155,175, 14,191,190,170, -135, 83, 40,145, 68,161, 4,147,226,159, 22, 20,249,179, 97, 50, 94,100, 60,215, -217,216,130,126,230,183,117,174,144,240,230, 26,179,206,221,196,254, 94,167,195, - 63,101,243, 12,101,236,124,126,244,214, 14,199,179,101,124,167,206, 15,173,207, -145, 17,139, 27, 63,212,113,184, 33,113,235,123,232,211,164,186, 59, 37, 57,157, - 87,248,130,149, 48,241,112, 23, 9,102, 39, 29,126, 30, 40,223, 93,111, 31,207, - 58, 8,159,228, 44,103,236,215, 31,234,153,216,151,227,135,212,114, 61,187,237, - 87,211, 4, 95, 26,106, 14,189,143,183,220,186, 89, 22,225, 67,242,121, 28, 38, - 63,217, 37, 39, 50,191,217, 19, 7,140, 26,151,174,240,229,237,183, 81,207,246, - 5, 25, 78,173,215,163, 97,111, 63,161,156,148,183, 86,199,150,202,249,105,205, -113, 66,195,203,159, 79,222,222,179,173, 29, 31, 6,193,184,136,113, 32,150,139, -150, 53,105,185,188,149,158,227,173,103, 81, 82,185, 88, 85,244,253,238, 64, 40, - 23, 41,138,118,243, 59, 98, 55,126, 87, 36,142,239, 9,119,101, 81,148, 69, 40, -183, 34,128, 32,185, 69,245,144,213, 5,173, 92,222,118, 4,225, 27,122,133, 83, - 2, 62,217,188,203,121,222,126,117,233,164, 30, 64, 17,249, 68,242,108,227, 19, -185, 27,104,211,185,163,155,187,120,119,109,168,132,146,253,181,220,150, 19,235, -229,252,114, 81,161,193, 52,100, 92,154,134,135, 40, 66,120, 52, 18,105,205,201, -230,119,131,242,105,114,183,170,170, 42,138,162, 40,203,178,172,138, 4,229, 94, - 28, 24,170,113, 16,204, 49,116,226,168,117, 60, 66, 95, 5, 6,255, 35,145,128, -232,168,177,169, 51, 53, 35, 34, 73, 10,146, 82,107, 80,132,200,144, 93,213, 1, -226, 0, 77,199, 66,144, 32,130,140, 68,129, 4, 34,129, 68, 19, 74, 26, 41, 40, - 72, 65, 27, 0, 72,128, 88,158, 32, 71,107,114, 21, 91,129, 54,246,137,216,191, -182, 59,137, 84,168, 36,165, 82,114,250,215,177, 37,193,240,186,115,218,147,115, - 17, 31, 5,236, 61,109,125,206,238, 21,168,115,227,180, 70, 43, 6, 35,185,252, - 18, 46,115,226, 80,152, 57, 66,129, 85,180,202,139,121,212,131,164,103, 68, 23, -101, 53,106,255,152,103,234, 56, 43,102,205, 41,252,226,159,130,234,163,227,213, -175, 54,201,207,104,184, 75,244,153,233, 80, 54,136, 72, 37,165, 17, 51, 68,196, -108, 31, 78,132, 72,154, 54, 79, 30,155, 4,151,209,193,226, 30,128,240, 71,252, -125, 21,133, 89,119,148,246, 7, 71, 46, 39,104,200,114,237,146, 94,176,233,114, -162,241,179,212,206,159, 86,192,116, 79,158, 48,177,222,184, 73,198,131, 9, 20, -164,247,156, 40, 50,167,161,184,251,239, 26,211, 80,196,208,178,144, 26, 14,191, -249,208, 24,226,177, 65,208, 57,131, 44,226,215,113, 22, 13, 7,116, 1,117, 53, - 23,221,242, 37,169,110,188,140,232, 30, 29,244,213,147, 17,150,176,212,125,199, -100,211,246,229,186, 59,117,180, 60, 68,126,148,121,245,102, 73, 76, 19, 39,111, - 51,134, 58,144, 36,146,136, 38,158, 24, 98,247,140,227, 13, 30, 12,201,219,185, - 29, 48,211,200,142,119, 0,115, 24,115,181,205,102, 35, 94, 68, 35,186,148, 95, -176, 61, 15,244,207,254, 55,110,176,109,154,177, 99,111,168,185, 38,170, 50, 77, - 42, 63, 28,207, 64,164, 30,165,160,228,116,223,115,152, 29,182,247,206,242,201, -215, 61,103, 21,188, 52, 73, 19, 8,145,139,210, 98, 13,188, 80,151,100,224,254, - 90, 12,174,179,186, 77,120,252,227,222,201, 44, 62,184,244,160,127, 4,168,129, - 78, 58,102,243,124,150,153,131, 35, 64,190,133, 25,120,135,247,134, 64,145,143, -116,240, 29, 5,212, 6, 77,165,160,105, 16,172,167, 9, 72,209, 13,164, 23,220, -212,142,132, 72, 18,100, 52, 10,223,101,100,249, 55,249,237,195,174, 84, 56,206, -201,224, 75, 97, 68,131,166,170, 14, 19, 94,239, 53, 16, 50,187,224, 64,223,232, - 95, 15, 96, 12, +// ../Source/Template/GB_atomics.h: +uint8_t GB_JITpackage_136 [3783] = { + 40,181, 47,253, 96, 28, 73,237,117, 0,218,118, 0, 21, 44,160, 18, 25,231,228, + 12,253, 91,129, 94,138, 7, 25,170,124,217,114, 39,149, 21,153, 26,229,191, 59, + 77, 77,177, 59, 94,202,254,127,141,229,145,195,235,240, 58,242,228, 56, 67, 59, + 1, 78, 1, 71, 1,219, 45,181,179,126, 52, 42, 86, 65,167,179,180, 77, 5, 64, + 64,168, 56, 22, 23, 76, 6,163,114,169, 21,175, 21,144,201,126, 38,249,210,143, +204,148, 67, 60, 79,161, 40,111,115,187, 54,237, 61, 34,201,184,114,181, 52,174, +155, 29,121,101, 5,193,173,149, 63,159, 50,203, 23,247,146,246,130,228, 17,180, +187,156,183,212,178, 28,232,179, 95,197, 65,251, 82,132,138, 80, 6, 62,103,233, + 96,130,194, 82, 25, 79, 53, 66, 48, 74,236, 45, 6,138,222, 32,105,197,173,240, +185,157, 41, 34,121,148,151,107,109,147,115,232,182, 94, 10,159,151,108,201,111, + 49, 18,132,162,232,201, 82,211,182,254,116,216, 60, 43, 92, 45,147,239, 16,136, +197, 47,156, 8,149, 71,119, 86,108,174, 94,179,173,219,105, 43,134,193,172,151, +178,246,222,179, 78, 7,207,242, 15, 42,114, 13, 38,170,150, 81,184,215,123,177, +249,184,103,167,154,230, 30,234,220,210,222, 14,241,160, 38, 38,197,158,211, 42, +167,176,238,181, 51,170,117,153,180,163,190,189,152, 44, 52,208, 80,150,126, 88, + 91, 55,239,137,121,118,115, 8, 43,151, 40, 38, 30, 19,147, 1,200, 99,226,141, + 23, 93,234,253,184, 6,167, 42, 15, 97, 83,102,139,113,137, 83,185, 96,128,105, +142, 31, 80,180,217,105, 28,157,187,113, 32, 28,171, 38,127,150,215, 59,202,157, + 27,247, 82,235, 20,140,234,183,153,156,174, 98,240,224, 14, 7,196,228,112, 4, + 84, 70,245,147,150,195, 65,105,109, 78,140,162,202, 97,121,168, 51, 94,158,206, +197, 30,199, 16,116, 27,116, 31, 75,163,103,161, 99,173, 91,161,150,109, 95,138, +151,185,111,225, 1,199,132, 21, 36, 53,151, 48,155,138,165,234,136, 72, 42,201, + 36,227, 90, 43,174,212,208,201, 9,209,102, 9, 10,233, 6, 25, 79,129, 52,162, + 87, 48, 15, 42, 27, 13,229, 6, 30, 20, 21, 10, 14,213,130, 81,105,160,153, 80, + 77, 39,227,255, 67, 64, 52, 30,144,201,129, 3,144, 39,184, 7, 15,111, 52, 52, +152, 8, 22, 77,166,138,110, 29, 64,244,185,215, 23,183,111, 73, 28, 76, 35,227, +237,123, 30,205, 92,187,119,229, 34,147, 97,112,117, 10,165,108, 68, 36,151, 36, +144, 75,147, 87, 60, 35,154,160,208, 56,152,112, 41, 3, 35,194,229, 15,136,178, + 59,213,170,133,166, 9,119,235, 44,140, 82, 91, 43,163,204,190,201, 92, 72,155, +140,133, 6, 17, 42, 23, 22,204,101,194,133, 6,131,146,177,108, 41, 64, 0, 77, + 30, 58, 43,186, 63, 20, 40,120,130, 4,247,112, 13, 31,112,199,167, 71,156,210, + 44,181,167,105,154, 50, 36, 36, 36, 36, 42, 52, 25,183,243,140, 75, 94,163,188, +118,162,123,143,114,187,149,181, 12,237,108, 88,248, 94,105,110, 18,155, 91,225, +167,244,227, 48,149,214, 47, 81,154,123,146,206,101,208, 37,203, 41, 43, 43, 6, +202,112, 65, 0,165, 65, 18, 66,119,169,241, 54, 75,242,140,251,118,209,181, 55, + 7,223,221,177,185,160,189,203, 60,142, 53, 73, 97, 39, 10, 67,179,167,144,150, +225,250,113, 29,123, 38, 9,150, 8, 23,204, 37, 11,149, 57, 89,209, 77,202, 14, +242,233, 13, 11, 74,163, 84,235,218,153,189,101,178, 37, 36, 90,231,246,144, 64, +166,247,233,172, 2,164,251, 89,160,202,161, 88,234,137,171,157,203, 57, 31,121, +155,209,253, 18, 53, 83,126,113,167,217, 82,227,204, 38, 83,121,184,246,130,230, +118,248,147,201,100,242, 15, 8, 26,141,104, 64,244, 70,196, 21,238,116, 80,126, +162, 40, 34,193,240, 70, 20,145, 84, 22, 28, 76,181,177, 92, 92, 44, 42, 74,104, + 94, 90, 18, 92,247,113, 84,111,106,185, 76,203,116, 78,119, 49,235, 53,219, 57, +197, 71,245, 56,221, 76,192,208, 84, 44, 88, 78,147,246,219,142,203,154,246, 88, +177, 91,218, 89,126,173,150,229,116,118, 92,229, 23,183,235, 17,156,137, 80, 79, +116,216,203,176, 92,170, 75, 33,118, 1, 26, 66, 66,194,195,172, 38,179,138, 72, + 62, 28, 65, 5,130,138, 14, 18, 72, 66,137, 77,205,120,147,215, 41,247,158, 81, +179,237, 29, 85, 65, 83,217, 97,237,222, 32,141,172, 31, 57,161,123, 18, 78,238, +114,198,253, 84, 15,187,121,150,203, 90, 91, 78,194, 71, 8, 14, 42, 13, 38,115, +201,102,253, 96,189,193,171,113,217, 84,104, 80,177,108, 22,178, 83,150,146, 36, +153, 88,184, 39,110,247,134, 97,252,221,250,158,155, 20,118,220,178,251, 76,150, +110,120, 18,178,206,184,142, 23, 67,237,152,160, 0, 57,122,155,162, 58, 50,249, + 2,175,162,168, 82,128, 81,214,236, 4, 87,107,131, 47,246, 6,181, 87, 85, 81, + 62, 34,137, 62, 65, 33,129, 72, 32, 82,244, 73,244, 71,141,104, 82, 89, 30, 68, +168, 64,176,176, 96,169, 56,162,136, 72,218, 44,125,202,106, 69, 68,159,205,219, +202,150,229,102,187, 39,163,155, 78,121,190,119,158, 18, 97, 66,168,195,218,201, +182,216,145,213,163,106, 69,157, 49,110, 26, 37,167, 37,177,126, 20, 36, 33, 52, +160,139,235, 89,110,247, 90,103,128, 0,159,151,136,132, 85,210,118,207, 61, 4, + 99, 6,206,168,172,215,181,109,177, 8,205,133,110, 55,219,126, 67,192,108, 98, + 84,199,157,112, 55, 6,211, 85,224,241,168, 28, 26, 23, 70,233,240,176,164,182, +232,161,218,237, 71,178,118,200, 58, 53,115, 83, 33,235,188, 90, 89,126,246,110, +244,108,183, 59, 1, 2,188, 27, 7,229,158,244, 35, 59,174, 33,163,239,223, 54, + 26,186,235, 67, 69,197, 17, 52,174,188,193,117, 23, 6,199,162,146, 96,225, 84, + 18,171,197, 50,211,172,138,171, 27,207, 13, 78, 65, 82,251, 30,243,108,242,163, +151,120, 91, 45,201,210,249, 84,203,208,185, 73, 71, 68, 68, 41,236,108,210,154, + 78,194,107,130, 98,147, 64,182, 75, 82, 39,178,131,238,245, 35,146,179, 12,197, + 10,246,221,219,109, 85, 73,240,237,165,247, 60,111,175,125,170,245, 36, 21,110, + 18, 36,169,117,249, 41,247, 22,106, 59,225,150, 61, 99,121,186,236, 1,132, 28, +168,211,217,145, 20,102, 14,213,136,136, 72,146, 36, 25, 14,211,128, 24, 20, 24, +142,146,167, 83, 97, 89,240, 13,195,128,210,105,164, 36, 26,226, 16,142,161, 16, + 20, 33,142, 16, 67, 8, 65,196, 8,136, 0, 9, 36, 32, 34, 51, 52,198, 57, 36, + 77, 71,188, 5, 53,202, 27,216,180,190,243,235,243, 47, 61,122,172, 38,178, 77, + 47,188, 29,209, 11,127, 72,124,165,150,102,113,248,208,157,146,185,119,180,233, +215, 68, 19,250, 34, 0, 28, 46,184,136,113,181,144, 38,154,170, 62,151,110,188, +141,181,192,195, 19,106,190,179, 78, 79,149, 98, 90,233,184,180,162,140,229,231, +103,106, 39, 1,239,229,171,159,194,176, 49, 63,136,101, 60, 11,246,240,140, 72, + 17,148,208,234,255,187,175, 59, 89, 16,176, 34,178,160,154, 36,202,125,113,239, +229,152,238,114, 64, 86, 88,205, 70, 45, 46,193, 54,179, 77,183,206,124, 32, 93, +190,194, 83,219,138, 27,102,121, 50, 15,218,191,104, 29,142, 52,173,171, 52,107, +143,222,221, 8, 36, 2,160,165, 93,236,128, 45,253,103, 36,177,130,149, 51, 85, +118,127,156,106,123,164, 69,112,117, 53, 45,170, 80,193, 2,161,153, 91,237, 60, + 68,220, 74, 86,214, 16, 44,172, 42,177,112,206,157,252, 27,193,131, 5, 4,233, + 64,110,156, 4,163, 15,110, 54,155,122, 18,153,117,100,102,247,232, 75,109, 0, +219,131,128,119,146, 33, 68, 59,158,137,248,207,156,156,225, 3,117,155, 52,220, + 24, 65,209, 20,145,140, 97, 14,100,205,202, 78, 4,173, 77,116, 66,124,197, 19, +168,147,160, 95,226,207,138,155,174, 85, 59,138, 46, 11,232,193, 67,250, 9,243, + 1,165, 57,186, 14,171,134,179,145,211, 28, 28,251, 84,154, 15,190,128, 85,107, +246,164,105,212,179, 61,216, 60,128,194,152,101, 42,109, 60, 6, 88,136,249,190, + 61, 27, 71,126,219,198,148,203,116,233,184,226,112,149, 57,243, 73, 93,201,227, + 6,246, 57,220,243,101, 93, 5,220, 72,169,243, 42,234,105,210,170,120,104,178, + 36,193,223, 32, 20,116, 36,156,151,163, 14, 77, 81,168,188,107,166, 41, 52, 22, +154,130, 19,147,207, 61,227,253, 44, 47, 1, 48, 37,151, 93,240,234,115,114,117, +224,196,145, 37, 20,151,128,209,250, 1,107, 43,108, 95, 80,156,161, 71,140,106, +239, 88, 73,113,233,137,154,102,161,177,189,249,228, 56,117, 50, 93,137, 22, 37, +111, 51, 34,253,135,126,121,221, 79,224,164,131, 16, 59,161, 80, 40,161, 90,141, + 87,127, 74, 78,239,152, 2,227,123, 44, 40, 89, 93,233, 39,205,254,234, 3,208, +152, 79, 60, 1,171,196, 70,196,176,109,216,172,240,214,167,130, 84,195,103,137, +213,176,209,188,254, 44, 51, 62,223,110,144,175,127, 69, 36, 76,194,192,118,141, +174, 76,185,125, 28,190, 64, 89,121,251,136, 59, 37, 58,232,122,166,162,112,144, +157,178,246,242,184,131,242, 40, 21, 88,244,194, 48, 75,165, 67, 37,102,164,225, +114,250, 90, 92,136, 45,161, 37, 26,193, 76, 0, 24, 73,154, 13, 97,202, 24, 83, + 49, 10,168,123,129,239, 94, 18, 77, 31, 18,108,169,111,150,126, 96, 6,223,224, + 17,149, 11,160,234,248, 4,119,141,187,135,248,234, 54, 15,114,113, 52, 29,252, + 54, 22,142, 75, 27,188, 6,248,112, 49,208,242, 89,208,205, 51,118,204, 39, 61, + 54,146, 30,224,239,112,195, 22,228,133,166,118,168,232,244,220,194, 86,110,107, + 1, 85, 96, 75,179,132, 7,131, 76,142,194,100,176,212, 65,100, 94, 38,168,171, + 26,204, 64, 41,119, 54,203,238,239, 6,128, 87,120,146,107,140,167, 98,117,110, +191, 13, 31,190,218,181, 41, 64,218,164,161, 51, 58, 92, 70, 30, 80, 37,105, 20, +222,219, 56,138, 87,140,210,231,161,111,226,124,231,140, 86, 43,224,231,124,186, +230, 66,211,174,223,111,151,129,207,253,120, 78, 86, 99, 2,126,162, 49,174,161, + 54, 1, 61,239, 9, 87,102, 36,191,184,145, 68,201, 13,165,221, 8,181, 45,104, +229,217,104,248,186, 48,161, 35, 21,248, 18, 33, 27,158,204, 71,194, 29,203, 71, +228,213,108,170,173, 89,245,255,120,222, 92,142,178,229,169,127, 20,148,154, 50, + 48,210,111, 91,162,230,235, 84,111,115,160,148,154,248, 81,165,150,176,172, 8, +220, 96,127,151,229, 90,245,174,102,173, 89, 99, 50,229,219, 6, 37, 50, 87,185, + 74, 15, 91,224,230, 46, 9,146,170, 56,168,138,169, 53, 79,193,217, 82, 88,244, +188,113,120, 75, 48, 13,154,122, 26, 63,194,129,164,254, 61,202, 3,117,139,192, +131,157,231, 23,211, 11,237,135,207,110, 99,212,241,240, 35,124, 83,131,142,234, + 11,189,194, 45, 45, 23,165, 19, 17,254, 26, 82,230,170, 41,109, 63,194, 87, 18, +183, 61,191, 60,149, 30,244,182, 36, 75,181,182, 34, 1,195,121,141,124, 33,108, + 79,120,239, 72, 62, 10, 28, 51,130,120,203, 95,122,240, 85, 53, 92, 83,163,194, +253, 50,186,141, 35,204,247, 80, 45, 57, 37,145, 51,156, 48,145, 97, 28, 85, 64, + 17,155,207, 86,189,236, 43, 30,151,219,255,245,104,102, 11, 7, 47,126,209,146, +205,244,172,133,171,255, 68,192,174,124, 78,240, 87, 21, 34,168,111,208, 35, 82, +129, 11,102,145,203,126,184, 15,218,127,220,125,126,235,236,154, 24,174, 14,242, +102, 57, 38,136, 60,162,108, 19,198,184,158,155,174,229,188,250, 70, 69, 52, 64, +186, 33,153,154,238, 59, 9, 17,116, 30, 80,196, 80,238,234, 4,206, 24, 6, 22, +207,125, 33,199,201, 4, 11,132, 84,177,165, 35, 85, 79, 71, 18,183,100,210,220, + 85,158,136,117,167,201,217, 0, 99, 59, 80, 69,126,167, 36,226, 21,207,102,224, +112, 20,133,185,202,114,227,137, 54, 69,208, 9, 34,214,166, 14, 83,209, 85,172, + 40,246,203,114, 52, 43,149,139,195, 74,240, 30,228, 0, 4,143,216,144,117, 20, + 84, 40, 82, 24, 75,160,192,133,226,152,251,145, 24,161,211, 92,148, 45,193, 12, + 41,164,203,165, 88,156,166, 72,244, 97,224,137,195,207,202, 1, 79,181, 55, 36, +232,197,197,116, 49,240,111, 24, 16, 47, 40,121,162,193, 79, 16,143, 44,248, 68, +242, 93, 84,204, 69, 95,105,161,242,150, 6,114,114,115,124, 44,143,152, 46,208, +209,158, 86, 53, 52,141, 1, 68,194,221,231,120,134,103,222,147, 22,220,172,167, +153, 24,187,105,208,192,139,148,177,228,113, 1,202, 31, 37,138, 74,105,188,216, + 52,180,215, 72, 90, 85, 63,183,183,131,217, 29, 96, 83,234,188, 40,215, 40, 31, + 38,177,228, 58, 57, 13,177,175,242,205, 80,132, 26, 5,238, 71,237,244, 67,195, + 83,156,164,100,221,196, 43,190, 13, 63,123,116,186, 31, 92,232,168,135,100,195, + 94, 7,238,202,194,110,166,191, 9,251,128,150,246, 5,155,225,216, 17,230,146, + 81, 69,225, 45,137, 10,224, 90,144,223,186,226, 98,154,210,219,110,112,144,168, +144, 2,250, 83, 62,127,124, 30, 5,237,195,201,129, 29,228, 14,133,236,185,231, +100,110,170,110,144,162, 40, 70,237,190, 14, 11, 30,175, 24,163, 71,135,160,177, +114,161, 27,176,170,124, 10,151,167, 65,163,130,219,100,174,149,209, 60,120, 42, +172,176, 28,180, 15, 40, 79,208,107,203,230, 37, 80,222,128,181, 36,105, 83,255, + 51, 28, 16,255, 49, 79, 90, 0, 4, 81,137, 69, 77,135,117,128,162, 38, 34, 37, +112,197,132, 30,108,132,152,231, 40,169,163,222,111, 71,150, 87,103, 64,205, 93, + 97, 51,228, 78, 77,183, 23, 58, 46,187,213, 83,116,172, 13,216,130, 15,226, 37, +228, 21,195, 13, 89,168,211, 94, 93,220,231,165,102,117,240,119, 38, 7, 66,239, +207, 47, 37, 95, 33, 70, 33, 14, 63, 28, 30,169,101, 56,169, 51,127, 98, 79, 90, +101, 1,178, 5,179,145,107,239, 99,146,194,148,130, 74,179,208,125,169,112,158, +181, 99,159,132,214,170,247,106, 0,244, 28, 95,187, 85, 82,140,252,146, 16,147, + 12,176, 31,248,226,225, 1,178, 56, 74, 18,179,200,227, 73, 90, 33,234, 18,114, +182,169,214,112,172, 72, 7, 61, 75, 9,104,106,170,245,215,123,214,239, 96, 41, +109, 64,186,128,136,187, 53,249, 41, 49,242, 9,135, 38, 19,196,119,113,232,197, +152, 21,172, 12, 46,158, 40,197,168,251, 62,105, 21, 55,241,244, 72,130,168,179, + 34, 26,124,185, 54, 32, 72, 96, 24, 70, 28,150,206,196, 43,215, 22, 86,100,121, + 54, 20, 50, 7, 54,111,201,155,182,137, 10,107, 52, 63,248, 87,119,234, 72,170, +130,186,232,114, 43,154, 88, 85,227,173,108,194, 27, 78,212,120, 38,107,176,243, +156,116,155,197,206, 6, 91,247, 54,202,245, 29,120, 39,188, 14,119,100,154,145, +201,142,218,172, 44,107,136,171,100,110,120,248,129,240, 72, 38,105,176,253,151, + 54, 26,180, 16, 83,221,234, 30,118, 98, 47,127, 72, 39, 32,108,170, 31, 21,131, + 31,148,127,211, 40,228,254, 20, 11, 7,163, 14, 94, 81,126,159,142,163,122,246, +196,178,116, 98, 27, 53,138,112, 67, 82, 68,231, 73,180, 96,129,166, 88, 0,114, + 56,181, 93, 70,205,154, 61,127, 57, 24,164, 57,190,108,107, 76,197,114, 86, 42, +167,192,187, 54, 32, 83, 74, 40, 40, 89,222,253, 34,174,135, 27,190, 12,142, 80, +196, 28, 66,118,151, 16,115, 43,104,116,194, 18,168, 56, 71,193,165,227,218, 7, +160, 52,223,236, 8,177, 18, 99,143, 84, 71,223, 15,155, 13, 33, 76,133,154, 89, +116,251,225, 18, 53, 63,203,128,170, 2, 9, 39,223,250, 81, 87,177, 8, 71,168, + 7,138, 98, 22,203, 53,211,238,182,160,253,209, 58,238, 35,138,108, 41,243, 84, +192,120, 25, 8, 49, 4, 29, 44,232, 54,177, 75,193,159,155,252, 61,128,129, 44, +143,149,204,150, 28, 61,100,172,149,160, 20, 10, 95,127,122,228,196, 90,193,238, + 68, 2,240,222,217, 82,151,116,190, 38,213, 39, 39,125, 34, 44, 68,210, 83,121, +200,147,108,180,247,112,211,162,200,206,117,144,197, 64,249, 18, 85,163,113,208, +240,181,162,139, 92,255,190, 68,248, 34,215,170,109,188, 56,224,163,119,174,157, +194, 76,102,148, 79, 57,111,156, 77,134,209,106,253,112,145,169,248,133, 24,253, +135, 0, 79, 95, 43,181, 37, 8,206,177,221,169,152, 82,146,245,190, 90,154,218, +137,235,209, 11, 28, 44,122, 66, 68, 66,139, 44,222, 75, 46, 58,250,158,213,255, +111,235, 67,119,224, 93,238,254, 14,105,139, 35, 30, 49, 90, 98,224, 91, 61,241, +153,242, 3, 8,239, 75,253, 85,183,129,214, 30, 28,232,119, 13,204,120,236, 71, +250, 4,251, 90, 87,230, 93,129, 43, 46,142, 70,174, 47,233, 72, 47, 78, 74,156, + 76,202,247,121, 39,110,103,104,201, 28, 52,108,195, 45,168, 0,255,235, 16,173, +219, 11,157,204, 35, 71, 4,131,241, 12, 71, 63, 28, 81,226, 13,181,160,154, 76, +254, 17,229,199,149,193, 99,153,133, 90,197,203,198, 72, 1,224, 21,228, 48,183, + 62,208,226,155,171,190, 91, 6,215,106,241,196, 22,120,252,183, 92, 39,219,193, + 20, 63, 66, 73,190,248,242, 11,249,249,130,187, 18, 64,139, 8, 15,140, 90, 42, +247,154,161, 78,155,126,199,165, 86, 67,119,152, 78, 18, 7,203, 26, 63, 78,176, +194,188,176,105, 10, 47,152, 41, 71,168, 52, 63,200,208, 4,239, 89, 62,205, 83, + 11,163,253, +} ; + +// ../Source/Template/GB_binary_search.h: +uint8_t GB_JITpackage_137 [1194] = { + 40,181, 47,253, 96,213, 44, 5, 37, 0,214,168,121, 40,224,208, 56, 7, 58,199, + 12,161, 27,171,226,180,168,133, 78,196,187, 87,189, 99, 21,175,191, 45,253,101, +118, 56,248,103,240,230,140, 23,195, 24,131, 49,132, 16,112, 0,112, 0,106, 0, + 27,199,185,117,192, 52,169,172, 8, 75, 13,118,153, 87, 42,247,214,119,114,188, + 34,108, 39,107,189,137,120, 20, 36,170,200,162,202,150, 57,183, 87,126,154,115, +142,203,252, 17, 88, 19, 43,114, 64,153, 88,167,180,199,159,109, 17, 84,120,149, + 57, 73, 94, 10,234,206, 31,150,217,104,100, 7,107, 67,133,109,133, 29,198,183, + 67,216,116,109,115,143,124, 43,181,135,159,253,191, 34, 43,169, 85,200, 54, 35, + 85, 56, 59, 35,211, 52, 92, 34,153, 34, 18, 73,177, 65,221,111, 86, 96,112,103, + 31,225,113,230, 90,142, 36, 3, 27, 29,144,156, 99,186, 56,245,158,231,245,227, + 66,173,185, 46, 20, 89, 4,229, 73, 16,244,123,253, 85,229, 88,233, 63,179,227, +100,205,218,254,223,177,220, 25, 32,186,113, 58,111,193,168, 93, 85, 85,119, 99, +174,179,184,231, 44,239,103,191, 95,249,195,119,246, 43,221,152,235, 64,109, 95, +121,184, 56,157,137,103,111, 28, 3, 38,135,204, 33,129,147, 89,192, 50, 10, 78, + 6,226,210, 4, 28, 20, 93,222, 30,221,114,215, 59,121,163,231, 73, 79,154,240, + 85, 99, 76, 14,213,123,109,125, 13,141,165,246, 56, 97,201,114,234, 29, 29,151, +199, 59,156, 5, 12,203,144,110, 7,226, 56, 67,116,187,133,178, 82, 16,223, 62, +115,159,217,246,240,244,126,142,104,124,228, 17,173, 21,206,219, 46,177,229,184, +100, 57,229,144, 11, 5, 50,251,182, 66,238, 58,248,219,127, 91, 83,125,132, 99, + 60,190, 89,110, 93, 2,185,156,185, 24,211,180,117,156, 28,208, 37,139,178,176, +203,242,203,173,158, 28,115, 42,179,253,230,179, 80,148,196,181, 97,128,152,192, +188,181,201,150,107, 87, 89,184, 52, 15, 17, 21, 89, 9,242, 83,152, 55, 5,240, +119,121,253,254,165,243,149,178, 28, 61, 58, 61,180,111,223, 10,187,215,185, 54, + 18,152,128,192,197,242,231,249,169, 87, 85,122,132, 87,150,183,249,156, 17, 57, + 42,223,199, 80, 32,148, 72,198,193,217,159,174,244,103,203,193,173,226, 80,129, + 19,168,241,165, 50, 35, 34, 34, 18, 68,146, 36, 73,107, 97, 16, 66, 8,130,210, + 74,120, 7, 34,104, 36, 17, 50, 20,139, 32, 8,141, 24, 66, 4,134, 24, 33, 17, + 42, 34, 32, 2, 67, 4,132, 8,137, 20,156,174,198, 14, 5,242, 77,137,222,169, +181,214,210, 31, 59,255,100,231, 31,146,139,167,122, 49,222,139, 37,249,200,117, +125,239, 88, 19,205, 48,180,135,193,247, 55,192,157,245,155,172, 85,169,127,104, +255, 45,158, 92, 38, 64,243, 34, 7,254,182,111, 93,178, 57,241, 53,200, 89, 61, + 30,225, 12,227,172, 8,246, 30,121,164,107,121,195, 13, 79, 10,222,185, 61, 63, +212, 22,149,203,255,150, 0, 84, 11,176, 7, 19,156,170, 70, 75,172,159, 48, 73, + 8,243,250,186,122, 14,251,161, 27, 34,113,235,171, 63, 17,198, 76, 32,196, 30, +192,158,173,238,123, 5,227, 19,140, 26, 72, 19,202,185,133, 88,161,152,102,204, +130, 30, 64, 80, 81, 93, 61, 4,181,110, 22,238, 51, 23,114,240,176,175,242,232, + 75,223, 61, 68,104, 96, 62,132,225,203, 66,209,132,175,225, 66, 85, 55,216,164, + 9,144,210,106,128,130, 42,223, 58,237, 52, 38, 72, 11, 39,218,145,130,222, 84, +248, 30,191, 53,209, 31, 78, 52,111,191, 37,203,138,161,215,168,123,156, 88,137, + 39, 61,134, 78,254,176,233,160,164,211,131, 37, 92,154,120, 93,159, 3,202,141, + 8,109,255, 38,104, 99,165,100,215, 45,174,173,143,241, 48,196, 74, 41,205, 13, +157,183, 58, 71,200,254,202,196, 51,221, 28, 99, 32, 1, 12,178, 48, 88,140,109, + 73,207, 93,223,124,169,228,157,127,216,105,108, 63, 96,111,216,160,202,224, 96, +149, 84,141,140, 99,219,212, 6, 96, 87,155,232,227,254,205,143, 14,142, 40, 83, +237,110, 83,115,145, 16,136,109, 94,232,172, 83, 91,242,182,223,128, 3,105,247, +140,172,123,168,192, 98, 56,127,214,130,185,156, 25, 81,144, 56,109, 36, 10,254, +228, 2, 89, 99,244, 2,107, 83,136, 47,149,136,147, 73,202, 96, 59, 0, 9,157, +170,202, 14,186, 29, 32,251, 38, 22,174,140, 30, 71, 73,122, 55,253,191, 83, 51, +211,240,194, 54,101,100, 8, 71,135, 92,221,121,107, 83,194,246, 89, 69,123, 46, + 23,133,151,125,198, 79,168, 61,144, 95,135, 4,193,211, 21, 9, 7,169, 18, 55, + 71,237,240, 68, 58,197,100,142, 44,121, 90, 30, 14,255,182, 55,176,145, 11, 3, + 22, 49, 70,199,207, 72,250,133,102,213, 86,210,175,137, 64, 51, 60, 80,132,168, +210, 16,105, 24, 30,184, 76, 50,193, 35, 39,106, 37, 68,234,212,118, 53,212,167, + 89, 63, 35,139, 81,162,182,187, 65, 44,102,224, 62,170,219, 96,142,239,160, 8, + 43,226,243, 97,137,112, 8,177, 94,144, 34, 0, 2,246, 4,232,254,250, 45, 7, +173,248, 73, 63,223,192,190,120, 96, 17, 68,218, 86,129, 7, 64, 90, 6,147, 72, + 24,121,251,172,247,193,122, 50,151,149,150, 34, 3, 69,179,112, 85,118, 16,219, + 15,213,153,152,210,195, 7,248, 65,182,114,115, 30, 99, 37, 76,216, 14,225, 31, +107, 80, 56,191,109, 56, 32,117,215, 66,216, 13,169,214, 13, 26, 52,203, 42, 51, + 81, 23, 45, 24, 87, 52, 7,152,129,220,168,198, 2, 39, } ; -// ../Source/Template/GB_transpose_bitmap.c: -uint8_t GB_JITpackage_145 [789] = { - 40,181, 47,253, 96,184, 6, 93, 24, 0, 38,169,123, 40,240,206, 56, 7,136,136, - 56, 98,117,185,214,220,179,202, 27, 27, 33,113,188,145,237, 33,193, 44,236,201, -109, 34, 34, 86, 79,102,168, 88,224, 25, 72,115,248, 11,114, 0,113, 0,105, 0, -176,190, 75, 44,199, 45,246,100,173, 82,241,157,156,197,135, 74,130,225,226,208, -248, 99,249, 50,230,183, 57, 78,196, 92,202,119,170, 32, 2,137, 84, 8, 4,144, -200,167, 76, 58,117,227, 7, 50,220,241, 30,226,154,118, 81,115, 42,243, 30, 40, - 92,133,214, 65,194,215,194,154,225,142,158, 76, 84,233, 67,178, 86,120,109,194, - 83, 92, 67,167,166, 73,224, 73,125, 97, 38, 85,106, 93,151, 84,216,117,220, 96, -124,105,189, 19,218,198, 40, 14,127, 60,162,234,241, 8,125,203,125,225,118,222, - 92,147, 30, 10,122,199, 75, 44, 12, 22,205,117,109, 54,239,157, 69,219,151,237, -192, 27, 75,232, 59,105, 6,162,114,179,252,161,183,204, 97,182,116,114,226,100, -192,250,197,156, 44, 84,239,214, 27, 51, 56,232, 25,175, 79,186,168,125, 96, 21, -218, 84,147,229, 7,254,198,107,242,105,122,210, 47, 15, 66, 83,161, 96,153, 10, - 70,113,144,174,193, 52,100, 50,239, 92,211,205,217,194, 95,239,255, 31, 69, 24, - 17,196, 17,169,152,203, 2, 24,141,198, 21, 38,135,220,146,166, 44, 54,236, 43, -177,244,104,204,101,247,211,148,174, 6,217,114,141,117,158, 41, 89, 74,104, 97, -125,237,232, 97,199,129,182, 2,104,177, 31, 57, 26,110,109, 41,119,111,233,103, -228,186,170,164,132, 45,101, 4,253,186,124, 97,118,230,250, 27,125, 95,218,221, -179,129,221,153, 99,161,188,165, 27,117,103,231,145, 52,123, 92, 16,181,111, 58, - 79, 93,150,177, 31,218,252, 70,174, 79,181,211, 81,148, 17,109, 81,155,156,241, -234,169,139, 5,155,120,184, 92,158,197,147, 94,169, 5,134,244,173, 33, 99,185, -100, 34, 30, 70,131, 89,190,177, 54,183, 8, 96,189,226,186, 42, 94,165,176,126, -251, 70, 11,198, 58, 49,107, 72, 31,120,124,227,157, 91,127,245, 83,164, 58,210, -155, 52,118,188,180,106, 51,110,143, 78,192,173,199,169, 67, 69,233,122,200,246, -228, 78,124, 51, 71, 97,114,235,167, 40, 74,122,132,165,162,169,104, 48,239, 50, -153,106, 11,251, 98, 87, 13,123,168, 17, 49, 51, 8,161, 25, 9,102, 70,146, 20, - 20,210, 1, 64, 68, 48,200, 57,155, 7, 50, 8, 93, 75,147,198, 10, 12,209, 4, -243, 41, 40,255,122,217, 0, 56,147, 73, 47,158,130, 31,232,151, 85,110, 86,232, - 98,207, 47,226,158, 3, 6,220,220,162,184, 87, 93,129, 98, 68, 27, 18, 3, 85, -210,205, 53, 58, 20,165, 12,169,143,131, 25,100,213,226, 53, 1,170,136,179,179, - 4,123,129,147,207,204, 27,205,146,200, 45,248,101,122, 25, 86,148,166, 49, 10, - 72,122, 99, 90,206, 50, 81,178, 26,167,197,145, 90,148, 45, 64, 79, 81, 92, 84, -233,148,249, 30, 16,148,116,129, 48, 30, 48,155, 61, 0,166, 83, 72, 54, 24,221, - 1,163, 54, 39,140,157, 27, 18,250,114, 10,158,172,182,212,192, 1, 63,201, 78, -157,144,167,163,216,188,197,146, 36,141,175, 34,239,242,153,132, 4, 39, 25, 0, -245,160, 62,248, 2,206, 68,175,240,226,183,156, 7,137, 90,197,204,218,143, 94, -213, 94,119,218,196,199,203, 59,182, 72, 22,144,126,151,247,116, 57, 59,232, 56, -243, 10,180,128, 62, 4, 48,218,210,157, 23,242,216,154, 72,111,101,181,189, 13, - 4,134, 49, 94, 34, 56,210,200, 65,243, 40,102,194,125,192, 11,247,172,222, 74, -226, 77, 88,138,196,215,176, 3, 3, +// ../Source/Template/GB_bitmap_scatter.h: +uint8_t GB_JITpackage_138 [244] = { + 40,181, 47,253, 96,137, 1, 85, 7, 0, 18, 78, 45, 23, 48,219, 1,180,166,187, +130, 15, 21,106,167, 41,142,162, 60,156,132,113, 54, 88, 56, 26,192, 0, 96,230, +114,125, 70,210, 22,247,166, 78,201, 44, 44,113, 95,194,238,187, 54,236, 3,160, + 10,185,201,243,158,168, 11,183, 7,243, 44,200,252,114, 53,115, 0, 36,199, 98, + 60, 74,138,237,227,142,251,217,204,123,253,210, 50, 94,175, 79,230,203, 0,165, +237, 40, 31,118, 95, 63,231,122,163,103,230, 60, 77, 31, 47,152, 37, 89,140, 70, + 73, 22, 31, 72,193, 11,157, 97, 81,242,227,241, 24,221,172,154, 61, 47,186,231, +130,208, 86,116, 41,231,181, 43,182,221,239,252,118,128, 46, 89,116,191,234,196, +122,102,173, 69,151, 53, 93,175,108,222,121,205,230,151,238,160,135,251,123,139, +164, 14, 91, 81,221,121, 12, 33,202, 17, 4, 48, 16, 36, 18, 0, 28, 3,226, 93, +248, 65,193, 14, 94,199,189, 87, 41, 97, 36,117, 79, 40,237,128, 74,226,231, 47, + 51,234, 16, 68,235, 30, 52,127,158,153,162,237, 98,171,229, 22,131, 22,144,138, +139,162,192, 13, } ; -// ../Source/Template/GB_transpose_full.c: -uint8_t GB_JITpackage_146 [737] = { - 40,181, 47,253, 96,202, 5,189, 22, 0,118, 39,119, 40,208,208, 58, 7,120,199, - 49, 98,127,185, 12, 50, 71,203,102,156,207, 89,248,166,119, 59, 75,149,220, 5, -127,217,150,142, 76, 26,108, 59,200,213, 48,139,188, 18,110, 0,108, 0,102, 0, -150, 99, 23,123, 50, 87,169,248, 78,222,162,165,154, 96,192, 60, 56,254, 88,190, -156,249,109,143, 19, 51,151,242, 58, 85, 32,137, 72, 42, 4,130,136,228,211, 38, -157,186,241, 3, 25,254,184, 30,242,154,126, 81,115, 42,187, 44, 11, 94,133,246, - 97,194,215,194,154,113, 71, 79, 22, 85,250,144,172, 21,158,155,240, 20,215,208, -169,105, 18,184,164,190,112,147, 42,181,176, 79,164,244,116, 26, 95, 90,239,132, -182,181,133,135, 67, 32, 81, 5,129, 4,167,220,105,247,133,221,121,115, 78,122, - 40,232, 29, 63,185, 48, 92, 52, 32, 42, 59,203, 31,122,203, 28,102, 75, 39, 39, - 82, 6,172,103, 76,138, 66,117,221,122,107, 6, 7, 61, 35,118,202, 23,185, 15, -172, 66,155,106,178,252,192,223,136, 77,151,116, 7, 45,171, 80, 62, 89, 44, 17, - 16,183,172, 95,222, 96,189, 23,150, 74, 72,215,100, 26,178,236,186,215,116,115, -182,240,216,245,255,143, 34,141, 40,242,144, 84,236,109,176, 94,159, 4,236,109, -247,211,148, 46, 7,217,122,173,125,158, 41,217,194,250,250,209,195,143, 3,109, -165,156,139,253,134,236,130,201, 32,174,140, 70,187,188, 99,110,118, 17,224,209, -176,107, 75,189,123, 75, 63,171, 74, 74,216, 82, 70,208,177,203, 23,110,103,175, -223,209,247,165,223,103,124,123, 54, 91,180, 13,191, 51,199, 66,121, 75, 59,234, -206,207, 35,233, 6,185, 32,106,223,116,158,186, 44, 99, 63,180,249,141, 94, 7, - 81,180, 17,117,145,155, 12, 16,109, 76, 1, 14,136,116, 10,115,209, 40, 44, 24, -204,101,113, 93,210, 43,189,117, 11,172, 86, 28, 3, 27,120,188,227,157, 91,191, -234, 20,169,142,116, 77, 26, 59, 94, 90,185, 25, 59, 72, 39,224,214,227,212,161, -162,132, 61,100,123,114, 39,190,153,243, 4,202,173,159,162, 40,233, 16,151,138, -166,162,201, 92,152,255,147,169,182,176,175,134, 85, 13,135,227, 9,148, 71,110, - 73,211, 22, 27,246,149, 88,122,184,107,168, 33,173, 67,200,144,140,200,136, 72, -146, 36,173, 6, 48, 68, 96, 20, 59,237,162, 8,105,141, 82,103,102, 74,196,148, - 71, 73,249,207, 3, 73,106, 72,120,250, 3, 60, 3,204, 26,141,201,133, 98,235, -141,169, 56,191,136, 89,136, 3, 63,177,193, 82, 37,243, 67,179,149,224,112, 87, - 82, 94, 76,148,119,252,101, 2,182,124,198,118, 53,135,133, 19,164,161,203, 19, -228,200, 18, 99, 22,237, 41,148,139,204, 84,103,232, 15,178, 34,125, 65,144,227, -248,195,138, 17, 46,219, 32, 96,171,132,218, 33,205, 93, 57,225,125,143,130, 22, -214, 75,118,203,113,132,178, 89,135, 41,161,127,220,209,133,108,230, 17,213, 68, -194,148, 14, 67,204,244,180, 66,251,242,190,239, 16,125, 25, 0,101, 10,170,110, -165,234,143,211,127, 57,222,158,143,224,222,195, 69,242, 47,112,201,227, 20,210, -241, 22,114,204,228,132, 45,208,219, 11,171, 79, 98,103,226,129,123,123,158, 34, - 2, 66,101,104,130,184,244,131,221,106,129,195,152, 45, 8,174, 48, 25, 52,223, -207, 76, 83, 7, 64, 56,199, 72,207,105, 62,251,120,243,213, 1,150, +// ../Source/Template/GB_bld_template.c: +uint8_t GB_JITpackage_139 [1341] = { + 40,181, 47,253, 96, 78, 18,157, 41, 0,134,119,158, 39,208, 88, 77, 7, 4,234, +105,210, 29,109,119,143, 43, 13, 34,107,139,151,226, 73, 17,160,181, 98,173,100, +194, 7,138,104, 15,109, 7,185, 26,102,145, 87, 2,154, 0,142, 0,145, 0, 17, +162,156,224, 83,192, 78, 95,212,140, 81,132, 77,229,197,213,234,168,111,223,148, +179,159,215,242, 88, 12, 52, 8, 25,181,168,196, 36,222, 16,117,171,237,167,141, +147, 81,126, 74,173, 70, 6,164,162, 67,211,244, 36, 42,171,199,185, 45,146,245, +184,115, 18,159, 18, 16, 12, 16, 50, 12, 7, 6, 8,191, 80,210, 39,222,147,172, +184, 70,226, 35,171,225,181,158, 79, 29, 9,141, 9, 11,203,136,209,160, 28, 19, +235,104,111,214,177,176,246,181,147, 90,135,101,237,163,151, 87, 7,186,148, 57, +223, 94,126,186,136, 58, 82,115,155,129, 54, 34,207, 27, 40,141,118, 58,236,210, +254, 52, 7,250, 76, 96,188,160,192,146, 41, 40, 8,157, 93, 81,177, 55,103, 37, +240,253, 98,240,205,230, 79,122,181, 0,150, 6,224,218, 50, 23,208,175,224, 89, + 47,200, 47,123,232,255, 45, 22, 21,231, 50,151, 39,172, 20,149,239,129,199, 10, +219,123, 71,160, 55,117,237,165,245,134,207,243,107, 52, 52, 62, 54, 62, 25, 77, +223, 86,218, 42, 52, 56, 31, 19, 31,142, 14,103, 82, 78, 42,194,139, 95,147,121, +240, 29,242,170,213,171,215,232, 17,105, 98, 42,134,229, 89,159, 82,107,161,188, + 51, 8, 74,106,155,225, 35, 73, 76,155,251, 74,189,229, 79,172,212,198,206,139, +245,228, 86, 67,208, 35,172,174, 87, 50,175,134,163,134, 2, 43,151,158,250,147, +200, 35, 61,164,131,131,226, 83,161, 49,209,249, 69,177, 81,183, 52, 34,242,252, +225, 7,152,191, 61,117,248, 72,219, 22,185,242,103,243,142,217,220,239,143,194, +130, 10, 6,243, 7,135, 75,212,118, 54, 75,234,178,166, 22,197,191, 60,137,173, +254, 92,217,115,234, 92,198,196,142, 93,240,121,145,100,196, 2, 28,222,182,223, +239, 82,105,123,213, 6,120,154, 98,216,134, 88,212, 34,124,211,197, 32, 53,189, +253,212, 84, 22,155, 31,164, 96,191,169, 62,200,159, 22, 34,195,121,211,126,233, + 48,126, 25,123,212, 82,163,203,115, 90, 83, 63,101,141, 88,197,129,253, 86, 3, + 89, 0, 6,211,241, 81,209,148,179, 57,169, 79, 27,204, 69, 50,248,131,128,192, +249, 64,115,121,202,160,140, 73,222,118, 6, 58,236, 99,153,244, 11, 75, 45,210, +247,118,148, 87,239, 81,160,115,176,122,167,213,187,158, 80, 40,227, 13,239, 71, + 60,180,210, 61, 30, 22,157,142,196, 55,223,252,100,117,134,157,203,191,164,216, + 1,226,156,236, 13,165, 70, 80,191,149,228,161,192,204,100, 95,246,230,184,213, + 86, 41,175, 63,163,107, 84,193, 75,212, 84, 65,135,236,242,154, 8, 59,163, 98, +240,106,245,115, 79,222,244,186, 50, 62, 91,189, 40,159, 64,215, 39,174,182, 61, + 13, 80,118,106,177, 4,129, 36,168,161,161, 67,104,102, 70, 36, 73, 65, 82, 24, +214, 49, 12,129,161, 48, 11, 33,167, 7,194,160, 68, 72, 98, 36, 69, 64, 66, 4, +134, 24, 98, 68,100, 68, 36, 16, 9, 82,144,210,130, 98,214,113,229,215, 5, 49, +172,149, 98,161, 98, 19,177, 51, 81,160,158, 28, 98, 77, 67,109,122,228,144,112, +173, 49,168,157,134,100,132, 32,156, 19,109, 60,142,172,131,250,186,201,236, 79, + 80,236,121, 39,140,172,229, 81, 4,209,184,216, 47,242, 75, 67, 5,135, 60, 82, +100,194,106,195,224,119,234,114,169, 56, 65,200,164,185,176,181,195,234,236, 6, +155,244,193,131,181,111,162, 42,115, 27, 14,162,234,190,209, 69,170,179,184,177, + 62, 52,152,252,135, 35,102,133,176,209,126,112,213, 84,220,246,152, 71,253, 49, +255, 82,135, 31,135,120,147, 32,230,129, 77, 4,254, 33, 20,116, 45, 78, 26,206, +127,134,106,110,222, 20, 5,102, 32,225,168,118, 83, 7,251, 15, 85, 76,156,199, + 87,224, 81,189,147,226,127,189, 31,118, 47, 78, 35, 13,238,254,187,211,128,245, + 71,183, 81,201, 48,130,131, 54, 68, 28,124,231,153,123,154, 21,183, 63,177, 64, + 21, 48, 35,189, 41,204, 65, 15, 7, 1,104, 57,240,200,236, 14, 53, 75, 24, 65, +196, 72, 17, 22,133, 64,160,211,209,226, 69,224, 92,231, 71, 7, 3,208,225,121, +153, 48,193,115,152, 35,237,240, 23, 63,103,169,255, 65,140,151, 12,173,213, 49, + 30,115, 40,221, 4,124,168,205,174,113,226, 50,102, 25, 54,146,187, 84,206, 62, +180,168,153, 16,125,248,130,141,157,188, 22,207,136, 16, 31,169, 31,110, 80,146, + 67, 7, 30,214,245, 42,229, 44,138,102,109, 45,148,152, 22,149,160, 17, 18, 88, + 89, 51, 42,216,131,162,100, 73, 4, 47, 60,240, 24,119,133, 84, 43, 73,142,169, +101, 2,251, 11, 70,201, 5, 4, 54,219,168,176,212,225, 11, 8,192, 18, 68,106, +104,187, 89, 64, 50, 33,127,170,106, 64, 53,169, 18, 45,227, 24,248, 90, 93, 44, +200,110,242,141,182, 12, 79,232, 62,169, 33,210,158, 9, 54, 6, 71, 28,255,204, +133, 43,232,245,176, 54,223,203,243,111,117,165, 84, 77, 47,180,219,218, 2, 8, +242, 67, 51,166, 6,227, 97, 0,141,109,130,126,228, 16, 53,143,109,226,240, 45, +166, 14,106,217,211, 87, 93, 37, 42, 12, 15,166, 61,107, 5, 71,229, 20, 69,122, +236, 9,236, 61,166,232,229, 68,248,201, 23,188,137, 49,184,153,253,230, 16,180, +220,136,104, 66,216, 74,152,234,126,187,142, 73,169,160,126, 8,229, 13, 38, 99, + 22,249,178, 91, 2,207, 92, 83,134, 90,145,248,132,219, 70, 10,199, 87,150,158, + 5,113,196,106,177, 22,236, 45,119, 72, 6,209,102, 37, 24,117,102,217,217, 47, +127, 17,203, 10, 14,218,214,228,220, 6, 19,196,128,199, 93,211,102,172, 93,104, +213,133,110,227,186,153,119, 8,137,219,113, 8, 47,120, 80,101,196, 92,161, 14, + 63,198,162,232, 3, 78, 50, 65,142,217,107, 51, 2,230,180, 25,207,157,217,117, +137, 36,132,184, 83, 13, 67, 89,164,160,124,162,129,215,140,217,111, 5,255,252, + 99,209, 60,155, 38,165, 50,211,114, 51,247,114, 77,122, 19,244, 22,165, 52, 0, + 15, } ; -// ../Source/Template/GB_transpose_sparse.c: -uint8_t GB_JITpackage_147 [833] = { - 40,181, 47,253, 96,133, 15,189, 25, 0, 6,102,116, 33,224, 90, 23, 3,144,119, -226,106,206, 2,139,180,157, 49, 67,110,137, 91,178,143, 8,158, 82, 5, 26,189, - 29,195, 24,131, 48,194, 11,108, 0,103, 0,104, 0,151,116,183,105,199, 11,193, -106,211,138, 23, 67, 0, 77,190,194,104, 87,217,106,203,185,222,100,233,114, 94, -150,244,156, 34,113, 72, 16, 26,136, 67,226,155,168,157,211,119, 85, 39, 47,208, -187,200,125,162,110,231, 28, 72, 49, 18, 18,215, 92, 1,237,190, 42, 48,195,231, - 93, 37,198,245,163, 89,207, 89,236, 58,183,109, 1,170,109, 93, 69, 13,159,157, -119,135,213,185, 98, 29, 90,125, 98,109,214,188, 67, 73,229, 6, 67, 70, 48, 24, - 2,228,182,168,151, 85,149,178,250, 27,226, 93,119, 61, 86,155,201,109,106, 39, -121,158,104, 87,102,189,151, 36, 31,199, 17, 2,125,119, 76,191,197,155,183,182, - 89,240, 29, 46, 24,219,188,223,218, 60, 69,239,241,141, 67,249, 66,150,195, 96, -223,168,118, 10,200,161, 31, 24,130,151, 80, 82,209,222,225, 80, 64,144,122,127, -100,139, 93,228,243,249,235,123,250,255,207,178, 87,118, 40, 36, 8,150, 20, 43, -166,119,100, 27,164, 11, 48,189,251,200,243, 6,131,209, 21,117,247, 40, 22,253, -222,171,109,151, 51,105,222, 33,143,238, 20, 35, 6,163,105, 71, 39,209, 49,125, -247,157,235,214, 33,197,143,111,167,115, 36,213, 14,134, 22, 73,229,221, 77, 38, -206,161,209,155,247,218,222,188, 77,123, 75,238,103,187, 58,111,119,205,118,223, -215, 54, 24, 64, 30, 63,188,251, 73,123, 62, 73,143,143, 14,162,235,207,187, 91, -177, 98,125,202, 39,107, 60, 3, 89, 22, 35,152,167,185, 96,120,154, 75, 72,225, -120, 58, 31,245, 66,239,146,217,116, 60,124,135,171, 44,171,190,228,254, 57,142, -110,169, 67,122,200, 38,222, 93,183,214,108,169, 26, 45, 41,234,111, 33, 74,101, -150,182, 44,107,174,248, 24,117,190,162, 74, 53, 99,192,120,247,197,139, 58,119, -181,186,180, 89, 22, 35,221,209,180, 27,197,231, 60,172,253,219,132, 33,204,247, -209, 22,213,142,207, 22, 5,220,124,160,134,114, 58,225,134,100, 71, 51,128,142, -160,241,161, 65, 83, 52, 65, 65, 65, 65,146, 74, 26, 3, 48, 68, 96,144,178, 18, -221, 29,124,239,248,148, 66, 9,122,140,206,212, 93,194,206,235,208,206, 42, 81, - 3,197,249,164,189,105, 74,207,113,230, 52, 23,231,159,222, 4, 89,155, 71, 90, - 19, 68,154, 63, 34, 29, 9, 30,226, 10, 31,126,208, 33,148,126, 92,222,223, 6, -255,238,151, 12,245,118, 22,131,168, 34,104, 20,255, 66, 19,161, 39,113,232, 34, -130, 22,196,163,247,208,104,230, 95,131, 88,190, 8,222,206, 86,224, 80, 27, 78, - 84,130, 31, 80, 57, 62, 62,202, 40,219, 72, 27,114,207,244, 22,112,196, 75,202, - 76, 58, 12,243,233, 72,134,150,106, 49,141, 24, 60, 16,131, 66, 24, 43,137,187, -126,137, 49,146,102,171,242, 38,218, 81,238, 73,157,177,147,156, 73,162,216, 70, -132, 34,252,151,229, 51, 68, 64, 46,131, 64, 37, 78, 79, 59, 35,241,254, 49, 55, - 26, 7, 61,159, 83,125, 92, 59, 76,223,161, 37, 16,254, 24,253, 54, 20, 88,136, - 50, 10,181,211, 86,250,124,192, 68,164, 39,154,176,167,203,159,168,163, 32,223, -227,240,237,180, 99,163,213,151,112,179, 25,194, 10,248,155,104,109,133,127, 33, - 2,248,143, 56, 8,219, 14,111,153, 86, 8,198,139,113, 8,129,112,112,141,104, -108, 28, 6, 4, 19,166, 7, 71, 25,132,244,160,247,117, 3, 15,243, 24,179, 5, -113, 7,204,128,181,188,195,112, 96,201, 9,107,114,160,191,144,190, 32, 46, 19, -159,218, 7,136,153, 45,110,104, 52,104,114,126, 96, 82,171,203,241,207, 45,192, - 61, 71,212,186,118, 1,146, 98,133, 82, 20, 52, 1, +// ../Source/Template/GB_bytes.h: +uint8_t GB_JITpackage_140 [376] = { + 40,181, 47,253, 96,130, 2,117, 11, 0,134,214, 69, 32, 16,179,115,172, 60, 80, + 44,101,174,250,113,186,189, 36, 12,153, 32, 25, 99,192,236,172,239,255, 98,224, + 35, 2, 0, 64,224, 32, 61, 0, 60, 0, 60, 0, 3,235,130, 44,240,168,178, 39, + 50, 62, 41,254,109,221,113,184,242,136,162,136, 44,182, 78,164, 14,196, 86, 26, + 59,148,109,246, 40,176,110,231,235, 79,150,154, 99, 15,187,236, 94,247,195,245, +136,109,170,219, 31,166, 89, 56, 78, 81, 80,162,168, 28,218,205, 47,141,175,179, +227,230,201,114,181,111,221,173, 2, 7,147, 37,237,150,197,142,226, 8,186, 44, +185,231,106, 16,105,235,220,140, 35,146,133, 33,153,180,245,208,173, 59,121,237, +109,195,147,115,156,226, 17,193, 26, 88,146,161, 10,147,189,192, 95, 45, 0, 62, + 52,148, 70,229,178,144,171, 77,201, 0, 8,167,175,153, 99, 44, 54,237, 58, 95, +234,213,185,239, 90, 48, 77, 83,224,178,219, 76,174,222,219,195, 30, 93,213,181, + 25, 31, 29, 30, 21, 30, 89,143,170,127, 28, 23, 3, 16, 74,214,230, 2, 32,172, +252,195, 16,252,184,206,150,178,118,109,107,221, 44,139,239,110,158,162,158,120, +198,194, 92, 74,175,235,255, 31,130, 96,103, 30,237, 10,175, 10,235,184,171, 42, + 92, 7,139, 80,184, 42, 75, 32,104,205,161, 3, 33, 32,128, 68, 2, 42,229, 6, +176,110,243,216, 3,161,221, 85,100, 24,132,122, 4,243, 45, 65,159,238,136, 57, + 41,184, 3,148, 80, 33,188, 64,109, 97, 17, 60, 97, 35,141,137, 72, 65, 16, 9, + 67,184, 44,157, 28, 58,144, 59, 7, 22, 95,187,250, 60,251, 58, 40, 22,231,187, + 21,224,166,217, 60, 51,209,198,191, 90,248, 62, 90, 20, 45,110, +} ; + +// ../Source/Template/GB_callback.h: +uint8_t GB_JITpackage_141 [644] = { + 40,181, 47,253, 96,176, 8,213, 19, 0,198,156, 91, 33, 0,181, 30,214,212, 19, +205,178, 2,124, 60,111,130, 15,197,125, 54,148,140,214,162, 38,169, 85, 24,134, +113,150,254,223,235, 67, 8, 82, 0, 81, 0, 83, 0,175, 63,115,189,189,206,205, +252,251,166, 23, 24,139,196,194,208, 80, 36, 22, 62,176, 2, 47,232, 11,170, 17, + 63, 76, 31,121, 27,131,119,243,130, 54, 43,136, 39,214, 60,113,188,206, 85,212, +126,223, 81,147,218,191, 15,243,123, 60,227,206,117,247,220,139,163,237, 14,239, +224,177,149,243,125,213, 82,200,196, 17, 8,105, 64, 32, 2,174,243,239,240, 98, +209, 67,124,183, 13,199, 78,110, 59,230,173,169, 71,215,205, 24,137,162,170, 1, +222, 1,111,156, 69, 10,240,231,198,207,134, 31,222,128,164, 80,203, 52, 33, 85, + 53,167,238,185,176,187, 1,153, 56, 44, 12,239,217, 42, 78,119,228,191,221,221, +225,115, 21,195,235,240,237,173, 12,154, 8,118,224, 30,148, 3, 10,106,146, 81, +214,219,251,105,234,249,169, 82, 81, 22,127, 95,165,162,233,162,154,255,176, 23, +162,170,139,146,201,191,119,181, 90,172,224,190,156,140,218,182, 57,105,212,162, +216,180,182, 10,228,225,131, 65, 71,193, 81,131,163,165,162, 73, 16, 8,252,218, +174, 12,163, 22, 70,179, 48, 19,101,108, 48,205,212, 56,236,237, 7, 29,239, 82, +118,151, 11, 63,224,213,132, 92,213, 68,150,252,225, 54, 28,221,221,221, 37, 73, +230, 11,190,183,253, 65,183,163,171,232,213, 29,210,211, 35, 69,195,136, 88,164, +158,252, 33,236,194,168, 37,163, 50,116,103,172, 63,116,203, 46,237,178, 95,131, +191, 81, 26,104,141, 50, 6, 63,119,155,236,178,168, 76,162,248, 78,126, 48,113, +160, 17,146, 98,102,136,166, 36, 37,133, 44,107, 80,132, 8,161, 34,221, 79,129, +109,192,160, 57, 7, 52, 0,116,151,209,232,204, 43,134, 40,187,156, 47,146, 93, + 49,148,253, 16, 76, 3,100,191,172, 82, 58, 76, 23,100,127, 25, 87,210,226, 98, +170,248,101,155,146, 99,190, 32,251,203,102,100,152, 47,117, 17, 67,217, 15,160, +137,128,236,151, 89, 74,172,137,221,201, 30, 75, 99,177,216,148,137, 19,195,240, +237, 6,141,253,138,231,128, 47,137,253, 13,250,176,239,245,170, 27, 13,152,218, +183,100,160, 22, 43,241,186, 82,165,207, 42,111,214,208,144,134,103,233,154,208, +201,204,147,228,237,216,181,143,222, 14, 6,234,203,251, 58, 84,164, 55,171,248, + 72,125, 4, 67,165,104,223,176, 16, 15,190,102, 28, 21, 15, 60,121,104,132, 21, +120,143,148,129,150, 91, 4, 0,116,132,161,212, 46, 46, 64, 92,188,117, 68, 81, +183, 96, 6, 32,176, 99,122,164, 73,253,126, 1,113, 55, 16,232,131,140,103, 24, + 12, 4,205, 72,128, 23, 20, 15, 26,123,193, 74, 69,151,104,144, 8,129,165,140, + 60,218,131,161, 66,192, 15,154, 26,149,153,188, 23,182,170, 19, 66,204, 71, 94, + 85,244, 58, 1, } ; -// ../Source/Template/GB_transpose_template.c: -uint8_t GB_JITpackage_148 [761] = { - 40,181, 47,253, 96, 93, 9,125, 23, 0,198,226,104, 32,224, 26,231,208, 73, 35, -108,123,143,187,231,101,203, 18,149,110,132, 94,168, 31, 50, 55,107,180,120,168, - 70,140,113,136, 49, 14, 97, 0, 95, 0, 91, 0, 30,175, 44, 55,135,222, 23, 68, -205,208,195, 48, 59,214, 96, 40, 24, 7,199, 66,193,120,161, 35, 28,235,185,146, -148, 35,178,183,192, 91, 85, 83,116,108,203, 56, 19, 80,148,246,242,224,182, 82, -220,248,206,113, 3,136,245,173, 80, 20,229, 61, 42,143,177,216, 58, 86, 40, 12, - 50,194,109,217, 17,196, 26,209,254,224, 43, 67, 81,197,151,227,174, 98, 83,105, - 47, 55,185, 60,145, 0, 28, 18,137,246, 74,213,153, 85,146,158,193,139,182, 5, - 71,241,100, 38,223,172,128, 76, 34,110,227, 54, 14, 51,185,252, 99,143,142, 90, -246,203,168, 0,136, 8,156,189, 49,236,232, 20,188, 39,120,255,213, 55,247,120, - 86,213,190,173,223, 61,238,145,142,103,101, 79, 36,254, 31, 0,112, 1, 20, 8, -198,129,193, 78,138,217, 31,150,231, 55, 47,101, 47,115,224,166,220, 77,206,161, - 68, 1, 33, 2,158, 44, 36,226, 62, 91,230,155, 30,205,178,122,159, 97, 40, 58, -217,178,170,173,164,227, 49,143, 50, 60, 58, 79,220, 33, 79, 10, 41, 12,204, 8, - 76,167, 0,209,151,242,165,181,123,223,249,110,238, 58,249,122,207,167,223, 30, - 85,213,118,216, 13,199,102,123,249,206,126, 4,198,154,116,205, 41,121,127,231, -239,120, 58, 22, 50,181,156,170,247,116,182, 20,207,154, 1,163, 0, 0,120,253, - 39, 91, 95,240, 60, 18,121,115, 39,197, 78,217, 74, 34,252,155,218, 33,150,197, - 22,120, 91,223,239,201, 45, 74,213,157, 39, 80,214, 17,101, 38,175, 64,135, 8, -195,241, 59,120,235,233,108,229, 57, 35, 11,183,101, 92,156,138, 39, 84,217,112, -162,140,230, 23,235, 35,215, 52, 77,211, 14, 57, 75,114,200, 94, 32, 60,114, 86, -246,219, 77,123,155,173,225,246,246, 1,109, 1,128,137,160,193,173, 81, 70, 70, - 68, 68, 36, 73,146, 74, 99, 48,132, 16,163,212, 89, 7,123,167,231,239, 60,138, -159,162,214,104, 54,188,220,102, 44, 37, 99,203,101,188, 65,144, 18, 57,194, 6, - 79, 16, 94, 24, 5, 25, 25, 55, 6, 49,136, 28, 22, 34, 43, 71, 14,254, 56, 43, -106, 80,242,242, 33,128,114,123,100,183, 21,208,130,161,113, 19, 71,238,216,229, - 96, 27, 99,194, 9,252,192, 70, 6, 13,165,106,115, 78,102,196,151,214, 96, 26, - 64, 22, 8, 27, 5,141,145, 89,108, 57,200,161, 88, 24,158, 41,134, 96,132, 16, -244,165, 21, 34, 62,121,200, 18, 9,241,146, 15, 12,206,194, 91,200,194,172, 69, -184,187,104,114,165, 48,113,229,114,121,155, 56,110,187,203, 21, 31,241,163,251, - 80, 35,188,236,122,102, 42, 52, 73,136,151,249,214, 64, 18, 7, 80, 17,224, 16, -144,217, 5,217, 88, 26, 24, 65, 0, 34,211,211,233, 45, 94, 93, 36,185,117,108, -123,192,211, 14,191,239, 78, 84,211,151,154,231,135,238,149, 20,215, 79, 0,214, -179, 41, 69, 48,168, 15,192,179,162,208,117,237,212,131, 59, 20, 8,225,224,133, - 59,165,105, 62,116,108,168,181, 3, 4,236, 2,162,153,180,234,121,192, 20,206, -158, 12, 88, 16, 30, 13, 89,170,119,167,242,173, 44,131, 72, 73, 53, 24,127, 22, -209,217, 17, 65, 19, 19, 85,228, 15, 49,253, 33, 75, 29,156, 93, 77,133, 34,212, - 65,147,243, 51,211, 61,148,149,115, 16, 35,182, 90,155,224,221,193, 66, 21,189, - 99, +// ../Source/Template/GB_callback_proto.h: +uint8_t GB_JITpackage_142 [1746] = { + 40,181, 47,253, 96,226, 37, 69, 54, 0,170, 64,212, 11, 43,208,140,140,115, 91, +213, 38,218,213, 66, 53,231,117,229,247, 50,209, 82,213, 18, 49,120,192,128, 71, + 45, 11,102, 8, 98,229, 47,101,253, 50, 85,252,193, 21,158, 98, 16,191,172, 0, +182, 0,176, 0, 18, 58,205, 70,194,168,147, 90, 56,235,189,242, 75,189,211,206, +234, 47, 31, 82, 86,171,255,237,243,212,150,112,177,107, 36,148,208,181,220,215, + 47,155,205,119,167,148,217, 97,215,233,206,153,201,196,213,202,252, 15, 11,131, +225,225,224, 80,235, 57, 44, 58,196, 84, 88,193,150, 74, 77, 28,202, 82, 31,164, + 56, 30, 36,176, 60, 40,181,152,202,122, 57,183,165,129,151,199, 24, 29,122,112, + 96,112,112, 20,104, 96,112,120,227, 45, 28, 98,104,225, 18,252, 17,189, 99,245, + 94, 48,115, 8, 19, 81, 34, 44,204, 77, 9, 8,229,233, 48,140, 54,204, 48, 12, +126, 84, 57,117, 35, 23,246,147, 89,245,185,213, 89,177, 78, 31,194,122,108,239, +196,218,230,185, 41, 70,247, 90,132,196, 33, 16,134, 3, 2, 9, 28,165,228,164, + 89,238, 99,136,206, 22,210, 25, 38,225, 35, 95,169, 49,181,219, 61,198,220,213, +112,186, 72, 50,153, 40,130,105, 82,179, 68, 82,102, 18,209,248,102,106, 5,196, +148,211,105, 53, 31,218,200,204,122,215, 56,101, 75, 77,157,174, 76,202,183,132, +250, 28,198,155,185, 23,167,164,235, 87,251,102, 24, 33,206, 96,158,183, 13,187, +134, 60,199, 16, 56, 34,215, 10, 48, 58, 9,171, 63, 16, 40,114, 14,156,237,164, + 22, 49, 37, 22,126, 10,174, 5, 67,194, 27, 87,198, 87,246,218, 67, 7,227, 56, +110, 17,156,168, 61,144, 88,144, 40, 48, 18, 69,164, 61, 64,176, 60,136, 48, 42, + 33, 0,198,130, 86,201, 84, 46,150,198, 32, 18, 69, 80, 40, 81,164, 82, 74, 86, + 16, 64,132,216,181, 79,170,117,241,229, 7,187, 56,105, 38, 24,223, 28,202,217, +149,163, 30,130, 94,131, 64,222,216,206, 28,100, 42,214,177, 14, 44, 92, 59, 13, +121,198,152, 85,203,240, 12, 31,189,130,167,116,174,212, 24,160,226, 90,151,238, +177,194,217, 82, 33,142,187, 42,200,185,213,118, 4,121,174,187, 75,120, 14,132, + 38, 4,142,232,218,238, 91, 53,222,198,232, 26, 39, 82,105, 15, 26, 26,215,186, +104, 18, 74,101, 65, 69,131, 0,249, 0,105, 36,124, 48,114,219,104,147, 30,135, + 3, 1, 62,215,113,200,225,128, 0,185,176,221, 84,108, 31, 83,198,135, 46,118, + 54,169,129,204,142,210, 44, 58, 11,142,174, 58, 20,221,204, 46, 29, 66, 33,233, +113,119,218,254,134,221, 37, 77, 76, 76, 76, 76, 64, 19, 30, 34, 92,110,220, 55, +161, 36,220, 76, 62,145,239, 54,128, 0,252,100,242, 60, 12, 70, 5, 41,169,207, +133, 74, 57,179,214,217,176, 56, 91,128,161,184,118, 86,103, 8,191,121,174,185, +201,197, 48,171,159, 6,182, 88,219, 76,189,176, 84, 44,141,193, 69, 82, 33, 25, + 28,157,201,209, 16,189,227,230,116,111, 52,180,158,203, 20, 90,230, 82,193, 56, +224,140,227,174,111, 31,122, 18, 66,205, 74, 61,106,140,110,186,214,140, 4,243, + 88,207,181,106, 15,241,165, 13,229, 35,189, 19,163,203,250,185,179,118,103,162, +186, 65,158,237,106,191,121, 27,167,231,121,103,238,165,179,130,112,169, 72,146, +139,130,200,197, 22, 53, 79, 88, 85, 96,145, 8,183,204,246, 93, 94, 89,163, 65, + 53, 83,175,214, 32,145,184, 72,164,106, 15, 32,122, 63, 56,155,117,106,100, 66, +145,184,255, 45,162, 80, 40, 26,112,224, 12,129,164,168,225,157, 66, 34, 51, 35, + 34,146, 36, 73,134, 53, 97, 20, 98,148,130,208,113,214, 1, 66,168, 32,142,176, + 8,198, 64, 12,197, 16,132, 8, 49,148, 16, 66, 24, 17, 9, 40,146, 64, 36,176, + 48, 84, 29,111,137,106, 12,108, 85,106, 22,139, 74,204, 33,144,151, 18,175, 68, +107, 92,131,229,246,252,226, 92,132,155,152, 38,164, 1,113, 90, 47,198,171,135, +141,237, 34,221,223,229,195,150, 5,107, 31,112,217, 90,241,246, 79,112, 45,100, + 60,206, 59,133,168,139,215,180,149, 27,146, 98,243,250,213,255,166, 36,225,221, +120, 12, 69,186,193,152, 0,182, 37, 98,146,184, 47, 36,124, 24,171,216,157,230, +102,248,164,253,251, 72,119, 37,254,174, 20,214,200, 13, 3,198,202,245,223, 4, + 10,199,175, 38,211,200,106, 70,217, 7,251,122, 43,208,245,198,131,144,213,116, +222, 10, 5,118,120,180, 79,235, 31, 56, 20,240, 28,197, 13, 93, 98,231, 46,152, +151,208, 40, 52, 76, 98,233, 37,104,226, 97,117,223,165,148,165,254, 52, 15,239, +150,157, 21, 98,116,181,105,199,145,130,167,231,168,149,172,147,218, 60,133,198, +179,179,138,192,135,133,108,120,161, 64,172, 48,146, 19,208,217, 47, 97,213, 94, + 19, 24,123, 57,254,227,116, 90,228, 16, 94,188,214,167, 8,255, 60,227, 3, 70, +200,210,207,247,137,199, 86, 41, 31, 8,234,108,200,140,165,120,148,159,168, 5, +145,168,148,105,246, 33,137, 55,245,142, 84, 47, 51,103, 31,129,247, 97, 69,113, + 99, 81, 4, 8,131, 84, 0,217, 86, 65, 68,225, 9, 44, 31,140, 40,114,152, 35, +249, 60,170,121,146,233,120, 17,241,237, 19,242,130,128,241,201,182, 52, 62,141, +213,160,225,248,104, 50,247,104, 47, 36,214,225,158, 1,167, 10,178, 64, 11,194, +144,120,247, 22,171, 61, 28,232, 72,221, 97,169, 68, 61, 44,114,114,127,141,112, +163,116,208,149,141,167,248,106,127,198, 27, 52, 30,209,151,199,142,197,162,147, + 82, 99, 75,115,133,149, 18, 59,152,186,248, 28,176,198, 11,105, 59,238, 10,130, + 9, 5,180,135, 67,145, 34,228,136,247, 43,113,104,128, 99, 54,118, 46,216, 39, +229,118,204,181,250, 64, 63,182, 93,199, 79, 43,153, 15,253,102, 33, 1,229,249, +131, 87,239,247, 42, 28, 39,121,116, 58,201, 25,147,132, 96,184, 21,179,236,117, +114, 22,223, 11,189,210, 63,152,122, 46,209,164,233, 66,116,132,160, 9,188,122, +104,212,239,169, 18,113, 66,243,132, 14,177, 62,119, 16, 99, 34, 74,224, 10,219, +245, 44,208,197,141,134,159,197,184,114, 17,209,215, 66, 83,169, 94, 48,197, 37, + 34, 85,236,228, 77,242,203,125, 74,176,194,236,250, 30, 50,126,105, 90,159, 46, + 24, 87,191,228,218, 14,217,112, 8, 57,116,138,198,203,199, 76, 2,155,116,103, +187,133, 42,107,245, 61,150, 33, 60, 77,146,150,143,180, 76,189,240,254, 31,200, +131,125, 99, 19, 6, 46, 56,215, 33,234,243,255,226, 71,116, 32,158, 35,109,232, +211,215, 37, 74, 37,132,126, 58,158, 38, 69,180,213,253,239, 90,218, 11,127,214, + 50,103, 85, 86, 14,247, 43,229, 20, 16,108,202, 8,166,176,136,104,226, 40, 30, + 70,223, 18,115, 89, 2,204,245, 78,112, 5, 53, 85,164,106,153, 18, 42,209,163, + 15,222,115,235, 65,165,226, 74, 40,101, 89, 30, 66, 19, 14, 16,248, 49,154,166, +160,130,119, 84,155,132,147,248,140, 84,103,209, 73,132,247, 65,236, 80,125,255, +157, 58,128,182, 75,167,162, 71, 20, 87,240, 8,170,173, 64,225,180, 19,156, 29, + 10, 62,251, 98,136,167,163, 53,126,167,189, 26,221,149,241, 98, 73,170,226, 91, +103,194,128, 74,162, 96, 39, 83,244,147, 84,243, 80, 18, 3,215,221,219,202, 12, + 72,148,216,146, 62, 67,167,235,248, 9, 50,120, 21,109,112, 61, 46, 35, 83, 16, +108,204,227,216, 49, 98,139,180,235, 6,128,240,219, 57,228, 36, 30,235,200,164, + 79,113,117,168,239,245, 37,184,142,162, 89,152,146, 37,206, 25,123,227,251, 1, +196, 33,180,199, 82, 17, 45, 48,253, 36,207,174, 38,165, 10, 53, 62,162,217,135, +166, 30,212,158, 31, 88,232, 24,171,140, 48, 35, 2,253,132, 81,102, 66, 57, 3, + 1, 75,241, 41,197, 49,120, 71,243,132, 19, 46, 56,137, 17, 74, 43,184,167, 90, +200,147, 66,143, 78, 12,181, 37,230, 51,171,129,200, 25,149,193, 84,234,140, 66, + 65,135,226,171, 55,205,145,202, 76,252, 13,110,186,134, 48,228,176, 46, 94,250, +209,235,175,149,160, 9, } ; -// ../Source/Template/GB_wait_macros.h: -uint8_t GB_JITpackage_149 [437] = { - 40,181, 47,253, 96,118, 4, 93, 13, 0,118,148, 68, 34,224,150,205, 1,212, 44, - 4, 63,166,249,179,216,197, 92, 43,171,143,177,198,253, 50,148,102, 80,246,107, -110,202, 96,134, 49,140, 23, 2, 55, 0, 58, 0, 61, 0, 95,231, 58,250,170, 44, -203,234,167, 52, 81,191,112,147,231, 40, 63,100,107,104,251, 60,166,227, 77,245, -102, 90,158, 94,172,111, 91,203,219,185,195, 35,198, 12,155, 23, 68, 75, 48, 87, - 90, 2, 23,143,107, 90,133,105, 90, 88, 99,219,160,218, 97,155,198, 37, 11,155, -116, 27,183,119,156,199, 80,245, 78,146,220, 47, 67, 97, 43, 96, 7,194, 86,184, - 5, 26,252,194,149, 68, 27,207,184,159,198,108,150, 21,243,235,227,186,197,120, -210,251, 64, 52,190,244, 12,244,184, 90, 23, 5,118,129,224, 93,151,169, 60, 1, - 24,220,226, 6,143, 74,164, 81,113, 92, 70, 55,183,173,129, 10, 2,126, 22,143, -193, 81, 64, 76,132,211,136, 29, 90,177, 6,170, 45, 43, 96, 61,130,232,201, 29, -113,187,138, 53,219, 14, 35, 1, 85, 37,214,208,118,224,127,229,241, 44, 26, 78, -133,187,230,251,211,112,116, 11, 74, 70, 18, 54,249, 41, 71, 34,239,154,223,158, - 72,108, 87,220,126,142,200,130, 98,233, 88,128,167, 82,159, 88,192, 38,209,241, -102,126,216, 37,147, 36, 3, 60,160, 17, 30, 89, 36,161,162,148, 20,106,172, 1, - 48, 68, 64,156,177,180, 3,157, 71, 61, 22,160,211,192, 75, 37,138, 71,124,106, -111, 36,142,218, 30, 60, 65, 80, 5, 49,237,117, 9, 59,167,126,172,217, 76,125, -145, 19,174, 62,166, 98,100,195,170,174,143,232,213,100,141,161,216,218, 48,187, -192, 2,224, 36,179,129, 96, 90,101, 95,236,246,141, 34,220,107,198,212, 23, 97, -150,159, 40,112, 27, 27, 88,146,153, 41,194,228, 16, 70,246, 28,158, 42,251, 36, -221, 97,148, 9, 19, 10, 16,225,122, 40,134,149, 37,231, 57,121, 72, 56, 2,116, -208,124, 62, 51,213, 66,174,203, 65, 26, 99,193, 90,171, 40,104, 2, +// ../Source/Template/GB_colscale_template.c: +uint8_t GB_JITpackage_143 [1052] = { + 40,181, 47,253, 96, 48, 13,149, 32, 0,134, 46,140, 39,208,210, 86, 7,212, 93, + 44,124,187, 19,202,159, 23, 94,234,202,204,165, 47,170,161,137,245,115, 64,190, +170,112, 85, 57,124,196,186,140, 82, 15, 13,176,188,130, 0,121, 0,128, 0, 88, +102, 32,137,101,224, 82,233,236,130,214, 29,115, 91, 98, 50,211,142,156, 74, 99, +218,151,132,168, 92,188,206, 64,108,143,219,184, 61,199, 57,227,144,158,207,233, +222, 12, 46,150, 75, 37,161,192,114,249,228,154,222,176,244,128,239, 3,238, 33, + 89,174, 36, 9,122,251, 56, 8, 77,102,225,221, 96, 26, 95,104, 63,157,101,233, + 35, 1,145, 55, 67,210, 39,164,149, 3,202,248,190,176,212,129, 15,143,229,223, +251,118,246,241, 71,113, 11,212, 49,157,225,180,164,206, 86, 79,120,225, 89, 47, + 75,179, 57, 1,129,164, 66, 64, 16,148,103,235, 0, 33, 83,249,140,105,189, 94, +115,111,212,115,115, 84, 44, 25, 42,212,155, 14,224, 50,159, 76,168,233, 15, 19, +214,171, 32, 52, 17, 20, 14,211, 65,158,234,243,113, 56,151, 44,149, 31, 93,255, +127,137, 68,228,182, 71,211,138, 15,229,115, 41,244,246,254, 25, 34,149, 68,239, +208, 41,188, 34,133,119, 3,142,222,206, 25,218,119,150,143,213,135,216,122, 85, + 62,106, 6, 79,245,189, 94, 31, 59,118,103,152,229,207, 9,223, 23,149,248,173, + 98, 73, 29,227, 60, 54, 46, 61, 87,250,237,146, 36, 72, 67,226,212,179, 20, 59, +187,240, 39, 19,142,176,111,150, 45, 82,137,254, 86,236,179,231,132, 23,218, 91, + 82, 61, 36,113,192,107,163,204,191,156,114, 97,198, 22,143, 48,204, 84, 0,206, + 17, 7,149,214,168,173,190,228,196,206,202,248, 74,108,132,201, 72,223,203,204, + 90, 67,141,103,107,222,196,135, 83,177,180,220,155, 74,136, 74,194, 83, 61, 88, + 32,206,177,142,152, 12,160, 61, 61, 32, 69, 81,212,123, 26,144,201, 4, 82,117, + 48, 64,150,203,178,204, 45, 67,197,125,225,214, 61, 95,242,102,220, 55, 18,201, +136,100,132, 34, 45,212,244,206, 68,245,225, 88, 84,210, 58, 9,175,112,107,171, + 12,142,103, 2, 68, 85, 21,214,139,224,124, 44, 23,177,113,158,206,173, 55,144, +247, 38, 18,197,233,154,202,227, 32,168,234,137, 68,162, 2,129, 54,177,157,214, + 90,164,253,102, 57,219,177, 64,213,102,244,150,185,233,206,106,208,108, 68, 88, +134,132, 78,235, 99,103,120,219,214,119,232, 53, 79,176,250,124, 35,149,216, 21, + 50,159, 30,101,130,105,152, 41,243, 13,141,133,103,248,209,173, 31,239, 26, 79, + 25,142, 73, 1, 1,133,204, 45, 95,152, 38, 5, 1,128,223,168,161, 61,170, 33, + 17, 73, 65, 74,146, 44,107, 80,132, 8,149,149,205, 1, 66,177, 48,145,225,140, + 97,196, 25,130, 68, 2, 17,201,136,130,148, 63, 59, 81, 0,213, 30, 41, 21,157, +242,248,153, 23, 74, 34, 59,173,233,174,124,155,100,210,130,233,217, 4,149,125, + 44, 86,226, 53,140, 97,210, 59, 14, 49,161, 19,106,171,246, 92, 74,242, 40, 25, +188, 72, 60,178,218,217,173,158, 47, 74, 32, 34, 25,196, 92,167,105,175,154, 66, +192,176, 10,137,164,111, 9, 31,102,142, 47,153,171,247,235,130, 75,123, 51,130, +176,145,201,215,248,107, 46,169,227,198,143,124,120,161,242,147,149, 47,150, 1, + 18,204, 84, 34,233,239, 46,164, 93,216, 18,243,187,173, 82,181,118, 67,244, 65, + 95,251,100, 1,195,101,108,107, 16, 85, 74, 95, 26,100, 76,232,134, 53, 97,181, +173,144, 89, 26, 52,176,133,124,167, 84, 30,230, 21,237,161,185, 84,144,249, 56, +196, 48,101,113, 74, 5, 50, 74, 37,245,162,161,128,127, 56,215, 15, 57,205,222, +128, 78, 41, 45,239, 56,162,148,162, 66, 13,190,112,144,152,212, 84,203,206, 0, +228, 18, 89, 37, 80,196, 85,130, 44,152,198,196, 85,117,242,236, 54,162, 72,177, +144, 59, 67, 31,255,155, 49,218, 20,231, 8,169, 53,207, 43,202,101,115,185,109, +156,129,100,189, 82, 79, 80,153, 72, 60,215, 41, 40,217,189,242,112, 46,221,129, + 19,148,149,102,226, 37,201,188,137,232, 34, 18,251,203,208,117, 50,172, 89, 28, +213,252,224, 14,113, 24, 76,177,239,144,145,167,224,166, 87, 39,119,224,137,107, +104,214,241, 43, 61, 0,104,127,171,114, 76,222, 83, 94,181,192, 7, 15, 8,128, + 41,251, 5, 46,118, 32,226,182,165,253,175,131,164,169, 65,159, 60,179, 38,217, +154, 32,217,224,118, 60, 8, 54,131, 59,197, 51, 68,161, 75,107,191, 63, 39,116, + 31,224,234, 10, 7, 60, 58,164,124, 65,129,227,188,105, 8,181, 21,129, 14, 8, + 60,208,219,247,209, 55,141, 97,118, 56, 21, 48,178, 27, 0, 72,156, 96,127,133, + 66,134,166,183,130,217, 3, 96,116,209, 41,245, 76,102,111, 21,219, 55, 77, 94, +101, 38, 49,102,187, 18,126, 25, 42,221,129, 39, } ; -// ../Source/Template/GB_warnings.h: -uint8_t GB_JITpackage_150 [941] = { - 40,181, 47,253, 96, 34, 9, 29, 29, 0, 70,238,135, 30,240,220, 54, 80,217,107, -191, 87,158, 33, 17,200,178,198, 85, 91, 98, 53,109, 52, 51,142,140,173, 11,139, -195,160,248, 74,134, 0,121, 0,127, 0, 92,145, 80, 28, 11, 6, 51, 51, 3, 0, -170, 90,141, 53, 26,207,138,196,249,120, 70, 32,145,166,245, 3,192, 34,209,216, -220,139, 13, 98,184, 82,253, 91,127,167,115,158,205,237,244,248,159, 77,181, 25, - 37, 56,135, 85,183, 78, 98,123,189,238, 73, 44, 37,134, 17,142,198,162,177, 73, - 24,139, 6, 27, 98,129, 17,246, 97,189,225, 4,134,103,222,165,223,155, 24, 81, -194,124, 50, 30,216,181, 83,113, 91, 27, 44,249,253,176, 4,224,234,242,193,143, - 70,110,181, 40,207, 26, 94,174,120, 9,219,205,159,181, 99,171, 76,135, 21, 10, -192,166, 80, 4,181,193, 25, 82, 34,147,219,223,164,250,157, 79,193,191, 61,159, -189,251, 49,150,253,247,231, 63, 30,142, 1,115, 62,191,229,220, 12,185,210, 22, -115,110, 67,166,213,105, 14,235,178,155,237, 31,203, 14, 95,236,224,236, 50, 87, - 24,148, 70,108,227, 24,159, 13, 92,113,201,106,251, 92,129,251,235,186,130, 3, -218, 87,122,163,195,248,210,201, 32,165,146, 43, 13, 8, 4,194,121,108, 9,178, -215,102,123, 43, 5,189,242, 5,235, 5,105,226,192, 94,221,139,241, 13, 41,171, -217, 85,251,243, 26, 2,230,188, 62,199,191,150,206,174, 13,252,224, 11,175, 86, -154, 83,168,179, 90,113,161, 82,221,235,222,147, 37, 32, 28, 99,167,209,116,164, - 15, 0,156,251,100,219, 76,112, 46,148,113,254,128,103, 44,158, 73,135,253,141, - 46,221,242, 13, 89,140,224,102, 82, 54,139,202,206,107,179, 23,223,139, 49,194, - 65,129, 48, 55,155, 37, 18, 6, 35,188,132,123,105,118, 47,129, 64,120,118, 52, -122,157,225, 4,193,136,220,103,177, 91, 42,121,214,159,237, 8,105, 52, 98,148, -107,207, 82,188,242,109, 42, 91, 18,235, 95, 7,145, 7,227, 65,159, 11,111,137, -101,135,246, 81, 92, 2,149, 64,242,173,109, 65, 55, 91,198, 78, 8,243,209,208, - 75, 43,104, 3, 87,134,189,121,241,126,204,218,109,115, 43,235,181,155,223,175, - 49, 3,219, 80,130, 81,176,109,179,193,174,169,141, 63, 90, 91,207, 77,231,218, -165,253, 74,107,117,182,109,221,187,211, 5,246,254,247,114,243,186,144, 86,239, - 74,217,173,237,126,124, 9,126,207,205,112,115,150,101,210,191, 29,103, 88,239, - 38,184, 50,191,147,198, 77, 82,202,218,230,111,119,126,106, 11,128,158,168, 81, -165,114,134,134, 72, 36, 40, 72, 10,146,100, 56, 48,132, 16, 82,236,172, 3,194, -185, 28,164, 56,144, 33, 69, 4, 72, 48, 50, 34,129,140, 4, 18,200,100, 87,205, - 6, 21, 3,168, 45,241,118, 41,129,179,186, 32, 34, 4, 4, 70, 56,170,143,151, -201,193,210,253, 57,154, 46, 59, 40,202, 78,232,174, 53, 17,156, 62, 54,200,164, - 12,138,227, 48,154,194,132, 11,123,205,144,238, 23,168,245,177, 58,225,104,157, - 66,231, 29,112,248,249,201,108,130,254, 64,122,197,164,112,137,253,141, 54,180, -178, 39,164, 50,205, 15, 61,140,149,226,229,252,235,123,166,226,114, 59,213,227, - 0,143, 15, 24, 31,186,160,228,103,249, 49,180,138, 24,190, 91,236, 52,119,143, -144, 34,203, 95, 44,105, 27, 34, 42,157, 19, 84, 29,220, 98,157,194,175,176, 94, -158,249,186,133, 20,136, 93, 53,161,106, 49,175, 78,201, 66,128,245, 54,174,198, - 88, 81, 24,162,153,160,114,202,179,128, 62,238, 62, 98,210,150,221, 5,247, 53, -228, 1,156, 89,208,176,178,159,180,243, 47, 81, 12,120,137, 5,197,104,235,253, - 96,179,218,189,131,104,237,156,157,234,117,223, 86,193,108, 82,103,137, 61, 96, -112,154, 75,172,203, 0,206, 61, 91,217,192, 51, 12, 96, 46, 32,143, 16, 15,112, -225,162, 98,223,169, 30,229,114,217,220,170,237, 65,149,111,243, 27,232, 7,163, -139,196,213,232,243,218, 57,251,213,151,139,172, 55, 11,243,195, 38, 22, 72,128, -139, 27, 55,139, 98,185, 69,118, 62,220,206, 85,106, 94, 53,117,102, 65, 61,134, - 66,172, 72, 32, 97,252,234, 14,239, 85,124, 26, 96,223,130, 85,169,252, 60,182, -186, 9, 48, 51,104,166, 63, 51,221, 4,185,226, 1,222,209,160,202,171, 22, 48, - 1, +// ../Source/Template/GB_compiler.h: +uint8_t GB_JITpackage_144 [2493] = { + 40,181, 47,253, 96,109, 39,157, 77, 0, 74, 90,180, 16, 44,176,110,144,115, 8, + 17,189, 44,245,104, 56,100,186,164,109, 29, 78,116,238,161,240, 67, 39,195,189, +220,172, 66, 22, 10,221, 73,181,108,110,120,205,157,210,159,146,246, 99, 28, 2, + 1, 0, 1,242, 0,212, 31, 14, 88,119,176,116,162, 36, 73,210,164,109, 43,139, + 24,151, 44, 98,185,197, 11,185,217,149, 90,128, 33,208,132, 50, 82, 56,215, 36, + 35,241, 48, 44,190,135,137,200, 54,239,241, 32,197,190,228, 59, 51, 11,133,131, +201, 36, 51, 24, 63,229,114, 97, 38,150, 76, 2,226,135,144,216, 96,178,247, 38, +174,137, 4,246,222, 53, 17, 16,174,203, 2,210, 53,196, 40,154,191,178, 73, 54, +129, 89, 44,168,191,247, 62, 93, 59,219,238,179,111,123,139,189,141, 66,149, 47, +107, 11, 75,103,115,169, 84, 48,151, 5,195,222,193,178,199,255, 99,216, 4,134, +103, 55, 44, 30, 60, 13,197,146,101, 46, 17,216,135,181,249,233,134,197,163,178, + 28,188, 69,200, 93,151, 84,238, 79,223,201, 90,230, 96, 59, 57,182,197,209,153, +100, 42,141, 69,149, 45,107,110,239, 6,106,205,165,188,222, 40, 96, 61, 44, 7, + 2,200,195, 58, 21,167, 55,108,139,224,228,213,245,210,118,105,168, 57,111,108, + 46, 11,196,198,193, 90,145,176,173,144,219,240,237,110,179,176,147,246,133, 93, +161,232,103,169, 77,184, 93,178, 85,149,101,115, 33, 26, 31, 68,229, 14, 14, 11, +135,131, 67,204,177,166,149,224,168,243,188,193, 32,189,129,113,203, 33, 26,217, +115,138, 52, 93,151,202,165,201, 84, 88,120,111, 97, 8, 4, 43,247,204,101, 50, + 23,209, 96,193,231,172,117, 50,214,238, 46,112,141, 84, 74, 24,162, 40, 6, 13, + 40, 6, 12,166, 7, 8, 48, 85,180, 70, 24,186,237,237,158,222,107,172,105,240, +236,185, 38, 59,186, 89,207, 57,174,251,132,111,176,133,113, 98, 31, 90,249, 66, +169, 49,169, 63,236,185,148, 61,186,112,187,103,233,105,107, 41,119, 43,224,102, +127, 69, 61,172, 42, 2,185,157,236,136,231, 55, 23, 91,233,133,149, 57,250, 82, +133,179, 61, 19, 76, 4, 70,209, 38,188, 85, 0,115,240, 56, 27, 77,230,224,188, +221, 91,150, 30,104, 91, 59, 8,202,207, 53, 20, 10, 74,196,123, 27, 39, 2,234, + 60,167,159,107,179,163, 21, 86, 84, 74,241,105,109, 98,140, 71,229,237, 82,182, +142,199, 3,114,135,205,133,146,113, 58,109,173,187,155, 75,216,217,158,248,253, + 80, 75,107,236,203,230,242, 5,133, 51, 42,198, 41, 11,101,130, 98,121,128,113, +174, 12, 86,137, 32, 9, 76,133,226,108, 58,140, 95, 32, 50, 6, 53,192, 17,231, +216, 34,250,107,233, 86,145, 32, 91, 56,251,141, 55,168,200,244, 91,216, 76, 77, + 90,183,172,144, 15, 68,102, 59, 38,157,167, 28, 5,175, 64,154,112, 11, 13,175, + 53, 21, 73,224,233, 43,148, 48,218,179, 4,205,182,135, 28, 33,103, 43, 42, 29, +253,118,180,222, 81,154,240, 98, 89, 90,190, 37,207,166,115, 93,222,101,153,160, +247,140,161, 45,223, 14,181,100,174,116, 29,181,161,241,173,212,114,133,255,100, + 37, 88, 43,252,118, 65,147,165,131, 34, 33,211, 68,112, 48,202,196,162,162,182, + 42,118,229,201, 32,182,211,111,255,218, 46,100, 53,186, 93, 14, 53, 4,176,231, + 19, 70,206, 95,217, 59, 57,196, 23, 94,123,134,147,223,184,178,131, 37,207, 41, +202, 74, 56, 74, 77,103, 72, 8, 76,147,246,141,157,198,245, 22, 58, 54, 8, 76, +103, 72,254,233,138,211,209, 61, 95,200, 53, 54, 76,207,188,219, 6, 71, 39, 14, + 38, 49,161,104,222,228,146,109,222,108, 40, 27,138,160, 22,106,251,211,121,201, +123,183,108,187,198,157,176, 37, 4,130, 61,219, 96,174, 95, 58, 37,244, 86,155, + 1,156,139,226, 64, 34,131, 97, 40, 42,179, 47,141,218,119,114,136, 90,144, 21, +192, 18, 68,105,197,178, 44,203,178,172, 71,230,172,140,172,189,199,161, 84, 52, + 23, 71, 98, 71, 84,155, 77, 65, 77, 86, 1, 76, 70, 49,187, 15,169,114, 29,200, +159,215,113,241,175, 74,112, 84,154,240,236,145, 92,209,242,246,199,206,142,100, + 89,236, 97, 65,222,134,163,137,200,100, 34,143,244,102,249,254, 10,152, 44,130, +219, 51, 82,149, 96,210, 71,136, 8,189, 64, 21,177,212, 86, 6,129,186,222,223, +158,110, 81, 20,227, 67, 18, 65,198, 52, 77,127,143,111,231,233,122, 47,124,239, + 81, 29,168, 16,220,129, 5, 57, 96,117, 38,174, 7,100,194,208,173, 45,186,140, +112,114, 26, 11,246, 0, 24,120,120, 15, 9, 72, 47, 67,134, 83, 6, 30, 58,239, +242,144,160, 3,160,118, 55,242,237, 45, 86,248,203,160, 10, 13, 88, 15,136, 61, +101, 53, 30, 77,175, 98, 95, 24,162,183,131, 37,121, 35,215, 74, 35,107, 61, 58, +252,228,137,227,219,237,209, 53,219,175, 72, 64,100,149, 12,101,129, 60, 34,145, + 6,199, 38,156,205,123,211,130,186,237, 36,247,120,101,153,106,144,111,174, 7, +172,209, 24,130, 92,168,194,163,214, 41,167, 74, 72, 36, 41, 40, 72,210, 26,130, + 24, 4,225, 96, 22,168,131,164, 30,114,168, 68, 71,145, 64,101, 8, 81,136, 40, + 66,136, 33,134,144, 8, 73, 48,145,136,210, 20, 36,199,165, 42,136,117,149,222, +188,204,131, 84,149,162,171,205,189, 63,124,191, 50, 41,166, 4,232, 49,107,114, +199, 62,231, 63,168, 67,157, 51,176,209,110, 94, 37,117, 57, 70, 11, 89,115,195, + 53,232, 18, 35,135, 1,106,104,174, 6,129,235, 5,198,178, 8,143,150,150,110, +129, 66,247, 81, 23, 85, 29, 20,100,134,202, 63,190,115,129,250, 79,142,121, 68, + 21,124,234,140,239, 75,212,157,199, 24,198,197,162, 54,240, 96,190, 45,188,107, +223, 91,170,121,241, 2,131, 95,207,146,239, 27, 29,140,104, 96, 90,194,103,199, + 5, 45,209,100,132, 15,214, 55, 9,105, 45,103,138,249, 59, 26,240,165, 34,194, +110, 67, 44,225,111,195, 49,248,210,105,223,190,192,120, 75,242,119, 31,129, 7, + 9, 14, 3,202,176,134, 15,182,224,136, 2,132, 30,118, 92, 51, 72, 54, 26,176, +160, 83, 77,240,154, 34, 46,164,123,235,200,182, 95, 84,170,166, 19,205,161,171, + 92,186,198,129, 48, 97,130,110, 55, 28, 7,182, 72,239, 28, 0, 25,191,152, 22, +118, 26,121,175, 54, 26, 24, 56, 13,106,129, 30, 21, 22, 24, 23,247,197,196, 30, +230, 99, 93,132,206, 34,130, 11,201,212, 99, 37,141, 72, 50,144,119,250, 79, 18, +104, 75,158,226,142, 33,116,192, 57, 11, 28, 77, 43,112, 51,177, 12, 8, 10, 0, + 36,145, 47, 99, 90,238, 37,213,169,234,253,125, 39, 98, 55,206, 48,244, 8,237, +142, 58,149, 75, 85, 93, 92,229, 50,139,149, 81, 78,235, 13,177,185,159,144, 52, +159, 64,142,137, 84, 48, 13,197,120,120,203,178,103, 16,255,237, 19, 21,172, 71, + 34, 83,212,248, 0,244,151, 77, 38,119,226, 26, 19,225, 11, 57, 37, 79,128,104, +215,156,138,223,242,186, 96,104, 8,224,145,185, 84,158,150,224, 61,228,119,239, +117,201, 55, 12, 94, 26,186,190,172,211,210, 67, 18,174,217, 9, 26,103,183,213, +216, 50,112, 57,161,150,251,253, 83,212,255,245,222, 12,110, 67, 60, 21,245,105, + 55,138,232,181,152,185, 78,211,117,129, 65,123,193,195,128,187,186, 70,230, 82, +219,235, 42,215,252, 58,192, 88,105,246,147,214, 42, 21,177, 78,245, 28, 71, 36, +144,246,120,192,217, 0, 4, 20,242,212,134, 29,173, 20, 89,207, 37,136,149,119, +171, 35, 78, 6,129, 77,255, 66, 12,234,181,221,207, 40, 53,135, 18,172,227,162, + 5,207,159, 32,143,146,128,154,238, 70,210,166,205,187,245,183, 64,174, 44, 37, +163,103,146, 58,184, 59, 79,225, 31,119,242, 20, 68,207, 1,246,191,116,215,219, + 91,127,134,171,238, 27,139,235, 47, 96, 97, 94,151, 71, 95,213,239, 9,206, 79, +223,182, 79, 63, 3, 80, 34, 82,130, 60,246, 27, 57,241,237,223,110,204,160,139, +112, 94, 88, 91,136, 51,229, 81,150,151, 31, 92,166,131,222, 66, 61,172,229,189, + 1, 70, 83,238,212,128, 45, 89, 89,142,205, 92,186,235,143,170,186,132, 38, 59, +241,211,121, 6,204,205,108, 11,155, 38, 96,147, 72,227,248, 99,120,214, 19,151, + 63, 88,253,144,216,227, 48,232, 96, 4, 65, 38, 30, 87,231,228,171, 22,147,190, +161, 96,243,203,246,224, 30, 82,219, 78,132, 4,228, 48, 7,241,244,186,178,178, + 15,140, 6, 66,111,245,188, 38,143,171,238,142,196, 82,117,160,180,220, 52,248, +200,138, 22, 64, 96, 83,143,140, 91, 27,244,106,117,119,239,124,137, 36,249, 81, +220, 58, 54,140,188,133,224,133, 86,191, 18,158, 10, 91,130,188, 79,253,253,242, + 73,124,134,198, 12,143, 31, 96, 28, 7, 2,196,182,124,217, 33, 54,126,212, 48, +125,114, 50,110, 16, 13, 24,219,136,204,139,166,226,106,107, 55,211,195,171, 74, +168, 62,113,177, 1, 61,145, 97,184,121,239,152, 52,229,229,233, 86, 51,148,163, +188, 53, 18, 76, 15, 23, 11,218,132,196,113,164, 40,112, 0,182,178,221, 40,153, + 43, 52, 1, 19,246, 23,245, 49,142,143,147, 58, 93,206,204,113,172,138, 80, 44, +136,197, 44, 80,197,142,107,209,185,169,143, 16,194,104,234,233,244,247,158,253, +168,135,176, 60,203, 73,104,136, 15, 80, 78, 1,227,128,179,235,219,213, 0, 96, + 70, 64, 76,142,215, 92, 87, 22, 1, 88, 47, 22, 59, 80,254,215, 10,212,102,242, +116, 81, 50,219, 16,254,222,222,103,233,230, 73,143, 67,240, 68, 37,240,213, 93, +238,116, 2, 99, 84,200, 11, 93, 62,250, 76,239, 50,244, 89,151,209, 69,117,212, +149,134,131,182, 27,236, 75, 36, 63,121, 38,156, 90,147,157,144, 35,236, 16,236, + 17,225,159,186,176,173, 54,178,117,208,173, 53, 91,122,213, 42,244,146,171,149, +134,120,197, 80, 94,231,236,196, 16,156, 79,178,170,145,216,167,116, 53,147, 12, +205, 52, 43,189, 72,246, 75, 49, 58, 21,220, 1, 51, 63, 59,168,195, 34,118,235, + 26,149, 93,119, 22,212,164,105,188, 39, 78, 76, 49,248, 28,141, 35,240, 45, 89, +140,165, 79,248, 91,135, 73, 28, 70,232, 63, 49, 61, 82,127,230,184,163,192, 27, + 66, 42, 88, 5,180,245, 36, 8,227,209,193,241, 66,156,117, 44, 71, 3, 68,205, +202,221,112,167,249, 62,124,244,114,137, 29,167, 8, 39,107,209,105,185,206,249, + 33, 94, 16,167,214,151,206,164, 94, 63,139, 59,240, 86,246,183, 9,234, 15,185, +139, 38, 24,231,206,225,171,125, 47,210,251,231,130,255,224, 51, 94, 73,100,156, +121,187, 65,231, 24, 43,255, 3, 66,197, 23,114,212,178,187, 92, 92,177, 52,143, +208,204, 91,184,221,253,251,251,102,130, 87, 51, 88,219, 11,143,122, 67,212, 31, + 94,247,223,204,189,224, 91, 1,119, 24, 17,161,194, 75,201,243,141,135, 82, 88, +105,223,216, 7,113,224, 86, 27,110,177,172, 92, 24, 29,146,128, 26,237,245, 32, +236, 9, 46, 7,194, 37, 77, 30, 77,238, 18,178, 13, 13, 54, 71,183, 83, 52, 46, +162,132,198,144,199,248, 3, 64,140, 80, 35,109,225,108,240,147, 42, 29, 96,112, +240, 73,160,193,101, 34,242,129,251, 76,141, 96, 91, 67,203,251, 23,158,196,120, +181,239, 3,242,236, 18, 11,232,252, 32, 85, 49, 61, 83, 14,192,221,252,191, 59, + 31,134, 25,199, 94, 18,102,124,227,232,196,215,147, 96,117,245, 47,228,109, 17, + 38, 69, 46, 16,130,161,170, 49, 9,120, 50, 90, 68,105, 92, 7, 77, 92,203, 76, +183, 32,172, 61, 15,164, 11, 53, 16,144, 58,166,219, } ; -// ../Source/Template/GB_werk.h: -uint8_t GB_JITpackage_151 [1331] = { - 40,181, 47,253, 96,172, 15, 77, 41, 0,214,185,164, 38,208, 22, 85, 7, 20,152, -244,223, 10,216,237,161, 69, 75,209, 38,144, 26,134,215, 90, 74, 79,153, 26,195, - 89,207, 2,111,148, 95,228,106, 6,188,120,130,158, 0,145, 0,155, 0, 27,110, -176,188,189,165,202,249, 86, 44,187,117,147,176, 94, 30,123,139, 97, 80, 59, 67, -102, 61, 6,210, 10, 84,177,185,216,144,240,184,212,122,215, 86,160, 1,170,192, -162,153,195, 49,172,123,109,124,106, 89, 88,180,159, 86,155,177,124, 68,104, 80, -150,118, 88, 91, 55,222, 49,195,118,227,154,230,240,201,160, 96,160,192,146, 64, - 48, 80,112,169,138, 62,245,118, 50,226,148,195, 63, 89,132,219,114,124,210, 56, -100, 30, 50, 46,153, 2,163,205,201,105, 52,110,167,129, 72,170,140,125,143,107, - 22,255,224,227,211, 77,177,124,185, 93,171,228,250, 12,175,247,131, 27,247,237, -165,214, 49, 25, 69,194,234,217, 60, 80,252,114,129, 44,151, 75,111, 43,149,225, - 43, 81, 70,195,105,255, 73,230,188,101,177,180,100,175,220,250,249, 11, 94, 77, -182,247, 18, 32, 22, 26, 74, 25, 62, 76, 59,144,147,239,220,176,100,238,170, 29, - 61, 78,207,243,215, 52, 11,195,203,195,146,197,245,188,170, 48,206, 39, 45,159, -198,247,222,140,227,138,111,153,123,253,220, 78,116, 75, 99, 86,175,227,168, 87, -182,110,249,142, 61,168, 41, 95, 59, 85,212,100,229,224,167,214,103, 76,203,178, -176,118,119, 89,252,148, 4,241,143,166,101,181,220, 39, 70,103, 24, 43,237, 92, - 74,150, 99,110,143, 29,188,196,142,123, 11,227,123,159, 85,155,121, 62,169,150, - 5, 88, 7,159,198,253,181,175, 54,102, 28,223, 32, 95, 24, 73, 74, 40, 25, 72, -137, 14,112, 41,225, 2, 81, 4,227,251, 92,247,182, 94, 7,249, 82, 71, 10, 17, - 24, 29, 25, 27,170,113,242,243, 44,141,217,187, 24, 14,114,151,172, 59,110, 19, -176,129, 80, 32,200,106,242,233,130,231, 96,228, 30, 55,145, 33,167, 28, 96, 41, -115, 87, 85,176,122,221,245, 47, 92, 89, 51, 79,192, 57,179,234,193,234,114,249, - 23, 62, 18,114,107, 97,231, 63,116, 2, 65,208,129,130, 1, 2, 1, 68, 61,108, -185,235,167,135,241, 83,172, 58,142,205,123,221,210, 42, 53,238,173, 81, 5,141, -219,168,229,149,243,216,221, 70, 73, 82,147,116,198, 87,206, 48, 16,116,173,245, -180,146, 87,146,213, 62,177, 90, 12,159, 49, 97,145,121,208,186,218, 3, 53,214, -238,180, 56, 49,247, 91, 62,194,151,197, 15,107, 71,223,109, 89,187,169,242,196, - 79,125,180, 24, 55, 61,202,215,255, 17,105,100,112,240,130,211, 39, 41, 2,136, - 46, 45, 92,138,166,143,168, 66,211,161,241,105,160, 55,141,251, 22,174,173,229, -181,121,112,243, 74,229, 31,215, 32,228, 44, 60,147,233,192, 56, 67,172,150, 99, - 43, 7, 28, 18,185, 52,125, 68, 18, 27, 14, 25, 8,137,136,167,157,197, 62,242, -202,169, 85,106, 53,228, 74, 57, 77, 51, 10,198, 44,102, 84,115, 84,243,225,236, -181,215,195,154,197,140,159,218,236,100, 1,129, 35,168,193, 33, 83,166,100,100, - 20, 20,148, 20, 36,173, 1, 33, 12,130, 64, 32,207, 82,216, 3, 2,185,108, 14, - 34, 67, 40, 34, 66, 66, 34, 18, 35, 18,136, 40,163,160, 32, 37,121,142, 57, 4, -156,224,221, 71, 13,191,107,144, 6, 0,142,132,111,248,122,119,245,136,144,199, - 87,132, 32, 1,209, 81,171, 17, 56, 39,164,201,101,136,217, 3,131,189, 29,154, -227, 12,102,178,211,236, 90, 67,218, 37,140, 10,231,142,103,111, 26, 89,252,233, -122,160,132, 55, 85, 18, 70,170,248, 98,159, 94,129,101,191, 38, 51,207,232, 13, - 89, 10,102, 42,137,140,114,184,200,253,180,215, 19,246, 82,191,182,216,181,138, - 58,158,213,235, 63, 12,108, 23,135,149, 96,236,221,178,142,251,176,133,236,147, -162,243,101, 15,102,236,226,157, 18,175,112,211, 24,211,244,163,187,168,174, 29, -108,249,128,175,105,112, 65,201, 93,167, 77, 51, 78, 34,203, 72,129,219, 50,191, -188,122, 22,106, 36, 56, 4,128,229,172,160, 72, 3, 57,139, 96, 75, 37,104,137, - 14, 36, 34,135, 85, 51,115,124, 24, 58,219, 4,153, 38,209,105,135,214, 64,230, - 27,223,120,243,180,136,200, 50, 24,137, 40, 72, 3,143,145,247,225, 71,251, 46, - 58,124,202, 33,228,150,138, 35, 97, 52,167, 72, 94,175,160, 45, 5,188,211, 19, - 68, 72,105, 90, 85,142,181,189,110,163, 0,115,174, 20,187, 71,143,151, 57,226, -230,164, 29, 97, 44,229, 36,132, 7, 39,189,115,206,190,125, 87,221,210, 77, 3, -154,124,201,127, 55, 79, 24,238, 29, 79, 6,121,108,134, 71,133, 36, 76,158,217, -184, 13,212,173, 27, 17, 9,102,176, 61, 92,105,119, 32,205,142,182,251, 67, 4, - 69,128, 84, 57, 34, 67,178,210, 50,219,117,175,176,205,104, 28,187, 70,106,184, -130,197, 8,169,125, 49, 35,159, 27,116,151, 76,244, 39,155,152, 58, 24,205, 99, -193,226, 66,188,175, 29, 91,243,131, 13, 36,160, 17, 73,250,174, 65,122, 1,159, -244, 12,118,141,243, 95, 98,170,254, 8, 90, 50,112, 73, 64,193, 3,181,116, 1, - 30, 7,199,171, 53, 61,194,140, 37,109, 47,227,123, 14,220,178,207, 63, 4,136, -217, 51,212, 98, 27, 17,193,135,160, 34, 86,216,152,172,236,114, 63, 60,155,242, - 37, 84,155,158,193, 60,229,131,128,105, 88, 5, 12, 64, 63,154,160,251, 95, 9, -164,153,199, 5, 63,116, 48,103,118, 59,148, 49,224,166, 41,166,137,167,148,168, -117, 69, 94,144, 50,236, 40, 7,157,181, 48, 51,130, 17,227,183,160,211,170, 10, -105, 99,254,119,108,137,253,234,138,130, 65, 26,181, 31, 37, 51,176,212, 91, 33, -164,161, 79, 40, 9,186, 32,178, 85, 57, 37,190,212,101,227,168,139, 4, 19,227, -255,226, 30, 19,225,233, 10,148,234, 94,137,223,248, 36,243, 28,186, 20,252,113, -197, 71, 9,135,115, 5,224, 74,129, 65, 93,216, 6,108,103,140,190, 64, 83, 60, -146, 54, 86,149,208,194,121, 90,166,129,102,104, 70, 70,138,153,150,154, 97,220, - 51,214, 81, 47, 81,239,101,125,117, 0,120, +// ../Source/Template/GB_concat_bitmap_bitmap.c: +uint8_t GB_JITpackage_145 [432] = { + 40,181, 47,253, 96,254, 2, 53, 13, 0, 38, 90, 80, 32,240, 24,231,240,113,107, +181,191, 37,164,147, 34,164, 20,115,105,245,243, 95,138, 33,166,120,242,191, 58, +197, 97,145,196, 83, 47, 72, 0, 72, 0, 69, 0, 95,188,150, 64, 24, 16, 4,198, +193,128,120, 54,177,107,184, 81,146,242, 66,188,202,203, 33,216,156,107,155,120, +153,120, 86,222,138,131,226, 43,237,134,230, 62,109,174, 84,223, 44,193, 48,215, + 62,253, 58,255,242,149,222, 97, 37,152, 59,212,101, 57,107, 56,187, 73,229,219, +118, 17,182, 45,141,199,179,148, 4,187,107,166,122,242,230,181, 85,149,216,164, +242,200,177, 72,210,235,229,218,197,231,218,207,184,134,243,255, 47,214,101, 40, + 32, 8,212,155,210,198, 59, 46,237, 81,231, 74, 69, 22, 2,197,149,206,190, 16, + 58,148, 76, 65, 68, 81,151, 98,170, 57,206, 30,169, 53,255, 2,172,193, 96, 85, +229, 33,143,246,143, 27, 30,121,180,216,255, 43,155,157,101,198, 24,253, 78, 34, +234, 77,252, 12,235,192, 83,253, 13, 71,255,232,247,201, 43,237, 45, 24, 94,130, + 36,121, 45, 32,218,231, 78,177,200,181, 67, 18, 66,124,228,161,248, 60,251,102, + 76,175,224,185, 11,215,213,186, 90,135, 16,151,133,184,187,120, 45,218,107,156, +197,238,201, 96,184,110, 82, 73, 69, 16,103, 63, 79,113,223,182,121,193, 57,174, +109, 9,213, 31, 60, 95,153,113,207, 71,206,245, 86,122,188,210, 15, 37, 31,120, +180,143,188,207,202, 64,209,126, 30,138,216, 71,253, 43, 41, 32, 96,100,198,208, + 14,249,192,214,176, 68, 68,155,238,196,220,118,190, 22, 27, 64, 60,169, 11, 2, + 11, 24,171,248, 78, 85, 8,158,128,219, 61, 98, 12,250,131,149,112,107, 20,140, + 91, 18,229, 97,110, 48,127, 1,109, 19,154, 64,209, 10,231, 72,135,170,221,118, + 92, 26,185,247, 15, 97, 55,104,106,158,153,210, 6,202,106,253, 3, 50,214, 33, + 50,216, 88, 0,167, 12, 76,207,152,162, 96, 8, } ; -// ../Source/Template/GB_zombie.h: -uint8_t GB_JITpackage_152 [925] = { - 40,181, 47,253, 96, 81, 7,157, 28, 0,182, 44,129, 38,208, 22,113, 14,160,213, -107,191, 81,124, 81, 30,181,176,233,138, 20,116,172, 8,213,179,144,148,125, 13, -251,243,244,148,222, 44,245, 48, 88,193,193, 11,128, 0,113, 0,108, 0, 76,114, -189,228, 99,100, 52, 17, 11, 64,153, 16,129,200, 52, 84, 92,120, 92,235,250, 98, - 0,138,101,186, 72,139, 89,170, 81, 71,136,203, 23,207, 94,151,145, 86,246, 90, -172,145, 58, 30, 48, 38,183, 37,113,229,102, 92, 78,108,195, 25,127,143,122,100, -112,177, 92,164,131, 2,203,229,144,245, 60,146, 92,162, 15,159,168,119,176, 9, - 51,222,120,164, 65,105, 26, 48, 77,163, 4,194,202,168,154,198, 78,222, 52, 40, -242, 17, 94,151, 13,121,114,243,181,238, 8,216,180, 92,101,240, 68,164, 65,226, - 4, 4, 20,137,128, 32,157, 56,123,223,212,212,129,174,183,157,219,131,178,210, -183,126,211, 76,162,243, 89,112, 96, 48,206,119,211,138, 89,159, 2, 45, 23,186, - 71, 5,210,163,221,158,150,188,242,184, 43, 95,108,131,143,193, 28,130,248,217, -146,230, 55, 7, 94, 78,142,190, 36,172,233,221,234, 82, 49, 5,183,154,198,239, -250,132, 61,249,189,216,188,229,152,133,243,175,140,201,186,230,187,149, 90, 73, - 48,238,201, 21, 42,144,158,207, 13, 86,250,138,110,182, 43,191,224, 93, 7,242, -233, 39, 59, 28,206,102,206,246, 59, 15,246, 53,104, 29,179, 24,227,156,194, 64, - 20, 81,230,113,120, 52,123,179,222,176,148, 90,109,242,157, 74, 55, 90,223,232, -241, 79,155,241,212,109,168, 59,101,243,163,181, 26,126,234,123,122, 56, 63,123, -217,226,235,218,111,132,217,165,192,228,149,155, 90,219,185,219,173,218,183, 78, -177,217,167,254,169, 82,209,187, 37,137,154,125,171,183, 90, 55,225, 56, 53,187, -190,249,208, 72,196, 15,245, 20,202,197,174, 23,130, 66,180,143, 63, 15, 56,164, - 61,143, 70,195, 97,193, 20, 5,164,247,149,104,164, 69, 76,101, 16, 24,110,185, -194,243, 0,129,161,145,129, 46,146,244, 80,166,201,202,169, 92,107,111, 25,140, -215, 97,212,145,155, 65, 7,150,174,249, 26, 16,105,136, 18, 81,223,182,217, 24, -225,148, 27, 35, 14,140,209,198,133, 69,220,169,239,110,157, 83, 56, 47,167,228, -247,125,218, 54, 93,175,118, 75,159,150,208,209,136,122,212,213, 52,213, 79, 14, - 44, 55,106,239, 56,221,248, 84, 6,128,179,168,161,169, 82,134, 72, 36,136, 20, - 36, 41, 40,164, 49, 32,132, 16,163,220,149, 7, 66, 96, 73, 16,114,230,208, 85, - 82,148,122,237,207, 1, 70,112, 39, 89,104,148,222,182,142,207,210, 17,171,204, -100,152, 69, 82,160, 56, 16,207,170, 74,203,142, 47,197,137, 65,210, 68,208, 20, -156, 37,240, 46,115, 71,195, 78,121,224, 13,109,249, 54, 83,230, 90,143, 65, 92, -182,173, 24, 88,115,142, 35, 22, 82, 25, 88,241,194,179,247,237,142,130,111, 65, -180,198, 10, 49,190, 85,153, 64,104,217, 47, 65, 9, 25,181,107, 31,106,215, 78, -201, 14,243, 6,124, 41,106,150, 32, 46, 97, 13, 33,187,184, 9, 24, 57,210, 77, -162, 73,171,193, 99, 46,195, 48,193,178,148,203, 49,147, 56,142, 38,221,197, 92, - 99,195,108, 37,170,108,110,196, 12, 42, 5,226,145,162, 87, 34,245,161,165,173, -247,214, 47,105, 2,135, 81, 89,249, 30, 50,193, 74,124,231, 15,161, 85, 74,204, -185, 64,248,194,208, 46,129, 0,206,110,233, 2,116,110,221,142, 8, 18,243, 38, -230,248, 99,126,134,133,128,179, 91, 58, 91, 69,128,124, 10, 73,107,143, 36,211, -103,157,162, 48, 90,196,134, 37,121,143, 27, 75, 92,246,126,202,207,190,239,166, -245, 68, 73,151,109,114,200,241, 42,248, 93, 56, 34,166,201,124,154,209, 4, 4, -231,239, 74, 30,140,112, 43,105,128,205,152, 68,140,244, 80, 86,245,227, 3,224, - 45,101,146,159,224,142, 57, 30,143,192,201, 92,106, 46,225,139,215,226,194, 29, - 36, 91, 76,122,102, 28, 2,170, 58, 88,176,255,134,186,176,210,143,140, 84, 35, -209,166, 2, 60, 50,189,230,232, 42, 72,103, 41,152,172, 47,159, 87,122,167, 12, -238, 97,199, 65, 3,158,137,146, 57,104,182, 63, 51,121,191,124,157, 79,217,105, -222,126,213, 2, 60, +// ../Source/Template/GB_concat_bitmap_full.c: +uint8_t GB_JITpackage_146 [401] = { + 40,181, 47,253, 96,138, 2, 61, 12, 0,246, 87, 74, 33, 0,151,115, 22,190, 38, +235,218,246,129,244,186,203, 44, 29,116, 84, 31, 58,169, 15, 47, 41, 62, 98,237, +179,255,255,123,127, 8, 1, 64, 0, 66, 0, 63, 0, 24,166,164,142,156, 16,111, +234,242,231,209,204, 49, 76,164, 64,186,219,160,132, 49, 49,216, 23, 51, 51, 13, + 49, 85,137,130,185,189,191,255,101, 75, 63, 43,205,127,223,206, 51,106, 13, 65, +220,109, 47, 83, 15,151, 91,218, 79,114, 16,201, 53,173,202, 52, 45,159,158, 96, +151, 45, 23,159, 45,125,198,246,147,255, 95,161,170, 2,225,144,205, 78,246,141, +103,128,147,130,104,182,243, 51,201, 38,182, 83, 82, 74,166,137, 88, 8,159, 73, + 2, 39,158,151,227,220,133,232,229,181,198, 99,136, 67,225,144, 45, 12,133,195, + 47,105, 61, 47,252,241,120,173,255,213, 37,105,238,140,173, 89,195,207,236, 36, +254,101,113, 94,104, 15,126,160,215, 89,107,131,125,127,189,239,237,133, 26,188, +128,120,159,185,132, 34, 91,218,248, 85,106,143, 59, 54,178, 97, 39,143,157,108, + 91, 16,201, 31,199, 1, 85,149,170, 82, 6,207,118,125,152,114,241, 88,188,199, +182,107,125, 99,169,108,157, 24, 59,219,229,188,180, 93,211,228, 5,223, 54,122, + 69, 36,250,193, 51,216, 25, 83,249,199, 55,170,137, 26,183,179,146,250,129,199, +233, 81,131,193,201,246, 29,143,247,141, 38, 32,112, 38, 32,202,243,121, 22,129, + 4, 43,217,120,176, 0,196, 23,187,197, 8,116,184,214, 1, 67, 90,172, 36,211, + 25, 92,193, 1,189, 95,199,192,136, 35,159, 88, 71, 8, 91,217,176, 25, 98,190, + 5, 20, 33,230,111, 17,209,236,168,137,142, 54, 35,251,253, 99,176, 27, 52, 55, +207, 76,109,227,236,106,125, 3,226,222,224, 23,214, 24,128, 63, 14, 67, 81,224, + 6, } ; -// ../Source/JitKernels/GB_jit_kernel.h: -uint8_t GB_JITpackage_153 [562] = { - 40,181, 47,253, 96, 31, 5, 69, 17, 0,118, 28, 89, 32,240,182, 30, 12, 8,146, -156,149,114,253,188, 89,180, 32,243, 52, 16, 18, 84,205,240, 96,113, 46,253,204, -133,197, 97,128,230,189, 81, 0, 78, 0, 80, 0,122,123,158,123,113,140,165, 31, - 26, 12, 5, 3,225, 88, 40, 24,110,176, 5, 63,232, 59,170, 16,167,164,151,188, - 13,134,238,230, 7,140,196,166, 23,214, 28,121,188,206, 53,196,252,190, 34, 76, -212, 24, 87,207, 96,231,207,137,176,253,174,192,125,187, 38,238, 15,143,194,255, -229, 7,209,125, 63,116, 70, 60,145,136,136, 68, 34,191, 43, 14, 67,191, 5,226, -127, 87, 16, 37, 20,179, 42, 23,139, 66,187,231,190,238, 10, 98,164, 50, 90,229, -239,109,255, 64,215, 24, 87, 7,247,119,157, 35,232,235,143,111,231,250,122, 91, - 84, 80, 12,196,123,182,134,210, 31,249,111,119,247,247,220,133,120,253,189,189, - 24, 98, 3,209, 40,238, 71,249,245, 95, 60,181,131,113,181,159, 53, 43,187,182, - 74,230,210, 93,238,123,141, 95, 16, 13,190, 51, 24,146, 30, 99,206, 11,110, 63, -212,216, 62, 71,169,127,249, 55,233, 29,147,211,130, 69,220,221,163, 33, 82,145, -216,233,132, 93, 90,102,169,182,202, 69, 11, 0, 31, 12,220,112,177, 52,180,194, -100,180,224,156,131, 27,204, 33, 13,120, 84,113,195,200,202,210, 56, 91,150,101, - 89,150,101,217,156,115,206, 57,167,148, 82, 74, 41, 37, 4,179, 36, 24, 76,106, - 42,180,162,155,121, 73, 42,170,137, 4,209,243, 93,173,223,218, 74,145,110,222, - 53,228,246,118,158,173, 31,122,211,197,245, 58,184, 75,157,207,254,185,186, 6, -179,173, 33,127,253,222,214, 32, 27, 90,160,241, 92,163,148,144,136,104,138, 82, -144, 66, 99,176, 36,144,170, 49, 15,150, 82, 40,141,139,205, 35,122, 26, 3, 87, -142,220, 57, 38, 89,112, 30, 51, 55, 7, 92, 57, 38, 95, 56, 19, 35, 55,199,220, - 28, 72,110,224,196, 41,228,114,227,206, 81,190,224,110,174,114,198,103,139, 69, - 14,236,184,104,176, 62,254,189,134, 54, 0,186,177, 91,201,175,171,239, 88,112, -184, 71,108, 50,187,180, 53,129,136, 2, 85,120,181,129,196,197,115, 59, 45,222, -214,170, 52, 51, 10,104, 57,208, 86, 70,116, 48,216,131,110,155, 75, 60, 26,212, - 37,128,180,180, 85, 57, 96, 16, 92, 2, 27, 95, 91, 8,235, 17, 0,240, 75,238, - 54,156, 6,240,178,144,165,228,106, 22, 40,160,231, 16,208,100, 72,103, 52, 61, - 18, 5,186,105,254,252,204,196,206,129, 21,123, 3,136,185,115,147, 50, 70,138, - 2, 49, +// ../Source/Template/GB_concat_bitmap_sparse.c: +uint8_t GB_JITpackage_147 [717] = { + 40,181, 47,253, 96, 35, 6, 29, 22, 0,214, 98,107, 32,224, 28, 23, 3, 24,151, + 69,201,197,185, 35, 73,201,157,162,130,246, 0,119,100,178,249, 21,177,195,187, + 19, 49, 70,230, 24,227, 98, 0,100, 0, 97, 0, 3,171,177, 13,175,102, 32,154, +120, 8,162,117,149, 86, 91,240,122,143,168, 11,158, 36,231,187, 4,194,128, 24, + 48, 14, 6,196,185,112,123,167,175,171, 78, 78,152,135,141,155,181,186,160,119, +159,169,145,140,185,150,149,143,221,183,245,209, 94,183,220,117,245,215,179, 54, +190,183,228,221,127, 61,182,111, 88, 93,214,172,105,174,171,125, 77,116,215, 16, +179, 66, 42,169,188, 80,208, 6,133, 66, 31, 78, 36,237, 72, 99, 24, 79, 52,159, +133, 67,167,227, 90,165,107,167,197,106,203,113, 99, 58,127,186, 34,182,158,142, +199,226,171,209, 76,250,125, 32, 5,183, 28,231, 54, 85, 44, 54,190,239, 80,248, +134,151,212, 84,101,233,220,254,129, 83,227,125, 19,154, 1,191,144,230,227,128, + 95,134,130, 46,152,147, 21, 79, 23,240,255,154, 38,211, 12, 4,196,192,142, 97, +205,243,141,210,222,211,221,216,138,151, 91, 87,210,241, 18,233,118, 82,200,183, + 46,239, 73,117, 77, 38, 16, 60, 28, 55, 28,178,113,225,221,117,235,205,146, 45, +209,142,161, 62,183,209, 85, 11,191,100,157, 78, 90,146,172,101,205,207, 43,214, +235, 10, 85,203, 44,222,125,239, 56,102,200,243,252, 14,111,185,181, 45, 3,223, + 26,179,194,119,161,117,225,200, 96, 94,240,119,135,119, 25,176, 19,162,162, 11, + 8,154, 27,250,121, 23, 77,154, 54,155,105,179,131,201, 59,199,210,215,203,219, + 71,158,142,247, 42,121, 47,239,133,194,189, 0,242,153, 73,191,127, 56,126,200, +103,158,108, 46, 31, 58, 55,149, 9,122,184,131,160,227,234,179,167,187,214,189, + 19,177,125, 55,243,246,233,161,160,175,130, 45, 25,184,119,169,151, 83, 23,124, +151,117,107, 87,232, 57,206,169,222,141,115,251,164, 22,200, 83,143,171,238,120, + 37, 31,121,168, 49, 45,132, 2, 27, 25,145,180, 32, 41,181, 6, 64,132,144, 98, +118,117, 2,217, 36, 21,177, 44, 21, 16,145,161, 0,149,164,124,237,103, 3,192, +164, 33, 39,233,202,148,194,233,150, 7,227,145,105,109, 65,232,122,249,185, 60, + 47,238,109,253, 49,158,234,155,208,173,118, 90,237,202, 55,105,154,238, 67, 86, +200,179,177, 76, 98,201,208,163,148, 49,104, 17, 49, 18,214, 86, 55, 36, 82,123, + 17, 93,130, 35,112, 62, 55,191,129, 38,146,232,216,130,233,106,185,131,150,221, +200, 1,104, 38, 44,118,157,217,161,112,227,221, 40, 60, 91,253,150, 83, 32, 93, +227,164, 81,133,216,242,102,169,171, 7, 75, 91,253, 0, 55, 74,192,102,160, 65, +136,114, 69, 75,112, 65, 70,218, 88,149, 12,177,151, 97, 50, 42, 39,190, 6,135, +148,219, 35,101, 86,221,139, 31,204, 28, 93, 10,201,151, 44,204, 6, 33,148,191, +128,232, 71,130, 54,255, 22, 38, 23, 61,182,224,165, 16,121, 0, 58, 90,242,234, +164, 97,241,215,191,101, 49,202,111,249, 99,214,209,179, 82, 29, 68,214,155,169, +221, 44, 83,162,139,149, 96,161, 24,227, 83,183, 32, 58,104,162, 85, 96,218, 74, +201, 0, 45, 10,255,240, 56, 69,167, 64,251,186, 12,243,122,112, 76, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_dot2.c: -uint8_t GB_JITpackage_154 [308] = { - 40,181, 47,253, 96,165, 1, 85, 9, 0,230,209, 60, 33, 0,243, 54,238, 78,242, - 32,143,127,186,137, 18,168,232,192,189,172,128,254,165, 22,246, 61,177,180,201, - 33,170,170, 22, 4, 2, 4, 51, 0, 52, 0, 50, 0,111,106,175,228,126,231,147, -163, 31, 9,238, 23,221,109, 65, 80, 25,141, 73, 96,113,185, 38, 51,238, 29, 36, -226, 22,158,170, 77,126,215,122,234, 13,127,212,207,185, 59,111,174,197,156,162, -168, 68, 81, 1, 56,103,210,197, 81,153,190,239,232, 55,127,115,115,131,154,188, -121, 24, 86,143, 16,149,161,146, 18, 7, 67,229, 4, 60,240,200,204, 29,207,225, - 83,245, 15,184, 73, 49,119, 30,113, 53,179, 96,233,105,204, 10,148,237, 33,241, -172, 90, 45,195,238,181, 24,141,194,240,204, 80,165, 39,238,140,113, 51,251,229, -209,198,231, 71,234,210, 45,106,152, 42,233, 65,236,149,213, 45,253, 57,147,247, -248, 31, 68,122,115,252,148,134,168,194, 9, 28,247,184, 46, 11,119,173, 30,245, -185, 95, 3,240,228,237, 23, 47,192,255, 59, 67, 60,230,128,187, 59, 5, 81,133, - 19, 6,174,117,218, 86,185, 85,167, 57,174,189,212,155, 61, 2, 18, 0, 66,128, - 82,212,229, 11,130, 8, 1, 88, 0, 66, 26,141,215,105, 49, 25, 31, 36,128,156, - 69, 55,116, 40, 72, 14, 25, 96,210,252,121,102,138, 54,140,173,214, 47, 6,185, -162,214,146, 78,236, 41, 10,134, +// ../Source/Template/GB_concat_bitmap_template.c: +uint8_t GB_JITpackage_148 [586] = { + 40,181, 47,253, 96, 64, 7, 5, 18, 0,182, 89, 81, 32,240, 88, 55,208, 69,138, +162, 47,207,144,131, 73, 49, 47, 49, 84,161, 40,212, 33, 68,125,249, 62, 43, 63, +136,195, 34,193,162, 66, 69, 0, 72, 0, 73, 0, 93,200,246, 68, 41,109,152,173, + 2, 95, 12,237,214,133,208,220, 76,192,145,146,151,135,103,146,142, 33,127, 91, +134,174,148, 37,159,134,221,180,197,199,182,253,218,111,218,254, 20,123, 63,252, +233, 29, 67,127,110,164,225,219,142,123, 90,177, 88,185,201,165,179,236,194,178, + 44, 26,110,195,100, 62,247, 62, 27,152, 14,126,123,152,182,214,239,165,238,238, +190, 46,214,117, 48, 36, 48, 7, 43, 29,103, 63, 72,183,159,125,236, 30, 6,243, +140,189,218, 13, 54,162,124, 12,158,159, 72,207, 14,234,252, 96,201,130,250,222, +217, 5, 69,226,144,192, 26,136, 67,162, 7, 85, 16, 14, 77,211, 82, 3, 65, 71, + 58, 53,251,171, 37, 63, 59, 73,232,202,135,180,109, 83,235,120, 52, 14,127,214, +195, 87, 20, 59,207,215, 3,180, 9,145, 94, 97,170, 85,236, 23, 34,193,102, 71, + 58,180,222,137,246,115, 11,198, 99,219,159, 61, 33, 12, 55,197,108,185,217,142, +237,166,210, 1, 85, 2,215, 44, 3,215,213, 34,125, 84,129, 77,138,253,183,164, +159,123,144, 54, 81, 39,187,206, 89,214,143,158,164, 46,237,153,214,193, 96, 10, + 90,245, 22,172,111, 81,185,149, 61,127, 38,103,195, 76,174, 3,170,225,222,242, + 3,180,123,229,173,120, 35,178,112, 44, 77, 53,138, 21,210, 93,247, 92,107,160, +241,169,161,161,161, 73, 81, 81, 10,173, 1, 80,132,204,212, 25, 55,181, 4, 81, + 6,189,145, 66,146, 57, 73, 14, 25,200, 36,119,176, 33,239,128,225, 59,120, 54, + 57,198,249,209, 28, 52,194, 50,135,194,158,146, 99, 19,151,132,217,214, 97, 33, +163,194,226, 27, 92, 89,250,105, 62,102,142,209, 96,220,194, 93, 69,229, 66, 5, +158,110, 35,200, 87,145,115, 95, 44,208,103,201, 93,140, 96,212, 29,251, 35, 58, + 9,172,144,114,116,157, 26,204, 7,197, 52, 70,188, 0, 28,211,209, 4, 8,175, +160, 56,146,166,211,104,251,166,135, 18, 10, 18,255, 57,100,252,225,225,220,134, + 7,224,201,226,176,102,214,197, 8, 67,127,172,131,128,182, 9,216,104,232,112, +132,160,108, 88, 61,183, 37,182, 96, 6, 11,252, 88, 1, 45,219, 82, 22,232, 24, +229,135,241,117, 83,230, 24,143,158, 21, 1,112,225,193, 54,134, 28,251, 90,163, + 5,161, 69,255,234, 99, 87,250,160,229,159,249,130, 80,245,226,195, 66,161,168, +177,148, 89, 36, 7,244, 28, 52, 25,149,153,210, 55, 92,177,107,134, 36,206,112, +250,126,248,138, 22, 39, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_dot2n.c: -uint8_t GB_JITpackage_155 [328] = { - 40,181, 47,253, 96,200, 1,245, 9, 0,166,147, 65, 33, 0,145, 55,238,114, 98, -128,176, 60, 70,153,234,234,188,106,113,127,144, 94,234, 79,122, 57, 48,107,232, - 17, 85, 85, 11, 2, 1, 2, 56, 0, 56, 0, 56, 0,119, 60, 63,141, 81,143,234, -239,236,126,231,180,171,161, 57,238,199,184, 95,130, 93, 48, 32, 1, 69,229,218, - 20,221,189,134,195, 41, 48, 42,167,109,134,248,106, 44, 38,191,212,127,193, 59, - 91,240,197, 92,146, 42, 36, 73, 1,159,197,188,203, 15, 27,208,163,229,131, 57, -131, 38, 86, 36, 10, 63,163, 31,125,206,209, 61, 86, 50,231, 36,105,253, 57, 76, -133, 9, 66, 24, 10,147, 15, 64,129, 63,104,206,124,150, 71,214, 55,227, 54, 49, -217,243,167,179, 89, 3,129,111,222,198, 69,176, 54,121,155,133,239,196,226,236, -210,184,235,225,153,189, 91,134, 97,124,177,250,144,100, 42, 74,231,135,217,153, -226,104,246,202,159, 13,166,161,169, 79,167,106, 33,154,160, 31,193,239,180, 78, -233,181,118,106,194, 7, 93,119, 85,149,164,195, 87, 99, 2, 47,117,186, 95, 3, -192,232,219,143,193, 23, 3,248,135, 41, 9,150,217,186,186, 45,210,105,150,243, -176,183,105,216,126,153,197, 15, 3,238,238,149, 83, 19, 30, 18, 0, 69, 9,174, - 67, 20,111,168, 89,190, 6, 42, 65, 72, 3,228,117, 70, 76, 22, 7, 9,200,103, -145, 12, 29, 98,146, 67, 48,152, 52,127,158,153,162, 45, 99,171,117,140, 65, 92, - 81,162,110,231, 64, 20, 5,110, +// ../Source/Template/GB_concat_full_template.c: +uint8_t GB_JITpackage_149 [561] = { + 40,181, 47,253, 96,179, 4, 61, 17, 0,134,221, 90, 32,240,218,230,224, 56,132, +148,154,154,216,142,137,118,121,144, 25, 12, 16,180,167, 14, 39, 9,240, 9,167, + 56, 44, 98,161,149, 10, 82, 0, 78, 0, 81, 0,161, 83, 26,111,104, 48, 20,140, + 3,100,161, 96,124,192, 9,110,192,147, 37, 47, 71,196,187,190, 28,130,115,116, +131, 40,118, 44,159,149, 55, 19,105,124,165, 21,117,158, 43, 81,214,154, 55, 75, + 48,204,117,190,233,204,191,124,103, 89,251,145,206,146, 90,176,243, 70,233,202, +219,178,228,106,200,109,150,204, 19,137,236,144, 72, 4,156,109,164,217,120,221, +121, 19, 16,251,203,185, 83,255,255, 44,131,101,120,245, 28,214,227,249, 46,252, +114,131,199,243,203, 55,132,120,190,175,124,124, 87,229,181,123,154, 76,129, 96, + 28,250,227,164,141,143,220,158,222,204,181, 59,205,161,113,109,110,118, 14,164, + 11, 8,209, 53,235, 54,238,208,113,254, 82, 51,222,105, 83, 42,175,180,183, 96, +120, 9,166,228,181,209,106,154,166,181, 6,130, 83,222,138,207,220,188, 25,247, + 37, 28, 3, 42,141, 50,111,118,149,134, 33,170, 49,109,128,198,201, 19, 40,127, + 85,112,118,146,202, 33,158,242,218,148, 37,159, 55,199, 35,215,249,140, 63, 34, +205, 22, 67, 60,183,248,174,179,131,241,132, 48, 1, 89,230,117, 87, 87,128, 44, +139,101,177,129, 33,218, 27, 52, 43,120, 9,244, 57,197,147,102, 77,137, 4,119, + 66,225,218,180, 42,214,124,225,249,202,140, 39,119,202,181,153, 80,201, 7, 40, +159,135, 21, 10, 19,201, 21,167, 60, 90,193,128,155, 89,102, 44,104,186,234,250, +227,240, 7,117,139, 2,220,201,190, 95,222,192, 85,253, 13, 3, 80, 32,112, 68, +134,206,234, 1,226, 28, 64,100,192, 44,219, 11,100,150,207, 65,137,178, 37, 36, +186, 15,235,188, 65,178, 8, 48,172, 30,112,163, 89, 71, 98,146, 24, 95,192, 17, +122, 89,231,192,196,167,101, 2,199,131, 53, 8, 99, 32, 52,108, 14,209,239,144, +218, 94, 48,235,168, 2, 36, 21,194,141, 76, 34, 39,141,124, 25, 63,196,198, 81, +152,132, 16,111,159, 16, 52,224,232, 92,194,192,118,205,129, 63,214,123,127, 3, + 50, 34,132,158, 1,126, 30, 36,106,168, 15,155,207,196,218, 26,209, 25,169,192, + 0, 26,230,192, 95,197,221,117,178,192,187,122,124, 61, 37, 0,216, 12, 10,147, + 80,194, 14,224,240,208,141,150,120, 80, 38,106, 25,200, 6,144,167,213,181,108, +154, 29,194, 76,235,224, 96, 13,190, 41, 50,212, 71,224,139,151,196,156,162, 96, + 8, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_dot3.c: -uint8_t GB_JITpackage_156 [320] = { - 40,181, 47,253, 96,178, 1,181, 9, 0, 22,211, 63, 33, 0,243, 54,238, 78,242, - 32,143,127,186, 97, 87,225,121,226,111,118, 64,255, 82, 11,251,158, 88,218,228, - 16, 85, 85, 11, 2, 1, 2, 54, 0, 55, 0, 53, 0, 96,137, 53,102,189,169,113, -201,253,206, 39, 71, 63, 18,220, 47,186,219,130,160, 50, 26,147,197,229,154,204, -184,119,144,136, 91,222,132,216,228,119,173,167,222,240, 71,253,156,187,243,230, - 90,204, 41,138, 74, 20, 21,121,143,255, 65,164, 55,199,247,114, 38, 93, 28,149, -233,251,142,126,243, 55, 55, 55,168,201,155,135, 97,245, 8, 81, 25, 42, 41,113, - 48, 84, 78,240, 6, 30,153,185,131, 29, 62, 85,255,128,155, 20,115,231, 17, 87, - 51, 27,219, 67,226, 89,181, 90,134,221,107, 49, 74,245,151, 31, 80,147,110, 58, -184, 73,140,191,198, 62,241,111,196,126,121,180,189,243, 35,117,233,223,115, 76, - 44,186, 69, 13, 83, 37, 61,232,225,178,186,165, 63,103, 2,148,134,168,194, 9, - 28,247,184, 46, 11,119,173,198, 6, 62,234,115,191, 6,120, 19,222, 47, 94,128, -255,119,134,222,152, 3,238,238, 20, 68, 21, 78, 24,184,214,105, 91,229, 34, 58, -205,113,237,165,222,236, 65, 9, 18, 0, 69, 9, 38, 33,136, 16,128, 5, 32,164, -113,122,157, 22,147,113, 72, 10,144,204, 12,240,127, 14,104, 45,227,236, 22, 38, - 77,155,103,166,104,187,216,106,221, 98,144, 35,106, 85,233,196,136,162,192, 13, +// ../Source/Template/GB_concat_sparse_template.c: +uint8_t GB_JITpackage_150 [1015] = { + 40,181, 47,253, 96, 35, 13,109, 31, 0,166, 44,133, 39,224,178, 86, 7,228,235, +235, 61,178,179, 77,125,124,249,229,130, 91,145, 3,119,239,157,115,174,103, 65, +181,177, 13, 68,249,136,151, 38,204, 16, 37,198,132,123, 0,120, 0,119, 0, 52, +132,221,246, 27, 99,156,168, 66,185, 76, 24,171, 32,109, 63,168,220, 87, 95,201, + 86,102,194, 86,114,213, 18, 19,140, 5, 13,197,226,142,202,150, 45,110, 47,230, +105,139,199,216, 62, 13, 92, 42,151,137,129,165,114,121,164,146, 62,217,238,128, + 11,167,180,135,176, 59, 63,205,249,180,105, 18, 10, 24,133,213,225, 96,195,183, + 65,155,232,163,235,133,159, 31,126, 94,217,231,216,247,240,124,161,228, 31,240, +133,145,126,248, 62,182, 21, 82,251, 46,172,228,172,158,130,195, 5, 4,162,137, +128, 64,153,147, 28, 59, 96, 55,134, 81,234,244, 62,130,130, 43, 91,130,129,194, +130, 33,226,113, 50, 16, 87, 91,146, 1,156,115,238, 17,230, 31, 9,147,246,136, +116,234, 31,237,183,234,122, 45,215,128, 51,104, 50, 56,175, 93,203,105,142,162, +194,189,138, 77,230, 98, 75, 94, 13,224,126,217,243,255,143, 34,144, 40,162,112, +101,236, 22, 55,157, 21, 87,120,203,160, 8, 59,110, 73,248,169, 77, 43, 25,187, +159,166,109,247, 43,243, 83, 40,252,220,222,248,157,242, 83,140,160,235,117,126, +170, 28,183, 36, 79,141,222, 54,118, 35, 28,211,129,212, 94,231,173,184,227,216, +205,174, 73,251, 58,135,198, 47,158,163,145,236, 19,214,164,183,247,160,224,112, +234, 28, 8,207,142,249, 59, 26,212, 65, 36, 18, 4,204, 43,167,164, 72,213, 23, + 94, 43,113, 4, 89,140, 85,246, 17,201, 90,144, 43,118,223, 7, 36, 95,231,245, +200, 49,194, 10,233,233,103, 30,126, 60,176, 82,171,239, 93,232,242,128, 10,175, +165, 54,179,240,202,215, 46,129,209, 35,251,101,252,184,234,104,219,187,182,246, + 21, 81, 3, 1, 76,219,175, 57, 42, 61, 67, 83,209,218,135,235,174, 78,189,227, +220, 68,226, 28,237, 52,170,241,110,157,105,137, 4, 1, 67,189,209,133,137,204, +230,181, 9,135,102,161,153,148, 66, 75, 36,179, 92,251, 74,126, 5, 74,192,200, + 54,114, 72,199, 34,153, 44, 84, 58, 69,102, 34,243, 78,157, 98,177,244,136, 17, +246,198, 67, 81,206,135,224,231,152,134,131, 68,168,103,210,175,182, 72, 44, 19, +213, 84, 58,153,198,105,133, 78, 27,225, 47,104,227, 83,163,239,178, 39,180,113, +150,211,186,133,152,128,203,168, 33, 61,135, 12,205,136,140,164, 36, 73,210, 26, + 64,132, 24, 83,101, 85, 7, 66,240, 52, 16,161, 32, 5, 13, 17, 32, 42, 16, 9, + 68, 36, 16, 9, 38, 16, 17, 81, 80, 78,118, 23,139,112, 6, 97,187,168,196,175, + 87,224, 75,218, 81,175,152, 10,188,202,195, 97,141, 41,202,174,214,234,239, 78, +249, 1,235, 66,227,169,217, 70,224,145, 40,114,186,236, 22, 24, 93, 72, 71,237, + 85,250, 61,145,200, 80,111,235,208,169,131, 92, 28, 25, 4,224,155,183, 65,250, + 71,127,222, 77,254,229,248, 75,219, 98, 67,144,247, 57,244,148, 56, 35,168, 16, +156,235,243, 32,253,181,177, 19,186, 44, 59,227,116,167, 48, 94,190, 87, 56,235, +187,113,124,237,157,205, 65,222,223,193,254, 74,248,159, 24, 81,142, 93,182, 8, + 48,126,191,195, 65,208,195, 40, 91, 20,140,208, 36, 5,115,210,112, 5,140,186, +207,136, 99,223, 67,240,126,226,141, 53,253,114, 89,130, 45,112, 76, 19,154,177, + 77,154, 77,117, 22, 25,191,136, 0,214, 32,107, 74,237, 19,164,122,239,130, 67, + 25, 2, 72,202,129,135,213, 39,145,158, 64,242, 60,134,168,102, 48,111,161,198, +239,121, 88,232, 78, 10, 82,208, 23,181,150, 88,128,133,122, 58,111, 12, 49,175, + 33,178, 83, 49,180,160, 79,167,205, 9,164, 15,208, 55, 84,117,165, 22,255,144, +137, 64, 92, 3, 1, 13,105,116, 59,177,193, 59,144, 82, 32,135, 17, 90, 35,219, + 61, 82, 28, 73,144,138,187,216, 58,253,133,100,185,165,129, 22,153,242,222,232, + 5,232,229, 69, 54, 82,179,207,144,214, 15, 3,208,215, 85,101, 15,101,138,162, + 46,145,229,178,126, 56,240, 95,131, 48,110,226, 91,213, 90,134, 5,238, 89,131, + 81,213,224,217, 20, 23,199,131,140,236,234,245,250, 26,241,118, 45,238, 5, 84, + 70, 93,198,139,208,123,187, 17,186,205, 7, 56, 71,215,185,121, 83, 84,232, 24, + 95,241,169,100, 31, 54, 64,110, 87,226, 73,202,211,206,109,233, 7,128,131,152, + 26,102,162,100,106,219,185,169, 14, 9, 28,232,182,217, 52,169,106, 48,205,117, + 93,111,150,130,107,186,157, 35,250, 47,186,175, 52,208, 4, +} ; +// ../Source/Template/GB_convert_s2b_nozombies.c: +uint8_t GB_JITpackage_151 [709] = { + 40,181, 47,253, 96,117, 7,221, 21, 0,102, 98,101, 32,240, 24,231,208, 90,236, +139,181, 45, 17,235,197,206, 46, 48,183, 86, 94, 12,189, 95, 68, 14,150, 66,112, +192, 51, 48,105, 17, 94, 97, 0, 87, 0, 92, 0,181, 55,138, 33,120, 38,154, 2, +215,225,109,220,155,227,220,145,232,230,158, 39, 31, 21,137, 67,130,208, 64, 28, + 18, 15,108,216, 35,166,225,156,188, 32,175,234, 50,248,209,206, 35, 71, 98, 34, +157,157,183,226,224,116,166, 39,206,101,231,151,169,232, 96,126,227, 59, 45,254, + 7,222,209,229,239,192, 77, 69, 31,184, 2,171, 38, 74, 96, 45,223, 14, 43,184, +105,145,202, 13,134,139, 96, 48, 4, 94,123,222,188,211,222,126,224,231, 71,154, +215, 2,178,115, 52, 63, 87, 26, 56, 88,177, 27,254,255, 98, 93, 87, 33,207,239, +130,163,207,231,218,184,175,237, 27,229,241,124,126,127, 19,191,187,252, 14,103, +119,145, 60, 87,231, 81, 93, 83,242, 47,220,182,170,238, 23,196,244,242, 58, 20, + 18,132,238,182,105,229, 29,183,233,136,230,218,220,133,208, 56,177,147,216,165, +102,137, 84, 14,121,233,152,118,249, 42,209, 43,120,174,243,188,109,193,119,160, + 20, 29,152,252, 8,124,230, 42, 29,253,113,211,179, 63,227,233,101, 15,129,222, + 27,245,176,212, 32,207,248,210,145,233, 89, 91, 48, 6, 3,108,194,243,143,236, +135, 67, 48, 68,220,232, 55,171,138,195,218, 59,113,221,109,248,129,170, 73, 12, +115,179,111,151,181,239, 84, 31,215,213,186, 90, 8,145, 12,196, 71,236, 31, 77, + 70, 2,121, 8,212,219,244,236,113,166, 29,130, 95, 54, 56,181,217,169,164, 33, + 11,122, 74,190, 79,222, 12, 31,233, 83,205, 85,122, 60, 59,138,201, 63,110,159, +221,102,175,237,133,243,130,151, 14,169, 52,135, 16,131,144, 9,116, 43, 31,227, +175, 24,185,218,143,249,206,140, 53,105, 53, 90,135, 82,201, 30, 48, 61,123,168, +193,161, 82,136, 40, 16,145,130,146, 36, 73,107, 48,132, 24, 83,117,230, 1,162, + 8, 61,204,148, 8, 9,148, 64, 80, 32, 34, 21,148,148,255,187, 3,153, 9,101, +115,212,219, 42, 32,102, 14,118,117,136,254, 19, 36,202,220,150,238,190, 94, 81, + 80,140, 5,171,194, 16,164,208,202,187,152, 80, 54,186, 18,241,100,173, 94, 84, + 59, 23, 65, 54, 29,188,253,249,184,186,144,156, 51, 86,248,223, 29, 84, 55, 80, + 6, 50,226, 98,205,226, 3,121, 64, 8,173,254,173,243,117, 92,133,247, 82,138, + 63,207, 21,232,179, 73, 5, 5, 85,246,139,183, 74,144, 25, 8,232,149,184, 51, + 59,223,140,169,235,209,160, 44, 76,157,117, 47,158, 81,103,237,157, 63, 58,165, +157,209, 25, 78,118,118, 61,123, 33, 86,207,215,244,217, 81,148, 38,208,230,242, +134,146, 72,177, 44,193,168, 76,242, 57,108,224,160, 24, 48, 95,184,227,174, 22, +111,102, 26, 95,249,135, 65, 73,247,136,109, 60,183, 30, 11, 51,237, 92, 23,147, + 34,254,218,114,126,219,223,121, 97, 57,125,166, 40, 8,187, 31, 26,170,133,207, + 40,117,134, 72, 3, 26, 64, 46, 5,192, 36,128,164,188,172, 36,178,232, 31, 98, +238, 38,243, 62,123,249, 37, 8, 28,213,124,211,188,212, 96, 82,148,107, 75,208, + 33,143, 56, 41, 85,233, 53, 12,240, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_dot4.c: -uint8_t GB_JITpackage_157 [386] = { - 40,181, 47,253, 96,116, 2,197, 11, 0,182,149, 71, 33, 0,213, 54, 86,202,107, - 21, 76,190,213,101,130,244,224,112,163, 64,194,227,210,238, 57,128,113,138,226, -140,252,255,223,186, 4, 16, 61, 0, 62, 0, 63, 0,223, 30,195,204,249,180,209, -172,126,160, 78, 99,140, 39,117, 7,218,126,231,114,155,222,248,237, 15,221,107, - 65, 64, 29, 6,136,235, 17,187,115, 19,138, 51,110,165,216,163,103,171,136, 90, -240, 69,253, 31,187,179,199, 86,204, 45,107, 82,150, 21,163, 6, 57, 99, 30,170, -139,250,239,118, 32,234, 12,253, 25,231, 45,190, 55,161,158, 20,255,230,140,218, - 68, 50,149,247, 33,253,228,107, 78,238,175,147, 53, 7, 65,234, 83,226, 58, 92, -212, 2,113,184,156,112, 7, 62,145, 57,212, 69,188,162, 62, 10, 29, 7, 4,187, -235,251, 59,110, 89, 18,203,132,187,104, 52,252, 30,206, 1,119,247, 73,154, 13, - 39, 12, 28,195, 97,180,140, 85,112,152,136,173, 27,106, 51,201, 69,147, 84, 60, -163, 21,147, 97,214, 86,108, 78, 32, 88, 98, 39,179, 67,124,218,183,244, 2,115, -150,102,195, 9,219, 38,129, 64, 52,155,173, 26, 27,184,168,203,253, 26,112,171, -110, 87, 12,224,239,149,224, 21, 39,206,158,248,129, 59,134, 13,127, 80,118, 20, -186,195,177, 29,233, 49,252,208,254,107, 76,138, 99,222, 87, 44,177,127,110, 33, - 32, 32,130, 71, 93,121,165,160, 55,131, 96, 46, 5,125,147,153,180,131,209, 3, -160,105,176, 29,240, 21,168, 2,140,129,250, 49,176,146,142, 63,137,130,234,167, - 45, 20, 98,163,109, 91,247,253, 0, 40,141,185,156, 22,203,184, 93, 1,226,137, -227,155,133,179, 17, 17, 38, 77,205, 51,211,219, 42, 88,173, 83, 66, 78,188,190, -244, 98, 79, 81, 48, 4, +// ../Source/Template/GB_convert_s2b_template.c: +uint8_t GB_JITpackage_152 [550] = { + 40,181, 47,253, 96,120, 6,229, 16, 0, 22,155, 83, 32,224, 26,231,148,119,132, +182,223,245,238,121,217,178,100, 28,104,133,255,172,116,101,107,172, 15,195, 57, +131, 25, 6,193,188, 23, 76, 0, 70, 0, 73, 0,243, 6,133,134,208,176, 70, 2, +161,125,192, 9,110,192, 53, 69, 39,207,230, 89, 95, 22,195, 26,186, 1, 52, 53, +146,111,164,183,226, 0,117,174, 40,144, 28,105,152,107,233, 98,126,227, 75, 71, +252, 80,188,222,231,239,232, 76,193, 49,236,188,149, 52,188,229,219, 41, 43,114, +155,164,242,195, 65, 98,135, 67,184,239,216,215, 48,143,233,243, 59,164,248,253, +229,119,138,126, 47,205,119,150, 94,213,118, 53,255,236,246,200,250,126, 69, 92, + 63, 37, 34,211,176,254, 56, 58,206, 59,110, 87,175,102,219,221, 5,107,108,155, +171, 26, 76, 52,241,100, 93,167,110,227,254, 28,231,207, 84, 63, 7,193, 91,232, +130, 57,120,181,179, 29,216, 86, 95, 13, 4,171,193, 41,158, 81,104,155,130,119, +109,171,215,221,189, 26,120,216, 6, 83,180,214,239,123,124,140, 96,243,144,143, +243,153,171, 55,227,190,132,231,109,193,200,182, 62,227,249,220,166,255,191,148, + 46, 41,179, 76,195, 43,122,167,207,182, 3, 82,122,221, 89, 84, 64,202,215,235, + 31, 32, 30,185, 21,220,171,162,109, 12,246, 11,192,101,184,107, 41, 20, 91,128, +119,135, 2, 57, 11,162, 92, 36,155, 14,105, 3, 77,139,118,194,165, 25,143,248, +132,105,182, 5, 10, 62,110,178,117, 59,245,214, 92, 5,241,220, 50,190,213, 59, +185, 52, 20,206,135,146, 9, 83,160, 97,185, 49,166, 42, 24,153, 9, 75,138,218, +106, 80, 70, 32,133,144,232, 1,174,185,105,150,184,218, 72,178, 76,216, 14, 29, + 34,232, 74, 28, 82, 56,122, 8, 3,103, 4, 86, 46,196, 80, 85,148,244, 77,231, + 42,120,108,233,187,222, 4,224, 6,107, 36, 8,214,223,218,232, 27,130, 59,191, +168, 33, 41, 49, 16,196,130, 55, 19,232, 25, 28, 66,217,130,192, 17, 23,157,100, + 55, 27,182,150, 65, 56, 8,255, 7, 58, 95,208, 90, 18,108, 47,238,123,201,224, +222,153, 1,204,211, 7,250,250, 16,182,101,239,101,235,147,119,181,247,141, 2, +134,201, 77, 55, 48,184,112,100, 45, 64,122, 86,119, 73, 7,252,231,161,226, 1, + 67, 88, 20,191,184,171,172,252,161, 8,234, 46, 49,139,129,230, 31,156,233, 70, +162, 85,207, 8,146,124,108,156, 39,196,166,249,252,193,116, 43,151, 66, 68, 3, + 34,135, 12,249, 50,110, 82, 20,220, 1, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_saxbit.c: -uint8_t GB_JITpackage_158 [377] = { - 40,181, 47,253, 96, 70, 2,125, 11, 0,214,213, 70, 33, 32,179, 27, 83, 56,173, -253,220,102,234,232,185,216,213, 22,152, 64, 2, 96,167, 25, 44,241, 51,167,202, -226, 50, 32, 4, 7, 0, 2, 59, 0, 62, 0, 64, 0, 30, 56,239, 35,225,248, 78, -112,243,252,225, 22,239,127,142,219,235,198, 62,238,217,215,211,117,168,130,159, -107,248, 53,232,111,158, 95,119,130, 78,249, 53,160,137,229, 5,178,100,117,123, -189, 35,243,115,228,245,104,138,138, 18, 69, 5, 30,157,160,213,137,235,223,125, -182,206, 65, 36,199,214,233,103, 82,198, 97,153, 56,255, 92,199,174, 53,206,222, -230,181,174,213,106,194,161, 42, 84, 18,194, 80,168,122, 64, 5, 77,192,255,153, -142,158,172, 14,121,217,243,253,165, 9,155,149, 93, 1,216, 4,114,161, 96,180, -206,185,238, 3,221,221, 81, 20, 21, 61, 16,116,229, 82,209, 44,155,188, 50,150, -204, 48,138,134, 73, 58,179,174, 74,246,144, 23, 72, 36, 70,128, 55,121,158, 21, -252, 60,203, 67, 8,188, 30,128,118, 46,172,212,126, 32, 22,166, 74,242, 49,142, -162,162, 7,219,134, 53, 26,152, 77, 94,215,222, 48,251, 5,208,216, 61,103, 93, -209, 12, 73,134,190,142,139,238,228,245,156, 39,197,114, 34,193,249,229,215, 96, -235,249, 76,109,216,117,135, 78, 77,173,147,118,246, 77, 83, 84, 30, 32, 48, 2, -162, 36,179, 30,108,160, 44,191,248, 45, 62, 0,224, 20, 10, 46, 81, 54, 29,208, - 28, 8, 68, 62,142, 16, 25,152, 17, 57, 58,232, 96, 11,222,232,182,237,247,253, - 18, 32,141,221, 15, 43, 0, 0,128, 20,101,190, 55, 88,103, 33,210,160,217,121, -102, 90, 91,136,171, 57,136, 40,155, 11, 8, 90, 3, 81, 20,184, 1, +// ../Source/Template/GB_convert_s2b_zombies.c: +uint8_t GB_JITpackage_153 [738] = { + 40,181, 47,253, 96,213, 7,197, 22, 0,118, 99,105, 32,224, 26,231,148,119,132, + 76,207,234,246, 76,236, 36,105, 59,154, 22, 69,107, 45, 81, 73,139,143,120, 78, +196, 24, 41, 50, 56, 4,100, 0, 90, 0, 96, 0,253, 97, 10,141,107,123, 52, 83, + 0, 81, 56,134,175, 87,183,113,119,142, 51,120,162,157,135,161,252,182, 80, 32, + 20, 5, 71, 2,161,184,192,211,190, 97,186,154,148, 27,228, 93, 96, 30, 69,250, +249,230,145, 25, 9,104,231,181, 60, 60,157,169,202,147,217, 41,102, 90,250,152, +223,248, 78,139, 47,142,215,116,249, 63,112,211,146, 56,190,186,146, 2,119,249, +246,170,142, 94, 39,177,252,112,200, 10,135, 67, 96,238, 68, 85,125,216, 97, 56, +239,180,183,226,248, 41,158,230,181, 1,238, 31,205,207,149, 10, 14,102,202,210, +126,248,255, 44,131,101,153, 33, 79,241,142,166,207,231,218,184,175,237,187,201, +227,249,252, 22, 39,126,131,249,189,154,224, 75,242, 95,157,103,117,109,201,223, +112,219,186,192,223, 17,211,203, 12, 97, 80, 20, 26,244,166,149,127,220,166, 38, +154,107,156,238, 83,177,112, 23,164,190,129, 82,187,236, 46, 18,203, 35, 71, 29, + 83, 48,223, 85,122, 29,255,117,158,183,237,248, 22,160,182,135, 38,111, 26,159, +191, 74, 77,135, 60,117,238,207,120,134,220, 73,163,183, 71, 67, 44,187,200, 51, +190,212,148,122,238, 24, 13, 24,129,128, 83,120, 30,194, 29,241,136,150,216, 60, + 42,206,234,250,180, 14, 85, 95,131, 30,190,160,118, 82,195,223,236, 27, 89, 22, +203, 98,137,146, 20,108,223,180,135, 56,155, 73,228,164, 81,123, 51,180,199,153, +246,106, 20, 9,167, 23, 80,237, 21,140, 68,179, 17,117, 30, 12, 64,187,137, 59, +149,148,100, 71,111,201,183, 42,156,171,111,244,173,254, 42, 61,158, 32,213, 36, +228,246,220, 45,247,218,225,106,126,112,212, 35,149,102, 82,130, 64, 74,141,110, +229,183,237,217,182,125,181,191,229, 59, 51,238,164, 13,128,129,168,177,157, 82, +136, 72, 68, 68, 97, 73,146,164, 53, 32,132, 24,195,212,153, 7,178,216, 60, 9, +134,200, 8, 24, 33, 82, 32, 37, 18,145,242,191,119, 41,180,156,133,174, 59, 25, +191, 51, 64,137,115,251,105, 15, 65,107,129,151,163,111,128,237, 77, 31,206,132, +139,189, 40,176, 42, 45,153,165, 81,232,243,139, 18, 79, 75, 81, 62,160, 60,251, + 60, 50,127, 87, 14, 55, 66,144, 43, 5,136,210, 12,126,195,243,173, 97, 93, 64, +205,197, 42, 64, 71,203, 48, 80, 14,131,225,102,206,198, 18,160,128, 72, 89,253, + 27,246,245,174, 34,190, 90,251,231, 89, 81, 31, 4,165,206, 14,229,248, 39,154, +138, 5, 51,200,211,203,113,191,118, 38,142,160,235,173,157,108,189,206,103, 47, +230,227,177, 45,158,107,157,114,249,120, 21, 39, 78,187,234, 94, 58,246,165,107, + 64,224, 40, 77, 23,232,231,194, 36,165, 75, 17,149, 96,160,153,248,179,216,128, + 96, 47,128,190,144,232,213, 44,144, 58, 19,205, 92, 22,249, 37,142,193,111,100, +245, 0, 50,164,114,111,150,180,243,120, 75,129, 54,249,130, 23,214,205,231, 70, + 77,252,252,152, 86,196,123,199,170,109, 48,250, 0,100, 18, 88, 0,245, 3,164, + 20,195,152,197,131,254,169,230,205,100, 7,205,162,126,145, 25, 28, 6,103,211, +236,213, 96,162,203,101, 66, 38, 68,254,224, 40, 80,197, 87, 7,184, 3, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy3.c: -uint8_t GB_JITpackage_159 [466] = { - 40,181, 47,253, 96, 70, 3, 69, 14, 0, 54,219, 86, 32, 0,151, 30, 27, 67,185, - 80,252, 66,160,155, 55,227,224,188,158, 88, 11,124, 1, 57,211,207,202,120,144, -103,233,255,189, 62,132, 75, 0, 77, 0, 79, 0,151, 84, 33, 94,144,110,250,108, -145,119, 55, 39, 76,105,185, 62, 96,205,145,197,235, 92,193,249,251,134, 51,230, -235,189,246,199,158,239,106,175,158, 69,157,155, 48,120, 55, 14, 61, 47,221,188, -171,231,190,176,133,132, 9, 44, 85, 77,175,146,164,248,191,252, 33,186, 47,136, - 94, 17,183,172, 88, 89, 86,219,220, 54,204, 91,103,151,204,131, 86,166,188,184, -131,158,200,210,144,174, 23,255,239,118,207, 5,162,161,128,168,254, 99, 43, 40, -125,145,255,118,119,127,207, 77,170,215,223,219,107,169, 54,144,172,192, 61, 41, -191,126,205,245,254,120,174,230, 24, 75, 39, 36, 16, 6, 68,165, 56, 24, 16, 62, -176, 2, 39,232, 95,216,121,200,214, 14,198,213,250,126,143, 91, 22,118,153,108, - 24,141,214, 61,215,221,128,187,123, 60, 69,134, 15, 4,158,217, 50, 90, 70, 19, -156,108, 35, 39,189, 54,146, 90, 48,140,134, 85,220, 34,175,140, 37, 66,183, 9, - 37, 70,192,167,240,187, 98,208,251, 77,175, 8,192,159, 11,177,253,110, 32,110, - 15,141, 22, 49,166, 34,195, 7,115, 98,143,135,102,210, 43,127, 57,220,159, 1, -118,160, 97, 25, 71,226, 40,148, 15, 30, 2,199,166, 38,179, 73,231,100,211,176, - 57,101,236, 46,247,125,160,163, 7,186,179, 72,143, 26,222, 81, 43,194,184,210, -210,237, 48,220, 81, 81,147,231,177,225, 29,245, 66,237,133, 86,127,162,187,109, - 41, 32, 48, 2, 98,160, 82,122,228,160, 44,113,161,130,112, 32,191,203, 66,253, -142,235,104, 91, 57,130, 1,113,232, 8, 16,242, 0, 50,206,168, 12,142, 3, 56, -200, 88, 56,222,140, 48, 37, 8, 6, 31, 79,135, 12,204,136,206,199,216,202, 80, - 88, 70,255,110,127,226, 75,184, 52,250,247,140, 64, 54,123,128,186, 42, 38,188, -128,132, 68,230, 35,107, 7, 77,135, 48, 19,116,132,186,134,131, 30,189, 51,131, -135,242,240, 20,189, 67, +// ../Source/Template/GB_coverage.h: +uint8_t GB_JITpackage_154 [241] = { + 40,181, 47,253, 96, 36, 1, 61, 7, 0, 66,142, 46, 21, 32,223,161,167,221,197, +173,152,155,244,117,174,169, 93, 51,240, 19, 66, 32, 51, 52, 0,160,250,244,237, + 16, 47, 73,254, 77,166,249,175,231,175,220,191,221, 1, 4, 65,146,133,143, 19, +103, 74,172,241, 95,159,254, 57,226, 61,165, 91,244,237,175, 87,123, 26, 0,153, +121, 97,211,119,137, 93,165,246,244, 85,125, 0, 32,134, 82,116, 22, 61,227,137, + 63,114,247,170,255,111, 79,181,162,207,111, 71,253, 86,140,150,103,164,189,150, +251,220, 63, 62,127,118,245, 31,111,219,137, 19,139,130, 40,133,147, 32, 10, 31, + 80,129, 19,179,175, 79,139, 27, 19,191,217, 15,187, 62,228, 4, 56,109, 20, 27, +159, 50,246,244, 89, 62, 99,176,127, 79,131, 64,200, 95,207,231, 63,247,207,185, + 12,171,252, 97,141,190,158,114,175, 97,212,164, 48,126, 28, 64,113, 28, 1, 15, + 0, 88, 0,131,169,193,205,174,156,183,217, 78,197, 66,197, 2, 57, 18,162,136, +221,131,230,207, 51, 83,180, 9,108, 53, 15, 24,148,217, 4,243, 76, 66, 40, 10, +220, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy4.c: -uint8_t GB_JITpackage_160 [306] = { - 40,181, 47,253, 96,186, 1, 69, 9, 0, 6,210, 60, 33, 16,179, 30,230,109,130, - 35,245, 18, 31,103, 47,136,106,246,246, 35,165,110,240, 40,235, 51,162, 5,175, -224,136, 0, 0,170,110, 6, 50, 0, 51, 0, 50, 0,217,245, 58,219,144,254,190, - 30, 26,187,142,183,255,115,159, 4,201, 40, 96,158, 59, 25,247,202, 3,226, 23, - 71, 37, 66, 33,200,234, 58, 65,178,226, 7,243,115,234,190,155, 58, 51,175,170, - 56, 85, 85,224,115, 87,155, 46, 13, 10,213,253, 39,191,254,205,245,246, 52,119, -115,140,165, 75, 8,203, 96, 77,138,131,193,242, 1, 39,112, 73,223,143,109, 56, - 37, 61,228,237,206,119, 43, 46, 81,169, 77, 47,180, 57,114, 78,180,172,198, 8, -240,168,223, 22,135,223,239,138,152, 25,192,191,243, 96, 14,188,129, 40, 97,236, -201,184,190,142,249, 21, 13,148, 53,189,199,217, 80,250,149,255,102,238, 6,191, -123, 76,175, 3, 49,142,226,194, 7,148, 58, 48,204, 66,235,204,153,192,193,236, -217,159, 1, 28,101,247,127, 53,225,238, 30, 69,113,225, 3,129, 79, 42,147,141, - 82, 19, 24,202, 69,210, 58, 47,178,106, 14,201,230,136,184, 22, 17, 0, 71,133, -163, 50,197, 72, 8,105,116,189,206,136,201, 2,146, 2,171, 15,168, 7,105,251, - 67,212,243,134, 6,176,105,254, 60, 51, 69, 27,198, 86,235, 23,131,248, 80, 56, -145,231,240, 20, 5, 67, +// ../Source/Template/GB_defaults.h: +uint8_t GB_JITpackage_155 [412] = { + 40,181, 47,253, 96,226, 2,149, 12, 0,182, 25, 80, 31, 0,183, 58, 39,127,117, +183,143, 17, 36,162, 88,107, 94, 62, 86, 73, 46,128,127, 11, 24, 79,204, 56, 12, +253,255,187, 63,188, 72, 0, 69, 0, 71, 0,155,131, 96,227,132, 67,134,101,214, +194,128,101, 23,112,129, 19, 42,151, 36,228, 87,227,168,175, 41,137, 57, 39,104, +141,139,227, 11,165, 56, 97,108, 21,101,168,109,243,168, 85, 85, 52,185,123,235, +197,237, 37, 73, 81,134, 63,227,187,106,131,163,244,182,219, 28,147, 23, 10,149, + 85, 40, 4,178,116,143,190,231,246,164,220,247,235,215,173,251,113, 38,229, 14, +105,181,147, 1, 21,101,211, 56,151, 78, 67, 18,129,120,219, 77,143, 1, 21,118, +101,214,126,156, 12, 27,103,136,203, 30,247,220,174, 98,109,157,203,241,197,250, + 64, 52, 87,183, 37,113,235,110, 94,251, 19,113,255, 56,185,223, 18,139, 78, 64, +133, 4,137, 76,129, 93, 88,224,148, 7,167,226,209,182, 77, 68, 3,162, 92,130, +141,246, 8,220, 68,197,163, 66,175,252,150, 36,145,122, 87,111,221, 50,131,205, +113,154,156,246,107,143,225,228, 87,249,110,235,184,161, 79,201,189,229,215,175, + 59,130, 1, 85,229,113, 55, 23, 80, 85,138, 68,118, 78, 5, 83,217, 38,152, 10, + 4, 19,209,212, 5,195,177, 47,154,220,205, 13, 61,250, 77,113, 61, 40,185,121, + 50, 34,195, 12, 3,132,194,130,233, 80, 30,180, 59,237,143, 68,106,170,205,115, +188, 5,161,120, 87,185,224, 91,190,147, 43,126, 29, 28, 32, 48, 66, 66, 4, 44, +125, 77,172, 84,104, 21, 5,239,211,166, 93, 24,149,168,125, 19,194, 84,247,160, + 77,164, 91,243,134, 90,192, 57,105,104,220, 8,144, 37,227,145,155,135,182, 71, +176, 77,216,141, 88,161, 44, 39,145,213, 13, 32, 69, 17,152, 65,243, 60, 51,209, + 38,112,181, 60,160, 17,123,119,131,162,192, 13, } ; -// ../Source/JitKernels/GB_jit_kernel_AxB_saxpy5.c: -uint8_t GB_JITpackage_161 [1097] = { - 40,181, 47,253, 96,161, 20,253, 33, 0,198,235,136, 40,192,240, 58, 7, 60,135, -153,176,242,190, 19, 84,233,102, 31,167, 42,160,122,217,151, 53,112,239, 7,214, -238,189, 38,123,123, 31,234,224,186,138,130, 32, 27,204,125, 0,128, 0,124, 0, -222, 12,197, 87,110, 83, 15,205,182, 63, 13,210,216,182, 71, 51, 16,138,134, 45, -242,245,232, 54,238,206,113, 6, 63,180,243, 90,227, 43, 4,203,192,130, 36, 28, - 24, 88,127,120,212, 43, 76, 71,179,225,145,248, 18,152, 67, 16,237, 94,113, 49, -147,129,161,121, 49, 21,174, 51, 21,113,211,237, 80, 9,148, 52,190, 51,132,159, - 73, 66, 19,148,233,197,227,171, 90, 69,158, 99,122,203,171,140, 32, 50, 20, 88, - 94,153,148, 66,164,137,101, 70,138,178,182,189,157, 33, 51,197,144, 25,230, 18, -201, 4,145, 72, 2,175,186, 94,136,194,239, 55,244, 28,251,216,174,247,132,199, - 55,204, 94,143, 14,102,170,241, 47, 4,115,131,254, 13, 71,235, 98,183,185,104, - 46,153, 77,163, 73,138,137, 40,185,248, 32, 49, 27,173,163,105, 46,220,255, 79, -211, 22, 53,157,150, 73,206,192,192,187, 46,110,146,211, 36,192, 61, 10,127, 80, -231,116,156,206, 38, 39, 21, 27, 69,228,100, 70, 17,101,230,178,233, 92, 34,158, -137, 25, 39,131,145,157, 6, 49, 77, 1, 96,164,243,172, 33, 80,103,137,144, 97, - 2,222,159,168,122,150, 10, 76, 6, 17, 11,210, 96, 32,206,192, 51,219,103, 75, -179,152,177, 13,189,202,114, 18,189,121,106,100,118, 41, 15,105, 52,229,215,181, -134,215,138,228,228, 31, 13, 71,213,210,123, 52,207,140,187, 11,166, 19, 59,201, -117, 29,206,182, 73,112,178,115,201,104,155,134, 99,249,175, 11, 59,117,236,193, -176,112,174,211,178,141,180, 32,160, 36,229, 96,162, 45,245,244, 39, 16,193, 24, -206, 51,172, 95, 13,193,219,233, 29,244, 40,168,209,185,116,241,139,242,190,243, -248,118,198,244,211,247, 21, 7,235, 96,210,245, 99, 41,166, 28, 4,211,212,241, -177,244, 82, 80,227,246, 58, 83,208,187,243, 37, 59,111, 89, 22,199, 93, 44, 22, -234,246,138,114, 95,133, 63,170,236, 85,124,101,161,238,185, 40,146,130,145,240, - 4,165, 40,228, 81,141, 31, 57,180,207,162, 11,234,181,229, 13,165,140, 57,207, - 80,248,217,121, 76, 31,223,183, 57, 28, 28, 27, 83,101,122, 76,179, 86,106,231, -232, 58,102, 48,133,182,154, 44,203,186,176, 91,209,117, 97, 22, 2,101, 98, 89, -216,229,161,159,237,142, 0, 47,178,241,104,143, 86,130,103,121, 81,190,217, 55, -128,221,160,145, 53, 50, 51, 35, 35, 34,146, 36, 37,201,112, 80,132,200, 20, 17, - 21, 55,230,131, 84,112,248, 64, 66, 48,112,233,199,124,132,132,131,164, 35,182, -179,113,253,212, 5,240, 88, 32,128,184, 3, 58,163,164,135,166, 7,170,200,208, - 48,109,146, 68,176,115, 31,150,111, 88, 53, 71,255, 64,160,179, 0, 20,159,237, -179, 14,175,165, 98, 3,177, 32,189,113, 43,113,138,102, 83, 88,239,220, 17,167, -140,244, 19,136, 83,213, 59,167,128,124,148,176, 27,141, 49,206,156,173,253,133, - 36,145, 49, 95, 13,107, 34,135,211, 47,149,242,153,119,129, 33,210,104,169,130, -206, 64, 17, 83,147, 43,103, 82,139,181,111, 48, 72, 95, 98,159,179, 97, 48,224, -202,143, 30,115, 52, 38, 1, 38, 54, 5,200, 2,112,214, 22,142,217, 4,156,109, - 57,172, 9,118,254, 54,153, 90, 16, 54, 41, 7,139,113,143,135,201,149, 58, 46, -148, 32,220,141,181,171,199,118,211,156, 19, 44, 58,192,164, 67,184,233,199,171, -238,156,245,207,174, 59, 15,251,119,217,197,211,254,185,109,231, 6,220,155,196, -246,181,122, 2,102,142, 41,102, 80,243,161, 42,196, 88,255,251,131, 35,109,164, -239,138, 24, 70, 58, 17,144,126,154, 49,242, 64, 33,196, 94, 57,168,137, 14,170, -127, 71, 77, 11,190, 62,208,163, 64,251, 4, 0,223,196,220, 62, 42,174, 61, 54, -249,192, 50, 62, 52,124, 48,115, 93,224,115, 91,250,135,245,218, 1, 7, 30, 0, -128, 54,192,248,142, 3,174, 99, 14, 53,180, 78, 96,131, 14,173, 79, 61, 56,133, - 15, 4,240,193, 40,149,103,160,235, 99, 14, 63, 97,204,136, 33,179,145, 3, 40, - 31,195, 14, 1,141, 76, 94, 42,118,112, 76,170,115,142, 12,159,151, 41, 20,120, - 56,233,176,171,129,206, 24,156,227,177,241,181,120, 65,102,164,121,128,166, 0, -227,184,236, 37,236,104,230, 4,223,218,167,170,248,214,113,229, 9, 12,160,131, -224, 23, 16, 42,130,182,109,110, 63,194,139, 69,177,134, 13,138, 92, 56,153, 21, -138,173, 13, 21, 25, 40, 89,189, 91,134,180, 92, 15, 1, 8,129,138, 14, 60,126, -224, 58, 2,116,121, 86, 4, 1, 33,231,242,131, 14, 61, 36,132,137, 10, 96, 15, - 6, 84, 26,139,100, 32,204,125,127, 20,144,208,246, 14, 4,228,243, 80, 96,223, -176, 71, 5, 70, 23,224,245,214, 73, 3, 51,222, 17,160,105,219,206, 65, 19,230, - 15, 38,181,170, 78,142, 60,232, 92,116, 8, 85, 9,166, 20, 5,120, +// ../Source/Template/GB_dev.h: +uint8_t GB_JITpackage_156 [395] = { + 40,181, 47,253, 96, 84, 3, 13, 12, 0,246,215, 72, 31, 16,147,117,155, 25, 37, + 40,215, 65,196, 21,194,221, 34,211, 96, 88, 66, 12, 89, 66,117, 5,223,153,205, + 8, 0, 40, 0, 84, 65, 0, 66, 0, 59, 0,137, 19,172,193, 11,182,181, 71, 93, +106,124,187, 46,197, 26,243,194,165, 49,113, 92,159, 87, 33, 19,219,250, 62, 23, +190,157, 93,220,157,140,125,168,100,141,225, 25, 82,235,149,198,219, 73,251,246, +236,200,240,211, 37,105, 12, 57, 14,200, 13, 6, 23, 25, 12, 1,240, 91,245,201, +118,102,223,203,246,142, 3, 46,194,209, 60,168,200,112,198, 14,184,131,148,136, +248,178,222,167,241,169,114,199,190,147,161, 36, 98, 59,217,234, 73,180,161, 42, + 18,100,173,178,101,203,237,189, 58,109,185,148,141, 23, 20,137, 67, 34, 90, 32, + 14, 1, 1, 1,223,119,237,249,186,231, 74, 35, 87,191, 54,243, 92, 0,201, 56, + 4,135,240, 61,210,179,236,120,150,157,217,246,175,147, 85, 76,125,210,207,154, +221,211,155,209, 67,198,168,117,174, 14,101, 70, 47,123, 41,223, 11, 87,102, 47, +114,206,197,134,147, 3,206, 85, 40, 25,138,242,160,176,245,234,253, 86, 41,198, +216,217,210,106,171,172,253, 17, 54, 57,105, 51, 64, 84,218,111,144,217, 10,177, +148, 13,250, 96,226,217,242,182,175,251,153, 73, 41, 0, 92,146, 3, 2, 56,195, + 76, 90,179, 3, 33, 32, 64, 66, 98, 16,195, 30, 5, 33,102, 33,171, 58, 32,208, + 44,130,228, 64, 21,233, 98,102,238,181, 24,227, 19,101,230,131,158,138, 9,132, +169,144,172,209,235, 90,223, 0,224, 41,136,129, 12,212,209,249,219,150, 46, 93, +139,196, 57, 26, 86,171,236,139, 57, 13,177, 8,198,201,104, 86,104, 35,181,213, + 12,154,206, 51, 19,109, 3,175,246, 46, 16, 90, 20,117,110, } ; -// ../Source/JitKernels/GB_jit_kernel_add.c: -uint8_t GB_JITpackage_162 [287] = { - 40,181, 47,253, 96,114, 1,173, 8, 0, 86,209, 58, 33, 0,211, 60, 62,183,128, -189,105,233, 64, 32, 94,117,183,105,166,238, 33, 81,107, 55,210,127,220, 96, 49, - 88,254,255,239,245, 33, 4, 49, 0, 50, 0, 49, 0, 32,199,211, 21,241,163,246, - 56,246,119,238, 88,137,241,252, 49, 83,222,245,198,194,120, 4, 20,151, 71,148, - 48, 23,151, 35,190, 9, 99,239,134, 47,234,207,220,157, 49,151, 86,167, 40, 41, - 81, 84, 63,138,255,229, 77,170, 96,145, 9,191, 71,255,248,157,143, 27,188,228, -206,195,112,122,100,176, 42, 75, 58, 20, 42,203, 7,159,192,163, 49,123, 60,204, -167,233, 31,112,111, 52, 89,226,145,157, 27, 13,150,199, 1,119,119, 9,146, 9, - 31, 8,156,147,112, 93,228, 98,216,188, 91, 6,233, 50,135,111,147,114, 91,189, - 18,173,113,105,149,213,100, 73, 15,126, 30,103, 58, 66,127,182,228, 45, 62,214, -164, 82,134,100,194, 7,214,102,215, 53,177,151,234, 42,112, 81,119,246,107,192, - 55,253,246, 66,142,230,247,165, 21,224,143, 59,225, 39,230,202, 33,156, 6,153, -100, 86,163,100,215,106, 47,230, 13, 0, 68, 37,149,175,224, 9, 53,117, 86,129, -218,214,115,208, 91, 39,140,201,212,160,249,243,204, 20,109, 12, 91, 45, 95, 24, -244,235,130, 61, 69,193, 16, +// ../Source/Template/GB_ek_slice_kernels.h: +uint8_t GB_JITpackage_157 [1313] = { + 40,181, 47,253, 96,239, 27,189, 40, 0,118, 49,149, 40,192,208,170, 14,184,214, +177,207, 95, 46, 96, 16,145, 13, 74,104,186,118, 29,237, 42, 20,184,140,168, 31, +234,158,146,239, 37, 73, 46,192,178, 8, 2, 0, 83,205,139, 0,130, 0,147, 0, + 18, 67,220,100,216,131, 6,107,136,216, 5,147,109, 98, 3,198,245, 86,185,233, +144, 38, 17, 11,210,157, 38,191,235,148,219,147,155,185,246,134,129, 52,174, 25, +164,147,144,137,108, 29,186,141, 91,115,156,187,139,169, 57,165,215,161,128, 53, +177, 32, 5,213,196, 58,165, 77,135,120,134,100,194, 35,215, 71, 93,182,159,201, + 57,220, 92, 25, 66,247,201,187, 64,105,124,229,183,233, 60, 65, 27, 9, 67,126, + 46,207,217,227,107,179,214,161,111, 85, 30,247,188,185,246,187,203, 63,165,139, + 96,218,245,182, 23, 91,155, 20, 71,175, 35,194,194, 37, 18, 9, 34,145, 4,212, + 52,157,242,234, 7,167, 42,106,106, 76,123,163,242,234,150, 83, 19, 53,185,197, +242,233,156,134, 68, 73, 24,242, 19, 59, 13,244, 57,158, 25,203,166,207,242,157, + 38,251, 29,154, 23,208,171,160, 78,179, 27,149,217,102,239, 90,209,155,122, 64, +118, 59,140,183,191,216,212, 53, 85,184,209,238, 98, 70,149,207,113,128,160,206, +172, 29,214,199,115,157, 25,244,101,144,189, 68,242,255,210, 36,109,211,134,104, +157,215,102,150, 25, 95,203,189, 49,232, 54,127,147,125,187,236,248,220,206,189, +157,130, 61, 44,115,149,186, 78, 71,220, 41,151, 76, 76,120,184,226,149,137, 28, +108,129,130,175, 92,235, 80, 53,128, 88,238, 93, 81,229,214, 35,230, 43, 51,254, + 2, 36,189, 37,102,124, 39,231, 61, 50,174, 86, 59,236,108, 76,104, 32, 28, 48, +135,168, 0, 17, 57, 17, 16, 17,225, 46, 76,175, 23,148,251, 86,158,101, 87,196, + 48,141,130,228,241,209,181,159,254, 60, 36,215, 56,149,101, 17, 15,220,132, 85, +192, 67,224,240, 12,155,136, 76,108,208, 96, 18,135,135,241, 14,199, 59, 19,192, +244, 10, 12,216,153, 26, 52, 16, 18,241,237,249,136,202,103, 12,162, 23,117,226, +203, 14, 70,195,185, 28, 54,168,170,115,193, 7,140, 3,230,241,146,196,205,173, +182, 67,170, 70,158, 87,251, 89,155, 43,220,119,230,218,183,190,137,204, 36,173, +184, 88, 84, 1,191, 5,197,111,185,136, 82, 57, 61, 31,209,106, 63,146,159, 87, +174,160, 65,121,151,239,167,172, 47,126, 23, 8, 33,244,224, 54, 51,188,124,112, +171, 13,227,245, 77,218,101,186, 85, 5, 84,149, 83,181,105, 72, 30,122,135,223, + 53,253,138, 25, 74,135,172, 71,102,143,253,251,202, 91, 31,172,190,195,201,215, +137, 14,237,213,176,140,140, 60,223, 58,203,219,181, 47,222,183, 69,239,142,115, +161, 60, 72,153,174, 43,191,173,206,129, 41,168,177, 41, 67, 51, 51, 34,146,164, + 32, 41, 12,107, 97, 16, 66,144,210, 82, 66, 61,162,104, 84, 20,163, 64, 2,136, + 70, 8, 33,196, 16, 39, 64,134, 16, 9, 68, 34, 17, 17,137,132,100,166,195, 1, +103, 11, 32,186,118,108,137, 30, 64,181,204,162, 55, 2, 23,162, 64,160, 2,101, +121,129,188,135,129, 24, 26, 72,171,184,134, 80,245,240, 44,162,244, 27,192, 28, +236,186, 45, 68, 9,204, 8, 42, 10,117, 28,244, 18, 69, 71,198, 12, 48,130,161, +230,177, 67, 92,125, 61,208,190,130,158,183, 66, 0,243, 35,188,201,168,237,211, + 81, 22, 12,119,101,105,130, 55,234,108, 35, 81,246, 37,180, 70, 41, 14, 85, 17, + 12, 32, 82, 81,194,168,160, 37,170,159,240,162,141,248, 13, 37, 52,122,145, 98, +205,170,213,179,151,153, 59, 6, 18, 87, 85,129,174,229, 70,137,140, 91,151, 83, + 57,210,213,226,231,204, 0, 61, 18,212, 80,137,233, 42,249,199,214,137,138, 96, + 21,102,211, 33,211,239,109, 29, 21,139, 7,173,201, 3, 92,194, 86, 29,208,113, +103, 52, 44,171,172, 40, 64, 73,174, 41,183, 17,184, 43, 94, 0, 61,129,243, 87, + 10, 3, 55,141,242,180,212,234, 32,110,131,164, 40,239,144,160,209, 97, 1,117, + 10, 71,140,189, 64,162,174,248,170, 86, 6, 7,219,243,189,140, 45, 6,170,222, +191, 86,111, 72,187,193, 85,243, 35,145,227, 31, 62,105,231,249,137, 92, 0, 4, + 28, 30, 48,165,152,171,168,135,207, 49, 15,100, 24,214, 77,126, 74, 78,239, 46, + 56,185, 63,175, 43, 8, 32,108,210,182, 35,152,107, 50, 47,164,110,217,118,135, + 26,173,201,101,252, 94, 32, 0,198,240, 79,178,126, 13, 20, 6, 59, 13, 51, 39, +189, 54,129, 27,253,220,194,217,188,240, 89, 3, 25, 81, 62,144, 10,154,186,177, +200, 88,155,118,184, 59,228, 55,220, 91,221,187, 31, 70,253, 35, 4, 51,166, 36, +118,124, 5,178,193, 8,106,149,223, 36,147, 98,112, 15, 90,145,196,158,184,120, + 52,197, 26,161, 70,135, 22,170, 1,218, 16, 65,236, 30,109,238,245, 74,181,144, + 64,127,224, 79,139,102, 88, 41,109, 20,152,121, 51,249, 55, 45, 70,221,155, 72, + 1, 12,140,139, 13,106,192,128,223,202,221,202,190, 88,108, 6,197, 68,143,204, + 65,109,216,102, 49,163,159,213,139, 96, 44, 20,221, 19,222,215,134, 99,150, 68, + 93,198, 73, 54,134, 2, 24,200,108,228,174,197,167,192,213,115,147, 36, 64, 9, +236,249, 29,137,119, 53, 92,143,166, 97,162,243,127,136, 53, 31,178, 40,240, 77, +150,142, 98,148, 25,217,248,138,241,161, 89,246,111, 4, 98,160, 15,234, 2, 64, +119, 44,160, 43,117, 85, 77,209,179, 36,136, 69,158, 17, 21,158, 57, 49,126,157, +132, 91,235,234,133,228,208,126,180,106,188,229, 70,241, 38, 42,107,170,250,151, + 66, 56,213, 62,176, 86,101, 1,229,230, 91,182, 23,149,249, 4,222, 79,150,111, + 18,241,197,136,220,200,163,110, 41, 32, 73,151,185,139, 90, 33, 3, 37,124, 95, + 41, 12,246,180, 32,143,224,130, 12, 55, 15,102,165,207,231, 91,112,155, 21,198, +114, 29,239,180,134,202,145, 7, 20,109, 96, 14, 77,236,183, 98,157,153,252, 51, + 74,219, 49, 43, 12, 56,173, 78,110,124, 21, 6, 78, } ; -// ../Source/JitKernels/GB_jit_kernel_apply_bind1st.c: -uint8_t GB_JITpackage_163 [271] = { - 40,181, 47,253, 96,106, 1, 45, 8, 0,118, 16, 56, 21, 16,253, 42,159,251,182, -128,245,113,202,147, 7,218,153,237,136, 0, 0, 2, 0, 1, 49, 0, 49, 0, 50, - 0,181,229,164,118, 93,210, 95,122,183,248, 7, 16, 82,161, 15,159,158, 63,244, -245,233, 59,231,113,219, 10, 42,183, 38,185,195, 52, 93,146,112, 42,215,233, 75, -222,173, 75, 74,214, 71, 16,192, 64,144,134, 72,117, 7,154,230,117,106,167,222, -183,111,118,109,189, 15,195,209, 47,152, 37, 89,140, 70, 73,150, 79,156,195, 47, -236, 54, 47,169,127, 68,127,103,239, 57,110,193, 95,124,145, 38,177,116, 25, 36, -248, 41,212,118, 73,228,168,117, 93, 68,106,213,230, 85,217,215, 34,137,211, 44, - 18,188, 48, 82,178,128,228, 88,140,148, 61, 75, 58,250, 78,157,182,106,123,203, - 41,122, 25,169, 45,167,103,171, 5, 0,208, 3,207, 39,190,175,154,166,240, 35, -165,218, 26,190, 92,227,119, 90, 7,231,145,222, 37, 76,199,233, 77, 6, 63, 69, -113,248,148, 91,225,255,255, 1, 30,120, 62, 49,124, 14,228,188, 46, 11, 0, 78, -133,156, 94, 7, 8,192,106, 17,210,160,111, 29, 39, 38, 83,131,230,207, 51, 83, -180, 21,108,181,225, 4,131, 66, 69,193, 16, +// ../Source/Template/GB_emult_02_template.c: +uint8_t GB_JITpackage_158 [813] = { + 40,181, 47,253, 96,108, 11, 29, 25, 0,118,226,107, 33,240, 88, 55,172, 23,242, +240,156, 43, 19, 73,155,178,241,156,116, 67,186,162, 1, 77,125, 13,140, 94,128, + 82,100, 19, 65, 19, 26, 2, 98, 0, 93, 0,100, 0,123, 44, 93,144,147, 36,117, +140,177, 72, 44,178,135, 34,177,240, 66, 72,112, 76, 95,148,181,184, 70,125, 53, +110,179,188,158, 99, 29,229,212,241,180, 25, 19,233,126,223, 83,119,145,228, 73, + 68,156,182,220, 23,172, 78,194,214,243,159,171, 17,241, 58,219, 83,187,190, 78, + 29,255,152,242,106,208,168, 83,124,243,200,111, 75,158,229,239,111,145,248, 54, +121, 42,255,171, 24, 71, 32,174, 12,129, 8,121,235,207, 6,223, 95,195,177,241, +245,173,177, 25,110,213, 49,234,251, 75,238,238,126, 93,172,235,210, 48,215,184, +108, 58,166, 63,159, 38,109, 75, 55, 59,174,173,127, 62,237,240,148,183,246,213, +190, 95, 90,237, 63,110, 31,247, 77, 57,182, 93, 9,109,145,253, 24,218,147,122, + 36,255, 21,239,198, 79,202,100,175,241,135,151,147,137, 44, 31,141,244,168,252, +250, 65,174, 3,212, 69,211, 31,155,133,193,128, 0, 40,108, 4,247, 64,151,174, +163, 30, 39,196, 93, 62,241,146,112,173, 18,210, 52,193,215,228,215,234,233, 50, + 31, 53,245,125,124, 57,151, 14,232,178,249,188,140, 70,124,146,120, 5, 11, 55, +100,187,245,169, 77,218,110,124,176,164,169,132,239,103,250,239,195, 75,106,250, +109,157,175,104, 2, 43, 89, 5, 43, 68,130,159, 68,221, 59,142, 18, 63, 43,217, + 73,125,135, 55,215,213,114,247, 66, 37, 56,166,192,225,132, 58, 78,161, 56, 71, +112,241,134,159, 45,231, 18,176, 21, 8, 53, 27,240, 39,157,200, 16,127,198, 40, +231,101,234,199,242,116, 42,156, 96,178,121, 54, 41,155,183,133, 64, 94,247,225, + 60,219,183,233, 40,119,150,102,248,153,180,229,238, 61,207,109,219,182, 90,107, +149,184,170, 64, 80, 93, 62, 35,111,220, 38,246,125, 2, 29,243, 7, 29,219,208, +171,103,211, 3,128,162,160, 49, 73,164,148, 76, 48,163, 32, 73, 10, 10,133,225, + 96, 68,132,172,108,117, 27, 9, 71,139, 96, 90,136, 38,223,128,144,205,212,241, + 40,212,128, 54, 91,244,209,248, 5, 6,212, 1,216,241,227, 40,140, 56,248,183, +145,141,215, 48, 78,143, 32,151,156,166,141, 44, 35,130, 0,215,210, 46,198, 65, +109,100,144, 40, 41, 12,176,145,195, 30,136, 21,136, 30, 32,148, 23, 59,228,160, +245, 67, 10, 17,243,141, 97,163, 30, 88,130,228,147, 32,129,229, 15, 97, 42,242, +244,131,192, 12, 80,231, 54, 3,253, 50, 3,187,221,118,104,172,109,120,198,118, + 14, 23, 34, 97,196, 4, 45, 47, 4, 33, 77,225, 8, 4, 40,162,210,224,208, 60, + 15,110, 0,147, 66, 24,100,249,132,205,141, 9, 40,144,113,110, 34,141,160, 50, + 94,128, 37, 19,128,112, 65, 52,102,243, 82, 4, 68,120,147,104,240,172, 54,134, + 1, 70, 68,124, 18,143, 96, 98, 67,111,107,111, 18, 20,145, 12, 82,176, 6,142, + 58, 27,210,159,136,155,145,195,129,195,238, 44,158, 23,215, 45,235,128,160,132, +108, 60,154, 68,230,200, 24, 35, 56,231, 65, 70,135,159, 96,100,115,196,225,158, +142, 6,136, 9, 64, 13, 86,126,115,164, 80,168, 39,136, 17, 44,229,175, 78,222, + 36, 7,244,162,234,217,122,198,110, 64, 56,163,131,112,223,108,128, 0,184,209, + 12,232, 51,218,214,116, 4,219, 31,134,143, 13, 51, 86,139,110, 47, 22, 61, 97, +125, 53,178,191, 49,148, 51, 54,215,140,206,106,159,175,190,183,224, 91, 36, 91, + 41, 35,100,111,236,190, 17,252,180,113,146,183,100,211,196,252,193,132, 86,255, + 10, 35, 4,130,139,134,210,231, 87, 85, 20,140, 1, } ; -// ../Source/JitKernels/GB_jit_kernel_apply_bind2nd.c: -uint8_t GB_JITpackage_164 [271] = { - 40,181, 47,253, 96,104, 1, 45, 8, 0,102, 16, 56, 21, 16,253, 42,159,251,182, -128,245,113,202,147, 7,218,153,237,136, 0, 0, 2, 0, 1, 49, 0, 49, 0, 50, - 0,181,229,164,118, 93,210, 95,122,183,248, 7, 16,123, 17, 13,159,158, 63,244, -245,233, 59,231,129,202, 11, 42,183, 38,185,195, 52, 93,146,112, 42,215,233, 75, -222,173, 75, 74,214, 71, 16,192, 64,144,134, 72,117, 7,154,230,117,106,167,222, -183,111,118,109,189, 15,195,209, 47,152, 37, 89,140, 70, 73,150, 79,156,195, 47, -236, 54, 47,169,127, 68,127,103,239, 57,110,193, 95,124,145, 38,177,116, 25, 36, -181, 45,212,118, 73,228,168,117, 93, 68,106,213,230, 85,217,215, 34,137,211, 44, - 18,188, 48, 82,178,128,228, 88,140,148, 61, 75, 58,250, 78,157,182,106,123,203, - 41,122, 25,169, 45,167,103,171, 5, 0,208, 3,207, 39,190,175,154,166,240, 35, -165,218, 26,190, 92,227,119, 90, 7,231,145,222, 37, 76,199,233, 77, 6, 63, 69, -113,248,148, 91,225,255,255, 1, 30,120, 62, 49,112, 32,231,117, 1, 11, 0, 78, -133,140, 94, 7, 8,192, 34, 17,210,152,111,157, 49, 38, 83,131,230,207, 51, 83, -180, 21,108,181,225, 4,131, 66, 69,193, 16, +// ../Source/Template/GB_emult_02a.c: +uint8_t GB_JITpackage_159 [723] = { + 40,181, 47,253, 96,167, 6, 77, 22, 0,134, 99,108, 33,224, 26, 29, 3,144,186, + 96,130, 62,240,135, 92, 91,132, 77, 96,109, 15,214,118, 93,117,137,212,134,207, +107, 96,134, 97, 24, 47, 4,100, 0, 95, 0, 97, 0,215, 66, 0, 69, 52,133,207, +170,178,213,118,115,189,193,210,221, 60, 12,231,165, 34,113, 72, 16, 26,136, 67, +226,154,151, 93,234,171,170,145, 23,230, 91,224, 70,137,183,115,201,153, 22, 14, +196, 53, 79, 28, 28,187,111,138,131,225, 42,238, 59,226,254,141,245,217,226, 22, +104,176, 58, 87,172,175,239,231, 71, 11,174,206, 9, 10,243,219,187, 59,106,226, + 64,119,152, 18, 45,229, 38, 55, 24, 48,130,193, 16, 84, 76,141,207, 40,210, 67, + 27,134, 53, 87,124, 44,162, 94,197, 82,205, 56,240,248,119,247,247,120,109,222, +186, 59,180,154, 37, 62, 20,184,237,229,255,143, 97, 46, 12, 43,200, 61, 90,109, + 51, 62,233, 42, 30,133,185,174,183, 57,181,189, 84,222,250,173,125,173, 88,245, + 45,184, 15,238,187,186,236,176, 67, 33, 65,176,160, 87,241,188, 35,219, 75,186, +123,180, 95,133, 96,245,104,189, 82,118,223,104,233,196,151, 19,103,239, 52, 52, +130,153,116,106,104, 71, 50, 25,109,168,186,224,166, 92,183,166, 28,126, 92, 59, + 93,130, 51,251,164, 20,110,242,237, 38,200, 79,127,252, 91,215,240,113, 81,232, +214,187,161,158,116,251,214,249,146, 78,223,116,193,112, 13, 6,250,144,199, 15, +223, 50, 13, 33,189, 43,214,177,245,101, 54, 76,125, 22,244,244,181,145,206, 76, +127,213,102,112, 7, 24,246,194, 94,131, 65,135, 73, 55,112,121, 89, 93,118, 77, + 70,194,169,124, 36, 28, 55, 66,233, 75,231, 37,107, 94,154,110,205, 62, 37,155, +105,233, 36, 17,218,177,120, 46, 18,154,225, 84, 72,246, 27, 73, 55,176, 93,212, +117,220, 5, 5,205, 36,111,102, 83,227,221, 35,202,187, 38,226, 70, 28, 32, 59, +233,126,176,125,226,208,239,252,246,123,200, 39,254,227, 29, 98, 32, 53,172,161, +184,187,196,199,164, 12,117,160, 81, 41, 67, 6, 13,201,136,136, 36, 73, 65, 33, + 29, 32,134, 24,228,216,213, 1, 25,129,210, 0,209,221,169,230,251, 23, 72,244, + 79,112, 83, 65,130,221,164, 33, 41, 20, 92,219,132,128, 72, 52, 54, 48, 25,192, + 3,110, 21,124, 33,164,192, 96,104,244,145, 8,109, 2,147, 17,249,228,132,112, + 7, 90,199, 95,180,229,220, 57, 60,216, 50,233,175,118, 26,181, 4, 99,194, 29, + 0,249,137,178,140,112, 96, 76,152, 48, 13,117,136, 18, 21,186,154,201,234, 10, +180,197,132,155,150,208,255,209,221,112, 26,240, 79,153, 98, 38,236,186,240,160, +109,225,165,181, 33,212, 68,163, 95,254,202,176,181, 77,234, 81,101, 16,118,182, + 12, 56,203, 6, 75,227,208, 14, 5, 70,163,148,230,236,115,237,155, 30,249,100, +191, 25, 1,154, 5,124, 11, 93,186, 22, 75, 92,251, 20,229,227,214, 88,177,220, + 99,152, 0, 68,230, 31,152,101,141,156,240, 73,195,203,192,121, 99,203,222, 54, + 24,215, 30, 50,185,124,152,221,143,228, 42, 87,111, 65,168, 82, 72, 7,162, 16, +137, 66,166, 37,116,168, 35,137, 0,201,156,100,132,244, 70,233,203,128, 38, 70, +137,182,201,155, 38,134, 10,166, 91,213, 45, 44, 4,209, 43,138,207,101, 88,149, +162,128, 9, } ; -// ../Source/JitKernels/GB_jit_kernel_apply_unop.c: -uint8_t GB_JITpackage_165 [593] = { - 40,181, 47,253, 96, 35, 5, 61, 18, 0, 22, 93, 93, 33,224,152,109, 48,163,107, -189, 86,199,234,187,104,146, 24,229,154,215,197,113, 65,104,189,223,239,147,184, - 26, 49, 70, 68, 19, 28, 2, 82, 0, 84, 0, 84, 0,153,162, 64, 48,248, 21, 90, -142,153,111, 2, 35, 62,168,142, 26,119, 89,250,141, 99, 95,237,182, 49,131, 90, -194,184,166, 6,243,119,247,159, 31,205,167, 43,226,119, 93, 58, 74,131,248,116, - 93,134,252,170,150,231,210, 29,126,130, 56, 35, 28,228, 18,159, 22, 69,230, 12, - 90,242, 98,125, 73,118,255,200,110, 18,215, 52,154,105, 90,137,141, 95,245,241, - 43, 91, 94,198,122, 58,207,171, 23,127,232,138,129,107,244,224,232, 67,215, 52, -119,119, 74, 41, 22,147,177, 95, 4,195,121, 92, 36,244, 1, 74, 24, 24,178, 59, -134, 96,174,206,208,247, 67,191,241, 21, 41,217, 53,241, 13,191,203, 58, 17,111, - 32, 94,147,190,230,213,184,185, 71,209,107,156, 36,171, 99, 7, 3,193, 16,155, -253, 40,182,158, 30, 89,173,181, 54,124,159,165,189, 44,129,115,158,103, 99, 33, - 84, 69, 45,207,108, 50, 26,207,118, 28, 70,195, 89,188,171, 91,166,147,216, 13, -165, 66,105,232, 69,124, 77,242,174, 80,142,141, 28,123,199, 74,243,109, 61, 65, - 44,247, 50, 24, 78,195, 47,124, 73, 19,232, 88,118,236,171,229,213, 82, 28,254, -190, 45, 34,148,174,104,195,175,239,227, 32, 16,206,103, 55, 45,177, 28,235,115, - 95, 13, 8, 7,121,244,118,147, 0,252,138, 39, 25,226,255,113,204,121,155,184, - 12, 85,149,235, 34,225,115,220, 40,203, 18,160, 60, 30,145,188,163, 77, 97,108, - 83, 24,180, 60,210,113, 19, 12,200,225,160,234, 59,124,189,205,171, 5,190,237, -130,122,245,178,161, 4, 88,160, 97, 65, 65, 70,102, 72,102,166, 40,133,194,112, - 96, 68,100,172,140, 30,205, 8, 57, 67, 32,184, 57, 78,131,146,204, 87, 15, 36, -249, 25, 21,187,252, 82,104,218, 26, 65,148,162,218,228,147,113, 99,132,116,172, -231,157, 14, 99,210,159, 54,212, 44, 27,213,189, 84,215,109, 34,233, 24, 15, 22, - 36, 98,194, 53, 14, 53, 16,154,105,214,196, 25,255, 39, 50,216,139, 2,160, 96, -137, 72,228, 30,125,251,186, 38, 3, 89,210,179,201,250, 97,228,150, 52,103,102, -254,165, 72,204,193,141, 72,214, 6,211, 45,141,246, 22,145,103, 37, 88,210, 22, -192, 6,234,146, 18,200,230,153, 4,178, 51, 7,141, 8, 0,167, 12,255, 35,186, - 1,160, 44, 13,159,222, 85,246, 99, 31, 98, 43,230,146,116, 7,236, 12, 11,131, - 75, 54, 87, 64,219,173,132,206, 95, 28,178, 79, 58,131,117, 15,154,155,159,153, -238, 56, 90, 1,223, 4, 98, 92,240, 42, 69, 93, 19, +// ../Source/Template/GB_emult_02b.c: +uint8_t GB_JITpackage_160 [679] = { + 40,181, 47,253, 96, 36, 6,237, 20, 0,198, 32,100, 32,224, 88,231,168, 27, 52, + 3,181, 19,212, 42, 51, 3,100, 80,118,234,119, 79,160,117,168,147,149,197,187, + 26, 49, 70,226, 12,227, 92, 0, 88, 0, 88, 0,168,219,184, 53,199, 57, 28, 89, +205, 69,145,126, 38, 16, 6,196,128,113, 48, 32,158,121,216, 39,182,168, 10, 57, +129,126, 21,102,211,104, 57,159, 27, 90,225,194,178, 94, 73, 99,211,217,158, 54, +151, 40,158, 64,238, 31, 89,127,187, 92,133,133,198,183,150,248,216,158,158,236, + 48,117, 46, 64,160,223,254,120, 67,132, 48,116, 89, 60,141,221,113,146, 23, 10, +215,160, 80, 8,166,215,113, 84,111, 9,208,254,217,252, 76,218,190,219,227,141, + 76,132, 33, 62, 83,152,219,242,255,191, 46,214,117, 17,102, 38, 27,247, 45, 75, +184,142, 55, 93,142,235,251,158,178,119,186, 25,127,149,109,143, 21,191,195,252, + 48,219,212,231,227, 50, 16, 16,131, 14,189, 90,210, 55,110, 91,208,102,178, 63, +202,160, 49,217,158,173, 12, 62,144, 12,225,235,168, 7, 78,186, 53,227,142, 43, +181,103,165,207,144, 98,167,221,132,147,124, 59,201,241,210,181, 63,227, 42,106, + 15,129,222,158, 21, 49,237,182,103,124, 45, 88,122,238, 20, 11,150, 64,128,239, +208,110,248,134,101,135,233,217,177,146,171, 15,107,241,244,117,232,225,103,100, + 71, 49,252,213,190, 97,238,198, 19,249,107, 2, 47,182, 40,214, 91,203,151, 99, +215,213,186, 90,160, 5,124,218, 7,246, 12, 38,178,161,120, 34, 28, 39, 50, 97, +219,169,232, 39,201, 86,236, 52,162,161,149, 71, 4,210,113, 42, 29, 75,164,195, +108, 40, 36,104, 1, 95,147, 22,236,239, 43,177,126,211,110, 47,216, 78, 75,208, +173,229, 30, 32,208,111,207, 72,211, 98,119, 92,251, 65, 48,179, 50, 51,231,156, + 31,217, 29, 45, 63,105,153,233, 56, 17, 9,217, 98,113,160,145,169, 51, 67, 34, + 66,162, 32, 73, 82, 74, 7, 32, 68, 96, 16,131,103, 7,169,129,118, 11,221,177, +241, 0,132,242, 5, 55, 16, 68, 60,168, 25, 16,190, 2, 5, 1, 97,224,192,206, + 4, 9, 96,113,161,180,235, 5,128,248,193,248, 24,204, 22,219, 28,233, 80,206, +128, 13,214, 19, 24,244, 77, 4, 37, 46,113, 97,118,181,208,159, 74,221, 20,225, +241,233, 57,242,214, 31, 76,194, 42,118, 53,111,113,126, 86, 8,207, 68,194,174, + 67,161,160,120, 4,217, 6, 5, 61,186,208, 20, 89,149, 25,242,196, 30, 63, 76, + 22, 26, 8, 40, 38, 26,153, 28,161, 69, 8,248,100,180,116,134, 54, 0, 33, 15, + 78, 35, 96, 13, 9,186,150, 64, 77,178,229,213, 39, 61,250,201,190, 25, 13,135, + 1, 72, 54,180,184,168, 22,116,237,115, 52,223, 93,199,250, 36,188,198, 15, 76, +150, 61, 34, 25,183,187,224,211, 6, 38, 11,224, 69, 40,191,111, 51,183,214, 50, +183, 82,184,238,199,178,202,245, 83, 16,170, 18, 18,135, 36,124, 80,113,133,116, + 2,229, 35,242,142,159, 68, 18, 82,250, 2,242,101,152,146, 3, 66,222,190, 77, +243,161,130,233, 86,225,139,148, 6,230,147, 33,121, 57, 87,165, 40,192, 3, } ; -// ../Source/JitKernels/GB_jit_kernel_build.c: -uint8_t GB_JITpackage_166 [306] = { - 40,181, 47,253, 96,191, 1, 69, 9, 0,182,145, 59, 33, 0,211, 60,238,206, 4, -253, 16,159,143,211, 70, 18,235, 45, 88,146,135, 18, 54,189,208,237,100,134, 60, -104,255,255,247,250, 23, 2, 49, 0, 50, 0, 51, 0,212,229,157,111,135,154,203, -185, 68, 47,109,126, 98,151,179,195,235,220,137,244,247, 29,169,156,153,231,208, -226,126,176,148,135,239, 88,169,248,193,252,153,186, 47,166,206,204,171, 74, 78, - 85, 21,182, 19, 47, 63,228,191,150,187,193,247, 24,211,107,240,237,213,166,201, - 34, 66,121,191,201,175,127,115,189,191,203,221, 28,227,203,165,130, 53,176, 38, - 3, 97, 96,121,100, 33,151,244,221,116, 11, 15, 9,231,112,190,237,205, 91,127, - 22, 56, 22,161,112,149,115,119,233,145, 8,143, 32,135,112,144, 45, 82, 23, 26, - 67, 50,171,134, 61, 54,204,225,218, 53, 33, 90, 86, 57, 70,163,206, 76, 14, 40, -107,250, 47, 82,202,143, 68,120, 68, 41,166, 80, 72,104,157, 57,131, 28,204,227, -254, 12,176,212,239, 14,139,154,223,213,195, 0,127,111,196, 22,188, 1, 74, 41, -221, 26, 12, 45,194,189, 27,110,106, 4,121, 21, 32,128,194,116, 99, 27,228, 68, -105, 40, 64,207, 93,216,132, 16,175, 39, 52,246, 50, 11,220, 93,107,147,160,180, -251, 57,204,125,152, 64,166, 6,205,152,103, 38,181, 13,178,154, 11, 66, 76,199, -251,113, 24,138, 42, 55, +// ../Source/Template/GB_emult_02c.c: +uint8_t GB_JITpackage_161 [862] = { + 40,181, 47,253, 96,252, 7,165, 26, 0,230,103,123, 41,208,208, 58, 7,120,178, + 4, 77, 37, 80,196, 89, 88, 54,203,209, 29,206,141,174,206, 51,178,195,217,134, +176, 82, 51, 67, 38, 95,234,246, 1, 95, 60, 48, 75, 47, 1,113, 0,108, 0,110, + 0, 96,107,149, 35,137,200,116, 38, 91,103,220,198,237,112,156, 59,139,234,112, +207,147,143, 3,150,138, 69, 98, 32, 80,177,156,210,166, 71, 92, 51,104,230, 19, +249, 81,151,195,175,126, 30, 61,146,115,117,150,222,205,197,211,185,134, 60,146, +231,133, 56,138,165, 95,174,160,247,165,191,190,129,244,217,171,219,118,212, 81, + 26, 95,106,241,113,189, 60,216,157,198, 47,200, 68, 90, 8,217, 3,131,253,162, + 89, 42, 51,123,161,175,231,181, 57,133, 34, 73, 40,148,249, 21,130, 36,127,207, +179, 55, 42,166, 68,212, 52,253,114, 14,231,129,225, 9,167, 38, 6,166,217, 36, +210,116, 36, 62, 51,171, 14, 66,144,100,183, 14,202,158,181,122, 51,238, 11,249, +243, 60,200, 96,125,198, 96,168, 69,203, 22,118,185,179,255,191, 36,113, 72, 82, +252, 36,147,199,244,125, 67, 89, 11,221,140, 63,202,181, 63,138,223, 93,126,151, +171,198, 35, 38, 85, 38, 22, 73,119, 26,181,242,151,219,149,171, 25,236,109, 65, +210, 56, 96, 79,105, 31,165,157,142,117,102,134, 65, 78,217,153, 31,205, 6,108, + 47,227,144, 95, 92,154,241,188,108,117, 10,227,177,147,211,229, 84,176,126,129, +169, 78,189,234, 20, 19,111,173,122, 88, 78,235, 25,223,202, 97, 60, 79,130, 2, +142, 72, 4, 31, 83,189,114,107,162, 4,162, 86, 63, 10,142,182,169,189,208,214, +157,134, 79,129, 83, 78,120,163,125,187, 60,191, 16,248, 27,114,247,218,243,232, +165,246,246, 11, 79, 63, 11,122,237, 99,171, 1,146,212, 33,117, 68, 34, 24, 87, + 31,143, 85,132, 77,239, 52,104, 60, 11, 16,154,235, 2,133,184, 78, 41, 31,169, +198, 65,114, 48, 77,102,126, 56, 15,153,102, 54,120, 22,184,222, 64,174, 62,172, + 83, 96,216,117,200, 36,214, 73,123, 5, 21, 69, 31,143,196, 2, 2,158, 77,175, +223,189, 48, 4,117, 8,172,153,162, 34,232,154,126,205,235,218, 0, 76,231,234, + 35,214,165,157,120,149,183, 94,143,121,117, 76, 32, 18, 41,219,153, 22,123,180, +151, 98,140, 17,219, 2,128,156,168, 97, 49,100,102, 68, 70,164, 32, 41, 72,161, +208, 24, 32,134, 24, 83,118,230, 1,162,113, 48, 71, 17,195,140, 50, 2,195, 8, +149,204,132, 37, 73,253,227, 1,153, 66,185, 49, 54,155, 73,201,154,148, 10, 58, + 22,228, 10,189,221, 92, 78,182,226,209,173, 89,232,176, 49, 84,160,111, 54,216, +207,224,156, 71,139, 38,227,195,215,100, 6,106,180,207,204, 17,173, 55, 62,234, + 96, 91, 36,244,233,223,124,103,158, 82,222, 70,230,132,121,182, 32, 98, 20,170, +209,163, 23, 85,233,127, 83,102,108, 44,109,209,230, 42,113,240,193,112,209,170, +204,216, 95,201, 48,254,179,103,131,126,164,139,116, 10,159,214,101,175,128,229, + 14,194,109,235,160,132,244, 93, 94,178,186, 71, 16, 38,242,232,146,150,252,159, +127,236,201,230,191,165,170, 3,177,113, 33,214,140,121,180, 45,126,179,133,234, +253, 59,216,149, 60, 37, 85,115,176, 81,114,202,210,222,109, 65, 92, 11,180, 57, +106,186,217, 87,105,216,176,233,229, 71,226, 55, 39,131, 0,218, 65,128, 80,143, +215,179,212,218,109, 55,200, 5, 22, 77,138, 52, 14,182,228,185,238, 49, 38,147, + 59, 44,164, 55, 5,243, 62,148,184,182,165,123, 11, 25,209, 20, 30,169,141, 2, + 90,152,202,143, 84, 2, 22, 45,100, 27,107,106,246, 36, 87,169, 82, 79,249, 3, +137,110,190,128, 10,240, 22,188, 2,221,123,118,164,161, 42,208, 70, 28,122,233, +117,164, 84,136,156,242,104,127, 42,241,253, 18,132, 26,176,254, 9,154,195, 79, +201,155, 64,208,155,166,250,131, 9,172, 6, 67,136, 12,110, 28,228, 79, 41, 13, + 52, 1, } ; -// ../Source/JitKernels/GB_jit_kernel_colscale.c: -uint8_t GB_JITpackage_167 [284] = { - 40,181, 47,253, 96,116, 1,149, 8, 0, 86, 17, 58, 21, 16,253, 42,159,251,225, - 11,144,251,177, 38, 53,212,211,160, 71, 4, 0, 16, 56, 8, 51, 0, 52, 0, 52, - 0,159,246,223, 77,225,149,246,165,159, 99,212,231,174,188,214,174,253,122,124, -157,235,242,245, 85, 33, 69,148,127, 76,228,187,165, 73,187,177, 73,186, 31,158, -127, 75,214, 43, 75, 78,151, 79, 18,224, 72,146,116,173,166,235,231, 93, 87,242, - 70,195, 40,204,225, 44, 10,227, 9,115,240, 6,189,222,101,229, 17,201,231,106, - 29,191,107,232, 13, 80,218, 38, 85, 46,231,235,249,244, 92,202,224,175, 87, 27, - 4,230,245, 13,224,214, 81,228,102,113,159,165,249, 77,154,186,237, 34, 67, 44, - 35,167, 11, 80, 16,230,248,170, 89,202,146,127,230,191,162,107, 13,255, 19, 59, - 62, 13,127,115,221,142,177,242,144,243,223,243,167,255,231, 3, 0,176, 3,144, - 39, 64,208,162, 40, 17, 36,167, 25,158,237,250,207,129,137,252,186,116,229,247, -215,100,224,255,105,187, 38,188, 10,222,123, 15,232, 0,228,137,193,119, 97,247, -121,164,181, 73, 84, 13, 0, 70,128,146,244,166,248, 34, 64, 0, 22,128,144,198, -200,117,154,152, 76, 13,154, 63,207, 76,209,230,177,213,188, 99, 80,102,184, 0, - 81, 81, 48, 4, +// ../Source/Template/GB_emult_03_template.c: +uint8_t GB_JITpackage_162 [813] = { + 40,181, 47,253, 96,114, 11, 29, 25, 0,230,162,108, 33,240, 88, 55,172, 23,242, +240,156, 43, 19, 73,155,178,241,156,116, 67,186,162, 1, 77,125, 13,140, 94,128, + 82,100, 19, 65, 19, 26, 2, 99, 0, 94, 0,101, 0,174,247, 88,186, 32, 39, 73, +234, 24, 99,145, 88,100, 15, 69, 98,225,133,144,224,152,190, 40,107,113,141,250, +106,220,102,121, 61,199, 58,202,169,227,105, 51, 38,210,253,190,167,238,202,127, +174, 70,196,235,108, 79, 93,157,132,173,147,228, 73, 68,156,182,220, 23,116,125, +157, 58,254, 49,229,213,160, 81,167,248,230,145,223,150, 60,203,223, 31, 35,241, +109,242, 84,254, 87, 49,142, 64, 92, 25, 2, 17,121,235,207, 6,223, 95,195,177, +241,245,173,177, 25,110,213, 49,234,251, 75,238,238,126, 93,172,235,210, 48,215, +184,108, 58,166, 63,159, 38,109, 75, 55, 59,238, 90,117,109,253,243,105,135,167, +188,181,175,246,253,210,106,255,113,251,184,111,202,177,237, 74,104,139,236,199, +208,158,212, 35,249,175,120, 55,126, 82, 38,123,141, 63,188,156, 76,100,249,104, +164, 71,229,215, 15, 10,143,205,194, 96, 64, 0, 20, 54,130,123,160, 75,215, 81, +143, 19,226, 46,159,120, 73,184, 86, 9,105,154,224,107,242,107,245,116,153,143, +154,250,126,212, 31, 95,206,165, 3,186,108, 62, 47,163, 17,159, 36, 94,193,194, + 13,217,110,125,106,147,182, 27, 31, 44,105, 42,225,251,153,254,251,240,146,186, +126, 91,231, 43,154,192, 74, 70, 65, 10,145,224, 39, 81,247,142,163,196,207, 74, + 86,157,226,103,245, 29,222,215,213,114,247, 2, 37,120,197, 20, 56,156, 80,199, + 41, 20,231, 8, 46,222,240,179,117,202,129,173, 64,168,217,128, 63,233, 68,134, +248, 51, 70, 57, 47, 83, 63,150,167, 83,225, 4,147,141,178,121, 91, 8,228,117, + 31,206,179,125,155,142,114,103,105,134,159, 73, 91,238,222,243,220,182,109,171, +181, 86, 85,129,160,186,124, 70,222,184, 77,236,251, 4, 58,230, 15, 58,182,161, + 87,207,166, 83, 23, 77, 15,128,162,160,113, 73,154,154, 9, 50, 74,146,146, 74, +134, 3, 96, 68,132,140,110,117, 33, 9,167,151, 96, 42,137, 38,111, 64,206,102, +218,241, 22,112, 64,157, 45,247,104,188, 12,246,168,131,224,195,239, 40,155, 48, + 20, 56, 68, 13, 56, 6,119,108, 60,234, 18, 33, 85,133,230, 12,130,161,149,109, +236, 65,141, 8, 64,136,148, 14,208, 20, 14,147, 17,203, 66,158, 29,148,139, 17, +224,186,209, 67, 22, 34,134,219,135,198, 57,186, 83, 42,214,167,228, 73,144,117, +185, 71,184, 10, 63,217,200,153, 65,212,121,205,160, 95,108, 96,135,219,132,198, +181, 13,102,204,222,225, 35, 16, 47,240,109,184,160,101, 80, 16,210,196,142, 35, +111, 25,149,134,140,246, 50, 88,131,152, 0,231,144,209, 7, 60, 39, 46,208,128, +134,115,137, 16, 50,149, 81, 65,150, 77, 8,226, 5,208,152,221,139, 17, 18,185, +185, 39,102, 52,176,112,107,200,128,240, 32, 46,137,135, 49, 95,188, 71,139,111, + 4,138,216, 12, 34, 64, 3,227,142, 14,171, 39,233,230,224,121,120,220, 51,157, +211,201,117,123, 5,224,168,161, 26,140,145,153, 61, 40,202, 8,142,108,172,241, +160, 83, 76,109,152,248,238,193,209, 1, 53,120,249, 77,151, 66,193, 60, 39,186, + 98, 9, 59, 96, 2, 77, 34,208, 23,173,206, 45,207,214, 9, 15,125,244, 0,252, +155, 8,188,193, 24, 76,128, 63,168,111,205, 70,176,253,101,232,184,176,100,171, +226, 30,176,125, 53, 98, 0, 96,148,179, 55,215,136,198,106, 74, 93,253, 57,204, +111,149,182, 94, 22,120,240, 11, 84,226,144,230, 91,189,105, 98,254, 96,242, 86, +213,229, 40,129,235,162, 33,234,248, 85, 41, 10,242, } ; -// ../Source/JitKernels/GB_jit_kernel_concat_bitmap.c: -uint8_t GB_JITpackage_168 [437] = { - 40,181, 47,253, 96,223, 2, 93, 13, 0,166, 25, 82, 33, 0,181, 30,214,170, 36, -224,202, 10, 12,199,205, 56,127, 40, 8, 73,148,196,160,183,116, 21, 3,232,184, - 83,254,255,239,245, 33, 4, 70, 0, 73, 0, 75, 0, 78,217,201,101,120, 65,149, -225,130,233,163,205, 6, 61,151,115,185, 77,237,218,228,170, 51,196,135,186,230, -237,247,253,108, 17,115,209,213,187,122,220,171,131, 27, 95,159,142,223, 17,185, -122,246,205,208, 93, 45, 6, 45,253, 30,235,239,208,125, 57,244,202,220,178, 98, -101, 89, 1,225,165, 83,206, 44,177, 60, 97, 40, 19,236,241,245,190, 11, 68,138, -115,235,228, 25,116,133,115,174,141, 3, 65,161,250,141,173,121, 58, 66,255,245, -238,198,223, 57,170, 15,241,219,171, 85, 23, 6, 69,208, 61, 72,127,248, 21, 15, -247, 70,115, 43,254,125,211,165,161, 48, 40, 84, 7,194,160, 16, 29, 91, 51,223, - 87,173,239,215,184,101, 53, 34, 14, 78, 98,169,120,223,121, 55,224,238, 30, 73, - 49,225,212,228, 19,110, 82,161, 80,202,140,112,142,139,114, 19,147,104, 13, 73, -165, 1,113,109, 94, 19, 45,163,156,227, 17, 35, 53,114,201,113,121, 93,186,156, -211, 93,138,176,201, 41, 19,137,133, 2, 3, 49,150, 98,194,169,109,107, 96,152, -101,163,151,206, 38,199,250,179, 95, 3,172,224,203,158,223,244,202, 0,254,221, -231,179, 56,122,183,195, 31,240,232, 38,252,120, 52,131,153,118,244,135, 18,190, -168,232,200,227, 10,247,232,219,251,133,180,243,238, 30, 67, 12,222,109,241,199, -243, 38, 32, 64, 68, 32,146, 33, 61, 78,194,112, 64, 65, 26,137, 20,230,154, 49, -195,103, 65, 1, 8, 68,135,254,195,137, 0, 18, 16,113, 52, 64,104, 36, 8,108, -142,115, 68, 9, 48,138,110,174,109,134,208,251, 91,168, 52,174,115,132, 13, 0, -227,217,108, 2, 29,240,220,176, 90, 7, 61,118, 44,123, 12,218,166,233, 60, 51, -121,155,166,171,245,204, 17, 2, 11, 67, 3, 56,226,225, 41,234,134, +// ../Source/Template/GB_emult_03a.c: +uint8_t GB_JITpackage_163 [724] = { + 40,181, 47,253, 96,167, 6, 85, 22, 0, 22,229,112, 40,208,208, 88, 7, 52,156, + 65,253,142, 54,163,159, 33,135, 69, 99,186, 29, 2, 37,103,215,112,170, 39,133, + 38,102,158,108,158, 3,250,131, 43, 60,210, 65,252, 2,104, 0, 97, 0,100, 0, + 10, 15,182,147,173,198, 60, 36, 42,153,233,226,139,202,150, 29,110,111,102,209, + 14,215,180,119, 71, 32,137, 72, 30, 7, 3, 17,201, 37, 43,186,179,125, 33, 43, +159,222, 63,217,237,108,253,112,167,121, 24,152, 81, 89, 47, 19, 13,223,246,104, +160,202,244,147, 65,216, 86, 73, 45,252, 53,229,169,220,110, 87,220,246,223, 39, +103, 24,135, 2,211, 59,245,234, 19, 73, 16,137, 87,243,108, 28,225,229, 16, 8, +244,128, 64, 2, 17, 70,246,146, 92,179, 27, 55,207,124,237, 96,215, 88,211,100, +149,244,116,235, 92,110, 22,178,210, 0,202,175,190,191,179,185, 82,213, 39,146, +140, 8,174, 78,118,121,225,255, 15, 65, 26, 16, 52,185, 59,217,114,165, 28, 43, +183,119, 24,254, 9,222,202,115,245, 92,203, 83,175,253,231, 54,111,210,158,179, +251,236, 54,198, 93, 5, 69, 38,201,131, 51, 75,210,247, 73,229,198,250, 78,190, + 2,180,186,163,135,156,115,174,162,119,215,228, 8,233, 29,164,209,171, 76,172, + 48,188,248, 50,241,193,114,137,240, 50, 89,187,184,192, 55, 85, 94, 27, 31,165, + 92,226,220,101, 48, 58,140, 9,240,114,234, 27,132,115, 78, 57,245, 95, 43, 53, +202, 41, 38,206, 86,107, 22, 70,234,215,214,198, 56,191,177,192, 64,195,225,176, + 71,160, 60,114, 42,146, 6,156,213,155,156,159, 43, 98,205,115,113,102,217, 75, + 51, 16,180, 1,109, 56, 28, 21,214,215,228,128,187,206,168,162,103, 26, 44, 26, +133, 8, 11,132, 21, 29,219,241,221, 61,122,151,241,238, 54, 45,163, 63,139,195, +195, 84,150, 74,124,192, 64, 44, 88, 98,131, 70, 1,227,107, 98, 29, 64,157,162, +170,224, 5,166,119,234,210,198,117,196,158,217,119,118,172, 75, 20,143, 78,188, +226, 1, 68,199,250, 14,234,144, 78,188,225,169,247, 17, 14,233, 41,175, 6, 28, + 78,162,153, 24,109,160,145,169, 82, 68,134,100, 68,130,180, 32, 37, 73, 7, 32, +134, 24,196,236,186, 1, 25, 1,165,177,241,187,214, 74, 30,161,255,130,219, 10, + 10,108,147, 6,228,210,112,101, 19, 4, 2, 97, 80, 0,103, 0, 14,216, 50,120, +193,201,129,134,141, 34,180,101, 76, 70,228,147,211,132, 59,120,244,127,162, 88, +230, 78,217,131, 71,121,158, 70, 90, 35, 51,241, 87,138,101,135, 5,123, 42,132, +111,212,121, 52, 73,217,197,108, 22, 87,216,144, 89,103,154, 5,255, 65,161,225, + 36,224,191, 2,197,204,176,243,194, 75,211,202, 99,195, 86,208,136, 22,253,250, + 55,203,158, 86,169, 87,149, 1,216,153, 50,160,133,229, 1,213,110,104,202,210, +175,127,105, 17, 31,246,141,146,208, 56, 32,183, 16,197,189, 90,234,218,231,184, +122,221,170,212,195,184,193, 78,230, 31,152,101,141,220,176, 9, 3,151, 7,224, +143,165,244,188,197,220,183,150,145,229,195,227,126, 36, 87,185,188, 5,209, 76, + 33,142,161, 24,129, 66, 38, 36,116,104, 34,169, 66, 98,154,204,233,248,217,148, + 24,165,249, 54,111,154, 24, 42,152,108, 85,141, 96, 33, 8,188, 82,120,198,132, + 85, 21, 5,119, } ; -// ../Source/JitKernels/GB_jit_kernel_concat_full.c: -uint8_t GB_JITpackage_169 [338] = { - 40,181, 47,253, 96,213, 1, 69, 10, 0, 22,212, 65, 33, 0,211, 60,238,110, 1, - 62, 58,197, 99, 92,172, 55,218, 59, 82, 80, 3,202,176,169,248, 13,119, 87, 71, -182,255,255,123,253, 11, 1, 55, 0, 57, 0, 56, 0, 25,220,185,228, 38,102, 89, - 64,171, 47,195,135,218,130,220,111,172,225, 34,117, 14,214,219,102,190,157,177, - 79,119,235,249,221,224,121, 26, 74,221,246,230,239, 86,239,179,126, 76,221,248, - 82,173,203, 41, 42, 74, 20, 21,130,169,146,222,114, 45, 56,221,160, 31, 83,240, -206, 63, 97, 72, 31,230,191, 24,147, 34, 9,109,154,252, 70,127,248,155,135,219, - 82,193,219,116, 73,168, 4,149, 84, 24, 8, 42,143, 46,228, 50,196, 27,155,240, -105,122,199,178,191,155,194,225,216,180, 50,236,170, 29,163, 17, 99,212,113,121, -113,137, 93,186,156,211, 93,114, 40,228, 90,246,128, 68, 95,136,235,148, 19,148, - 20,132, 36, 90, 70, 63, 99,202, 79, 2, 49,186, 96, 11, 57,248, 57,194, 47,248, -198, 49,126,226,193, 35,142, 83, 80, 10,225,170,165, 47,200,179,214,236,215,128, - 59,121, 96,230,119, 5,248, 79, 52,222,205, 56,224,238, 30, 61,241,224, 17,228, - 89,151,109, 90,197, 48,200,162,118,147, 62, 50, 90, 49,197, 35, 23, 0, 76, 9, - 3,128, 2, 34, 12, 16,128,181, 33,164, 33,251, 58, 35,102, 54,155, 2, 58,212, -185, 21,171,245,132, 30, 39, 22, 63, 10,218,166,249,243, 76,161, 93, 9, 0, 29, - 11,130,115, 12, 58, 49,223,220, 92,199, 11,240, 48, 7,167, 40, 24, 2, +// ../Source/Template/GB_emult_03b.c: +uint8_t GB_JITpackage_164 [679] = { + 40,181, 47,253, 96, 36, 6,237, 20, 0,150, 34,105, 33,240, 88, 23, 3,172, 29, +137,101,120, 11,237, 84,153, 57, 97, 41,208, 20, 2,110,157,229, 84, 90, 15, 58, +128, 5,158,129,148,129,135, 98, 0, 92, 0, 95, 0,148,129,231,129,201, 62,107, +202, 86,219,204,245, 14, 69, 55,115, 81,228, 62, 17,135,194, 97,176, 48, 20, 14, +199,188,235, 83, 95, 83,125, 60,227,158, 10,119,105,188,155, 79, 13, 71,161, 33, +174, 57,194,208,216,125, 75,141,149, 45, 78,133, 4,171,115,197,154,254, 35,235, + 69,177, 4,175,239,185,147, 54, 60,157, 6, 50,238,219, 29,103,132, 16,133,110, +139,229,104, 59, 26, 57,129, 96, 13, 8,132, 23,173, 40,214, 92,241,241, 88,122, + 29, 69, 53, 99,128,246,239,238,111,242,218,188, 57,206,192, 66, 23,226, 43,133, +219, 86,254,255,150,165,178,172,108,110,210,106,155, 49, 73,215,241, 37,203,159, +209,235,122,155,203,237,149,121,235,167,246,181, 99,213,183,225,126,184,239,233, +211, 97, 21,178,195,192,134, 94,197,220, 25,217, 94,240,110,210,126,147,129,213, +164,245,110,159, 20, 95,231, 48,221, 6, 18,233,104,132,180,162,233,129,143,114, +221,186,227,176,118,140,244, 25,210,235,180,147,208,200,183,143, 26, 39, 93,251, +246,111, 93, 69,237,160,207,173,119, 69, 77,187,237, 91,231, 11,146,190,187,132, + 66, 37, 16,232, 55,180, 23,190, 93,152, 97,122,119,172,100,234,187,172, 88,126, + 54,244,244, 49,178,163,151,254,170,205,225,238,198,146,124, 46,129, 1,150,181, +178, 86,224,253, 72, 11,248,188,142,235,152, 11, 68, 51,233, 64, 40, 13, 93,167, + 37,125, 59, 14,127,162,184,207,209,173,215, 57, 72,134,163, 56, 32,143,110, 67, +225, 84, 32,221, 69, 51, 33,193, 11,248, 44,121, 65,251, 61, 37,214,111,218,239, + 5,219, 41,254,252,210,111,191,244,129,140,251,118,108, 52,239,245,198, 41,190, +118,131, 96, 98, 24, 51,231,156, 31,105, 59,138, 3,104,160,145,165, 66, 72,134, +132, 38, 73, 10,146, 66, 26, 3, 48, 68,128, 16,187,243,233,128,206,182,180,131, +160,120,130, 13,132, 34, 66,203, 64,248, 13,224,226,195,216, 0,194,180,176, 44, +119,225, 35, 48, 62, 14,102, 19,108,134,116, 40,101,192, 6,235, 1, 52,125, 99, + 64,133, 73, 92,153,186, 90,225,239, 74,222, 22,213,219,167,112,127, 12, 21,190, +230,105,184,197,253,156, 48, 60,115, 9, 57, 14,133, 2,226, 33,144, 61,104,211, + 2,133, 38, 51,244,140,115,253, 27, 44,111,161,161,152,106,228,211, 8, 45, 49, +192, 71,195, 37, 50, 90, 64, 22,162, 32,109, 55, 52,101,233,215, 95,218,136, 15, +251, 70, 41, 20, 28,128, 92,104,113, 89, 45,227,154,231,104,224,154,213, 82,143, +113, 3,147,101,143, 72,166, 54,174,177,169,129, 73, 67,241, 99, 41,115,222,182, +183,173,101,190,124,120,156,138,100,133,235,167, 12, 84, 74, 36,188,144,232, 65, +197, 21,233, 4,250, 71, 84,199,173, 76,194, 30,188, 45,149, 26,160, 97,155, 55, +205,204, 31, 76,182,170, 66,160, 28, 4, 62, 33, 74, 15, 92,149,162,151, 9, +} ; + +// ../Source/Template/GB_emult_03c.c: +uint8_t GB_JITpackage_165 [861] = { + 40,181, 47,253, 96,255, 7,157, 26, 0, 38,232,123, 41,208,208, 58, 7,120,178, + 4,205, 2, 45,226, 44, 44,155,229,232, 14,231, 70, 87,231, 25,185,241, 88,158, + 91, 64,159,226, 22,110,154,246, 1, 95, 60, 48, 75, 47, 1,114, 0,109, 0,111, + 0,146,198, 95,103,150, 35,137,200,116, 38, 90,103,220,198,237,112,156, 57, 11, +235,240,174,147,143, 3,150,138, 69, 98, 32, 80,177,156,202,166, 71,108, 51,106, +230, 19,249, 17,151, 65,207,126, 30, 61,146, 51,185,176,222,205,197,211,217,134, + 60,210,237,112,196, 81, 26,223, 26,226, 99,251,217,117,161,141, 18, 86, 47, 91, +208,251,214,203,107, 95, 61,246,175, 57,141, 79,200, 68, 90, 8,216, 3,115,253, +146, 13, 84,104,238, 66, 94,211,185, 57,133, 34, 73, 40,148,249, 21,130, 36,123, +207,180, 55, 44,166, 68,212, 52,253,114, 14,231,129,225, 9,167, 40, 6,174,216, + 36,210,116, 36, 62, 20,171, 14, 66,144, 96,183, 14,194,158, 51,123, 51,238, 11, +249, 51, 61,200,159,125,198, 31,152, 85,213,128, 6,114,185,177,255,191, 36,113, + 72,210, 36,202,127,130,205,227,250,190,161,156,133,110,198, 31,101,219, 94,197, +111, 46,159,203, 86,227,241,146, 42, 19,139,164,185,172,134,242,151,219,118,179, +249,107,109, 33,218,215,116,134,143, 51,156,126,117,104,134, 65, 82,217,161, 31, +205,230,235, 46,227,144, 95,220,154, 49,149, 97,117, 10,227,145,155,211, 39, 85, +176,126,129,169, 94,187,234, 20, 19,239,204,118,120, 82,235, 25, 95,187, 97, 60, + 83,130, 2,142, 72, 4, 31, 83,189,114,107,162, 4, 98,102,189,250,141,180,169, +187,144,214, 92,134, 79,125,116, 78, 88,171,125,185, 76,189,208,247, 11,110,239, +186,235,234,173,225, 67, 15,124,245, 44,234, 13, 31,154, 13,146,212, 33,117, 68, + 34,215,102, 31,143, 86,116, 77,239, 52,104, 60, 11, 16,154, 57, 65, 32,182, 84, +202, 71, 91, 53, 14,146,115,105, 50,244,195,121,192, 52,180,193,179,176,181,246, +109,246, 97,157,226,186,230, 33, 19,121, 43,218, 41,123, 5, 21, 69, 31,143,188, + 2, 2,142, 77,183,222, 59, 16, 4,117,232,179, 57,130,228,116, 73,231,220, 0, + 76,223,236, 35,214,103, 56,113, 59,111,221, 30,243,234,151, 64, 36, 82, 97,135, +134,215, 99,120, 41,198, 24,175,128,156,168, 97,177, 99,102, 68, 70, 68, 65, 82, +144,130, 66, 58, 48,132, 24, 99,236,234, 1,226, 97,170, 71, 17,195,140, 50, 2, + 40, 16, 27,153, 9, 75,146,250,199, 3,153, 66,185, 16,137, 57, 41,139, 38, 21, + 64, 15, 66, 66,133, 10,110,110, 90,146,156, 28,231,251,215,120,220,209, 64,111, +222,214,246, 57,228, 22, 40,195,194,151, 78,230, 20,222, 25,207,190,110,136,162, + 43,161, 5, 72,159,130, 77, 51,243, 80,150,144, 68, 55, 91,206, 49,138, 98,254, +104,136,170,240,223,228,179,108,156, 89,146,230, 74, 27,250, 24,145,104,209,249, +243,117,133,141,159,129,147,254, 17,158, 53, 67,222,218,207, 86,202, 80,131,149, +180,194, 5,116, 26, 71,194, 46,240,179,186,163, 32, 51,221,113,145, 6,248,215, +165,228,147, 93,159,126,170,209, 97,115, 9, 89,187,120, 29,237,203, 86, 1,165, +254,159,179, 16, 67,128,170, 88,216, 46,209,203, 98, 45,141, 71,124, 44,141,101, + 54,103,161, 5, 4,246,153, 30,247,163,128, 13,231, 20, 0, 29,228, 30,202,127, +113, 22,230,229, 54, 95,142,126,197,199, 73, 43,226, 86, 68,186, 7, 35, 25,229, +254,161,168,153, 49,191, 86,233,223,144,239,111,101,228,125,120,240,247, 8,228, +193,196,127, 18,224, 1,250,198,182,108,169,135, 41,243, 92, 25,137,210,238, 63, +210,142, 8,238, 16, 91, 44,213,208,123, 74, 53, 26,241, 13,169,239, 32, 66, 15, + 32, 37, 33,114, 26,141,148,246,186,105, 1, 88,208,226, 67, 43, 76,169, 5,154, + 16,201,166,233, 82,193,180, 42, 85,142,148, 66,240,209,104,202,140,167,170, 5, + 78, } ; -// ../Source/JitKernels/GB_jit_kernel_concat_sparse.c: -uint8_t GB_JITpackage_170 [338] = { - 40,181, 47,253, 96,216, 1, 69, 10, 0,214, 19, 65, 33, 16,209, 60,230,145, 11, -255,252,199,116, 19, 23,100,157,136, 16, 87, 27,187,143, 61, 76, 82,211, 23, 77, -117, 68, 0, 0, 85, 53, 3, 54, 0, 56, 0, 56, 0, 59,172,224,205,103,165, 23, -229,137, 87, 43,234,111,108,169,178,114, 12,214,251, 86,220,175,135, 59, 99,167, -158,223, 13, 63,234, 43,142,118, 95, 46,135,156, 5, 63,235,167,216,141, 63, 75, - 41, 92,146, 36, 36, 73, 1, 19,244, 30,119, 69,234, 6,253, 88,130,119,254,110, - 1,253,152,159,195, 23, 4, 73,100, 81,247, 23,253,227,107, 62,110,111,130, 53, - 7, 65,234,147, 48, 9, 38,168, 48, 16, 76,254,112,142,207, 17, 95,110,194, 35, -234, 25, 47,126, 81, 10,187, 20,118, 91, 48,164,124, 50, 62, 63,159,216,167, 79, - 74,221, 39,166,114, 60,195, 28,143, 39, 28,177,165,147,138,179, 18,157, 72,134, - 85,159,177,228,187,128,124, 62,124, 29, 23, 67, 71,248,135, 57, 41,136, 2, 82, -110,228,193,159, 90,173,170,122, 84, 75,233,172, 45,251, 53,128,139, 64,177,242, -219, 2,252, 59, 11,200,101, 28,112,119,151, 26,121,240,199,113,108,195,180,204, - 90, 85,163, 89,181, 27,173, 28,151,229,208,172, 70, 24, 0, 75,128,226,212, 53, - 0, 80, 65,196, 1, 2,176, 90,132, 52,174,239, 17,182, 0, 96,204,108, 54, 5, -116,168,115, 43, 86,235, 9, 61, 78, 44,123, 20,180, 77,243,231,129, 41,154, 81, - 24,130,198,172,229, 25,131, 58, 80, 24,122, 1,142,204,225, 41, 10,134, +// ../Source/Template/GB_emult_04_template.c: +uint8_t GB_JITpackage_166 [1145] = { + 40,181, 47,253, 96, 64, 13,125, 35, 0,230, 48,149, 40,192,146,213, 49,170,170, + 18, 27, 13, 54,104, 34,139, 59,118,246, 95,163, 8,205, 93,232,226, 81, 78, 70, +141,153, 81,163,192,187,167,223, 85, 20, 4,217, 96, 6,139, 0,135, 0,141, 0, + 86,255,110,251,219,198, 27,135,250, 26,127, 74, 22,202,101,114,183,204,230,120, +204,119, 49, 8,239,238,106, 14,147,171,187,155,225,205,132, 66,211,161,104, 87, +227,187,250,122,174,247,134,129, 61,231, 56,130,139,229, 50, 57, 24,176, 92, 78, +101,211,161,198, 26, 86,243,142,109,123, 34,140, 29, 94,113, 35,183,108, 63, 6, +204,117, 55, 30, 93, 18,199,141, 64,149,108, 69, 27,127, 46,175,117,246,241,240, +187,185, 99,171, 92,253,217,172, 79, 15,101,132, 18,159, 81,160, 9,243,152,187, + 45,151, 69,119,215, 2, 75,221,220, 72,116,171,100,120,165, 34, 77, 42,149,115, + 78, 41,165,172,206, 65, 77, 28, 86,167, 2,219, 94,247, 61,250, 28,254,126,222, +217,236,242,159,247,120,144,231, 81, 2, 2, 19, 64,117,106, 78,199, 60,214,117, + 69,108, 35, 65,173, 10,194, 90, 39,101,197,121,222,231,106,238, 74,201,185, 28, +106,244, 52,174,241,183,195, 27, 43,194, 99, 65, 84,204,225, 1,116, 53, 16, 14, +144,178,250, 71, 97, 18,159,249, 39,126,103,248,219,250,126,145,239,138,176, 59, +252,173, 59, 47,155, 80, 30,198, 67,250,125, 49,254,255,146,244, 33, 73,148,143, +165,215,246,247, 27,237,108,244,109,253,142,141,175, 40, 22,210,135, 68,146, 80, +221,242,204, 68, 13,192, 12,139,108,215,161, 77,151, 27,105,119,203,244,169, 73, +107,246,126,219,174,162, 81,247,207, 3,157,187, 28,103,111, 69, 24,246,203, 26, +222,215,248,244,247,187,219,198, 11, 52,111,219,151, 86,191, 60,242,217,173,179, +222,157,196,114, 33,140, 14,215,208,173, 25,230, 52,173, 91,127, 24, 20,194,120, +230, 74, 97,114,115,199, 22,253,122, 96,221, 93, 78,131,226,192,124,179,145,136, +248,194,169,105,162,148, 98,188,109, 89, 97, 66, 51, 45, 48,160,176, 41,225,193, +174, 14,229,204, 10,113, 69,154, 69, 94, 86, 67,218,210, 25,146, 20, 34,133, 72, + 36, 51, 31, 98,142, 57,189,195,177, 46,135, 9, 75,202, 15,140,135,216, 90,158, +184,153,150,166,118,153, 95,204, 41, 31,161, 68, 42, 3,226,169,122,230,255,160, +228,116,169,217,187,117,135, 15, 2,242,171, 71,135,154,102, 49, 28, 13, 7,163, +240, 37,240, 19,167,199, 42, 41,200,129, 93,113,130,104,182, 56, 78, 56,205,175, + 62, 7, 36,144,130,185, 83,243, 60, 60,132, 16, 78,173,187,149,230, 67,154,167, +207, 78,213, 68,196, 26, 59, 21,179, 24, 30,121, 70,117, 42,116,184,209,233,180, + 54, 72,134,140,132,234,175,126, 17,128,252,168, 49, 69,102,106, 70, 68, 68, 82, +144, 36, 25,214, 96, 68,100,204,170,115, 50, 97,164,168, 48, 14, 98,204, 40, 1, + 22,136, 8, 6,101,164, 48, 5,245,109, 9,106,144,142,115, 34, 11,225,111,124, +133,220,241,206, 10,191, 70,219,142, 93,178, 55,237,127,204,101, 51,103,114, 59, + 64, 53,252, 54,241, 56,219,113, 36, 92, 14, 64,217,180,237,255, 10,223,227,143, + 72, 2,255, 46,133, 12, 82,203,188,107, 8, 14,193,166, 20,233, 47, 43, 56, 80, + 54, 34,193, 28,139,205,208,132,109,204, 90,213, 27,252,147,240,195,160, 83,101, +227,134,215,248,118,199,202,138, 84,112,179,211,196,183,229,138, 71, 50,198, 16, + 90, 68, 65,201, 72,222,254, 69,238,148,254,141,177, 45,175,174, 76, 2,228,101, + 10,159, 93,239,235,197,194, 41,252,155,125,253, 60,240,117, 33, 68,211,173,236, +236, 54, 61, 42,205,116, 28,226, 72, 1, 42, 60, 87,208, 8, 87,197,214,110, 97, +206,150,112,126, 61, 3, 23, 3, 66,134,213, 1, 84,208, 48,252,164,111, 98, 91, +128,135, 1, 78, 88,255,154, 89, 70, 55,217,216,181, 97, 45, 6, 45,231,176,248, +132, 80,190, 81,142,181,108,179,209,109,166,231,113, 29, 47,239,155,219,221, 1, +153,147,156, 99,112, 64, 48,220, 67,104, 18, 27,148, 44, 28, 25,203,125,178,113, +166, 4, 54,165,189,214,203,125,214,235,121,217,238, 51, 78,106,251, 34,172,155, + 4,180,243, 84, 0,250,173,210,165, 52, 44,196,134,199,153,176,136,105, 69,250, + 51, 17,144,115,163,129, 21, 58,106,105,244,207,124, 28,225, 98,179,194,201,152, +221,132,116,106,248,118, 56, 33,240, 59,108, 94,102, 94,130,117, 28,187, 43,209, +106,203, 24,200,107, 69, 78, 86,132,142,205, 80, 10, 80,251,225,144, 24,174,139, +154,200,173,173,124, 7, 42,195, 60, 70, 45, 50,239, 69, 14,234,175,227, 52,103, +143, 50,104, 81,223, 0,240, 18,147,164, 50,147,217,138, 97, 81, 83, 44,214, 80, +250,131, 12, 54, 80,118, 88,214,111,137,156, 65, 44,135,164,225,134,184, 15,235, + 93, 80,207, 38,150,151,232, 65, 43, 19, 68, 95,141,188, 33,200, 98, 53,200,221, +159,103, 8,210,135,192,111, 28, 27,108,181, 59,243, 68,164, 40, 43,232,188,139, + 57, 68,126, 20, 90, 54,107,161,216, 25,238,161, 16,211,182, 75, 67, 83,250,137, + 35,151,229,166,201,170,167,215, 79,154,233,208,242,127, 46,143,210, 75,241,142, +142,170, 7,215, 4, } ; -// ../Source/JitKernels/GB_jit_kernel_convert_s2b.c: -uint8_t GB_JITpackage_171 [335] = { - 40,181, 47,253, 96,206, 1, 45, 10, 0,198, 83, 65, 33, 16,211, 54,230,159,197, -126, 20,224,167,145, 8,166,205, 0,224, 93,178, 13,160,170, 37, 84, 45,226,232, - 30, 17, 1, 0,168,210, 25, 55, 0, 55, 0, 55, 0, 29,112,147, 24,220, 57,229, - 42,102,129,217,211, 11, 3,247, 27,103,184,153, 61,204,198, 20, 39,183,127,169, -189, 92,186, 27,238, 68,169, 74,187,245,107, 70,242, 90,241, 71,253, 23,187,113, -104,173,133, 83,212,148, 40, 42, 83, 37, 61,120,189, 92,221,160, 31, 87,240, 30, -255, 99, 72, 95,142,127, 49, 38, 73, 20,218,244,189, 70,127,249,155,151, 27,180, -224,205, 69,177, 58, 37, 84,130, 74, 42, 12, 4,149, 71, 23,114, 90, 98,141,167, -240,169,122, 88,181, 50,108, 97, 59, 70, 99,206,168,227, 52,116,138,157,146, 37, -182,213,105,118,119,215,178, 7, 36,202,148, 83, 51,221,252,200,169,208, 68,203, - 18, 63,226,202,127,129, 25,133,216,131, 60,147,142,240, 16,223, 41, 8,115,126, -230,193, 35,142,187, 18, 9, 8,103, 45, 61,234,204,126, 13,184,211,111, 79,204, -152,223, 22,224,255,101,196, 59,226,128,187,251,244,204,131, 71,144,103, 93,182, -105,214,170, 56,219,109, 87,228,129, 93,143,237,114,120, 22, 0, 73,128,194,212, -205, 28,194, 0, 1, 88, 27, 66, 26,203,247, 88, 99, 0, 37,102,230, 71, 5,240, - 79, 56,159,151,245,204,199,211, 30,202,168,183,181,196,166,105, 67,130, 41, 90, -116, 67,202, 97, 1,224, 13,131, 66,100,186, 68, 81,224, 6, +// ../Source/Template/GB_emult_08_meta.c: +uint8_t GB_JITpackage_167 [1227] = { + 40,181, 47,253, 96, 76, 17, 13, 38, 0, 22, 48,146, 40,192, 84,177, 14,228,188, +192,235, 47, 55, 9, 10, 19,224, 5,136,246,246,124,231,130, 65,122, 44,194, 36, +131, 16, 68,100, 55, 93, 56,184,174,162, 96,139, 2, 46,136, 0,124, 0,138, 0, +241,151,110,115,161,137,143,233, 47, 93,139, 59,119,220,102,167,201, 69,194, 88, +122, 94,146,123,207,220,166, 25,205,181, 49,142,165,113,237,139,118, 44, 26, 17, + 30, 9,235,143,219,184, 63,199,121,114,208,207, 53,237,189,130,128,185, 96, 44, + 11, 7, 23,204, 41, 87,244, 10,166, 31, 50,226,210,123,104,102,187, 81,208, 43, +212,235,192,201,201, 59,145,105,124, 37, 71,117,166, 29, 53, 1,120,136, 14,211, + 43,176, 64,122,154,233,215,102,199, 96, 85,254,160,177,156,220,159,145,185,183, +138,225, 82,101,173,219,186,130, 19, 55, 48,152, 88, 12, 12, 2, 88,135, 51, 24, +140, 96,235,240,214, 93, 56,107, 29,238,219, 26, 71,165, 88,246, 69, 53,252, 75, +177, 7,150,249, 93,169,196, 47, 77,215,230,171, 63,230, 37,251,149, 30, 55,189, +185,246, 51,123,129, 92, 59,220,117, 60,119,214, 43,153,214, 56, 95,207,182, 30, +183,197,158,145, 40,214,244,190, 61, 65, 26,203,235, 33,173,218, 99,122, 76,103, +142,142,201,206,184, 54,238, 48, 76,214,158,249, 21, 77,235,178,247,149,239, 51, + 91,235, 25,167,111,151,175,238,230, 76, 67,253, 33,231,171,188, 14, 43,239,149, + 49, 4, 84, 69, 26,227, 69,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16,194, +140, 98,181,225,148, 23, 93,163, 89,107, 53,214,186,147, 33,113,207,139, 32, 14, +228,228,150,169,181,161, 62,207, 67,125, 54,158, 13,138,138,226, 84,239, 21,166, +213,235,108, 46, 54, 22, 21,136, 83,145, 53,150,213,214, 62, 40,181, 44,134, 57, + 27,206, 61, 88,222, 53,231,222,243, 69,111,198,125, 11,158,171, 4,133, 92,171, +189,166,248, 10,204,205, 17, 48,165,128, 55,214,105, 87,165, 2, 31,206,243,128, +168, 15, 71, 66,102, 53,227, 75,179, 10,210,255,159, 76, 70, 66,214, 3,147, 73, +137, 38, 47,122,123,235,234, 51,152,128, 75,234, 44, 53,110,235,124, 81,205, 90, + 91, 8, 31,100, 40,157,115,226,166,105,154, 32,132,240,189,247,178,173,240, 85, + 59, 48, 16, 1, 76,209, 65,159, 13, 69, 61,104, 33,134,253, 80,142,185, 70, 19, + 29,243, 71,225, 1,117, 50,226,166,150, 60, 88, 50,133, 18, 18, 61, 3, 17,157, + 18,133, 80,106, 89,115,198,143, 68,207,232,101,123,174, 90,132, 98,128,107, 52, + 49, 70, 10,198, 5, 64,244, 92, 27,247,229, 64, 83,198, 7, 68,121, 34,198, 84, + 89, 80,175,242,192,146, 66, 66,242,232,218, 42,198, 24, 99,140, 1,129, 53,168, + 33, 93, 68, 35, 35, 35, 73, 65, 10, 82,105, 13, 17, 9, 49,136, 66,201,108, 30, +162,160, 32,151, 81, 28,130,160, 64, 10,144, 0, 33,100,196, 34,145,136, 68,154, +130,130, 74, 27,214, 16, 0, 57, 67, 49,141,123,136, 84, 60,225,163,214,162, 92, +229, 38, 22,167,144,252,213,251,111, 87, 28, 15, 1,241, 5,142, 33, 45, 10, 87, + 40, 15, 87,161,186,163,154, 4,242,119,101, 12,114, 22,243, 95,169, 34, 87, 48, + 24,201, 73, 77, 97, 73, 50,104, 37,128,230,218,191,210,110,106,199,210,156,150, + 64,161,165, 20, 78,228,108,107,124, 5, 52,231, 27, 37,198, 37,152,204, 26,154, +162,100,159,130,124,165,182, 26,192,194,205,241, 86, 89, 19, 25, 7,108,131, 63, +109,165,237,121,222,203,179, 76, 69, 58,209,151,124,163, 67,101,250,154,153,182, +246,160,110, 6, 50,189, 46,175,253,252, 44,128,215,243,225,255, 38, 0, 99,104, + 51,154,125,155,153, 43,140, 74, 83, 12,169, 84, 69, 85,190,147,242,115, 52,221, + 8, 80, 81, 82,121,127,201,146, 31, 18,254, 69, 86, 96,166, 16, 34,172, 62,163, +203, 99, 2, 64,136, 28, 71,112,163, 51,107,201, 36,119, 58,215, 93, 60,154,223, + 80,121,205,138,188,124, 39, 10,153, 94, 54,167,246,194, 77,233, 92,132, 37,232, +137,134,214,190, 34,147,238, 41, 39,246, 36, 27, 41,199,133,234, 8,227,177, 65, +150, 18,129,121,129,176, 64, 20,205, 10,236,228,118,208, 88, 49,206, 21,192,149, + 77, 14,217, 80, 72,107,145, 80, 14, 91, 89, 64,184, 10,254,169,205, 45,184, 0, +202, 59,150,241,196, 44,196, 46, 94,152,229, 22,191,185,130, 69,208, 92, 78,198, + 88,206,144,211,210,219, 97,139,194, 37, 11, 8,173,192,251,145, 5,145,130, 16, + 1, 32,194, 9,135, 77,213,155, 60,134,226, 46,153,109,187,147, 4, 56,207,179, + 66,172,186,153, 0, 23,229, 96, 20,101, 97, 49, 44,229,254,196,142,207,241,145, + 27,144,227,125, 72, 67, 51,168,106,168,216, 73,192,105,128, 94,235,219, 82,168, +196, 73,201, 98,255,225,201, 92,208,122,166,219,106, 25,245, 18,157, 40,211, 55, +102, 67,105,158,243, 33,171,242, 35, 10,129, 20,184,107,127,143,226, 99,121, 98, + 69, 26, 89,234,151,102,194, 31, 48, 81,128,244,233, 97,223,174,143, 72,106, 90, + 47,172,138,146, 69, 29, 49, 76,116,228, 5, 12,176, 64,233,160, 53, 28,179,187, + 29, 77,238,136,177,102,139, 82, 68, 25,185, 67,132,161, 64,153, 66,140, 45, 13, +199, 29, 17, 96,106, 26, 50, 65, 5,145, 36,133,118,185, 31, 79,251,176, 55,233, +209, 74,157, 14,103,194,253,200,156,108, 9,125,244,179,157,166,100,129,174,233, +206,143, 62, 3,103,152,126, 39, 3,144,162,165, 72, 86,163,135,245,163, 50, 39, + 53, 83, 69, 35, 41, 18,126,211,124,171,204,132,245,225,198, 61,228,120, 20,193, + 72,227, 36,165, 90,214, 9, } ; -// ../Source/JitKernels/GB_jit_kernel_emult_02.c: -uint8_t GB_JITpackage_172 [271] = { - 40,181, 47,253, 96, 97, 1, 45, 8, 0, 6,144, 55, 33, 16,241, 54,150, 46, 98, -178,161,216,199,117, 98,249, 20, 72, 21,123, 4,226,228,191,236, 72,132,112, 52, - 30, 51, 2, 0, 80, 5, 51, 45, 0, 46, 0, 46, 0, 26,171,158,212,222,200,253, -206, 37, 55, 93,103, 40, 30, 93, 1,181,136,132, 35,112,176,188,250,104,165,240, - 14, 75,204,227,240, 69,253, 23,188,179, 5, 95,204,167,105, 74,211, 20, 10, 8, -157,188, 70, 63,249,155,147, 27,172,228,205,195,208,122, 68,168, 84,149, 10, 3, -170, 58,244, 61, 30,145, 89,227, 41,156, 90,223,128, 59,131,201,157, 71,156,205, - 46, 56,122, 1, 16, 92, 41,220,101, 17,199,133,179,235,177, 93, 13,207,236,213, - 50, 12,119, 11, 6,190,216,164,104,149, 30,252,188,209,122,165, 63, 83,242, 22, -127,178,144,158, 20,255,203,153, 36, 9,115,118,166,193, 33,142,187, 44, 43,194, -225,171,177,199, 69, 93,238,215,128,143,254,246,194, 17,243, 27, 3,252, 39,101, -248,137, 57,224,238, 62, 57,211,224,208,227, 90,167,109, 1, 12, 0, 73, 69,206, - 46, 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, - 91,205, 21, 6, 49,255,124,181,162,192, 13, +// ../Source/Template/GB_emult_08_template.c: +uint8_t GB_JITpackage_168 [2007] = { + 40,181, 47,253, 96,211, 38,109, 62, 0,218, 66, 84, 12, 40,160, 86, 85, 29,212, +135,191, 16,232,230,237, 70,186,205, 81,153, 46,218, 99, 61,183,227,127,108,161, +150,166,253,193,178,209,186, 28, 47,199,139,242, 58,120, 6,183, 0,178, 0,191, + 0, 19,143, 96,153,223,117, 74,252,213,117,109,214, 90,212,175,243,184,231,205, +181, 31,178, 23,120,115,249, 56,215, 15,127, 34,207, 95,118, 42, 68, 27,103,237, +217,214,227,182,219,173, 76, 99,201,121,214,181, 15,184,243,231,117,246,170, 96, + 42,141,165, 57, 77,122,240,214,237, 25,154,185,246, 86, 97,105, 92, 91,155, 29, + 75, 71,132, 70,181,181,232, 54,238,141,227,204,133,204,141, 83, 10, 79, 29,104, + 48, 26,139, 66, 6,163,249,164, 73,167,240, 20,201,136, 87,240, 35, 46,219,110, +130, 78,125, 96, 39,114,158,188, 19,214,167,243,252, 62,149,219,222,136,187, 52, +190,210,195,199,243,215,107,115, 36,127,240, 0,252,218,123, 28,174, 83,177,160, +130,155,235, 86,103, 73,189,174, 51,182,128,193, 50,253,186,198,226,196, 47,151, +138,229,114, 9,248, 83,197, 46, 9,111,178, 47,151,177,238,171,180, 41,149,191, +236, 66,228,245, 4, 26,190,205, 92,231, 73, 87,123, 16,232,180,161,111,115, 93, +103, 89, 86,217,221, 3, 2,170,106, 39,158, 90,111,191, 54,244, 81,158,221,159, +191,218,100,103, 92,231, 23,142, 39,151, 71,244,222, 92,187,107,234,117,243,185, + 71, 12,199,158,123,207,173, 3, 76, 70,195,240, 83,250,133,184,144,144, 39,187, + 60,179,169,167, 77,203, 22,110,109,150,203,221, 73,213, 99, 65,117,248,205,101, + 57,167,145, 88, 74,109, 8, 84,191, 99,169,125, 55,227,186, 53,205,186,206, 94, +165,246,146,121,179,236, 94,231, 45,198, 40,251,246, 97, 75, 83,109, 4,221,135, +187, 79,123, 95,121,156,233,135,251,110, 85,158,106, 26, 82, 39,150,173, 77,138, +127, 3,159, 56,248, 11, 2,225,115,110,156,125,120,158,211, 38, 5,146,177, 84, + 85, 5,189,143,151, 64,106, 66,234,208,131,161,185,213,254,234,204,147,165,218, + 90,212, 28,104, 96, 0,100,228,227, 30,104,131,243,249,192,140,193,229, 85, 32, +255,229,137, 80,150,116,193,218, 24,117,121, 38, 85, 68,155,158,225,124, 32,133, + 6,168,195,225,225, 8,140,156,226, 46,233, 23, 70, 17, 39,190,185, 8,151, 71, + 40,145,141, 3,158, 34,108, 57,146,247,181,221,175,197, 87, 90,173, 49,237,148, +203, 87, 43,111,123,246,242, 39,210, 67,181,233,148,177,124,179,145,176,174, 51, +116,106,109,246,140, 37,109,168, 64, 62,158,241,236,128,190,121,198,119,134, 70, +158, 49,132,132,107,179, 55,175,134,123,203, 29, 98, 96,112,135,134, 99,190,145, + 50,148, 54, 59, 89, 71,155,212,244,219,154,211, 2,149, 74,202,230,215,116, 73, + 84, 98,215, 98, 24,158,152,199,115,193,179, 1,158,186,222, 32,208,184,155,203, +179, 61,215,180,193,209,240,160,224,124, 54,160,198, 7,251, 84, 96, 30, 26,160, + 85, 1,239,237,163, 90,109,141, 82,121,241,129, 30, 44, 3,163,195,193,216,224, + 92, 96,160, 10, 11, 41,186,196, 83, 68,117,103,199,221, 89,109,132,231,181,198, +183, 97,156, 14,163,236,117,125,177, 38, 41, 45, 92, 27, 55,127, 56,149,213,206, +236, 89,135, 24, 99, 22, 99,150,197, 24, 99,204, 98,140, 49,198, 24, 99,140, 49, +198, 24, 99,164,102,140, 49, 74, 58,125,130, 35,114, 34,182,222,142,130,242, 20, +239,212,172,192,252, 1,131, 19,111,178,113,237, 77,230, 43, 51,198,234,172, 80, +102, 12, 40,232, 65, 73,227,225,214, 69, 58, 29, 14, 12,136,217, 44,189, 98,125, +228, 16, 1,130, 28,168,242,211,146, 41,166, 68, 2, 17, 73,146, 20, 10,141, 1, + 18, 41,132,225, 88,162, 75, 73,183, 30,194,208, 32,141, 82, 24, 69, 40, 33, 68, + 64, 8, 35, 70, 48, 68, 68, 2, 17, 17,145, 72, 70, 68,226, 54, 17,130,164,197, +182,136, 32,101, 25,125,169,170,105,114,197,117, 82,179, 78,253,201,110,179,160, +129, 43, 1,193,139, 46,163,195, 24, 76,221,104,216,149,111,255, 9,245, 96,122, + 91, 26,106,237,230,108,129, 67,183, 89, 26,163, 42,181, 32, 41,236,255, 44,210, +184, 47,185, 56,171, 21,250, 8, 50,224,201,183, 83,237, 65, 87,191,232,199,170, + 37,193,221,118,211,116,220, 38,240,175, 29, 0,102,249, 75, 72,179,253, 6,122, + 53, 40,233,206, 74, 52,204,127, 9, 72,252,144,222, 86,179,192,133,202,159,202, +224,218,243,178, 70, 66,248,202, 67, 50, 85,132, 46,174, 60, 55,156, 68, 22, 52, +132,134,107, 54,218,223,216,123, 83,126,176,112,103,130,221,224,213,175,107,161, + 48,249, 93,193, 86,255,224, 74, 97,228,220, 96,134,104,202,212, 78,151,169, 78, + 89,144,130, 72,250, 15,185, 7,127, 81, 54, 77, 40, 12,160,209, 68,115, 71,175, +243,167,228,212, 77,185, 11,173,102,243, 42, 3,146, 25,152, 54, 45,135, 82,255, +140, 78, 89,111,166, 43, 4,229,116,204,213,120,161,197,159,159,142,141, 38,152, + 22,166,174, 27, 88, 14,223,229,210,238,137, 99, 19,214, 37,126,227,138, 64, 97, + 67,132,203,162, 73, 77,141,200, 79,120, 6,148,238, 75,108,245, 67, 90,131,140, + 72,189,121,218, 8, 38, 24,233,247, 19,143,118,236, 56,121, 45, 50,163,158,218, +167,237,247,212,182,171,237,242, 45, 87, 57, 20,112, 50,145,167,119, 40,231,245, +172,241,154,222,168,189,134,165,189, 56, 59,191,248,251, 51,245,246,150,162,215, +217, 9,213,163,141,207,199, 88, 61, 58,140,210,181, 48,129, 72,217, 33,166,164, +147, 20, 35,160,251, 32,175, 9, 3, 54, 51,196,120,148, 9,131,217, 78, 61, 16, +186,221,176,101,162,198,182, 3, 79,153, 29,127, 37,235, 10, 65, 57, 26, 43, 75, + 80, 77,105,181,249,133, 88,155,176,182,207,140,134,132, 7,179, 49, 87, 89, 39, +115,175,100,124, 71,137, 31, 41, 24,154, 87,121,255, 31,226,212,251,211, 94,107, + 13, 10, 10,127, 50, 3,200,213, 53,216,225,188,243, 5,212,221, 6, 58,237,125, + 26,254,236,121,255, 7,144, 43, 18,189,139,234,249, 6, 20,219, 82,190,100,255, +158,127,213, 76,167,221, 20, 14,247,138, 17,213, 0,236,217,109,220,220,174,163, +221,173, 91,222,244,193, 81, 91, 25, 34,198,136,220,112, 34,230, 57, 2,192, 10, +180,179,125,240, 39, 92,125,215, 32,193,165,146, 93,190, 78, 28, 54, 57, 41,203, +190, 66,230,145, 46,127, 65,105, 73,106,249, 86,187,229,119,106,198, 77,166,168, +145,187,180, 82,230, 13,208,107, 91,252,145, 36, 6,250,225, 5,192,182, 70,109, + 94, 1, 92,191,141, 32,114,227, 94, 49,110, 22, 32,147, 14, 18,207,140, 49,168, +145,225, 94, 11,196,119, 71,213, 10,177, 39,244,145, 51, 48,217,181,175,183,121, +101,227, 54,169,247,103,206,135,138, 0, 30, 8,172,102, 12,242,213, 3, 25, 66, +118, 25,142, 68,139,133,237, 50,204, 64,240, 23, 7, 58, 9,226,190,167, 28, 86, + 4, 40,239,144, 64, 77,181, 57, 79,168, 84,205,252, 77,193, 45,170, 93,174,101, +252, 82,139,237,168, 4, 71, 64,163,203,130, 63,168,229, 44, 63,147,142,253,218, +217, 62, 54,224, 22,175, 13,139,220, 24,183,216,127, 90,123,172,233, 53, 7,104, +114,202,171,143, 37, 54, 84,142, 85, 1,148,239,253, 21,125,129,224,133,101, 96, + 52,237, 40,195, 7,186,145,132,115,159, 36, 36, 9, 88, 3, 17,214, 27, 12,174, +144,239,199, 50, 9, 35,196, 30,142, 33, 74,145,181,153,113, 68,224,140,255, 11, +197,132,120, 52, 43,209, 29,231,167,139, 79, 70, 96, 53,217, 4,190,216, 96,153, + 34,101,184,173,170,169,202,124, 65,196, 39,215,255,161, 62, 15,177, 69, 85,187, +255,219,200,165,168,218,179, 72, 95, 27,169, 44, 8, 76, 38,220, 78, 23,164,223, +134, 16,136,107, 18, 47,120, 37,235,154,135,132,253,141,172,186,234,215,124,112, +179,196,101,128, 3,181,229,139,232, 71, 16,213,147, 66, 83,220, 46, 47,202,216, +226, 4, 17, 79, 31,188,233, 63,162, 67, 60,200, 20, 75, 69, 87, 95,223, 39, 43, + 8,245, 76, 27, 51, 46, 41,201,167,175, 25, 12,161, 51,137,251, 27,225, 81,164, + 17,178,165,217, 0, 55,183, 88,160,172,198,138,115, 27,110,176, 96,201,100,233, +200,122,101,204,208,169,226, 89,235, 92,241, 21,177,221,163,213,135, 57,220,212, +218,165, 93, 12,159, 12,105,239,205,113,242,104, 34,195,152,106, 36,114, 78,126, +138,132,183, 48,204,207,174, 5, 82, 76, 47,135, 42,221, 9,206, 20,244,152,148, + 85,192,148, 80,223, 63, 83,188,236,171,227,144, 63,228,128,238,228,136,164, 61, +138, 97, 65,167,179,156, 8,241,116,227,241, 13,255, 72, 88,245,114, 35,185,193, +178,213, 55,106,119,151,219,170, 42,146, 48, 33, 57, 8,130,149,177,115, 5,155, +224,175, 91, 77, 3,128,143,192, 29, 0, 56,196,217,166,142, 38, 39, 96, 76, 64, + 29,101,132,193, 31,167, 11, 12,140,113,118, 1, 3,109, 2,205,168,160,147, 2, +152,121, 39,205,233,252,222, 24,247, 74, 99,203, 74,179, 71,128,245,152,170, 10, +202,104, 9,134,150,150,125,211,132, 31,130,137,213, 84, 78,135, 97,197, 57,116, +105,164, 73, 90, 43, 24, 80, } ; -// ../Source/JitKernels/GB_jit_kernel_emult_03.c: -uint8_t GB_JITpackage_173 [270] = { - 40,181, 47,253, 96, 97, 1, 37, 8, 0, 6, 80, 55, 33, 16,241, 54,150, 46, 98, -178,161,216,199,117, 66,237,117, 72, 18,123,164,226,228,191,172, 55, 34, 28,141, -199,140, 0, 0, 84,193, 12, 45, 0, 46, 0, 46, 0, 58,179,222,212, 95,217,253, -206,103, 71, 93, 95, 36, 14, 93, 65,181, 7, 68, 35, 96,184,220, 2,107, 53,225, - 61,158,150,199,227,147,250, 43,120,103, 10,190,153, 75, 18,141, 36, 41,137, 71, - 13, 31,163,223,124,206,205, 45, 78, 50,231,227,104, 29,170,168,137,138, 8,131, -137,242, 7,116, 28, 50, 51,230, 75,120,181,158, 17,247,197,146, 61,135, 58,171, - 93,177,252, 2, 15, 92, 77,216,211, 32, 13, 12,107,152,131,195, 24,174,217,187, -105, 25,246, 20, 11,124, 51, 58, 85, 42,122, 17,252, 74,235,150,254, 44,201,155, -252, 80, 17,189, 73, 62,152,181, 40, 18,148,110,104,193,159,174,195,174, 11,210, -225,171, 51,199, 73,125,238,215, 0,176,254,254,198,210,242, 27, 3,252,195,115, - 4,201, 28,112,119,167, 26, 90,240,199,241,205,219,184, 12, 0, 73, 69,206, 46, - 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, 91, -205, 21, 6, 49,255,124,181,162,192, 13, -} ; +// ../Source/Template/GB_emult_08bcd.c: +uint8_t GB_JITpackage_169 [880] = { + 40,181, 47,253, 96,167, 17, 53, 27, 0, 70,165,113, 40,208,178, 76, 7,170, 74, + 60, 27,241,138, 66, 80,142,246, 52,176,161,226,149, 76,119, 83,164,160,213,152, +138,113, 25,152, 81,162,242, 5,190,120,144,165,230, 5,106, 0,100, 0,102, 0, + 91,102,154, 33,157, 90,107,166, 9, 5, 8,201, 54, 53,192, 25,206,205,195,202, + 93,244,230, 93,183,143, 4, 21, 74,101, 58, 24,160, 84, 46,105,209, 99,216, 26, + 82,225,146,125, 7, 87, 61, 79,115, 30,175,213, 48,247, 73,112,225,114,205,218, +159, 11, 2,231,215,193, 77,102, 8,202, 47,124,215,201, 79, 80,158,191, 81,249, +184,143,213, 49, 44, 32, 89,170,250,101,211, 50, 11, 5,171,221,199, 51, 49, 94, +248,100, 2, 77,147, 73, 7,183,115,218,199,243,176, 47, 97,196, 75,180,217, 5, + 94, 33,120,194, 61, 40,134,140,222,105,102,204,165,131,128, 96, 97, 99, 27,157, +179,177,174,107,207, 85, 47,147,192, 89,101,247,134, 71,139,100,249,197, 19, 73, +126,190,128,228,123,234, 85, 70, 40, 61,247,232,227,169, 87,191, 72, 91,212, 98, + 22, 89, 54,143,171,179,225,255, 15, 65, 31, 16, 69, 82,153, 38,167,201,111,127, + 1,103,119,186,210, 25,153,206,220, 40,230,125,234, 22, 85, 37, 85,213, 55,195, +110, 98, 30,137,104, 31, 56, 69,221,186,150, 1, 2,179, 80, 48,142, 38,162,193, + 2,224, 61,213,209,171,127, 72, 49,198,222,199,142,206, 80,109,214,186, 48,138, +205, 58,100,120,163,159,206,243,178,129, 79,251,157, 58,248,209,126,119,199,130, +191,138, 55,159,122,191, 98, 5, 6,149,246, 71, 36,178,209,137, 33,156,191, 99, + 30, 29,244, 58,124, 42,185, 26, 16, 20,194,204,203,219,141, 57,191,122,244,245, +147, 61,172, 97,115,204,229,110,222,128,128,232,179,107,110,163,227,157, 74, 45, +252,244,116,157, 64, 57,105,119, 29,181,185,250,250,241,178,221,152,153,119,119, +119, 89,147,217,161, 10, 20, 18,137, 84, 95,167, 55, 58, 1, 30,251,177,170,162, + 67, 60, 88, 87, 70,194, 98,206,162,179,199,177,143, 28,107, 1,163,101,244,181, + 54,171,169, 44,133,135, 43,128,180,160, 65, 69,198,148,136,136, 36, 41, 73, 74, +195, 1, 80,132,204,144, 21,113, 3,121, 64,149,237, 92,181, 82,245,164,138,237, + 81,102,209,164, 30, 62, 73,237,124, 79, 40, 16,188,200, 58,206,109,239, 48, 2, +184, 72,128, 20,245,248,102, 97,148,124,214, 47,229,193, 53, 86,149,107, 11, 5, +252,237,133, 12, 22, 25,162,254,239,231,177, 50, 22, 89, 24,243,174,133, 16,105, +161, 17,141,146, 28,195, 10,121,149, 91,176, 81,175, 66, 57, 27, 66, 33,135, 63, +226,178,186,241, 9,222, 54, 0,110, 60, 56,193, 12, 21, 44, 5,168, 65,138, 19, +172,241, 4,137, 64,197, 36,108, 1, 24, 32,233, 8, 9, 49,203,160, 11, 80, 40, + 6,119, 99,244,251,150, 98, 33,119,201,143, 33, 54, 30,143,244, 60,138,217,208, +253,130, 90, 33, 19, 28, 50,208,195, 22, 24, 1,241, 96,112,102,176,180, 73,186, +117,219,156, 79, 69, 13, 15, 31,122,161,190, 7,180, 70, 70,203,218, 12,106, 65, +105, 26, 81, 25, 86,224, 9,130, 88, 35,232, 87,227, 42,143, 95,230,109,229, 1, +133,180,211,217,244,192, 58,109,234,160, 99,205, 98, 53, 46,169,176,210, 51, 8, + 30, 42,158,140, 83, 55,174,123, 75,184,216, 45,153,215, 89,160, 42, 10,196,151, +209, 68, 64, 27,155,220,161, 55,138,173, 21,251, 69,101,246, 69, 96,235, 76, 86, + 44,230,112,182, 26,220,202,114,124,251, 32, 64,130,194, 9, 20, 18, 28,133,135, +181,129, 5,246, 99, 36, 45, 1,113,172,231,217,214, 7,246, 5,182, 94,255,200, +178,179, 62,147, 29,228, 13,127,228,248, 79,176,164, 73, 33,101,161,217, 34,173, +107, 79,195, 28,250, 19, 69,251,160,215, 97, 30,110, 60, 42,102,176, 66, 13, 97, +140,195, 14, 76,184,156, 26, 49,107,202,191,194,196,137,231, 84, 44, 16, 93,161, + 28,164,104,208,236,252,193,116,171,212,136, 17, 7, 70, 59,196,168, 42,122,199, -// ../Source/JitKernels/GB_jit_kernel_emult_04.c: -uint8_t GB_JITpackage_174 [270] = { - 40,181, 47,253, 96, 97, 1, 37, 8, 0, 6, 80, 55, 33, 16,241, 54,150, 46, 98, -178,161,216,199,117, 66,237,117, 72, 18,123,164,226,228,191,188,160, 96, 56,160, -158, 25, 1, 0,168,130, 25, 45, 0, 46, 0, 46, 0, 58,179,222,212, 95,217,253, -206,103, 71, 93,103, 40, 30, 93, 65,181, 9,197, 35,128,184,220, 2,107,129,194, -123, 60, 49,143,199, 39,245, 95,240,206, 22,124, 51,159, 38, 42, 77, 83,139, 72, - 13, 95,163,223,124,206,205, 45, 86, 50,231,227,104, 61, 34, 84, 84, 37, 25, 6, - 84,229, 16,248,120,100,102,205,183,240,106,125, 35,238, 12, 38,123, 30,117, 86, -187, 98,249, 5, 17, 92,160,176,167, 73, 30, 24,214, 48, 8,135, 57, 92,179,119, -211, 50,236, 49, 26,248,102,148,170,149,244, 34,248,149,214, 45,253,153,146, 55, -249, 33, 67,122,147,124, 48,107,210, 36,148,118,232,193,161,174,195,174, 75,210, -225,171,179,199, 73,125,238,215, 0,176,254,254,198, 18,243, 27, 3,252,195,115, - 4,201, 28,112,119,167, 28,122,112,232,241,205,219,184, 12, 0, 73, 69,206, 46, - 2, 4, 96, 1, 8,105,244, 91,167,137,201,212,160,249,243,204, 20,109, 11, 91, -205, 21, 6, 49,255,124,181,162,192, 13, } ; -// ../Source/JitKernels/GB_jit_kernel_emult_08.c: -uint8_t GB_JITpackage_175 [260] = { - 40,181, 47,253, 96, 93, 1,213, 7, 0,194,207, 52, 33, 16,179, 30,150, 12,146, - 15, 40,128,167,156, 7, 17,206,188, 42,154,214, 21,219,173,231,187, 98,223, 46, -252,136, 0, 0,170,106, 6, 49,142, 98,194, 5,214, 98,141,134,197, 94,170, 51, -201, 63, 29,238,215, 0, 44,185,253,157, 11,240,199,132, 30,254,114,192,221, 61, -138, 98,194, 5,146, 83, 54,138, 86,185, 7,235,110,213, 34,193,110,197, 38, 26, - 22,241, 58, 41,165,102,119,123, 64, 46,205,162, 37, 47,234, 59,204,125,166, 35, -244,231, 76,222,223, 99, 30,212,131,223,227, 92,169,139,163, 34, 49, 15,210, 15, -190,230,224,238, 52, 89,115,207,155, 62, 21, 46,235,162, 12, 4,235,114, 1,150, -124, 2, 51,136,115,184,156, 30,234,182,167,147, 55,159,236,172,180,251,112, 58, - 67, 60,168,185,143,253,157, 67, 27, 93,123, 50, 62,209,129,156, 11,134, 36,160, -104, 56, 2,203,131,117,183, 23,118,254,122,255,233,231,220,157, 55,151,102, 94, - 85,145,170,170, 12, 0, 69, 5,207, 46, 34, 4, 96, 1, 8,105,244, 91,167,137, -201,212,160,249,243,204, 20,109, 11, 91,205, 21, 6, 49,255,124,181,162,192, 13, - +// ../Source/Template/GB_emult_08e.c: +uint8_t GB_JITpackage_170 [1262] = { + 40,181, 47,253, 96,243, 17, 37, 39, 0,214,118,162, 40,208,178, 58, 7,202,149, + 12,193, 35,114,204,232,169,106,199, 92,164,205,145, 83, 39, 52, 96, 95,254, 61, + 51,125,219,176, 6, 62, 98, 93, 70,169, 7, 94,160,148,152, 0,147, 0,151, 0, +249, 54,215,209,167,242,252,132,214,123,168,206,247,198,252, 94, 39,119, 25,115, +237, 79,131,247, 99,185,103, 91,143,233,177,191,218, 34, 74,101,145,244,199,205, + 27,127, 9,155,122, 52,215,238, 52,146,198,181, 57,186,145, 80, 48, 68, 84, 93, +111,132,141,155,115,156, 63, 12,202, 57, 8,198, 83, 3, 22,138, 69, 98, 80,161, + 88, 62,113,210, 41, 76, 55, 38,195,171,248,208,151,237,135,118, 78,101,113, 35, +191, 59,195,134, 75,214,153,130,178, 40,236, 27,250, 38,141,195,121,241, 59,156, +199,222,213,249,235,181, 63,142, 75,129, 42, 90, 10, 88,194,245, 75, 31, 80,180, + 12,130, 62,173,201,134, 79, 38,145,100, 50, 9, 28,167, 46, 42,146,170,170,176, +107,241, 14,140,162,216,171, 61,238, 60,195,190,246,127,252,135, 7,207,172,117, +165,158,116,175,171,173, 97, 94,145,220, 58,118,159, 53,130,130, 92,233,148, 65, + 93, 36,236,185, 49, 48,147,148, 7, 1,209, 48,213,162,244, 14, 39,147,101, 50, + 62,236,170,155,157,113,165,159, 46, 44, 21,138, 69,227,249, 93, 77, 58, 56, 70, +165, 24,116, 12,125,238, 80,135, 19,225,120,128, 82,249, 65, 16,228, 89, 16,238, +252,100,186, 77, 7,191,124,164, 95, 94,160,122,252,175,135,246,151,169,165,131, +206,126,185,177,255,127, 20,125, 68, 17,166,239,106,159,241,108,240,121, 62, 30, +107,193,123, 56, 10,210,120, 83,199,244,177,113,237,110,118, 21,100,189, 25, 49, +111, 80,165,185, 90,238, 19,192,212, 30, 20,127, 58, 58, 89,188, 48, 45,131,126, + 14, 90,187,221, 83, 84, 67, 47, 35,141, 68, 18, 48,151,142,177, 13,185,249, 76, + 67, 42,145,169, 54,184,113,138,186,152, 20, 33, 27, 40, 23, 30,139, 95,158,241, +133, 79,150,102,179,118, 73,158,205, 70,226, 33,180,167,166,208,181,220, 57, 44, + 8,206, 15,127, 74,199,243,253,153,248,250,176, 91,214,191,203,211, 24,236, 16, +204, 47, 58,106,241,140,233,166,115, 11,187,161,205, 92,111,188,191,124,207, 62, + 55,222, 64,248, 19,211,127, 28,253, 2, 81, 20,210,218,117,175,107,241,104,192, + 41,122,234,186,164, 71, 64,100, 50,205, 68, 70,202,205,118,196, 83,157, 76, 3, +134, 78,233, 49,195,137,155, 43,195, 16, 65,100, 26,175,187,138, 57,189,245,139, +235, 90,156, 94,152, 71, 34, 30, 53,131,123, 37,147, 69,135,136,206, 70, 2,203, + 4,252,214, 47,233,114,219,182, 83, 82,202, 77, 74, 41,165,203, 77, 90,151, 87, +102,174, 67,218,201,109,147, 19,189,101, 73,143, 20, 69,227,239,112,113, 98, 38, +211, 42, 56,241, 65, 35, 43,151,132,119,126, 92, 56, 27, 63, 20,206, 74,183,137, +218,162,244,168,201,140, 67,234,105,145, 94,114,250,200,115, 56, 51,214,172,199, + 11, 10,129, 11,168, 49, 61, 99, 74, 70, 68, 36, 72, 10, 10,146, 66, 58,161, 12, + 49,200,121,233,212, 3,210,112,100, 16,135, 16,133, 16,101, 68, 64, 8, 34, 34, +145, 72, 32, 18,137, 68, 34, 34, 35,217, 6, 20, 8,235,228, 78, 84, 67,213,111, +105,176,231,121, 83,120,136,179,192,131,241,191, 84, 28, 75, 24,243,210, 34, 56, +120, 35,214, 8, 49,218,150,155,133, 82,185,206, 30,211,128, 87,156,245,177, 94, + 40,146,251,150,192,107,142,208,128,249,215, 41,227, 9, 27,228,183, 49, 72, 59, + 97,127,153,218, 24,142,221,116, 29,118, 38,106, 22, 2, 43,239,205,235, 94,164, + 35, 10,159,211,126,114,148,200, 64,186,253,234,124, 64, 85, 37,223, 15,168, 20, + 70,125, 44,141, 20,165,175,205, 2,113,158, 56, 20,159,254,200,202,164, 44,237, + 82, 23,224,125, 43, 43,216, 82,194, 40,214,189, 95, 87,116,189, 16, 6,245,205, +181,147,136, 36,205, 41,173, 76,211,198,124, 72, 35,103,198,168, 27,149, 43,211, + 72,189, 2,131,119,150,191,214,191,220, 3,239, 4,174,183, 40,186,193,229,226, +206,173, 78,158, 95,159,118,147, 94,134,202, 59, 6,159,205,103,126, 55,255, 41, +252, 27, 21, 15,120,127,167,251, 26, 11, 34, 23, 35, 4, 8,191,129, 0,207,158, +209, 3,249, 36,252, 24,211,188,219,217,106, 66, 91,182,129, 54,226,226,236, 94, + 6, 56,109,120, 64, 70,121, 28,176, 18, 63, 52, 78,176,208, 33, 81, 85, 37, 0, + 55,245,162,207,160,128,122, 0,219,141,230,157, 80,236,190,109,173,203, 98,218, +133,167, 51,218,209,145, 7,121,141,214,222, 92,196,141,134,234,218, 70, 58,176, + 9,141,144, 75,208, 39,179,208,239, 66,154, 90, 86,147,238, 6, 98,246, 73,203, +238,199,103,230,190, 92,124,190,175,101, 76,114,194,248,154,230,221, 89,184,108, + 65, 53,122,194, 32, 56,116, 8,241,126, 98,162, 17, 55,232,179,141,132,252,109, + 58,240,120, 24,116, 46,183,241,197, 56, 42,183, 43, 34, 14, 41, 1,130,221,190, +145, 73,109,124, 48, 18, 27,174,145,117, 46,145,155,233,237, 90,115,207,196,104, +112,236, 60, 34,108,196, 89, 6,207, 65, 48, 96, 95,192, 77, 23, 69,189,109,235, + 42,112, 51, 55,138, 15, 46, 94, 64,176, 53,236,101,222,123,136,150, 73,179,163, +188,181, 36,118,225, 89,153, 64,105,166, 31,179, 21,138,254, 66,226,164,172,238, +164,213,110, 66,191, 59,203,232,131,199, 57,212, 22,167,212,158,188, 71,194,207, + 22,108, 45,123, 88,193,132, 26,161,107,135,188, 38,146, 36,125,170,233,103, 32, +249,252, 24, 57, 65, 30,241,228, 42,247,138, 10,142,222,223,195,173, 39,144, 13, +144,182,157,243,219,164,233, 84, 48,117, 85,227, 56,168,130,122,131, 65,117,103, +137, 1, } ; -// ../Source/JitKernels/GB_jit_kernel_emult_bitmap.c: -uint8_t GB_JITpackage_176 [357] = { - 40,181, 47,253, 96, 43, 2,221, 10, 0, 54, 85, 70, 33, 16,211, 54, 54,143,197, -236,180,158,161,201,197, 46, 64,213, 60,231,253,228, 40,221, 90,184,113,228, 93, -141, 17, 1, 0,168,170, 25, 60, 0, 61, 0, 62, 0,254, 1, 55, 39,196,157, 71, -156,149, 81,112,180, 26, 75, 60,169,237,200,253,198, 37, 55, 93,115, 62,143, 40, - 97,178, 24, 13, 45,176,112,120,226, 78,163, 13, 55,198,212,157,203,240,107,126, - 81,255,166,110,172,169, 20,115,138,154, 18, 69, 5,144, 72,165,216, 44, 76,149, -244,224,181,163,229, 9,253,248,195, 91,124, 15, 34, 61, 41,254,197,153,116,121, - 84, 38,239, 59,250,201,223,156,220, 96, 6,111,158,179,229,209,161, 42, 84, 18, -194, 80,168,124,112, 5, 30,145,184, 99, 31, 62, 89, 1, 24, 41,114,240,190, 98, -249,249,230, 90, 76,206,246,250,254,140, 83,212,165, 65,186,137,101,251,222,251, -112,192,221,125,130,166,194, 7, 2,167,116,148,173, 82, 43,150,214, 65,104,237, - 50,139,118,213,236,154,108,151,196, 51,139, 82, 50,172,118, 1,115,134,166,194, - 7, 28,119, 57, 28, 22,174, 82,141, 9, 92,212,229,126, 13,184,211,111,155,199, -240,119,165, 24,192,223, 43,243, 21,231,135, 61,241, 21,222,144,234, 39,244,201, -240,175,126,230,128,158,170,127,111,123,201,170, 85, 26, 22, 0, 77, 9,169,146, - 28,148,179, 92, 90, 54,136, 71, 16,160,176,184, 11,111,224, 92,226,199,134,115, -234, 90, 65, 9,238,185, 91,128,196, 39,129,210, 88,145,158, 49, 38, 83,131,230, -207, 51, 83,180, 77,108, 53,151, 24,148,201, 80,220, 86, 20,184, 1, +// ../Source/Template/GB_emult_08fgh.c: +uint8_t GB_JITpackage_171 [1042] = { + 40,181, 47,253, 96,138, 23, 69, 32, 0,118,106,128, 40,192,208,108, 14,250, 15, +102,178, 22, 0, 46,115,129, 27,201,246,137, 6,220, 83, 23, 35,141, 23, 77, 70, +115,173,179,168, 11,132, 43, 96,154, 4,129, 52,201, 65,123, 0,112, 0,117, 0, + 34,253,110,107, 87, 84,153, 88, 36,181,243, 80,145,143, 25,107,115,125,193,186, +105, 36,213,130,213,211, 27, 73,132,130,195,100,171, 22, 99,181,149,115,123,187, + 79,115,238,121,124, 57, 96,169, 88, 36, 6, 2, 21,203, 39,143,116,105,219,130, + 42,124,194,207,232,110,248,117,231, 18,227,205,236, 68, 58,102, 48, 88,189, 29, +194,162,177,138, 25, 29,165,218,145,138,246,182, 95, 29,172,221,197, 39,100,194, + 84,194, 21,128, 80, 29,211,125,184, 75, 37,187, 94,232,171,217,204,156, 66,137, + 36, 20, 74,151,162,235,114, 30,164,221,253,184,189,243,132,190, 79, 32,137,145, + 88, 59,228,150,129, 39, 92, 3, 4, 81,233, 28, 88, 61,139, 67, 14, 58,245, 59, +210,107,179, 75,252,205, 8, 10, 46,216,115, 30,124, 58, 7, 71,102, 59, 99,233, + 29,142,133, 97,255,116, 57,230,147,254,207, 67, 38,231,191, 2, 8, 17,170,143, +181,187, 93,185,203,143,225, 49, 19, 39, 93, 42, 91,216,221,122,253,255,163,104, + 35,210, 94, 71,250,249, 13,164,231,127,226,121, 33,142, 18,145,136,231, 2,167, +168, 91, 24, 47, 56,100,151, 74,214,217, 60, 92, 86,192,228, 83,127,245, 13, 41, + 89,188,108,190,108,233, 11, 21,135, 45, 44,147,224, 48,131,102,110, 96, 40,228, + 4, 46,225, 17,236,119,115, 0,147,248,133,158,172,194,210,107,170, 26,109,191, + 75,140, 14,198, 85,230,143,199,167, 75,188,212, 46,233, 87, 54,103,230,212, 65, +253,221, 11, 67,173, 31,161, 14,146, 45, 93,191,245, 67, 49,197,137,247, 60,245, +126, 36,178,129, 53,155,226, 17, 62,197, 31, 4, 81,212, 49,185, 91,154, 60,185, +155,197,249, 27,130,191, 33,237,246,218,198,168,231,207,238,201,143,135,244,234, +117,119,193,133, 7,169,199,190,126,125, 37, 35,173, 96,123,245,163,246, 55, 20, +106,220,205, 57, 39, 51, 51,243,252, 80, 45,178, 68, 81, 71, 36, 82,137, 92, 7, + 92,246,101, 85, 73,119,104,176, 48, 13,132, 53,167, 38,125,134, 24,124,217,177, + 50,160,166,210,217,226,240,166,178, 20, 26, 48, 13, 87, 55,144, 58, 69, 85, 85, +149, 88,173, 87, 15, 30,128,223,168, 81, 65, 67, 36, 34, 34, 34, 82,144,164, 32, + 25, 14,112, 68,100,136,140,230, 1,130,152, 76,200, 50, 8,134, 80, 12,103,132, + 72,160,140, 49, 2,137, 17, 17, 9, 70,100, 68,210,169,198, 37,176,133,203, 3, +168,192, 70,245,101,183,237,240, 3, 98,166,207,222,232,215, 11,207,213, 91,121, +122, 27,175,220, 29, 56,153,116,130,201,250,195, 55,199, 81,214, 60, 57,145,177, + 24, 39, 64,210,134, 45,252,228,213, 51,129,148, 76, 38,140,235, 91,205, 71, 37, + 68, 82,155, 96, 25,182,244, 75, 49, 96,173, 92, 48,165,169,218,224, 58, 48,184, + 35,234, 47,146, 33,176,146,218, 9, 4,209, 99,182,129, 50, 29, 33,141,115, 54, + 59, 55,240, 77,213, 65, 99,228, 42,184, 42, 60,251,175, 55,220,210,196,138, 70, +213, 75,104, 45,116, 47,147,205, 7,213,107, 28,180,191,228,187,171, 25,161,210, + 0,239,251, 1,128, 39, 8, 49,196,146, 69,195,184,133,207,109,147,127,166,165, +128,133,213, 13,140, 56,223, 72, 41, 10, 44,195, 73,211,207, 86, 59,207,211,203, + 18, 38, 35, 28, 84, 24, 57,125, 89, 75,108,103,146,113,172,122,129, 4,230, 61, +212,149, 34,150,119, 75,223,222,122,215,122,167,178,104, 0, 57, 96,127,254, 41, + 25,111, 31,144,217,197,214, 84,133,218,187,230, 6, 88,178,199, 21,127, 90,216, +226, 49, 52,173,147, 27,176,253,122,223,151, 13,168,189, 70, 20,106, 3, 48,162, + 79, 18,135,129, 10, 54,111, 37,204, 17,251, 81, 87, 9,214, 38, 16, 60,246,197, +222,206,186,153,150, 95, 52,133,132, 68,122,234, 49,224,112,115, 56,180, 33, 37, +231, 84,192, 70, 83,164, 80, 77, 68, 34, 80,119,177, 72, 69,165, 76,104, 81,141, +160, 89,160,196,176,178, 3,117,233,103,190, 71, 23,210,184,246,206, 17, 81,235, + 66, 64, 59, 18, 25, 18, 3, 80,214, 31,177,117, 4,160,155,169,214,198,214, 68, +202,230, 83,131,228, 59, 58,201,126,230,182,198,145,251, 50,236, 61,185,213,211, + 17, 40, 11,170, 22,173,157, 82,120, 8,159, 11,222, 60, 59, 39, 60,241, 95, 33, + 2,155,209,202,147,166,120, 59,208, 98,137,177, 44,211, 60,212,243,131,174,134, + 17,112,161,244, 71,106, 10, 28, 68, 66,118,246, 82, 64, 32, 35,199,167, 98,217, +211, 59,154, 68,230, 77,243,254,193, 4,175, 84,145,162,168, 48, 79, 92, 74,133, +211, 9, } ; -// ../Source/JitKernels/GB_jit_kernel_ewise_fulla.c: -uint8_t GB_JITpackage_177 [265] = { - 40,181, 47,253, 96, 93, 1,253, 7, 0, 6, 16, 55, 33, 0,211, 60,126,207, 18, - 79, 68,206,199, 8,120,213,221,164, 10,182,185,135, 42,204,252, 29, 70,160,120, -108,150,254,223,235, 67, 8, 44, 0, 46, 0, 46, 0,149,126, 97,167, 55,236, 69, -221,133,246, 55, 30,173,164,130,233, 7,129,103,142,121, 84,151,243, 88,185, 47, - 98,206,223,252,160,126,204,221,248,114,233,230, 85, 37,167,170, 10, 30,174,211, - 4,241,160, 40,191,209, 47, 62,231,226,254, 44,152,243,156,167, 75,132,203,186, -166,194,192,186, 60,242, 32,151, 68,188,233, 16, 78, 77,239,124, 91,147,193, 16, -151,236, 12, 14,238,113,103,173,145,196,213,172, 66,162,221,170, 53, 56,141,225, -117, 82, 71,221, 46, 68,177,184,116,147, 22,117, 77,255,121, 93, 56, 29,211,143, - 43,120,131, 79, 81, 76, 47,130, 31, 82,126,164,193, 35,107,181, 44,139,216, 75, -245, 6, 57,168,199,253, 26,224, 81,191,187, 28,102,126, 95,186, 1,252, 41, 99, -246, 64, 28,112,119,151, 30,105,240, 8,114, 7, 36, 10, 0, 76,133, 20,121,185, -176, 33, 36, 39,221, 58,120, 76,166, 6,205,159,103,166,104,243, 99,181,242, 62, -160, 69, 81,224, 6, +// ../Source/Template/GB_emult_bitmap_5.c: +uint8_t GB_JITpackage_172 [637] = { + 40,181, 47,253, 96,134, 6,157, 19, 0,134, 32,100, 39,224,206,234, 24,248, 48, +200, 37,132,178, 11, 64, 89,156,115,100,135,226,231,150, 41, 46,131,209,231, 98, +230,235, 86, 12,130,177, 72, 25,204, 48, 76,243,112, 90, 0, 85, 0, 88, 0,159, + 92,117,213, 92,111, 14,194,106,222,117,242,145, 0,242,128, 52, 14, 6, 30,144, + 71, 25,124,212,246, 67, 39,159,228, 41,184,253,121,150,243,184,145,150,201, 97, +154, 41, 84,213,153,226, 77,221,214,179,129,166,125,171,174, 25,127,127,247,242, +120,109,111, 93, 50, 5, 38,249,234,214,169, 8,134,169,183,109, 7,219,157,199, +171,216,164,220,225,128, 26, 14, 71, 93,237, 58,154, 41, 62,246,190, 83, 15,130, +102,204,144, 92,179,251,251,218, 63,138,156,242,224,244,121,129,233,242,213, 45, + 42,162,125,220,174,151,255, 63, 4, 89, 64,151,127,234, 58,207,246,252,189,102, +250,121,237,210,203,127,130, 30, 19,164, 81,185,140, 98,121, 42, 87,187,217,125, +171, 86,105, 84,125,107,102, 45, 13,134, 73,102,210,106,240, 18,155,147, 2,191, + 33, 28, 95,242,234,143,177,226,102,240, 9,152, 10,167,194,209,200, 12, 54, 41, +152,132,166,251, 81,187, 21, 63,238, 76,183,198,223, 88,129,129,133, 36, 29, 65, +242,199, 43,168, 59,250,185, 25, 37,193,251,217,157,229, 67, 14,143, 50,187,233, +214,176,118, 30,173,114,153,126,116, 49, 11,106,141,214,204,109,204,243,220,231, +111,123, 16,116, 81, 73,135, 46, 36,105,224,213, 31,112,195, 59,214,102,181, 91, + 25,142, 91,187,207, 1,142, 45,248, 12,230,218, 84, 22,174, 57, 59,240,243,211, + 22,147,143,248,113, 66, 62,114, 46, 74,132,165,240,242,210, 72,139,117, 77, 56, + 22,133,203,133, 97, 54,149,173,106,119,179,140,121, 73,190,122, 20, 17, 45,188, +245, 8,199,206,132,159, 15, 8,120,132, 31, 59, 50, 98,160,161,153, 84, 70, 68, +102, 68, 36, 70, 73,161, 49, 80,132, 76,217,221, 6, 73,177, 25, 92, 31,239,100, + 80,243, 48,104, 87, 73,184,248,202,139,212,185, 81,186, 46,169, 5,128,211,120, +123, 31,176,112, 72, 17, 96,208,178,103, 84,239, 70,222, 30, 27, 56,122, 81,111, + 3,174, 29, 17, 77, 60,129, 50,179, 14, 55,213,204,183, 50, 11,110,224, 59,120, + 22, 66, 53, 95,180, 86,150, 79,244,184, 37, 28,136,227,206,233,171, 41,183,255, +166,167, 89,165, 91,158, 41,153,235,147,198, 65,248,192,138,220,168, 25, 10, 51, + 71,174,174, 13,160,201,238, 34, 45, 80,215,107,248,129, 4,147, 83, 88,169,226, + 54, 98,225, 2,162, 43, 56,198, 75, 2, 18, 72,135,134,171,214,158,122,175,115, +113,139,116, 46,131, 61, 26, 8, 96, 28,219, 24,185,172,107,129, 53, 6,188, 94, + 16, 40, 2,159,144,218, 5,169, 9, 20,226,154, 60,216,238,160,113,221,164,201, +252,204,164, 78, 97, 93,125, 98, 20,192, 18,205,197, 94,209,139, 7, } ; -// ../Source/JitKernels/GB_jit_kernel_ewise_fulln.c: -uint8_t GB_JITpackage_178 [257] = { - 40,181, 47,253, 96, 92, 1,189, 7, 0,242, 15, 53, 33, 16,241, 54, 54,220,197, - 4,107,254, 26,197, 9,229,213,172,201,232, 18,206,225, 55,234, 56,126,128, 67, - 61, 51, 2, 0, 80, 5, 51,115,118,166,193, 33,107,181, 44,123,216, 75,245,246, -184,168,203,253, 26, 0, 78,191,191, 60, 94,126, 95,186, 1,252, 37,101, 6, 69, - 28,112,119,159,156,105,112,232,241,206,209,121,141,203,168,245,145,184,154,229, - 32,218,173, 26,195,211, 22, 94, 49,218,213,237, 58, 56,197,165,219,172, 38, 75, -250, 16,252, 70,204, 47,253,120,130,183,248, 18, 78,122, 82,124, 16, 87, 41,130, -104, 76,146,207,232, 39,223,115,114,135, 20,236,121,206,152, 71, 4,171,178,164, -194,160,178, 28, 2, 31,143, 72,156,249, 16, 62, 97,190, 9, 55,230,130, 29, 30, - 89,172,210,112,252,244,118, 61,169,191,209,254,198,165,157, 84,128,249,193, 51, -191,192, 73,204,185,156,220, 39,177,230,111,126, 81,191,229,110, 92,185,116,115, -138,154, 18, 69, 5, 10, 0, 76,133,244,120,185,176, 33, 36,231,220, 58,120, 76, -166, 6,205,159,103,166,104,235, 99,181,113, 62,160, 69, 81,224, 6, +// ../Source/Template/GB_emult_bitmap_6.c: +uint8_t GB_JITpackage_173 [1043] = { + 40,181, 47,253, 96, 93, 11, 77, 32, 0,246,237,138, 40,192, 82,217, 28,170,114, +140,166,159,109,232,233, 21, 26,172,152,188, 17, 67, 88,219,119,154, 96, 98,207, +168,173, 90,104,215,205,159,126, 87, 81,168,174, 2, 16,128, 0,124, 0,125, 0, +225, 47, 97,122, 11,170, 72,150, 73,127,220, 20,169, 99,110, 83,143,102,219,157, +102,210,216, 54, 71, 55, 19, 9, 6,142,212,245,231, 54,238,206,113,254, 46,104, +231,181, 82,151, 6,150,138,101,130, 80, 80,177, 60,194, 69,151,152,126, 38,195, + 37,234, 29, 95, 14, 65,170, 93,102,212,166,250,196,121, 51,152,172, 51, 29, 51, + 72,170,117,244, 40,125,231,171,119,118,158,186,108,124,167,136,143, 93,222,186, +172, 8, 36,106, 90,192, 0, 20,172, 99, 46,155, 56,193, 76, 61, 91,174, 35,216, + 91,149, 57,133, 2, 77, 40,148,153,218,121,121, 59,231, 41, 90,250,108, 27,247, + 21, 49,197,222,183,191,141,177, 61,239,168, 54,188,157, 92, 69,125,122, 4, 67, +210,200,234, 92,156,137,134,131,128, 60,114,101, 29,138,147,109,153,102,203,192, + 51,225,145,205, 6,194,225, 19,192,177,232, 90,231,202, 50, 74,206,115,227,205, +216,218,254,242,101, 14,173,167,249,165,174,179,109,176,171, 8,134,220, 31,185, + 28, 3, 70,127, 69, 32, 81,183, 0, 46, 49,151, 46,252,114, 99,255,127, 8,250, +128, 32,233,182,216,241, 81, 48, 61,246,255, 6, 56,234, 58,118,253,113,216,138, + 54,112,180,191,161,247,218,181,206, 59,197,127,130, 23,243,138, 1, 29,205,183, + 16, 41, 78, 61,218,133,160,245, 75,150,214,138,109, 72, 51,197, 97,127,154, 84, + 48, 89,222, 99,157,159, 47,211,141, 75,143, 37,187,206,184, 19,188,237,246, 28, +207, 15,119,179,239,135,179,149, 23,150,114,180,246,134, 29,146,150, 77,187,178, +173,115,105, 26,101,101, 28, 10,211, 52,149,148, 86,244,174,225,183,177,109, 88, +149, 9,179,229,176, 20,222,246,120,152, 95,231,168,209,207,163, 39, 16, 20, 50, + 73, 48,157,222,184, 54, 20, 34,145, 20,220,163,157,237, 0,138,237,250,185,192, + 69, 43, 58,231,225,202, 52, 17, 87, 85,121, 66, 76, 55,241,146,131,186,212,174, + 76, 2,157, 87,135,218, 88, 23,131,182,129,192,174,237,193,235,206,122, 52,160, +186,228,175,162, 87, 31, 24,120, 68,188,244, 80,209,169,173,170, 50, 33,190,156, +162,123, 10, 23,167, 95, 74, 15,203, 69,119,120,208,104, 26, 45, 95,118,182,197, +203,124,197,231,237,224,242, 33,145, 92, 33,225,149, 79, 81, 4, 91, 14, 35,137, +184, 91,241, 8, 71,243,204, 1,128,213,168,161,157, 68, 37, 52, 35, 41, 51,201, +178, 6, 48,132, 24, 99,204,202, 3, 18,137, 80, 75,212, 12, 81,136, 64,129, 72, + 48, 1, 5, 34, 65,148, 36,101,165,212, 1, 73,219, 29,167,214, 75, 11, 44, 75, +136, 14, 94, 49, 31,123,192,154, 71, 68,123, 58, 34, 38,183, 31, 62,234, 67,139, + 68,220, 15,148,227,214,228,167, 69, 33, 61, 93,208, 21, 73, 97,190,195,196,150, +177,143, 73,213,190,234,248,226, 60,233, 24, 88,175,233,160,169, 31,167, 85,156, +135,112, 89, 4, 25, 7, 38,103, 56, 51, 19, 23,138,104, 13, 24, 64,231,218, 89, + 98,200, 58, 13, 22, 12, 26, 5,117,159, 72,146,125, 53, 0,172,254, 54,188,109, +242,233,168,175,140,117,212,125, 40,169,140,239,113, 23,175,218, 21,229, 52,195, +139, 28,179,199, 22, 62, 82, 90, 51, 41,125, 90, 62,249, 74,149,156,113, 40,207, +198,175,147,199,180, 11, 19,196,250, 66,237,142, 53, 98,102,194, 47, 45, 20, 47, +180, 0, 8,181, 61, 9,152, 87,194,252,213,163, 70,172,226, 19,148, 29, 1,179, +118,103,210,170,177, 59, 38, 80,188,254,145,198,155,216,108, 22,190,108, 47, 99, +147, 82, 93,214,164,130,214, 0, 24,118,205,181, 95,125,241,112,119, 76,130,205, +205,122,240,237,166, 40, 53, 98, 97, 35,152,137,209, 80, 29,176, 17,115, 98,221, +125,183, 33, 71, 3, 85, 87, 50,176,148,188, 41,233,178,217, 22,154,209,118, 38, + 45, 46, 59,154,146,191,228,133,189, 70,238,230,218,102, 50, 72, 90,224,185,144, +219, 9,186,202, 27,222,159,175, 58, 88,230,132, 13, 35,163, 88,139,255,230,226, +136,126, 85, 87,120, 96,201,105,242, 40, 0,137,101,133,186, 62,158,222, 50,176, + 13, 26,176, 1,243,192, 48,108, 10,152,102, 44,198, 69, 28,188,161, 17, 59, 44, + 36,151, 2, 33,207,130,150,180, 67, 94, 11, 35, 39,214, 69, 50, 48, 91, 51, 21, +236,145, 33,177,225, 19,189, 54,122,238, 51,255,152, 40, 64,184,251, 67,137, 65, +251,188, 91, 66,167, 49,117,168,219, 46, 61,254,204,189,101,250,152,164,255,104, + 30,229,155,102,165, 6,211, 45, 63,157, 84, 81,124,196, 68,131,253,223, 13,164, + 52, 12,154, } ; -// ../Source/JitKernels/GB_jit_kernel_reduce.c: -uint8_t GB_JITpackage_179 [1307] = { - 40,181, 47,253, 96,149, 12,141, 40, 0,198,123,182, 41,192,208,108, 14, 42,213, -238,181,201, 26,137, 85, 64,176,119,162,220,185,101, 95,213, 70,142,159,251, 48, - 63,202, 78,221, 57,195,150,211,239, 42, 10,213, 85, 0, 2,163, 0,162, 0,185, - 0,116,156,245, 98,135, 31,123,201, 6, 51,173, 95,165, 77,226,227, 58,214,175, -189,219, 75,167,120, 48, 87,208, 59,172,223, 41,132,224,243, 56,211,242,102, 60, - 90,250,219,162,175, 54,200, 73, 18, 8,229,209, 32,157,164,245,202,237,250,213, - 60,182,151, 61, 26,143, 77,107,230, 33,113,113, 32, 94,107,220,198,221, 57,206, -224, 69,237, 60, 12,173, 87, 6, 20, 9,229,145, 48,145, 80, 78,209,233, 21,174, - 26,243, 58,196,186, 8,204, 86,172,220,171,205,202, 88, 64,114, 94, 76,165,241, -157,228,214,185,150,155,116,103, 56, 41,190,205, 31,109,205,191,246,251,185,204, -225, 21, 10,105, 90,122,125,187,176,199,219, 25, 93,174, 24,157, 5,243, 72, 68, -122, 68, 34, 1,228,244, 10, 0, 8, 64, 33,149, 14, 73,113,134, 90,146, 42,215, -134,158, 55, 31,134, 21,116,177,106,220,226,255, 23,133,163,237,112, 30, 91,236, -190, 26, 32, 73,144, 10,194,184, 67,239,206,139,190,175,188, 14,143, 69, 19, 20, -206,227,250,133,141,115,205,165,189,157, 95,225, 10,102,175, 12,233, 88, 3, 62, - 78,175, 67,251,189,239, 60, 22,203,177, 69,222,113,125,123,150, 30,114,101,218, - 70,211,116, 7, 8, 28,134,110,243,100, 56,157,229, 94,140, 21,151,175, 68,114, -138,185,142,245,161,122,115,105,189,207,127,246,239, 92,146,162,165,207,179,130, -160, 87, 32, 27,246,167,162,124, 62,223,132, 82,186,140, 51,121,155,134,250,120, - 30,164, 37,126,213, 1, 96,195,116,130, 83, 25,211,116,106,236, 80,163,202,168, - 72,107,122, 38,227, 97,152,156, 99,105,176,173, 99,113, 54,201,223,105,232,182, -172,171, 88, 22,100,197, 67,214,201, 42,100, 93, 27, 14,195,120,222,236,104, 21, -109,158,221,244, 74,186,201,184, 76,230,177, 46,207,133,163,209,186, 75,166,209, - 56,235, 0,225, 27,151, 89, 54,147, 71,104, 25,134, 14, 6,161,105, 27, 76, 70, -141,170,130,233, 27, 45,227, 46,158, 11,235,116,151, 38,219, 58, 75,131,177, 58, - 28, 73, 72, 50, 57,198, 77, 88, 54,171,129,219, 54,218,165,147, 80,163,105,130, -203,184, 13,118,101, 29,214,177, 50, 23,236, 18,125,161, 0,227,172,139,227,161, - 68,211, 11, 78,133,166, 47,124,116, 74, 84,133,170,209,116, 93, 22,198,153,224, - 58,138,138, 87,237,104, 69,170,194,101, 24,146,212, 33, 41,156,218, 54,236,114, -241,108,211,199, 91,230,190,159,173, 70, 3,175,166,139, 72, 42,182, 56,234, 14, -128,201, 23, 22, 38, 14,142,175, 6, 52,157, 36,206,184, 54, 34,130,128,202, 97, -137,251,158, 34,152,254, 75, 27,146,194,169,233, 26,167, 97, 29,236,225, 25,203, -162,101, 48, 93,223, 6,171, 7,209,181,153, 78, 6, 92, 31,125, 73, 48,219, 15, - 46, 69, 92,164,233, 45,237, 22,249, 88,127,103,147,228,164, 16,111,156,239, 58, -155,113,158, 33, 41,118,190, 5,101, 92, 89, 92, 31,163, 29, 63,191,234,141, 29, - 64,187, 9,226,142, 98,240, 12,182,177, 42, 61,170,120,146, 11,159,167, 44,174, -213,156,230,156, 44,202,134,101, 22,141, 70,161,125, 44,178,250, 88, 4,200,170, -102, 85,128,240,168, 49, 45, 98,202,208,204,140, 36, 41, 72,161,208, 24, 32,132, - 16,227, 84, 25, 61, 50,161, 60, 11, 37, 78, 33, 1, 49, 68, 33, 36, 52, 34,146, - 52, 37, 41,169, 81, 56,210,138,113, 51,151,138,224,207,128,112,244, 92,110,135, -188, 49,192,179,216,186,111, 2,182,189,239, 20,162, 5,150, 25,222, 82,191,190, - 42,142,127, 66,138, 54,163,138,191,130,162,155, 70,138, 63,112,195,252,218,157, - 5,211,124,226, 38, 20,164,177, 91,105,177,193, 9, 20,216, 22,167,141, 83, 75, -251,211,130,133, 23,240, 99, 87,158,160, 73,186, 26,243,144, 59,230, 31,248, 9, -102,100,121,101,245,204,193, 0,143, 73, 8,202,193, 25,226,122,130, 77, 23,181, -213,100, 88, 4,233, 55, 65, 54,243, 11, 20, 50,111, 17,133, 92,154,196, 29, 4, -120,140,192, 12,192, 43,158,113, 37, 0,247,120,149,239,183,144,244,143,110, 57, - 29, 12, 48,194,112,210, 50,238,101,146,180,165,147,252, 0, 32, 82,137, 8,125, -137,172, 98,219,221, 85, 10, 68, 72,196, 87,112, 74,200,200, 27, 62,220, 8,110, -120,187,125,130,118,212,204,223,245,143, 46, 0,208,176,219,111,144, 87, 13, 18, -160,136, 44, 96,186,120,175,122, 21,184, 32, 30,120, 96,149,135, 10, 64,161,149, -130,132,184, 14,111, 68,150,150,207, 26, 20,246, 66,112,197,177,192,218, 90,134, -143, 64,212, 88,216, 14, 4,150,239, 30,237,107,102, 8,163, 17, 18,203,181,181, -181,174,135,120,184,205,229,188,178,252, 30, 11,129, 25,152,134, 80, 5,231,116, - 93,255,193, 12,161,200,184,159, 35,250, 96,213, 77, 33,195,248,235, 25,225, 59, -166,245,157,134, 23, 3,174,112,135, 0,251, 37,178,132, 0, 48,227,207,189,171, -223,232,225,152,220, 58,167, 71,167, 1,111,129, 23, 61,131,214,201,114,214, 6, - 80, 79, 52,177,244,165,216,192,248,139, 52,201, 3, 42,198, 97, 41, 82,125, 33, - 20,183,162,164, 87,159,157,237, 63,223,101,221,155,100,212,199,106, 97, 97, 87, -130, 36, 71, 14, 93, 64,192,183, 8,244,232,137,100, 13, 8,129,249,174, 1,110, - 63,202, 72,144,209,194,125,103, 44,143,241,169, 45,235, 72,195,138, 67,198,244, -248,135,145,214, 22,200, 69, 64, 26,162,179, 40,231, 60,209,197, 49,140, 65,248, -164, 0,139,160,199, 18,163,174, 91,142,222, 24, 86, 60,172,116, 35,143,104,194, - 37, 17,167,168, 91, 19,170,215,244,181,143,141, 77,146,117, 69,239,100,130, 92, -196, 23, 13,210,176, 49,224,166,249,254,204,164, 53, 57,107,112,201,125,242,120, - 4,242,253,235, 1,132, 1, +// ../Source/Template/GB_emult_bitmap_7.c: +uint8_t GB_JITpackage_174 [908] = { + 40,181, 47,253, 96, 91, 13, 21, 28, 0, 70, 41,127, 40,192,208,110, 49,250,125, + 72, 82,180, 35,144,249,194, 37, 28,166, 28,157, 36,161,211, 23,185,144, 45,172, +162, 20,124,149,129, 11, 56,184,174,162, 48, 20, 5, 32,117, 0,114, 0,116, 0, +101,125,101, 94,252,193, 59,223, 80, 19,185, 58, 95, 16,111, 34, 13,152,142, 36, +188, 33,243,234,235,185,222,160, 9,236,185, 40,214, 79, 4,148, 9, 37, 82, 25, +152, 80, 46,129,244,147,198, 33,139,185,164,254, 2,180,201, 17,119,159,184,186, +193, 64,165, 53, 51,213,213,166, 45,185,187,241,201, 69,162,120,126,168,107,218, + 99, 15,179,253, 84, 63,109,183,158,221,194, 30,146,122, 93, 54,135, 37,123, 85, +241, 74, 59,110,252,121, 91, 60,199,235, 97,153, 83, 84, 20,161,168, 23,123,188, + 24, 88, 91,208, 87, 10, 71, 56,189, 10,109, 55,122,137, 90,104, 29,135,206,219, +172,127,151,200,246,235,223,246, 13, 98,115,235,107, 62,254,237, 29,236,140,191, +117, 38, 65,235,210,102,179,144,112, 13,141, 75, 27,125,167,110,157, 6,243, 56, +141,135,101,232, 59,143,198,113, 21,224,151, 42,175, 70,250, 99,127, 72, 94,127, +253,178, 89,158,189,170,132, 36,104,223,237,255, 31, 69, 25, 81, 36,185, 73,254, + 18,141,159, 69, 19, 9, 37,114, 65,160, 13,159,201,162,227,106, 38, 32,112,233, +187, 78,129,199,139, 36,249, 73, 20, 19,166,219,247,157,176, 88,191,254,105,194, +200, 32,189, 2, 71,211,105, 58, 79,237,236, 79, 97,190,229,167,109,150, 5, 6, + 25, 16,200, 45,183, 62,249, 69,181,104, 67, 25,172, 32, 52,147,120,131,230, 35, +136, 75, 32,222,118,107,122,197, 51,188, 32, 80, 95,202, 94, 70,117,104,175, 9, +218,222,120,230,155,228,231,226, 21, 69,107,218,242,229, 72,222,142, 19,214, 44, + 29, 33,222,191, 68,110, 25, 81,180,113, 65, 62,217,100,190,198,215,175, 22,111, +180, 1,129, 12,252,122, 68,249,240, 47,251,224, 48, 95, 7,149,175, 24,122,192, +203,140,190,195,209, 56, 13,131,134, 97, 31,169,177, 87,235,167, 78,203, 88,216, +210, 87,205, 83, 55,153,134,233, 54, 11,155,230,113, 62, 55,204, 31,236,192, 14, +169,191,158, 29,163,199, 42,125, 13,239, 62,127,191,103, 11,102, 39,245,167,123, +154,251, 26, 31,143,212,227, 18,191,250,124,197,193,112,186, 63,168, 91, 0, 18, + 24,128,175,160, 97,173, 83, 76, 72, 36,140, 20, 20,164,160,144,198, 96, 68,134, +202,206, 3, 73, 98, 27, 40, 53,220,226, 12, 27,228, 77,150,187,207,178,148,175, + 61,113, 32, 52, 32, 63, 41,236, 62,145, 29,181,227,228,100,220,112,237, 79,225, +222,143, 2,128,146,174, 69,162, 71,102,205, 78,177,191,213,204,240,228, 0,195, +103, 13,232,122,183, 10,213,228,192,163, 1, 75,208,227, 10, 68, 8,100,140,126, +147,113, 6,237, 62,193,232,150,155,119,180, 88,182, 61, 55,220, 37, 0, 47, 90, +116,240,108,110,236, 39, 51, 3, 11,249, 59, 51, 77, 12,115, 32, 25, 60,125, 81, +144,129,251,142, 21,243, 83, 23, 84,129,253, 43, 91, 80,107, 51, 62, 94, 6, 24, +152, 51, 76, 63,215, 25, 3,212, 10,120, 90, 0, 32, 13, 56,253, 14,109,202, 90, + 73, 62,225,235, 86, 71, 9, 7,129,225,206,104, 20, 77, 35,190,217, 62,195, 75, +105,229,121, 98,169,172,185,231, 52, 22,122,180,132, 5,106, 1, 60, 58,128, 21, +121,208, 14, 19,107,142, 95,190,181, 48,216,176, 18,237,170,216, 1,220,129, 2, +205, 41,156,172,213,172,137, 29,180,180,185,205,189, 97, 5, 98, 87,248,238,158, +214, 75,131,224, 14,110,160, 27, 3,233, 26, 27,144,109, 12,185,133,183,180,223, +106,176, 30, 70,174, 3, 30, 78, 49, 5,203,186, 69,139,235,250, 36,117,231,220, +195,153, 82,230, 62, 83, 6, 55,234, 2,215,187,220,104,134,155,214,121, 48, 8, +171,237,166,229,206,228,197, 13,129, 91,176, 70,111, 33,140,125, 86, 45,133,238, +161,128,109,131,222, 95, 0, 69,161, 2,204,246,198, 5,139,221, 20, 46, 73,199, +241,158,182,158,105, 53,102,230, 62,155, 38,230,103,166,187,142, 87,112,206,168, +124,110,234,138,189,162, 28, 15, } ; -// ../Source/JitKernels/GB_jit_kernel_rowscale.c: -uint8_t GB_JITpackage_180 [286] = { - 40,181, 47,253, 96,116, 1,165, 8, 0, 86,145, 58, 33, 32,179, 27,179,251,172, -125,126, 51, 53, 50,201, 85, 31,241,241, 95, 8,165,171, 6,186,191,145, 33,130, -206, 50, 32, 4, 7, 0, 2, 48, 0, 49, 0, 50, 0,142,219,109, 6,124,220,180, - 47, 7,211, 33, 27,126,182,157,175, 65,127, 51,253,250, 34, 52, 24, 88, 43,234, -228,150, 86,252,225,220,105, 29,188,190,153,249, 53,243,210,154,162,162, 68, 81, - 1, 56,123,153,239,218, 90,171, 11,136,202, 80, 73,137,131,161,234, 65, 21,116, - 1,191,135, 54,122,178, 58,228,101,206,247,147, 46, 72,107,187,188,144, 94, 77, -225,248,210, 80,122,254,142,140,247,191,178,194,117,115,203, 34, 93, 6,233,205, -186,184, 77,155, 19,199, 99, 94, 90, 52, 76,149,228, 94,165,161,213,138,235,143, -249, 12,250,197, 33, 57, 6,189,254, 38, 89, 26,146,233,226,158,235,216,187, 14, - 49,142,226,162, 7, 82,102, 24, 70,145,243,186,224,237,100,191,128, 58,121,166, - 54,252, 60, 79, 64,251,165, 99, 43,248,129,238,238, 40,138,139, 30, 8,154,155, -112,157,100,102,155,133, 5, 13, 0, 70,128,146,244,166,248, 34, 64, 0, 22,128, -144,198,200,117,154,152, 76, 13,154, 63,207, 76,209,230,177,213,188, 99, 80,102, -184, 0, 81, 81, 48, 4, +// ../Source/Template/GB_emult_bitmap_template.c: +uint8_t GB_JITpackage_175 [876] = { + 40,181, 47,253, 96, 14, 11, 21, 27, 0,198,165,116, 40,208,176,108, 14,250,141, + 27,255, 96,191,196,151,148,134, 76, 61,146,138, 94,179,165, 62, 67,124, 96, 90, +239,230, 72,128,176, 28,199, 62,224,139,135, 34,247, 23,107, 0, 98, 0,106, 0, +212, 67,179,109,238, 2,105,108,123,163, 24, 8, 69,101, 51,113,253, 1, 27, 55, +231, 56,119, 22,148,243, 90,227, 37,131,137,100, 2, 81, 40,144, 76,254,216,162, + 75,152,126,180,202,167,248,140, 46, 95,143, 98,151,174,136,145,221,167,129, 15, +148,198,160,246, 93,157,105,120, 65,159, 0,156,213,170, 6,139, 97, 94,146, 4, + 83,124,245,121, 74,103,173,126, 94,231,236,211,188, 76, 59, 89,174,161,215,153, +124,120, 36, 2, 65, 34,145,231,224,248, 35, 70,223, 68, 11,187,200,236,186, 68, +199, 56,150,235,138,148,237,250, 57, 72,144,146,122,167, 1, 18, 95,189, 19,159, + 55, 10,102,220, 32,193,159,179,133,108,233, 51,182,119,147,226,165,249,220, 22, +255,127, 8,218,128, 32,238,118,185,189,119,151,111,239, 49,103,251,107,238,214, + 63,213, 26,122, 14,222,191, 65,237, 50,254, 19,166,159,144,100,154, 64,186,219, +180, 47,158, 2,118,222,221,178, 11,172, 89,115,206, 95, 74, 41,169, 99, 60, 34, + 12,203,166, 2,235,242,181,207, 97,231,210,187,115,171,109,151, 7,239,227, 61, +247,109,239,192, 64, 4, 48, 49,204,132,101,201,102,116,174,118,151,105, 88, 91, +253,215,176, 91,244, 10,198, 2,145,201,230,156, 30,202, 89, 41,169,122,111,167, +113,109, 41, 53,241, 98,154,197,183,165, 24, 75,134, 99,145,200,176, 75,132,167, + 57, 15, 21,144,146,250, 3,131,153,112, 8, 16,212, 1, 81, 91,199,173,232,143, +204,171,234, 86,164, 80,171,102,157, 18,104,156, 0,246,151,209, 69, 48, 7,194, +114,113,226,230,178,106,119, 4,108, 19, 66,192,155, 11,235,102, 35, 82,182,141, + 27,252,172, 75,148, 38,179, 33,121,245,207, 4,222,172,129,253,221,123,225,182, +105,221,229, 55, 14,171,214, 27,196,102,250,139,143,105,151,159,113,189,107, 42, + 26,140, 2,222,106, 98,115,130,131, 93,225,198,210,204, 76,226,138,214, 23,128, +172,168, 49, 73,135, 42, 32, 25, 73, 74, 82, 40, 53, 6, 96, 36, 16, 42, 50,154, + 7,242,120, 40, 88,113, 32,168,140, 51,198, 40, 50,161, 4, 18,140, 72, 40,146, +149,106, 27,148,136,162, 97,195, 78, 39,107,248,220, 60, 30,144, 44,226,135, 71, + 2,198,111,225, 24,150, 87,161,112,120, 54, 56,209,106,179,121, 48,193,205,240, +234,230,228, 22, 23, 32,218,105,242,194, 56,185,126,221, 21,160,226,103,132,133, +196,237, 35,105,167, 35, 82,205,246, 44,136, 63, 22,143,122,151, 19,142, 27,101, + 86, 21,215, 69,132, 7,145, 71,142,132,104,227,214,170, 13,144, 7,206,176,232, +129,201,116,141, 73, 60,234, 12, 4, 92, 10, 40, 56, 50,166,120, 17, 69,198,246, +134, 42,145, 97, 79,104,182,187, 48,105, 2,104,198,135,144, 24,238, 44,210,203, +176,108,228, 17, 88,198,135,143,249, 74, 4,185,143, 20, 6, 62,193,221,146,138, +160,201, 62, 58,217,197, 34,163,100,116,244,222,240, 63,124, 5, 34, 75,174,120, + 4, 99,156, 93, 36,197,125, 77,112,150, 11, 27,218, 49, 49,240,231,221,168, 13, +225, 6,243, 41, 14,217, 92,132,239,140,142,145,160,103,179, 12,104, 20, 48,122, +251,132, 32, 18,141, 35, 86, 13, 99,183, 73, 54, 30,145,129,150, 8, 41,167,240, + 32,161,108, 0, 93,108, 67, 55, 3,135, 9,255, 15, 6,142,160,122,228, 20, 34, +212,118,131,216,143,173,163,115,212,142, 39, 25,248, 95, 94, 76,195, 96,199, 56, + 8,198, 48,212, 83, 96,160,135, 38,182,229, 35, 74, 89,221, 94,247,121,200,180, +238,201, 45,130,170, 93, 50, 98, 93,113,192,243,216,210,247, 28,225,171,101,156, +146, 81, 54,118, 57, 42, 40, 76,193, 82, 52,114,129, 86,110,154,163,159,153,192, + 64,167,254,113,182, 91,154, 56,202,107,172,229,148,238,128, 19, } ; -// ../Source/JitKernels/GB_jit_kernel_select_bitmap.c: -uint8_t GB_JITpackage_181 [319] = { - 40,181, 47,253, 96,195, 1,173, 9, 0,214, 82, 63, 33, 0,145,117, 62, 79, 3, -218,207, 30, 3,165, 68,193,149,136, 51,228, 9,251, 52, 69,251, 98, 25, 50,231, -204,210,255,235,245, 33, 4, 53, 0, 54, 0, 54, 0,213, 55, 99,206, 96,240,247, -129, 87,105,214,104,130, 39,134,104,244, 4, 77,175, 51, 78,189,250, 47, 99,252, - 63,194, 4, 49, 25, 79,110, 14,155,108,244,146, 93,158,125,185, 25, 91,174,133, -125,154,106, 52, 77, 1, 84,212, 99, 8,154,213, 17,103, 99, 10,206,101,139, 89, -212,104,217, 33,214,162,200,197, 73, 98,107,206, 70,187, 59,154,199, 10,238, 78, -146,213, 7, 6,138, 64, 69,135, 2,129, 58, 20, 62, 31,160, 88, 3, 94,151, 2, -150,147,124, 87, 34,185,143,237,122,215,195,114,246,162,224,192,255, 87, 78, 77, - 28,122,190,125, 91,199, 93,174,114,124,153,117,191,133,213,172,119, 53,251,232, -108,227, 90,101,109, 26,118,191,140,113, 45,172, 18,164,181,118,106,226,144,231, -217,197, 2,226, 93,235,196,158,151,103,154,251, 4,132, 82,103,144, 52, 49,157, -175,133, 1,222, 98, 74,134, 37, 5,139,101, 39, 14, 93,202,116,204,155, 67,130, -231, 17, 92,241,205, 3, 19, 0, 78, 9,137,133, 72, 36,133,211, 71,192, 9,205, -213,155, 6,118, 90,250,106,161, 22, 33, 13, 14,215,113, 98, 50, 53,104,254, 60, - 51, 69,219,195, 86,115,135, 65,140, 41,252,192, 16,154, 57, 60, 69,193, 16, +// ../Source/Template/GB_ewise_fulla_template.c: +uint8_t GB_JITpackage_176 [740] = { + 40,181, 47,253, 96,215, 10,213, 22, 0,118, 33,103, 33,208, 90,231, 64, 7, 52, +163, 10,250, 51, 53,247, 75, 24,152,144,194,255,190,145,200, 53,113,227,167,252, +131, 43, 60,226, 3, 92, 2, 92, 0, 90, 0, 93, 0, 54,243,178,164,223, 20,137, + 67,130,208, 64, 28, 18,215,196,236, 27,182,169, 42,121,129,158, 69,230,147,201, +106,190,129,180,210,145,103,189, 19, 71,227, 91, 79,176,179, 69,129, 88, 99,179, +199,247,173,199, 45,218,155,171,233,138,151,101,125,223, 38, 85,239, 6,244,220, +224,222, 29,157,107,121,154, 58,135,181, 44, 81,162,176,177, 85,117,216, 77,110, + 48, 96, 4,131, 33, 33,213,168,225, 27,229, 56, 47,251,237, 83,174, 54,116,150, +247,209,172,223,186,111,244,249,255, 49,204,133, 97, 5, 92,182,121,187,116,209, +222, 54,123,116,150, 89,127, 79,162,143,141, 81,207, 39,147,212,252,133, 19,182, +199,246,171,147, 5, 59, 20, 18,132, 38,197,122,210, 59,110, 91,145,205, 20,130, +104, 43,132,142, 4, 83, 24, 59,117, 27,119,230, 56,147,163,185,102,156,117,137, + 26,155, 20,241, 53, 51,195, 99,237, 75,230,208,132, 50,203, 46,203,122,235,249, +211,116,122, 53,141,234, 61, 3,148,134,216,134, 52,187,200, 62,126,118, 20,144, + 93,147,249, 64,144,106, 94,102,114,127, 14, 23,140,108,218,103,108,158,196,255, +113,173,101,138,217,193, 10,221, 88, 60,207,235,186,238,241, 85,132, 64,175,101, +231,190,162,130,127, 24,143, 38, 24,246, 10,133,186, 80, 23, 10, 97,216,107,192, + 33,188, 15,164,112, 62,241,113,239, 48,224, 14, 27,162,149, 29,115,177, 80,186, + 42,226,247,173,165,216, 35,162,133,137,236,104, 82,218,160,243,115,238,141,203, + 42,250,118,126, 91,209,111,154,111,242,184, 70,178, 53,123,247,101,104,197,251, + 36, 18,203,197,251,192, 16,164,132,152,139,200,222, 53, 24, 64,126,254,241,195, +185,159,153, 38,218,128,139,160,161, 65, 67, 34,129,136, 72,146, 36,217, 24, 3, + 80,132, 16, 33,187,213, 1,153, 17, 57,165, 29, 14,181,147, 61,112, 9, 22,129, + 8,101, 39,237,255,227,148, 87, 38,245,135,138,170,136,148,181,232,158, 86, 81, +202, 22,213,160,104, 56,102,235, 75, 26,182,100,104,185, 7,176, 12, 60,225,190, +133,172, 13,243,164,183,152,212, 35,133, 80,129, 18,130,193, 2, 69,209, 26,100, +144,151, 70,134, 3,160,212, 12,177,102,142,152, 4, 28, 11,208, 96,150,209, 47, +135,157,129,142,236, 98,172, 20,161, 28,106,165, 0,120, 40, 25,140, 1,133,160, +126,219,117, 73,242,224,131, 14, 71,250, 3,193,232, 53,174, 5,252,101, 24, 51, + 30, 47,149, 1,152,106,217, 90,195,178, 66, 17, 39,106, 3,217,190, 53, 1,211, + 25, 0, 74,218,199,132, 27, 62,243,158,236, 64,194,112,252,153, 67,234,239, 50, + 45,246, 36,143,255, 23, 50,179,176,249, 28,113, 15,128, 66, 63,219,160,192,112, + 9,248, 0,217, 12, 84, 82,144, 3,193,228,109,102,247, 77,176, 33,135,108,156, +145, 96, 69, 30, 57,100,148, 68,116, 59,171,209, 34,130,224, 1, 49, 0, 44, 58, +200, 9,224,111, 0, 64, 15,247, 52,130,165, 86, 33,248,240,180, 75,171, 50, 67, +126, 5, 10, 60, 72, 37, 59,148, 38,134,234,175,108,120, 15, 35, 64,156, 15,227, +105, 50, 17,207,224,212, 24, 38, 51,121, 51,177,214,194, 49, 67, 75, 81,160, 7, + } ; -// ../Source/JitKernels/GB_jit_kernel_select_phase1.c: -uint8_t GB_JITpackage_182 [394] = { - 40,181, 47,253, 96,107, 2, 5, 12, 0,102,215, 75, 33, 16,211, 54,134, 15,196, -236, 53, 67,137,207, 4,211,246,129, 47, 33, 34,189, 8,250,110,245,191,219,249, - 87, 17, 1, 0,168,210, 25, 65, 0, 68, 0, 65, 0, 85,193,224,210,141,124, 48, -226, 79,231,112,130,229, 37,184, 61, 29,204,249,160, 90,217, 5,138,157,198, 18, - 63,234, 78,172,191, 49, 89,167,115,144,136, 87,238,238,137,234,199, 14, 20,237, -190, 31,254,104,195,207,250, 57,118,227,141,189, 48,167,168, 57, 81, 84,214, 67, -179, 92,131,102,180,218,140, 82, 54, 42,241,204,186, 42, 25,102, 57, 72,196, 94, -216, 44, 16, 12,211,131,183, 19, 45, 79,232,199, 31,222,249, 61,200,244, 99,254, -139,179,233,226,208, 8,222,127,244,143,191,249,184, 65, 13,222, 60, 12, 45, 31, - 28, 12, 5,195,132, 8, 94,126,133, 51, 38, 91,118,124, 46,252,179,213,107,244, -119,236, 95, 28,142,150,243,238, 62,199,236,193,251,102,242,115,206,237, 50, 97, -216, 93,223,175,113,138,162, 19, 8, 71,177,108,223,123, 31, 14,184,187, 79,208, - 84,184, 20,121,133,171,108,154,173,104, 13,115,134,166,194,165, 90,105,163, 97, -169,246,210, 88,228, 89,147,251, 53,224, 18,126,119,161,216,249,109, 75,189,243, - 95, 24,192,223, 35,195,155, 37, 78, 38,193, 93,186, 36,136, 34,129, 47,188,116, -170, 97, 56,139,193, 88, 74,197, 86, 7,133,106,212, 49, 63, 28, 29, 32, 48,132, - 8,206, 44,118,212, 68,162,150, 89, 59, 75, 4,155,129,233,131,208, 91, 17,164, -220,190,128, 84, 46, 24, 7, 71,130, 32, 76,248,169,100, 80, 70,226,228,138, 54, - 92,123, 13, 1,241, 91, 84,105,128,184,227,132,153, 26, 52,155,103,166,219, 32, -173,230, 15, 67,172, 53,238, 27,211, 4, 70, 20, 5,110, +// ../Source/Template/GB_ewise_fulln_template.c: +uint8_t GB_JITpackage_177 [639] = { + 40,181, 47,253, 96, 10, 6,173, 19, 0, 22, 96, 99, 32,208, 28,231, 24,149,213, +255, 59,212, 71,162,195,106, 72,143,165, 21, 58, 78,205, 40,154,106, 0,244, 15, +174,240, 72, 7,241, 11, 90, 0, 87, 0, 91, 0, 42,219, 57, 73,210,123, 11, 5, + 66, 81,112, 36, 16,138,119, 34,119, 15,219, 87,165,220, 64, 47, 27,115,217,178, +158,123, 33,205,124,163, 89,207,203,163,241, 89,205,176,179,117,133,219,251,172, +199, 45,218, 51,215,214, 23, 39,201,250, 62,123,132,253, 35,208, 75, 14,254,209, +185,146,102,171,179,233,146,164, 43,101,106,108, 97,109,250, 46, 63, 28,182,194, +225, 16,178, 24,120,212,173,247,190,123,244,185, 85,255,255,109,163,109, 91, 96, + 52, 92, 87,224,141,114,145,226,181,130,109, 51, 96,178,239,217,172,247,109,213, +101,183,254, 44, 83, 71, 53,118, 61,151,247,199,118,244,124, 67, 24, 20,133, 30, +197,106,210, 63,206,182, 41,155,111,163, 48,133,198,183, 69,155, 41,136, 40, 28, + 3,170, 95,103,227,238, 28,231, 49,176,107,239,141, 98,237, 58,230, 55,228,230, + 71, 75,108, 39, 5, 16, 0,126, 29,229,158,201,124, 44,166, 16,227,233, 84,194, +144,118, 32,119, 37,127, 54, 49, 26,249,218,103,124, 75,241,144,119,179, 43,114, + 15, 51, 20,164, 1, 65,240,251, 62,200, 99,147, 2,125,199, 93,242, 24, 29,188, +194, 25,121, 76,180,163, 63,203,195, 61, 42,145,128,220,207, 46,115,181,167, 7, +219, 86,219,106, 4,201, 17, 32,119,206,166, 18, 98, 66,149,239,244,157,184,127, + 37,147,244, 88, 99,178,166,238,153,247, 98,244,158,167,114, 89,217,202,157, 86, + 58, 52, 3, 86, 40,167, 17, 8,145,155,135, 28,113,201, 77, 78,180,185,102,204, + 53,233, 66,245, 40,226,119,151,195,168,218,231,152, 77, 45,215, 37,251,172,230, +205, 86,249,218, 82,213,211, 20,200,106, 99,160,113, 57, 83, 51, 34, 18,136, 72, +148, 66,105, 56, 96, 68,102,170,106, 55,205,133,164, 24,108,119,112,107,194,111, + 39,187, 40,104,225,142,181, 17, 69,176, 60, 65,232,113, 49,235, 26, 72,191,209, + 51,194, 4, 19, 65,171, 32,192,148, 29,220, 31,188, 17,139,150,236,207,230, 11, +173,163,241,194, 14, 28,181,229,109,248,108, 69, 74,164,108,111,203,252,129, 51, +184,124,138, 70, 50, 25, 3, 19,123, 99,139,146,180,110,224,124, 76,137, 29, 52, + 69,100,106, 24, 61, 96,116, 54, 5, 69,212, 7,160,120,234, 60,206,250,246,194, +152, 63,113,225,200,108, 2,202, 54, 8,164, 80,172,195, 67,196,116, 78,186,216, +102, 55,142,167, 29,108,179, 75,216, 62, 67,198, 91,230, 47,185, 34, 56,200,194, +195,144, 0,150, 3, 28,236,117, 2,187, 46,107, 69, 0, 73,122,215,105,177, 32, + 52,191, 6, 69,217, 37,146, 37,188,216,107, 19, 52, 2, 84, 3,112, 4, 50, 86, + 8,104,211,236,252,204,148,126,209, 10,183, 8, 19,167, 93, 85, 81,135, 7, } ; -// ../Source/JitKernels/GB_jit_kernel_select_phase2.c: -uint8_t GB_JITpackage_183 [336] = { - 40,181, 47,253, 96,239, 1, 53, 10, 0,134,211, 64, 33, 16,241, 54,230,113,200, -133, 61,140,215,215, 9, 45,121,142,201, 50,248, 12,120, 95,139, 89,167,237, 98, -217,136, 0, 0, 84,193, 12, 53, 0, 55, 0, 55, 0,148,111,194,141,185,224,206, - 7,150,202,170,144,244, 50,134,120,157, 61,210,254,198,165,157,222, 49, 26, 78, -221,221, 17,244,181, 23,146,119,127, 47,190,190,226,143,249, 45,119,227,202,173, - 48,159,166, 25, 77, 83, 4,137, 70, 31,126, 30, 73, 57, 34, 63,158,224, 61, 62, -200,136, 94,143,255,225, 44,138, 92,155, 4,126, 38,191,126,206,245, 14, 41,152, -115, 81,164,124, 96,160, 4, 26, 29, 10, 4,234,208,247,248, 64,227,140,119,185, - 20,152, 11, 61,174,112,141,229,251,195,121,235,207, 2,175,155,164,187,148,187, - 79,206, 76, 56,244,184,214,105,220,118,105,181,212, 98,187,157, 85,179,106,111, - 86, 31, 92,117,120, 70, 85, 90,134,221,142,209,184, 21, 54, 3,115,118,102,194, - 33,107,171,101, 65,236,173, 50,246,248,152,203,253, 25,240, 73, 21, 6,240, 7, - 75,241, 27, 39, 24, 28, 31,178,140,101,184, 55,207, 35,112,133,111, 36,146,251, -208,174,189, 30,117,171,215, 4, 7, 18,190,203, 24, 32, 80, 66,100, 91, 7, 69, - 8, 35, 76, 18, 73,157, 62,124,102,240, 0, 65,216,227, 62,164,180,141,113,115, -149, 5,238,214,218, 46, 40, 45,162, 52, 64,244, 56,129, 76, 13,154,207, 51, 19, -218, 32, 94,205, 31, 70,172, 13,183,198, 52,194,136,162,197, 13, +// ../Source/Template/GB_iceil.h: +uint8_t GB_JITpackage_178 [236] = { + 40,181, 47,253, 96, 35, 1, 21, 7, 0,114, 14, 45, 23, 64,219, 1, 22, 70,217, +219,190, 77, 7, 33,125, 81,192, 98,236, 66, 4, 26, 59,154, 4,128, 0, 0,254, +151,125,184, 61, 36,109, 8, 77,244,128, 5, 65,232,161, 43,176,208,245,151,113, +227, 70, 79, 15, 61,205,223, 37,155,118, 23, 55, 88,222, 11,120, 0, 80,156, 85, + 73, 80, 5,250,151,193, 15, 0,228, 80, 12, 23, 61,108, 58,221,156,254,224,167, +217,191,202,112, 52,187,247,150,177, 69,215,241,249,122, 58,234, 88,163,169, 24, + 62,214,227,232,116,177, 40,136, 98, 48, 9,162,244,224, 9, 93,160,191,226,168, + 15,167, 91, 49, 45,201,215,186,200, 28,235, 17, 77,124, 78,141,163, 39, 54, 51, + 79, 95,205,128,161,187, 88,232, 48,127,159, 37,216,104, 46, 63,253,252,160,127, +221,136,199,248,238, 61,247, 76,125, 47, 96,220, 27, 15, 0, 4, 3,194, 37, 40, + 94, 64, 37,196,188,106, 43,224,213, 42,156, 77, 22,208, 39,106, 87, 51,104,218, + 60, 51, 69,155,192, 86,235, 1,131, 8, 59,215,167, 40, 24, 2, } ; -// ../Source/JitKernels/GB_jit_kernel_split_bitmap.c: -uint8_t GB_JITpackage_184 [331] = { - 40,181, 47,253, 96,205, 1, 13, 10, 0,230, 83, 65, 33, 0,211, 60,238,110, 65, -100, 93, 69,167, 9, 54, 71,246, 92,144, 33,233,162,171,139,249, 27,238,174,142, -108,255,255,247,250, 23, 2, 54, 0, 56, 0, 56, 0,222, 9,119, 6,115, 61,159, - 29,205,172, 48, 91,141, 25,126,212, 54,119,191,175,166,147,151, 63,190,219,122, -102,139,215,169,187, 27,178,197,236, 59,193,121,172,248, 69,253,151,186,175,165, - 90,152, 83,148,148, 40, 42, 82, 48, 85,210,135,159,205,212, 13,250, 47,229,110, -241,193,133,244,163,248,223,205,164, 72, 98,155,192,223,232, 31,159,243,113,135, -149,203, 57,198,212, 39,161, 18, 84, 82, 97, 32,168, 60,250, 32,159,227,221,216, -132, 79, 52, 15, 78,209,240,140, 90, 90,134, 85,111,193,144, 50,234,248,180,248, -188, 62,127,196,150,226,147, 82,247,201,185, 32,223,180, 7, 36,162,121, 94, 25, -146,108,218,245,226,165, 60, 24,144,145,229, 90,200,115,198, 17,110,185, 95, 82, -126,228,193,163,174, 83, 92, 23,164,171,150,198, 32, 23,181,102,191, 6,124,211, -111,139, 51,230,119, 5,248,131, 26,252,137, 55,224,238, 46, 61,242,224, 17,228, -154,167,113, 91,221,168,195, 91, 88,217,214,213, 76, 17, 21, 0, 77, 9,121, 67, -112, 32, 0,139, 68, 72,131,248, 58, 20, 76,128, 98,102, 94, 83,192, 86, 2,124, - 19,144, 76,120,121, 20,180, 77,243,231,153, 41,218, 48,182, 90,191, 24,100,102, -190, 3,120, 99,182, 60, 76,128, 41, 10,134, +// ../Source/Template/GB_jit_kernel_proto.h: +uint8_t GB_JITpackage_179 [2452] = { + 40,181, 47,253, 96,170,145, 85, 76, 0,154, 73, 8, 14, 39,208,176,204, 3,239, +189,192,126,148, 26,178,110, 73,166,115, 34,229,154, 10, 66,140,141,213,199, 70, +126, 3, 33,132, 84, 91, 96,205, 82, 15,131, 43, 30,128,215, 0,206, 0,215, 0, + 60,212, 44,243, 98,109,152, 7, 52,189,251,125,218,142,203, 63,226,108,219, 35, +239, 70,222,187,186, 67, 96,241, 89, 99,189,200,111,250,213,143, 48, 40, 22,223, +249,158,239, 71, 31,167, 95,228,251,156, 10,122,190, 33,228, 31,107,221, 61, 46, + 30,170, 57,212,204,207,182,225, 6,164,226, 98, 97, 36, 30, 54, 95,141,245, 0, + 30, 15,211,194, 89, 46,218,196,172,236, 98, 69, 76,141,245,178,230, 2, 60, 6, + 4,164, 0,251, 85, 10,198, 71,216,246,106,110,207,214,187, 2, 44,207,182, 94, + 44,128,162,210, 4, 60,219,217,150,219,203,243,254,101,220,203, 99, 28, 63,162, + 72, 3, 82,128,193,100, 64,122,168, 66, 62,226,183, 67,171, 23,136,255,249,186, +230, 92,238,163, 45, 98,242, 3,233,118, 64,176,124, 83,112,179,253,134,219,131, + 63,119, 65, 60,198,244,183,214, 60,183,224,167, 63,194, 39,160,187,222,224,196, + 54,111,187,153,253,106, 76,233,240, 18,201, 35, 64, 34, 9,149,118, 24,211, 58, +229,111,182,205, 76,211, 68,161, 80, 50,148,179,142, 74, 27, 33,169,107,111, 74, + 79,148, 56, 75, 53, 37, 5,180, 41,166,149,127, 24, 2, 64, 13,121,254, 30,239, +110,114,248,245, 40,135,154, 37,195,208,248,137,209,203, 82,149, 73, 29,185,235, +228,129,204,119,122, 36,150,211,139,233,219,238, 63,148,243, 30,249, 94,166,239, +161, 62, 34,137,122, 8,246, 80, 79, 15, 53, 37,212,249,196,203,183,155, 31, 12, +130,220, 54,169,178, 75,206, 10, 76,211, 94,242, 59, 43, 82,202, 24, 99,229,163, +140,124,235,197,124,110,236,172,120,212,238,143,231,168,243,139,113, 53,220,157, +207, 13,167, 93,198,168, 50,117,159,212,247,122,119,231,118, 71, 95,101,242, 59, + 63, 74,198, 74,231, 89,215,136,122,207,221,157, 86, 30,242,158, 71,171, 42, 70, + 32, 15, 89, 90, 5,151,245,237, 17,200,191,214,228,107,202,237, 0,129,122,110, + 27, 86,116,112,112, 48, 77,147,148,146, 66,137, 58,223, 87,179,153, 32, 5,114, +116,237, 56,228, 88,105, 96,114, 24,166, 98, 69, 28, 54,119,146,237, 72,105,155, +220,197,154,200, 88,219, 37,106, 27,132,113,168,193, 48, 76, 67,231, 86, 8,164, +156,126,187,217,105,205, 90,172,112,151,156, 92,164, 50, 11, 85, 65, 22,211,202, +177,174, 22, 22,169, 13,179, 80, 29,185,111,218,121,143,216,108,205, 49, 47, 12, +134, 94,198,180,147,183,203, 69, 30,238,241, 13,187, 10,187, 48, 82,154, 16, 72, +158, 14,157,156,126, 51, 4, 43, 1, 1,193, 79,211, 84,161,245,173,249,212, 30, +183, 57, 80, 12,206, 44,137,108, 11,126,190,223,250,249, 83, 31,201, 72, 92, 96, +168,252, 39, 83, 5,202, 7,164, 84,104, 57,252,234, 91,220,133,218,139, 60,148, + 51, 53,153,200, 83, 51, 15,245,114,116,167,211,242, 77,117,157,150,135,209,214, +189,218,206,220, 22,156, 19,234,183,243, 80,206, 93,219,135, 19,143,135,230,122, +217, 2, 60,254, 31,218,128, 72, 84,112,154, 69,154, 92, 56,204,182,105,154, 36, + 77, 36,102,101, 44,214, 37,203, 98, 67,198,146, 7, 7,211, 68,161, 84, 44, 41, +109, 91,131,204, 42, 76, 14, 72, 19,173,170, 34, 1,193, 52, 77, 20, 10,151,101, + 82,130,244, 80, 6, 4,161, 10,244,171, 97, 55,200,245,174,148,243, 94,166, 95, +223,250,227,221,118, 81,190,115,210, 15,196, 52,235,155,195,204,114,101, 24,142, +252, 17,158,233,238, 91, 22, 47, 28, 4,132, 6, 68,214, 88,215,235,202, 87,228, + 61,214,203,215, 39,211,153, 57, 92,219, 22, 37, 6, 33,103, 92,206,105, 23,114, +207,242,240, 37, 18, 10,220, 80,151,118,232,197,224,133,105, 87,146, 36,138,163, +137,229,244, 3, 39,214, 22, 31,180,200, 98, 47,211,111, 86,170, 90,108, 57,101, + 97,214, 86,113,232,157,177, 92, 26, 64,190,217, 26,135, 53,244,236,166, 48,149, +117,201, 57,139,212,242,203, 97,163,181, 93,153,130,144,168, 50,212, 80, 33, 53, + 51, 35, 73, 73, 10, 82,104, 12,130, 82, 4, 97, 96,146,131, 56,233, 32,222, 34, + 56, 36,136, 65, 32, 6, 65, 16, 12, 97, 8, 16,132,128, 70, 16, 4,225, 16, 12, + 97, 64,132, 8, 8, 33, 20, 25, 99,172,146,179, 3, 79,112,160,252,209,165,247, +240,201,209,170,188, 21,191, 16,213, 17,113, 42,235, 99, 48,172, 65, 91, 5, 24, +228,250,251,130, 48, 5,180,158,146, 31,130,114,146, 14, 21,185, 3,129,151,247, +225,254,237,109, 84,247,139,188,136,169,136,224,192, 59,103, 68, 66, 48,186,182, + 92,224, 68,242,122,174, 77,162,126,202, 2,110,224, 75,245, 11, 40,247, 65, 61, +134, 64,108,136,198,203,195, 41,165,174, 1,168, 15,225, 10,248,166, 1, 77, 25, + 33,109,144,185,250,130, 28,128, 99,117,174,248,164, 50, 56, 56,207,247, 79, 19, +208,151,135,101, 61, 46,103,188,132, 39,137, 82,200,185,170,219, 82,199,153,249, + 65, 41, 74, 43, 4, 9, 3, 18,115, 87, 66,105, 91, 69,220,138, 2,106, 8,252, +198,244, 31, 49,155, 69, 81,153, 89,112, 38,154,143, 94,187,115,149, 38,124, 57, +224,140, 75,156,124,247,199,127,165,230,185,162,180,219,229,130, 2,120,228, 20, +244, 46, 26, 82,118, 51, 48,255, 41, 75,172,155, 73,153,178, 76,148, 77,131, 33, +135, 86,113,156,196, 0,178,152, 25, 21,135, 86,249,105,165,215,134,152,127, 54, +179, 62,179,148, 95,141, 27, 78,248,176,209,116, 96, 59, 20, 19, 92,104,244,113, + 83,244,147,135, 61, 10,132, 56,200,170,115,163, 27,108, 95,205,137, 49,102,119, +129, 89,163,106,118,205,105, 63,171, 51,195,173,211, 50,241,192,250, 11, 44,215, + 21, 0,139,184, 11,207,235, 98, 3, 79, 99,203, 62,198,217,111,199,119,214,115, +185,134,205,135, 40,185, 48,166,165, 75,237,195,170, 70,149,203,142, 8,204,138, +157, 70,162,146,108, 89, 35,155,108, 55, 2, 75,144,121,105,119, 49, 11,140,163, +235, 47, 10, 37, 63, 83, 21,200, 87,241, 21,193,202,196, 39,170,114,144, 31, 26, +135,150,156,100, 51,189, 51, 67, 46,125, 86, 5,147,246,205, 10,233,199,159,109, + 22, 31,200, 31,235,113, 43,236, 80,246, 8,164,208,241,215,154, 74, 97, 39, 1, + 99,140,159,143,235,226,110, 21, 43,173, 82,211,134,111,170, 9, 81, 93, 54, 33, + 91,138, 51,250,205, 29, 82, 22,242,127, 20,209, 57, 24,220, 3,117,191, 45,113, +109,111, 81, 52,223,132,194, 63, 76,148,223, 0,146,105, 99,186,138,113,168, 3, + 21,133, 32, 79, 60,204,120, 52, 83, 86, 48,157,181, 35, 9,244, 15, 23, 61,144, + 54, 54, 10, 99, 53,234, 96,133,166, 71,209,205, 54,113, 12, 83, 59, 96, 92,115, +157,168,201,186, 88,120,239,230,117,234, 56, 18,204,128,236, 78,234,157, 87,245, + 21,149,204,155, 10,143,117, 44, 30,149,160,113, 64,201, 9,186, 9, 87, 9,188, + 86,120,255, 44,190,101,182, 10,131,115, 31,148, 1,198,119,250,164,223, 38, 9, + 52, 13, 79,137,136,115, 91, 41, 93, 76,106,165, 50,192, 59,134, 61,221,203, 10, + 90,197,247,208,210, 29, 32,169,196, 3, 90, 64,236, 34,215, 93,214,205,213,231, + 33,141, 86,215, 63,218,104,223, 0,245, 86,107,185,222,228, 30,210, 27, 5, 92, +232,246, 76,233,203,144, 30,154,234, 20, 92, 92,242, 37,137,196,172, 55, 14,173, +128,150, 14, 31, 56, 33,123,220,233,127, 87,125, 91,191, 61,105,161, 25, 21, 58, +108, 52,124,112,225,185,143,160,117,236,141,126, 45,114, 78, 39,202,244,152,162, +109,230, 40, 69,181,128,107,128,140, 96,139,208,135, 36,239, 62, 17,229,177,123, +172, 13,181, 35, 73, 96,120,157,160,133,178, 48, 93,117, 69, 30,250,196,140,180, + 5,145,161, 7,205,178,119,154,236, 9, 26, 14,232,249, 6, 93, 60, 2,110,192, + 67, 58, 57,251, 88, 16, 51,144, 22, 32,204,192,138, 93,188,103, 24, 35, 15, 75, +143, 72, 19,218,133, 99,188, 89,136,204, 38,145, 38,129,196,221,209,124,201,132, +230, 93,235,157, 65, 97,100, 96,165, 65,101, 88,193, 60,171,148, 98, 14,223,109, +168, 86,104, 23,164, 54, 7,100,226,221,249,115,178, 28,241,108,183, 97,139,202, + 34,191, 55,127,187, 53, 16,137, 51,197,143,175, 95,106,174, 11,207,131, 71,167, +126,206, 15,204, 96, 96, 50,174,215,174,220,169,164,179, 11, 15,112, 90, 7, 69, + 61,249,126,229, 37, 98,140, 99,107,126,105, 40,193,208, 50,160,163,190, 29,217, +123, 97, 28, 56, 56, 23,164,135,125, 79,132, 79, 93,193, 10,213, 67,113, 71,178, +128, 39,130,167,113,222,211, 86,136,152,146, 21,117,200, 3, 13,163,140, 80, 86, +237, 78,151,122, 49, 10,111,204, 88, 45, 19,212, 55,255, 97, 21,216, 27,136,163, +102,119,219,139,169, 47,160, 88,114, 36, 31,132, 43, 77, 24,100,210,139,211,251, +182,159, 8, 78, 32,236,103,145, 70,217,253, 7,210,236, 0,145, 19,205,133,247, +197,180,121, 46,225, 67, 20,242, 76,243,173,196,174,210,138,159,111, 54,206, 80, + 42, 58,225, 82,209,148,153, 42,225,171, 28,198,240, 46,218,246, 64,185, 88, 32, + 12, 64,200, 1, 30,120,253, 4,163, 66,166,192, 3, 99, 50,113,104,234,213, 58, +223, 71,167,254, 55,212,241,193,163,133, 15, 42,155, 37,142,157, 56,170, 3, 49, +221, 32,242,142,131, 47,167,230,121,213,155,214,187,155,111, 79,125,153,104, 37, +106,133, 6,248, 43,249,248,149,169, 44,209,145, 8,161,217, 94,113,152,181,108, + 23,220, 28,246, 61, 52,186, 76,249,250,123,253,167,115,241,209,192, 27, 95,249, + 27, 72, 36,158,246,130,202, 90,162, 64, 30, 43, 16, 65,192,148,223,238,227,181, +127,178, 84, 59, 71, 89,138,156, 15,210, 76,160,147,217,132,225,208,150,222, 45, +113, 22, 41,202, 11,205,201, 6,237, 55,160,147,167, 29,171, 43,129,217, 76,122, +205, 86, 90,185,230,242, 10, 99,205,251, 41, 15,170, 8,173,225, 59,223, 43, 45, + 38,253,150,235, 39, 17,188,208,132,186,196, 29,243,141,193, 22,249, 17,164, 38, +216,122, 41,118, 10,208,196,231,109,195, 64,138,205, 30,209,121, 3,173, 52,100, +160,119, 34, 54,169,225, 15, 2,100, 30,133,173, 68,204, 21,184,119,108,174, 40, + 94,184,132, 94,177,155, 11, 93,112,209, 51, 1,214,245,143,103,140,102,130,211, +169, 19, 1, 41, 81,198,134,215,199,153, 0, 25,197, 16,157,159,220,218,137,167, +172, 44, 31, 68, 59, 52,233, 22, 49,178,201,227,112,180, 79, 29, 16,186,140, 77, +159, 6, 86,128,150, 77, 46, 10, 80, 91, 31, 81, 0, 36, 50, 15,130, 88,193,160, + 69,183,102, 73,132, 16,154,130,202,123,207,188,154,127, 82,161,200,242, 47, 86, + 48,111,241,250,186, 58,105,152,179, 6,229,190, 56, 42,217,161,163,241,186, 37, + 5,175, 10, 43, 43,128,240,205,167, 6,254,246,142, 83, 70,106, 76, 29, 69, 99, +128,118, 5,155, 62,160,160,110, 28,120,139,125,203, 8,181, 21, 23,111, 71,132, +185, 66,253,131,230,182, 81, 32,235,106,214, 31, 52, 3, 14,204,244, 75, 71,221, +188, 49,182, 73,237,199, 49, 23, 85,175,238, 23, } ; -// ../Source/JitKernels/GB_jit_kernel_split_full.c: -uint8_t GB_JITpackage_185 [330] = { - 40,181, 47,253, 96,193, 1, 5, 10, 0,166, 19, 65, 33, 16,209, 60,230,145, 19, -194,135,159,176, 6,108,140,139, 4, 9,101,127,150, 85,235,152,229,166, 47,154, -234,136, 0, 0,170,106, 6, 54, 0, 56, 0, 55, 0,212, 55,223,190, 88, 48,196, -231, 70,107,245,233, 43, 94,134, 31,197,171,183,223, 24,179, 73,203, 63,227,125, -253,178, 67,236,212,221, 13, 57, 99,188,172, 71,155, 63, 20,191, 98, 55, 6,109, -117,249, 52,201,104,154, 2, 82, 32, 81,209,127,220,213,212, 13,226, 99, 15,239, -240, 59, 70,244, 99,248, 28,174,145, 36,145, 73,221,103,196, 31, 95,243,113,127, - 20,172,121,206,212, 39,129, 18, 80, 81, 97, 32,160, 28,226, 30,159, 35,206,220, -132, 75, 1,154,194,225,149, 86, 88,189, 44,132,209,144, 18,218,248, 4,125, 98, -159, 63,230,235,249,164,212,125,106,172,199, 51,236, 17,129,168,158,150,126, 38, - 25,102,125,136,189,239, 2, 18, 2,241,125, 92, 95, 28,225, 32,230, 2, 82,118, -228,193,161,109, 83, 88, 86,100,179,149,120, 61, 30,138,152,253, 34,128,147,126, -223,172, 45,191, 45,192,191,195,100, 46,196, 1,119,119,201,145, 7,135, 30,199, - 32,152,150,217, 90, 35,139,154,109,182, 42, 30, 1, 21, 0, 75,137,108, 33, 54, - 16,128, 37, 33,164,161,189,142, 4, 19,160,152,153,215, 20,176,149, 0,223, 4, - 36, 19,222, 28, 5,109,211,252,121,102,138, 54,137,173,214, 35, 6,153,152,120, -192,238, 75, 91,194, 4,152,162, 96, 8, +// ../Source/Template/GB_log2.h: +uint8_t GB_JITpackage_180 [613] = { + 40,181, 47,253, 96,114, 4,221, 18, 0,230,225,102, 32, 0,153, 27, 87,209,154, +120,225,232,208,118,180,139,154,137, 13,147, 19, 86,217,177,250,154, 88,174,143, +252,255,255,254, 16, 2, 95, 0, 93, 0, 92, 0,213,187,223,174,208,100,131, 77, + 63, 93,199,206,105,156,193,239, 57, 77, 41,164, 9, 7,173,160, 93, 10, 67, 65, +107,171,139, 77,192,127,146,147,198, 32,173, 2,179, 45,189,167, 9, 29,200, 22, + 1, 77,242, 90, 24,142,175, 52,117, 60,127,216, 1,104,237,217,190,142,178,166, +246,190, 73,157,131, 93,207, 42,187,175,127,158,235, 55, 3,196,180,207, 82, 46, + 98,233, 44, 3, 92, 89, 22, 22,219,219,125, 70,210,201,112, 28,202,134,217,100, + 52, 18,172, 74, 7,243, 87,159,190, 95,107,169,103, 89,177, 61,235,171,199, 61, +232, 69,108, 68, 2,145,104, 21,165,178,116,109,109,194, 87, 45,237,233,245,123, + 92,195,174,178,235, 55,206, 63, 10,120,253, 0,224,194,105, 22,205,230,249,172, +222, 7, 0, 5, 76,187, 28,236,164, 9,210,140,235,239,125,174, 62, 49,151,227, +184,179,180,218,236,187, 22, 11,235,135,117,221,151,101, 12,108,202, 25,108,119, +236,152, 58, 71,163,217, 42, 22,169, 45,167,163,208,206, 24, 99,119,108, 43,115, +136, 68,174, 31,198,184, 97, 40, 83,122,198,245,113,216,132,217,109,145,226,182, +137, 54, 74, 87,180,227,234,103,250,225,136,227,252, 36,193,206,182, 54,118, 59, +219,254, 12,115,167,169, 12,241,127, 58,123, 1, 0,171,208, 14, 71,199, 22, 68, +204, 79,159,229,231,117, 58, 14,219, 71,147,134, 22,196, 93,237, 99,236,215,132, + 31,244,116, 99,246,250,234,218, 38, 88, 84,206,157, 76,121,227,111,210,183,135, + 55, 55,126, 13,200,195, 85, 52, 28,135, 2,210,108,184, 14, 6,224,253,172,134, +190, 12,215, 21,155,209,133,126,180,165,117, 35,118,236, 82, 6, 49, 28,185,174, +131, 89,147, 5, 76, 32, 64,132, 16, 98,102,231,226,139,217,182,166,206,235, 78, +171,176,111, 57,117,149,113, 69, 87,141,131, 65,222,234,181,157,160, 13,100,164, + 40, 23, 16, 26, 41,224, 30, 4,228,209, 28,106,133, 90, 68,249, 84,214, 78,190, + 90, 74, 40,108,116, 96, 81,132,238,203, 21, 33,147, 85, 0, 24, 90, 2,197, 0, + 6,142,198,147,239, 2, 64, 7, 20,185,194,198,196,216, 0,160,149,130,248,120, + 1, 56,192, 72,161, 5,228, 2, 28,146,110,152,202,190,223,130,205,133,145,127, + 22,249, 0,166,172,114, 19, 44,221, 97,129, 90,171, 22,251,200, 97, 35, 16,182, +120, 88, 65,255, 9,191, 8,225,220,184,109, 75, 50, 70,159, 94,152,167,183, 36, +135, 63, 88, 15, 39, 86, 68,186, 64, 37, 30, 34,240,171, 5,102,208,204, 60, 51, +221,134,208,106,243, 67,224, 56, 89,133,162,206, 13, } ; -// ../Source/JitKernels/GB_jit_kernel_split_sparse.c: -uint8_t GB_JITpackage_186 [328] = { - 40,181, 47,253, 96,205, 1,245, 9, 0,134,211, 63, 33, 0,241,230,238, 50,108, - 88, 84, 29, 3, 2,125, 57,231,168, 27,125, 12,171,202, 44, 52,237,122, 84,208, - 97,255,255,183,255, 80, 2, 52, 0, 55, 0, 54, 0,137, 75,245, 27, 48, 95, 44, -216,113,106,107, 86,129, 99, 71, 98,182, 51,198,216,105,189, 67,156,187, 95,178, -136, 95,255, 27,186, 36,187,140,195,177,188, 97,139,100, 87,110,198,148, 91, 97, -159,166, 25, 77, 83,216,155, 2,137,138, 26,244,186,177,222, 64, 54,150,224, 44, -246,167,136,186, 20,219,195, 89, 4, 73,108,210,215, 25,178,203,230, 94,102,112, -130,185,135, 97, 61, 37, 80, 2, 42, 42, 12, 4,212, 33,239, 57, 45,113,166, 11, - 13,238, 98, 60,171,149,150, 97,215,161, 88,204, 9,109, 78, 41,167,248,180,203, -176,147,156,214,250, 83,141,245,124,211, 26, 15,168,142,212, 26,159,200,166, 89, - 45, 98, 73,127,129, 9, 81,112,247,124,188, 28,113, 74,115,118,230,225,144,181, -151,101, 61,236,173, 72,236,185, 72, 98,114,147, 0, 79,234,220,133,163,165,243, - 5,188, 63, 76,232,137, 56,240,255,147, 51, 15,135,158,107, 14,141,219,238,101, -185,186,217,108,179, 55,187, 2, 22, 0, 77, 9,121, 67,112, 32, 0,139, 68, 72, -131,248, 58, 20, 76,128, 98,102, 94, 83,192, 86, 2,124, 19,144, 76,120,121, 20, -180, 77,243,231,129, 41,154, 73, 24, 2,198,172,229, 23,131,246,204,119, 0,111, -204,182, 76, 1,154,162, 96, 8, +// ../Source/Template/GB_math_macros.h: +uint8_t GB_JITpackage_181 [706] = { + 40,181, 47,253, 96,155, 5,197, 21, 0, 38,164,108, 32,224, 26,231,201, 71, 0, +188,143,108,167,114, 83,140, 76,168, 47,246,154,206, 81,212,123,234,211,218, 49, +140, 49, 24, 67, 8, 1,103, 0, 97, 0, 94, 0,225, 12, 96,134, 14,193,181,248, +201,148,247,198,237, 25,206, 92, 27,212,112,141,107,127,115,195,141, 42,159, 14, +108,214,109,220,160,227, 44,154, 38,232,148,122,223, 18, 8, 3,130, 99, 28, 12, +136,107, 95,246, 13, 79,150,172,188,243, 62,138,217,162,166,232, 91,200,219, 76, +196,148,188,152, 70,227, 43, 83,161,206,115, 21,194,254,166, 41,212,196,111,136, + 29,182,247, 19,179, 68,145, 38,152, 23, 10, 24, 87, 40, 4, 31,177,252,233,218, +150,197, 84,254, 90, 73,249, 59,109,240,194,185, 19,178,223, 78,217,127, 19,203, +210,181,225,193, 43, 51,190, 98,193,176, 88, 44,154,183,152, 95,237,113, 79,218, +247, 27,174,118,102,153, 87, 41,148,253,158,235,180, 41, 46, 75, 75,195, 95,123, + 49,213, 73,197,119,100,231, 96,149,223, 92, 18,245,173, 78, 20,214,117, 6,176, + 12, 41,228, 1, 81, 50, 34,143, 19, 54, 88, 3,242,227, 93,191,221, 15,231, 45, +174,119,149,251,226, 30, 93,225,155,150, 36,126,182, 53,127,187,205,234,150,205, + 68, 92,114,124,227,174, 75,254,184, 43,211,198,205,149, 65,254,106,124,239,106, + 71, 30,167,163,225,252,182,169,115,157, 29,110, 89, 74,173, 40,250,187,121,109, +203, 84, 93,155,213,223, 58, 60, 30,101,139,202,227, 41,230,217,122,127, 31,171, +188, 3,164, 43, 43,226, 24, 22, 78,176,118, 0,195, 0, 98, 55, 1,111,112, 69, +191, 58, 3, 88, 73,218, 86,169, 32, 31, 90, 58,251,123,116, 52,218,152,253, 92, +181, 85,211,184,236, 13,195, 33,145, 44,187,230,202, 66, 19, 79,211, 24,105,120, + 59, 75,106,232, 18, 29,130, 85,231,193,198,171,198,125,237,236,146,160,202,154, + 39,202, 10,154, 37,197,175,174,194,135, 97,248,195,129,114, 77,168,227,189, 69, +145, 45,109, 99,237,190, 1,113,168,225, 36, 99,140, 49, 19,153, 41, 72, 33,211, + 26, 48,132, 32, 67,103, 61,178, 41, 89,105, 8, 55, 66, 51,145,162,148, 31,229, +219, 1, 89, 11, 16,111, 68, 88,227, 19, 7, 92, 68, 51, 48,236, 23,234, 3, 66, +126,132,148,236,126,101, 83, 62, 53,209,176, 84, 0,144, 36,113, 38,222, 41,117, + 82, 54, 31, 45, 1,101,162,211, 78,164, 32,131, 46,188, 57,187,209,220,132, 90, + 92,158, 51,242,178, 51,205,203, 24, 79,219,174, 89,220, 25, 18, 30,164,171,125, + 92,138,152, 71, 89,183,245, 78,138, 77, 50,231,239,125,139,142,204,188, 91, 60, +159,147,250, 97, 96, 81, 2, 10,168,157,243, 60,190, 71,111, 14, 2, 89,236, 27, +182,198,150, 32, 76, 25,183,232, 53, 70, 3, 84,139,123,249, 90, 86, 44,189,142, +124, 4, 84,229,149, 7, 84,141, 33, 46,188, 28,199, 97, 55, 17, 68,111,120,241, + 14,227,220,200, 16,216,216,209,158,215,228,183, 66,128, 50,202,189,163,183,224, + 3,162,102,254,132, 86, 83,196,195, 95, 38,242, 4,179, 48,159, 24,203,123,148, +209, 36, 81, 1, 25, 83,210, 62,104, 82,149,153,178,126, 55,206, 67,236,220, 18, + 79,208,188, 53, 12,188, } ; -// ../Source/JitKernels/GB_jit_kernel_subassign_05d.c: -uint8_t GB_JITpackage_187 [614] = { - 40,181, 47,253, 96,196, 4,229, 18, 0, 6,162,104, 33, 0,213, 54,238, 40,174, -177, 33, 60, 21,144, 92, 46, 85, 42,205, 0, 16,200, 56,218, 86,102,134,161, 93, -107, 81, 85, 53, 84, 69, 9, 95, 0, 92, 0, 96, 0,122,131, 31,155,241,123, 53, -183, 14, 6,130,225, 74, 20, 8, 6,175, 42,229,150,182, 34,250,112, 76,243, 18, -220, 98,104, 53,110,117, 26,231, 0, 71,154, 35,217,235, 76,199,238,183, 37,187, -233, 53,126,207,181,245,205,241,131, 35,183, 50,189,180,106,103,120,163,178,216, -220,179,138,121, 8,194,196, 31,171, 53,245,144,122,222,199,249, 67,115, 91,208, -116, 68,124, 48,152,174,193, 32,141,107,115,113,251,214,180,122,233,209,207,151, -106, 28,183,177,132,100,173,244, 43,189,227,231,185,101,209,223,179, 93,201,188, -245,235, 75,191, 49, 20,235, 12,105,186,241,235,207,163,103, 86,231, 34,118,133, - 87,153,149, 81,155,103,238,137,224,254,202, 68,192, 12,215,131,149,142,154,103, -249,237,103, 55,126, 79,114, 85,203, 93,156, 7, 6,243, 94,148, 95,127,198, 3, -158,123,105,245,253, 31, 72, 69,162,177,108, 50,223,123,159, 13,184,187, 79,164, - 73,225, 21,229, 23,205, 37,131,153,150,136,164,235, 52,199,166,155, 28,196,146, -129, 80,156,211, 28, 23, 46, 50, 53,146,201,116, 68,166, 9,211,111,243,189,224, -182, 35, 47,239,103,127,143,111, 77,134,190,173,111,210,227,214,103,210,203,109, -181,151,152,250,139, 40,232,152, 86,159, 72,176,136,127, 44,119,211, 84,154, 20, - 94,117, 29,100,219, 54,221,116,228, 8,229, 56,147,251, 51,160, 98,191,233, 29, -195,223, 19,224,239,145,183, 98, 91, 85,149,128,162, 4, 84, 40,139,163,234, 16, - 76, 71, 51,183,233,179, 30,254,192, 55, 65, 77,142,226, 56, 67,249, 71,223,252, -106,175,158,161,175, 98,168,240,198, 53,203,208, 25,254,205, 50,139,225,135,243, - 63,127, 26,139,118, 87, 76,126, 30,170, 52, 75, 32, 48,132, 16,231,142,117, 78, - 8,217, 82, 7, 72, 1, 39, 56, 4, 31, 84,198, 25, 54, 66,144, 36, 19,102,204, -240,183, 80,184, 6, 98,135,130, 36, 56, 7, 76, 8, 5, 0,203, 3, 71,176,114, -128, 60,131,152, 67,201, 51,140, 57,128, 84,131,201,193, 95,160, 42, 96,204,212, - 79, 3, 43,237,248,131, 40,168,126, 10, 11,130,172,182, 5, 64,119, 13, 15,226, - 39, 24,210, 64,161,206, 24,201, 64, 6,202,254,192,209, 95,253,178, 33,122, 55, -176, 39,134,160,111,148,231, 95,139,179,116,206,225,116,177,107, 38, 24,212,114, -107,122,191,160,207, 23,181, 36, 21,161,239,231,132,188, 17, 17,240,180,244, 96, -240, 13,215,208, 98,102, 27,168,204,113, 41,115, 28,202, 0,195, 52, 49,163,118, - 91,102,122,223, 37, 86, 27,220,130,232, 81, 20,184, 1, +// ../Source/Template/GB_memory_macros.h: +uint8_t GB_JITpackage_182 [820] = { + 40,181, 47,253, 96,241, 13, 85, 25, 0, 86, 36,111, 39,208, 20,177, 14, 84,196, +253,186, 96,251, 85, 64,172,128, 59,183, 32,236, 78, 33, 15,224,254, 90,189, 89, + 2, 97,182, 31,127,204, 62,224,139, 7, 69,238, 47,103, 0,102, 0,100, 0,140, + 89,176, 94,110,177, 44,163,188,147,175,137, 9,247,100, 75, 78, 19,141, 7, 11, +202,197, 28,203,205,212,251, 98, 30,146,122,150, 93,254, 16, 42, 6,149,137,194, +129, 65,229,206,130,254, 90,114,224,195, 41,151,119,176, 75, 53,121,241,183,185, + 76, 13, 88,133, 54,194,194,109, 97,221,240,149,219,230,249,164,242, 66,139,102, + 25,252, 45, 24,165,169,181,160, 86,117, 44,213, 88,171, 26, 34, 46, 73,207, 68, +146, 2,175, 3,183,184,107, 32,251,235, 1,232, 1,208,227,157,210, 86, 18,231, + 92,133, 34,232, 4, 4,159, 38,140,138, 51, 0,188, 66,143,146,132,227,174, 95, +133, 48, 24, 10,226,255,159,199, 34,131,241,208,215,226,143, 14,250, 71,250,190, +147, 90,191,147, 39,212, 44,215, 91, 26,111, 97,182,145,173, 37,105, 15, 79, 41, +240, 72, 84, 27, 13,229,112,201, 84, 27,148, 38,131,201, 68,190,102,148, 2,143, + 1,165, 50, 9, 22,172, 13, 98,105, 72,148,215,228,206, 88, 64,228,111,254, 34, +174, 95,245,104,203,199,189,105,128,208, 63,182, 12,175, 14,132,190, 16,158,243, + 85, 12,245,107, 90,198, 53, 20,125, 33,210, 55, 93,116,200,245,227,218,185,111, + 66, 14,154,105,186, 56,148,212,187, 40,250, 37, 41, 7,130, 94,178,112,215,127, +174, 70, 80,197,196,244,170, 10, 51, 77, 64, 84,149, 20,253,145,244, 23, 48, 57, +182,108, 68,118,174,159, 12, 5,165,201,168,158,135, 34, 34,237,133, 13,143, 89, + 91,255, 65, 77,163, 54,114,124,164,124, 81,235,108,217,141,122,192, 75,239,179, + 45,114,111,239,130, 43,255,186, 3, 67,162,252,100, 14,230,167,176,221,238, 22, +167, 60,123, 76,136, 89,157, 11,239,214,241,199, 28,218, 1, 19, 26,222, 99, 74, +214, 96,159,177,123,122,189,147,221,201,214,110,214,185, 25,187,224,128,146,160, +113, 49, 83,104, 68,100, 72, 82, 90,201,176, 6, 64,134, 8, 77,205,117, 3,241, +112, 3, 95, 60, 34, 66,172, 22, 59,156, 67, 20,187,103,217, 24,214,152,113, 51, +220, 32,143,148,163, 24,163,216,248,195, 79, 18,155,111,253, 96, 63,174,118,146, + 9,206,182,185,181,184, 28,152,190,143, 4, 66, 11,201, 60,203,107, 65, 88,102, +219,164,225, 7, 91, 13,182,156, 60,216,164,192,159,226,188, 25,107, 16,205,199, +182,167, 92,163, 1,238, 62,240,153,232,122, 87,137, 10,104, 25, 51,123, 51,192, +156, 98,202, 40,217,171,174, 0, 43, 75,149, 34,222, 20, 78, 4,165,149,134,231, + 66, 41,187,161, 7, 24,161, 68, 99,212, 2, 28, 17, 32,123, 73, 7, 65, 43, 58, + 11, 54,115,212,209,129,215, 95,194, 53,173, 28, 43,193,103, 28,113,176, 92,170, +128, 11,210, 68,120,134,130,117,153, 1,171,117, 31, 5,207, 96, 1,112, 64,103, + 6,126,224,249, 28, 4,114, 13,120, 32, 4, 88,122,187,237, 32, 14,237, 64, 5, +200,108, 63, 1, 88,191,195, 6, 29, 30,200, 18,141, 60,122,213,118, 18,186,133, + 31, 34,113,101,213, 14, 65,239,233, 89,135, 66,186,131, 4, 11,162,244,240, 44, +161,177, 42, 0,247, 99,115, 39, 44,251, 44,133,163,136, 61, 62, 39,140, 42, 32, + 27,134,225,105,176,101, 39, 12,253,140, 3, 30,115,168, 6,195,227, 80,239,147, +215,137, 27, 0,145,126,138,100, 9, 9, 51,135,100,162,193,239,160,116,238,191, + 21, 58, 14,252,212, 8, 57,244,234, 90, 92,115,106, 71, 90,220,192,167,138, 0, + 26, 52, 49, 42, 51, 81, 47,192, 10, 39, 0,234, 62, 24,133, 62,188,162, 23, 15, + } ; -// ../Source/JitKernels/GB_jit_kernel_subassign_06d.c: -uint8_t GB_JITpackage_188 [781] = { - 40,181, 47,253, 96,125, 6, 29, 24, 0,198,232,120, 32,224, 88,231,208, 5,174, -249,187, 22,106,173,180,214,196, 24,175,107,194,237,185,129, 41,185, 43, 84,214, - 49,140, 49, 88, 35,224,113, 0,109, 0,108, 0, 93,187,154,109,115, 20,140,214, - 11, 6,138,108, 50,174, 75,183,113,115,142,179, 39,170,156,127,159,246, 11,113, - 40, 28, 48,133,161,112,248,128, 10,126,225, 90,154,145,103,218, 81, 94, 14,193, -234,249,213,209, 46, 16, 79,156,119,178,104,124,167,216,233, 92,199,142,213,216, - 54,119, 92,191,221,182,103,250,117,231, 55, 41,190,227, 15, 76, 99,251, 23, 52, -227, 18, 5,105, 69, 21,227, 25, 26,177,252,218,222, 38,201, 92, 71, 18, 50, 57, -129, 96, 97, 4, 66,217,246,195,236,251,198, 14,235, 42,134,167, 56,193, 92, 67, -239,208, 51, 30,193, 87, 40, 54,180,152, 83,189,121,130,218,229,242,201,128, 35, -165,179,233,252,196,190,114,187,225,251,139, 76,199,155,113,227,111,118, 34, 24, - 82, 73,194, 83,123,152,127,101,219,184,175,248, 5,215,120,214,111,190,239,188, -118,206,206, 99,126, 93,157,135,246,140,107, 90, 99,176,184, 22,130,237,139,115, -161,151, 27, 99, 21,178, 3,214, 30,157,162,246,197, 13, 29,121,145,100, 56, 18, -203, 47, 26, 68,115,153, 72, 15,165,130,178,243, 93,154, 94, 22,122, 96, 91,190, -141,109, 53,181, 29,116,245, 24,156,248,157,103,223,252, 14,225,198,147,190,113, - 15,170,151,191,111, 10,110,111,231, 60,197,219,246,242, 13, 59,202,159,181,200, - 78,143, 62,119, 56, 30,149, 43,206,245,250,133,111,139, 40,207, 78,250,237,207, -182,135, 92,211,145, 11, 43,238, 26, 2,195, 20, 30,189,204,117,238,175, 57,220, -245, 6,150,181,178, 24, 31,116, 58,146,109,131,220,137,224,246,142,185, 47,128, -102,157,231, 39,130,157, 37,224,205,141, 31,181, 86, 87, 57,219,129,220,184,147, - 30, 30,197, 80,148,164,219,166, 78, 54,173, 31,150,164,166, 33,200,248, 3,147, - 40,240,142,119, 18,117, 67,176, 65,217,125, 59,108,195,154,169, 29,187,147,232, - 12,125,223,164,207, 45,146, 96, 40,158,204,135,211, 53,215,213,192,255, 91, 42, -139,241,129,224, 26,143,134,179,145,153, 9,165,211,209, 32,159,124,168, 81,153, - 82, 10, 33, 42,210,180,160,146, 54, 3, 32,132, 16, 4,161,213, 1,178, 8, 73, -201,112,137, 33, 14, 10,104, 40, 80, 80,251,127,180, 1, 57, 36,146, 27, 49,183, -153,251, 10,220,101,157, 22, 43, 1,208, 63,109,224,182,207,198,211, 45, 23,176, - 43,234, 55, 8,119, 3,142, 41, 70,203,112,248,195, 72,178, 16,182, 37,114, 96, - 1,105,218, 24, 78, 20,149,132, 89, 30, 38, 74,238,191, 59, 38,149,142, 38, 16, - 86, 2,218, 36,251,176,158,224, 80,205, 46,249, 85,112,230, 72, 43,124, 33, 66, -145, 74, 1, 54,233, 58,219,103,125, 28, 43, 86,195, 59, 19, 29,146, 5,111, 33, -186,233,148, 87,161, 61,233, 10,172, 35, 74,174, 90,168,147,197,213, 95, 72,160, - 66,116,180,200,139, 34,145, 67,124, 34,134,198, 16, 31,179,155, 31,212,167, 53, -219, 83,162,125,251,152, 91,254, 59,159,121, 86,150,117,116,164,217,238,202,114, - 52,127, 82, 79, 48,111, 31,200,199, 52,166,177,158, 6,116, 25,221,174, 13, 12, - 79, 91,225,179,100,117,192, 94, 60, 33, 35, 98,116,222,121,113, 81, 70, 8,196, -170, 9,242,174,226,221,202,164,240,214,188,120,244,164, 33,122,178,188,148,249, - 64,153,249, 48, 77,164,106,227, 97,166,233,114, 54, 24,220, 18,143,210, 3,248, - 2, +// ../Source/Template/GB_meta16_definitions.h: +uint8_t GB_JITpackage_183 [2278] = { + 40,181, 47,253, 96,159, 48,229, 70, 0,138, 77, 84, 14, 45,176,204,138,117, 42, + 46, 0,184,110,151,240, 15, 1, 82, 30, 44,102, 91, 47, 54, 46, 41, 84,216, 84, +165, 0,211,237, 11,170,221, 6,144,231,148, 61,205,157,210,159, 6,255,193, 46, +215, 0,219, 0,216, 0,116,179,222,235,188,115, 20, 40,124,131,193,120,160, 0, +114, 50,255, 15,129, 68, 30,241,224, 58, 24, 9,122, 85,221,211, 30,174,164, 22, + 32,242,137, 40,208,123,101,142,121,190,177,242,237,207, 75,185,210, 83, 62,240, +193, 14,134, 98, 66, 96,163, 30,209,126,155, 94,177,213,190, 97,114,158,107,180, +108,117,182, 58, 47, 21, 61,117,122, 62, 43, 21,179,243, 4,196, 97, 2,193,192, + 22, 21,169, 59,165,114,123,250, 74,174, 50, 12,108, 37, 83,109,193,224, 96, 2, + 99, 82, 49, 71,101,203,155,219,107,109,244,230, 24,230, 30, 17,128,112,128, 96, + 56,240,224, 0,241, 8, 5, 61,178,205, 17, 39, 62,113,223,172, 59,179,238, 60, +226, 56,139,103,209, 88, 41, 40,204,225,219, 26, 7,242,226,221, 61,243,219,109, + 91, 35,181,103,235, 94,206, 87,146, 41, 87,191,209,186,183,213,180, 78,177, 38, + 86,206,190, 45,219,195, 21,140,120,136,151, 51,248, 40,222,208, 0, 97,104,104, + 8,242,146,173,142, 95,206, 87,163,217,164, 78,193,104, 46, 32,104, 52, 80,131, + 81,208, 0,126,224, 5, 98, 58, 12, 48,164,139, 75,124,212,237, 28,116,231, 92, +116,237,156,115,174, 93, 67,174, 47, 23, 37,209,185, 43, 62, 72, 50, 78,221, 45, +191, 53, 94, 11,157,139,176, 86,239, 21, 81, 32,119,230,184,160,139, 58, 19,121, +244,209,244,160, 63,248, 30, 5,228, 73, 1,172,201,190,145,233, 1,192,112, 82, + 39,243, 52, 30,205,120, 95, 23,244,190,213, 43,249,186, 7, 87,178, 47,111,156, +226, 0, 51,161,201,192,207,245, 30, 65,219,208, 65,236,141, 25,134, 69, 79, 87, + 82, 82,185,100,140, 99,250, 2,134,105, 30, 26,179,219, 83,197,132,230,226,130, +225,116, 24, 44,255,144,159,233, 65, 2, 53,174, 43,227,244,221,242, 71, 95,249, +117,221,242,207, 47, 44, 16,113,101,255, 90, 57, 41,182,253,199, 22,227, 8,195, +217, 56, 12, 78, 4,157,211,113,146,133,133,131,155,139, 4, 48,194, 3, 84, 14, +178,242,245, 78,166,226, 85,164, 99, 98, 60,157, 98,182,208,107, 71, 10,163,138, +111,100,224, 74,237,196, 0,219,104, 81,184, 0,173, 70, 49, 41, 8,159, 71, 70, +242,134,237,234, 50,246, 22,156,133,163,193, 76, 84,168,188, 37,146,190,104, 92, +104,198, 61, 46,116, 76, 39,179,105, 0, 43, 50,151,190, 22, 12,164,174,124, 66, + 68, 34,145,168,200, 72, 89,203, 84, 59, 99,123, 44, 82, 77,183, 91,177, 92, 54, + 94, 79,191, 98,108,202,180,207, 45,103,147,226,233,151, 8,196, 31,109,191, 16, +185, 71, 23,122,201,251, 2,125,163, 84,198, 89,195,194, 66, 67,103,131,225,112, +220,172, 62,239,175, 58, 59, 78,117,229, 76,147,159,242, 21,170,177, 57,101,155, +253,134,113,213,232,197, 52,203,245, 20, 10, 77,102,147,145, 50, 14, 3, 62,208, +184,137,251, 39,150, 43, 61, 79,191, 83,254, 90, 45,251,101, 99,246,203,198, 54, +100,219, 71,174, 23,244, 22, 44, 15,183, 88, 30,121,208,135, 12, 16, 72,133, 58, +239,176,197,108, 86, 31,136,106,215,156, 24, 79,205,146,171, 55,204,123,230,232, + 27, 49,174,183, 54,180, 41,217, 85, 94,177, 32,195,216, 20,239, 45, 27, 45,217, +151,204,209, 27,183,241,209,195,237, 22, 59, 48,139,228, 29, 61,106,232, 10, 46, + 27,135,225,192, 7, 27,167,201,188,135, 95,107,163, 43,141, 17, 73,155,158, 99, +115, 78,149,107, 72,146,244,233, 76,170, 60, 34, 81,232,159,134,146, 36, 73,146, +244,137,251,229,218,154, 4,174,147, 89, 85, 34,210, 50,118,219,210,173, 59,167, +115,141,119, 82, 36,147,208, 50,248, 33, 63, 89,132, 1,136, 35, 24, 48,224,159, + 16,129, 16, 94, 19, 58, 8, 2,153, 29, 44,167, 5,129, 36, 97, 81,246, 91,141, +178,167,215, 89, 35,203,198,174,109, 46,224, 7, 74, 80,227, 46,156,107,145,104, +180,196, 77, 96, 48,216, 46,205,216,211,167,125,189,247, 28, 26,218,110,127, 60, +234, 75,222,212, 37,222,175,220,193, 98, 28,130, 77,168,114,180,142, 41, 83, 35, + 34, 35, 41, 73, 10,173, 1,242, 40, 6, 33, 57, 28, 72,113,178,118, 3, 82,160, + 40, 11, 33, 17, 66, 18, 48, 34, 32, 4, 17, 1, 49, 2, 67,160,128, 8,132, 72, + 48, 34, 34, 98, 82,226, 28,164,252,234, 14,113,141, 98,179,139,200,224,224,240, + 16,102, 28,241, 8, 27, 33,158,197, 54,132, 57,143,170,217,173,254,228,120,189, + 78, 73,192,139, 75,209,192, 34, 85,183, 75,205, 28,118, 55, 41,173, 63, 23,128, +122, 39,112,204, 29,126, 83, 55,171,105, 41,146,221,244,148, 39, 27, 4,238, 23, +204, 92,233, 92,154,220,227, 41, 55,115, 99,126,246, 49,180, 10,167,173,122, 9, + 89,168, 65,230, 24,184, 82,189,211, 82, 14,138,216, 15, 4,183, 46,241,231,149, + 51,176, 71,229,200, 27,160,112,218,242,248, 16, 85,255, 3, 52,138, 29,159,227, +180,243,249,166, 29,176, 38,238, 72,117,231,184,110,166,145,235,208,144,247,138, +112,195,160,141,235, 30,109, 1,244,144,156, 97,232, 92,213,247,118,157,245,172, + 75,115,147,146, 29,155,180, 76,115, 21,249,119,220, 54,130, 27,253,180, 11,168, +172,215,195,136,135,211,134,116,118,217,120,117, 65, 67,194,113, 81, 57, 43, 15, +188,124,148, 88,180, 71,171,120,125, 87,217, 35, 0,154,252,191,179,111, 70, 32, + 90, 4,125, 50, 64,233,135, 40,128,203, 37,241, 9, 40,147, 21, 39, 69,108,106, +197,136,248, 92, 44,219,110,169,206,247,183, 11,193,204, 73, 73,188,231, 79,103, + 79,187, 26,168,138,241,115,240, 17,222, 60,164,134, 3,190,177,144,164, 35,237, + 17, 36,117,206,110, 63,143,123,198,240,143,142, 31,155, 1,132,225, 18, 93,101, +153,172, 80,202,252, 95,110, 36,122, 24,211,223,178, 80, 38,112,243, 43, 72, 77, + 14, 69,199,168,118,198, 28,101,104, 56,240,196,107,154,202,224, 46, 56, 66,168, + 51, 2, 22,184,155, 94,224, 46,145, 41, 52, 48, 14,249,138, 64,101,235, 52,242, +176, 0, 4, 99,252, 45,115,121, 33, 47, 61,210,157,101, 62,102,210, 73,228,114, +194,149, 36,245, 69, 53,101, 77,165,111,162,110,252, 28,107, 18,120,148, 73,150, +155,251,235,152, 6,200,111,162,161, 31, 79, 82,168,113,212, 31, 3,228, 72,111, +202,182,208,176, 16, 82,154, 10, 37,141,168,184, 4,149,200,125,236, 3,201,187, + 83,224,245,212,194,163,232, 45,143, 79,122,237, 7,149, 14,224,240, 29,215,211, + 65,142, 51, 46,164,211,137,245, 17,239,160, 16,192,152, 72,128, 67,184, 60,192, + 10, 61, 84,116,199,222,144, 44, 13,231,164, 73, 28, 5,234,169,175, 68, 84, 36, + 17,222,236,125,181,217,167,237,111, 43, 12,110,166,175,235,160,189, 60,116, 73, + 87,117, 84, 32,234,245,156,170, 90,245,125, 92, 13, 99, 84, 9,245,101,249,146, + 97, 19,155, 18,103, 95,213, 84, 55,194,216,181,128,230, 10, 0, 32,203,192,201, + 64, 32,180,237, 2,143, 8,179, 74,194, 41,136, 97,150, 80,139, 86, 13,131,130, +201,172,249,234,245,198,169, 79,147, 75, 4,166,198,180, 96,179,109, 77, 2, 21, + 45, 19,199, 25, 55,150,133,208,105,105,180, 90, 83, 22,145,140,109,240, 33,118, + 16,228, 9,192,188, 4, 83, 78,233, 29, 12, 30,102,142, 6,179, 43, 52, 55,254, +140, 66, 84,195,231,168,204, 10, 74,128,135,204, 30,254,214,246,222, 50,129,148, + 6,192,209, 38, 72, 40,192,244,120,157,206, 61,200, 66, 33, 48, 76, 3, 47,199, + 57, 54,173,215,163,222, 91,130, 31,205,109,231,116,143,192, 5, 57, 32, 38,123, + 16, 3, 58, 49,127, 99,241, 74,149,137, 91,193, 37, 26, 86,218,137,177,240,152, +146, 25,111,210,223,149, 87, 37,156, 40, 59,238, 98,140,100,143,173, 74, 36,193, + 95,155, 10,181, 67,150,190, 24,127, 28,253,147, 85, 68,180, 64,133,220,175, 82, + 60, 29,210,101,139,190,116,189, 95,120,122, 39,111, 43,126,225, 1, 99, 91, 28, +133,131,178, 63,240,145, 2,137, 35, 34,133, 8,200, 1,185,118, 43, 36, 93, 54, +136, 9, 40, 12,140, 43,160, 61,101,144,111, 8, 67,119, 54,163,161, 89,222,136, + 40,130, 55,132,222, 63,245, 12, 0,115,210, 30, 20,102, 22,195, 74, 35, 63, 24, + 86,233, 92,154, 36,196,228,239, 24,134,113,135,198, 60,142, 60,241,128,200,118, +210, 93, 29, 66,118,103,221,128,204, 2,206,244,215, 57,211,216, 14, 20, 80,155, +190, 25, 70, 34,120, 65, 29,134, 53, 63,198,138,135,194,234,161,251, 44, 68, 53, +127,123,144, 35,124,207,113,255, 48, 96,127,186,254, 71, 95,153,244,225,239,200, +109, 71,119, 97, 3, 89,192,107, 37,171, 1, 8, 89, 51,195,190,244,214,204,107, +129, 93, 16,225, 84,241,229, 78, 86, 55, 36,234,158,115, 87, 53, 71,157,237, 83, + 68, 48,157,143,238,163, 55,221, 86, 50, 92,247, 43, 7,150,239,142, 43,129, 31, +210, 70, 28,180,134,151, 87,170,159,171,168,229,116, 59,240, 64, 3,185,214,152, +200, 78, 65, 61, 89,196,206, 61,246,242,152, 48, 10,122, 52, 45, 4,245, 92, 38, +168,128, 98, 96, 47,207,242,139,247,121, 45,245, 15, 15,224, 58, 65, 31,193,193, + 5,206, 13, 47,204, 23,162,216,119, 95,197, 65,159,118, 55, 77, 38, 42, 13,167, +237, 44, 46,159,147, 53,162, 19, 77, 81, 75,158, 92, 1,207, 97, 63,112,113,185, + 35,159,205,250,128,224, 73,126, 8, 93,176,196,232,182,188,200, 71,239,108, 44, + 5,234,204,113,106, 62, 35,129,118,177, 97,225, 80,230,121,128,231, 87,204,150, + 72, 72, 50,185, 91,226, 75,106,246,211,155,131,117,165,198,188,106,172,204, 17, + 49, 61, 88,149,230,191,212, 13, 26,233,184,249,201, 81, 64,239,235,192,116,255, +138,137,173, 94,113,238,216,232,103, 78,197, 13, 79,225,114,239, 25,164,239, 48, +182,156, 59,250, 49,135,248,110,172,118,127,252,176,102,128, 62, 1,246,149,204, +246, 8, 94, 76,122,217,118, 82, 30, 8, 1, 62,145, 8,213, 52,184, 20,198,221, +228, 57,173,182, 17,254, 65, 75, 31, 84,117,180, 68, 62,225,193,149,112, 39, 45, + 22,164,145, 64, 98,174,142,209,151, 73,175, 50,131, 13,223, 55, 77,173, 86,152, +182, 22,255, 64,178,174,127, 18, 53,207,148,181,229,242,167,232, 27, 59, } ; -// ../Source/JitKernels/GB_jit_kernel_subassign_22.c: -uint8_t GB_JITpackage_189 [554] = { - 40,181, 47,253, 96,100, 4, 5, 17, 0,214,221, 93, 33, 0,181, 30,150, 87,176, -218, 72, 60, 52,116,220,140,243, 35, 64, 72,162, 20, 0,251,243,145,128, 4, 0, - 51,249,255,191,251,195, 11, 83, 0, 82, 0, 87, 0,151,165, 64, 28, 46,175, 40, -229, 4, 93, 69, 19,226, 5,204,199,111, 99,176,106,156,192, 97, 91,246,133, 51, -107,139,215,121,134,220,239, 42,114, 83,158,118, 82,237,115,116,194,235,251,157, -235,250,249,191,145,143,222, 24,248,195, 23,180,112, 93,242,126,170,214,211, 35, -106,105,255,230, 15,201, 93, 65, 50,211,220, 96,152, 44,131, 33, 34,165,243,233, -180,225,103,249,232, 62,227,251,169,190,216, 84,204, 91,191,182,211, 11, 65, 76, -101, 72,207,125, 95,127, 14,125,227,235, 11,194,117,121,135,191,253,149,233, 80, -184,172,255,232, 12, 49, 95,228,175, 94,221,247, 59,137, 69,235,102,113, 32,152, - 66,247,162,252,250, 51,174,247,247,169, 25,183, 22,115, 66,226, 58, 4,242, 63, -123,250,226,186,233, 21, 61, 15,209,233,177,118, 82,223,255,137, 84, 36, 26,203, - 38,227,125,231,213,128,187,251, 68,154, 24, 94, 81,126,209, 92, 50, 24,105,209, - 36, 28,135,101, 27, 78,110, 17, 75, 38, 66,241, 13,203, 46,155, 38, 53,146,137, -204,180,105,178,109, 27,139,228,126, 56,238,209, 97,225,237, 91, 79,234, 99, 55, - 63,219,137,129, 1,211, 84,154, 24, 94,113, 92,228,241,200,178, 70,249,205,226, -254, 12,160,133,223,211,134,224,111,153,105, 0,255, 78,180,244,214,170,170, 4, - 20, 37,160, 66, 25,143, 70,143, 96, 58, 26,217,153,188,218,221, 15,120,242,211, - 98,136, 67, 25,202, 63,242,228,211,106,181, 12, 61,197, 32,195, 29,150, 28, 65, -111,184, 39,199,140,193, 7, 3, 69, 32, 64,132, 16,100,200, 57, 48, 4,190,157, - 43, 57,211,241, 65, 36, 88,149, 25, 39,222,136, 64,146, 32,204,136,195,215,128, -226, 25,136, 15,117, 63,116, 3, 39, 4, 1,128,229,129, 30,254, 6, 72, 51,136, -114, 40, 61,195,224, 0, 72, 51, 88, 19,188, 26,170, 0,198, 76,253, 32,176,210, -142, 63, 68, 65,232,167,179, 32,200,234,153, 0,186,215,240, 19, 63, 65,148, 6, -171, 60, 99, 96, 86, 49,194, 44,205,135,221, 50,172,165,189, 66, 24, 0, 71,149, - 78,172,125, 78, 62, 56, 56,147,233,248, 29,107,168,249,122,199,136,111,238,132, -187,225, 14,166, 69,147,115,200, 89, 42, 98,135,105,218, 12, 98,182,204, 84,125, -157,174,214, 57, 31,207, 95,189, 1,129,162, 40,112, 3, +// ../Source/Template/GB_meta16_factory.c: +uint8_t GB_JITpackage_184 [623] = { + 40,181, 47,253, 96,110, 39, 45, 19, 0,102, 22, 70, 32, 32,145,117, 3, 79,107, +131,126, 89,140, 81,194,197,153, 62,122, 70, 61, 75,166,194,250,215,122, 10, 20, + 83, 1,140, 4, 32, 15, 59, 0, 61, 0, 61, 0,223,172,108,177, 74,249, 51, 69, +136,100,105,242, 54, 18,141,175,212,166,206, 85, 51, 57,233, 51,147,143,191,150, +126, 90, 43, 55,118,121,106,143, 27,203,234, 7,248,196,118,109,174, 36,165, 14, + 80,230,198, 40,169,113, 2,193, 65, 4, 66,125,205, 76, 90,239, 43,221,139, 10, + 80, 91,149,212,226, 19,183, 43,173, 57,235,249,128, 26,103, 93, 85, 8,100, 81, + 72,162,217,155,219,184, 39,199,217,202,212,201,175, 43,254, 49, 20, 94, 1, 66, +192, 87,248,160, 18,252,193,117, 35, 21,143, 98,255,100, 33,185, 56,224, 23,211, + 36, 74, 38,106,122, 80,209,202, 22,243, 75,142, 51,160,112,165,162,224,180,254, +191,227, 56,119,128,145,178,136,116, 86,105,207,128,115,209,117,105,232,175,253, +163, 73, 44, 87,204,159,219,218,102,253,193,137, 25,206, 1,172, 8,103,182,230, + 74,123,102,154, 0,181,223,114,221, 50,137,237,173, 36,214,215,185, 14,124,240, +193, 23, 57, 17, 62,248,224,195,245,177,241,213, 29, 64, 21, 97,192,123,106,174, + 42,171,210, 15,129, 84, 24,146, 24,161, 60,164, 23,125,160, 97, 46,153, 17, 10, + 82,146, 58,149,225,112, 2, 17, 17,177,177,217, 1, 36, 17, 50, 14,109, 77, 38, +197,130, 98, 39,179, 83,132,204,150, 58,185, 18, 76,100, 37,212, 78,166,128, 41, +164,163,132, 88,149, 82, 97,228, 74, 38, 67, 5, 10,203, 21, 43, 5,177, 86,152, +108, 6, 86,164, 58,168, 66,149, 80,104, 69,178,172, 82, 61, 82, 19, 42,165, 87, +110, 55,164, 50, 10,149,142, 50, 98,213, 88, 44,113, 16,219, 23, 11, 20,150, 42, + 86, 16,196,108,215,185, 75, 89, 80, 29, 92,177, 90, 80,136,133,207,118, 84, 29, + 9, 21,150,211, 27, 14, 31, 96,105, 74, 1, 67,249, 84, 84, 17,170, 95, 65, 62, + 98,129, 8, 88,172, 58, 64, 45, 18,139, 74, 58, 51, 97,169,122, 48,101,245, 16, +129,237, 60,187,137,154, 38,229,178,144,216,113,104,192,209, 48, 16, 75, 83,148, + 23,123, 79,208,166,246, 80, 82,146,163,140,148, 2, 62, 66,143,132,116,133,169, + 35,177,100,177,202, 32, 22,128,133,105, 63, 12,165,156, 82,200, 7, 87,164, 22, + 84, 14,194, 44, 29, 8, 9,179,139,202, 9,150, 4,172, 82,183, 27,229, 93,189, +147,247, 24,246,119,139, 85,200,214,181, 11,225, 47, 33, 61,251,172,145,192,141, +162,191, 95,142, 53,187,236,187, 40,189,238, 9,202,186, 17,112,208,148,142, 94, +115, 22,192,209,241, 72, 80,184, 34,110, 79,195,144, 82,233,118,119,111, 16,133, + 69, 4,196, 17, 74,101,151, 54,105,138,249,153,201,206,232, 90,160, 47,136, 42, + 69,193, 30, +} ; + +// ../Source/Template/GB_meta16_methods.c: +uint8_t GB_JITpackage_185 [400] = { + 40,181, 47,253, 96,135, 3, 53, 12, 0,118,213, 67, 32, 16,147,117,230,109,189, +195, 75,154,158, 23,212, 5,150,111,250,227,110, 85, 67,243, 67, 40, 80, 51, 98, + 35, 2, 0,168,242, 27, 60, 0, 56, 0, 55, 0,146,194, 80,168, 62,136,130, 19, + 48,237, 64,198, 39,247,207,204,118, 67, 45, 39, 92, 78,242,230, 6,239, 99,209, +248,194,237,234, 76, 57, 87, 20,167,207,181, 57,194,236,218,236, 95, 96,105,103, +194, 0,115,111,176,247, 56, 69, 69, 18, 69, 5,199,246, 70,184,121, 95,168,197, +150,167,168,255,143, 34, 80, 84,152, 42,169,103,132,155,251,226, 54,205,104,174, + 45, 35, 82,227,218,145, 74, 36, 12,195,154,100,119,110,227,174, 28,231,169,161, +149,107,154, 59,225, 80, 21,170, 86, 98,207,227, 6, 71, 88, 40, 12,193,101, 63, +203,145, 35,237,221,158, 45, 96, 78,184, 90,154,105,165, 89, 75,192, 91,114,180, + 88,105,224, 93, 86,120,247,204,254,147, 41,126,207,252,106, 47,107,111, 45,159, +225,204, 1, 81, 20,122,239, 61,137,228,226,176,220,196, 18,121,149,134,149,129, + 52,174,138,179, 46,236,138, 96,159,249, 25,149,181,114, 14,248,181,247, 54,174, + 42, 67, 99, 56, 55,236, 96,104, 92, 14, 98, 97, 7,173, 1,113,234, 12,181,109, +211, 25, 67,228, 47, 32, 80, 68, 48,136, 24, 15, 40, 4,203, 1, 25, 10,139,216, +208, 17, 76, 23, 14,173,251,132,151,103,215,137, 88, 50,160,188, 5,162, 73, 64, + 79, 0,112,162, 9, 44,192, 46, 33, 88, 2,186,229, 81, 68,163, 84, 70,196, 68, +220,227,144, 9, 47, 65,230, 94, 49,185, 83,200,143, 37, 44, 49, 48,113, 47,200, +107,196,106,104,196, 5,221, 30,130, 10, 85,160, 16, 1, 38,170,113, 11,202,160, +105, 8, 51,105,199, 2,107,112,197, 35, 36, 44, 18,170, 23,210,250, 21, 45, 67, + } ; -// ../Source/JitKernels/GB_jit_kernel_subassign_23.c: -uint8_t GB_JITpackage_190 [552] = { - 40,181, 47,253, 96, 86, 4,245, 16, 0,166, 30, 95, 33, 0,181, 30,214, 44,146, -104,166, 6,176,193,176, 9, 42,226,201,100, 81, 10,128,253,249, 72, 96,133,195, - 58, 75,255,239,254,240, 2, 86, 0, 84, 0, 88, 0, 22,115, 10,113, 25,174, 42, -113, 48, 92, 62,152, 2,167,114, 5,201,135, 91,152,143, 60, 13,126, 53,227, 20, -135,109,153, 23, 74,172, 41,184,215,117,115, 19, 6,253, 51,150, 97,198,156,250, -124,191,243, 92, 31,191, 23,114,204, 25, 4,119,184, 98, 90,136, 43,222, 78,205, - 89,114,118,142,246, 47,254, 79,212,213, 19, 51,205, 11,133,169, 42, 20, 2,151, - 19, 85,172,229,135,233,251,249,113,248,237, 57,229, 79,105,195,199,209,209, 61, - 6,111,167,186, 66,207,141,117,254,108, 37, 13, 63,112,198, 79,150,219,166,169, -184,130, 66, 92,222,129,158,126,202,100,176,174,234,189, 41, 67,204, 21,248, 43, -173,250,126, 23,169,102,221,170,205,227, 98,117, 15,194,159, 31,227, 89,123,157, -138,113, 27,223,129, 80, 34,153,138, 6, 67,191,163, 53,224,238, 62,145,166,133, - 15, 4,110,201, 88, 48,151, 88,209, 34, 28,135,101, 26, 46,110,144, 10, 6, 50, -241, 13,203, 44,155, 22, 51, 17, 73,204,180,105,178,172,221,180,162,181,202,210, -159,227, 58,239,207, 29,174, 55,199,169,199,219, 71,186,142,174,244, 7, 73,207, -175,156,142,121,119,165, 59, 36,145, 11, 6,211, 84,154, 22, 62,224, 56,136,195, -145, 97, 77,224, 23,111,253, 24, 48,173,215,210,134,223,235,152,105, 0,255,110, -219,121, 39, 90,187,251, 1, 26,189,188, 67, 48,140, 31,252, 33, 26,127, 86,155, -227,231, 39,248, 45,188, 81,197,209,231, 12,167,113,132,193,239,191,248,143,105, -190, 96,213,243,110,234,159, 41, 57,214,202,233, 58, 66, 32, 48,134, 16,100,200, - 57,254,128,111,249, 74,192,228, 65,162,100,102,192,240, 88, 80, 24, 4, 18,135, -194, 15,181, 1, 19,194, 0,192,242, 64, 15,127, 3,164, 25, 68, 57,148,158, 97, -112, 0,164, 25,172, 9, 94, 13, 85, 0, 99,166,126, 16, 88,105,199, 31,162, 32, -244,211, 89, 16,100, 53, 89, 0,221,107,248,137,159, 32, 74,131,103,158,225,192, -172,115,109,100, 55,100,248, 0,176,231, 3, 69,217,145,224,180, 89,212, 42,186, -248,210, 26,176,132,142,223,177,134,154,175, 7,140,136,230,102,184,113,237, 16, - 92, 52,239, 22,223,195, 52,109, 70, 45,219, 96,170,157,214, 5, 72, 13,150,143, -142, 68, 6, 60,223,242, 6, 4,138,162,215, 13, +// ../Source/Template/GB_nthreads.h: +uint8_t GB_JITpackage_186 [473] = { + 40,181, 47,253, 96, 62, 4,125, 14, 0,102,154, 78, 32, 0,149,117,214, 44,112, + 77, 54, 47, 29, 47,224, 10,164, 42,208,233, 12,229,178, 0,169,195, 6, 7, 8, +200,255,255,189, 62,132, 70, 0, 74, 0, 64, 0,175,240, 4,193,198, 47,237, 35, +153,173,103, 98, 94, 93, 52, 9, 67,126,224,125, 32, 26, 95,248,185,116,158,221, +229, 85, 59, 57,125, 79,155, 82,120,225,231,215,114,111,220,221,230,159,179, 7, +188,235,244,220,206, 29,143,144, 23,142,176,175,204, 85,195,120, 28,195,158,133, + 97, 1, 92,228,218,127,172,165,240,117,157, 92, 71,192,131,104, 46, 13,205, 97, +129, 96, 40, 92,199,202, 77,192, 19, 92,153,213,114,131, 31,237,136,219,147,155, +185,118,140, 88,141,107,111, 83, 98,101, 26,149, 43, 54,232, 54,110,203,113,150, +156,105, 57,165,218, 43, 66, 38,200,172,195, 64,144,157,218,166, 85,211, 77,103, +227,255,191,233,213,219,229,190,199,176,255,185,206,119,157,180,206,111, 51,195, +140,223,187,170,189,197,143, 21,190,234, 11,109, 40, 19,230, 27,211,198,221,241, +124, 87,251, 17,173,246,181,101,126,213,169,157,220, 2,217, 21,239, 92, 27,122, +239,113, 51,214, 6,188, 87,162,166,106, 58, 37,130,253, 90, 75,185, 83,211, 23, +215, 20, 12,255, 95,226,212, 96,122, 70,155, 68, 22,255,255, 78,122,148, 8,122, + 52,255,159,220, 58,207,241,148,249, 25,195,166,207, 80,110,176,223,160,201,177, +145,194,108,243, 49,236, 1, 59, 32, 48,132, 8,200,161, 62,161, 0,120, 93,226, +129,109,207, 70,193, 34,112,136, 52, 64,141, 6, 43,207, 61, 38,250,188, 96,206, + 97,119, 6,143, 6,190, 54,204,145, 9,194, 30,130, 51, 16, 39,208, 90, 24, 57, + 64, 29,188,233,148,190,128, 61, 14, 12, 36, 69, 49, 11, 30,157,108, 16,200,237, +136,106, 11,118,125,229,185,176, 93,123,201,168,179, 16, 94,203,217, 88, 33,237, + 63, 17,157, 54, 17,187,188, 13,109,107,195,185,252,165, 52,207, 5, 38,103, 79, +211,229, 52,222,238,119,200,224,240, 76, 87,178, 3,218,214, 30, 52, 49,207, 76, +181,101,172, 22,199, 24,114,106,117,159,162, 96, 8, } ; -// ../Source/JitKernels/GB_jit_kernel_subassign_25.c: -uint8_t GB_JITpackage_191 [731] = { - 40,181, 47,253, 96,210, 5,141, 22, 0,230,232,121, 39,224,206, 88, 7,104, 71, -209, 4,109, 75, 82, 7,112, 5, 92, 19, 3,143,228,101,230, 43,189,146,135, 60, - 22,242,101,108, 60, 92, 84, 35,198, 72,145,193, 33,117, 0,106, 0,105, 0, 18, - 95,202, 47, 94, 36, 8, 5,135,169,226,143,229,203,154,223,182, 34,162,230, 82, - 82,143, 8, 30, 2, 15,201, 96, 64,224,241,198, 99, 60,186,241,227, 20, 62, 81, -207,172,174, 51,114, 30,109,168,139,196,186,156,173, 64,248, 90,119,109,184, 35, -182,129,164,196,160,227,114,179, 99, 39,234,135,217,190,199, 60,114,234, 8, 79, -184, 17,230,160, 1,137, 32,140,201, 33,111, 42,120, 52, 26, 17,239,117, 29,236, - 54,201,212,178,167,117,148,104,146,202, 29, 14, 72,114, 56, 2,147,229, 43,179, -110,235,239,217,186, 99, 94, 81,247, 5, 11,173,148, 34,218,118,147,186, 92, 30, - 50, 19,123,207, 53,248,209,120,223,212,125, 88,178,125, 87,202,120, 38,249, 19, -251, 49,132,204,207,201,139,109,155, 96,182, 15,225, 43, 29,188,102,125,205,115, - 93, 83,190,108,175, 67, 36, 24,165,235,164,179, 88,148,245, 53,249, 55,126, 82, -240,120, 85,173,102, 12, 36, 48, 61, 36,182,158,187,168, 67, 44, 71, 24,155,114, -101, 9, 23, 74, 70, 67, 97,248,133,146, 52, 92, 42,141, 99, 89,104,146, 10, 4, -157, 58,140,175, 55, 86,203, 21,141, 9,163,130,210,223, 56,105, 26,221, 51,105, -113,254,169,177,139,198,211,122,204, 47, 79,119,207, 86,223,234, 56,193,246,186, - 87, 76,235,139,234,133,150,127,170, 88,118, 38, 38,145,185,121,204, 63,113,231, -150,173,142,252,190,216,124,199, 55,214,121, 68,249,195,143, 56,235,152, 81,119, -254, 56,235,212,189, 83,127, 16,116, 1, 69,222,216,108, 40,147,137,196, 86, 24, -167, 22,107,182, 0,111,226,118,242,154,220, 13,224, 92, 97,242, 81, 8,198,138, -114, 0,108,214,197,174,122, 53,143,229, 9,216,248, 69,121,155,135, 95,157,145, - 39, 72, 45,155, 71, 56,108,153,173,147,103, 99,182,240,210, 26,251, 81, 12,222, -243, 92, 71, 74,247,222, 28, 65,193, 88, 56,153, 7, 13,228, 10,198,128,255,135, - 44,160,200, 27,140, 55,112, 26, 52, 14, 45, 83,177,108, 54,148,228, 97,211, 2, - 97, 32, 32,132, 16,231,174,234,254,128,111,244, 74, 30,227, 64, 12,224,162,203, -204,152,195,111,128, 98, 5,200, 59, 20,252,112, 55, 96, 66, 60, 0,176, 60,208, -195,185, 1,242, 12, 98, 28, 74, 43, 24, 15, 0,213,130, 5,193,175,161, 42, 96, -204,212, 15, 2, 43,237,248, 79, 20,132,126,170, 5,129, 86,219, 4,160,189,134, - 15,241, 19, 28,105,176, 68,103, 8,156,193, 27,217,133, 13,243,176, 92, 44,105, -118, 19,236, 10, 45, 57,153, 65, 24, 40,245, 13,232,191,233, 90, 3, 80,135,255, -144, 99,224, 8,203,173, 99,142, 1,210, 12,201,145,136, 3,239,177, 81,194,130, - 65,164,179, 24, 32, 33, 24, 42,151, 81, 57,150,188, 57, 20,116, 25,211, 45,248, -124,196, 29,248,118, 13, 17, 70,195,160,143,109,117,224,139,176,132,113,210,226, -129, 89, 97,174,206, 76,103, 72,220,125,237, 97,243,210,163,193, 87, 93,131,139, -146, 91,104,155, 40,103, 51,100,108,133,191, 26,125, 54,205,207, 51,211,219, 64, - 88,173,127,130,166,142, 0, 64, 69,193, 16, +// ../Source/Template/GB_omp_kernels.h: +uint8_t GB_JITpackage_187 [599] = { + 40,181, 47,253, 96,119, 5,109, 18, 0,118, 95, 94, 32, 16,149,115,231,182,111, +244, 50,232, 92,214,162, 49,181, 58,233,130,120, 4,252,226, 98, 66,245, 36,194, + 17, 1, 0, 84,193, 13, 86, 0, 86, 0, 80, 0,149, 45,107,110,175,252,180,230, + 28,103,157, 74, 32, 12, 8,130,226, 96, 64,124,160, 9, 78,217, 22, 65,200, 43, +235, 37,121,105,215,155, 83, 19,102, 85, 28,210,131, 53,178, 96, 91,161,135,241, +237, 15,251,236,103, 44,147, 61,204, 63,179,237,119, 59,105,223,158,189,113,252, + 66, 86,150,227, 89, 25,148,121, 29,205, 28,145, 23, 10, 19,161, 80, 8,241,113, +194, 83,246, 86,234,121,159, 61,237,248, 93,236, 28,252,108,115,142, 89,254,127, +154, 30,152, 37,211, 92,149,201, 99,210,182,149, 69, 44,111, 87,249,114,156, 56, + 48, 73, 50,172,114, 93, 52, 23, 37,203, 88, 48, 27,199,185,117, 96, 50, 84, 8, + 2, 75, 13,122,214, 23,149,123,235, 59, 57, 78, 8,108, 39,107, 93, 33,120, 32, +153, 42,178, 40, 87, 6,147,253, 91,115,220,144,213,236,122,103, 51,206,241,227, +180,217,129,106, 32, 43,203, 86,240, 8,249,218,248, 95, 40,175, 54,191,237,252, +153, 80,106, 36, 46,112,133, 94, 71,181, 71, 6,105,148,171,124,103,223,246, 41, + 30, 81,201, 95,177,253, 32,167,157,235,119, 61,168,105,221,209, 11, 69, 80,254, +210,121,203, 52, 6,193, 65,192,150,187,190,163,255,178, 76, 54,157,108,115, 69, + 6, 23,220, 70,200, 85,222,140, 4,187,236,242, 39, 59, 6,177, 46,141,100,147, +121, 44, 75, 22, 39,220,166,105,235, 56, 25, 48,248,168,188, 61, 58,215,218, 95, +136,235, 1,181,178,194,112, 96,108, 28, 71, 85,190,144,123,165, 63, 84,137,230, + 95,251,117,183,149,185,174,116,112, 9, 82, 40, 32,132, 16,163, 28,154, 7, 18, +106,174,132, 84, 35, 68, 34, 18,205, 68, 52,241, 31,101,232, 1,226, 8,194, 68, +252, 53,193, 6, 4,213,236,208, 49,167,145,188, 97,179, 84, 15, 96, 30,234,136, +228, 27, 32,129,248, 4, 31,237,128, 30, 18,130,113, 16,187,182, 6, 66, 41, 3, + 65, 14, 45, 7,183, 16,128, 22, 25, 44, 50, 37,192, 18, 59, 3,218,241,110,214, + 68,114, 19, 61, 32, 10,120, 50, 29, 89,110,103,140,227,105,222, 52, 21, 21,210, +192, 8,130, 68, 19,104,217, 63, 3,162, 13,228,122,138,102,206, 33,162, 84, 8, +232,107,173,229,255,160, 27,244, 61, 10,244,123,191,177,168,233,254, 30, 84,153, +129, 47,121,118,233,164,119,111,196,214,172,241, 10,222, 71,227,109,211,220,232, + 24,237,194,213,235, 32,121,211, 80,231, 99,118, 43,212,109, 63,230,179, 80, 93, +211,246,160,233,223, 77, 2,224,210,168, 52,128,248,230,188, 70, 43,192, 13, } ; -// ../Source/JitKernels/GB_jit_kernel_trans_bind1st.c: -uint8_t GB_JITpackage_192 [417] = { - 40,181, 47,253, 96,198, 2,189, 12, 0, 22,151, 75, 33, 0,181, 30, 86,165,132, - 54, 37,231, 48,117,167,118,139, 25, 30,186,141, 99,136, 36,154, 53, 6,108,241, - 72,254,255,239,245, 33, 4, 66, 0, 66, 0, 66, 0, 84,223, 16,216,240,170,250, -104,179, 63,158,251, 57,245,170,102,109, 50, 56,102,138,215, 35,152,189,223, 23, -228,201, 73, 80,169,104,122,254, 56,195, 69,151, 43,194,106,107, 3, 6,223,139, -213, 24, 28,183, 21, 31,143,223,177,251,114,172,149, 57,129, 32, 41, 2, 33,182, -162,113, 92,125,124, 51,143, 9,200,137,115, 65,231,220, 80, 22,170, 3,245,155, - 16,204,213, 21,227,223,204,221,248, 49, 14,234, 53,254,240,106, 20,165,193, 85, -152, 15,141,175,191,115,189, 55,154,219,185, 40, 86,167,136, 67,225, 64, 37, 12, -133,131, 79,225,244,158,161, 17,113, 88,214,139,212,238,179, 26, 22,233, 48,136, -107,213,218,180,204,126,142,135,148,165,130, 83,167,215, 53,157,219, 48,207, 49, -193, 94,139, 96,198,105,205,213,233,135,101, 11,159,110, 97, 93,213, 46,172,225, -238, 78,146, 22,159,106,166, 87,158,220, 22, 82,150,228,194, 39,207,195,174, 75, -226, 89,107,204,166,227, 17,180,127, 4,132,213,111, 80,204,158,223,246,245, 39, - 3,252, 49, 32, 49,196,119,218,160,140,175, 21,249, 52,216, 26,127,194, 57, 7, -211, 49,174,242, 89,138, 37,201,233,219,183,117,156,253, 2, 39, 32, 48,198, 8, -198, 92,242,148,101,103,202, 5, 8, 7,249,128,100,172,223,216, 73,103, 48,170, - 8,152,132,147, 15,129,168, 1,222, 47,108,177, 20, 18, 0, 0, 72,121, 92,148, -121, 10, 48,149, 6,232, 7,128,131,177,214,140,201, 0,235, 10, 0, 7,135, 54, - 24, 17,135, 81,199,189, 3,141, 7, 83,251, 3, 23, 18,240, 47,106,180, 95,166, - 98,108,154,157,103, 38,219, 12,172, 86,188, 16, 40, 84,244, 14, 1, +// ../Source/Template/GB_prefix.h: +uint8_t GB_JITpackage_188 [259] = { + 40,181, 47,253, 96,202, 1,205, 7, 0,178,140, 41, 23, 32,221, 1,163,204, 96, +126, 23,192,172, 0, 23,171,218,171,103,223,123,129, 4,128,197, 3, 0, 48,110, + 17,125,119,199,158,110,122,245, 43, 48,176,134,133,101,150, 61, 8, 60,246, 97, +214,178,142, 5,133,123,162, 71,119, 0, 88,159,119, 81,147,150,141, 47,162,227, + 14,128,163, 72,136, 47, 67, 80,125,220, 89,127,143,187, 69, 95,188,136,103,209, + 15, 55, 70,120, 82, 86,136,255,174,207,190,230,108, 91,146, 91,115,211,124, 92, + 43,201,145, 16, 13,114, 36, 62,132,130,107,118,191,160,228,197,227,114,217,166, +231,230, 92, 59,207,174,160,186,125,187,221, 13,112, 18,221, 39,136,250,246, 96, + 80,169,130,107,229, 78, 89,196,123,252, 85,253,160,202, 13, 3, 32, 12, 35, 32, + 32, 64, 68, 32,144, 34, 31, 8, 0,156,230, 58,102,161,248,128, 7,130,106,185, + 12, 57, 16, 25,176, 70, 48,231,147,152,195,224,130,106, 28, 80, 24,192,238, 75, +163, 70, 6,216, 69,185,100,104, 95,160, 21, 24,103,207, 99,144, 2,196, 84, 96, + 6, 77,153,119,211,104, 80, 53,251,176,192,249,209,149, 27,123,138,186, 33, } ; -// ../Source/JitKernels/GB_jit_kernel_trans_bind2nd.c: -uint8_t GB_JITpackage_193 [415] = { - 40,181, 47,253, 96,194, 2,173, 12, 0,118,152, 79, 33, 0,243, 54,238, 78,154, -144, 55,131,212,134, 19,186, 85, 5,166, 96, 65,135,200, 50,194,187, 83,237, 76, -143,168,170, 90, 16, 8, 16, 70, 0, 70, 0, 70, 0, 46,137,145, 87, 19,119, 66, -204, 41,235, 31,204,230,108, 48,232,245,179,155,133,209, 97,169, 37,222, 44, 67, -253,253,198,231, 71, 37, 79, 21,216,200, 53,199, 23,238,185, 60, 33, 82, 99,174, -198,140, 43,215,204, 97,185, 47,249,185,124,205,221, 56,115, 45,205, 9, 4, 58, - 17, 8, 1,209,103, 28,160, 29,119, 39, 91,215, 89,183,252,152,207, 0,149, 62, - 94, 51, 56,204, 96,145, 22,168,106,122,140, 24,106,235,137,242,177, 5,239,252, - 35, 99,122, 51,191,136,183, 73,130,117,212,248,157,242,205,247,220,220,152, 11, -246,156, 36,173,215, 67, 85,168, 38,132,161, 80, 5, 94,119,177, 71,133, 61, 24, -214,253, 30,214, 3,239,150, 61,188,204,225,155,181,184, 77,187, 32,163, 65,105, -136, 82, 10, 94,189, 94, 87,228, 29,151,125,140, 72,246, 38, 25, 90,188, 90,237, -213, 99, 45,152,105, 10,151,108,230,217,237,202, 48,119, 74,113, 16,165,184,100, -117,189,116,148,134,168,194,165,239,203,174, 11,242, 93,171,212, 34,207,229,185, -191, 4,136,212,239,144,212,155,223,247, 77,142, 6,248,143, 39, 41,102, 28,112, -119,151,246,169, 51,190, 31,151, 6,219,204, 28, 49,138, 6,145, 47,252,227, 89, - 55, 1,239, 4, 68, 21, 46, 69,206,129, 92, 31, 32, 64,196, 8, 74,217,110,148, -201,190,204, 5, 28,148,254,224,109,195,120, 34,112, 11,144, 6,164,116, 92, 60, -243,116,128,234,229,130,131,241,239,140,185, 2,212, 3,128,237, 11,237,146,138, - 15, 74,142,223,111,201,110, 18,246,241, 59, 55, 74, 1, 81,163, 80,101,200,220, -166,249, 16,102,170,195,208, 26,196, 11,129, 66, 69,193, 16, +// ../Source/Template/GB_printf_kernels.h: +uint8_t GB_JITpackage_189 [763] = { + 40,181, 47,253, 96,240, 7,141, 23, 0, 86,163,109, 32,224, 88, 61, 24,247,139, + 43, 50, 6,117,163, 45,196, 88,112, 37,118, 66,155, 55, 17, 32,185,174, 43,155, + 51,152, 97,152,230,225,100, 0,102, 0, 97, 0,133,215,248, 65,171, 41,124, 38, +156,140,254, 41,191,254,206,245, 14, 69,182,243,123, 53,199, 20,137, 67,162,208, + 64, 28, 18, 62, 0, 47,199,180, 61,205,137,103,154,167,194, 45,150,236,231,152, +227,117,158, 38,239,183, 29, 61,203,211, 52,145,208, 52,243,230, 37, 49, 87, 23, + 97,235, 89,172,174,177,104,183,197,182, 62,117, 71,152,233,251, 56, 63, 73,214, +141,109, 54,201,200,230, 6,131, 85, 48, 24, 2, 46,110,119,112, 54,157,137, 69, +233,130, 49, 58, 64, 0,240, 81,255,120,231,201, 81, 79,241, 69, 70,242,134, 81, +138,167,143,247, 10, 60,117, 47,118, 76,139,176,205, 91,251,158,165,193,193, 33, + 16, 55,149,192,188,245,229,131,141,233,203, 34,249,180,141,220, 62,239, 3,150, + 69,122, 26, 10,215, 81, 50,178,242,113,151,142, 83,159,226,106, 3,214, 33, 75, + 20, 62, 4,167, 73,115, 71,126, 91,237,198, 79, 47, 1,245,225, 3, 41,189,173, +211,164,230,145,242,114,149, 5,242, 65,150,101,215, 24,176, 28, 96,200,222,212, +221,224,103, 75,221,191,100,183,227, 49,251,119,193,120, 38, 18,141,161,167, 20, + 77,164,235, 68,232,235, 17,196, 99,117,109,195,239,177, 72, 93, 91, 39,129, 31, +130,158,197,156,223, 69,206, 61,219,119,212,159, 67, 61,222,138,237,209,228, 52, + 79,138,231,214,254,225,222,163, 72,183, 14,150, 85, 45,197,239,159, 75,135,225, +139,227, 38, 28,229,250, 58,237,243, 48,237,242, 56,202, 68,254, 13,229, 49,132, + 39, 56,216,224,143, 66,226, 37,185,108,218, 70,102, 36, 20,139, 68, 30, 14, 86, +199,209, 58, 75,225,233,216,110, 17, 83, 49,220, 95,242,215, 27, 65, 70, 80,155, +255, 13, 77,176,144,239,157,158, 10,137, 25,156,165, 42,238,234, 26, 77,135,171, +214,179,232,216, 95, 91,125,118,156,213, 21,128,131,168,113, 41, 82,134, 72, 70, + 38,140, 36, 73, 37, 29, 48,132, 16,165,172,230, 3,130,184,108, 24,227, 48, 1, +105,148,137, 68,100, 40,144,252, 76, 84, 88,218, 1,222,140,186, 15,206, 2,155, + 40, 27, 31,147, 50, 41,247, 43,248, 78, 5,241,183,244, 47,103, 92,243, 26,168, +189,153,224,151, 52,152, 69,183, 77, 83, 15,206, 42,116,228, 64,140,151,156,112, +147,166, 14,107, 5, 77,156,243,131,197, 81,196,248, 67, 8,236, 6,147, 8, 58, + 24, 28,116, 27,224,184, 15, 70, 95, 4,251,177,142, 40,134,250,179,200,122, 86, +202,109, 74, 56,139, 69, 74,128, 72, 16, 94,248,193, 86,142, 61,247,207, 13, 73, +215, 72,201, 83,172,173,104,162, 80,216, 38, 99,108, 98,228,112, 21, 39,142,159, + 80,232,168,206,149,152, 51, 24,195,138, 86, 49,235,228,102, 68, 4, 35, 72, 26, +136, 45, 82, 35,142, 44, 88, 49, 17, 14, 0,174,163, 33,225,194, 97,122,146,128, + 14, 12, 43, 55, 60,216,166, 93,161, 21, 76,238,220,243, 48,132,181,175,168,248, +233,109,243, 5,184,185,105, 27, 22,106,226,126,153, 66,226,131, 97, 98,162,252, + 67,115,223,148,129, 76,155,198,163,200, 2, 14,240,161, 14,248, 82,146,234, 99, +162,227, 43, 41, 63,184, 82,213, 1, 93,248, 0,164, 80, 57, 40,187,199, 61, 71, +159, 76,161, 15,154,206,127,211,178,186,194,149,193, 67,167, 76, 63,197, 94, 85, + 7,176, 3, } ; -// ../Source/JitKernels/GB_jit_kernel_trans_unop.c: -uint8_t GB_JITpackage_194 [371] = { - 40,181, 47,253, 96, 11, 2, 77, 11, 0,182, 22, 73, 33, 16,179,115,230, 25, 36, - 36,130, 0,140,142,184,125, 54,212,214, 77, 75,220, 47, 98, 8,179,114,253,108, -117, 68, 0, 0, 8, 28, 4, 63, 0, 64, 0, 61, 0, 15,109, 50,232,161,149, 83, -155,196, 24, 27,203,221, 71,162,241,229,236,214,153,134, 91,180,224, 67,151,171, -225, 47,152,249, 36,144,210, 45,248,197,175, 39, 58,203,130, 53,156,184,114, 55, -207,175,235,237,206,204,148, 51, 25,143, 15, 6,177, 26, 12, 2,212,130,139,235, -137,172,145, 85, 34,193, 50, 84,189,233, 56, 43,159,184, 77, 51, 52,215,246, 32, - 85,227,218, 29,197,170, 75, 67,179,188,254,220,198, 77, 57,206, 27, 13,165,252, -251,228,169,131,129, 96,168, 16, 5,130,225, 83, 39,157,194,244,195, 53,110,201, - 49, 78,161, 83,156, 83,244, 20,136,233,148,242,167, 64,151,116, 45,155, 88, 38, -105,169,203, 74, 90, 54, 49,152,166,201,174, 52,211, 94, 32, 78, 28,202,113,104, - 7,106,175,210,131,249,153,222,171,157, 65,125, 5, 14,125, 21,188,215, 56, 60, - 14, 49,142,162,226,211,182, 57,174,203,178, 77,198,173, 55,204,125, 1,157,213, -153,251,172,167,243,108, 12, 90,192,219, 11,191,174,210,192,255, 71, 81, 84,124, -146,158, 85, 50,138, 54,183,137,164, 84, 38,230,152, 80, 28,146, 99,146,145, 97, -143, 89,129, 68, 2, 24, 0, 71,128, 66,169, 91, 60,162, 5, 1, 88, 18,130, 52, - 74,200,113, 38,220, 20, 51,243,154, 2, 22,192, 93, 9,240, 77, 64,108,162,234, - 82,160,137,148,254,224,102, 7,133,217,210, 94,242,217, 11,109,154, 54,207, 76, -209,214,176,213,166, 51, 12, 10, 21, 5, 67, +// ../Source/Template/GB_reduce_panel.c: +uint8_t GB_JITpackage_190 [1902] = { + 40,181, 47,253, 96,106, 38, 37, 59, 0, 54,122,171, 40,208,178, 58, 7,208, 43, +129, 98,255, 92,204,225,231,186, 85,189, 48,115,159,144,162, 23, 77,102,237, 58, + 80, 45,141, 77, 45,125,205, 23, 94,112,212, 14,170, 4,157, 0,158, 0,168, 0, + 83, 61,123,222,245,235, 94,253,148, 74,249,115, 13,122,188,210,217, 75,217,155, + 18, 82, 29,225,231, 57,157,219,181,201, 53,119,215,184,174,135,250,190, 67,194, +250,125, 19, 85, 40, 6, 20,115,217,122,213, 25, 40,195, 13,182,100,205,162,184, + 74,206, 32,134,202,176,104, 40, 26,127, 80,174,188,121,109,174, 3,110, 30, 99, +245,233,192,160, 98, 64, 45, 20, 84, 12, 46,101,146, 79, 21,126,172,229,148,234, + 32,174,103, 7,175, 79,156, 10, 19,193,121, 75, 39, 24,184,210,245, 56,220,240, +227, 68,116,227,102,245,251,217, 15,129,180,183,251,254,147, 84, 73, 30, 66,103, +136, 44,215,195, 56,251, 52,166, 88,196,196, 9, 8, 34,138,128, 32, 43, 57, 7, + 83, 93,100, 36, 0,201,175,205,133,195,169, 26, 30, 2, 65, 85,151, 36,127,120, + 72, 6,105, 87,166, 3,175,186,202,153, 85,239,255,143, 34,145, 40,218,160, 38, + 89, 32, 82, 40, 56, 75, 40, 16, 97, 46,153, 74, 35, 55, 14,193,250,142,223,110, +172, 5,112, 20,249, 5,156,181, 47,102, 18, 10, 92, 52, 26, 23,182,241,110,107, +131,196,125, 5, 45,165,123,140,107,154, 51,119,105,220,116,122,222, 87, 65, 94, +214, 45,252,200, 32,101,201, 29,175, 40,179, 66,109,185,171,132,223,185, 55,122, + 29, 55,134,205,158, 42,172,213, 55,139,161,167,155,161,131,228,158, 63,150,147, +188,237, 26,122,166,148,155, 53,148, 60,198,111, 3,113, 15,252, 33,231, 27,134, +240, 65,145, 46,127, 50,230, 50, 7,138,226, 56, 57,144, 95,174,202,162,177,192, + 44,157,207,196,155,120,222,227,194,166,117, 33, 38, 14, 13,222,236,199,216,242, +155,217, 71, 62,159,206,231,147,137, 67,195,255,145, 72,146, 91, 88,195, 59, 28, + 93, 41,220,184,134, 32,125,109,103,188, 84,160, 45, 83,174,165,164, 98, 1,174, +113,183, 79,159,166,234,186, 76,116, 10, 40, 14, 9, 20,161,198, 93, 55,129,104, + 75,254,108, 95,131, 83,206,238, 22,171, 34, 83, 65,129,105,100,170,199,149,176, +163,220, 33, 78,166, 66, 2,195, 84, 25,139, 98,115,185,176,203,166,194, 72, 92, + 44,149, 63, 60, 72, 77, 69,113, 89, 17, 24,199,146, 42,135,144,111, 12, 65,161, + 37, 12,201, 81, 52,130,225,125,239,190,186,205,215,142, 95,101,250,209,190, 92, +214, 6, 35, 70,238,238,254,255,201,169, 42, 39,108,128, 7, 75,117,217, 96, 18, + 22, 69,197,213,105, 25,157,114, 47,153, 61, 7, 45,119,254,226,126,220,131,159, +218,157,158,166,107,243,169,195,113, 12, 77,178,199,208,244,162, 19,132, 53,121, + 7, 41,131,189, 93, 37, 28,185,172, 94,194,186, 79,122,221,252,118, 29, 75, 61, + 13, 54, 93,239, 18,158, 51, 24,235, 37,200,124,109,248,122, 46, 91,142,115,122, +166,230, 10,185,238,216,184, 97, 28,191,103,186, 92,125,253,212,237, 41, 20, 42, +232, 84,164,145,207, 50,245,100, 42,172,203,178, 84,133, 4,131,131,104,129,252, +168, 33, 34,162, 25, 17,145,146,164, 32,201,176, 6, 49, 8, 1, 67, 97, 16, 66, +234,206, 7,194,136, 44, 13,225, 12,132, 49,134, 24, 73, 4,132, 8, 20, 33, 2, + 37,144, 24, 19, 74, 32, 52, 82,118,152, 24,246,107,223, 82, 10,247,126, 35, 47, +131,254, 55,247,126,103, 13,123, 65,131, 32,115,112,223,240,194,205,209, 38,220, +171,159, 54,146,198,253, 68,245,224,253,179, 95,248,115, 35,151,128, 80,170,117, +197, 4, 74, 57, 46,175, 62, 68,197,171,158,247,229,175, 37, 0, 2,131, 91,188, +195, 79,136,110,123,219, 3,128,217,170, 5, 6, 17, 30,184,171, 92, 12,225, 70, +197, 43, 29,179,246, 74,210, 20,174,123,146, 41, 18, 7,113,164, 97, 56,208,164, +108,117, 73, 13, 51,145, 12,101,126, 62,153, 65, 15, 50,153, 57,126,190,246,163, +193,123,241,203, 22, 62, 65,130, 23,120,122, 30, 11, 92,166,147, 52, 86,104, 1, +117, 2,155, 85,214, 49,105, 44, 36, 20,138, 82,160,196, 40,223, 15,161,236, 45, + 70, 12,157,120, 95, 54,217,229, 59,116,196,136,166,198, 21,160,167,145,143,218, + 68, 73, 4,209,132,188,234,150,224, 29, 86,249, 57,100, 98,229, 44,250,136,250, + 9, 0,231,221,122,184,106, 52, 11, 62,201,138,118, 80, 52,156, 93, 57,182,183, +218,146, 3, 91,209, 68,224, 24,184,204,122,112, 3,216, 75,211,153, 29, 68, 13, +199, 23,190, 74,222,203, 77,141, 32,237,203, 15,131,100,127,145,136, 0,157,114, +242,222,134, 89,248,176, 5,166,109,233, 86,232,160,180, 68,128, 44,148,227, 42, +130,150,200, 5,229, 53,137, 4,210,179,177, 49,117, 26, 49, 33, 2, 66,173, 96, +225, 35, 28,231, 81, 75,243, 41, 3,248,243,160,158, 94,198,137,155,125,162, 34, +170, 48,216,198, 94, 7,125, 93, 34, 33,124,119,192,157,243,159, 58,229, 2, 94, + 92,164,255,214,224, 46,227,231,254,124, 2, 44,204,136,255,166,146, 71,138, 48, + 93,240,123, 54, 70,152,157, 76, 56, 80,197,191,114,236, 21, 16,214,231, 45,247, +249,187,211,228, 81, 77, 80,217, 25, 45,195, 71, 53,111,208, 60,246,198, 93,232, +251, 34,162, 92,235,129,239,144, 72, 18, 34,158,148, 44, 91,180, 52,165, 88,247, +234,127, 7,241,212,238,180,145,225,155,253, 48,231,157,194,214,178, 56,194,157, +197,119, 0, 81, 16, 65, 15,241,101,148,182, 22,192, 61, 33,202, 4,191, 33, 28, +172,133,146, 96, 27,142, 75,202,219,111, 45,184,178,102,104, 42, 41,194,216, 66, +153, 8,118,243,180,177,158,186, 82,152, 21, 10,207, 60, 31, 76,114,108,198, 17, + 98, 74,192,163, 84, 43,140, 26, 90,150,190,128, 62, 59,181,237,240,152, 49,162, + 37,194,105, 25, 84, 71, 54, 97, 72, 62, 13,210,235, 96, 62,153,130,138, 34,190, +179,246,112,219, 71,183, 73, 5, 6, 31,167,122, 9, 75, 29,225,112, 92, 49,181, + 6, 95,140,194,124,180, 16, 55,202,143,232, 60,243, 75,239,252, 98, 10,180, 86, + 48,178,134,189, 87,103,213, 29,133, 97, 29,149, 3, 47, 1,218,238,121,152,147, +218,235, 78,163, 63,127,251, 82, 2,117, 54,233, 8, 16, 46,191, 20,196,161,132, +230, 47, 5, 9, 25, 86,136,227,186,229, 66,241,123,111,215,134, 55,118,176, 1, +189,248,228,239,177, 88, 32,216,165,118,184,105, 21,132,187, 0, 10, 13,231,124, +147, 62,182,128,183,241, 2, 66,144,150,219,183,148, 82,235,195,118,123,204,170, +206,214,245, 4, 82,165,168,202,213,241,145,132,152, 45, 8,226,223,163,126, 14, + 49,254,191,194, 72,158,182,243, 64,140,199,144,154, 7, 29,158,131,112,118, 67, + 19, 46,204,227, 28,122, 43, 61, 15,194, 23,153, 14,234, 95,164, 16,216, 85,152, +153,249, 91, 17,182, 15, 13,210,141,127, 67,237,111, 36,202,221, 73,236, 51,153, +237,252, 63, 97, 21, 9, 63,196,253, 66, 84, 39,141, 58, 95,229,181,145,232, 44, +106,135, 54,140, 68,211,237,242,161, 37,120,203,120,216, 66,108, 48,140, 98, 7, +173,153,122, 89, 41, 88,162,189, 69,104, 74,254,147,115,100,223, 82,243,254,244, + 17,136,182,119,229, 88,136,118,209, 86,146,174, 0,132,138,105,109,190, 98, 73, + 56,175,151, 4, 26,186,106,204,190, 50,255, 40,148, 76,108, 72,248,200, 17,178, +130,247, 11,139, 32,137,133,172,183, 69,179,174, 4, 39, 5,126,222,189,144,102, + 64,155,163,172,209,154, 50,210, 67,186,183, 20,231,119,215,214,176, 23,136,206, + 19,109,128,162, 11, 75,184,101, 53,116,248,221,177, 61, 40, 66, 93,232,187,245, +224,228,154, 75,136,125, 69,194,166,208,244,252,116,160,243, 19,248,197, 19, 18, +127, 98,137,245, 52, 96,242,122,203,217, 58,167,202,164,177,198, 23,242, 72, 62, +208, 83,106,238,107,176,200,141,226,136, 99,195,100,119, 27,183,201,213, 46,217, + 85, 75, 45, 51,102, 1,253,190, 6, 20,135,123,238,153,188,213,189,118,253,100, +180,212,100, 37, 16, 63,228,103, 33,131,106, 8,243, 74,190,158,218,158,128, 23, +172,211,147, 17,231,253,115, 31,161,148, 81,222, 57, 13, 41, 89,105,153, 29, 58, + 32,232, 44,249,105,184,147,104,132, 2, 96,128,239,249, 65,117, 61,207,181, 54, +253, 20,152,159, 21, 69,144,167,176,176, 19, 95, 4,119,159, 35,222,125,200,252, + 0,173,166, 58,153,102,226, 98, 5, 61,180, 77, 29, 41,140, 49,154, 80, 20,129, +115,192,169,217,149,158, 51,206,254, 1,225, 16,231, 70, 82, 9,254,237,164,239, +243,180, 55, 77,135,202, 76, 92,137, 97,194, 35, 94,168, 3,208, 17,139, 20, 13, +228, 1, } ; -// ../Source/JitKernels/GB_jit_kernel_union.c: -uint8_t GB_JITpackage_195 [345] = { - 40,181, 47,253, 96,254, 1,125, 10, 0,166,211, 65, 33, 0,243, 54, 62, 39,121, -224,154,217,106,195,174,130,223, 19,127,115, 26, 20,140,217,201,153, 28,230,209, - 65,254,255,111, 93, 2, 8, 56, 0, 56, 0, 57, 0, 28, 44,250, 20, 98, 94, 86, -158, 87,115,136, 71,245, 61,195,223, 56, 13,235,228, 81, 76,121,215, 29, 12, 3, - 18, 80,104, 62,101, 3,108,161, 57, 98,172,114, 7,231,212,154,159,245,111,236, -198, 26,155,113,110, 89,149,178,172,229,120, 79,204, 17,250, 49, 6,239,252,100, - 71, 61,154,127,196, 30, 85,105, 72, 42,242, 61,250,209, 7, 29,221,101, 6,131, -110,154,152, 79,134,139,112, 81,135, 2,225,114,105,140,124, 66,177,231, 54,188, -194,252, 83,238, 78,183, 60,205,235,155,196, 34,218, 74,193,183,176,163,108, 54, -236, 62, 99,204,147, 1,119,247, 10,170, 9,151, 34,255,196, 15,148,216,200,215, - 69, 38,214,219, 34,224,246,112, 15,203, 62,143,179, 98,231,176, 25, 87, 9,213, - 69,125,181,134,106,194,165, 48,220, 52,109, 18,218, 76,115,145,103,157,238,215, -128,177,250,125,205,147,243,219,146,228, 5,248,147,169, 57,102, 28,112,203,254, -139, 69,202,216, 74,130, 40, 18, 68,190,112,125,205, 59,162, 54, 27, 32, 96, 70, - 32,211,202, 3,132, 80, 37,131,174,133, 89, 27,177,225,114,216,129, 64, 25,140, - 43,144,193,195, 34,131,131, 5,178,163,205, 10, 13,227,205,109, 86,213, 62,206, - 1, 48, 15, 19,207,212,160,201,121,102, 66, 27,132,213,252, 49,178, 99, 86,191, -195,158,162,119, 8, +// ../Source/Template/GB_reduce_to_scalar_template.c: +uint8_t GB_JITpackage_191 [1289] = { + 40,181, 47,253, 96,186, 16,253, 39, 0, 86, 53,161, 40,192, 22,117, 14, 80, 61, +209, 98,243,219,127, 12, 93,218,216, 39,157, 48,152, 95, 92,129, 70,210,195, 9, + 49, 3,184,124, 96, 14, 33,219,166, 40, 16, 92, 55, 3,148, 0,150, 0,153, 0, + 21,115,109,237,104,217,171,215,164,101,202, 36,223,104, 60, 9,149,125,163,198, +158,167,207,181, 52,249,116, 65, 8, 6, 10, 21,230,180,232,193, 67, 88,150, 28, +217,148, 55,171,194,151,178, 38, 47, 21, 15,138,195, 96,227, 18,203,151,175,223, +230, 72,228,245, 57,225,167, 5, 5, 4,133,138, 67, 2,130,194, 37, 45,250,116, +101, 73,164,110, 0,239,225,186,118, 18,251,164,129, 23, 10,206,139,246, 2,130, +175,141,158,134, 91,126, 26,232,241,181,127, 34,109,199,238,241,159, 36, 24, 89, + 62,135,224,142,211,235,184, 51, 27,103,212,110, 86, 59, 99,237,219,216,102, 20, + 23, 63, 56,128, 42, 7, 7, 1, 82,116, 34,101,103, 12, 13, 17, 31,153,168,192, + 91, 62, 2,223,154,180,125,217, 18,252,239,236,161,169,124, 95, 90, 53,248,254, +127, 8, 66,145, 62, 83,103,218, 68, 31, 28,153,138,207, 45, 23,233,112,228, 70, + 89, 0,146, 94, 97,144,226,232,144,228,180,153, 62, 17, 83, 41, 0, 93,240, 2, + 43, 52, 89, 6,203, 62,224,117,193,140,162, 32,135, 55,202,169,244,147,136, 12, +249,230,150,130,127, 2, 56,250, 5,156,183,111,106, 84, 10, 64,144, 65,197,241, +129,101, 32,211, 38, 43,173, 29,167,126,206, 93,188,253, 27,185, 95, 79, 52,153, +241,155,232,221,142,173, 38,103, 14,251,239,247, 43, 63,153, 70,239, 1, 24,152, + 65,172,186,144, 34,239,211, 8,197, 5, 64,196,249,163,178, 37, 73,196, 11,185, +180, 6, 6,188,216,181, 28,169,212,214, 63,254,202,123,108, 83,150,247,100,231, + 40, 82, 65,129, 68,196, 17,110,185, 23,221, 86,206,121,146, 80,121, 47, 37,220, + 98,249,221, 34, 91,174,105,116,142,132, 51, 82,217, 89,238,143, 6,115,129, 24, +107,227,170,176,172,170,168, 40,169, 94, 0, 58,107, 29,225, 59, 89, 83, 89, 20, + 27, 25,144, 76, 3, 49, 46,203,145,174,126,178, 27,185, 12, 94, 42,204, 85,105, +100,152,149,129,240,137, 99, 87,165,209, 64, 9, 70,223, 38,115,217,135,210, 63, +226,210,135,198,232,212,165,194,192,156, 4, 16,148,242,251,113,230,119,217,122, +223,187, 47,101, 19,189, 55,150,139,108,178, 67,110,145,210,137,108, 43,204,186, + 54,181,111,235,156,220, 84,183,237,142,202, 42,172,141, 12,182,209,111,234, 62, + 48, 21,101,121, 90, 94,154,166, 41, 58, 38, 99, 97, 22,118, 65, 14,202,222,167, +182,177,239,237,220,216,244, 18, 82,194,164,201, 46, 82,207, 22,241,228,180,123, + 41,235, 62,234,117,245,177, 35,137,214,219,100,255,206,200,185,229,217,228, 57, +163,141, 30,107,114,222, 83,147,250,219,242,151,211, 34, 67, 80,138, 6,172, 46, + 10, 11,171,229, 9,223, 51,109,228,142, 70, 89, 25, 76,102,131, 10,129, 16,168, +209, 41, 66, 52, 50, 34,146, 36, 5, 41, 53, 6, 49, 8,194, 80, 36,234, 36,215, + 3, 50,145, 52,206, 66, 32,130, 16, 54,130, 33,193,132, 40,144,145, 32, 74,202, + 41,214, 3,185,215,129,143, 15, 87,114, 87, 96, 31,148,164,181,234,131,181,214, +249,124,178,117,143,102,107,122, 85, 87,123,220,110,138,169,162, 83,139,106, 52, + 90, 97,211,162,178,254,224,210, 75, 51, 99, 85, 28, 20,157, 43, 90, 65,202,159, +129,148, 46,167,234,164, 60,196,202, 69, 84,107, 14,104,196, 24,178,106, 40,157, + 12,118, 20,245, 38,142,162,175,114, 87, 95,128,242,251, 11,188, 55, 7, 64, 26, +194,248, 67,113,104,119,105, 5, 17,255,153,238, 19, 65,211, 92,144,102,230,131, +168,235, 43, 17,149,147, 34,244, 71,189,156,202,139,202,233,161,127,197,197, 48, + 37,165,187,183, 21, 36, 71, 22,114, 67, 36,169, 33,194, 12,137,196,240, 71, 58, +135,217, 30,181,245,101, 68,157,162, 13,249, 42,255,124,248,171,210,162, 82, 59, + 11,143,197,187,248, 24,166, 97, 49, 87, 41,198, 89,198, 99, 49,244,188,131,138, +119,110,219,149,236, 95,168, 10, 70,232,174, 96,244, 88,144,131,147,138,169, 53, + 21, 6,209,135, 51, 75,193,253,238,183, 62,233, 41, 32, 24,123, 9, 61,136,136, + 30, 82, 13, 42, 59,242,135,100, 62,201, 20,215, 61,233, 18,241,207,146,183,156, +197, 5,192,239,121,151, 51, 28,239, 24,145,129, 17,127,105,229, 56,166,104,122, + 84, 56, 0,168,220, 14,116, 57, 85,212, 17, 8,146, 26,144,125,117,121, 58,184, +201,201,231, 45, 45,120, 20,120, 31,162,166,179,233,102,209,122, 65,162,113,208, + 86, 21,199,166,253,111,134,241,118,139,127, 81,197, 93,229, 81, 78,151,121,234, + 20, 70,238,140,200, 56,123,139,114,167, 93, 21, 51,254, 38, 88, 88,117, 67, 28, + 6,226,225,209,125,230, 92, 73,201,182, 94, 76,169, 57,127,244,203,221, 89, 94, + 39, 48,230, 27,150,203, 74,226,219,173,216,205,165, 96,229,173, 1, 29,243, 40, +229,200,137, 34,181, 67,216,206,216, 24, 80,126, 9,111,166,249, 19, 78, 26,144, +157, 79, 44,230,174,201, 31, 65, 26, 33, 15, 17, 57,159,219,186,180,223, 32,223, +248,113,189,132,184, 99, 15,193,140,217,222,249, 6, 83,165,199,131,144, 48,191, +246,226,172, 74,185,244,184,171, 93,129,227,221,164,211, 34, 7,163,113, 38,182, +192, 34,186,192, 5,157, 78,146,217,174,122,231, 67,120,156,153,242,200,180,176, +176,205,142, 8, 1,141, 82,192,249, 10, 17, 5,194, 6, 36,127, 15, 24, 24,128, +153,250,112,173, 38, 80,183,160, 59,223, 83, 69,105, 63, 92, 93, 54, 77,196,109, +153,205, 60,137, 65,116,207,251, 72, 12,173, 35, 76, 65, 20,233,126, 42, 5,168, + 86,155, 80, 4, 33, 31,177,193, 77, 51,255,153,201,252,185,150,123, 58,198, 62, +246,166,116, 2, 23,190,238, 86, 39, } ; -// ../Source/JitKernels/GB_jit_kernel_user_op.c: -uint8_t GB_JITpackage_196 [298] = { - 40,181, 47,253, 96,158, 1, 5, 9, 0,214, 17, 59, 23, 16,159, 3,194,167,176, - 30, 15,242, 94,115, 48,129, 11,147, 53,148,136, 0,160,136, 3, 1, 52, 0, 52, - 0, 52, 0,125,150,201,248,235,180, 90,127,128, 12,211,164,220, 99,248,205,254, -170,103, 55,139, 39, 95,134,207,127,240,194,190, 41,141, 24, 30,229, 62,215, 99, -219, 95,185,179, 35,173,174, 99,100,253,113, 0,197,113, 4,165,170, 21,226,212, - 25,102,183,229, 62,119,239,103, 58, 69, 85,239,219, 22,122, 98, 81, 16,165, 96, - 18, 68,121,161, 12,158,152, 85,155,156,222,128,254, 78,105,216, 85,193, 39, 62, - 72,139,210,152,148,173, 38,193,255, 63,128, 3,206, 11,193,115, 32,231,117, 99, -199,141, 30,245,133,163, 70,109, 30,149,189, 6, 69,156,102,141, 99,100, 1,136, -161, 20, 61, 45,201, 24,250, 70,238,234,169,210,111, 55,175,162,207,111, 15, 0, -144, 3,206, 11,223, 71, 73, 82,248,141,145,108, 5,255,202, 53,221,229,173,162, -166,179,155,206, 11, 27,119,129,210, 22, 86,145,245,194,240,166, 10,219, 65,240, -207, 11, 47,172,210,229, 91,159, 67, 17, 0, 67,101, 66,202,128, 84,119,108,205, -158, 35,106, 60,175, 75,254,235,233, 40,174, 35, 98,178,152, 68,128, 27, 52,127, - 8, 51, 69, 7,198,214,192, 47, 6,195,207,181,147, 19,123,138,130, 33, +// ../Source/Template/GB_rowscale_template.c: +uint8_t GB_JITpackage_192 [887] = { + 40,181, 47,253, 96,233, 8,109, 27, 0,230, 43,132, 40,192,208,108, 14,248,118, +213,110, 18,204, 73,136,175,208,121, 36,118,103,197, 29, 83, 31, 91, 39, 14,132, + 31,165, 75,149,212, 27,224,224,186,138, 66,117, 21,128,122, 0,115, 0,121, 0, +161, 55,199,234, 9,183, 41, 72,115,237, 47,155, 26,215,246,104,101,146,184, 48, +143,175, 59,183,113,107,199, 57,212, 80,237,162, 88, 93, 42,144, 68, 36, 19, 2, + 65, 68,114,135, 23, 93,194,180, 51,175, 63,170, 99,132,217,110, 40,119,105,171, + 42, 50, 28,231,165, 36, 52,190,115,220, 58, 83,206, 6,125,232,205,115,115,113, + 86,171,153,244,123,223,201,185,192,159,199,244,215,251,118,232,185, 20,184, 40, +235, 9,157,167, 56,110, 58,119, 45, 78, 15,123,236,237, 36,229, 16, 8, 52, 65, + 32, 1, 87,116,128,201, 29, 14, 43,122,195,165,187,176,138,180, 60, 48,116,146, + 18,157,211,176,109,171,112,230,140,149,222,194,251,255, 67,144,198,237, 78, 87, +139, 63,233, 51, 39,115,233,250, 31, 95,139,153, 13,167,226,157,121,157,222,173, +127,117, 94, 62,170,122, 59,231, 57,190,195,124,208, 30, 99,180,222,228,177,225, +188,213,121,246,245,110,255,245,215,157,103,152, 47,138,243,237, 85,138, 47, 89, + 76,173,131,217,191,198,156,103, 91,143,105,200, 65,145,135,100,234,119,142, 31, + 55,246,115,163,153,119,252,104,150, 28, 50, 75,134,191,217, 55,204,245,212,177, + 5,158,185,190,182,216,201,168,149,250, 63,185, 35,163,102,162,111,149, 10,194, +129,230,206,224, 32, 87, 10,210,175, 74, 57,161, 68,107, 51,141,197,150,242,178, +101, 22,211,238,122, 87, 90,193, 28, 52,172,161,227,178,131,253,129, 52,192,178, + 44, 75, 74, 41, 39,255, 44, 76,215, 29,209,169,127,174,103,143,222,140,251, 10, + 28,195, 76,112, 93,245,140,171,245,228,245,220, 26,139,233,194,100,201, 16,180, + 1,109, 8, 80,143, 88,209, 49, 23,108,203, 34, 48,249,145,151, 42,104,134, 74, +244,210,231,186,196, 97, 20, 74,191,232, 21,166, 85, 21, 11,187, 42, 36, 26,201, +131,246,159,254, 42,189,199, 94,105,188, 68,101,116,217,101,244,227, 21, 62,126, +114,234, 24, 69,166, 93, 56, 11,131,232, 46, 75,182,117,149,133, 82,105,151, 46, + 25,151,113, 90,133,169, 61, 94,202,119,212, 24, 24, 80,152, 60,114, 42,114,120, + 52,207,140,163, 22, 57, 95,135, 30,190, 35,234, 54,156,250,107,193,139, 45,138, + 51,128,156,168, 97, 57, 82,102,102, 70, 68, 65, 65, 97,146,180, 6, 80,132, 8, +153, 89, 55,242,200, 72,203,164, 14, 25, 51, 19, 92, 32, 73, 38, 40, 41,255,242, +145, 90,166, 71,117,100, 42,184, 15,169,118, 32,114,100,161,213,240, 70,177,198, + 82,234,180, 24,128, 73, 25, 37,126, 76, 15,126, 24, 1,174, 79,247,204,235,178, +140,252,105, 29,187,240,182,125,231,193, 93, 3, 60, 26, 24,117, 39,178, 73, 34, + 42, 25, 71,102, 92,237, 35, 30,211,150,185, 13, 51, 75, 33, 1,107,194, 10, 32, +208,133, 25,136,133,155, 36, 46, 28,123,189,138, 21, 13, 55,185,233, 79,146,138, +206,210, 63,211,200,112, 43,101,139, 4, 58, 47, 21, 8,177,192,164, 94,135,237, +181,253, 16,209,207,233,160, 64,201, 48,211, 64,233,112, 28,168,247, 49,232, 83, + 26, 61,114,180, 17,200,172,146,146,148, 85, 3,121,131,186,158, 53, 68,123,203, + 57, 32,214, 8,155,253,145,131,235,170, 50,101,117, 97, 28, 70, 25, 26,240,222, +213,163, 35, 74,215, 79, 25,185,115, 40,189,105,119, 28,195,155,236,138,128, 57, +141,154, 8,175,240,138,161,226, 0, 64,176,232,120, 33,224,128,208,166,216,220, + 41,193, 99, 68, 50,110,106,183,199,102,108,162,129, 77,210, 33, 16, 49,174, 98, +230, 65,184, 43,136,236, 81, 44, 74,111, 10, 89,228,141, 67, 8,192, 2,202, 1, +162,135,234,141, 40,109,215,224,132,134, 18,128,179, 9,152, 55, 31,100,111,211, + 48,129,213,215,128, 18,194,116,136, 91,231,249,166,201,170,204,180, 97,100, 1, +132, 95,232, 74,119, 69, 12, } ; -// ../Source/JitKernels/GB_jit_kernel_user_type.c: -uint8_t GB_JITpackage_197 [290] = { - 40,181, 47,253, 96,154, 1,197, 8, 0, 54,208, 54, 21, 16,253,106,158,251,225, - 11, 88, 95,179, 57, 53,240,156,129, 69, 4, 0, 16, 56, 8, 48, 0, 48, 0, 48, - 0,244, 92,202,223,175, 87,251, 3,252,249,225, 21,253,103,225, 75, 63,199,168, -247,224,133,249,198, 52,190,140,215,228,252,105,155,116, 63, 60,255,150,172, 87, -150,140, 44,127, 28, 64,113, 28, 1,231,191,231, 79,127,207,211,181,154,174,158, -119, 93,200, 19,139,130, 40, 5,147, 32,138, 23,204,192, 19,244,122,151,147, 55, - 32,143,171,117,252,174,160, 39, 62, 72,139, 84,185,156,173,230, 7, 29, 73,117, - 35, 72,122,212, 23,146, 26,181,121, 84,230, 53, 40,226, 52,139, 36, 35, 11, 64, - 12,165,248,170, 89,202,144,111,230,191,162,107, 13,255,243, 42, 62, 13,127,115, -213, 10,113,234,140, 0,176, 3,142, 23,190,143,146,164,240, 35,163,217, 10, 60, - 60,219,245,159,183,138,154, 72, 24,253, 39, 26,251,199, 11, 63, 95,105,114, 8, -188,247, 30,208, 1,199, 11,129,231, 64,206, 11, 21, 0, 69,101, 26, 20,135,164, - 44, 77, 29,136, 35, 0, 18, 22, 80,101,120,101, 79,244, 22, 39, 65, 72, 3,197, -117, 70, 76, 22,139, 8,112,131,230, 15, 97,166,232,176,216, 26, 94, 49,120,147, -218, 19,212, 50,219,137, 61, 69,193, 16, +// ../Source/Template/GB_saxpy3task_struct.h: +uint8_t GB_JITpackage_193 [492] = { + 40,181, 47,253, 96,235, 3, 21, 15, 0,118, 24, 77, 33, 16,149, 30,166, 38, 44, +202, 36, 34,136, 71,194,103, 26,135, 18, 89,232,206,161,223,106,142,254, 98,201, + 48, 34, 0,128,170,154, 1, 68, 0, 70, 0, 65, 0,161,248,104, 43,235,143,102, +251,249, 75, 83, 90, 70,105, 80, 47, 94,136,194,241,141,158,230,249, 65, 26,148, +150,102,255,116, 55, 4, 25,195,209,215,206,198,213,126,254,250,211,101, 43,168, +149, 57,208,205,120,243,224,152, 11,159, 39,138,120,107, 64,250,186, 96,117, 93, + 1, 23, 7,198,114,209,182,137,150, 93, 10,154, 74, 38,211,166,203, 58,127,130, + 3, 11,171,156,114,209,203, 90,113,253,231,231,234, 82, 82, 57,174,206, 61,165, +202, 60, 42,150,244,208,117,236,150,198,153,114,222,210, 93,151, 53, 85,192, 6, + 88,133, 32, 12,176, 14,112,128,166,240, 7,247,198,143, 8,188,219,196,220, 20, + 71,218,211,250,232, 49,237, 16,170,133,172,238, 53,213,150,187, 54,115, 30,106, + 78,253,235,234, 69,231, 27, 51,238,188, 25, 14,185,126,119, 55, 36, 65,247,190, + 12,161,229,253,229,176,203,142,212, 18,101,238, 19,140,108, 1, 16,206,151,213, + 39, 8, 23, 13, 75,211,246,180,125,162,103,167,249,186,140,222, 53,126,154,251, +219,180,172, 32, 59, 59,208,161, 20, 0, 71,215,111,236,127,115,245,158, 22, 61, +170, 29,110,251, 62, 34,209,181,137, 57,229,219, 80,224,235,170,109, 12,232, 47, + 6, 74,160,177,165, 83, 67, 65,105, 74,202, 72,181,112, 80,134, 4, 68,105,117, +122, 68, 99,150,161, 9,173,247, 70,130,181,195,182, 7, 76, 46,208,118, 28,146, + 88, 82,216,245,104,103, 25, 33, 43,116,197,248,208, 83, 6, 73, 1, 30,182, 7, +133,232, 19, 19,244, 5,252, 2,128,218,112,120,131,146,134, 62, 5,187,110,171, + 41,161,184,117,225,120, 45, 3, 54, 8,110,140,125,163,203, 95, 55, 37, 25, 50, +190, 19,110,198,184,215,222,105,174,100, 1,173,177,253,232,162, 31,207,236,236, +181, 7,104,245,230, 18,167, 18, 40, 97,152, 40,244,219, 64,203,136,160, 13, 53, +246, 90,105, 83,237,240,208, 66, 20,120, 47, 62,230,128, 15,154,204,207, 76,235, +148,215,206, 39,138, 78,113,198, 84, 81,128, 7, } ; -// ../Source/Shared/GB_Operator.h: -uint8_t GB_JITpackage_198 [623] = { - 40,181, 47,253, 96, 84, 5, 45, 19, 0, 54,219, 83, 31, 16,119, 30, 79,151, 68, - 84, 48, 60, 26,205,139,166,206, 20,222,189,229, 97,246,135, 42,235, 27, 46, 34, - 0, 64, 1,172, 2, 76, 0, 74, 0, 71, 0,210,209, 22,226,128, 29, 8, 11, 3, -118,104,193, 11,180,117,255,228, 34, 93,112,244, 22, 49, 53,125,167, 45,142,195, -242,136,213,217, 9,195,175,117,149,227,248, 51,167,186,248, 57, 73, 68,155,182, -148,174, 53,218,119,210,199, 63, 95,115,216,140, 88,176, 20, 59,235, 53,147, 61, - 38,125, 93, 21,225,186, 2, 45,221,180,142,231,183,155,220,245,136,219,111,174, - 25,252, 92, 58, 39,123,160, 38, 13,167,251, 7,202,225,164, 88, 53,179, 89, 55, - 61,217,195, 78, 42,172,112, 32,120,124,174, 58,154, 97,253,181,199,211, 33,133, -224,119,250,123, 11,225, 19,209, 20,160,159,172, 95,223,244,197,113,244,155,150, - 1,237,117,235, 64,199, 14,251,189,176,143,186, 49, 51,235, 55, 15,218,186,248, -174,171,194,218,186, 31,113, 73,212, 16,240,168,148, 26,205,172, 67,231,241, 66, - 79,189,116, 51,247,104, 62,126,142, 29,182,165, 90, 55,250,253,200,153, 26,103, - 9, 69,119, 87, 85,193,109,198, 47, 91,124, 3, 85,117,239, 38, 39,237,107, 97, -173,125,188, 46,230,214, 28,210,118, 72,223,124, 44, 63, 99,221,136,120, 52, 93, - 30, 16,144,238, 80, 42,141, 14, 97, 36,150, 76,114,113, 96,178,143,227, 2,122, - 17, 10,254, 55,114,198,184,180,246,155, 89,171, 42,205, 22,139, 7, 83,233,124, -209,182,161, 80,169,186,225, 84,124,168,225,169, 98, 52, 35, 41, 73, 65,106,180, - 6, 48,132, 16,229,152,205, 3,210,224,128,227, 56,238,148,153, 10, 36, 73,152, - 52,182,234,103, 3,116, 40, 92, 56, 61, 6,204,113, 66,205,177, 64,205,254, 90, -240,111,137,131,193, 52, 51,192,126,215,173,110,141,203, 54,201, 42,111,158, 77, -250, 6, 84,109,184,225,221,250,184,139, 56, 43,202,206, 56,135,231, 44, 14,172, -179, 58,242,214, 7, 17, 13, 6, 80,145,204, 40, 17, 61,245, 92,189,105,166,244, -206,236,247, 14,155,125,113, 83, 10,193,225,180,194,174, 70,118,192,225,211, 45, - 24, 57, 82,200,112, 93,159,249, 26, 22,202,208,216,199,176, 38,166, 85,135,194, - 91, 36, 35,102, 3,153, 20,196,182,140,237, 33, 16,122,225,196, 54,244,161,184, - 87, 27,197, 45,135, 48, 46,209, 72, 77, 82,147, 75, 69,168, 12,202,222, 32, 13, -189, 88,100, 44,149,127, 88,235,195, 93,106,152,226,189, 17, 59,177,178,224, 45, -206, 52, 71, 37, 32,132, 88,196,173, 44,226,192, 65, 53,230,226, 27, 1, 43,106, -212,230,132, 19,179,125,202,254,112, 83, 50,170, 31,247, 15,165,146,186,127, 10, - 88,162,160, 9,120, 77,155, 38, 83,153,105, 47,148,101,174, 64,163, 23, 77,170, - 30,238, 19, +// ../Source/Template/GB_select_bitmap_bitmap_template.c: +uint8_t GB_JITpackage_194 [637] = { + 40,181, 47,253, 96,108, 7,157, 19, 0,182, 31,100, 32,208, 92, 23, 3, 24,157, +249,214,174,223, 80,173, 93,212, 20,227, 78,144,226,143, 28, 38,210, 92,171,249, +194, 11,142,170, 89,129, 91, 0, 88, 0, 87, 0,176,212,106,235,185,222,167,234, +122,142,162,224, 13,140, 69, 98,225, 61, 20,137,197,187,146,187, 65, 95, 88,189, +252, 0, 94,118,110, 87,235,142, 55,124, 64,177,114,230,154,102, 34, 86,167, 53, +127,236,190,175,207,118,125, 15, 62,117,223,177,240,235,220, 6,144,251, 44,143, +216, 93,209,220,178, 59,215,214,190, 40,114,151, 22,181,154,172,100,142, 64,108, + 30, 2, 17,132,239, 51, 76,241,108,150,109, 59,187,186,117,205,239,216,162,176, +250, 77, 54, 28, 27, 95,201, 99, 20, 15,124,199,253,123, 12,252, 46,111,186,181, + 77, 9, 15, 59,164,145, 4,183,198,174,242,255, 55,218,182, 29,108, 90, 15,222, +196,245,150, 45,113, 88,120,246, 44,107, 6, 31, 73,237, 77,221,141,173,169,241, +172,198,182,188,162, 55,186,116, 14,166, 13,166,197, 55,101,205,167,110,224,148, + 75, 71,129,168,242,155,132, 32, 86,130,231,127,191,167, 21, 10,147,231,103,174, +139, 20, 56,236,186,187, 76,191,153,222,149,119,215,173, 57,139,190, 76,123,150, +250, 29,230,180, 89,109,122,110,178,245,194, 79, 93,169,163, 22, 69,107, 90,243, +115,203,245,218, 82,213, 52, 7, 18,255,174,209, 10,195,229, 13,185, 62,219, 86, +219, 36,223, 59,139,154,184,158, 36,129, 43, 88, 82,215,196,247, 82,198, 76, 40, +174, 68,142, 37, 81,184,163,240,178,209,136, 56, 30, 0, 6,195,249, 50,160,230, + 66, 1,221,127,147, 95,111,197,125, 48, 16, 53,158,209,106,212,214,254,119,249, +134,108, 45,139, 59,134, 67,134, 32, 17, 12,145,227, 39, 28, 81, 37,247, 84,119, + 15,103,180,132, 98,248, 33, 73,158,113, 19,114, 15, 99,160, 81, 49, 83,140,140, + 76, 32,162, 73,146, 44,107,112, 68,166, 10,171, 3, 79, 36,220,140, 52,174,203, + 84,172,108,145, 89,233,144, 34, 25,226, 85, 71, 93, 49, 8,233,160,209,246,117, +156,133, 44,222,204, 12,244,152, 69, 53, 52, 5, 20,212,139,212,105,162, 36,218, + 58, 79,216, 58, 94, 26, 77, 76,108, 4,152,146, 38,161, 73,153,127,164,122,205, + 0,155, 13, 17,114,198,193,183, 7,215,156,108,179,102,107,143,204, 55, 91,251, + 13, 27,249, 16,239, 77,100, 48,250,131,141, 75, 54,194,144, 31,138, 95, 47, 62, +219, 65, 12, 29,160, 81, 66, 56, 60,121, 88,208, 14, 88, 25, 24, 29, 53, 96, 42, +130,172, 7,180,159, 32, 28,191,245,106, 6, 51, 5, 8, 34,255,230,179,250,229, +202, 68, 41, 76,245,178, 32,107,158,134,106,238,193,230,224, 29, 2,123,240, 92, +233,153, 37, 95,115, 43,154,219,196,111,184, 25, 90, 51,151,223, 52, 63, 42, 51, +173,219,112,205, 53, 68, 29, 39,156, 18, 25, 39, 77,144,162,188, 9, } ; -// ../Source/Shared/GB_apply_shared_definitions.h: -uint8_t GB_JITpackage_199 [406] = { - 40,181, 47,253, 96, 99, 2,101, 12, 0,214,217, 77, 32, 16,149,115,160,182,111, -244, 12, 59,151,173,220,153,150,101, 43, 1,206, 16,142, 96, 32,133, 94,101, 64, - 51, 1, 0, 84,193, 13, 70, 0, 69, 0, 63, 0,215, 43,235, 35,121, 41,168, 51, -159, 48,214,132, 33,185, 87, 33, 11,182,245,113, 24,190,221, 97, 36,187,241,172, -252, 57, 71,103,247, 74,227, 45,173,218, 3,125, 82, 16,136,106, 95,200,202, 78, -218,183,103, 71,134, 25,228,250,164,205, 70, 27,199,189,140, 1,121,161, 32, 81, -133, 66,242, 62,246,167,109,123,191, 91,247, 34,195, 91,134, 45,162,149,187,100, -168, 16, 20, 75,237,113,214, 23,149, 59,246,157, 12, 49,138,237,100,173, 39,212, -230,178, 84,144, 69,149, 45, 95,110,175,244,244,229,219,102,125, 74, 32, 12, 8, - 74,113, 48, 32, 78,208, 6,159,108,139, 94,151,151,118, 14,231,251, 52,170,244, -106, 47,126,210,186,242,100,207, 71,157,223,246, 51,127,197, 91,199,219,150,215, - 51, 91,192,176,219,180,217,129,211,251, 74,187,114,135, 2, 14,124, 50,119,126, -233, 60,139,158,188,101,251,180,111,175, 53,230,236, 57,146, 20, 27, 78,174,170, - 91, 72,229,101,208, 79,239,185, 11,245,236,238,147,247,245,197, 83,123,174, 44, -239,153, 45, 47,157, 82, 36,195, 80, 42, 88, 6,163, 96, 15,199,149, 93,142,139, - 21,193,100,156,137,197, 98, 69,134, 51, 2, 0,151,164, 42,131, 73,110, 93,154, -134,198,210, 8, 30, 32, 32, 66, 98,144,195, 30, 55,195, 95, 58, 68, 55,155,200, - 45, 75,183,240,244, 28, 44,180,231,182,132, 64, 62,168, 3, 24, 8,224, 55, 50, - 72, 16, 51, 29, 65, 96,120, 45, 49,136,159,126, 82, 49,204,124,169,174, 52, 39, - 11,114,183,113,123, 1, 8,141, 0, 59,218,125, 83,232,153,137,152,165,192, 4, -175, 44,244, 40, 10,220, +// ../Source/Template/GB_select_bitmap_full_template.c: +uint8_t GB_JITpackage_195 [607] = { + 40,181, 47,253, 96,127, 6,173, 18, 0,230, 30, 98, 33,208, 92, 23, 3, 24,221, +252,109,191, 67,231,188,177,160, 41,198,157, 32,197, 31, 57, 76,164,153,156,243, +133, 23, 28, 85,179, 2, 1, 89, 0, 87, 0, 84, 0, 39,234,118,142,241,247,194, + 66,129, 80,116,142, 4, 66,113,142,220, 94, 72,175,171, 90,110,248, 14, 59, 55, +107,117,197, 23, 60, 95, 72, 57,117, 69, 49, 16,155,162, 85,123,236,190, 45,143, +246,244,254,187,121,207,169,114,235,220,133,111,243, 42,135,216, 93,177, 94,217, + 61, 98,220, 50, 71, 93, 87,251,158,198, 77, 90,108,211,145,130,249,225,160,117, +135, 67,121,210, 89, 13,219, 54,118,211,213, 45,189,103,139, 93,245,123,100, 52, +118,190,145,191, 38,221,119,110,187,247,215,247, 77, 94,116,167, 22, 29, 28,228, +140,196,241,219,105,102,145,255,175,201, 52,205,112, 67, 69, 67, 24, 20,157, 61, +201,170,191, 67, 80,123,205,187,179, 45, 51,157, 77,179, 37,111,216,137, 44, 28, + 67,105, 93,168, 77,109,231,233, 14, 54, 95,211,150, 55,111,224, 68,126,143,143, + 67, 74,112,125,239,247, 50, 2, 65,114,125,189,113, 16,194,150, 89,119,147,232, +181,210, 57,242,238,186,211,205,226, 86,105, 79, 50, 61,151,183,180,172, 22, 61, +247,184,106,229,163, 44,243,216, 98, 92,209,170,175, 87,172,215, 21,170,162, 58, +128,184,247, 20, 87, 87, 38, 95,208,245, 3,239,177,154, 54,211, 34,222, 57,139, +203, 92,207,113,176,205, 8,222, 77,154,244, 83,197,188,101,190,119, 34, 98,192, + 48, 21,110, 42, 8,194, 21,129, 22, 77, 38,180,233, 0, 46,151,141,135,249, 50, +150,201,231,222,147,252,118,169, 45,204,116, 68,108,239,113,250, 5,109,173,106, +251,101, 51,130,159,240, 3,141,162, 7, 20,223,217,136, 21, 48, 4, 61,227,168, + 35,106,192,237,101, 90,160, 97, 53, 84, 21,136,144,148, 38, 5,133,106, 53, 96, + 68,166, 10, 89, 7, 79, 68,110,147,228,174,198,200, 73,202, 68,181,164, 9,181, + 86,231,248,173,234, 42,199,112, 1, 1,149, 40, 52,246,240,202, 73,109,116,230, +225,164,111, 52,133, 65, 15, 92, 45, 26,203, 75,253,232, 37,228, 20,203,117,140, +234, 16,164,139, 55, 52, 80,125,125,123, 36, 77,246,111,183,181,183, 0, 71, 43, +227,134,177, 66,148, 57,196,143,207,102,232, 79, 3, 82, 89, 56,214,192, 26, 80, + 27,179, 48, 48, 50, 52, 96, 44,198,177, 8,180, 27, 33,221, 95, 59,213, 13,177, + 1, 50, 52, 83, 51, 89,189,115, 69,146,212,102,116,178,160, 42, 49, 12,106, 88, +194,140, 1, 63, 5,230,240,201, 90,240, 70,178,252, 78,140,118, 7,117, 72, 54, +157,194,184, 22,103,161,213, 55, 77, 71,101, 38,239, 46, 88,113,203,177,195,178, +146, 69,176, 87,212,229, 1, } ; -// ../Source/Shared/GB_assign_shared_definitions.h: -uint8_t GB_JITpackage_200 [12579] = { - 40,181, 47,253,160, 88,108, 1, 0,189,136, 1,186,226, 64, 41, 49,160,106,202, -234, 1,246,208, 2,156,218, 72, 96, 44,128, 77, 55,137,162,177,103, 4, 13,146, -119, 77,121,174, 87,158,211, 83,158,231, 9, 18,229, 96,251,143,164,138,227, 41, -188, 14,190,195,171, 66,145, 2,123, 2,117, 2,177, 51,219,238,109,179,211,240, -226, 97,209, 81,194, 66,132, 58,251,158, 51,198, 24, 99,140,255, 49,198, 46,206, -216,146, 60,251,198, 24,191,239,131, 40, 40, 62,159, 15,148,201,100,100,100, 64, - 21, 21, 25, 25,223,247,201,160,178,130,126, 50,178, 97, 52, 27,126, 80,127,215, -102, 58, 99,103,235, 75,178,190,190, 59,107,195,199, 1, 37, 90,150,203,197, 66, - 33, 17, 43,180,122, 89, 99,212,207,120,210,198,220,111,103,251,218, 60, 55,143, -243, 40,157,213,132,148,177,170,170,170,170,170, 10,106,202,146,192,127, 85,212, - 59,181,138, 84, 21,247,137, 48,215,191,166,105, 52, 5, 84, 85, 85, 85,126,167, -167,105, 24, 27,171,179,171,138,171, 28, 83, 63,112,254,207,231, 63,210, 93, 3, -135,164, 41, 58,138,139,115, 29, 2,182,189,167,185, 52, 60,181,235,106, 16, 86, -132,184, 36,168, 11, 5,196,117, 17, 65,145,162,128, 69, 71,156,107, 61, 20,146, -144,110,112,225,199,254, 26,206,102,212,234, 91, 71,114,143,117, 40,109,199, 44, -189, 48, 13, 28,222,125,153,126, 34,168, 39, 4, 58,130, 62,216,219,206,203, 6, - 14,217,146,182,248, 47,217,155,181,154,142, 46,177,194, 76, 26, 46,107,146, 0, -234, 7,108,200, 70, 67, 9,245, 3,203,149,153, 72, 96, 98,117, 97, 36, 40, 41, -246,181, 93,181,150,223,211,152,227,249,219,108, 25,117,147,203,175,105,215,116, -182,181, 78, 10,113, 45,179, 99,244, 36, 47, 12,229,160,239,117,108,186,118, 89, -237, 94, 3,179,179, 85, 21,163,101,105, 21,239,151, 34, 41,135,124, 81, 40, 19, -149,132,190, 48, 54,253,106,143,150, 52,174, 13,177,207, 29,249,182, 89,157, 92, - 13,247,203, 29,231, 93,103,251,157, 27,197, 88, 19,202, 3, 43, 98, 46, 10,204, -165,162, 16, 64, 92, 86,197, 50,193, 76, 42,147, 7,202,225,114,160, 36, 34,132, -117, 85, 28, 76, 44, 43, 54, 76, 88, 78,171,237,140,189, 77,123,181, 88, 4,203, -253,102,215,231,111,158, 85, 85,197,104, 89, 13, 51,151,205, 87,133, 86,209, 80, -171,240,140,199, 87,195,140,159,194,193, 19,179, 0,234, 40, 95, 1, 12,144,235, - 55,196,168, 93, 5,234,139,229,114, 61,144,160, 32,180, 3, 8, 22,104, 10, 37, -122,217, 99,213, 21, 32,136,180, 2, 4,148,140, 23,235,129,132, 5,194, 69, 81, - 18, 15, 53,195,188, 54,158,141,121,163,209,142,121, 27,173,175, 0, 65,102,155, -122, 55,227,106,105,187,150,237,165,147, 67,240,144, 24, 28,174,209,217,197,158, -174,127,246,185, 58, 54,113, 56,174, 78,159,226,200, 56, 92, 36,204, 59,215,177, - 75, 52,206, 26,198, 75,244,182,197,134, 0, 48, 60, 24, 28, 4, 64, 30, 12, 29, - 81,168, 33,254,206,116,104, 41,246,167,101,203, 61,166,161, 21, 41, 13, 90, 55, -175,131,201,241,157,157,229,249, 61, 11, 1,222,188, 94,231,180,198,195,215,102, -221,147, 38,225,106, 63,127,253,204,177, 11,243, 59, 53,124, 85,140,199,120, 94, - 13, 14,122, 97, 1,129, 99, 97, 33,155,230,243,196,223,244,108,243,225,204, 38, - 16, 98, 78,231,214,249,149, 19,158,209,167, 37, 80,115, 82,158, 31,119,139,125, - 91,181,217,117, 92, 47,216,111,103, 29, 99,119, 98,248,109, 8, 29, 42, 22, 73, - 89, 92,132,251,173,235,220,171,173,124, 58, 87,231,124,163,174,197, 28,195, 38, - 22,125, 96,118, 60,243,196, 58, 47,179,248,181,220, 61, 77,216,183,174,189, 51, - 53,233, 27,246, 83, 20, 97, 75,186, 65,117, 64, 4,135, 67,190,132,185,107, 50, -246, 56,207,126,211, 84, 38, 34,244, 67,189, 94,166, 48, 20, 5,234,206,102,124, - 62, 23,177,251,160,207, 87,241, 53,204,128,186,162,225, 7,106,137,194, 71, 97, - 34,101,162,251,251,190, 47,138,157, 66,119, 52, 19, 98,116,188,121,140, 48,198, -205,207, 8, 29, 1, 38, 68,178,131, 32,133,238,175,163,156,115, 50, 1,230,223, - 38,129, 31, 9, 93, 20, 23,139,156,215, 59,171,160, 16,101, 90,129,130,238,160, -142, 50, 16, 38, 67, 85, 36,175,182,243,199,171,205,237, 29,203, 69,236,237,186, -122,108, 24, 29, 3,128,254,166,199,193,208,208,102,192,134,215,230,233,133,144, - 18,145,178,174,156, 97,136, 61,155, 27,226,192,170, 79, 24,117,222,175, 30, 70, - 54,189,254, 67,183,116, 61, 74,109,165,237,116,222,198, 13,189,227,220,108, 43, -121,221,230,219, 54,239,236,174,135, 97, 78, 61,204, 94,215,244, 55,185,246,120, - 37,179,173,209, 59, 29,119,101, 2, 90,212,132,114,169, 46,100,103,177, 96, 65, -130, 86,232,124,103,198, 23,103,210, 48,126,119,198,191,109, 40,171, 34,223, 98, - 5, 16, 80, 5,240, 38,179,218,107,155,179, 55,107,236,156,252,254, 56,247,217, - 17, 65, 32, 75, 83,236,117, 94, 87,120, 17, 39, 76,202,203,132,242,112, 69, 77, - 77, 26, 42, 75, 5,132, 47,161,158,252,133,213, 89,116,151,137, 7, 22, 11,229, -178, 46,105,181, 99,175, 53,250,154,103,131, 15, 6, 3, 30,120,128, 71,195, 0, - 30,109,115, 63, 30,141, 49,171,101,175, 38,242,119,220,111, 40,254,111,236,245, - 57,199,218,226,109,194,252, 13,167,202,121,155,165,211,234,186,122,231, 29,112, -237,177,219,102, 51,233, 98, 99,209, 17,155,139,183,232,201, 67,172,122, 54,179, -221,245,235,154,167, 37,135,214,183, 93,207, 25,109,224, 67, 86,127, 55,215,168, -126, 99,155,107, 80, 99,155,244,175,115, 94,109, 96,186, 37,238,122,206,179,107, -250,155,213,112, 95, 20, 1, 39,144,148, 88,173, 97,120,246,106,185, 59,143, 99, -237,214,243, 59, 29,201, 13,148, 15,201,254,172, 39,106, 54,125, 60, 53,150,101, - 89,150,101, 89,150,245,154,102, 89,243,230,143,183,101,117, 52,193, 9,138,152, -124, 92,211,216,230, 89,106,245, 68, 73, 76, 96, 38, 30,174,237,175,206,235, 29, -175,141,191,173,248, 65, 77,113,221,185, 77,138,163,180,230,156, 80,140, 17, 34, - 8, 23, 18,108,144,228,240,104, 77,170, 76, 46, 7,149,137, 67,133,186,124, 26, -155,251,122,101,144,217,246, 60, 51,254,124, 45,173,175,145,223,230,247,125,163, -120,251,153,117, 54,201,212, 49,206,147,252, 89,142,234,123,133,100,227,217, 82, -236,175,179,212, 86, 91,109,141, 84,251,184, 78, 24,227, 39, 35, 68,228, 85,101, -132, 72, 71, 22, 18, 50, 87,102, 86, 59,127,243,156, 95,137,150,109,131,132, 83, -198,194, 66,202,178,251,141, 96, 15, 47, 44, 90,114,156,193,111,251, 56, 78,184, -104,181,216,107, 49,224,181,216,225, 23,207,135,216, 35, 8,163, 36, 51,168, 17, - 25, 61,250,128,140,205, 24, 95,187, 77, 79, 87,175,235,126,203,166,173, 84,226, -216,155,152, 99,119, 82,143,229, 42,196,182, 37, 9,123,155,134,243,111,219,166, -119,255, 58,118, 45,196,222, 22, 95, 60, 97,157, 25,214, 56, 69, 16,157,152, 9, -114,185,115,206,135,177, 84, 42,147, 72,174,111, 55,248,177,174,194,243,212, 60, - 26,184,253,204,142, 93,203,125,188, 61,182,198, 71,148, 65, 21,231,225, 24,241, -180, 53, 3,240, 61, 24,219,172,102, 39,230,154, 59,183,231, 30, 71,149, 66,246, - 61, 77,232,248, 61,150,233, 57, 2,227,157, 95,157, 92,246, 44,142,142, 85,207, -117,214,159,156,223,142,146,170,106,199,169,189, 99, 53,211,122,240,189, 48,215, -217,241,205,239,253,106,130, 32,121,181,120,250,197,215, 59, 20, 66, 96, 38, 16, -112,172, 86,195,170, 97,172, 82,102,189, 51,190,159,245,180,109,238,105,220, 82, - 70,182,165, 34,101, 95,109,204,239,103,223,181,253,142, 61,250,121,206,111,182, -121, 17,219, 14,215,121,163,227,109,102,222,249, 76, 61,203,188, 47, 25,201,155, - 55,179,238, 47,197,142, 65, 36,146, 40, 66, 25,181,194, 25, 91,106,116,100,195, -245,103,134, 56, 62,141, 3,178,145, 68, 52,124,201,164,161,188,156,243,219,199, - 27,103, 42,101, 30,232,105,202,170, 71,213,182,167, 78,115,234,220, 52, 48, 3, - 53, 90,189,150, 19, 82,232,179,199, 44, 23, 21,164,199,107,245,156,255,122,174, -119,108,148,116,126,235,110,207,108,103,219,212,170,115,102,238,234, 24, 78,121, - 60, 30,143,199,227, 97,177,182,154,131,228, 32,101, 32,146, 74, 78,144,139,134, -116,108,217, 22, 81, 66,117, 58,215,176,145, 45,214,104, 56, 52,184,175, 54,238, -220, 60,217,112, 72,120, 66,253,128, 84, 12, 34, 3,215,204, 45, 50,144, 24,100, - 38, 8,163,104, 3, 69,192,136,207,164,115,230, 91,103,223, 3, 64, 48, 54,148, -214,179,148, 82, 16, 73, 5,192,132,233,235,217,135, 0,156, 1,130, 61,233,129, -156, 76, 36,112, 61, 76,174, 10, 37,129,243,124,234, 93,254,182, 56,199,220,126, -223,107,192,111, 79, 82, 78,157,173,218, 0,144,123, 61,250, 16,121,236,141, 30, -130,124,115,140,115, 39,151,241,197, 31, 49,124, 30,146, 4,241, 95,163,209,180, -133, 4,217, 79, 83,132,180, 40,137,166,236,129,133,203,108, 91,113, 66,137,215, - 70,135, 74,188,162, 66, 55, 44,160, 97,117,101,212,234, 64,161, 32, 42, 87,117, - 85,125,113,252,170,186,186, 58, 9, 25, 53,207,173,227, 60, 83, 42, 37,167,122, - 26,245, 44,214,208,149, 63,242,170,222,167, 97,140, 26,221,104, 84, 13,168,163, - 9, 97, 5, 93, 20,165, 65, 98, 98,211, 92, 15, 95,146, 8,196, 49, 33,176, 57, - 32, 82, 31,221, 32, 82, 56, 0,234, 48,231, 80,215, 60,182, 86,119, 79,254, 59, - 53, 56,191, 95,247,116,244, 69, 10, 12, 12,125,217, 92, 43,164,240,217, 84,139, -232,251,129, 7, 14,128,160,111,207,245,156,205,169, 49, 64,215,118,180,249, 9, -167,250,237,232, 11,136,130,164, 43, 52,213,174,126, 62,155,141,164,191, 37, 13, -101,195, 8, 90, 0, 93, 26,134,103,171,183, 99, 92,252,122,184,186,101, 81, 82, - 78, 88,176,209,144,161,107,139, 47, 36,237,241, 90, 33,156, 71, 37, 16,103,252, - 54,235,103, 61, 85, 19, 86, 53, 33, 91,162,160,224, 90,234,215,179,185, 57, 15, - 67,186,235,119, 94, 55,175,167,167,203,196, 37, 74, 64,248,170,171, 12,118,111, - 56,140, 21,101,117, 81,117, 22,173,169,170, 90, 69, 15, 93, 17,147, 10,227, 89, -151, 40,108,155,151,125,130, 13,132, 27,140,166, 7,217, 16,106, 9, 35, 54,180, - 62, 86,125, 51,213,199,112,205,166, 49, 53, 26,255,181,114, 19,193,205,213,189, -137, 44,248, 60,197,213, 53,212, 50, 27,152,129,157,153, 88,253,135, 11, 35, 17, - 49, 12,221, 49, 78,106, 2, 15,213,249,119,122,182, 9, 36, 64, 28, 45,163, 65, -142,150,145,148, 2, 20, 7,234, 75,131, 11,142,197, 38,147,233,224, 4,101, 98, -103, 56, 13, 55, 13,187,140,127,195, 76, 7, 57, 80,151, 11,132,178, 34,196,229, -202,102, 87,219,216, 33, 14,232,154,219,220,164, 11,139,110, 9,103,193,130,185, - 76, 36,164, 21,177,144, 96, 0, 1, 2, 0, 0,113, 11,106,240,225,120,106,221, -133, 97,179, 66,210, 95,126, 92, 63,178, 96,230,122,254,136,204, 4, 98, 47, 55, -180,100,196,223, 25, 43, 83,209,153, 85,200,180,164, 43,242,124, 48, 48, 64, 10, -120, 64, 26, 26, 48, 64, 1,144, 11,171,243, 98,192, 78,173, 39, 91, 32, 96, 34, - 17, 17, 13, 39,181,225,164,161,132,208, 37,121,102,103,234,247,177,172,161, 45, -246,121, 78, 21, 84,127,195, 61, 81,114, 66,177, 46,170, 98,137, 40, 36, 44, 21, - 85, 93, 15,150, 11, 51, 97,129,252, 70, 32, 10, 16,214,132,211,217,181,231, 73, -237, 84,145, 22, 10, 37, 78,143,173,222,117, 83,171, 84, 30,143, 71,149,108,197, -248,248, 57, 56,100,118,230,233,180,190,213, 29, 31,143, 73,147,221,210, 67, 76, -250,213, 73, 61, 91,168,218,134,223, 89,218,223, 17,226,239, 33, 31,111,233,204, -228,116,236,142, 59,130, 33, 6,175,199,106, 13, 35, 70,125,215,116,108,220,121, - 60, 40, 36, 48, 21,234,146, 36, 7, 9, 78,252,210,214, 40, 5,144, 98,168,228, -149,154, 65,234,156,154, 17, 1, 0,160,160, 0,147,129, 24, 24, 14, 7,210, 68, -114,209,100,210,229,246, 68,194,199,132,152, 6, 4,201,195,128, 25, 56, 14,131, -131,101, 80, 0, 44, 0,132, 32,128, 5, 0,128, 3, 40, 0, 0,176, 4, 89, 4, -189, 90, 3, 44, 3,175, 2,121,228,239,184,228, 4, 40,240,130,175, 80, 71,159, - 99,143,158, 88,246,249,252, 60, 5,110, 12,162,167, 27, 39,146, 27, 61, 66,240, - 98, 35, 75,173, 4,160,235,166,223,144, 35, 68,132, 67,237,126,222, 72, 80,208, -164, 90,150,199,247, 50, 56,159,218,200,134,185,103,234,106, 22,193,142,231,207, -251, 95,213,188, 63,208, 37, 48, 54, 92, 44,175, 32, 69,140, 6,110,158,163, 43, -107,180,251, 29, 80, 22,121, 12,188, 41, 15,212, 19, 14, 5,193,197, 78, 2,194, -247,160,186,200,179, 93, 92,174,242,138,113, 65,136,166,208,223,143,161,245, 59, -183,217, 97, 58,168,143,222,169,232,208,121,135,160, 98,120, 3,117, 4, 80,167, -168,149,109,202,233, 92,227,209,124,174, 93,150,189,218,157,117,158, 31,139,194, -220,147, 1, 7, 9,234,211,147,102, 25, 73, 21, 37, 57, 69, 82, 62,245,134,121, -219,195, 16,125,139, 19,222, 83, 53, 5,251, 8,252, 67, 60,146,215, 85,174, 46, -230, 18, 24,207,232,175, 82, 42,156, 66,112,170,215,149, 75,141,250,134, 4,146, - 19,119, 35,103, 84,141, 10,237,241,173, 30,208, 41, 22,162, 87, 84,121,164,135, -203, 63, 86,166, 97,238, 99,222, 0,155,234,110, 55,194,175, 65, 58,202, 8, 74, -169,251, 17,107,218, 79,138,139,165, 75, 93,145, 46, 98, 52, 4,154, 98, 15,186, -206, 65,210, 61,180,194,122, 81,155,109,251,201,113, 22,253,249,137,249, 11, 51, -205, 89,104,242, 67,147,143,175,225,255,124,115,200,253,102,153, 47,229,106, 0, -136, 85, 46,111,113,130, 85, 18, 11,159,158,253, 25, 74,154,182, 66, 8, 37,189, - 13,237,165, 56, 83, 34, 36, 21,184, 27,194,184,161, 25, 53,253, 49,148,250,141, - 30, 90, 61,195,104, 70,230, 10,113, 81, 9, 16, 99,205,252, 77,141,212,127,226, -183,142,172,118,126,232,133,232, 37, 99,212,244,231, 88,231, 62,135, 93,109,194, -127, 31,189,155,164,217,169, 38, 64,163, 31,252,134, 84,233, 8,127,177, 29,240, -212, 68,153,123,120,178,107, 89, 3,133, 65, 80, 89,166, 83, 73,241,232, 72, 37, - 62, 22,238,171, 35,169,140, 89, 64,143, 35,145,120,210,157,188, 64,117,202, 79, - 69,162, 16, 93,213,108,220,160,138, 37,134,183, 74, 41,232, 75,131, 92, 29, 35, -169,227, 23, 30, 28,197, 80,177,241,210,180,185, 59,156, 83,249,217,213,213,157, - 36,116, 95,223,122,193,140,113,143,216, 60, 98,172,150,178, 98,250, 52,107,253, -133, 1, 93,133,240,160,227,237, 50,106,116,216, 90, 22,206, 62,117,159, 20,116, - 55,194,161, 70, 28, 22,120, 11,188, 80, 20,205,210,149,198, 80,250,129, 46,119, - 51,159,139, 86,217,140,218,245,146,150,196,239,134,182,103,198, 45,110, 45,191, - 99,199, 57,209,250,199,188,187,228, 28,205, 63, 53,162, 27, 86,244,151,170,167, - 84, 71, 31, 72,184, 68, 42, 65,201,217,232, 20, 36,156,163,121, 10,175,236,223, - 20,212, 27,212, 45, 34,187,231, 32, 1, 39, 94, 53,114,167,184,106,130,193, 80, - 80,169,241,153, 66,208,172,125, 8,238, 88,255,192,102,201, 68,250,237,176,135, -108, 66, 5,239, 67, 24, 87,177,100, 52,154,243,254,137,105, 94,152,108,186,172, - 24, 45,171, 68, 14,142, 58,231, 43,247, 57,148,109,245,223,122, 19,161,209, 32, -145,177,187,144,153,104,197, 1, 21,129, 67,237, 86, 30,205,117, 22,128, 56,108, - 75, 69, 60,159, 81, 16, 33,133,248,237, 93, 4,115,164, 4, 72,140,100,221, 42, - 67, 89,104,141, 19,156,127,226, 85,140, 89, 26, 79,200,198, 35,128,114,106, 2, -147, 24, 18,186,242, 44,159, 78,186,229, 30, 0, 82,139, 2, 81, 93, 95,253,105, - 66,241,145, 90, 44,124, 17, 84, 0,191, 26,119,228,172,174,192, 96,162,174,126, - 2, 16,187, 29, 57,152,217,175,245,222,221,145,137, 29,127, 98, 44,111, 28,225, -194,230,144,193, 45,153,245,212,164,132,135,248,227,179,242, 85, 59, 87, 85,193, - 2,162,161,143,109, 73, 75,252,248, 8,217,183,136, 59,219, 40,197,147,218,178, -146,100,243, 53, 48,250, 43,232, 87,191, 24, 39,130,245, 80,208,158,202,131,190, -248, 78, 91,219, 11,120, 87,111, 88,128, 25,146,232,201,198,149,207,156,151,222, - 40,251, 50,125, 81, 98,203, 94,209,215,224, 27,241, 18, 77,226,123,243,223,189, - 19,255,194, 17, 19,221,126,162, 71, 90,136,111, 44,244,104,144,243,156,189, 69, - 82,218, 3,105,150, 73,146,186,132,138,101,210,213,197,178, 15, 9,116, 42, 63, -194,213,132,154, 7,193,146,167, 12,222,204,132, 69, 29,230,109,143,178, 18, 50, - 27,104,177,228,137,220,118,199, 3,195, 7,208, 36, 31,171, 5,118,206,236,168, -143,147,200, 79,195,178,214,248,190, 37,235,174,200, 57, 69,107,194, 97, 13, 19, - 56, 64, 45, 87,204,218,162, 71, 14,111, 74,115,234,112,240,229, 36, 4,185,152, - 94, 80,170,112,212,126,190,198,125, 93,119, 82, 29,127,132, 93,237, 9,187,240, - 21,228,226,248,226,216, 16, 14, 97, 95,200, 74, 89,176,240,157,220, 80,119, 25, - 91, 67, 18,198, 85,241,172,123,195,231,242,239, 48, 73,227, 55,203, 87,224,247, -107,190,221,198, 82, 67,218, 71,126,224,160, 31, 65,139,187,161,251, 67,221, 8, -137,180, 2, 58,242,196, 88,111,116,224,177, 47,150,191, 49,243, 15,184, 3,206, -166,243,233,189, 70, 13,234,190,196, 26,240,170,111,194,226, 87,127, 35, 66, 14, -191, 54, 73,242,211,234,103, 4, 97, 83, 88, 48,232,165, 23,171,251, 96, 47,167, -221, 97,226,224,105,250,148,172,163,202, 17, 20, 78, 4,249,165,253,112, 62, 52, - 55, 27, 11, 56,125, 45,196,183,151, 24,155,254, 40, 67, 40, 58,107,228,105, 21, - 6,138,150, 0, 14, 7,157, 71, 74,193,143,236, 31, 90,232, 58,103,208, 81,196, -185, 62,225,214,121, 3, 94,232, 86, 48,203,121,160, 88, 35, 45, 51,187,210, 5, -161,237, 50,237,136, 4,254,228, 70,148,134,188,237,181,131,223, 21,229, 44,140, - 99, 35,151, 68, 79,126, 76,116,109,206, 71, 94,165,212,154, 22,146,165, 39,107, - 71, 15,148, 57,142,242,159,182,192, 78,184,122,148, 87, 90, 81,123,190,165, 30, -119,227, 64, 72, 46,132, 50,141, 13,150, 26,159,163, 51, 19, 84,216,253, 46, 76, -232,138,229,120,171, 83,251,232, 42,149,227, 53,134,176, 19,120, 68, 35, 11,202, - 5,120, 0,195, 56, 89,190,173, 22, 38,125,131, 4,148, 55, 84, 10,171,156,242, - 20,132,153,149,212,209,180,201, 84, 89,215,100, 94, 80,153,168,126,241, 87, 43, -170, 98, 60,244, 42,185, 70,193,138,201, 58, 97,189,206,219,217,232, 88,118,252, -105, 6,145,150,228, 60, 57,107,238, 2, 52,113,132,227,106,183,218,233,178,130, - 1,209,102,247, 33,211, 37,127,123,155,140,174,200, 97,184, 45,242,152,239, 23, -148,248,173, 98, 9,188,171, 34,222, 83, 19, 11, 57,177, 94, 2,239, 66,236, 86, - 75, 21, 82, 47,241, 76, 72,219,173,176, 1,120,191,166,134,143, 79,171,179,248, -109,109, 4, 50,180,198,201, 62,161, 14,120,132,104,201,245,206, 54,126, 84,253, -123,216, 35, 99, 26, 28, 0, 13,155,181,223,238,123,240, 26,225,241,207,114, 25, - 78,179, 84,168, 24,142, 57,230, 28, 8,108,219,120,129,239,235,195, 96,115, 51, - 49,230, 12,208, 57, 17, 39,235,212,124, 49,204, 98,102, 64,206, 26,121, 41,153, -148,145,216,130,101, 70,141,184,109, 41,192,130, 29,135,254, 11, 90,198,180,112, -109, 6, 43,205,128, 71, 28,177,189,106,121,199,228, 46,113, 59,108,238,104,111, -152,189,165,160,140, 19,127, 85,124,233, 75,222,146,226, 68, 78, 80,227,135, 83, -146,192, 81, 73, 48, 67,238, 15,182, 30, 53,234, 49, 24,125, 78,217, 19,201, 22, - 22, 56,246, 41,195,163,199, 83,129, 64,226,250,196, 20,108,119,241, 86,240, 4, -146, 64,100,232,171, 39, 77, 28,129,120,204,253,240,103,181, 19, 14, 53,108,151, -242, 78,195,246,164, 31, 81,198, 6, 21,145, 29, 39,157, 45,215, 29, 5,147,118, -251, 49,234, 82, 32,109,212,107,113,219, 89, 82,156,159,152,185,177,100,141, 89, -142, 17, 98,101,211,151, 83,236, 20,137,175, 54, 18, 37,229,138, 16,238,167, 40, -126,108,202,218, 25,192,126,104, 89, 80,194, 41, 73,124,146, 48,150,118,218,242, -115,160,166,100,163,146, 7,140,100,151, 2, 30, 15,229, 82,168,198, 93,110, 72, -232,224,228,162,118,235,104, 1,148, 23, 27, 22,191,246,188, 2, 82,131, 9, 95, -221, 64,131,206, 64, 58, 35,192, 47,251, 32,226, 48,228,181,158, 77,171, 37,195, -192,145,178,216,148, 34, 57,229,250,150, 53,235,226,158,135, 18,205, 43, 19,190, -180, 73,149, 88,183,107,160, 5, 84, 13,135,112,145, 6,137,208,119,124,148,114, -209, 68,197,129, 78,214,234,144,181,144,130,220, 68, 77,116,100, 7,152,210,167, - 85,196, 81, 71,243,242, 42, 7, 59,221, 18, 54, 71,111, 92,129,130, 59,219,211, - 61, 50,203,132,205,250, 87,241,199,232,170, 60, 75,164,251,179,152,253,160,238, - 1,230, 52, 59,178, 81,193, 98, 83,134,191, 15,104, 45,151,158,237,175,147, 77, -215, 92,165,176, 56, 65, 95,218, 62,171, 94,158, 24,160,117,242, 27,232,124,223, -194,210,205,169,195,176,204, 22, 72,216,122, 7, 55,113, 77,226,245,211, 72, 4, -203,107, 75,193,144,103, 6,255, 82, 25, 49, 48,131, 55,218,126, 81,164,143,113, -121,229,147,230,108, 29, 68,165, 46,112,252,126,231,160,230,186,186, 63, 28,216, -240,109,137,183,126,124, 1,242, 62, 1, 46,125,203,185,141, 53, 12, 49, 29, 76, - 59,235, 55,107, 5, 34,221, 44, 63,227,100,169,140, 48,161,182,147, 30,208, 72, - 67, 63, 96,136,243, 3,165, 78, 21,108,191,222, 9, 3,212,166,243,146,179, 37, -169,107, 65,152,213,129, 8,115,251, 40,191,126,129,187,168, 95, 24,165,144,148, -166,103, 32, 82, 76, 27,152, 41, 0, 3,221, 17,196, 15,202, 26,241, 92,117,198, - 36, 49, 68,130,197,103,115,242,126,126, 10, 2, 51,167,163,188,211,112, 5,227, -217, 34,142,217, 31,141, 97,220, 11,186, 35,202,245,165,213,215, 21, 34, 38, 25, -124, 55, 80,143, 21,138, 23,105,165, 11, 9,107,109,161,225,126,215,239, 99,157, - 65, 27, 61, 35,100, 63, 68,254, 77, 27, 76, 98,164, 57, 9, 43,217,129,197,120, -208,254,152,237, 92,162, 60,183,140,252,202,235,158,103, 47,148,102,248,155, 5, - 6,161, 16, 1,115, 69,190,221, 29, 23,158, 37,195,122,181,194, 4,165,100, 95, -136, 68,136, 52,245, 42,144, 11,136,178,170,136,246, 24, 67, 45,245, 83,110, 2, - 27, 71,202,139,177,158,240,160,104,130,174,132,161,136, 5, 65, 49, 58, 86, 71, - 23, 1, 69,148,194, 74, 78, 19,159, 72,234, 35,118,201,147, 37,188,116,153,117, -108, 62, 54,217, 45,222,180,250,192,190,138,121, 22,201,156, 48, 94,183,196,172, -170, 24, 15,245,215, 33,108, 97,109,196, 5, 13, 65, 21,227,209,152, 70,217,149, - 40,163,190,115,145, 61,212, 55,141, 37, 87,121, 25,150, 6, 72,168,193,172, 89, -175,163,219, 73, 46,129,121,226,249, 86,225,172,209, 52, 54,116, 65,147,164,160, -192, 38, 52,247, 32,161, 26, 5, 28,165,252,227,253,180, 32,238, 47, 69,118, 70, -142, 9,144, 84,227, 22,243, 40, 81,145, 28,109,222,153,135, 46,129,214, 99,228, -224, 68,172, 19,246,165, 75, 86,149,200, 73,229, 14, 13,231,219,108, 47, 97,163, -168, 54, 6,247, 61,138,222,245,246,160,150,213, 72, 95, 91,237,105,164, 11,224, -145,152, 89,157,189,241, 44,179, 78,120, 37,151,240,132, 0, 98, 47,133,112,224, -254, 65, 57,113, 93,247,179, 64, 35,150, 0, 63,151, 6,186, 24,251,211,160,251, -231,120,253, 69, 43,238, 61,140,215, 3, 42,125, 62,218,177, 9, 65,194,175, 97, -113,119, 57,173,152,132, 28, 87,199,209, 35, 83, 71, 67,113,218,232,102,201,207, -250, 3,182,241, 62,191,148, 74,221,150, 23,184,137, 0, 70,157,104, 24, 23,126, -198,165,177,191, 57, 25,132,195,174,198, 32, 67,109, 7,162, 5,248, 19, 39, 55, -140,223, 6, 98, 31, 97, 88, 83,185, 41, 30,168, 18,249, 28,128,254, 16,170, 59, - 85, 62,105, 81,195, 1,203, 11, 67,175, 35, 12, 1, 54,196,147,244,118,203, 75, -129,248,227,226,226, 51, 95, 52, 98,244,152,247,252, 4, 90,243,137, 43,159,157, - 41,148, 56,159, 10,153,178,100,247,193,187,121, 13,241,177, 19,135,172,120,235, - 69, 36,179, 29,184,107, 37, 41, 62,138, 38,175,248,204,101,245, 44, 28, 28,132, - 73,199,238,117, 68, 30,163, 12, 14,172,118, 71,103, 94, 88, 3, 64, 68,245,198, -216,102,128, 99,155, 72, 8, 6,113, 96,132,189, 14,160,108, 98,114,150, 42,118, - 49,197, 14,179,203,108,185,195, 65, 88,222,121,177,226, 9,151,205,134,114,232, - 7, 15,255, 20,152,232,175, 20,118,184, 28,194, 88, 42, 31, 54,113,220,148, 26, - 45, 63,230,108,218, 58,113, 6, 5, 82, 76,232,186, 22,219,253,158,173,196,130, - 49,111,196,108,192, 54, 7,245, 7,147, 70,160, 8,132, 33,111, 87, 77,241,119, -118,133,158, 81,159,123,203,142,169,156,165,214, 72, 61,201,210, 43, 40,228, 95, -207,124,216,247, 54, 31,158,191,152,186,214,127, 37,158, 98,195, 48, 7, 79, 84, - 84, 51, 74,178,211,179,205,106, 50,177,179,169,190, 63,135, 19,119, 1, 75, 58, - 52,168,192,243,219, 1,163,219, 58, 43,243,144,166,128,140, 33, 76, 55,114,122, -193,135,171, 81,101, 6,219,129,108,199, 99, 71, 43,240,234, 93, 44, 14, 45, 76, - 54,222,191,221,226,157,166,200,188,120, 96, 58,162,101,250,168,225,165, 26, 94, - 82,213, 1,115,228, 94,231,145,176,128,186, 78,114, 99, 16, 85,195,117,199,111, -248, 13,178,212,167, 87, 22, 5, 28,172, 95,154,103, 37, 96,165, 29,222, 46,137, - 42, 28,147, 74, 1, 42, 39, 22, 24,253,190,113,214,184,183,149, 13, 93, 17, 15, - 65,235,251,240, 10, 98, 56,117, 74,132,236, 8, 98,134, 46,214, 91, 69,146,233, -248, 59, 97,200,251,217,237,160,212,201,118,209,143,237,242, 19,186, 78, 75, 34, -122, 10,162,218, 73,255, 75,183,112,184, 37,169, 14, 1, 92,151,239,131,171,165, -115,242, 34,121, 9,204,136, 23,206,251, 8,215, 3,134,228,195,218, 55,210, 25, -158, 31,213,206, 48,107,215,168, 80,237,146,231,237, 58,140, 80,158,247,183, 91, - 89,201, 51,149, 27, 3,167, 55, 2, 95,254,166,139, 9,213,234, 65,231,135,159, -234,140,196,203, 37,128,180, 53,188,251,139,138, 63, 96,195,137,218, 64,120, 6, - 65,154,226,204,219,227,243,223, 13,200,147, 92, 55,246,104,156,134, 73, 16,239, -197, 65,248,212,152,179,215, 59,118,253, 85,228, 12, 95,244,138,249,182,163, 38, -213, 62, 53,238,202,100, 89, 73,184, 60, 20, 72,100,173, 81, 0,220,135, 53,153, -200,136, 18, 66, 57, 58, 12,145,168, 44, 24, 37,216, 49, 5,213, 78,209,147,178, -220,206, 53, 59,215,215,182,208, 51, 89,204, 0, 59,229,248,154,172, 30, 0,133, - 29, 43, 71, 58, 6, 68, 1,154,247,176,161,233, 68, 8,219,202, 12,212,127,161, -221, 53, 55,104,198,228,170,251,188,197, 59,153,253,118, 37,155, 1,219,195,222, - 20,108, 44,223,236,210,250, 15,244, 26,212, 47,124, 60,112,169,143,173, 83, 75, - 82,157,215,118,198, 68, 0,218,190,146,168, 9,198, 73,122,218, 45,181,228, 71, - 73, 8,217, 45,218,110,117, 55,241,173, 76, 0, 18, 94,113,164, 74,125,131, 74, -196,239,240,120,104,233, 17,143,150, 18, 50, 36,206, 29, 67,141,158,228,219, 80, - 97,111,177, 75, 33,240, 44, 56,241,150,176,169,253,132, 97, 58, 16, 82,217,206, - 60,244,230, 38,233,148, 84,128, 68, 52,174, 34,162, 70, 13, 88, 61, 52, 85, 5, -207,164,181,242, 19,113,200,160,210,201,233,166, 65, 9,235,203, 34,121, 25, 29, - 72,111, 57,193,105,227,164,132,198, 80, 76,137,250,252,161, 34, 70, 21, 88, 76, -117, 0,251, 57, 73, 1,130,124, 45,200,176,112,192,140,121, 61, 57,104,249,243, -207, 6, 26, 65,204,127, 3, 9,208,180, 38,112, 81, 19,208,248,114,131,215,232, - 28, 38, 38,146,150,213, 20, 92,209,169, 14, 43,120,157, 84, 16,218,117, 9,103, -173,168,190,170, 49,175,144, 40, 34, 35, 64, 63, 86, 81, 18, 58,114, 33,112,121, -182,109,208,205, 18, 89, 15,208, 57, 31, 83, 99, 9,197,137,136,150,252,159,239, - 53,196,222, 93, 90, 67,105, 6,207, 81,214, 62, 81,120, 51,141,183,140,192,161, - 46, 41,142, 67,200,179,129,210, 79,224,110,255,150,101,189,126,196, 42, 12, 61, - 34,104,108,145,162,159,121,141,115, 63,193, 29,127,174, 64,132, 74,115, 10,253, -217, 70,143, 50,136,106,212,246,120, 19,108,146, 29, 86, 18,247,199,209, 78,230, - 47, 20,133, 99,223,206,253,231, 38,185,160, 31,235,158,142,106,131,226,181,241, -146, 30,233, 86, 7, 64, 28, 1,199,191,142, 60,151,176,187,118,243,218, 90,221, - 0, 63, 43, 30, 72,143,254, 64,163,237,167,231, 53,158, 28, 32,149,160,184,184, -103,115,245,145,141,131, 71,249,224,148, 80, 26,232,165,250,107,195,181,253,182, - 80, 74,239, 14,228,174,132,237, 44, 85, 75,220,130,223, 99,165,112, 18, 22, 81, -241, 83, 69,199,231,179,177, 99, 40, 20,123,116,152,240, 75,145, 0, 58,244,120, -171, 82, 26, 17,157,202,189,206,186,177,120, 29,179,170,129, 59,141, 25,152,120, - 51,156,246, 83,163, 45,124,191,237,241, 55,185,238,149, 77, 92,195,116, 38,216, -176, 60,153, 26, 60,247,234, 57,129,202, 44,179, 5,247, 88,140, 9,211, 93, 58, -223, 10,145,122,242, 47,211, 56, 56,219,126,154,197, 14,145, 0,135, 52, 44,191, -131,233, 21,158,112,243,240,247, 60, 32,130, 18,164, 38, 33,205, 66, 87, 8,212, - 76,192, 9, 98,210, 26, 29,171,197,190, 65, 42,245,214,139, 84, 42, 27,146,149, -136, 26,166,234,220,139,130,232, 26, 76, 13,132,119,178,229,158,150,189,162,112, - 42, 26, 49,205,103,220, 80,129,186, 34,109,101,233,159, 20, 88,205,211,252, 54, -140,196,130,233,144,103,175,250,104,143,106, 59, 91,158,145,180, 94, 51,104,105, -166,169, 41,192,180, 82, 4,120,219, 91, 73, 94,227,250, 78, 16, 24, 15,189, 34, -187, 61,248,170, 72, 52,198,171, 90, 4,101,140,246,201,189, 52,226, 49,241, 55, -199,135, 34,156, 9, 54,246,196,246,180, 14, 22, 37,228, 90, 97,106,241, 63, 41, - 43,133,180,173,228,242,238,249,225,159,104,172, 52, 18,100,223,129, 82, 22, 90, - 2, 73, 89, 46, 30,109, 65,172,146, 20,128,155,228,168,196,166, 27, 23, 85, 56, - 69,190, 93, 80, 63, 45,171, 68, 20,161,135,188, 18, 50,148,124,145, 90,131, 88, -249,210, 34,165,255,218, 90,204,154, 96, 61,138, 56,162,116,237, 50, 82, 16, 54, - 9, 95,119, 56,205,224, 68, 88,194,252,250, 26, 48,208, 89, 7,137, 30, 24, 82, - 16,238, 58,192,227,169,255,181,204,120, 6,253, 29,162,223,152,115,101, 32, 5, - 54,163, 40, 39,243, 42, 2, 37,244,138,122, 29,164,174,205,110, 44,107,245,110, -204, 44,174, 50, 89,157,201,240,189,227,163, 1,232, 8,180, 18,133,131,179,195, -111, 68,242,222, 14, 37,134,208,115,101, 60, 49,215, 36, 54,148,248, 90,162, 63, -163,102, 91, 96,106, 19,108,196, 34,235, 68, 77,228,117, 39,124,102, 17, 22,106, - 61, 18,105,117,122,159, 9,109,197,203,231,189,112,243,150, 50,188,194,197,112, -129, 94,208,141,135,248,248,233,179,217,219,143, 34, 76, 55, 58, 15, 5, 68, 90, -128, 90,230, 43,126,114, 85,254, 32,158,167,233, 61,141,217, 33,170,141, 10,221, - 83, 23, 51,224,225, 35,181,132, 82,109,173,133, 96, 8, 56,209,103, 16, 55,219, - 5,177,181,199,100,140, 53,163,124, 65, 49, 33,120,105,151, 92,187,136, 78,161, -214, 87, 85, 77, 69,247,107,105, 65,111,149, 82, 89,224,111, 90,194, 57,144,191, -135,196, 12, 46,221, 9, 9,244,134,255,198,229, 37,153, 66,194, 35,112, 52,187, - 63,108, 65,165,139, 65,234, 12,192, 68,144,204,116,199, 35,232, 93,189,206, 28, -137, 13, 36, 97,185,145, 25,179, 77,194,167,112, 14, 73,220,184,200, 95, 44,229, -203,193, 46,253,227,109, 14,166,224,205,172, 12,170,117,152, 60,146,111,175, 31, - 91,199,160, 80,250,101,195,155, 24, 98,230,121, 47,177,104, 79,107,170,112, 85, -126, 98, 10, 67, 83, 27, 75, 98, 64,133, 4,242,186,236,207,101, 62,194,161, 77, - 61,240,252,166, 56,158, 79,185, 93,146,251,117, 63,209, 35, 49,198,193,237, 88, -181, 27,253,112, 33,188,208,196, 39,186, 2,232,195, 14,115, 36,195,133,158, 51, -185, 30, 63, 32, 97,130, 37, 2, 14, 0, 89, 15,131, 3,194,123,224,169,177, 97, -182, 53, 4,184, 79,112, 23,148,238,203,180, 52,189,180, 92,145, 49, 1,143,180, -179,138,200, 93, 94,249, 23,112,220, 81,210, 52, 36,112,196,200,106,165, 63, 26, -216, 94,223, 45,225, 98, 53,216,106,144,119,201,179,177,209,200, 67, 4, 12,175, -136,175, 8, 80,192, 1, 58,160,236, 74,126,250,179,142, 1, 22,163, 15,237,193, -169, 1,243,172,253,149,180,104,199,197,174,248,157, 57,167, 71,160,231, 62,204, - 22, 14, 3,152, 53,151,126,132,201,155,120,173, 23, 32, 69,252, 18, 41,185, 54, - 35,186, 83,155,247,193,181,131,213, 61,167, 83,208,251,165, 0, 67,117, 84,141, - 18,250, 26, 89,169,234, 20,240, 65, 95, 43,168,210, 84,124,232, 47,165, 89,185, - 13,139,195, 16, 67, 47, 29, 99,161,134,163, 12, 7,124,166,115,218,188, 27,181, - 2, 35, 81,106, 34,126,219, 1, 53,112,118,168,116, 60, 7,132, 40, 46, 15,146, -255, 98,139,248,116,155,115,238, 58, 44,126,149, 8, 78, 23, 78, 89,144, 13, 33, - 61,210, 44,138,255, 72, 51,240,201,241, 38,133, 26, 75, 96, 57, 59,178, 31, 63, - 12,121, 20,137,207, 85, 47,206,130, 2,184,138,123,123,184, 96, 38, 28,139, 11, -191, 66, 79,252, 55,117,223,108,164,122, 75,243, 88,167,255,236, 13, 53, 63,237, - 57, 28, 84, 84, 82,239,144,182, 47,131, 19,202,206, 6, 68,179, 39,228, 9, 18, -123,122, 30,118, 48,209,146,130, 78, 25, 31,111,233,214,171,211, 75, 69, 33, 33, - 87,223,194,165,208,228, 20,167,176,150,245,251, 84, 37,121, 90, 5,104, 43,184, - 83, 84, 4,213, 48,142,235,109,174,174,228,103,250,183,134,203,188, 74, 85,137, - 37, 35, 47,129,143,169,120,100,251, 42, 37,184,181,251, 28,210,195,173, 25, 1, -126,160,209,104, 66, 93,122,204, 92, 88, 46,150,106, 97, 55, 65,158,105, 70, 38, - 18,232,135,153,159, 21, 24,221, 3,236,253,111, 72,137, 11, 97, 9,181,199, 20, -180, 81, 23, 42, 69, 0,210,198,168, 15, 63, 25, 64,158, 90,181, 17,203,202,243, - 53,167,118,253, 6, 10, 35, 65, 75,111,106, 62,247,181,138, 32,138, 97, 91,124, -215,246,149,243,196,100,206,250,251,134, 39, 48,195,153,184, 54, 57,131, 79, 75, -178,251, 62,208,228,194,239, 77, 19,124, 27,143,230, 61,157, 48, 41, 78,144,131, - 93, 81, 22,173, 67,166,101,114, 29,160,129, 26,118,204,245,230, 47,219,251, 16, -206, 23, 85,135, 68,185, 64, 14,148,138,211,149,179, 10, 5, 31,152,116,111, 28, - 91, 26, 45,121, 39, 49,115,187,202,154,188, 50,207, 39, 21,232,145,175, 66,182, -247, 92,107,196, 65, 32, 76,130,228, 68, 73,112,112, 13,186,167,102,201,176, 25, -157,121, 36,107, 50,160, 83,252, 74,151,113,190,155,165,177,154,119,206,188, 22, - 25, 52,208,194, 44,173, 71,121, 28, 36, 31,115, 4, 1,211,210, 63,136,248, 54, -109,210,104,137, 96,192, 37,212, 63,166, 8,213,118, 88,162,146,109,186, 11, 96, -204,155,110,182, 35,112,103, 85, 42,179, 61, 5,189,125, 0, 50, 24,227,213,233, -177, 5,204,207, 92,142,169, 27,182, 27,234,155,170, 49,115,106, 49,217,221, 98, -205, 83,204, 92, 7,180,218,225,117, 28,179,140,251,235, 57, 63,232,221, 68, 31, - 4,248, 48,169,135,165,134,136, 40,193,141, 70,205, 69, 62,187,216,121,230,143, -124,241, 79, 5, 96,107,152, 81, 8, 91,160,244, 19,173, 8, 52,245,196,155, 48, -201,188,194, 69, 44, 14,218,144,135, 4,155,128,170,197, 42, 89,208,148,107, 70, -105, 26,188,137, 72,200, 45, 83,251, 75, 80,196,163,171, 41,109,121, 76, 74,235, - 75, 46,102, 27,244,228,137,170,211, 81,188,253,170,163,226, 98,114,103,200,226, - 9, 84, 64,253, 40,251,189,215, 49,211,254,146,106,123,235,175,104,219,121,190, -141,232,255, 85,185,105, 25, 74,181, 36, 0, 65,217, 86,119, 69,155, 37,200, 28, -116,129,167,242,231,246,177,137,130,100, 18, 64, 54,113,189, 11,204,178,205, 31, - 80, 26, 52, 67, 6, 40,175,152, 20, 68,149,204,212, 18,175, 44, 69,253, 98,124, -206, 96, 16, 90,173,146,155, 68,187,226, 34,182,129,160,202,100,150,176, 64,247, - 82,208, 22,165, 21, 3, 71,233,246, 74,140, 2,202,204, 18,153, 61, 84,176, 95, -114, 53,136,213,236, 75, 86,138,152,245,143,109, 64, 44, 51, 27, 24, 17,200, 78, -146,163,191, 72,158,127,146, 35, 61, 68, 0,221,255, 35,152,215, 75, 10,173,175, - 71,179,105,235, 7,215,208,243,194,158, 67, 16,138, 12,169,167,173,150,213,224, - 29,248, 86,241, 87,127, 2,158, 25,190,154,158,127,164,252,107,124,189, 11,196, - 94, 7,172,167,117, 96, 25,123, 63,118, 4, 52, 30,247,177, 0, 27, 51, 80, 2, -110, 42, 13, 84,224,255,217,196,109, 91, 67,114,208,230, 78,131, 62, 30,254, 51, -162, 10,194,223,222,108,148,125,194,248,139,103, 9,246,105,219, 53,130,166, 65, -217, 47, 33, 57, 82,154,126,173, 84,187,142,105,154, 66, 51, 78,250, 40,202,156, - 3, 30, 11,203, 61,214,171,251,110,147, 37,124,248,241,113, 33, 28, 36, 59,150, -105,110,174, 81,195, 64,113,210,114,244, 9,157, 22,104,191,171,119, 66,159,212, - 98, 60,154,237,128, 90,192, 74, 4,206, 70, 73,189,106,212, 13, 32, 9, 81,201, -137, 19, 95, 56,184,211,219,222,147,203, 14, 34,251, 40, 81, 28,160,197,241, 98, - 84,236, 87,250, 67, 46,109, 16, 51,237,198,108,154, 78, 27,236,154, 98, 74,183, - 22,177,219, 71,151,159,190,215, 71,134,143,232,172, 87, 79, 84,143,229, 82, 75, -138,135,202, 85,182,177, 15,201, 15, 62,255, 71, 90, 53,161, 34,195,188,230, 5, -215,194, 17, 61,221, 38,223,155,143,122,208, 96,130, 64,101,139,127,167, 19, 88, -234, 78, 76, 67, 28, 86, 93, 23,152,129,191,144, 46,155,106, 42,131, 6,246, 68, - 50,164, 92, 99,110, 4, 83,171,181, 48, 97, 8,105,250,163,111,203, 63, 44, 61, -252,216, 86,121,216,213,138, 15,139,202,248, 70, 93, 49,108,169, 7,157, 4,229, -247,132, 17,205, 73,193,145,102,235,239,211,160, 12,253, 42, 69,110, 77,175,249, - 84,200,232, 80,118,167,161,136, 40, 12,165, 75,198, 33,167,121,143,233, 4,154, -169,178,252,248, 78,198,113, 57,208, 11,143,249,140, 90, 83,178, 98, 73, 34,111, -185,232, 99,128,152,225,127,138,158,196, 63,134,174,154, 73, 69, 69,155,155,166, - 91,157, 25,172, 8, 24,230,145, 89,222, 46, 99,200,155,132,108,191,152, 4,223, - 0,139,194,186,131,138,107,202, 13, 41, 55,253, 60, 87,196, 7, 71, 86, 82,233, - 12,172,192,121, 48, 58, 20,236, 35,238, 48, 86,139,162,106,213, 6,117,138, 8, -211,168,134,138,137,255, 95, 81, 98, 2, 79,162, 46,110,104, 85,228, 7,220, 67, -221,104,171,143, 40,196, 68, 70, 59,169,106,123,254, 35,255, 79,212, 79,117, 93, -138, 4,252,154,125, 57, 3,160,158,137, 20, 83, 20,247,250,143, 16, 80,251,180, - 48, 32, 66,210,113, 61,251, 31,110,232,188,106,122,109,140, 84,230, 13,172, 9, - 44,217,242, 60, 17, 45,229, 38,102,153,108, 21, 99, 1, 50, 80,252, 20,211, 34, -251,216,234, 88,108,208, 25,216,233,121,102,161,191, 18,137, 50, 22,208, 69, 68, -153,111,147,224,138,224, 1, 15,117,200, 6,117,153, 10,253,121,210, 34,165,240, -170, 45,170,221, 97, 19,111, 26,249,242,160, 68,228, 84, 86,202, 9, 30,205,186, - 48,239, 92,219,197, 59,172, 75,219, 17,224,185,187, 39, 23, 80, 36, 26,252,169, -139,106, 38,194,183,225,245, 10,171,130,238, 44, 34,214, 18, 1,198, 60, 75, 10, -178,204,211, 82,151,208, 45, 56,128,253, 73, 29, 9,132, 13, 38,185,141,185,238, - 69,186, 0, 14,233,211,233, 64,139,212, 91,233,191, 98,241, 93, 6,111,195, 27, -113,195, 15, 4,238,226, 57,242,201,207, 66,190,195, 69, 27,132, 36, 4,172, 0, - 65,154, 38,248,146,125, 83,115,213,237, 67,115,171,233, 45, 49, 85,155, 98, 73, - 50,238,167, 14,186, 67, 50, 84,147,147,251, 31, 68, 41,224, 24,241,111, 68,243, -146,222,227, 1, 14, 17, 55, 10,224,240,183, 0, 96,128,228, 5, 0,192,140,212, -114, 60,238, 32,199,156,225,180, 52,130,247,121, 46,221,141,100,139,242, 74, 95, - 37, 26,162,105, 50, 12,145,103,101,227, 45, 58,107,142,119, 76,140,151, 94, 92, -112,160, 8, 78,145,235,227, 51,206, 0, 71,163,159,177, 5,183,226,189,198,195, -222,154,167, 20,140, 42,124,123,132, 78, 72,132,188, 79,180,165, 39,113,212,168, -207, 92,159, 92, 19,102,178,220, 18,129, 58,164, 97,245, 31,198,151,179, 96,197, -117,115, 58, 9,208,241,207, 30,104,173,101, 48,216,139,132, 16,153, 10, 53, 2, -153,166,112,171, 71,209, 66, 27, 26,241, 20,234, 91,242,144,158,181,237,150,170, -166,185,113, 91, 25, 22, 91, 78,103, 74,135,154, 32,131,164,230,192,114,201, 36, -149,177, 38, 4, 1, 96,167, 24,216,221,125,247, 26,230, 19,195,128,120,174, 8, -251, 55,192,138, 22, 60, 44,140,245,238,155,118, 9,163, 62,170,140, 56, 10,146, -225, 43, 45,244, 21, 27, 31, 76,240, 66, 78, 84,230, 40,172, 81,207,148,105,248, - 87,251,161,162, 6,221,113,143, 25,147,186,110,221,235, 84, 38, 55, 4,104,228, -221,145, 48,205,240,131,200,194,219,236,240, 94,206,144,126,119, 31,162, 26, 5, -153,179,190,210, 62,116,221,242,164, 47, 31, 62, 76,151, 87, 9, 4, 16, 10,143, -135,147,197, 49, 17,185, 4, 99, 48,217,105,171,228, 48,246,134, 15, 0,134, 27, - 81, 69, 34,180,126, 49,200,187,167, 30, 31,174,123,147,163,101, 52,254,153,204, -246, 80, 59,180,203, 95, 94,219, 62,254,226, 15, 63,132,147,215,143,228, 15,139, -136,163, 50,235, 91, 37,215, 43, 17,137,184,141,222, 33, 86,122,236, 77,139,174, - 56, 55, 17, 95, 11,219, 54, 58,148,255,115,102, 22, 69,203,227,108, 68,110,229, - 30, 70,156,149,167,114, 6,212, 11,107,249,150, 6,201,217, 58,113, 83, 29,199, -184,237, 94,193, 57, 8, 86,155,210,173, 21,117,152,205, 13,104, 60,199, 76, 77, - 33, 0, 41,243,130,137,217,248,100, 44,136,193, 91,157,229, 13,117, 72,182,105, -213,122,144,160, 75, 42, 65,153,131,221, 34,125, 37, 78,146, 38, 62,162, 18, 70, - 6,248,166,120,200,157, 22,252,132,158,161, 84, 96,153,248,103,183, 42,124, 22, -133, 72, 92,146, 34,241,225, 65,114,223, 83, 3, 87,186,244,237, 48,140,124,155, -153,184, 27, 67,100, 76, 55, 3,252,206, 43,120, 39, 35, 4,103,140, 81,106,182, - 76, 84,228,198,173,255,193, 72,161,204,247,185,173,125,163,146,107,100,120,127, -191,191,116,151,212,176,220,136,171, 84, 92,204,245, 75,232, 80, 17,144, 30,167, -217,102, 45,173, 83, 48, 38, 6,168,199, 7,150, 78,183,199,231, 16,117,203,229, -110, 94,193,123, 19,180, 47, 27, 36,191, 41,101,176,192,201,225, 78,199,167,203, - 6, 95, 13,198, 66,130,117,130, 65,188, 83,181, 63, 71,133,177,194, 5,239,214, - 81,153,184, 25,100,138,137,223, 32, 44, 2,139, 31,141, 88,194, 93,128, 45, 34, - 18,244,208,192,111,226,205,120,223, 57,159, 5, 98, 64, 82,162, 62,166, 15, 21, - 86, 15,218,227, 18,192,124,137, 84, 17,144,191, 32,200,170, 73, 33,117, 36,192, -126,154,114, 84, 98,209,124,252,164, 5, 73, 75,159,131,198,250,241,129,142, 97, -152, 53, 17,252,201,207,238, 21,139, 56, 79, 68,158,143,218,101, 12,188, 93, 16, - 99, 67,117, 9, 57, 40,143,200,223, 96,197,201,106,201,156,147, 0,229, 89,222, -198, 66, 36,182,126, 46,118,136,254, 66,186,225,161, 22, 72, 45, 23, 24, 99, 5, - 46,206,207,248, 47,137,149,155, 74,213, 55, 57, 83,229, 71,180,189, 30,182, 6, - 46,152,102, 40,189, 26, 18, 97, 68, 18,133,144,242, 85, 62, 83,167,220, 31,123, -105,188, 90,184, 62, 35,208,231, 40, 30,130, 34,171,101,236, 94,141,180,184,151, -110,214,225, 33,164,106,162, 70,213,252,124,176,208, 61,176, 71,207,194,134,157, -170, 57,227,130,194, 98,238, 76,112, 6,170,183,172,132,131,172,113, 74, 34,157, - 76, 72, 3, 10, 34, 32,228, 58, 40, 9, 9,102, 85,204,200, 18, 78, 0, 37, 96, -209,193, 85, 37,134,124,246,135,220, 32, 19,161,204, 24,108, 53,190,228, 30, 6, - 5,222, 26, 5, 20, 25, 75,213, 43,197,150, 60, 10, 75, 6,169,106, 41,104, 84, -107, 37, 61,215, 1,112, 76,243, 40,251,133,148,147,169,188,211,184,179,128,190, - 94,203,148,132, 76, 95,122,181, 73,136,106,227,229,142,155,155,176, 12,111, 35, -237, 72, 12, 46,218, 67, 43,231, 69,178,206,163, 19, 4,230,209,103,147,253,186, -228, 99,182,182,113,109,249, 7,115, 65, 60,110, 4, 24,195,161, 77, 79,157,253, - 40,213,211,113, 56,194,188, 17, 19,166, 60, 66, 74,175, 12,113,254, 79,134, 85, -153, 24,141,152, 8,235,169, 34,120, 75,119,136,144,117,224, 10,211,140, 45,247, -210, 5,161, 33, 47,212,126, 73, 12,161,204,140, 79, 79,131,103, 7,122, 26, 84, -112, 88, 97,192,174, 93,136, 64,173, 0,127,142,238,237,120,204, 75, 5,246, 72, -156,172,209,192, 47, 23, 70,121,137,129, 44, 72,100,160, 55, 67,135,202, 26,180, - 33,169,180,154, 31,118,172,157,128, 32,185,102, 54,208, 71,189,180,227,114,131, - 81, 41,102,198, 62,138,102, 86, 5, 99,188, 94,115, 79,122, 8,253, 28,201, 7, -200,191, 57,132,128, 34, 69,221, 19, 24,100, 21,116,225,223,253,222,253,192,194, -227, 30,226,162, 52,123, 78,121, 14,197, 54, 84,251, 70,226,227,197,222, 88,203, -184,171,222, 86,163,202, 49,112,146,144,160,238,174,230,188, 44,124,187,166, 4, - 71, 27,235,107,107, 2,238, 92, 6,221,133,210, 78,226,171, 64,188, 55,171, 71, -168,114,211,153,116,246,201,211, 25,213,214, 31, 3, 66, 80, 41,124,195,129, 98, -109, 7, 8,179, 42,116,175,129,148, 12,137,238,100, 58,144, 89, 0,238,149,248, - 30,135,190, 80,253,123,158, 37,251,159,240, 98,163,243,138,210,226,157,124, 72, -193, 40, 49,215,189, 97, 89, 80,164, 71,105, 67,138,107,239,238,129,133,176,140, -106,188, 67,129,192,125, 17,126, 92, 54, 11,133, 91, 59,145, 22,254,201, 78, 0, -189, 30, 73,154, 87,244,134,209,149,174,253, 16, 13, 44,193,249,186, 55,225,155, - 78, 64, 5, 96,160, 47,140,244,161, 0, 88, 18, 59,147, 36,116,226, 39, 60,130, -224,106,105, 43,177,231,158,181,200, 33, 55,207, 99, 57,102,115,211,110,162,178, -204,179,103,119,112,177, 86, 76,109,112,209,235,234, 92,220,127, 89,153,165, 15, - 27,248,231,132,216,100, 67,203, 29, 15,115,247, 80, 34, 34,107, 27, 42, 9,217, - 51, 97,229, 34, 39, 49,172,158,204,219, 20, 88,183,134,189, 7, 93, 99,130,106, -252,149,127,251,173,199,150, 28,144,230,129, 73,146, 27,220,158,232,225, 77,233, - 33,243,114, 91,177, 11,199, 84, 11, 74,247, 60,117,251,179, 50, 92,165,177,162, - 92,106,102,200,132,131,153,100,199, 66,176,223, 46, 78,109,219,134,158,153, 62, - 62, 49,126, 44,252,207, 36,107,248, 84,209,211,104,115, 18, 25,180,127,116, 33, - 57, 5,139,141,204,188, 79, 13, 65,250, 38,228,236,167,128,254, 83,185, 21,143, -232, 46, 16, 17,165,116,131,165, 46,187, 24, 98, 19, 93,121,187,206,243,150,153, -213,226,150,151, 62,249,114,112, 27,197,194, 64, 11,250, 76,211,161,104, 22,179, - 39,150,120, 53, 69,115,109, 13,212,169, 27,133, 62,202, 90, 24, 50, 18, 23,147, - 27,245,127, 36,140, 25,193, 4, 24, 44, 57,130,140,107, 20,193,225,196,216,132, -157,141,197,202,176,217,155, 96,187, 79, 1, 34, 89,222,171,125,162,201,190,195, -207, 62, 89,238, 20, 10, 31, 77, 45, 33,181,158, 55, 63,171, 7,133,213, 64, 10, -215, 69,138, 41, 13, 65,149, 20, 7,163,242,239,137,136,139,250,217,220,162, 96, -213,251,128, 97, 42, 53,186,100,154, 33, 4,202, 60, 10, 0, 64,137, 75, 5,244, -149,217, 3, 79,140, 97, 96,250,119, 16, 69,123, 8, 25, 0, 26,239,206,121,231, - 49,215,221, 23,142, 79, 67,124,142,230, 30,166, 99,183, 76, 12,182,250,106,241, -216, 90,251, 30,254,241,209,125,187,107,115,211,122, 36,212, 5,149, 2, 93,232, - 50,131,202, 0,223,221,200,125,137, 86,181, 14,236,101,124,142,174,204,122, 49, -219, 47, 42,145,194,170, 31,241, 30, 93,119,216,130,250, 42, 63, 57,132,117,143, -189,248, 45, 5, 41,228,143, 21,188,215,130, 71, 71,232,211,161, 38,178,179,240, -159,136, 38,115, 16, 11, 19, 1,228, 19, 21,131, 11, 36,223,121,119, 5, 18,184, -166,111, 25,193,165, 98,216, 69, 25,251,108, 35,133,253,147,191, 24, 82, 93,220, - 30,106,102, 37, 21, 27,131, 27, 36,130,242, 3, 93,116, 94,160, 44, 97,121, 83, -192, 35,251, 16, 82,146, 10, 44,142, 51, 9,205,203,121, 70,255, 25,175, 63,185, -212,153,192,181,176,111,147,103,244,124,225, 27,125, 51,218,129, 25,150,134, 39, -159,254,134,102, 85, 10, 62,242, 24,206, 19, 51,180,120, 63, 35,215,212,175, 92, -253, 87, 2, 46, 72,149,199,250,143,168, 40,192, 19,241, 45, 1,186,122, 40, 19, - 77, 60, 5, 86,222, 64,243, 80,169, 95, 72,176, 58, 89, 50,203, 87, 94,181, 76, -251,203, 60,140,166, 48,107,177,173,119, 65, 26,122, 18, 5,167,247,213,118,113, -127,159, 55,189, 18,109, 83,179,235, 33,174, 36,177,104, 53, 99,132,250,130, 82, - 94,147, 90,204,243,242, 4, 36,186, 41, 44,104, 91, 72, 5,106, 34,160,128,156, - 73,232, 12,150,179, 71,225,248, 88, 0, 25, 16,112,238,139,134, 12, 5,130,154, -242,182, 86,243,146, 30,166,164,142,238,188,176, 61, 16, 58, 1, 74,218, 41, 31, -112,196,209,125,130,237,161, 24, 58,233,168,165,237, 44,152, 15,208,110,250,197, - 83, 44, 13, 79, 36,131,101,204,230,105,101,146, 45, 7,104, 37, 0,225, 16, 35, -120, 33, 48,154,156,186,151, 41,120,170,183,109, 59,151, 73,146, 32, 94, 87, 62, - 84, 34,235, 43,208, 10,241,226, 32,100,131,211,199, 43,228,148,146,136,191,199, - 36,113,139,164, 11,143,154, 77,246, 16,145, 50, 70, 36,219, 36, 54, 32, 5, 27, - 50,178,103,193, 99,120, 68,255,222,219,226, 52,108,224,179, 51,235, 23,163,242, -114,190, 73,163,137, 6,109,131,195,243, 51,165, 53,206, 6,244,174, 69,141, 95, - 99,190,236, 89, 91,182, 19,166, 8,172,181,213,243, 67,224,186, 57,110, 63,252, -198,165,153,185, 32,111, 5, 85,246, 58,214, 18, 74,156,248, 54, 15,108, 92,243, - 59,254, 2,149,226,199, 40,201,152, 55, 62,201, 41,204,127, 40,191,200, 23,233, -176,145,229,163,171, 61, 16, 16, 69,167,163,108,127,247,191, 23,146,198, 72,105, -121, 63,118,254, 12,209,110, 25,238,105, 58,158, 75,172,145,213,128,135, 30, 3, -151,163, 38,227, 45,232, 24,220,214,239,138,152,171,206,195,175, 11, 20,126,253, -218, 55, 32, 58, 61, 55, 28,253, 56,238,127, 93,176,205, 0,196, 15, 96,171, 87, -196,146, 42,245,142,146, 24,211,244, 24, 73, 49,128, 3,224, 32, 89, 44, 7,192, -168,194,106, 99,223, 98,244,134, 72,163, 96,162, 52,130, 74, 53,154, 25, 19, 64, - 79,111, 44,184,178, 13, 79,166, 87, 9, 92,161,169, 61,145,150,159,145, 93,251, - 61, 47, 13,155,181,211,122,101,216,245, 77, 46,165, 73,106, 96,220, 1,142, 33, - 65,228, 86,240, 55,189,180,146, 0,221, 1,190,231, 26,147,209, 66,230,171,180, - 6, 77, 29, 89,176,148,107, 92,188,246,230,255,235,134,245,141,254,165,134,116, - 52,155,176, 2, 19,192, 84,163,238,110,143,216,201,109, 37,183,127,122,228, 88, -227, 5, 2,115,129, 28, 98, 77, 16,126, 86,171,171, 11,219,135, 17,204,242,125, -226,211,179, 22, 32, 26, 55, 4, 22,163,157,202, 9,227, 47, 75,215,137,101,241, - 14, 70,227,138, 83, 58, 4,226, 33, 22, 55, 63, 25, 19,192,114, 87,130,141,170, - 24,172, 45,199,214,187,235,109, 36,156, 49,190,255, 54,250,202, 9,106,196,145, - 9,246,254,163, 37,132,154,178,128,179,250,196,153,125, 15, 16,161,241,174,184, - 92,105, 40, 74, 57,101,183, 26,123,129,235, 67, 5, 54,234, 5, 91,212,147,116, -238,120, 42,136,246,140,122,170, 85,105,217,177,172, 16, 91, 98,244,131,236,176, - 98,198, 48, 91, 85, 30, 80, 55,214,233,155,234,107,207,148, 95,124,240, 73,171, -228, 68,108,227, 97,244,164,165, 65, 14,156,100, 40, 44,178, 43,111, 50,186, 87, - 78,241,138,119, 52,135, 20, 95, 59,237, 57,115, 69,119, 50, 99, 78, 29,162,166, - 57,234, 29,236,184,255,138, 34,244,216,179, 13, 89,137, 21, 73,244, 23, 26,156, - 17,206,226,162,148,185, 46,228,221, 93,110, 36, 23, 8, 70,229,170,227,196,156, - 45,158,139, 3,106,196,147,155,146, 34,190,139,107, 57,179, 41,116, 71, 11, 75, - 30,186,193,118,135,130, 40,235,163,103,228, 98,194, 98,240, 84, 0,130,194,138, - 31, 94,152, 20, 36, 77, 6,197, 56,164,249, 20,205, 25, 15,225, 91, 48,252, 21, -204,218,232,214, 0, 48,123, 71, 7, 12, 70,239,183,184,129,112, 93,142,154,232, - 98,196,159, 35,219,102,216, 23, 95, 41, 66, 67, 52,198,246, 8,197, 47,245,118, -201,122,208,234,219,164, 84,180,171,107, 3,105,222, 54,127, 80,119,190, 88, 48, -221,129,123,102,137,123, 59,132,188, 81, 86,125, 34, 50,144,140,163, 56,139,214, -227,230,228, 30,145, 15,175, 54,207, 65, 5, 70, 60,197,109, 14, 11,155,147,192, - 59,144, 83, 28,214, 27, 90,151, 89,171, 39,227, 38,150, 21, 60,152, 6, 45, 20, -229,190,137,150, 17,214, 34, 74,148, 62, 71,201,193, 6,227,250, 49,104,224, 22, -246,122, 6, 16,231,120,255, 88, 35,168,204, 45,225,139,114,130,174,251,160,166, -242, 71,254,173,184, 84, 3,199, 58, 52,246,104, 38,219, 33,171,233, 53,166,121, -110, 82, 45, 24, 11,145, 78,211,147,243, 74, 54, 45,203, 93,102, 60, 5,127,128, - 29,149,101, 52, 43,148, 75, 17,249,160,204,255,194, 53, 24,239, 68, 95, 93,146, - 29, 18,117,229, 66,212,117,119, 25, 23,189, 11,109,100,224, 81, 53,184, 37, 8, -123,227,132,103,242,239,117,112,106,113, 39,211,118, 80,249,150,228,153,177, 6, -148, 79,214,198,216, 0, 67, 13, 17,214,166, 89,169,249,192,238,123,145,237,172, - 97,233,224,251, 75,117, 22, 34, 77,157, 94, 78,100,212,252, 19,147,175,158,178, -174, 80, 83,116, 54,237,102,149,135,182,160, 73,181,177, 50, 77, 75, 83,159,166, -136, 62,113,240, 16,176,226, 72,119,112, 71, 23,187, 54,200,127,238, 93,102,139, -104, 71,203,114,160, 24,167,197,238, 25, 3,148,119, 72, 9, 40, 8,147,155,119, -222,163,247,184,125,101,149, 79,183, 52, 26,138,153,186,119,104,145, 35, 4,253, - 92, 83,254, 17, 47,152,197,182,135, 53,155,137,242,202,219,145,181, 73, 22,121, -135, 95,135, 3, 0,243,115,254,164,172, 12,189,238,112,151, 74,116,238, 36,198, - 71, 48,235,105,211, 56,207,144,131,228, 17,217, 60, 59,142, 75, 90, 55,121, 9, - 52,158, 55,170,152,105,144, 49,130, 78, 34, 51,110,173,170,118, 54,243,174,197, -192,224,242,138, 42, 44, 72,125,103,100,249,203,236,105,191,170,105,235,252, 66, -234,206,103,234, 45,157,250, 80, 16, 12, 18, 89, 24, 74, 90, 40, 98,188,204,109, -222, 23,143, 84,153,149,152, 22,207, 86,204,144,118, 66,193, 98,135,136,131, 47, -179,109,155, 76,119,136,238, 11, 56, 72,138,102,182, 68, 7,191,200,106,177, 24, - 31,115, 16, 66,147,161, 67,214, 54, 58,111, 51,230,196,236, 93,152, 64,173, 42, -128, 42,100, 17, 46,183,138, 66,201, 80,170, 91, 62, 50,105,117,213, 85,228,135, -249,183, 74,124,206,238,178,251,203,216,124, 11,183, 22, 53,229,123,196, 62,232, -113, 67,129,151,130,230, 42, 85,103, 59,220,120, 58, 2,135,100, 50,249,248, 65, -243, 22, 40, 35,160,140,140,154, 21,128,190,120, 33,255, 87, 8,238, 21,214, 0, - 16,177,146, 52, 93,237,208, 63,205,254,146,157, 12,183,181,241,240, 34, 34,252, -251,115, 80,159,104, 48,154,209,175,209,246, 50,237, 37,186, 38,246,128,168, 34, -192, 42, 47,208, 92,141,247, 4, 54,244,111, 17, 66,161,194,234, 89,105, 39,222, - 71,125, 59, 7,233, 6,217,255,227,133,132,217, 55, 63,162, 43, 52, 99, 96, 9, -224,171,108,217,163,166, 0, 92,240, 96, 65, 59,119, 18,180, 75, 92,108, 93,160, -127, 93, 46,205,209, 32,166,238,194, 63,199,234, 3,120, 66, 76,117,187,148, 20, -100, 0,168,245, 71, 92,177, 8, 22,253, 23,106,225, 99,211,116,186,207, 76, 27, -157,159,228,206,145,113,237,116, 55, 33,129, 9,202,202, 91, 41,213, 57, 8, +// ../Source/Template/GB_select_bitmap_template.c: +uint8_t GB_JITpackage_196 [410] = { + 40,181, 47,253, 96, 93, 4,133, 12, 0,198, 83, 66, 33, 0,243, 54, 62,167, 5, + 18, 73, 57, 58,225, 4, 74, 85,224, 94, 42, 59, 16, 26, 55, 70,110,196,209,144, +199,168,170, 90, 16, 8, 16, 55, 0, 56, 0, 56, 0,229,103,102,139,215,230, 87, +118,191,241,217,209,156, 79,209,205,142,187,198, 94, 93,196, 78,216,144,231,184, +163, 58,104, 88,190,248,253,229,146,243,251,150, 31,103,227,204,221,224,231,215, +247,145, 57, 69, 81,137,162, 2, 34,222,228,135,154,244,154,124, 16, 91, 9,115, + 85,166,240, 61,230,235,231, 92,239, 81,131, 57,207,185,122,132,168, 12,149,148, + 56, 24, 42, 39,128, 3,143, 52,246,124,151, 79,213, 63,227,238,112,176,231, 81, + 87,237, 99, 12, 36, 22, 48, 60,227,144,170, 55, 60, 83, 11,190,175, 98,147,152, +162, 42,117,226,105,143,219,105,183, 90,140,194, 97,146,235,105, 17,241, 67, 17, + 11,220,221, 41,136,210,201, 39,139, 26,166, 74,250, 17,252,202,234, 11,243,113, + 20,179, 94,134, 89,187, 89, 24,236,162,104,151,141,131, 64,182,172,106,151,133, +219, 60, 11,179, 88,119,173,198,121,228, 41,160, 52,228, 78,176,214, 66,241, 6, + 96,224, 34,166, 34, 14,201,215,249, 67, 1,112, 10,248,135,103, 6, 3, 52, 32, + 64,134,136, 49,186, 14, 85, 56,160, 53,110, 91, 99,118,141,205,140,143,230,142, +224, 0, 77,166,175, 13,249,255,196,213, 78,131, 16,197, 64,213,116, 43, 7,229, + 16,133, 44,198, 13, 6,230, 43, 64,251, 12, 24,140,193,129, 7, 96, 6,181, 59, +241,182, 66,220, 5,246, 8, 64, 35, 65, 39,192,219, 69, 27, 20,137,128, 16, 65, +208,225, 17,142,135,117, 15, 71,102, 2,109, 0,111,124,240,134,217, 0,225, 0, +198, 33,151,179, 42,209,104,179, 25, 44, 54, 77,204, 51,147,219, 56,172,214, 55, + 66,135, 3, 14,105, 15, 68, 81,231, 6, } ; -// ../Source/Shared/GB_complex.h: -uint8_t GB_JITpackage_201 [1759] = { - 40,181, 47,253, 96,222, 40,173, 54, 0,230, 53,159, 40,208, 22,113, 14, 84, 6, -228,105,178,113,251,208, 63,149,223,228, 22,177,106,232,169,151, 34, 54, 66,115, -211, 0,254, 96,185, 44,189,200,213, 12,120,225,124, 1,148, 0,151, 0,151, 0, - 19,179, 64, 32, 80,165,146,161, 91,173, 90,134,185,115,107, 22, 20,112,190,215, -106,131,142, 49,108,246, 92,214, 31, 36, 33,220, 83, 57,223,126,206,148,181,141, -200, 98, 97, 42,214,222,110,154,103, 38,119,214, 53, 50, 38, 81, 49,141,252,186, -162,242,104,200,176, 48, 46,153, 76, 89,227,180,106, 33,173,113, 8, 53,167, 12, - 48, 22, 76,149,112,177, 96, 62, 61,233, 20,237,146,109,184,165,121,167, 85,249, -233,141, 83, 29, 77,197, 70,219,118, 66,100,152,206,221, 58, 92,155,235, 68,148, -183,174,254, 83,102,167, 81,118,237,216, 25, 99,207,104, 86,136,225,246,145,239, -218, 64,188, 82,137,170, 74, 37,111, 45,152, 66, 14,216,252, 0,225,127,152, 66, -246,211, 33, 10, 46,207,144,132, 49,152,176, 40, 38,181,202,159, 83,200,113,242, -200, 53, 13, 28,156, 91, 23,123,241, 41,159, 69,137,211,202,109, 89,159, 41,199, -217, 82,158,251,142,181,122, 73, 79, 55, 9,179,203,120,137, 93,179, 98, 31, 35, -216,132, 32,206,116,223,225,190,254,255, 40,234, 96,104,112, 52, 22,151, 7,231, -234,104, 34,166,172,143,155,245, 69, 28, 16, 69, 92, 30, 14, 21, 25, 22, 24,156, -140,177,152,117, 64, 20, 5, 40, 96, 16, 46,150,131, 3,133, 75, 69, 86,143,233, -228, 26,187, 98,173, 86,177,171,215,149, 63,115,171,138, 69, 61, 30,137, 5,153, - 72,148,117,146, 80,234, 89, 9,183, 16, 79, 29, 5,146, 91, 38,131, 77, 33, 41, -123, 18,157, 11,205,244,235,226,112, 58, 46, 80, 80, 62,157,114,112,123,215,117, - 41,114,217, 99, 87, 21, 54,231,201, 26,139, 28,176,217,108, 54,155,129,215,147, - 35,135,108,206,208,195, 73, 76,250, 1, 66,202, 52,153,124, 34,144,164, 19, 72, -143,147,171, 60, 47, 12, 7,177, 44, 28, 4,243,113,147, 71, 39,175, 91, 47,140, - 1,231, 33,163, 56,117,198,154,118,176, 62,158,141,213,184,251,216,243, 1,142, - 13, 99,255,117,221, 74, 7,152, 78,221, 62,108, 72, 76, 72, 20,229, 23,114, 44, -110,173,171,213,211, 41,169, 14, 70,249,183, 88, 56, 78,183,156,250, 39, 18,166, - 29,151,161,228, 72,194, 7, 0,224,248,255,209, 36, 93, 64,224,103, 96, 32,225, -157, 91, 73, 85, 1, 65,157,114,219,184,164,235,198,255,213,169,170,218, 16,142, -175,170,183,179,122, 56,250,255,212,212,189,224, 5,215,167,238,127, 79, 10, 93, -171,210,115,158,172,129,222, 17,152, 60,211,193,173,171, 8,146,167,181,101, 99, - 92,237, 28, 46, 71,187,227, 53,147,205,233, 88, 92, 26, 14, 21, 18, 37,177,247, - 20,229, 98,127, 78, 97,216,158,170,144,251, 60,179,147, 55,249,154,174,231,114, - 89,109,183, 82, 42, 95,108, 58, 55,130, 47,168, 50,117,198,208,204,136, 4,145, - 36, 73, 50,172, 1, 50, 98, 4, 33, 65,146, 6, 61, 91, 30,162,152, 28, 7, 36, - 36,195, 64, 16,134, 8, 33,132, 24,162,140,128, 16,162,144,128, 37, 81,148,130, -236,173,208,226, 88,252, 75,160,227,178,137, 57, 17, 44, 41, 16,165,167, 88, 4, - 83,217, 36,234,240,242, 90, 28,108,236,133,117, 2,240, 94,118, 40,163,197, 99, - 25,187,101,117,113,168,195,112, 30, 97, 21,173,157, 53,119,228,143,127, 72,188, -173,210, 5,104, 46,204,181, 13, 43, 16, 92,210, 30, 2, 44, 82, 0, 13, 74, 16, -208,224,208, 52, 0, 41,105, 64,191, 66, 72, 61, 15,111,180,152,100,116, 27,172, -199, 97,123,232, 96, 24, 49,226,224, 46, 86,225, 53, 58,172, 75,173,179,218,128, -210, 99,222,128,134,233,145, 46,152,161,139,224, 46,110, 52,175,242,121, 21, 76, -146, 9, 8, 22,213,101, 45, 90,154,178, 27,217,138,135, 98,243,182, 44, 71,162, -106,158, 85, 50,247,252,229, 37,253, 16, 86, 93, 43,150,194, 4, 58,106, 33, 31, -197, 28,204, 53,114, 97,117,134, 91, 97,235, 98,221, 5, 48, 90,133,146,158,132, -221, 92,239, 92, 19, 75, 91, 85, 6, 41, 99, 46,122,177,121, 48, 58,145,225,100, -217, 27,177, 44, 4,249, 21, 29, 23,130,196, 50, 6, 2,119,175, 31,190,120,111, -180,182, 10, 58,108,162,225, 85, 7, 75, 35, 31,126,182,169,226,226,112,212, 11, -167,161,137,165,217,220,214,104,126, 58,182, 75,167, 44, 55, 34, 64, 74,203, 30, -223, 21, 15, 10, 87,125,200,147,242,224, 96,104,241,132,180, 5, 1,152,104, 62, -197, 29,134,100,113, 16,166, 42,125, 40,205,161, 9, 35, 85,159,112, 84, 40,194, -211,135, 40,167,151, 26,191,160, 9,161,218,220,161,124, 92, 24, 82, 20,140,207, - 79,160, 24, 71,144,158,213, 82, 24, 66, 24,175,225, 0,184, 35, 2,225, 46,100, - 4,174, 94,189,149,137,211,181,181,230,235, 15, 23,108,203,122,177, 63, 14,178, -172, 53,179,137,253, 89,125,196,180, 40,108, 45, 6,164,182, 8,214, 45, 6, 36, - 92, 4, 78, 46, 6, 2, 93, 4, 95, 23, 3,242, 46, 2,151, 23, 71, 97, 47,134, -205,151, 65,222, 47, 4, 2,152,136, 79, 48,129, 62, 24,195,180, 48, 26, 47, 57, - 76,110, 98,153, 94,156,185,219,120,133,121,156,187, 16,121,199,150,204, 52, 75, - 57, 26,177,108,252,135,153, 64,207,140, 5,221,204, 13,235, 76,224,242,153, 34, - 4, 77, 66, 20,141,171, 43,254, 11,233, 43,212, 79,241, 61,136, 14, 41, 58, 26, -117,252,119, 11, 29, 55, 64,219,161,133,241,140, 5,236, 22,133, 62,174, 49,185, - 92,199, 72, 92,157,194, 9,139, 43,110, 16, 73,209,117,116,137,172,149, 25, 50, -147, 17,146, 2, 97,107, 63,228, 63, 59, 40, 99,155,192, 9, 67,188,185,238, 99, -136,216, 77,161,193,232, 99, 70,178, 15,177, 29,209, 40,136,119,157,163,138,183, - 40, 8,165,193,174, 66, 63,128,246, 71,111,236, 81, 35, 17, 55, 30, 69,255,138, - 15, 68,231,209, 44,137,171,118,160,112,209,165,244, 42, 63, 34,229,114, 30,149, -153, 85, 78, 28, 77,136, 66,146,201, 35,206, 88, 52,190, 25, 3,126, 38,137,177, - 68,172,213, 25,114, 50,116,201, 37, 73,180,168,166,243, 88,203,232,160,149, 96, -154,119, 36, 68,176,197,245,172,207,252, 83,225, 23,231,195, 31,219,185,186,126, -185, 59, 71, 68, 55,119,248, 10, 58, 29,182, 70,154, 64, 81, 50,182,104,250,180, -165, 38, 15,131,208,194,211,143, 30,185,182,151,161,202, 43, 80,243,158, 22, 95, - 38,201,107,155,158,111, 77,249, 89, 23,111,152,168, 42,226,127,221, 92, 21,187, -137, 70,186,234,148, 11,174, 55,177,241,193, 13, 71,195, 96,148,210,101, 16, 70, -249,181,156,170,178,249, 77,103, 82,199,202, 77, 3,243, 17, 84, 82,226,130,255, - 60,123,208,130,161, 19,146, 14, 73,190,118, 68,167,183,161, 43,123,223, 17,130, - 78,104,223,239, 47,112, 79,182,190,189, 1,151, 29,164,230, 57, 94, 16, 61,100, -136,181,248, 35, 73, 99, 96,157, 79,114, 34,120, 96,199, 15, 30,118, 82, 71,136, - 83, 30,160,129,155, 20, 51, 28, 51,155, 97, 20,142, 89, 60, 69, 37,158,101,250, - 24, 59, 69,162, 95,158,165,114,211,250, 96,144,177, 54,102, 59, 6,158,166,144, -250,129, 6,140,254, 47, 37, 64,116,214,208, 45, 27,186,197,113,106, 95,193,180, -158,198,211,148, 0,200,131, 85,205, 28,107, 64, 15,147, 11,171, 20,248, 4, 54, -191,146, 43, 3,173, 16, 1,219, 1, 91,130,254,110,160, 82, 3, 22,105, 33,103, -217, 25,163, 0,100,147, 18,173,182, 66,186,187,244,140,191,148,111,189, 65, 64, -241,132, 58, 19, 79,175,104, 7, 11,159, 11,135,140, 6,129, 97,208, 23,200,185, - 98,172,168, 86,253, 74, 60,106, 88, 49, 76,241, 24,159, 50,177,154, 14,161,253, -180,132, 8, 76,250, 89, 97, 81, 36,155, 48, 38,169, 49,162, 2, 56,216,255,180, -189,127, 33,224, 63,242, 75, 44, 33, 66, 70, 21,208, 75, 65,167,174,253,212, 57, -142, 77,179, 92,203, 76, 84,194,164, 12, 31, 20, 70,114,120,173,232, 58, 46, +// ../Source/Template/GB_select_entry_phase1_template.c: +uint8_t GB_JITpackage_197 [1235] = { + 40,181, 47,253, 96,252, 16, 77, 38, 0,182,115,152, 39,208, 22,173, 14, 84, 95, + 81,123,110,255,103, 90,124,249, 35, 8, 46, 78,165,226,106,139,189,196,236,196, + 21,135,193,244, 28,176, 29,228,106, 56,128,223, 11,142, 0,134, 0,142, 0,147, +250, 72, 72,193,104,111, 47,124, 37,249,238,183, 63,255,255,202, 73,101,224, 66, + 48,245, 69, 49,117, 79,168, 13, 45,120,101, 87, 18, 83, 91,217, 20,172,152, 58, + 28, 50, 46, 85,143,212,182,205,185,189,215, 7,114, 30,163,123, 43, 32, 24, 32, +152, 16, 48, 3, 4,151,168,232,205,194, 17,118,248,197, 61,116,221,153, 65,207, + 91,199, 85, 48, 92,148, 43, 68, 66,219,202,180,211, 23,130, 58, 21, 9,147,160, +235, 54, 23,105, 26, 94,167,117,219,240, 87,130, 38,245,132,190, 28,105,214,247, + 97,218,242, 69, 95,168, 94,217,239, 82, 29,219, 62, 6,136, 11, 8, 84, 38, 1, +129,161,144, 14,121,136, 51,254,101,201,157,193,139,228,205,154, 29,146,129,228, + 59, 99, 27,138,215, 7, 52,235,229,188,149, 19, 94,219, 23, 68,179, 73,189,226, +174,215,253, 69,241,230,191, 72, 88, 68, 27, 42, 71,166,108, 95,247,243,190,106, + 10, 84,117,189,133,151,176,150, 16,185,143,252,186, 88,143,192,120,107,246,229, +169,243,215, 80, 61, 34,101,199, 17,134,240,186, 28, 93,152,168,203,156,224, 1, +149,175,165, 22,179,124,165,133, 99,230, 15,235,231,174,121,187,119,109,133, 22, +246, 75,193,122,109,215,128,223,103,112,112, 37,252,181, 50,145,132,105, 20,204, + 88,134,170,168,227, 69, 89,249, 92,244,104, 54,207,217,135, 43, 5,136, 29, 35, +195, 75,146,217,125, 78,196, 81, 80,190,233,112, 92, 70,231,117, 36, 50,151, 36, + 23,157, 2,227, 57,108, 42, 24, 44, 52, 38, 60,156, 77,167,227, 50, 88, 45, 76, + 77, 67,151,255,251,218, 4,218, 18, 41, 42,217,100,120,120,158,171, 92,218, 71, + 66,146, 25,227,180, 26,198,194,145,227, 5, 51,205,123,140,229,253,145, 44,225, + 49, 27, 35,223, 90,104, 89,243,157, 77,251, 89, 77, 27,217,222, 25, 29, 51,213, + 9, 43,125,119,100,120, 43,211, 10, 94,233,151,150,178,235,204, 30,149, 74, 74, + 37,115,169,181,214,104, 67,116, 76,127,106,103,175,227,249, 31, 9, 45,232,214, +172, 36,223,148, 55,112,228,216, 54,182,230, 41, 22,139,100, 65,137,118, 99,209, + 61, 56,158,139,205,123,192,120, 27,141, 10,183,241, 60,157,141, 7, 94,225,142, + 62,115, 19, 41, 66,129, 96,166,203,229,114, 71, 63, 36, 4,193, 88, 26, 8,246, +113,218, 90,107,173,146,253, 28,125,115, 52,227,121, 54, 16,153,183,203, 69,119, + 47,130, 1,226,154,139,204,107,205, 74, 66,235, 10,199,158, 57, 71,230, 32, 31, +154,200,191,124,172, 78,146, 79,121,219,179,146, 11,183,224,137, 69, 33,243,129, +107, 2,129, 8,168,113,177, 67, 67, 51,129,136,130,130,164, 32, 73, 99, 81, 8, + 98, 16,244,210, 65, 62, 98,128, 64, 81,132, 32, 2,149, 34,138,137, 36,144, 56, + 9,100, 70,146,100,148,206, 3,127, 75,199,215, 15,101,158, 93, 61, 1, 76, 23, +187,177,126,245, 17, 82,182, 42, 16, 41, 66,189, 88, 11,165, 15,209,173,209,252, +118,122,170, 32,137, 61, 18, 35,214,108,107,201,100,250,142,103,188, 80, 45, 70, + 85, 41, 29,150, 45,234, 58,160, 91, 9, 62, 26, 3, 55,245,115,123, 71,164,191, + 75, 23,118,222,146,239, 46, 88,197,237, 19,156,129,142,164,105, 87, 44, 85, 65, + 8, 19, 92,180,213,181,125,124, 70,198, 73, 28, 58,164,199, 18,216,161,235,246, +211,128, 80,193,135, 99, 82,252,200,103, 90,127, 82,253,232, 58, 52,198, 29, 60, + 3,119,108,207,160, 79,162,212,165, 57, 37, 33, 48,244,234,174,199,172,162,212, + 91, 10,129,177,243, 81, 99, 18, 29,115,181,160,164,106, 74, 12,248,114,191,225, +132, 96,199, 68,179,202,172,238,208,115, 75, 43,168,247, 83, 28, 84, 81,223, 25, +169, 49, 43,208, 64,214,220,201, 94,240, 21,244,240, 25,119,135, 82,160,159,199, +138, 4, 5, 6,107,132,242,197,240,211, 84,184, 25, 63,236, 8, 3,205,230, 81, +151, 12,221,126, 58, 22,214,237,196,120,192, 72,247, 80, 41,205,195,125, 80,206, +183,224,155, 12,230, 36,105, 0, 79,208, 76, 58,196,115,152,184, 12,152,122,188, + 99,236,175, 44,219, 28,117, 34, 87,203,150,158,130,199,145, 99, 40, 46,147,111, +141, 92,138, 49, 6,119, 0,131, 47,209,156,231, 97,219,115, 4,208, 13,206, 40, + 70, 73, 69,102, 90, 48,147, 86,156, 0,190,145,218,241,178,232, 82,171, 19,137, +130,144,182,253,241,148,173,144,209,207,110, 30,199,147,189,142, 52, 36,158,136, +231,189,165, 13, 39,128, 16,145, 41, 84, 66,160,128, 32,167,150,169, 75,203, 97, + 14,120, 33, 24, 48, 54,203,162, 28, 6,144,143, 56,242,170,174, 80, 25,174,234, +175, 82, 31, 45,151, 36, 59, 75,116, 16,100, 12, 78,152,232,127, 73,139,194, 39, + 46, 52, 88,195, 79, 12, 16, 18,104,205,149,143, 13,189, 7, 52, 98, 99, 6, 39, +141, 76,204, 23,250,242, 99, 82,131,255, 9,140,239,201, 39, 95,103,155, 70,138, +136,103, 6,159,173,192, 37,102, 49, 50,242,154, 81, 60, 4,246,167,211, 1,117, +230, 20, 0,127, 82,160, 70,137,244,202,229, 87,157,161, 71,170, 47,163,230,157, +241,110,141,115, 19, 27, 8, 8,165, 85, 86,142, 72,217, 30, 58, 64, 64,100, 37, +177,157,205,160, 97,159, 12,133, 27,133,143, 36,106, 43,200, 70,194,222,225,124, +203, 56,182, 17, 2,236,138,190,124,156, 73, 9,110,110,113,208,160, 9,127,102, + 98,118, 80, 96,231,196,124,253,249, 1, 64,165,194,181, 9, } ; -// ../Source/Shared/GB_ewise_shared_definitions.h: -uint8_t GB_JITpackage_202 [618] = { - 40,181, 47,253, 96, 14, 5, 5, 19, 0, 70, 31, 97, 32,240, 24, 61, 20, 35, 65, -146,186,180,209,252, 88,170, 2, 86, 93, 75, 66,107,138, 22,149,176, 96, 15, 15, -120, 6, 38, 45,194, 11, 87, 0, 83, 0, 91, 0, 30,134,210,163, 34,113, 72, 16, - 22,136, 67,194, 7,221,229, 81,215, 19,133,120, 65,186, 10,220,183, 84, 53, 30, - 55,105,153, 32,166,121,194,120,157, 41,222,126, 87,211,102,233,240,109,126,146, -123,190,159,235,155, 59, 90,114,123, 75,165,219, 57, 3, 44,104,123,235,174,182, -126,239,113,222,103, 10,106,238,117, 69, 61, 55, 39,110, 48, 88, 4,131, 33, 97, -103,107,192,239,246,124,107,198,238, 9, 62,224,246, 63,228,251, 90,255, 19, 5, - 93,191,166,157,135,180,118,143,181, 63,184,253,171, 30,195,144,250, 14, 77,212, -245,123,245,116, 51,118,235, 80, 72, 16, 30,236, 40,150,206,200, 95,191,186,237, -123, 25,225,181,253,174, 90, 8, 29,136, 86,240,254,148, 95,127,198,245, 6, 69, - 53, 19, 26,230,146,205, 24,113, 76, 97,151,134,105,212, 80, 28, 85,122, 57,190, -238,240,193, 40,214,203,162,112,219, 5,147,105,178, 75, 38,137, 64, 56, 72, 36, - 35, 41, 27, 23,217, 50, 78,196,126, 0,128, 91, 86, 65,147, 85, 92, 66, 54,216, - 70,195,220, 82,143,170,124,119, 71, 63,143, 93,205,111, 95,228,170,144,187,198, -189,240, 97,253, 92, 87,112,139,108, 21,188,103, 10,115, 34, 92, 70, 52,143,230, -177,170, 68, 37, 54,231,140,115,206, 57, 65, 3,137, 47,103,248,193, 31,151,196, -174,174,156,140, 82, 70,140,187,155,147,156, 71,195, 96,119, 75, 87,225,219, 29, - 28,114,193, 96,145,141,219, 50, 78,195,120,246,118,159,239,166,249,241, 69, 12, -226,234,194, 52, 27,109,245, 85,207,126,192, 26,140, 60, 86,119,143, 32,252,113, - 15, 95,168, 97, 61, 99, 70, 72, 68,146, 20,149, 22,134, 3, 96, 36,152,162, 51, - 15, 66,249, 56,201, 82, 66, 4, 19, 9,164,162,164, 60,146,162,186, 3, 75,111, -150,136,168,225,145,174,220,237,148, 40, 87,154,234,242,145, 81, 50,104, 82, 19, -223,153,222,179, 52, 24,139,208,142,184, 33, 33, 4,207, 71,248,247,114,192, 52, - 63, 90, 27, 21, 75, 49, 20,145,145,208,171, 24,179,131,197, 68, 11, 17, 70,118, -192,168,221,110,104,208,140, 45, 49,129,232, 11,134, 7, 75,237,125, 25, 37,112, -123, 94,241, 48,254, 6, 80, 31,194,197,188,255, 0, 4,204,125,121,174, 45, 98, - 70,174,228, 76, 14, 35, 67,149,134,225,233,210,226,224,112,157,169, 11,252, 42, - 12, 2,121,121, 31, 35,233,193,144, 25, 94, 68,238,193, 86,174, 71,211,175, 60, -103, 18, 68,185,217,183, 27, 61,156,204, 17,222,118,196,132, 46,213,181,176,185, -120,223,204,127,102,154, 46,215,128, 91,162,103, 69,171, 42,237,142, 1, +// ../Source/Template/GB_select_phase2.c: +uint8_t GB_JITpackage_198 [1500] = { + 40,181, 47,253, 96, 44, 27,149, 46, 0, 38, 58,172, 40,176,146, 85, 29,170, 38, +139,138, 75,130, 61,172,200, 6,243,136, 8, 45,127, 75,155, 91, 3,244,133, 30, +235, 74,242,196,141, 13,154, 59,165, 63, 77,239,142, 75,159, 0,160, 0,155, 0, +184,177,212,158,113,253, 78,231,179,230,167, 88,249,229,249,249,109,143,166, 81, +100,125,163,242,112, 90,135,214, 58,150, 31,121,180, 62,211,198,125,109,158,207, +161,207,225,109, 59,234,126,235,241,241,188, 37,169, 80, 46,147,238, 52,105,227, + 19,110, 79,110,102,218,155,102,210,152,182, 54, 55, 19, 11, 6, 14,101,107,143, +219,184, 59,199,185,227,152,157,123, 94, 60, 44,184, 84, 46, 19, 4, 75,229,242, + 73,147, 14,241,244,144, 12,167,196,143,186, 92,191,137, 29,122,226,102,161,179, +242, 58, 36, 52,190,210,122, 58,207,144, 71, 50,129,104,168,203, 48, 74,149,245, +132, 75, 99,217,217, 44,107,237, 53,206, 22, 28, 78, 64, 32,153, 16, 16, 4, 22, +131,176,204,148,146, 30,230, 28,116,102,160,206,180,233,225,152,101,124, 39, 7, +226,230, 70,251,155,205, 68,195,179,109, 77,212,199,189, 85,205,214,123,176, 35, +129, 89,215,230,242,100, 92,111,148,155, 1,211, 20,165,115, 34, 4,166, 89,200, + 60, 26, 0,233, 88,231,242,120,226, 38, 59, 99, 58,191, 53, 14, 29,143,228,135, + 39,111,125,119,249,144,155,223,220,104,123, 30, 82, 97,146,229,115,214, 32, 19, +139, 38, 73,116,113, 46,176, 44,206,217,117,152, 91,133, 73,124,117, 27,159,181, +121, 51,238, 59,240,231,204,224, 32,211,249,140,105,213,226,115,115,252,255, 37, + 33, 18, 9,197, 33,106, 24,126, 43,119,207, 11,113, 31,125, 42,246,228,105,211, +122,221,176, 76, 78,161, 80,158,177, 81, 41,237, 87, 53,204,167, 13, 80,198, 45, + 20,156,108,148, 30, 51, 78,102,173,195, 67,120, 8, 58,132,150, 61,220,104, 31, +102,209, 74,183, 56, 25, 67, 68,204, 34, 39,195, 46, 7, 60, 71,159,211,250,173, +179,188,109,235,251,243,154, 63,129, 96,130, 20,207,213,231,141, 78,238,153,131, +142,121,205,216,227, 95,189,220,105,157,152,111,100, 84, 89, 30,116,235,199, 43, + 61,238,186,157, 42, 60,132,162, 50,152, 87, 94, 73, 22,168,205, 79,210,209, 38, +181, 23,218,186,211,240, 39, 9,111,178,111,151,179, 47, 68,251, 74,123,251,213, +203,143, 67, 94,187,205,252,234,214,229, 3, 87,102, 28,146,107, 51, 17, 10,200, + 88,168,145,202,226, 98,136,208, 52, 52, 72,216,195,169,177,228, 74, 33,236, 79, + 28,221, 76,251,158,164,149, 67,206, 13,211,143,250, 44,187,201, 35, 52, 53, 95, +155, 9, 57, 32,146,152,184, 58, 0,169, 79, 75,250,200,106, 95,127, 25,234,182, +203,245,243,190,242,175, 92,193,126, 82, 29,132,142, 62, 40,221, 34, 66,104, 50, + 91, 51,198, 49,135, 10,137,142,198, 69, 68, 62,125,163,233, 96, 94, 75, 70, 40, + 74, 20, 69,150,104,190,250,134,101, 89,168,204, 45,123, 1,129, 87, 10,183,236, + 57,219, 13,146,222, 32,145, 93, 19,155, 72,145, 97,158, 11,219,152, 17,175, 0, + 62, 99,204, 96, 94, 61,218,238,161,122,199,244,139, 14, 22,113, 73,223,154,206, + 63,129, 89,168,161,173, 51, 66, 35, 34, 18, 36, 73, 82, 72,107, 97,136,192, 40, + 40,153,244,204, 3,130,192, 44,149, 81, 36, 66, 24, 33,198, 56,129, 33, 2, 67, +130, 34,129,136, 72, 32, 35, 18, 69,129, 40, 29,144,224,146,127,198,252,216, 10, + 77,130,142,224,155, 8,120,216,247,106,212, 23,191, 87, 83,241,112,149,227, 98, +228, 67, 35, 21, 10, 99, 88, 34,173, 23,152,242, 16, 77,186, 42, 48, 51, 61, 21, +110,122,204, 25,234, 15,151,255, 0, 35,158, 49, 99,131, 17,195,143,180, 56, 31, + 1, 56,218, 77, 13,117,127, 31,220,110,193, 84,113,141,143,243,106,245, 35, 31, +104,163, 19,218, 46,140, 64, 60, 20,227,210,115,175, 34,115,234,121,247,132,125, + 79,149,175, 84, 91,191, 45, 97,215, 2, 54, 17, 32, 73, 41, 82,221,131,237, 60, +179,196,165, 23,226,169,214,203, 75, 19,155,142, 57, 90, 85,251,211, 39,246,101, + 71,134,245, 26, 69,145,134,197, 86, 14,185,124, 39,197,200,239,189, 50,164,204, +244,249, 76,219, 97, 4,253,235,131, 20,146, 44,191, 21,190, 61,249,189,123,167, +188,162,199,245, 22,248,232, 74, 98, 23,172,187,223,144, 8, 8, 93, 26,164,237, + 61,152,205,137, 28,145, 12,192,198, 95,144, 65, 98,227,149,207, 33,227, 54, 44, + 2,195, 33,252, 84, 92, 50,183, 62, 63,134,244,250,102,156, 97, 65, 40,190, 21, +116,218,156,164,106, 30, 44, 61, 36,213, 61,195,200,120, 38,254, 84,136,251, 75, +211,155,187,139,143,147,128,125,150,142,146,229, 78,192, 31,122,140,129,207, 3, + 97, 64,187, 47,239,252,197,182,151, 10,149, 79, 40,224, 39,206,144, 39, 40,193, + 71, 25,184,149, 97,171, 64,201, 0,177, 34, 42,123,160,122, 30, 38,189,211,132, + 4, 72,180, 25,151,156, 1,118, 32, 82,131,233, 80, 39, 62,254,122,230,148, 1, +170,195,229,207, 45,198,162, 54,102,234, 90, 21, 33, 38, 14, 69, 86,130,125, 27, + 97,184,151, 86, 61, 30, 81,228,148, 8,125, 34,106,196, 83, 43,252, 99,175,119, +166, 21,207,122,211,113, 95,149,250, 82,198, 37,253,244, 39, 16, 76, 60,169,138, +243, 85,158,110, 9,236,242, 78, 72,214, 94, 43, 9, 63,184,190,103, 36,208, 34, + 94, 74, 15,188,109, 5,242, 85,155, 25,220,221, 97, 68,142,206,236,154,182,207, + 75,184, 17,163, 13, 74,141,158, 39, 14,127, 36, 92,157,138, 92,149,195,218,194, +120, 97,100, 80, 26, 21,167, 95, 83,185,196, 0,131, 53, 38,226,209,127, 30, 74, + 68,136,121,173, 5, 28, 27, 6, 98,194, 2,237, 38,165, 33,101,214,160,242,209, + 27, 18, 46, 21, 81,220, 64,170, 24,227, 7,228,135, 35, 32, 98,126,200, 11, 2, + 3, 83,207,133,108, 56,252,185, 73,106, 2, 69, 45, 66,133,188,242, 72,172,236, + 89,231,143,232,194, 1, 81,141, 78, 51, 74, 59, 50,180,136,103, 75, 75,248, 6, +123, 61,129, 69,157, 91, 48, 32,188, 29,219,194,160,179, 23, 77, 10,104, 28,201, +153,162, 15, 59,115,219, 18,219,101,131, 79,186, 84,130,125,137, 40,196,153,217, +162,247,142,125,253,129, 49,159, 91,192, 95,129, 6, 54, 9, 67,195,142,138,237, +220,238, 85,152, 23, 83, 83, 51,152, 98,131, 9, 4,195,253, 95,119,180,190, 72, + 68, 11,145, 11,104,120,140,246,126, 11,220,140, 14,186,216,100,193, 18, 67,161, + 21,115, 26, 4,200, 12,237,179, 8,239,188, 66,102,211,245,124,131,181,237,250, + 72,213, 26,148,161, 68,220, 94,211,111,169,144, 65,173,100,194,135, 18, 40, 1, + 92,153,224,168, 36,207,141,123, 64,253, 80,176,197, 37, 26, 73, 63, 33, 76, 89, +196,213,208,166,169, 80,153, 9,231, 81,175,190, 99, 60,180,152,106,101,117, 2, + } ; -// ../Source/Shared/GB_hash.h: -uint8_t GB_JITpackage_203 [965] = { - 40,181, 47,253, 96, 95, 7,221, 29, 0,230, 51,154, 51, 80,141,210, 1, 48, 51, - 51, 51, 51, 51,139,200, 20,123, 75, 67, 91,110, 51,178,187,255, 19,210,136, 36, -161,120, 4, 4, 79, 7, 24, 83,124, 34, 18,240,161, 30,131,181, 79,202,212,133, -110, 84, 13,171,135,147, 0,134, 0,132, 0, 26,105,186,211,184, 91, 73,123, 7, -195,197,194,158,126,106, 24,176, 22, 28, 48,168,245,142,174, 73,237,124,181,190, -222,204, 40, 11, 64,233,128,116, 62, 86,231,101, 12, 64,201, 80,213,101,181, 75, - 55,235,156,184,156,113,191,197, 38, 46, 43,223, 94, 92,113,225,120,240, 80,216, -138,196,149,155,113,217, 90,136, 51,238,156,245,169,160,202, 84,151,141, 38, 83, -221,114, 85, 62, 73, 22,209,135, 83,214, 75, 90,195, 17,107,124,250, 88, 21, 13, -218,166, 81,130,179, 50,234,246,217,230,249,161,132, 30, 63,194,236,242, 65,110, -126,156, 45,118,142, 70,105, 82, 53,144, 6,137, 99, 48,148, 11, 6, 19,170,245, - 75, 81,101,220, 44,227,203,109,138, 32,116,239,183, 51,100, 37,104,202,141, 8, - 3, 21, 27, 77,117, 6,134, 10,219,184,221,122,201,111,212, 75,209, 5, 29,232, - 61, 65,231, 72,118, 14, 94,119,250,100, 67,199,177,156,224, 22,132, 43, 40,220, -194,149, 79, 92,137,160, 44,149, 7,220,178, 57,168, 6,184,178,154,198, 79, 85, -207,224,227,146,224, 86, 82,146,211, 46,214, 72,211,146,176, 60,116, 19,131,110, -202,141, 61,183, 17,188, 68, 82, 71,191, 94,242,101, 51, 8,100, 29, 72,251,241, -249,113, 67,219,143,247, 82,183, 29,246, 55,110, 17,102,113, 61, 23, 45,196, 29, - 4,234,154,110, 54,252, 49, 86,178, 48, 37,177,238,102,198,209,130, 83,182, 90, -156, 53, 9, 91, 63,159, 84,164, 82, 67,122,241, 21, 77, 57, 59,254, 81,121,112, -226,110,186, 93,178,214, 31,193,152, 29,139,219, 59,210,168,219, 35, 75,141,202, - 23, 38,136, 12,210, 62,216,239,149, 61,161,194,239,116, 42,242,118,250,169,231, -246,248, 15,227,216,219,109,177,151, 92,191,141,113, 94,111,248, 46, 23, 98,125, - 40,177,149, 51,244, 24, 4,227,246,168,251,184,226,167,176,229,109, 94, 23,124, - 9,211,141, 29, 20, 74,198,216, 91, 42,110, 75,205,174, 36,232,220,181,102,210, -177,141,163,184, 61,109,220,206, 31, 96,217,100, 52,173,153,106,147, 80, 85, 5, -152, 3, 3,141, 6, 19,138,144, 98,136, 97, 48, 28,185,117,107,156, 9,140,135, -140,198,164,228, 68,243,201,160,224,235,172,207,198,167, 14, 81,132, 29, 39,237, -197,167, 82,220,167, 22, 14,202, 23,148,146,178, 32,104, 4,238,241, 56, 76, 84, -164, 92,183,206,105, 84, 15,149, 61,232,112,202,105,189, 49,160,228,198,217,215, - 54,107, 87,180, 54,194,139,219, 77,139,138, 11,138,187,237, 55, 33,251,154, 24, -140,158, 95, 70, 56,126,175,167,163,128,143,168, 33,161, 66, 16, 25,153, 25,146, - 36, 73, 33,173, 1, 48,132, 16,164,174,110, 3, 2, 65,117, 76,140, 50,100, 42, -168,145, 32, 97,168,252, 63, 59,199,134, 10, 42, 62,105,191, 92,115, 60,215, 42, -145,149, 37,203,167,194,242, 29, 61, 78,186,158,178, 69,182, 67,112,225,161, 75, - 36, 10,249,100,195, 86,207,184, 1, 66,136,171, 84, 34,181,244,240, 87, 59,101, - 54,123, 51,115, 71,228,149,120,217,144, 64,168,216,169, 41,162, 60,110,103, 12, -225,176,214,122,135, 94,103,160,139,208,171,232,204, 33,152, 94, 50,219, 52,119, - 90,123, 0, 84,180, 10,170,102, 41, 81, 38, 71, 90,211,128,227, 0, 14,181,210, -177, 73, 20, 84, 37, 15,230,251, 51,177,134,198,169,172, 32,219,230,188, 22,222, - 15, 79,168, 59,243, 20,106, 3, 0, 27,229,115,255, 4, 56, 6, 71, 62,248, 17, - 63,209,202, 29,207,223, 55,219,101,143,206,159,244,175,120, 10, 68,148, 13, 67, - 18, 66,224,143,186,119, 80, 22,214,230,177,213, 62,138, 10,236, 86, 19,110,170, - 38, 10,128, 21, 58, 22, 63, 82, 59, 6,143,163, 57, 33,231, 41,117,137,172,117, -254,160,126,132, 63,144,123,184,162,144, 96, 92, 52,223, 52, 3,131, 13, 50,250, -178, 22, 62, 52,197, 28, 89, 23,101,146, 28,237,160,198, 47,202,103,101,220, 16, -166, 14,229,114, 35, 76,135,219,145,111, 64,104, 30,116,147,225,202,191,216, 85, -173, 43, 60,176, 82,170, 29, 68,102,208, 36,149,153, 98,251, 41, 93, 7,152, 55, -174,175, 52,160, 4, +// ../Source/Template/GB_select_positional_phase1_template.c: +uint8_t GB_JITpackage_199 [1796] = { + 40,181, 47,253, 96,176, 36,213, 55, 0, 70,187,176, 40,176, 86,117, 14, 20, 56, +163, 9,104, 20, 95, 66,172, 50,227,177, 72,160, 20,174, 11,111,178,224,100,179, +230, 36, 87, 51,165,119,252,160,255,160,243, 83,130, 11,161, 0,164, 0,164, 0, + 89,215,107,185, 14,252, 98, 7, 8, 87,246,175,149, 51, 19,201,206,218,179,183, +183,175,201,120,248,203,162,255,127,165,114, 82,201, 96, 10, 40,230,178, 72,225, + 55,149,123,235, 43, 89,179, 40,182,146,179,246, 80, 25, 15, 31,140,198, 34,149, + 45,131,110, 47, 39,106,208, 61, 15,126, 50, 40,200, 20, 80, 9,154, 76,193, 45, +153,244,201,182, 72,124, 56, 6,190,132,187,115,212,161, 79, 23,244, 52,112, 52, +214,136, 13,219, 26,233,197,183,191,171, 98,233,228,199,221, 9, 74,149,195,235, +220,110,185,235,149,252, 43,191,153,125,195, 55,122,116,196, 23,211,176,141, 28, +197,188, 40,103,223,182,147, 98, 55, 99,143, 45,214, 16,113, 2,130, 10, 69, 64, + 16,149,187,216,232,147, 30,123, 94,172,145,158,142,230,227, 72, 20, 43, 13,232, +234,188, 25,139,156,203, 34, 95,246,185,172, 70,182, 47,169, 81,246,199, 55, 31, + 72, 17,178, 26, 0, 48, 58,229, 71,162, 53, 22, 1,173,135,170, 58,107, 51,163, + 83, 2,117, 62, 26, 18, 71, 65,121,231, 2,193,207,133, 93, 22,231, 22, 11,148, +254,208,241, 52, 80, 92, 76, 0, 72, 15,129, 58,215, 5, 45, 3,222,204,126,167, +252,253, 62, 62, 13,140,204,186,109,243,147, 40,182,246,233,235,122, 63,121, 93, +175,116, 58, 95,101, 44, 34, 37,123, 34,177,155,227, 32, 93,160, 40,228,188,224, + 3, 53, 94, 75,109,103,227,149, 24,252, 37,122,156, 99, 29, 99,240,213, 25, 98, +215,214,222,186,223,150,231,115,105,234,161,165,251,213,133,115,254,234,213,110, +187,162, 92,231,198, 31, 11, 41,253,202,119,139,231,209,204, 46,219,243,226, 79, + 20,222, 91,107, 18,164,251,196, 73,128, 64, 64, 88,124,250,116, 49,121, 44, 80, +136,109, 40,162,227,241, 56,160,169, 87,183, 28,100, 17,114,232,120, 58, 23,150, +209,121,168,176, 48, 44, 64,210, 53,150,189,177,246,173, 3,168, 79,109,117, 75, +240, 37,204,221,204, 23,164,111,156,179,245,226,246,234,154,252,230,252,160,162, +137, 4,201,170,107, 46,191, 38,121,234, 62, 81, 40, 29, 98,159, 99,144, 90,186, +105, 35, 93, 46, 10,239,206,121,230,213, 59, 73, 99,173, 63,145,196,222,167, 49, +151,217, 91, 36, 6, 37,171, 69, 14,149,139,141, 53,249, 5, 68, 47,229,178,185, +230, 12,167, 23, 16,176,109,229,200,252,141,220,167,140,244, 12,232,113, 5, 15, +205, 69,122,133, 69, 97, 97, 10, 30, 28,213,141,239,234, 28, 57, 79,109,225, 10, + 90,223, 95,217, 21, 76,157,178, 59,140, 58, 92, 36,251,102, 95,189, 86,106, 92, +251, 11,169, 30, 26, 10,131,201,112,216,232, 97, 96,156,239, 71, 83, 28, 60, 58, +142,211,141,219, 93,239,179, 92, 69,211,171, 96, 46,173,113,170, 46,109,111,214, +143, 41,185,116,196,156,107, 63, 16,234,159, 44,153, 87, 11, 18, 5,192, 17,201, +150, 29, 79,153, 44,219,152,157,187,243, 99,100,202,203,133,106, 46,211,214,217, +188,167,167,204,221,116, 9, 7, 16,236, 92,152, 6, 8, 86, 88, 13, 88, 40,129, +198,168,193,161, 66,102, 68, 68, 68, 68, 36, 73,146, 12, 7, 65, 12, 66, 16,115, + 88, 66,106, 7, 50,136, 28,143, 66, 12,138, 80, 12, 2,209, 16, 65,132, 16, 98, + 4, 68, 96, 4,226,136,140, 80, 32, 97,130,106, 14,136, 98, 60,242, 43, 5, 15, + 63,243,240,209,209,252,192,130,185,241,127,131,219,178, 43, 37,243, 19, 44, 49, + 82, 38, 64,166, 97,111,211,207,125, 64,191,225,103, 99,233,193,154,201,129,232, +107, 14,186, 54,195, 4,161, 19,205,234, 47,249,166,215,139,141,197,224, 49, 40, +181, 48, 55,216, 62, 40,199, 56,216, 5,189,212,130,208,135,202,122, 23,150,249, + 92, 13,101,213,189, 1, 37,127,161, 48,157, 26, 54,197,207, 11,247,243,245, 42, +245,241,230,176,193,246,219,207, 76,114, 68,118, 48,161, 7,184,196, 29, 40, 34, +249,126, 18, 94,173, 89, 51,154,118, 97, 45, 0,250, 35,234, 12,160,109,148,225, +244,120,105, 0, 88, 10,205,254, 2,140, 85, 38, 70,104,247, 6,211,240,147,138, +183,100,211, 37, 63,182,110,147, 32,212,156,196, 30,142, 99,126,188,201,150,217, +197,236, 72, 53,115,121,207, 54,212,163,194,181,131,192, 11, 12, 95, 5,103,224, +160, 85, 64,244,208, 49,188, 98,212, 12, 99, 68,180,138, 0,114,141,169,199,186, +219,146, 62,182, 47, 59, 42,103,116,198, 8, 68, 48,237, 43, 48,193, 55,126,120, +197, 16,104,153,177, 19, 88,171, 9,165,190,220, 48,161,195,146,157,118, 41,121, + 75, 84, 28, 26, 8,168,218,236, 82,254,101,192, 15, 62, 92,156,141, 64,149,142, +124,237, 91,164,177, 30,164, 92,141,236,252, 71, 68, 67,129,101,150,202, 68,103, +243,195,206,160,190,188, 52, 78,104,233, 64, 68,204,213,142,106,123,129,156, 57, +205, 57,148, 81, 7,214, 51, 88,217,125,123,114,173, 13, 85, 35,116,239,180, 57, + 15,243,217, 80,255, 97, 23,179, 81,183, 56,132,235, 71,199,123,225,106,215, 11, +206, 19, 71,169, 42,116, 81, 67,237,148,204, 38,234, 15, 39, 68,198,126,161,194, +214,206,210, 4,220,225,113,185, 52,129,167,173,121, 34, 71, 63, 85, 88,201,237, +179,196, 83, 42, 35,222,166, 10,198,227, 56,240, 13,234,129, 1,219, 11, 31, 27, + 27,194,188,101,200, 98, 63, 73, 95,128, 29, 46, 65,177,125,236, 13, 1,180,121, + 89, 31, 61, 90, 24,252, 22,147, 55, 25, 74, 46, 82,111,189,242,126,221,197,182, +237,210,196,183,152, 69,213, 28, 34, 36,205, 56,233, 17, 45,132,107,201, 33, 44, +109,248,194,202,132,105,151,157,104,199,239,162,223,216,193,171, 42, 95,116, 34, + 64, 20,153,130,132,192,228,132, 13,126,144,244, 21,174, 27,177,169, 93, 51, 27, + 87,120, 12,109,148, 77,161,181,119, 74, 12, 87,239,117,121,169,216, 10,224,144, +167, 60,220,103,169, 62, 17, 76, 90,168, 58,237,231, 14,100,183, 8, 54,232,195, + 49, 39,123,169,197, 34,186, 28,234, 8,212, 60,157,172,151,177,116, 59,110,243, +118,142,185, 65,252, 14,248,214, 67, 11, 84, 83, 20, 99,163,226, 92,238, 96,128, +171, 11,180,112,200, 75,193, 65,133,215,165,240, 87, 28, 38,120, 41,216,236, 77, +186, 88,130,254, 79, 72, 71,104, 11,227,205,247,235, 77,128, 66, 33,193,214, 75, +137,124,199,225, 96,193,122,139, 84, 50, 50,184,157, 44, 72, 21, 82, 37,146, 12, + 50,221,229,156,246,121, 17,128,231,206,200,219, 40,196, 13,239,235, 22,145, 72, + 61, 70,218,155, 92, 40,176, 69, 33, 64,125,231, 40, 67, 52,194, 10, 9,184, 68, +107, 7,248, 16,103, 10,255, 43,211,124, 69, 95,247, 99, 72, 93, 46, 10,184,181, +167,203, 30,206,108,141,197, 98,120, 15,248, 32, 92, 22,251,134,157,206, 68, 63, +142,151,146,112,198,183, 69, 38,231,229, 59, 77,105,111,143,112, 95,181,188,242, + 30,176,161,146, 11,150, 77,242,201,112, 71,143,233,143,175,204,117,200, 97,192, + 17, 5,182,206,167, 96,129,213, 80, 48,130,119,175, 23, 24,250,211,202, 71,255, + 64,217,182, 69, 80,129,148,162, 70, 67,143, 40,150,114, 12,102,156, 45,170, 80, + 2, 41,213,176,127,174, 14,190, 38, 77,124,227,171,245,177,209, 45, 91,124,125, + 91,212,174,203, 23,170,250,222,145, 26, 11,172,157,199, 67, 79,193,255,233,171, +232,253,171,113,122, 58, 19,196,177,222, 57,201,175, 16,116, 25,187,119,165,191, + 86, 82,196,222, 18, 9,134, 92,150, 94, 76,202,173,159,105, 17,196,239,164,135, +216, 68,251, 42,116,212,116, 45,146,127,228,196,101,142, 50, 17, 98, 44,185,246, + 56,242,106, 38, 77,216, 60, 69,241,172,113, 90,207,200,136, 74,249,254,211, 18, + 25, 97,140,155,117,227,109, 23, 25,110,112,121,229,192,113, 42, 52, 96,202,114, + 15,217,229,136,237, 78,134, 41,236,243,216,196, 32,148, 34, 19,219,166,211,249, + 98,111,102, 28, 9, 66, 64,124,168, 67,240,152, 40, 21,146, 72,206, 93, 31, 52, + 79, 63, 51,133, 69,102,206, 67,130,187,107, 53, 74, 29,107, 19, } ; -// ../Source/Shared/GB_hyper_hash_lookup.h: -uint8_t GB_JITpackage_204 [1171] = { - 40,181, 47,253, 96, 88, 14, 77, 36, 0, 38,238,138, 40,208,178, 58, 7,200,165, - 65, 66, 79,228,128, 88,140, 80,237,152,155,233, 49,161, 36,188,170,240,200, 10, - 85,218,211,192, 14,187,186, 69,174,102,192, 15,102, 9,128, 0,129, 0,128, 0, - 0,144, 36, 66,145, 56, 98,144, 82,175, 84,110,173,175,228,236, 34,177,149,140, - 53, 70,194,112,168,136,100,236,169,108, 57,115,123,227,166, 51,231, 56,234,143, -128, 34,161, 72, 8, 19, 9,229, 16, 44,250,179,237,129, 14,143, 80,255,196, 59, - 59,109,241,167,161, 48, 12,145,194, 26, 81, 97, 91, 33,213,240,237, 78, 3,189, - 90,144,168,115,188,223,200,182,221,159,198,150,241, 72,125,154,206,249,133,241, -126,218,111,207,100,107,175,208,110,155,147,179,162,133,209,170, 76, 63,209, 98, -136,248,192, 0, 36, 13, 12, 4,153,199,222,190, 56, 56,186,171,106,222,219,202, -147, 82,250,160,173,243, 94,155,191,182,185, 87, 52, 38, 18,198, 30, 25,137, 72, -254, 34,245,139,117,189, 1,215,202,137,101,217,236, 60,123, 59, 42,251, 27, 44, -127, 40,130,158, 16,169,105,226,252,215, 42, 56,184,178,255, 48,113,193, 76, 92, -172,134,139, 5,101,161,129,100, 55,181,223, 41, 39,210,180,189,206,191, 43,217, -114,165,215,250, 15, 2,225, 68,127,156,104, 99, 12,203, 6,128, 44, 86,197,133, - 4, 5, 5,198,178,104, 40,139,149,121,168,168, 44, 26,103, 82,235,156,240,233, -159, 95, 35,227,180,202,120, 87,175,112, 40, 16,147,108,120, 51,174,155, 27,151, - 55,172,187, 88,118,167,242,229,140, 63, 32,239,109,150,134, 12,245,160,177,170, - 12, 53,113, 97,152, 92,250,244, 74, 37,156,115,199, 65, 79,213,230, 35, 86, 33, -219,127, 42,148,125,101,124,177,174, 78,121, 15, 8, 6,115, 49, 65,171,232,218, -150,112,182, 28,212, 62,157,155,243,130, 60, 32, 8,164, 49, 17,224,119, 43,188, -150,222,110, 66,234, 28,206, 68,226,142,182,103,238,130,247,182, 31,177,142, 27, -127, 19,169,211, 1, 16,164,117, 38, 25, 96,139,100,219,190, 83,126, 10,136,120, - 3, 65, 56,175, 18, 81,153,132,181,187, 92,255, 52, 72,242,105,225, 91,180, 65, -174,215,231,186,100, 79,111,182,115,229, 74, 87, 2, 2, 10, 17,119,250, 74, 21, -178,108, 12,205, 56, 71,117, 15, 58, 61,178, 97,240,226, 32,252,116,248, 35, 5, -159,247,148,119,102,213, 44,111, 36,172, 80,123, 6, 39,247, 72,219,230,184,137, - 85,190, 58,157,140,155,142,255, 84,246, 28, 90,238,122, 37,191,178,103,222,226, -192,128,242,133, 67,164, 72, 10,129, 11,168,209, 49, 51, 50, 51,146, 20,148, 36, -133, 97, 13, 65, 16, 66, 24, 37,165,119, 61,194,248, 44,141, 96, 28, 6, 42, 67, -202, 68, 23, 72, 52, 82,146,146,114,138, 29, 20, 0, 68, 76, 17, 37,112,148, 58, - 68,254,188,111,138,190, 74, 94,155, 84,141,190,186,139, 61,138, 51, 31,142, 92, - 10,141,232,242, 3,154, 15,214, 58, 5,176,174,139, 0,165, 39, 80,153,134, 22, -148,179, 35, 69,173,156, 3,185,193,185,175,248, 88,104,185,196, 35,252,109, 72, - 4, 64,151,107, 62, 40,160, 92,156, 84,104,202, 37,124,154,126,182, 17, 94,194, -243,253, 7, 68, 52,138,121,130, 53, 63, 41, 33,139,234,205, 12,199,143, 45, 31, - 88, 39, 42,204, 76,247,135, 27,108, 42,139, 95, 19,164, 94,143,239, 54,111, 79, -231, 62, 84, 68,115, 32,111,135, 92, 61, 96,163, 63,121,100,187,107, 49,159,156, -167, 13,145, 32, 13,122,108,154, 20,197,201,202,224, 92, 76,210,209,237,176,122, -141, 71, 76,109,119, 57, 12,209, 36,131,160, 47, 42,132, 83, 8,220, 95, 81,178, -252, 19, 68,112, 73, 18,114,134,162, 85, 62, 62, 35, 5, 30, 42,186, 93, 69,220, -110,197,156, 24, 20, 58,114, 0,188,220,218,218, 21,160, 14,177,173,158,173, 0, - 21,205, 90, 1, 99,232, 17,185,173,195, 60,220, 17, 62, 44,148, 7,249, 11,117, - 74,185,210, 16, 34,204,215,137, 59, 53, 39, 39,123, 23,130, 81, 27,206, 49,193, - 90,143,234, 9, 10,212, 26, 91, 75,170,104,144,186,250,217, 65, 94, 44, 1,101, - 55,141, 88, 56,113, 59,136,136, 67, 64, 92,210, 20,246,101,241,206,157,147,144, - 67, 90,195, 85, 50, 73,187, 71,161,211,140, 37,179,129, 47, 55, 50, 35,106,104, -158,191, 63,128,172,101,112, 56,176,103,232,169,164,209, 24, 54,177,228,252,163, -183, 35,249, 65,232,230, 31,240,102,214, 49,130,160,173,172, 78, 99,124,254, 53, - 18,159,213, 75, 8,158,222,121, 24,115,253,195,118, 17, 14, 68, 65, 99, 76, 62, - 5, 92,250, 94,116,253,144, 23,136, 14,244,157, 27,140, 99,133, 1, 31, 39,232, -166, 94, 48,124,198, 51,189,102, 33,241, 75,153,150, 36, 61, 61,225, 88, 90, 34, -219,120,206, 19, 10,136, 64,181,184,190,201,116,226,160, 24,195,187, 12,214, 38, -244, 88,249,133, 8,229,178, 56,202, 76,156, 41,130, 66, 65,201,106, 47,144,107, -155, 95,243,141, 19, 50,130,208,254,138,148,199,212, 79, 86,158,133,241, 54, 37, -207, 67, 82, 20, 37,120, 99, 59,192, 26,219, 61,162, 2,173,146,178,140, 14, 16, - 24, 23, 95, 71,154, 18,106,168,248,173, 96,156, 29,254,133,228, 33,110, 96,107, -160, 35,140, 35, 15,196, 38,158,228,103, 58,103, 62, 26, 52,165, 42, 51,221,164, - 4,242,145, 78, 41,130,139,170, 30,172, 39, +// ../Source/Template/GB_split_bitmap_template.c: +uint8_t GB_JITpackage_200 [585] = { + 40,181, 47,253, 96, 81, 5,253, 17, 0,198,155, 87, 32,224, 26, 29, 3,212,159, + 96, 2,110,167,154,216, 43,110, 92,212,176, 94, 82,243, 32,143,234,249, 7, 95, +141, 24, 35, 69, 6,135, 78, 0, 77, 0, 79, 0,162,252, 32,129, 48, 32, 58,198, +193,128,248,246,105, 31,104,203,162,148, 19,228, 93,225, 86,141, 22,244,193, 71, +106, 38, 33,166,217,226,168, 58, 83,252,169,219,174, 62, 89, 21,237, 86,237,107, +223,178,121,211,241,167,191,163,110, 42,226,177,110, 15,211,113, 91,147,183,173, +136,181, 55,177,188, 80,200,186, 66, 33,146, 78, 62,242, 91, 69, 22,253,246, 20, +139,125,173,166,178,241, 84, 50, 30,232,130, 57, 85,240,100, 1,242, 53,220, 7, + 47,253,252,174,168,255,127,150,193, 50, 3, 1,209,213,240,163, 88,222,145,171, + 61,217,125, 43,120,233,170,190,245,179,154, 46, 68,233, 16,192,202,202, 85, 87, +207,245, 14, 81,214,115, 49,215,155,154, 6,105,205,225,246,198,213,125, 86,157, + 46, 86, 81,164,153,226,227, 81,117, 58,162,104,198,134, 71, 62,241,156,115,182, + 54,173,210, 17,129, 60, 9,186,104, 58, 31,143,243,185,220,147, 5,111, 5,204, +105, 50,201,239,207,230,173,107, 22, 52,182,190,170,239,187, 32,242, 22, 29, 95, +119,180,224,252, 30, 1,153, 92, 1, 34,215, 34,101,221, 44,198,113,155,196, 31, +136, 58,156, 86,107, 30,182,105, 63,149,100,105,226,209, 77,147, 94,112, 41, 45, + 78,177,236,185,239, 76,183,182,244,145, 75, 91, 72, 61, 2,145, 91, 24,199, 65, + 38,214, 54, 7,167, 93,149,221, 95, 38,125,251,236,166, 91,107, 85, 92,129, 53, +252,244,183,100,160, 33, 69,199, 8, 13, 73, 10, 10, 10,146, 74,107,112, 68,166, +204,186, 1,211,154, 92, 75,100, 32,145,252,177,148,189, 4,166,225, 45,143, 64, + 72, 20, 6, 8, 6,175,205,168, 5, 39, 64, 52,105,217, 23,136, 27, 62,163,202, +159, 37,179, 81,198, 22,100,179, 52,130, 41,154, 28,145,101, 96,246,131,166,150, + 76, 69, 25, 95,150, 35,180,172, 60, 76,100,250,140, 75,244,186,234,249,160, 45, + 1, 15,106,168,206,139,124,173, 29,244, 97, 45,173, 70, 58, 96, 54,248,216,176, + 80,247,179,106,133, 32, 20,242,190, 32,143,193,252, 28, 69, 9,137,110, 4,131, + 57,192,218,179, 82, 13,108, 62, 70,181,131,173,173,253, 89,213, 95,104,157, 5, +240, 41, 87,105,177,227, 24, 13, 0,220,225,200, 38, 35,201,162,107,129,217, 85, +231, 22,238,186,253,165,188,221, 95,100, 93, 45,244,195,133,150,198,137,169,100, +147, 28, 81,115,208,236,168,204,180,110,131,149, 92, 83, 84,226, 32,242,208, 81, +111, 95,209, 59, 6, } ; -// ../Source/Shared/GB_index.h: -uint8_t GB_JITpackage_205 [386] = { - 40,181, 47,253, 96,169, 3,197, 11, 0,118, 20, 66, 32, 32,177, 30,243, 11,206, -174, 21, 33,110,130, 0, 61,253,239, 23,194, 16,222,133, 71,244,255,255,197, 19, -154, 64, 34, 20, 22, 8, 53, 0, 57, 0, 57, 0,243,106, 5,199,119,102,164,231, -215, 72,136,179,117,207, 90, 30,227,217,245,107,236,153, 78,110,106,103,227,140, - 31,211,125,191,218,216,126,159,223,126,117,218,133,110,226, 56,181, 79, 57,104, - 77, 81, 80,162,168,254,245,179,117,186, 73,142,173, 87, 62, 74,147,236, 49, 81, -223, 92,199,206, 53,206,157,229,185,198, 96,176,142, 4, 87,117, 73, 4,171,186, - 26,170, 60, 29,225,223,204,172, 39,172, 59, 93,254,188,135,116, 36,177,120,232, - 50, 1,134,142, 49, 98, 61, 13, 61, 79, 79, 48,198,181,223, 99,235,222,211,190, - 95,174,248,166,239,215,156,191,121,122,237,105,188,231, 76, 15, 58, 0, 42, 40, -147, 68,214,216,170, 83, 91, 31, 0,171,233,146,188,171,204, 12,214,133, 27, 80, - 16, 29,136, 75,226,224, 14, 17,217,208, 54, 41, 5, 13,145, 91,188, 58,145,109, - 28, 68, 90,157,208, 26, 24, 87,117,140,216,252, 59, 55, 29, 45,182,142,234,215, -212,254, 37,208,128,245,169,117, 0,132,172,150, 26,170, 6,109, 8, 41, 32, 48, - 66, 67, 77, 89, 15,184, 20,188, 70, 12,240, 43, 69, 76,181, 4, 26,108, 68,151, -181,179, 92, 46,199, 13,206, 16, 56, 77, 56, 23, 47, 9, 2, 63, 37, 10,162, 12, -216,239, 90, 99,135,180,197,172,129,144,177, 9, 17, 14, 60, 89,151,156, 12, 45, -225, 62, 3, 30, 51,153, 29,219,201, 36,176,247, 77,152,239, 85,206, 55,125,108, - 51,157, 25, 51,180, 68,195,186, 7,205,205, 51,211,109, 25,173, 22,142, 9, 61, -240, 11, 79, 81, 48, 4, +// ../Source/Template/GB_split_full_template.c: +uint8_t GB_JITpackage_201 [538] = { + 40,181, 47,253, 96,101, 4,133, 16, 0,246,156, 89, 33,208, 90,231, 64, 7, 28, + 75, 96,220,125, 44,237,204,237, 32, 4, 97,104,189, 17,129,135, 39,245,162,116, + 25,165, 30,120,129, 82, 2, 81, 0, 76, 0, 82, 0, 57, 52,213,207, 69,113,222, +192, 88, 36, 22,135,135, 34,177,248,192,203,110,192, 53, 69, 43, 71,204,179,194, + 76,142, 53,116, 3,104,110, 40,225,165,229, 5,210,184,164, 23,212,185,162, 64, + 88,139, 53,147,217,214,175,106,153,233,248,211, 31,210,153,138,119,236,220,137, + 34, 10,236,114, 21, 47,238, 40,151,107, 26,118,208,180,253,129, 53, 48,255, 89, +122,238,185, 77,255,127, 12,115, 97, 24,130,196,245, 93,210,227,246, 58,204,183, + 29,170,254, 53, 70, 61,147,246,184,254, 35,195,220,227,113, 13, 67, 88, 2,177, + 56,116,232,209, 59, 15, 41,187,130, 53,219,254, 48,135,198,182,189,186, 57,136, + 42, 30,196,215,169,178,113,127,142, 3, 36,120,177, 69,145,150,244,254,142,228, +233,104,162,229,229,238,128,196, 21,144, 61,244,177,128, 64,147,227, 56,110, 53, +200,190,125, 53,159,113,151,132, 91, 60,163, 80, 55, 51,182,164, 7,214,207,118, +192, 59, 97,123,203,142,245,227,188,200,228, 48,191,221,182,152,162,207, 93,195, +145,109,221, 88, 56, 31,139,166, 11, 97, 50, 96, 24, 6,246,103, 81, 1, 12,123, + 97,175,193,188, 55,140, 60,157,210,156,223, 94,226, 46, 73,211,232, 9,159,179, +222, 83,170,190,240, 92,210,140, 43,253,246, 89,181, 83, 68,176,189,222, 85, 40, + 72, 34, 79,124, 59,119,179,129, 87, 51,205, 56,107, 17,245,117,232,225, 15,108, +199,101,248,163, 93,134,185, 27, 81,246,101, 72, 32,128, 2,153, 42, 43, 15,242, +204, 64,222, 96,152,219,187, 83, 15,208, 14, 40, 13, 8, 9,220, 7,135,107,128, +225,181, 14, 26,102, 49,147,152,206,124, 5,135,233,101, 93, 7, 70, 52, 37,136, +126,159,214, 65, 32, 3,189, 97,115,136,126,199, 70,247,130, 91, 71, 21, 32,209, + 16,110,100,130, 58,209,185, 31, 86, 11,144, 39,112,220, 71, 97, 17, 34,188,125, + 66, 80,194,161, 62,212, 23,235, 70,124, 28,207,209,215, 35, 29,195, 18,227,138, +178,100, 7, 22,148,141,245,236,178,112, 39,246, 23,120,117, 7,147, 85,213, 2, +120, 88, 8,137, 39,225,111, 64,138, 25,152,147, 32,134, 45, 97,111,211,244, 60, + 51,177,173,146,213, 58,197, 72, 27, 63, 41,215, 0, 17,156,162,124, 8, } ; -// ../Source/Shared/GB_int64_mult.h: -uint8_t GB_JITpackage_206 [638] = { - 40,181, 47,253, 96,160, 9,165, 19, 0,198,223, 95, 32,224, 26,231,160,158, 22, -173,175,165,247,188,116,127,101,136, 68,205,194,119,253,234, 10,200, 79,251,210, -132, 25, 82, 98, 76, 8, 89, 0, 83, 0, 84, 0, 32, 40, 57, 65,145,144,137, 66, - 3, 33, 19,215,104,118,194,173,168, 73,185, 65,242,213,215,161,169,122, 78,232, - 72, 48,147,239, 52, 69,139,131,175, 56, 79, 29,238, 58,118,176,254,173,103,253, -178,248,109, 5,178, 55,239, 47,143,224, 68, 93,228, 17,183,173, 15, 83,253,145, -173, 43,240, 84,239,104,112, 52,137, 22,140,182, 85, 52,177,252,112,192, 10,135, - 67,118, 50, 24,134,220,231,173, 56, 54,139,239,208,254,114,216,117,125,207,175, -223, 39,166, 42, 62, 97,188,243,235,179,105,222,243,215,191,220,227,201, 20,210, -135, 34,157,166,223,250,121, 48,105, 72, 20,248,163,243, 36,185, 67,228,234,213, -182,220, 93, 10,124, 45,211,138, 41,128, 40, 27, 67,199, 40,145, 47,115,126,251, - 27, 85,206, 3, 25,219,234,113, 7,192, 60,152,143,199,157,245, 42, 0,195, 12, -242,144,200,153, 51,125,245,206,206,171,126,109,253,215,225,228, 55, 92,113,164, -212,171, 7, 73, 50, 30,205,133,246, 29, 73,239,122, 66, 55,185,175,189,252,134, -142,155,114,115,151, 10, 65, 79,100, 84, 40,134, 23,249,107,254, 82,231,158,180, -118,253,209, 4,189,151,194, 7, 24,230,213,206, 50, 0,123,109,167,153, 28, 92, -147,138, 63, 30,116, 27, 92,118,162, 53,151,235, 24,185, 80, 33, 56,129, 68,112, - 2,196,108,185, 29, 83, 81,168,228, 3,114,227, 30, 8, 68,184,237, 82,241, 72, -228,243,144, 35,248,130,252,218,174,177,178,115,119,185,158,221,171, 43,110,187, -166,202,174,101,135,124,190,223,194, 66,215, 86, 4, 21,129, 21,111,160,209,173, - 33, 11, 70, 38, 41, 40,104, 74,210,106,160, 72, 68,200, 88, 7,127, 94, 38, 57, -101, 18,102,174,196, 20,190, 58,151,169,113,132,130, 7,204,151,224,122,204,186, - 94,203, 0,201,107, 61,234,155,116, 4, 2,248, 37,130, 37,111,172,230, 61,203, -161,146, 70,179, 12, 69, 47,197, 42, 15,184,196,160, 89, 95,199,118, 30, 8,209, - 58,189,227,172, 89, 94, 95,117,128,176, 85, 57,175,155, 8,138,195, 65,118, 39, -103,183,202,202, 64,115, 31, 3,126,183, 70,129,114,192, 64,100, 44, 92,101, 13, -185,166,220,214,129, 50,150,251,246,243,214, 0,119,189,178,124,239, 55,245,203, -208, 17, 76,183,146, 40,128,114, 96,240, 95,167, 15,178,152,151,102,232,185,163, -247,189,183, 34,243,204,208,144, 79,229, 73,253,165, 99, 81,102,235,121, 1, 73, -188,195, 88, 1,163, 0,156, 16,194,105,223,164, 60, 99,169,109,109, 84,222,199, -156, 47,161, 60, 14,141, 11,152,220, 2,201,153, 56,221, 90,116,211,196,168,204, -180, 46,138, 85,123, 8,168, 9,195,160, 25, 4,117, 14,188,162,193, 9, +// ../Source/Template/GB_split_sparse_template.c: +uint8_t GB_JITpackage_202 [803] = { + 40,181, 47,253, 96,167, 8,205, 24, 0,198,163,108, 32,224, 88,231, 24,203, 4, +119, 25,145,215,107, 59, 67,106,120, 21,143,129,176, 1,154, 44, 51, 74,240,205, + 25,204, 48, 76,243,112, 99, 0, 99, 0, 99, 0, 89,227,219,157,205,100, 33, 9, +135,224,117,170,108,220,157,227, 12,150,108,231, 97, 72, 63, 19, 8, 3, 34, 99, + 28, 12,136, 7, 58,236, 19,219, 84,149,156, 64,191, 2,243, 40,218,207,167,135, +102, 34, 32, 89, 75, 74,195,211,217,162, 60,151,202,150,185,138,127,189, 56,150, +223, 59,180,249, 29,150,174,197,175,127,163,115, 13, 73,177, 51,215,184,172,217, +134, 36,230, 34,148, 23, 10, 87, 86, 40, 4, 32, 73,102, 78,177,200,215,102, 38, +154,206, 4,195,125, 44,151,207,122,183, 1,219,182,109,191, 28, 87, 65, 50,250, + 0,118,237, 42,250,220,217, 50,227, 46, 5,159,112, 68, 31,142,102,124,199,238, + 99,201,112, 60,220,198, 99,249,218,187,159, 5,108,255,198,151,174,237,108,136, +223, 96,158,219,189, 91, 79,159,187,244,255,191, 46,214,101, 32, 32,178, 6,187, + 74,210, 55,202,182,159,205,183, 61, 75,218,169,233,225,248, 73, 35,237,172,193, +224,225,184,225, 26, 22, 56,204,206,138,245,174, 60,172, 67,148,215, 96,135, 31, +184,220,134, 97,175,118, 9,102, 78, 68,221,151,227,247,176,195,176,150,149, 60, + 41,142,175, 98,169,150,164,103,243,243,181, 99, 62, 5,243, 87,228,216, 33, 46, + 40,107,198, 36, 62,225,154,239,160,134,220,169,185,222,184,140, 75,251,157,200, +109,211,126, 59, 76,117,214,130, 1, 23, 69, 1,174,171,117,181,166,136,179,177, +245,153,118,210,182,153,166,197,174,245,110,253, 44,136, 41, 57,186,165,214,145, + 13,180, 83,211,164, 22,163,255,198,171,218,187,246, 15,199,175,125, 35, 95,142, +185,235,212, 7, 7, 53,254,190,145,163,164,195, 96,206, 57,231,244,110,127,114, + 27,201,225, 62, 19,202,105,164,221, 64,222,107,175,251, 62,143, 55,112,170, 19, +164,216, 41, 87,137, 80, 30,128,157,168, 81,193, 66, 52, 67, 34, 73, 10, 82,200, +178, 6, 80,132,204,148, 29, 61,226,184, 84, 74, 98, 28, 66, 84, 96,136, 21,136, + 4, 34,129, 72,152,168, 41,111, 7, 14,135, 80, 28, 61,225,160, 41,203,110,126, + 98,162,185,113, 77,124,219, 13, 72, 64,204,124,149, 56, 56, 66, 30, 43, 43,182, +130, 82,194,143,200, 8,155, 33, 64,129,149,128,155,111,176,196,133,197,188,226, +199, 72, 94, 5,225,247,245, 80, 48, 89, 91,215,233,235,145,247, 9,200, 93,196, +204,122,175,138,149,174,147,168,150,155,226, 43,229,100,186,127, 62,184,115, 35, +202, 6, 32,226,175, 2,206,130,107, 24,197, 28,203,113,204,161, 12,236,199, 27, +131,172,186,148,218,178, 28,187, 40, 98, 84,221,147, 40, 90,142,135,185,134,115, + 79, 40, 76, 22,188,125, 12,236,240,145,121,131, 85, 2, 92, 4,248, 67, 40, 46, +141,101, 26,229,130,100, 24, 28,208,144, 70,179,192,141,209, 17,100, 26,164, 96, + 66, 61,169,118,150,232, 2,169, 51,149,248,237,126,229,205, 56, 83,183, 70,133, + 43, 10, 51, 73, 52, 35,147, 38,114,185, 10,205, 85, 79, 16,197,171,151, 64, 17, + 56, 95,211,201,243,180,112, 3,165,245,139, 3,221,168, 77, 49,182, 56, 35,112, + 27,130, 19,160,181,216, 53, 88,200, 65,107,186,160, 18, 40, 42,151, 15, 21,193, +189, 64, 75, 12, 38, 94,166, 0, 12,110,250, 96,140, 29,188,141, 30, 24, 34,109, +212, 87,148,206,232,233,193,171, 12, 1,223, 3, 83, 9,166,100,144, 92,104,115, +208, 68,213, 96,178,186,134,108,216,128,107, 74,188, 71,248, 21,227, 71, 6,105, +184, 52, 1, } ; -// ../Source/Shared/GB_kernel_shared_definitions.h: -uint8_t GB_JITpackage_207 [1189] = { - 40,181, 47,253, 96, 39, 21,221, 36, 0,198,114,150, 40,208,178, 58, 7,168, 74, -160,216, 63,199,203,122,124,109,237, 99,168,116,141,185, 74, 72,117,138,212,253, - 23,151, 5, 14, 87,198,225, 69,174,102,192, 15,102, 9,138, 0,147, 0,139, 0, -116,106,171,241,174,223,198, 35,193,198,143,203, 36, 11,188,242,233, 70,184,219, - 43,111,160,168, 66, 93,166,221, 50,232, 85, 79,160,203, 26,183,220,120, 77, 91, -229,102, 28, 49, 89,104, 58, 84,220, 14,186,117, 61,175,189,133,216,115,142,171, - 46, 21, 92, 42,151,233,192, 82,185,124,146, 73, 46, 85,238,128,154, 83,213, 65, -182,158, 29,131, 46,125,170, 8,134,205,131,116,147,176,149, 66,239,179,205,223, - 39,170,113,110,189,221, 57, 14,158, 78,237, 79,216,168, 42, 39, 55, 75,214, 54, - 98,113, 41,220, 42,198,173,164,203,129, 49,108, 78,161, 68, 19,133, 18,209,228, -149,134, 34,147,185, 60, 22,199,218, 0,124, 96,224,147,127, 64, 23, 3,150,185, - 36, 38, 64,149,228,241, 26, 71,185, 2, 81,229, 22, 86, 68, 71, 98, 34,131,125, -174,144,107,124,203,122, 32,125,216, 48,222,234, 92,128, 48,140,173, 55, 36,225, -150,125, 44,101, 41,124,198,221,108, 24,173, 64,228,128,125, 56, 19, 23,232,226, - 92, 13,150, 6,211, 88,158,202,225,131, 69, 88, 28,143, 5, 33,181,143,157, 89, -192, 70,197,173,159,252, 2, 30, 69, 84,198, 18,232,122,216,156,206, 83,116, 50, -151, 30,183, 33, 93,185,161,105,169,247, 4, 16,185, 13, 57,175,219, 62,136,132, - 15, 73,174,223, 55,219, 49,228,110,125,105, 63,218,175,124, 11,116,121, 42, 62, -149, 3, 55, 83, 15, 3,140,180,156,198, 55,163, 1,198, 0,179,245, 82, 0, 39, -167, 61, 74,120, 41,184, 20, 96, 44, 24, 11,198,130,128, 61,202,248,119,169, 49, -132,150,140,192,237, 36, 46,229,186,241, 82,220,206,214,251,216, 75,189, 33, 10, - 91, 98,109, 56,149, 67,198,194,194, 38, 33,201,148,187,173,167, 12, 61, 44,238, -202, 41, 43, 95, 88,160, 54,132,235,169, 54, 63,209,238,148,228,169, 57,254, 52, - 46,167, 55,183,126,151,112, 82,183, 65, 52,142, 96,112,233,114,201,114,169, 34, -137,255, 31, 5,209,202, 41,163, 74, 68, 69,116, 74,216,217, 82, 90, 9,154,225, -183, 3,110, 59,227, 35, 65,101,237,170, 45,109, 95, 70, 97, 48,126,153,228,218, -245,235, 90,110,148,235,109,148, 31,125,101,202,217, 27,118,116,123, 35, 87,223, - 83,110, 40, 58, 41,221,111,199, 61, 45,199, 28,148,147, 91,110, 75,150,240,231, - 56,246,152,253,144,228,246,186,237,174,232,148, 72,234,136,194,194, 39, 33,151, - 36,231, 80,116, 46,114, 74, 78,174,116, 59, 94,121,235,215, 89, 57,120,170,165, - 16,137,166,178, 60, 20, 75, 20,225,210, 75, 18,190,194,128,229,160,129, 37, 53, - 68, 35, 34,146, 20, 36,165, 12, 7, 48,132, 16, 50,101, 86,220,162, 17,129, 36, - 73, 87, 46,168,150, 38, 31,225, 19,116,146,179,228,218,223,138,203,212, 36,212, -124,177, 87,136,161, 64,124, 36,130, 34, 23,128,100, 99,232, 51,156, 70, 17,202, -107,102,251,215,159, 86,109,223, 14,121,157,216,190,128, 16,248, 93,156,102,187, -248,242,189,212,142,127,138, 84,112,167, 2, 75, 18, 36, 96, 24, 55,167,208,216, - 27, 76,149,185, 94, 26,250,139, 27,105,145,205,171, 49,164, 19, 73,198,255, 11, - 16, 2, 75,225, 30,158,179,228,185,141, 12, 36,254,154,112,174, 76,140, 12, 63, -139,168,217,197,254, 87, 8,238, 5, 59,221,132, 61, 92,232, 58,156,117, 34,209, -208, 21, 5,146, 99,209,209, 2,201,144,154, 20,173,114,131, 27,133,208,147, 5, - 85, 35,250,128,104, 46, 12,161,159, 38,127,248,188, 62,105,139,128,102,216,150, - 40, 58, 85, 17, 80, 34,250,241, 97,128, 45, 10, 33,178, 34, 2,163, 25,185,126, - 67, 26, 61,183,179,156,110,220,156, 30,100, 61,127,176, 2,177,230,184, 3,142, - 23,252,183, 73, 56,231,146,105, 34, 39, 70,132,118,177,149,234, 87,165,139, 37, -109,145, 34,110,139, 61,221, 40, 23,232,130,103,228,148, 8,189,123,202,221,136, -212,205, 93, 64, 45,180, 91,142,107,148, 63, 13,168, 51,132,196,155, 28, 55,185, - 56, 1,231,204,168, 29,177, 41,127,209,134, 69,169, 5,103,233, 81,137,137, 60, - 22,214,228,162,115,203,217,203,252, 77, 7,174,227, 38,224, 39,197, 9,112, 82, -238, 10,110, 6, 38,196, 73, 48,158,234, 98,150, 13,116, 8,122, 62, 19,146, 75, - 98,113,109, 12,123, 36, 87,168,140, 14, 18,227,241, 55, 62, 39,217,214, 66,152, -178, 61, 3,172,201, 69, 11,254,204,115, 70,116, 17, 3,192,133, 59,240,184,175, -117, 51,131,146,168,122,122,119,129,230,108, 96,136, 67, 21,210, 13,180,117,199, - 94, 97,224, 55,186, 28, 77,207,140,224, 77,253,186, 61,128,162,161,182, 8,107, - 33, 4, 17, 15,124, 18,200,100,170, 10, 66, 94, 2, 81, 99,129, 44,229, 42,242, - 13,164, 39, 84, 5, 32, 17,136,226,115,184,185, 15,109, 34,122,210,138, 1,212, -208,127,245, 98,199, 89, 54,243,138, 52, 69,212,146,206,188,107,101,132, 5,153, -111,142, 47,182,154,166,210,231, 22, 56, 98,197,100,165,184, 11,194, 2,130,203, - 15, 32,158,208, 46,240,141, 1, 81, 39, 19,253,160,210, 70, 81, 56,118,110, 57, - 34, 56,109,121, 24, 0,145, 23,100,107,166,110,154,155,159,153,222, 41,174,111, -159, 80,228, 83, 38,254,138, 94, 60, +// ../Source/Template/GB_subassign_05d_template.c: +uint8_t GB_JITpackage_203 [1166] = { + 40,181, 47,253, 96, 56, 15, 37, 36, 0, 54, 49,153, 41,176,148,117, 14,100,161, +216,231,123,124,194,197,117,107, 15,192,171,196,169,118,156,102, 12, 33, 19,162, +209, 66, 24,219,129,249, 9,255,148,254, 52,249, 15,118, 1,143, 0,141, 0,140, + 0, 26,118, 97, 50,113,244,181, 1,211,179,236,162, 24,166, 65,220,235,238,150, + 2, 38, 11,193, 65,165, 63,174,138,215, 47, 99, 91,207,230,219,157,167,210,248, + 54,103,179, 10, 6, 7, 68,208,117,200,216,184,181,227,252,121, 88,237, 32,120, +221, 66, 56,176, 28, 84, 24, 12, 44, 7,175, 56,234, 22,182, 33,149,115,130,235, + 36, 95, 14, 73, 54,116,107,187,178,205, 39,214,177,115,105, 60, 86,113,235,108, + 75,219, 4,130, 37,239,216, 94,190,199,254, 68, 62,242,204, 53,211, 65,254,210, +185,130, 34,169, 51,237, 20, 44,244,122, 88,140,171,168,132,233,166,243,130,130, +169, 82, 80, 16, 33,143,103, 3, 66,108, 53, 21, 9, 80,125, 40, 7,203, 54,179, + 66,130,122, 72,195,182,237,154,239,110,189,124,110,143, 91, 92,135, 92, 77,101, +158,242, 91, 13,183, 38,245, 9,237,115, 65, 49, 60, 90,232,154, 20,147,158,108, +171, 58,176, 63, 90,114, 47, 39,195, 34, 40,232,196, 93,237,241,179,240, 8,215, +124,233, 60,166, 93,153,196, 56, 24,251,208,187, 30,186, 25,241,232,150, 62,238, + 93,151, 88, 92, 1,107, 9,164, 31,206,247, 47, 96,131, 96, 29, 43,232,147,201, + 52,157, 96, 94,101,154,176,144,175,189,229,113, 45,103, 65, 76, 71, 77, 39,117, +208, 7, 68, 39, 2,239,216,152, 52, 3,130,245,185,126, 52,134, 34, 15,239,113, +135,221,237, 47, 87,112,116,205, 51, 30,173, 55,186,103, 41, 20, 7,204, 45,207, + 80,149,129,197, 89, 82,189, 36, 29,213, 96,169,235,143,195,175, 40, 74, 42,221, +143,161,119,241, 34, 41,124, 37,121,212, 81,236,172,228,164,148,242, 54, 24, 50, + 71,168, 95,158,101, 21, 20,127,160, 94, 81, 35, 24, 40, 35,100,237,247,137, 68, + 13,162, 56,109,143, 3,159, 60,219, 93,140,166,210, 34, 73,206,156,244, 76,159, +241, 13,185,198, 96,135,100,133, 22,218,232,196,118,101,174, 52,102, 92,103,134, + 81,104,216, 4, 13,211, 73, 21,218, 46, 89,137, 54,222,116, 98, 73,241,214,136, +164, 46,105,152,233, 88,193,202, 97,154, 1,250,112,207,188, 67,138, 27, 31,177, + 30,138,188, 3,230,207,124,138,152,134, 71,251,132, 36,102, 65, 57,211,179,209, +107,118, 46, 13, 68, 77, 68,243, 2, 2, 25,234,222, 7,102, 32, 83,125,200, 48, + 31,231,107, 67,241, 82, 52,160, 88,149, 8,178, 44,171,187,125, 43, 99, 58, 69, +234, 23,136,134,176,206,173,111, 82,159, 52, 98,211,249,192,150, 68,244, 27,190, +235, 92,199, 22,195,183,232, 97,126,117, 47,124,238,174,245,238,240,209, 49,175, + 46,214,133,194, 4,128,236,168,113,189, 66, 51, 34, 50, 34, 41, 40, 72, 82, 24, + 14, 64,132, 24, 83, 69,214, 13,194,216, 48,138,242,156, 34, 76, 17, 34,193,136, +144, 4, 18, 72, 32,161, 4, 18, 69, 73,230, 24,216, 20,136,204,121,220, 50,191, + 56, 69,109,116, 85, 23,224, 19,112,100, 68, 25, 66,141,103, 76, 56,104,190, 72, +178,133,169, 38, 65, 54,101, 30,100, 96,145, 39,209,125,247,132,210, 11, 18,210, + 84, 28,200,116,235,145, 86,140, 64,147,114, 22,109,179, 89, 22,138, 48,214,154, + 96,142,160,193,202,129,104, 78,170, 14, 81,140,227, 46,196, 50,128, 53, 74,134, +233,143,109,248, 85,128,212,241,196,224, 4,141, 23, 3, 63, 44,172,240, 60,185, + 40, 99,248, 68,244, 53,133,126,232, 12, 11, 79,138,177, 97,100,111, 59, 67,223, +137, 68, 61,192,245,135,141, 96,196,101,221,248, 82,140, 46,142, 61, 11, 54, 83, +151, 14,187, 17, 59,195,184, 35,120,224, 93,184,165,146, 68, 39, 34, 70,183,170, + 0,158, 58, 63, 14, 40,221, 99,249, 47,134,245,168, 26,209,232,223, 24,155,155, +124,196,203, 27,168, 76,174, 4,126, 77, 13, 27, 44,140,197, 39, 14, 68, 68,205, +206, 15,150,210, 15, 49,245,171,160,167,115, 80, 96, 11,153, 94, 48, 10,252,173, + 6,151, 48,199, 36, 0, 83, 67, 93,199, 22,196, 43,194, 47, 55, 84, 58, 77,234, +169,137, 42,143, 21, 42, 86, 22, 12,176,204,109, 1,110, 10,216, 85, 8, 11,204, +166,178, 37,167,194,239,160,183,129,222,198,135,137, 65,102,187,102,229, 69,111, + 15, 87, 69,235, 32, 72, 47,236, 70,241,172,229,199,247,129, 21, 36, 88,250,100, + 78, 87,135,201,110,127,192,105, 58,150,150,110, 80,198, 51, 73,151, 12,224, 18, + 91, 5, 62, 58, 5,180, 56,176, 37, 13,127,137,128,141, 22, 89, 54,119,122,232, +117,114, 5, 83,195,213,166,221,133, 64, 57,169, 23,235,127,143, 5, 12,127,162, + 22, 6,129,241,192,220, 45,157, 55,176,218, 88, 49, 33, 79,211, 42,149,228,234, +231,130,191,150,141,221, 52,108,140,220,101,116,126, 29,229, 55,196,114, 91,216, +255, 99, 26, 8,236,212, 71,250,109, 78, 15,135,140, 84,244,166,193,139, 22, 25, + 8, 18,148, 85, 33,121,116, 19,143, 8,242,193,126,200, 47,204,186,190, 80,122, +193,113, 6,181, 41,156, 89,128,230,251,244,209,246, 38,106, 83,241,245,166, 16, + 86, 93, 62,102, 58,184,128,153, 91, 12,160, 65,211,255,153, 41,207,120,133,209, + 23,181,149, 58,128, 19, } ; -// ../Source/Shared/GB_matrix.h: -uint8_t GB_JITpackage_208 [7468] = { - 40,181, 47,253, 96,194,110, 21,233, 0,170,161, 72, 28, 44,160, 82, 81, 55,210, - 1,233,175, 11,171,245,204,242,121,158,206,210,154, 85,250,103,109,218,179,218, -169,150, 13,160, 84, 91,224, 74,124,255,218,114,188, 28, 47, 57, 29, 94,169,170, - 1,178, 1,192, 1,146,177, 12,170,229,150,227,198, 1,177,192, 86,185, 28,227, -234,116,168, 78,185,174,218,113,124,216,139,177,164,120,238,228,159,232,103, 17, -149,107, 57,200,100, 66,249,190, 38,231,152, 99, 36, 83,203,214, 67, 40,254,232, -183, 48,211, 12,236,201,148,244, 25, 91,186,231, 7, 8,222, 91,185, 12,181,242, -169,150,219,222,116,171,177, 62,198,179, 85,102, 94,233,124,217,149,228, 76,198, -159, 74,151,146, 21,114,157, 89, 76, 45,139, 73,175, 96,171,235,223,201,138, 64, -172, 41, 77, 20, 23,155, 61, 97, 96, 92,168, 48,241,220,114, 66,214, 75, 83,181, -118, 92, 74,217,160, 15,123, 35, 50,250,107, 69, 6, 18, 73,253, 21,170, 64,126, - 81, 39, 70, 2, 1,235,111,187,121,171, 19,234,222, 97,158,251,100,129, 86,165, - 71,136, 30,205,113, 45, 25,178, 4,140, 90,179, 55, 74,241,103,213, 79,206,240, -235,136,185,155,217,228, 83, 95,242,132,237,145,192,132,160, 50,116,157,159,121, -248, 84,201,112,249, 57,229, 73,169,151,249, 70,231,133,106,244,211,101,114,190, -238, 91,183, 1, 77,101,159,106, 69,156,113,216,232,176,149, 34,192, 84,246, 28, -236, 0,252,186,181, 98,163, 66, 95,114,220, 44, 9,116,168, 21,201, 54, 73, 48, -133,171,191, 74, 61,182,244, 91, 82,141, 38,228, 9,221,253,100,108,161, 78,200, -146,171,170, 41,101,185,250,211,177,199,228,202, 22, 7,132, 18, 69, 72,216,114, - 27, 37,181, 72,238,170, 39,100,234, 66,194, 15,217, 53,134, 68,195,131,140,136, - 98,141,228,103, 13,253,105,101, 90, 67,223,147, 20, 50, 16, 65,137,144, 36,168, - 80, 34,244,113,142, 66,223,154,125,160,145,164,155, 53, 29,107, 14,133, 54, 36, - 12, 7, 86, 92, 41,193,194, 47, 55,110,240,236,108, 3, 34,125, 58,198, 64,193, - 85, 10, 24, 7, 82,130, 74,175,244,161,247,108,216, 21, 83,106,177, 34,173,229, - 92, 12,227, 64,130, 78, 38, 16,201,100, 18, 44,153,122, 38, 95, 46,187, 64,119, - 46,144,122,157, 77, 24,204, 54, 41,197,176, 49,249, 29,177,241,168,107,185,190, - 40,191,105, 39,180,214,114,114,249, 97, 79,155,185,207,189, 76,233,145,165,191, - 94, 74,193,174,250,173,103, 32, 77, 75,136,217,229,191,213,111,164,133,248, 18, -201,192,182, 52,173,187,167,105,178, 44, 11,122,158,219, 4,153,166, 8,196,191, -165, 51,144, 68, 52,213, 34, 74,181,107, 62,224,182,170,165, 11,196,248, 84, 32, - 71, 91, 44,162, 64, 41, 24,204,239, 7, 55, 14,175,170, 39, 34,229, 73,183,247, - 54,155,110,117, 91,140, 63, 82,141,248,123, 35, 93, 66, 52,214, 38, 23,107, 25, - 91, 98, 26,215,133,249,119, 92, 27,160,205,114, 21, 9,124,233,127, 77, 88, 22, -221,209,119, 84, 10, 68, 81,212,225,177, 65,219,241,251,229,183,237,107,172, 95, - 55,201, 26,221, 85,150, 62, 95,181,136, 82,153,162,217, 20,181, 51,178,211, 88, - 33,215, 19,140, 96, 58, 49, 10,212, 1,244,112, 16, 90, 54,174, 1, 49,141,127, - 91,117, 96, 2, 98,171,198, 27,151, 81,223,163,206,109, 39,194, 34, 79,165,192, -229, 68, 68,133,176,200, 85,137, 29, 21, 73, 68,180, 84,226,134,199, 3,178, 56, -146, 66, 44,123, 94,129, 65,165,176,168,165,159,201,239, 40,197, 20, 51,252,166, -120, 15, 98,121,164,235, 3, 41,228,168, 90, 42,234, 57,101,249,233,220, 73,241, -204,190, 35,198,152,170,157, 53,125,234,109,182,190,151, 85,111, 51, 14,252, 48, -122, 36, 71,181,197, 48, 31, 16,118,124, 75,158,222, 78,159,176,159, 93, 83,176, - 33, 90, 83, 44,208,200, 37,127,116, 80, 54, 64,149, 2,219, 74,185,210,246, 88, -211, 19,154, 44,173,161,237,105,218, 73,178,180,150, 20,138,146,134,100, 13, 75, -136,233,183, 74,202,146,173, 13, 6,157,159,179,183, 26,245,205, 84,126, 8, 21, -201, 84,138,114, 6,174,132,128,152,252,253,170, 0, 58, 79, 10,215,169,204,118, - 46,245, 44,183, 14, 21, 46,236,156, 52, 61, 55, 67,177, 62,237,100, 92, 96, 68, -216,214, 16,136,177, 95, 69,224,123,159, 13, 59, 43,231,122,187,174, 42,118,140, - 63, 91,199, 27, 63,138, 47,185, 88,116, 8, 8,149,122,194,252, 35,211,210,191, - 33, 75,111,254, 12, 99, 7,123, 99,226,227,101, 31, 78,211,182,237, 27,250,199, - 89,102,197, 55, 84,161, 20,110,211, 20,250,112, 84, 45, 7, 88, 86,120,244,110, - 18,122, 54, 72,115, 40, 62,214,249, 84,140,122,230, 73, 58,150,193,214, 44, 79, -153,182, 60, 61, 25,142,114,104,216,155, 48,150,187,189,217,212,134,161,245,219, -219,166,127,118, 78,186, 63,244,243, 29,187,124, 42, 37,215,170, 30,255,132,222, - 66, 11,199,108,251,101,184,145, 9, 25,227, 7, 1,115, 89, 41,164, 4,244, 33, -201,209, 41,199, 20, 2, 34,131,106,228,175, 62, 63, 32,188,118, 66,223, 56, 85, -181,245, 78,245,107, 20,153,126,184,207, 47,102, 20,228, 75, 5,150, 23, 8,100, - 18,129, 68, 36, 80, 64, 65, 32, 97, 96,114, 64,162, 82,137, 40,149, 73, 70,122, -212, 78, 77, 38,150,143,115, 90,202, 48,155,160, 80,133, 62,185, 25, 26, 61, 92, -201,161, 20, 42, 32,166, 44,184, 53, 25, 83, 11, 95, 85, 75, 3,165,150,231,195, -158,144, 15,215,178,156, 32,243,212,151,238,240, 20, 40,176, 64, 99,199, 6,231, -241,160,184, 52,214,217, 23,139, 37,173,118,105,154, 78,120, 64, 64,116, 71,149, - 2, 49, 94, 34, 19, 74, 97,121,134,139,101,236, 32,101,241, 10, 94,236,160,133, -217,174, 95,212,158,139,163,179,119,131,169,154, 98,217, 25, 7,150, 10, 91,130, - 51,235, 18,211,123,189,105, 9, 76,110,181,113, 11,198,122, 58, 22,164, 43,133, - 53,107, 49,181, 61, 59,165,209,163,149, 94,174,111, 15,200,147, 62, 21, 9,228, -225, 68, 68,176,216,144, 44,244,241,112, 42,157,140, 1, 9, 64, 73, 36, 16,112, - 84,184,120,168, 19, 26, 61, 79, 61,190,215, 73,230, 6,203,254,215,209,167, 75, - 65,151, 15,230,252,236, 9, 23,115,157, 72, 86,169, 16, 72,213, 20,228, 0, 61, -161,156,193,126,158,168, 10, 0,138,207,165, 90,169, 37,179,224,145,120, 12,240, - 63, 6,240, 68,168, 82,232, 68,236,168, 26,193, 72,113, 66, 41, 16, 40,234,136, - 34, 10,236,117,150,199, 29,116, 44, 29, 20,199,191, 49,146, 38, 57, 26,172,203, -186, 32, 75,114, 44,174,120, 65, 81,114, 50,166,202,244, 68,104,146, 28, 7,146, - 90,244,113, 84,128, 62,209,209,133, 34,212,146,115, 17, 0, 98, 97,135,245, 99, - 48, 21, 83, 85, 7,144,239,101, 78, 65,230,169, 33, 43,147,185,156,148, 92,190, -118,165, 59, 79,211,173,140, 10, 29,131, 40, 8,161, 30, 99,171,121,131,185,108, -195, 33,140,146,139, 12, 73, 43, 50, 8,254,173, 17, 79,153, 7,180, 77, 24,247, -151,139,166,117, 79,147,101,109,177, 21, 19, 89, 86,219,229,118,218,184, 73,199, - 88,179, 31, 51,141, 46, 63,245, 67,135,128,216,118,191,223, 66, 11,238,132, 78, -230,250,171, 50,252, 14,159, 8,157, 56, 51,194, 96, 50,151,122, 30, 39,242,240, - 67,166, 48, 20,250,110, 62,207, 8,243, 6,130,202,132,194,114, 48, 18, 33,233, - 51, 61,235,188, 76, 30,184,112, 92,108,104, 72, 25, 27, 24, 11, 28, 23, 90, 49, - 23, 16,180, 57,152,184,246,153, 89, 54, 46,177, 8, 3,132, 10, 27, 23, 41, 3, -134,244,174,165, 63,180, 77,235,164, 59,235, 28, 26, 81, 96,166, 79,161,184, 52, -233, 93, 47,197,115, 89,186,247,162, 5,140,132,201, 95, 70,119, 54,108,185,202, -129,113, 65,138, 0,225, 1, 70, 3, 66,198,197,226,123,190,108, 43,166,254,210, - 1, 3, 24,240,182, 22,158,136, 72, 4, 94,234,193,131, 86,124,206,150,153,228, - 57,247,233, 63,191,235, 65,200,188,153, 60,109, 44, 55,123,243,207,229, 68, 6, -109, 15, 69, 25, 56,151, 99,203,205, 44, 62,159,176,229, 70, 45,203,237,161,171, - 31,124, 89,205,126,237,182,242, 55,165, 91,255,145, 41,118,251,226, 90,180,195, -236, 23, 42, 36,247,101, 25,150, 79, 68, 6, 97,171,229,161,255,178,124,175,101, - 95,120, 52, 75,137,226,168,228, 84,106,100, 41,116, 76, 72, 4, 5, 32, 0,160, - 0,179, 96, 0, 12, 14, 15, 79, 70,227, 41,109, 87, 62, 84, 2,139,218, 4, 85, -233,193,232, 20,218, 80, 28,202, 40, 0, 8, 34,192, 8,196, 8, 0, 4, 68, 0, - 96, 2,168, 19,209,140,140, 13,122,155,139,211,222, 22,114,241, 27,142,146,185, -144,171, 22,142,157,184, 76,227, 65,254, 47,236, 25, 87, 73,156, 40,150,242, 96, -229,214,114, 5, 99,210, 66,177,126, 98,237, 51, 16,114,109,206,109, 88, 49,234, -231,167, 1, 45, 78,240,217, 71,169,126,254, 60, 10,176,247,146, 95, 29,228, 58, - 43,248, 67,244, 86,113, 51,241, 14,218, 43,188,199, 17, 30,206,177,115,138,156, -188,121,149,185,119, 29,179, 77,133, 79,234,195,101,132,239, 53,183,148,173,166, - 64, 69,177, 83,210,248,224,234,201,115, 73,254, 1, 55,123,204, 13,119,104,169, - 85,188, 87, 35, 51, 72,105,151, 78,196, 41, 32,159,158,150, 59, 4,158,145,134, - 21, 40,163, 4,144, 58, 65,142,202, 85,175,173,225, 56,137,145,214,172,148,180, -107,250, 15,180, 8, 52,116, 3, 62,121, 22,155,213,185,118, 14,170, 31, 66,231, -146, 44, 29,197,190,158,218, 73, 32,184,242, 73, 89, 14,118,119, 83, 76, 70, 74, -228,230,184, 89,220, 83,180,237, 55,141, 51,194,104, 77,179,148, 75, 52, 38, 27, - 9, 4, 33,240, 85,123,199,196, 98,144,145, 68,211, 88, 40, 40,209,109,130, 72, -211, 10,107,205, 27,101,158, 34,213,101,156,161,141,147,194,127, 40, 98,142, 24, -215,130,106,111,130,157, 65, 37,241, 4,178,199, 8, 40,125, 58, 32,212,244, 97, -253, 18,192, 80,173,108, 89,121,113,198,133,160,164, 66,219, 92,154,122,247,133, -133, 38, 68,137, 80,203, 62, 97, 2,133, 59,234,171,126, 18,211,200, 17, 91,130, - 59,103, 68, 54, 21, 98, 69,133,212, 66, 85,150, 44,189, 25,131, 50,230, 57,163, -212,207,196, 92, 2,228, 35, 23, 8,170,193,122,218,230,162,182, 99, 28, 39,176, -189, 46,177, 18,173, 19,127, 30, 24,205,213,139, 43,130,250,216,121,130,158, 17, -183, 15,190,131,127,114,222,177,250,101,186, 25,189, 41,233, 46, 58,223,218,109, - 14,136, 62, 71, 56,190, 45,229, 76, 49,223, 30,114, 36, 64,233,239, 62,136,221, -254, 98,197, 20,173,173, 69,241,217,210,254, 34, 92, 18, 86,209, 39,176, 46,213, -215,164, 8,201, 4,114, 13,226, 16, 12,187, 65,181, 90, 59, 68, 46,102,208,157, -221, 23, 35,223,153, 14,253,234,113,243, 74, 5, 82,215,183,101, 24,160,226,123, -111,137,249,100, 63, 50,232,160, 83,123, 96,217,242, 34,246,228, 96,215,178,159, -217,148,237, 38,169,184, 7, 39,251,199,226, 18, 55,133,184,177,132,125,179,249, -246, 73, 45,142,200,253,233,209, 27,201,147,171,230, 60,114,176,216,174, 69, 29, - 25, 11,172, 24,216, 88,222, 33,160,186, 10,215, 52, 6, 71, 44,138,235,153,104, - 5,170, 60,173,208,202,231,109,176,222, 80,175, 7, 86, 13,182, 41,148,125,182, - 73, 65,198, 2, 48, 71, 43,241, 5, 93,131,237,172, 8,158,132, 85,210, 40,222, -178, 53,111, 98,118, 6, 70,159, 74,205,134,233, 27,149, 0, 30, 88, 12, 94, 63, -206,171,201,175,184,128,119,137, 80, 26,122, 23,232,250,156,241,229, 79,155,121, -154,109,203, 73, 62, 43,234, 86,248, 66, 72,176, 53,179,208, 16,188, 52, 46,176, - 75,132,237, 79,109,217, 82,154, 95,172, 35,162, 10, 32, 92,212,113,221,244,111, -101, 36,176, 97,235,162, 55, 99,111, 57,192,158,225,189,251, 37,120,108,163,252, - 46, 61, 41,245, 96,124,192,100, 19,127, 57, 26, 1, 42,254,182, 45, 70,139,234, - 71, 9, 63,233,244,122,161,140,144, 77, 32,247, 7, 72,213, 40, 75, 81,168,204, -240, 52,219,243,102,203, 28, 20, 55,170,179, 27, 41,165,101, 31,165,121,123, 26, -123, 78,101, 86, 9,159,102, 77,107,171,225,141,188,178, 31, 19, 84, 72, 5, 75, -239,217, 89, 55,205,168, 81,214, 46,132,213,245,166,107, 64, 75, 90, 7, 18, 35, -114,191, 31, 26, 79,203,194, 30,121, 32, 9,165,131, 96,154, 2, 31,164, 69,193, -223, 50,198, 49,144, 52, 37,195,209, 44,208, 91, 13, 89,146, 78,254,201,191,157, -153,117, 59, 73,251,251, 29, 58, 72, 43,191, 28,250, 39,185, 88, 9,147, 38,113, -224,189,119,188, 65,109,172, 70,218, 83,152, 49,129, 52, 34, 92,190,213,163,198, -200,124,113,188,176,132,189, 15,162,210, 66,199,248, 98,117,162, 59,146,163,105, -185,233, 53,179, 70, 2,179,131, 74, 64,252,248, 1, 72,166,125,226, 46,223,159, - 91,208,229, 11,157,156,143, 67, 8, 76, 33,151, 21,245, 19,184,122,233,223, 11, -172, 39,146,240,126, 70, 70,147,139, 97,201,184,130,129,228,130, 7,192, 32, 39, - 34,197,129,179,136, 39, 41, 69, 35,136, 50, 26,213,248, 28, 26, 61,124,110, 26, - 1, 62, 28,141,104,124,128,166, 58, 74,141,234, 56,116, 84, 60,144, 5,140,146, - 96,230,129,178,203, 73,152, 30,196,106,119,106,124,187, 2,232,132,180,104, 70, - 43,192, 77,173,181, 36, 30,241, 39, 79, 93,242,244,231,200,129, 24, 54,200, 73, - 11, 29,118,115, 19,232,125,229,200,247,100, 83,166,148,224,161,183,214,213,200, - 32,155,101, 26,136,213, 60, 9, 38, 96,249,187, 40,253,138,180,223,178,111, 24, -216,112,209, 48,104,222,146,225,236,124, 30,160,129,176, 49, 14,215, 62, 67, 8, - 90, 52,141,209, 96,106,141,240,155,221, 34, 94,192,255, 49,248,131,157,220,108, -130, 63,110,110,116, 41,144,116,203,111, 62, 10, 4,123,202,189,138,235, 90,210, - 72,102, 42,233,138,176,104,105,101,207,205,135,119, 74,106,220,214,125,112,186, -235,119,121,122,124,156, 43,227,183,239, 74,189,161,144,222, 24,154,151,254,185, -237, 39,222,163, 19,131,254,184, 76,139, 21,181, 4, 45,251, 13,223, 37,158,138, -185,135,111,142, 45, 67, 31, 85,250, 52,100,116,127,112,176, 77,116,175,231,153, -157,176, 35,162, 92,197, 31,108,166,112, 7, 45, 41,103,150,107,153,132,148,207, -160, 78, 46,120,110,136,142,126,120,167, 6,103,127,183,234, 35, 39, 84, 86,140, -112, 70,247, 84,115, 4,153, 64,151,201,245, 89, 79, 31,172,162,182,120, 68, 22, -246,235, 42,250,102, 17, 44,124, 97, 33,142,249,206,124, 19,147, 90,158, 25, 45, -142,239,209,175, 93,151, 97,214, 94,126,106,124,139, 76,107, 71,102, 7,121,100, - 19, 12,190,218,165, 33, 13,252,124,139,219, 60, 55,222,167, 25, 51, 85, 21, 66, -106, 26,196, 92,192,188,160, 11,201,215,104, 79,121, 81, 77,130,252, 35, 58, 61, - 72,168,215,139, 51, 89,248,122,245,197,169,239, 3,231,163, 25, 20, 43,177, 75, -125,107,143,185,228, 17,229,151,123,209,138, 82, 37,112,251, 76, 55, 73,155, 33, - 0,174, 47,127,109,229, 64,234,154,104,153,174,234, 15,150,185, 53, 36, 78,196, -206,206,255,109, 61, 21,141,184,249,128, 49,236, 18, 7,174,133,101,229,212, 68, -200,113,140,241,192,162,181,112,105,101,201,238, 12,239,208,227,211,137, 0, 6, -224,250,150, 20, 75,171,217,110,214,220, 49,209,140,168,190,229,170, 34, 50, 77, -136,160, 78,254, 41,192,243,135,126,237, 56,187,104,230,176,224, 39, 88,254,186, -236,139, 53,184, 15, 69,112,129, 19,152,106, 51, 99, 61,234, 48, 71,250,113, 3, -234,106,242,113, 34,199,159, 39, 36, 30,188,190, 93,145,193,155,163, 64,166,241, - 58,198,184, 38,153, 97, 45, 59,215, 75,243, 18,113, 60,123, 13, 25, 79,124,228, -194,183,200,228,158,140, 82,220,187, 68,178, 77, 80,175, 43, 42,110,208,210,120, -162,112,130, 13,230,238, 6,125,254, 91,159,101, 9,144, 96, 84, 4,114,225,106, - 95,115,189,163,131,251, 48,161, 16, 0, 98,233,140,104,104, 53,206, 20,148, 78, - 21,179, 53, 49, 73,112, 77,209, 17,255, 50, 67, 54,100, 41,135,101,232,179, 0, - 25,173, 46,167,200,234, 18,166, 75,246,120, 58,202, 8, 76, 29, 89,166,140,101, -239, 26, 98,135, 33, 91, 9,144, 62,201, 78,202,120,154, 49,222, 78, 68, 79,188, - 85,124, 58,173, 12,227,200, 6,110, 67,227,184,151,129, 40,134,203, 6, 10, 27, - 52, 77,121, 84, 13,249,108,139,221, 91,126,160, 55,149, 73,170, 76, 87, 32,119, - 66,213,186,218,156,101,169, 64, 96, 49, 15,220, 98,191, 67, 94,249,146,145, 61, - 4, 39,253,235, 59, 64, 50, 20, 67,249, 32,164, 11, 8,162, 3,109,135,176,123, -148,193,192,251,131,190,131, 44,216,120,132, 74, 33,164,184, 51,138,224, 67,237, - 78,131, 24,150,244,107,217,248, 91, 23, 96, 14,153, 20,233,215, 17,129, 3,133, - 43, 81,252,177,120,197, 41,141, 9,140, 37,189,144, 77,176,184,166,165,157, 41, -199,207,107, 40, 99,135,103,235, 64,227,169,120,108,104,168, 6, 39,224,189,168, - 93,163,233, 2,162,219,108, 35, 41, 49, 79, 70, 7,154,210,185,179,213,102, 3, -193, 55, 83, 87,242, 64, 21, 88,214,232, 58, 50, 55, 38,108,182,186, 88, 25,140, -119,250,155,179,194,155,214,255,178,160, 54,126,125,175, 99, 44,107,245, 30,159, -111,176, 48,143,228, 61,130,130, 24, 89,245,196, 96, 59, 52,144,211,111,213,176, - 30, 89, 75, 59,179, 28, 23,106, 74, 9, 65, 60, 31,184,142, 80,208,217,146,162, - 55, 49,212, 58,144, 90, 4, 17,198,175,254, 54, 21, 44,254, 79,148, 77,210,179, - 60, 70,220, 0,151,225,211,115,205,185,127, 54, 37,243,109, 7,150,124,159, 91, - 4, 67, 67, 27,193,179,252,244,100, 99,108, 79,221,126,139,102, 52,241, 94,137, -158, 5,119, 80,189, 2, 36,212, 71,165,207,107, 64,110,236,163,241, 9, 85,246, - 92,214,211,241,167, 3, 23,151, 9, 29, 33,248, 74,123,151, 61,245,197, 10,140, -216, 81, 4, 70,108, 52,107,177,148, 17,210, 69,182,111,134,167,130, 94,210,177, -181,220, 26, 12, 4,253,232, 26,120,198, 93, 14, 90, 8,174, 68,190, 81,159,160, - 73,140, 8, 8,109,184,238,189, 62,233, 90,237, 85,238,210, 43,253,228,255, 72, - 10, 11, 30, 32,125, 31,155,101, 54,220, 85,210, 37, 36,138,233,196,152, 63,149, -237,140,133,189, 58,232,159, 90, 66,165,118,168,133,194, 16,146,169,242, 45, 51, -111, 86, 10, 18, 56, 85,204, 56,132,168,145, 84, 83, 94,163, 16,167, 82,128,147, -242, 63,224,216,160, 94,204, 76,224, 48, 67,114, 70, 24,237, 41,163, 82,183, 36, - 62,138, 55,215, 82,174,209,173, 67,173,120,106,161, 32,138,145,182,107,171, 44, -214, 49,170,179,213, 65, 33,121, 60, 8, 76, 67,171, 55,127,123,206, 22, 10,126, - 31, 96,210,215,192,204, 31,137,129,184,179, 52, 20, 10,207, 98,152,172,149,145, -139,199,203, 22, 69,175,205,100, 12,192,118, 35,234,149,135,176,118, 71,242,125, -174,250, 58,215, 99,112,144,219, 51, 23, 74,114, 45, 18, 74,159,151,186,132, 49, -102, 23, 5,147, 39,132, 10,234,216,233, 80,120,152,184, 32,110,166, 56, 44,110, -165, 13,244, 8,164,159, 78, 55,147,200, 48, 98,135,153,237,145, 24,183, 52,126, -146, 0,222,111, 25,220, 99,207, 42, 69,236, 96, 2,103,146, 83, 31, 86,104, 70, -105,152,240,115,243,212,139, 57, 27, 93,155,233,197,213,242,158,204,178, 45, 26, -179, 26,162,155, 40,202, 54,227, 56,180,130, 85, 29,202,221,151,122, 20,193, 19, -219,156,160,121,135, 14,127, 0,163, 65, 77,140,135, 79, 13,201,218, 16,167,183, - 56,156,244,117,160,114, 46, 15, 17,254, 66, 53,201,144,205, 97, 11,238,107,134, -178, 16,195,125, 91, 39, 58, 61,110,203,105, 56,125,231, 86,242,126,171,234,110, - 1, 56,252,170, 69,115,102, 39, 23,253,187,102, 85,155,141, 85,161,137,117,230, - 60,186,186,210,238,110,189, 24, 5,254, 35, 7,195,181,246,203, 98, 8, 1,149, -202,231,219,106, 70, 37,155,103,169,227, 68,100,141,241, 28, 6, 58,209,140,177, -134,148,149,230, 80,112, 59, 1,207, 44,186, 20,108,241, 50, 86, 1, 45,190,210, -120, 73, 84, 67,219,188,160,203, 20,137, 19,215,145, 84,116,249,229, 37, 85, 57, - 39, 46,159, 27, 36, 36, 12, 51,189,188,237,111,107, 94, 65, 13, 95,106,250, 21, - 61, 2,104,115, 52, 19,255, 28, 44,107, 44, 54,167,157,234, 53,246,146,228,251, -251, 90,167,116,183,164, 35, 8,118, 64,119,125, 39,218,111,225,227,219,246,197, -187,240,249, 41, 97,233, 4,195,145, 93,152,147,125, 27,178,218, 3,163,146,131, - 82,118,183,222, 58,104, 90,152,193,244,171, 64, 57,152,126,136, 12,219, 3,175, - 19,248, 28,196,132,165, 91, 37,212,190,154, 17,217,102,201,176,209, 19, 36,215, -129, 11,131, 3,183,109,171,163,109, 80,233, 23, 10, 84,107, 18, 30,119,142, 67, -193, 99,177,148, 88,160,119, 54,116, 92,145,191,154, 42,187,215, 8,100,183, 82, -238,174,212,188, 13,112,205,121,193,132, 24, 82,211, 63,181,110, 22, 75,252, 16, -223, 60, 53,215, 94,214,252,124, 53, 62, 88,208,117,142, 1,173,197,155, 46, 2, -163, 49,164, 55, 68,192, 41,237, 18,118,140,221,176, 85,195, 11, 39, 18,232,160, - 87, 32, 92, 85, 17, 55, 76,230,212,145, 80,208, 1,106, 9,171, 83,181, 34, 73, -154,131, 21,185, 34,237, 80, 53, 97,204, 3,125, 74, 85,115,229,227,160, 39,214, -238,211,144,234,245,243, 60,101,214,237,170, 19,233,210,151,195,253,187,127,152, - 90,145, 2, 60,232, 58, 46,193, 49, 60,120,238, 8, 16,144, 86, 4,109,219,211, - 77,167, 33,241,211, 76,114, 44, 80, 26, 48, 78,124, 18, 40,113,201,243,148, 11, -134,212, 62, 11,183,207, 91,240,241,208,162,131,149, 3,202,236, 78,175,180,182, -191,204,119, 45, 92,150, 53, 6,136,221, 95,174,136,171, 43, 94,195,245, 98,227, - 82,187,124, 14, 55,229, 70, 68,170, 20,105,117,111,242, 72, 5, 38,203, 17,215, - 84,133, 29,252,184,121, 64, 69, 94,225,162,191, 74,183,194, 82, 89, 0,114,187, - 39,182,100,111, 53, 13,107, 67,136, 34, 65,142,205,203,150,197,202,230,174,155, -148,166, 67, 87, 14, 44, 91,176,237,103,128,161,234, 55,160, 28,135,215, 78,172, - 85,248,113,132,226,131, 48,117,248,132, 15,200,196, 24,135,196,145,134,253, 81, -230, 77, 51,236, 99,192,172,228, 68, 52,220, 55,121,202, 67,119,129,224, 14, 49, - 65,126,247,114,110,143, 97,147,147,108, 42, 33,252, 42,113, 3,137, 69,105,240, - 90,181,117,165, 41, 67,190,235, 22, 52,159,243, 28, 14, 86, 37,172,134,160,147, - 4,105, 37,103,228,138,174,117, 57,211,187, 59,255,216, 77,177,221,172,216,100, -235, 24, 37, 38,150,133,246, 97,135, 53,172,138,255,194,221, 96,126,169,130, 22, -122,157,171, 41,143,254, 71,123, 44, 67,143,114,159,193,138,249, 14,148,216, 88, -161,217,117, 11,163, 19,148,127, 16, 84,137, 10,240, 20,116, 43, 46, 38,196,247, -179, 38, 27,132,147,255, 42,249, 80, 84,196,120, 81,103,162, 96, 22, 88,139,212, - 58, 28, 38, 54, 26,135,219,113,110,228,234,100, 22,207,134, 1,141,138, 27,154, -216, 7,151,185,152,144,192,192,149,160, 5,248, 31, 37,108,166,174, 67,110,115, -211,129,243, 52,240, 59, 1,248, 0,151, 82, 26, 70,138,193, 1,145,223,220, 80, - 16,119, 48, 52,173,151,189,172, 25, 19,176, 2,201, 57, 29, 17, 30, 92,228, 4, - 92,205,146, 5,102,236, 63,213,152,100, 49,128, 14, 58, 47, 92,252,161, 12,190, - 29,195,147, 28,206,103,233, 89,190,221,169, 20,242,179,107, 17, 44,238,168, 40, -168, 16, 82,193, 51,166,178, 95, 23,209,251,110,231, 52,244,177, 69,150, 66, 85, -235, 92, 5,121, 2,188,147,151, 42, 13, 9, 86,211,175,215,207, 30, 79,201, 10, -185,101,242,170, 9,154, 81, 92, 0,191, 69,113,244,122, 51,239, 6,136,107,214, -210,213,149, 99, 2,215,226,181, 27,173,204,225,131,171, 36,126, 16, 87,188, 77, -200,126, 11,175,211,169,101,110, 1, 41, 5,153, 6,229, 75,150,160, 26,194,212, -219,117,252,123, 2, 56,247,163,134,128,208,172,218, 2, 79,121, 27, 35,211,210, - 86, 7, 51,175,150,231, 2, 33,103,114,130,109, 66,229,142, 43,209, 20, 75, 99, - 70, 16, 67,254, 42, 54,116,224, 17,186, 81,130,236, 74,171,162, 75,153,108, 71, - 82,203,215, 71, 73, 98, 80,247,151,168, 4, 21,249, 31, 42,205, 93, 6,177,201, -117, 14,241,108, 54, 43,211,210, 49,136,134, 98, 75,199,116,128, 44, 33,200, 93, -171,189,195, 99, 5,154,200,199,201,235, 14,114,199, 63,198, 15, 21, 48,180, 28, -117,114,251, 24, 61,142,144,141, 96,190,155, 27, 48,241,240,177, 41,213,244,175, -182,121, 98, 56,232,100,241,115,135, 42, 55,199,197, 53,180, 87,209, 7,125,147, -109, 5,242,227,242,194, 38,158,179,237,228, 39, 24,223, 4,165,255, 44, 60, 3, -136, 65,182,199, 74,169,161, 75,178,190,227,143,237,129,105, 4,125,168, 18, 26, -126, 32, 1, 55, 89,156,218, 48,163, 3,182,142, 68, 8, 97,200, 57, 61, 4,109, -130,200,173,182,197, 38,145, 94,240,170,154,224, 77, 33, 0, 89,154, 17, 68,174, -165,165,201, 39,209,144,102, 29, 62,170, 37,136, 48, 77, 35,132, 21,250,151, 37, -120,225,178,190,210,171,110,186,245,144, 41,253,178,186,144,160,250,158, 49, 9, -201,137, 73,192,141, 7, 10,118,200,140, 41, 72,157,187, 92,140,233,117, 62,246, - 36,190,108,236, 80, 56, 3,160, 37,125, 13, 69,204, 70, 98, 15, 8,148,239,217, -220,201,195,245,102, 71, 99,240,173,129, 22, 64,120,115,187,196,103, 72,209, 60, -255,129,128,174, 91,202, 88,102, 51, 87,215, 29,133, 42,231, 36, 18, 60, 14,101, -163, 39, 59, 43, 17,250, 68, 4,121, 90, 28, 4,174, 54, 9,148,118,206,159, 79, -196, 79,175,146, 32,213, 28, 24,145, 34,201, 25, 56, 79,130,203,142,255, 49,159, -219,179, 9, 41,177,157, 44, 12,153,248, 34,176, 45, 82, 72, 23,107, 62,109,198, - 82, 79, 97,230, 54,118,231,165,186,116, 21,156,228, 5,129,249, 68,247,116, 27, - 93,112, 10,165,157,101,163,157, 20, 49,217, 64,215, 71, 73,220, 98, 19, 4, 3, -146, 73,249,237,201,188, 90,170,115,140,120, 22, 5,188, 92,168, 66, 64, 19, 17, - 39, 29, 79,250,141, 93,224, 29,164, 28, 66,239,182,121,168,222,171,176,142,139, -123, 34,216,109,203,200,113, 59,149, 39,164, 74,153,168,159,209,214, 68, 12, 33, -119,229,244,207, 4,166,241,174, 73, 9, 12,223,120, 92,120, 2,220,174, 59, 55, -156, 76, 66, 94, 5, 99,128, 23, 29,198,208,164, 46,173,147, 75, 27,148,146,215, -193, 27, 55,117, 3,191,140, 78, 65, 33,240,137,209, 7, 91, 46,166,155, 36,170, -233, 80, 36,116, 87, 46,174, 78,200,172, 4,240,128,200,115,128, 5,100, 57, 41, - 58, 96, 74, 55,235, 38,163,187,175, 83,124, 92,170,199, 33, 75, 51,231,124, 51, - 92,183,190,220,223, 3,203,122,101, 82, 50,239, 40,252,178, 78, 77,215,143,153, - 5,136,208,139,194,135,145,107, 21,222,209,197,205, 4,192,231, 33,243,205, 4, -224,195, 33,147,205, 4,224,163, 33,147, 61,144,152, 63,225,163, 2, 6,172,245, -164,170,210,219, 92, 16,244, 0,170,197,156,117,103,154,232,127, 84, 75,128, 60, -238,237,170, 90,130,155, 40, 36, 0, 61,202, 92,242, 12,162, 42,227,173,254,111, -200,150, 3, 33, 97,138,188, 21,122, 91,209, 30,223,251,252, 10,248,229,217,176, -148,102,240,144, 61,245, 85, 70,215, 91, 10, 88,195, 63,114,204,243, 49,155,174, -127,160, 50,131,174,195,190,192, 4,128, 5, 19, 37, 5,112,140,216,144,135, 19, - 10,189,226,199, 0, 92,232,252, 19,127,240,201, 23, 52,192, 0,238,248,236,103, -111,204, 40,186,121,245, 70,224,178, 16,216, 39, 26,223, 5,102,165,212, 88,166, -230,228,159,187,220, 30, 32,249, 10, 25,240,171,246, 14, 63, 85, 77,156,211, 34, -149,135,113, 62,175,164,185,205, 95,202,235,134, 4,122,106, 48,234,203,152,196, - 28,227, 55, 50, 26,174,253,149, 76,110,245, 35, 14,104,179,246,212, 68, 10,178, - 11,202, 45,239,202, 6, 85,215,167,230,242,171, 1,220,220,174,131,185,213,115, -187,195, 57, 14, 61, 8,175,197, 24,142,123,241,106, 57,147, 29, 29,151,213, 1, - 85,119,124, 17,163, 87,135, 14, 27, 51, 96, 8,112,121,222,102,126,157,132,167, - 85,229, 62,122,120, 73, 79,234,201,228, 1, 49,142,230, 65, 60,213,137,246, 58, -221,139,202, 12, 83, 97,246, 9,137,218,118,230,203,220,157, 98,227,225,205,174, -119,230,103, 2, 73, 48,142, 83,183,121,226,147,231, 35, 81, 47, 15, 68,178,126, -208,148,206,134,160, 37, 21,209,172,246,136, 70,113,117,116, 28,137,216,182,246, - 55, 38,134, 29, 98, 0, 6,183,199, 33,139,236,134,105,122,171,138,247, 23, 47, -113,117,149,117, 6,182, 59,167,150, 51, 1,222,226, 83,132, 98, 16,111,241, 5, - 39,230,102,101,110,253, 99,105, 95,218, 45, 23, 21, 85, 15,165,168, 24,218, 65, -172,141,240,194, 82,223,229, 39, 88,227, 22,227, 70, 2, 35,166, 28,249, 64,216, -162, 85, 82,123,126,220,211, 41,166, 10, 91, 62,174,174,101, 16, 66,178,238,238, - 74, 95,215,141, 29, 73, 38,197,213,105,120,183,211,193, 15,242,134,159, 46, 99, -225,251, 56,141,249, 67,140,214,133, 30,156,139,114, 69, 1, 20, 60, 79,204,224, - 76,112,113,193, 62,251,172, 64, 48,205,197,231,196,255,198, 60,245, 73, 64,204, - 42,119,228, 92, 11, 46,204,224,182,172, 57,152,218,156,245, 26, 60,190,189, 53, -120,119, 99, 29,102,248,176,220, 40, 36,130, 68, 28,133,227, 33, 46, 46,108,179, - 98,188, 22,199,136, 15, 30,242,107,252,130,142, 78, 58, 99,166, 35, 85,101,239, - 64,111,244,133,107, 38,144, 0,130, 82,228, 68,128,234, 2, 15,117, 94,147,146, - 95, 46, 82, 52,196, 60, 74,247, 96,217,239, 76,201,228,143,204,160,127,211,243, - 79,209,108,182, 80,247, 3,140,158,144,116, 46,203,126, 17,184,162, 48,246, 53, - 97,143, 80,236, 56, 77,194,126, 61,137,153,171, 53,102,196, 27,215, 83, 41, 88, -210, 36, 0,254, 60, 11,124,169, 83,120, 1,113,225, 82,114, 42,154, 55,207,155, - 41,232,110, 82, 88,112,176,204, 60,118,236,185, 42,180,132, 81,142, 45,156,216, - 32,151,120, 23,234,126,176, 52, 28, 38,244, 11,168,118,190,103, 36, 82,159,216, -178,150, 2,130, 27,127, 11,222,160,193,224, 44,159,167, 70, 44,255,166,221,218, -155,135,247,234, 53, 61,220,220, 83,244, 46, 52,216,178, 61,232, 50,145, 33, 18, - 43, 16,126,114, 27,186, 0,188, 34, 89, 39, 18,135, 60, 90,221,242, 20,166,129, -126, 23,157,191, 3,172,235, 66,189, 45,234,122,150,211, 50,104,224,132, 14,136, - 90,112, 11, 44, 86, 69, 44, 20,199, 82,197, 68,103,148,206,111,109, 51, 33,112, -134, 23, 28,219,104,170,136,239,125, 12, 73,220, 97,239, 90, 51,207,200, 28,230, -253, 4, 25,250, 19,251,238,142,141,193,216,137,251, 57,234,121, 48, 48, 14,251, -237, 26, 36,253,166,228,136,255, 69,148, 51,136,109,192,125,102, 29,105, 91,116, -234,194,242,251,162,120,162,100,172, 60,192, 50, 31, 74,182, 90,108, 35, 88, 44, -160, 49, 90, 17,148, 53, 27,137, 50, 90,147, 64,138, 56,206,229,148, 28,140, 14, -127,222, 8, 39,178,128, 22, 13,210,134,142,134,183,111,138,254,169, 36, 43, 44, - 56, 75,176,161,141,174,145,227,223,102, 17, 54,118, 44,119,158, 11, 54, 96,233, -117, 4,160,195,102,213,180, 59, 8, 79,248,151, 81,123,140,201,200, 13, 64, 48, - 4,208,238,142,119,135, 90, 96, 54, 0,166, 88, 36, 2,228, 88,131, 72,227,220, -224, 14,130,253, 83,135,216, 36, 32, 11,182, 49,116,181, 13, 84, 67, 72, 53, 24, - 50,245,235,138,244,255, 15,128, 13,116, 9, 34, 72, 1, 38, 38,131, 21,207,246, - 87,162, 27,144,159,227,252,225, 88,152,176,243, 60,255, 86,145,107,157, 4, 69, -110, 30, 69,244, 68,178, 5,161,199,102,161,161,221, 41,172,114, 15,117, 51,181, - 87, 77, 64,185, 82,222, 17, 60,171,211, 58,156,174, 63,147,225,225,169,225, 91, -158,164,235,191,245,254,210, 76,128,160,211, 88,161, 56,241,225, 32, 40,205, 45, -190, 54, 22, 63, 81,103, 33, 27, 97,141, 40, 24,133, 54, 46,231, 63,174, 58, 1, -171,179,134, 73,190,228,221,116, 36,114, 0,245,166, 31,241,166,232,211,164,148, -211,146, 9, 95,135,188,175, 94,189,171,204, 73,143, 13, 86, 10,201,171, 6,134, - 76,120, 78,195, 9,230,183, 22,209, 52, 97,237, 52,227,122, 6,212, 58,226, 56, -243, 97,140, 25, 58, 5,243,124,182, 68, 72, 96, 26, 16, 39, 46,130, 62,167, 75, -128,172,181,107, 65, 66, 48,161,209,115, 60,154,252, 21, 15,177,226,121, 46, 96, -120,213,156, 16, 27, 58,234,115,206,188,221,162, 98, 57,153,122, 0,198, 91, 73, - 90, 13, 97,176, 57, 45,185,219, 44,224, 36,132, 35, 2,205, 67, 32, 32, 49, 91, -205, 52, 41,245,217, 54, 88,209,119, 12,223,161, 66, 24, 89,123,138,188, 67,108, -251,158, 3, 17, 15,119,253,156,192,244,215,108,197, 96,151,200,132,127,179, 7, -205, 40, 82,135, 74,100, 51, 86,229, 41,192, 95, 46,254,130,255, 8,211,147,119, - 27,105, 76,146,156, 29,217,252, 98, 89, 39, 62,110, 91,163, 45,242, 33, 92, 16, -118,114, 1, 96, 73,188, 26, 18,159, 82,173, 4, 7,141,116,240,141,182,187, 14, - 99, 98, 48,248, 29, 87,124,227, 8,155,103,234,179,150,170,243,108,125,152,199, -231,232, 82, 64,124,145,171,124,115,242,113,111,195,199,117,118, 23, 20,233,167, -111,127, 18,215,146, 50,243,117,169,132,226,181,174,128, 29,205, 34, 65, 30,193, -219, 47, 12, 54,202,174,216, 91,213, 32, 63,187,156,237, 56, 67,124,170, 12,203, -155,112,230,162, 5, 71,132, 56,242,135,164,156,253, 5,124,189, 9,118, 15,122, -142,107, 48,147, 27, 60,213,249, 8,240,252, 6,208, 68,167,208, 21, 16, 45, 93, -239, 19, 26,136, 8,129,155,230,131,159,153,214,199, 24, 17,238, 56, 42,229,233, -226,224, 10, 88, 75,189, 8, 12, +// ../Source/Template/GB_subassign_06d_template.c: +uint8_t GB_JITpackage_204 [2482] = { + 40,181, 47,253, 96, 36, 80, 69, 77, 0, 26, 74,220, 13, 40,176, 86,117, 14, 84, +114, 79, 19,104,134,208,160,171, 26,251, 89, 97, 43, 12,243,105,120,183, 22,226, + 76, 23, 78,137,212,133,129,227, 7,253, 7,189,159, 18, 92,215, 0,214, 0,201, + 0,191,231,133,156,148, 30,201,201,176,136, 9,194,166, 5, 82, 82,174,161,137, +235,180, 50, 11,227,147,129,166, 5, 72,114,178, 22,222,140, 41,103,115, 93,124, + 46,139,153, 97, 21, 92, 13,192, 57, 4,109,125,119,249,185, 69,159, 78,166, 41, + 5,243, 42, 79,133,133,108,235,163,200, 86,173,122,120,142,122, 74,234,158,142, +103, 90,124, 46,141,255, 39,211,199,219,214,128,105,179,145,243,186, 62, 18,231, +122,179, 97,192,100, 64,128, 96,233, 78,163,160,252,229,118,229,106,182,189, 97, +150,198,182,181,186,177,108,104, 60, 4, 91,143,220,198,253, 57,206,157,168,126, +238,121,242, 49, 1,193, 0,193,194,112, 96,128,240, 74,163, 30,113, 29,161,154, + 19,200,151,186,252,145,106,246, 8,146,155,136, 14,164,119,226,210,248, 82, 16, +212,185,134,160, 73, 62,243, 7,233, 96,253,210,153,122, 32,169,243,220, 22, 12, +166, 21, 85,140,105, 40,196, 51, 98,226, 5, 5,147,165,160, 32,119,224, 19, 23, +152,230,226,242, 88,116,166,230,218, 68,112, 48, 36,117,208,133, 69,112, 58, 29, + 0,242,155,149,242,216,240, 40,169, 91,124, 58, 26,115, 3,251,100,146, 51, 47, + 11,219,128, 82, 6,222, 64,253,242,131, 67,188, 58,120,134, 42,161,164,249, 24, +169, 47,255,179,211, 79,184,219,162, 75,189,211,227,173,219,254,219,215,229, 38, + 97, 6,142,144,160,245,136,173,252,153,143,238, 71,242,246, 66,225,183,225,141, +246,237, 34, 30, 97,154,237,148, 55,177,148,186,102,115, 81, 92, 76,215, 71,110, +172, 75, 51,178, 97,167,125,179,120, 52, 20,233,127,242,253,139,215,158, 71, 47, +245, 84, 22, 10, 10,245,236,115,129, 64,146,171,155,197, 60, 88, 26, 44,229, 60, + 31, 44,159,148,152, 87, 22,245,140,247,125,161,103,108, 63,173,177,215,127,172, + 74,228,171,129, 95, 30,142,108, 82, 20,245, 12, 36,173,170, 77, 42,166, 81,130, +177, 68, 82, 27,157,111,179,193,144, 8, 22, 60, 72,250, 78, 73, 34,122, 65,155, +109,227,190,224,113, 87,207,163,191,120,244,134, 24,139,253,108,135,110,169,118, +249,190,221,145, 60, 86, 90,238, 71, 11,206,242,123,171, 35,117,251,229,210, 55, +204,161,133,193, 54, 26, 60,198,249,229, 25, 82,233,228,240,116, 38, 16, 3,143, + 74,251,228,185,239, 29,122,116,228,211,168, 91,150,101, 89, 37, 85, 9,192, 5, + 4,222, 84, 83, 7,109,100, 6, 65,149, 97, 21,241,126, 89,163,220, 99,219, 22, + 81,247,218,222, 30,189,180,117,174, 37,239,214,173, 20,250,214, 56,180, 95, 99, +170, 29,215, 46,251, 9, 42,210,253,184,127,182,116,179,237,183, 39,162, 47,121, + 61, 82,179,214, 28,215,191,223,111,109,235, 98, 2,155,150,102, 89, 27, 15, 7, +203,141,111,187, 67,199,180,139, 29,222, 72,194,182,226,219,246, 70,104, 40,212, + 80,107,215,129,160,124,214,234,205,184, 3, 83, 24,240,204,100,107,135, 68,159, +151,146, 34,155,163,190,117,232, 25,135,164,148,171, 3,251,116, 50,235,202,144, + 82, 86, 75, 74, 25, 43, 22,134,230,250, 76, 13, 7, 3, 77,201,153,144, 31,143, +149, 25,120,200, 51,150, 5, 30, 84, 98, 5,122, 98,140,210, 51,179,107,226,177, +147,212,229,164, 8,233,145,119,121,244, 88,133, 56, 96, 62,170, 46,241, 66, 97, + 14,226,145,201,244,179,199,253,109,249, 15,231,170,195, 65,212, 42,137,218,210, +118,132, 15,128, 21,234, 97,254,140,156, 25,223,202,141,168,117, 76, 5, 41,174, + 23,185,157,152, 11, 77,185,193,245,241,126,143,248, 54, 88,234, 14,158,169,132, + 50,167,126,209,193, 50, 44,251, 72,207,140, 49,223, 41, 29, 46, 21,202,126,247, + 91,205,143,211,193, 99, 40, 55, 38, 53,105, 74,145,143,224, 99,137, 5, 2,254, +164, 82,113, 56,120,204, 13,168,154,105,198, 84,123,225,214,157,134,169, 73, 10, + 3,130,148,168,162,172, 20,161,153, 17, 25, 73,146, 82,161, 49,114, 24, 4, 34, + 81, 26, 72,121,180,119, 30,146,160, 40, 15, 66, 24, 66, 65, 40, 66, 12, 33,196, + 16, 66,140,192,145, 9, 39,144, 64, 68, 68, 36,184, 77, 58,133,129, 65,123,218, + 2,106,135, 86,180,202, 86,174,243,116,154,144,217, 44,188, 87, 85,161,186,135, + 58,179,255,247, 11,241,248,105,239, 60, 34,235,172,136,130, 31,212, 45, 38, 87, + 55,144,158,208, 22,201,171,167, 16, 7,102,234,239, 50, 9,250, 3, 74,104,132, + 84,162,212, 90,253,244,207, 97, 8,208, 66, 15,144,151, 21, 84, 56, 37,124,163, +227,171,105,165, 49,106, 33, 66, 67, 89, 63, 83,166, 56, 45,238,173,130, 30,220, + 94,133,104,140, 61,104,186,152,171,189, 51, 24, 18,231,180,219, 49,101,173,188, +231,241, 35, 22,254,212,149,221,188,209,125,143, 45,129,153,177, 32,185, 20,200, +209, 6, 48,219, 93,123, 53,126, 3, 31,205,249,162,236,238,118, 44,156, 60, 55, +123,179, 61,142, 38, 49, 80, 23, 53,194,221, 78, 84,215,105,124,226,245,253, 46, + 65,190,248,145, 39,137, 46, 67, 99,142,235,254,234,235,107,125,177, 99,241,237, + 86,243,147,134,228,182,161,210, 18,134,143,253,112,212, 0, 27,189, 0, 30,251, +223, 69,253, 35,214,184,178, 6, 88, 67, 0,151,109, 10, 73,128, 87, 29, 0, 64, +157,255,199,225,207, 23,232,135, 11,126,147,194,190, 38,160, 47,143,157,128,192, +255, 1,247,195,192, 0, 75, 65, 0, 23,245,191, 9,180, 9,246, 35, 63, 30, 13, +176,140, 89,115,187, 31, 87,188,241,252,187,114,108,206,199,242,232,114,108,188, + 40,248, 45,241,157,224,177,249,163, 5,223,248, 19, 20,191, 39,170,122, 44,253, +118,108,210, 26, 11, 3,164,217, 98,254, 76,210,238,175,183,170,106, 33, 21, 30, + 6, 9,106,177, 4, 15,114, 98, 18, 14, 44,165,141, 78, 15,119,187,248,101, 98, + 61,138,183,196, 11,158,222, 54,134,139,227,148, 44, 19,107,158,105,183, 23,173, + 78, 33, 83,220,192, 74,189,140,128,140,147, 23,255,247, 66,172, 81,113, 93,103, + 53,247,224, 7, 80, 63, 5,199,135, 28, 42,150,129,251, 62, 44,101,114,117, 18, +182,131, 20, 49,133, 53,152,112,163, 63,109,169,236, 85, 2, 12,106,179,141, 97, + 29,131, 68,183, 71,253,174, 56,148, 56, 35, 15,147, 24,155,133,227,139,247,254, + 7,174, 70,144, 5,169, 16, 57, 50,229, 32, 92,161, 72,149,121,167,102, 98, 15, +115, 95, 36,212,209, 53, 35,195,126,100,171, 79,250,215,199,235, 3,112,173,147, +104,212,151, 70, 94,250,190,111,137,200, 29,194,234, 62, 35,199, 77, 96,172, 28, +236, 54,167, 13, 41, 93, 81, 89,146, 96,254, 39, 17,184, 39,177, 2, 50, 47,133, + 39,218, 24,194, 28,135,212,220,188,146,120, 71, 25,130, 92, 92,104, 23,131,186, +163,225,216, 19,221, 34, 51,166,188,235, 10,223,145,155,215, 32,186, 12, 99, 81, +254,185,152, 46,193,137, 10,198,171, 37,144, 89,238,237, 97,174,228, 21, 9,160, +179, 28,124, 62,182,148,238,183, 39,148, 3,125, 44,102,103, 44,128,131,157, 55, +170,141,210,190,221, 23,139,214,230,200,103, 79,253, 23,121,129,202,104, 93, 67, +115, 18,206,165, 52, 94,147, 11,207,242,207,153, 61,101,230, 89,231,200, 65, 70, +142,203,136, 80,164,198, 92,111, 2, 91,182,108,199,112, 40, 27,254, 0,207,123, + 83,150,156,238,198,229, 83, 89, 48,214,207, 14,186, 41,247, 34,165, 65, 67,202, +178, 51,121,243,197, 22,246, 89,246, 55,216, 11,196,141,126, 97,126, 82, 14,188, + 31, 20,175, 43,246,194, 49, 18,147,120, 23,180, 95,140, 19,186, 24,154,230,177, +164,116, 93,137, 76,139,201,244, 94,254,255,152,253,204,221,104, 60,253,161,113, +157,252,188,219,116, 52, 73,203, 45, 99,206,241,190, 16,248,109, 14,112,209,223, + 14,216,245,197, 99,133, 90, 72,111, 67,199,160,180,191,249,246, 66, 31, 74, 58, +207,199,176,210, 77, 88,212,148,148,116, 24,234, 17, 0,227,173, 2, 83,231, 80, + 0,139,134,140,250, 56, 25,233,116, 20, 37,198,232, 15, 50, 92, 26,176, 15,139, +169,209,233, 51,157,234,221, 68,158, 40,112,148, 75,152,226,209,190,145,201,148, +188,106,116,239,247,116, 3,147, 47,122, 47,200, 90,118,189,163,173,220, 50,128, +193,179,178, 11,140,184, 22, 83, 51, 2, 58,216,166, 19,238,211, 21,252, 90,209, + 82, 10, 0, 74,224,120,192, 0,170,215,231, 2, 95,200,201, 50, 87,185, 58, 49, + 5,233,246, 98, 21,233,181, 64,255,135,164,234,205, 15, 65, 90,134,247, 95,168, +182,161, 92,177,200,130,195, 11,141,124,117,229, 10,101,158,246,104, 85,181, 30, +165,243,218,239, 17, 64,121, 49,156,155,225,130, 97,113,231,157, 8, 64,169, 49, + 31,207, 8, 83,172, 44,212, 58,135, 57,234,230,197,158,146,107,238,104, 99, 49, +142, 41, 80,152,245,181, 4,182,104, 76, 58,101,219,175,128, 35, 99, 98,117,161, + 40,172,205,175, 7,149,204,169, 96,151, 72,104,246,220,248, 34,134,208,159,236, + 10, 91,127,184, 66,116,145,218,124,144,147, 46,130,169,139, 35,231,167,202,242, + 60, 3, 0, 11,183,127, 44, 25, 82,248,223, 50,126,155, 0,227,141, 73,180,129, + 47, 58,165,250,148,151, 72,220,140, 9, 19, 86, 64,219, 77,193, 48, 7, 82,115, + 27, 12, 27,143,110,149,213, 98,192, 17,157, 87,223,112,178,196, 51, 63,194,193, +170, 40,190, 68,113,140, 57,229,205,222,159,157, 0,180, 32,243,188, 64, 73, 62, + 38,168, 53, 81,104,148, 34, 16, 32, 49, 60,138, 60,206,255,136,217,162, 91,210, +188, 97,108,115, 74, 16, 20, 6, 83, 95,184,135, 25,218, 19,201, 33,222,255,140, + 19,168,166,221,127, 92,174, 8, 32,224,184,117,154,116, 65,180, 10,214,136,169, +102, 59,173, 15,144, 50, 33,118, 89,103,153,207, 4,233,128,191,146,124,234, 51, +136,164, 76, 32,124,159, 5, 21, 10, 0,103, 99,211,198,183, 10, 90,224, 99, 7, + 81,198, 37,204,112,108, 30, 63,116, 52, 8, 95,185, 62,130,211, 32, 47,176,251, +121,142,254,254,108,250,202,100, 91, 99, 68,211, 86, 10, 83, 36, 88,120, 3,138, +203, 41, 54,131,119, 41,149,159,206, 5, 40,114,170,160,113,133,246, 80,237, 1, + 56,231,241,161,139,137, 51,243,115,154, 42,218,202, 87,218, 71,108, 61, 13,205, +165,219,134,127,197,143,114,215, 95,232, 65, 76,188,170, 19,101,202, 40,106,171, + 45,194,240,119,230,160, 85, 24,235,236,208,239,255, 93, 4,168, 54,146,200, 37, + 42, 1, 15,205, 23,128,192,255,145, 55, 68,228, 70, 57,204,174,187, 37,187,234, +152, 61, 19, 33,168, 4, 13,236,112,106, 63,160, 47,126,220, 38,187,172, 29, 53, + 37, 93, 28, 20, 72, 31, 19,128,159, 91,128, 11, 49,100, 0, 12, 65, 51, 38,241, +115, 31,151,201, 8,199,211,188,245,160, 23,153,227,112, 61,217, 61,102, 87, 94, + 81, 59,160,184,132,195,255,145,234, 21,113,225,253, 81, 86, 22, 24,201, 42,156, + 9, 21, 94, 72,241, 23, 1,176, 52, 40,192, 55, 90, 73,100, 96, 42,107,232,213, + 89, 10,101,246, 37,217,173,231, 42, 66,127,217,227,122,170, 76, 98,176,217, 78, + 75,170,193, 45, 81, 55, 26, 52,133, 7,102, 90,242, 40, 23,248,206, 79, 83,206, + 84, 18, } ; -// ../Source/Shared/GB_monoid_shared_definitions.h: -uint8_t GB_JITpackage_209 [1355] = { - 40,181, 47,253, 96,173, 18, 13, 42, 0,230,187,177, 40,208,178,234, 1, 16,219, -136,157,133, 86,245, 41,107,222,152, 45,183, 50,195,200, 22,150,119,116,252, 27, - 76,173,188,203, 79,229,240, 34, 87, 51,224, 7,179, 4,163, 0,170, 0,163, 0, -185, 57,245, 9,124,122, 84,214, 23,104,155,127, 18,184, 64, 87,247,141,206,182, -182,119,226,134,163,108, 26, 95,122,135,219,183,220,218, 75,148,198,206,212,139, -141,125,126,199,222,174,161,200,164,112,224,155,140, 29,213,146,235,175,125,174, - 62,175, 3,199,213,229, 87, 14, 46, 42,204, 52,189,115, 29,123,166,113,222, 56, -159,105, 74,169,150, 22, 20, 34, 10, 7, 14, 9, 17,133,134,200,168, 37,252,157, - 88,245, 68,245,103,203,150,123, 77, 75, 25, 85,137,216,186,120, 37, 36,142,111, -236, 50,207,239,101, 16,238,107,181,198,246,202,200, 53,103,101, 75,182, 9, 87, -251,249,235,107, 62,225,244, 27, 55, 12,231,219,106, 57, 24, 33,209, 8, 8,208, - 1, 2, 66,181,181,199,158,227,236,188,150,207,217, 28, 33, 95, 52,217,192,202, -114,101,144,178, 72, 80, 25, 76,252,254,218, 44,189, 99,107, 75,159,141,105,154, - 52, 10, 32,159,196, 32,234, 56,219,145,227,196,219, 9, 72, 62,185,227,252,218, -150, 56,245, 61,150, 82,171,217,246,106,219,226, 89, 99,215,225,141,127,211, 84, -251, 89,122,211,111, 79,238, 49,133,226,116,195,179, 51, 71, 75,181, 11,234,194, -215, 57,158,235, 87,175,167, 87,206, 99,236,178, 48, 52, 40, 44, 76, 40, 48,219, - 84, 48,218,207,234, 2, 80,164, 97,118, 97, 96, 84,227,239, 4, 8,154,128, 25, -118,185, 52, 23,118, 81,172, 10, 86, 86,134,154,200, 96,117, 93,176,139,165,106, - 1,212,235,117,142,128,134,160,201,233,107,248,183,146,244, 69, 93, 85,148,199, -107,246, 58,206, 74,136, 20, 53,182,169,255,213,239,236,156,182,185,171,215,125, -104,215, 65,184, 71, 99,199, 78,136,158,212, 78,231, 60,140,227, 67,127, 93, 67, -162,134,232,238,134, 60, 32, 72,110, 11,131,161,145,190,174, 32,234,235,216,131, - 48, 78, 79,206,183, 29,168, 62,173, 15, 97, 67,232,242, 59, 62, 33,108,249, 57, -102, 92,177,176,140, 69,145,177,178, 13,118,105, 42,215, 38,130,170, 54, 19,140, -229, 98,105,168, 10,179,129,147,203,114,209, 80, 48,163, 38, 96,134,116,220, 52, -202,207,127,101,199,246,249, 51,122,198,245, 59, 99,143,107,159,174,119,214, 41, -167, 62,238,216,241, 59,237,213,206,174, 81, 74,211, 95,203, 54,211, 87, 80,123, -203,239,233,207, 96,154, 38,131,207, 64, 70, 90,125,243,216, 25,137, 56,126,207, -245, 45,219,158, 84,210,252,242, 41,198, 78,171,119, 99, 59,166, 22,151, 10, 37, - 99, 85, 92, 46,152,196, 53,177,252,235,156, 87,219,214,118,121,109,229, 60, 71, -244,187, 65, 65, 89,153, 8,202, 85, 37, 52,196,171,173, 17, 70, 4,196,208, 92, - 26,204,170,174, 60, 61, 71,239,252,230, 47,210, 76, 96,133,194, 46, 75,198,210, - 64, 43, 67, 85, 38, 86,101,107,227,184,121, 44,213,174,119,108,123,247,201, 95, -115,234,211, 77,154,213,202,158, 53,210, 88,159,187,158,123,160, 63,249, 63, 0, -162,118,250,155,231, 3, 34,117, 81,103,212, 68,242,161, 52,230,239,143,246,211, -114,185, 3,129, 16,168,145, 33, 82, 8,209,136,136, 72, 82,152, 66, 90, 3, 81, - 12, 66, 20,229,165,116, 30,194,120, 44, 77, 1, 13,134, 64, 2, 68,137, 67, 68, - 36,144, 64, 68,130,137,100, 2, 9, 19,164,160,121, 22,238,184,187,180,245,135, - 19,209, 22,234,243,157, 95, 88,106, 97, 30, 85, 56, 78, 5,103,225,154,240,147, -244, 47, 87,196,234,191, 16, 98, 53, 45,201,219,180, 87, 73,211, 50, 80, 86,210, -253,181, 53, 68, 36,132, 39,178, 23, 69,109,246, 99,226,188, 41,251,231,137,239, -128, 16, 27, 72, 10,218,244,136,210, 55,139,240, 9,250, 89, 24, 27,174,143,133, -224,155, 0,229, 21,140, 95, 92, 53,137,161, 20, 32,211,125,135, 46,129, 21, 30, -133, 39,180, 88, 29, 14,109,117,172, 66,188,163, 19,234,154,102,161,151, 93,145, -125,226,172,195, 98,174,157,117, 95,160,160, 98,175, 60, 53, 2, 58,223,170,188, - 84, 17,119,203,154, 92, 93,107,222,164,225,107,134,210, 18,206,128, 1,107,121, - 87, 81, 11,231,220,124, 23, 44, 78,194,142,181,204,177,242, 95, 95,199, 79,194, -237,104,198,100, 42,171,171,220, 93, 73, 11,151,218, 0,116, 98, 5, 22,207, 28, - 85, 21,126,170, 93, 72,182,235, 45,223,203,119,198, 93,187,252,116,166,231, 65, - 15,205, 69,142,155, 96, 23,177,241,166, 92, 53, 50,218,201, 33,219, 34, 59,157, -149,139,166,235,145, 10, 12,184,127,132,116,188, 94, 60, 84,238,132, 19,154,100, - 43,136,102,254,237,153,200,193,137,193,223, 76,138, 3,167,222,208,127, 97, 52, - 42,128, 46,172,184,199, 81, 85, 2,184,254,199,141,158, 8,104, 15, 92,155,226, -101,224,158, 10,251,223, 63,161, 49,199, 52,218, 91,186,162,205,143,139,110,138, - 13, 41, 51, 94,227, 32,148, 43, 29, 34, 47,147,134, 1,201, 71,109,217,156,105, -172,136,217,245,108,243,212, 30, 1,229,200,108, 97, 33,217,193, 99, 36,159,199, - 97, 32,137,187, 76, 77,240, 22, 2,212,120,144,214, 51,209,118,168,240,214, 75, -208, 64, 23,207,202,175,217, 34,142,143,126,172,136,233,234,200, 88, 86, 23,184, - 5,132,171, 1, 12,188,245, 66,142,183,219, 65,159,144,144, 76,208, 82,166, 25, - 98, 39,236, 78,137,155,137,204,116, 67, 90, 22, 75, 56,100,196, 41,147, 97,100, - 33,164, 47,129,107, 39,182, 68,215,151,227,228,101,235,131, 81,117,231,236,129, -143,220,210,232, 0,131,246, 91,172,246, 64,178,216, 10,195, 77, 1,220,177, 65, -231,153, 71, 0, 66,157,221,109,216,226,153,213,162, 60, 13,113,193,223,240,218, - 88,143,189,178,140, 98,161, 43, 42,194, 65, 13,128, 89,194, 84,161, 6,129, 29, -219,118,247,225, 0, 54,183,127, 13,193,215,146, 67,197,152, 83, 56,238,195, 64, -128,225,211,128,110, 0,106, 60, 22,250,185,226,203,213,177, 14,154,146,202, 76, -107,201,197,230,145,123,145,220,243,195, 48, 85, 7, 96, 7, +// ../Source/Template/GB_subassign_22_template.c: +uint8_t GB_JITpackage_205 [578] = { + 40,181, 47,253, 96,145, 5,197, 17, 0,102, 30, 94, 32,240, 24, 61,208,133,145, +136, 47,145,124, 48, 47,150, 42, 43, 50,238,192,245,239, 45, 28, 36,253,232,202, + 5,158,129, 52,135,191, 85, 0, 84, 0, 82, 0,135, 77, 99, 32, 14,155, 11, 40, +230,153,174,167, 57,241, 2,231, 42,112,139, 97,229,120,214,113, 23, 9,136,103, +174, 52, 94,231,137,187,223,117,236,174, 60,237,164,218,167,202,191, 59,221,218, +145,228,186,186,244,207, 15,162, 92,229, 16,130, 75,111,252,158, 22,135,191,189, +109,243,110,169,106, 61, 71,163,246, 36, 21, 55, 24, 46,205, 96, 8,250, 51, 14, + 71, 74,231,211,105,241,103, 79,126,159,197, 91,170,222,216,116,204, 91,191,182, +147,132, 67,145,122, 38, 61, 47,151, 78,198, 27, 95,182,109,254,137,224,126,204, +117, 40,108,218,131,116, 98,206, 27,249, 43,169,238,251,159, 69,123,125,159,214, +139,246,153,104, 10,223,159,242,235,223,184,222, 96,169,110,220, 90,206,179,196, + 22,155,214,188,245,231,129, 83, 52, 32,142,244,253,165,212, 12,189,204,116, 71, +144,122,118,125,235, 43, 82,137, 93,136,251,246, 20,139,125,171,187,195, 5,171, + 75, 49,239, 46,156, 39,227,201,215,163,139,219,245, 55, 63,131,219, 73,162,231, + 31,133,227,245, 7,183,255,173, 97,254,253,159, 95, 23,235,186, 10, 87,188,157, +115,251,126,215,213,186, 90,153,196,158,165, 36,230, 81, 56,220,165,131,233, 72, +201,153,178,136, 18, 73, 28,242,148,179, 8,132,135,195, 15, 14,113,137, 49, 1, +173,123,110,141,189, 29,191, 7,169,118,193,197,188, 44,146,220,190,181, 51, 79, +236, 56, 20,125,134,165,153,113, 64, 98, 81, 87, 0,230,156, 13,165,235,184, 84, + 68,147, 46,192, 28,226, 41,233, 1, 73, 32, 32,132, 16,197, 84,157, 7,222, 32, +224,117,112,246,203, 14,140, 12,111, 35, 15, 18,149,128, 8,252,197,230, 13,186, + 23,147,104,215,211, 78,162,129, 35,175,192,186, 54,129, 46, 56,199, 26, 0,118, + 61, 67,154, 77,200,152, 2,155,120,224,183,113,112, 77, 56,144,125, 78,227, 4, + 7, 69,185,108, 26, 44, 97,152,212,162, 52,161,136, 37,135,197, 19,110,196, 50, +164,103,208, 98, 98,164,105,111, 27, 12, 5,144, 1, 99, 13,154, 18,196, 27, 39, +152,156, 89, 21, 43,252, 5, 70, 79,197,133, 68, 2,130,232,181, 54, 16,129,225, + 25,132,222, 14,141, 35,117,138,160, 33, 95,183, 6, 4,161,227,239, 88,133,154, +170, 7, 28, 17,195,205,120, 35,244, 68,230,224,184,204, 57,231,108,173, 50,156, + 77,179,243,204,132,182, 77, 87,235,154,226,209,152, 43, 84, 20, 12, 1, } ; -// ../Source/Shared/GB_mxm_shared_definitions.h: -uint8_t GB_JITpackage_210 [1360] = { - 40,181, 47,253, 96,100, 23, 53, 42, 0,198, 53,164, 40,176,208,217, 28, 61, 55, -193, 62,251,137,120, 85, 52, 60, 84, 15, 61,166,245,242,176,253,169, 88, 43, 23, -127, 45,145, 39,151, 79,126,208,127,176,244,131,115, 1,148, 0,150, 0,159, 0, - 34,126,131,249,223,164,176, 69,157,119,134,141, 79,169,124,166,163, 60,110,111, -138,236, 21, 47, 25, 64, 34,143, 6, 59, 41, 90,159,220,158,223,204,181, 61,236, -209,184,118, 55, 55,143,144,229, 3,241, 90,116, 27,119,118,156, 65,139,153,157, - 82,235,148, 36, 98, 16,121, 40, 84, 6,145, 59,186,233, 20,158, 34,105, 57,196, -250, 8,204, 54,156,219, 41,205,218, 80, 64, 81, 94,204,164,241,149,162,214,121, -142,154,132,105,215,219, 24,167, 12, 88,191,246, 59,182,183,147,225,171, 13, 67, -219,125, 2, 66,112,181, 51,207, 58,191,246, 56,175,175, 4, 49, 23,106,132, 28, - 5,243,130, 2,233, 81, 80, 16, 87,198, 57, 52,154,138,215,158, 90,203,208,180, - 98,180, 94,150,150,126,167,110, 91,116,174,115, 58,214, 64,155,207, 55,189,218, - 1,146,193, 49, 29, 44,195, 56,151,198,113, 26,150, 97,214,135,131,232, 88,239, - 38,181, 21,225,168,146,164, 12,167,117, 60,216,134,117,176,203,101,225, 44, 87, -102,101, 52,142, 19,226,212, 15,192,155,182, 90,128, 75, 18,100,195, 52,150, 5, - 84, 1,125, 42,175,242,148,215, 89, 62,250,138,167,186,121,187,182,197, 71, 21, - 63,158,223,126, 72,211,249,225, 41,208,222, 72,187, 58, 3,110,243,175,157,158, - 64, 7,188,118, 87, 60,219,250, 22, 73,240,184,177,236, 78,229,236, 58, 88,165, -197, 81,222,144, 29, 62,237,218,235, 43,109,253,228,255,165,106, 49, 49,150, 84, -118,243,118, 56, 86, 10, 37,187,182,205,242, 26,227,238, 58,105,253,179,199, 61, - 82, 41,210,104,182, 75,187, 92, 60,149,198,210,241, 84, 46,237, 84,133,101, 23, -182,249, 96,219, 6,196, 57,158,191, 86,180, 31, 81,113,102, 58,134,214,214,185, - 56,215,230,195,193, 56, 78,179, 50,156,204,181,195,249,200,181,143, 84, 8, 33, - 7,235, 85, 30, 75,240, 33,139,163,217,180, 12,187,112, 29,140,115,144, 16,145, - 84, 46, 24,140,114,144, 16,145,124, 46,160, 83, 7, 9, 83, 68, 18,145, 36, 84, - 9,213, 2,104, 97,235, 96,220,198,227,161,100,158,208,102, 99, 5,213, 29,211, -228,152,254,217,222,152,248, 3,211,116,136, 19,193,165,137,231, 83,211,127,125, - 32, 54, 46, 2,146,241,157, 57,227, 49,204, 35,190,157,235,180, 98, 87,199,143, - 26,137, 93,216,225, 41,236, 89, 48,119,120, 12,196,155, 86,148,109, 61,229, 53, - 30,223, 21,183,249,248,121,118,147,138, 26,253,190,115,204,232,219,184,193,141, - 82,217,152,118, 64,245,142,199, 62,227,190, 20,196,167,194,185, 56,115, 82, 61, -106, 83, 2,113, 66, 96, 89, 62, 32,130, 59, 46,102,118,101, 54, 11,147,169, 57, -133, 50, 51,147, 41,113,218,176,236, 33,191,225, 20,162,196, 53, 42,142,139,217, - 77, 87,102,109, 42,151,133,211, 4,129, 52,168, 1,150, 66, 70, 35,146,148, 20, -150, 10,195, 1, 97, 8, 49, 12,130, 10,235, 28,178, 88, 60, 9,161, 36,130, 33, -136,177,144,128, 24,227, 8, 65,136, 68, 73, 36,146, 36,202,204, 7,111, 26, 70, -192, 95,163,250, 68,216,183,241,159, 75,236,200,186,117,182, 18,123, 98, 25, 84, - 68,107,206,199,162, 63,231, 23,182, 56, 28,105,231, 70, 8,137,112,175, 84, 66, -156, 98,236, 65,146,223,118,224, 38,116,102, 66,157,132, 13,134,128,163,159,226, -134, 68,132,199,132,195,121,130, 14, 52,237,218,233, 29,216, 1,218, 28, 79,163, -111,132,151, 30,183,203,148,239,109, 71, 77,121,100,162, 30, 13,105,160,207,203, -208, 10,190,166, 72, 42, 99,131, 97, 76, 41, 14,147,213, 87, 70,223,169,224,163, -110, 80,225,235, 28, 66,168,140,147,193, 90, 16,255,215, 21, 91,199, 23,120,180, - 37,215, 61, 14,110,196,220, 35,207, 38, 5,204,162, 36,205,136,155,123,202, 75, - 58, 51,128,139,138,119,203,239, 33, 93,187, 55, 2, 73,198,200, 66, 80,156,149, - 32,142,233, 38, 80,208,170, 3, 89,243,202, 8,141, 60, 38,125, 0, 50, 1,141, -193, 46, 10, 24,219,111,190, 43,174, 93,240, 34,103,163,197,134,129,248, 74, 26, - 39,201,137, 86, 83,103,179, 99,172, 2,200,141,188, 57, 37, 30,180, 69,118,140, - 56, 74, 91,109, 89, 6,170,190, 32,217, 83,117,100,125, 94,178,229, 67, 77,108, -218,181,208, 73, 18,132,237,240,190,241, 9, 67,192,215,255,142,201, 55,182,197, -186,124,159, 97, 6,113,151,222, 44,155,204,206,119,217,132, 82, 27, 62,120,134, - 65, 69,201,185, 38, 49,129,188, 44, 14, 72,245,237,153, 44, 58,226,240,245, 22, - 75, 70,254,237,159,247,253,145, 67, 70,185,197, 18,130, 27, 25,151, 40,136,252, - 38,135, 81,160, 43, 4,137,220,244, 9,199,112, 51, 49,218,114, 38, 32,250,102, - 13,140,100, 22,218, 97,227, 58,219,178,195, 72,250, 55, 99, 28,164,251, 94,166, -128, 28,221,239,199,221,109,161,212,157, 86, 57,101,138,189,165, 50, 65, 47,177, -117, 95, 16,212,156, 75, 41,197,119,219,206,186, 12, 50,236,201, 92,118, 99, 89, - 81, 43, 9,156, 58, 47, 82, 88, 89, 38, 83, 66, 22,120,104,204,113,119,132,133, - 74,183,118,204, 13, 51,101, 99,152,200,185, 27, 68, 50,152,150, 72, 69,218, 81, - 6, 19,185,104, 54, 29,181,241, 65, 92,231, 21,240, 18,147,101, 92, 40,174, 43, -200,169, 75, 31, 44, 29,172, 10,168, 6,164, 32, 77, 1,225,245,255, 25,149,246, - 9,210,124,190, 87,134,177, 61, 33,195, 3, 81,103,127, 1,232, 49,250, 14, 5, - 69, 85, 66,137, 34,204, 37, 79, 14,109,217, 96,198, 76,115,227,237,101,120,122, -145,117, 76, 76, 5,101, 35,163,106, 44,240,228, 87,118,123, 32,175,154,230,181, - 74,188, 97,139,155,224,120,122, 16,141,174, 12, 45,250,217, 35,220, 72, 61,240, - 1,129, 22,234,155,190, 96,143,212,233, 47, 16, 11, 90,192, 78, 72,185,202,189, - 35, 61, 89,206,225, 12,162, 91,204, 52,202,134,137,254, 75,194,181, 60, 21,155, -165, 14,235,194, 2,139,102,254,153,105,114,194,193,122,151,176, 82, 90, 97,155, +// ../Source/Template/GB_subassign_23_template.c: +uint8_t GB_JITpackage_206 [1589] = { + 40,181, 47,253, 96, 52, 27, 93, 49, 0,166,184,172, 41,176,148,177, 14,180, 64, +128,155,185,229,142,112, 94,128, 59, 82, 73, 16,216,154, 94, 73,180, 8, 34, 37, +222,203, 16,232,157, 37, 74,127,208,127,176,191,177, 43, 1,163, 0,161, 0,161, + 0,148,195, 50,164, 37,164, 14,250,128,100, 69,232,202,248, 95, 66,241,120, 87, + 42, 64,233,116,160,188,174, 80,196,181,206,234, 23,176,225,175,126, 1,239,236, +227,176, 74, 5, 40,151, 2,140,165, 55,108, 94,248, 6,175,169, 70,115,237,140, + 99,105, 92, 27,163, 29,139,198, 6, 84,144,181,201,107,220,161,227,188,129,208, +208, 57, 14,222, 66,192, 92, 48,150,133,131, 11,230, 21, 70,221,194,212, 52, 55, + 47,128, 63,109,217,118,116,116, 75, 4, 59, 16,219,157,158, 68, 67, 99,111, 94, + 81,103,250,137, 40, 28,247,105,199,244,241,237,245, 38,114,120, 77,229,241, 13, +157, 39,119,187,206, 18, 1, 35, 43, 8,197,120,146, 62, 44, 33, 36,110, 96, 64, +177, 24, 24, 4,109,178,239,252,221,206, 98,183,249,157,177, 19,139,107, 52, 31, +133, 46,145, 40,243,203,200,236,100,253, 54,236, 22,229, 89,248,236, 37,149,137, + 9,117, 13,107, 83,173,104, 30,226, 89,145, 55, 71,250,108,150,113,189, 73,146, + 90, 79, 82, 39,245, 77,231,154,176,192,217,108,111,179,112, 8,158,185, 74,248, + 43, 4, 59,241,218,140, 80, 47,207,238,240,189,229,183, 70,179,154,121,176, 64, +155,113,181,152,134,179,150,212,152,235,143,237, 92, 68,252, 32,232, 25,113, 32, +164,136, 35,225,157, 93,166, 36,137,169,132,157,203, 34,116, 85,200, 17,135, 66, +163, 2, 56,127,183,210,231, 6, 57,165,132, 66, 57,201,188,202, 50, 65, 33, 87, +122, 11,164, 82, 44, 29, 8,207, 5, 5,214,222,222,252,150, 45,233,214,141,212, +175, 17,236, 92,120, 46, 98,220, 50,173,124,164,191, 74,115,245,113, 59, 0, 42, + 21,135,223, 75, 85, 24,205, 51, 99,170,185, 47,235, 13,195,175, 40,217,125,245, +158,213,206, 53,199, 77,111,222,223,206,126,118, 32,211,187, 2,151, 68,202,146, +161,246,231,229, 91,151, 91,150,180, 89,150,232,148, 27,160, 79,252,184,116, 84, +167,141, 60,177,190,167, 12,175,217,247,199, 77,211,109,117,162,190, 17, 49,172, +170, 98,140, 49,142, 84,212, 53, 31,129,207, 24,245, 50,110,143,224, 23,104, 99, + 20, 1, 34,192, 45, 12,194, 45, 72,189, 34,244,201,144, 26,156,208, 8,122,228, + 21, 57, 29, 17,188, 23,148, 19, 10,127,114, 2,255, 67,250,202,227,189, 69,115, +234,144,249, 53,135,247,226,224,132, 62,163,120, 97,200,141,135, 35,146,208, 35, + 1, 67,160, 99,122,128, 15, 12, 16,188, 20,171, 82,180,249, 56, 87,106,239,227, +197, 42, 11, 69, 93,243,198,181,179,210,188,101, 89,214, 45,121,234, 64,114,116, + 73, 28, 84,222,214, 5, 73,120,111,109,144, 58,148, 19, 37, 10,166, 91,142,149, +102,159,179, 74,181, 59,100, 94, 53, 88, 13, 84,230, 31, 29,243,121,218,122,220, + 54,171, 15,215, 40,197,225,192,194,104, 55,235, 41,203,232,189, 91,153, 92, 6, +202,140, 61,170,133,100,205,145,186,175, 20,177,218,156,105, 82,186,109,247,126, +228,230, 10,129,133,168,113,185, 82,102, 68, 68, 68, 36, 41, 72, 65, 50, 28, 97, + 12, 98, 20,148, 16,106,230, 1,146,120, 80, 20, 5, 41,144,193, 4, 17, 68, 24, +145, 64, 68, 68, 66, 17, 17,145,160,156, 77, 7,176, 64, 48,165,157, 92,226, 77, +180,100,153,206,226,137,220,161, 42,211, 77, 20,222, 88,215, 64,168,211, 17, 14, +217,255, 73,127,224,232,164, 2,222,156, 68,198,183,174,253,242,230, 26,189,131, +218, 31,237,105,228, 0,151,199,224,107, 27,229,203,213, 35,121,132,160, 69,113, + 17,178,160, 41,138,153,185, 26,251,115, 91,194, 85,159,125, 43,124,204,183, 90, + 17,251,125,100, 58, 42, 4,156, 72, 33, 38,151, 29,109, 46, 1, 40, 0,124,157, + 65, 99,125,150,140,254, 17,164, 62,144,211, 48,229,248, 87, 49, 42, 80,124,107, +191,248, 56,213,232, 18,160,247,216, 16,204, 48, 0,237, 71,160,255, 77,104,144, +164,153,143, 31,182,124, 64, 37,121,161,106,140, 69,206, 2,162, 32, 16,143, 62, +120, 25, 6,206, 26, 75, 78,131, 36,255,133, 6,153,175,188,239,191,203,146,246, +189,252,174, 0, 60, 67, 4, 27,181, 33,156,231,255, 45, 44,157,115, 5,247,176, +136,124,140, 30,115, 97,135, 79,177,102,163, 86,106,226, 71,116,116,157,145,225, +190,148,113, 2,138,143,190,178,153,141, 16,130, 56,240,124, 18,154, 24,180,163, +221, 42, 0,175,120, 20, 38,160, 97, 13,129,202, 91,141, 39, 20, 67,138, 70,245, +126,169,186,234,152, 33,133, 44, 79, 41, 49,219,160,225, 0, 55,243, 64,165, 33, + 50,130, 63, 36, 26, 2,193,196,139, 98,144,171, 48,208, 10,140,191, 0,148,192, +193,102, 63,112,179, 11, 96,223,218,100,254, 79,196,146, 95,219,152,237,213,208, + 72, 45,247, 0, 29,204, 90, 36,172, 36,177, 5, 42, 18,194,229, 14,209, 7, 18, +152,225,104,184, 31, 24, 88,177, 35,149,242, 81, 49,142, 37, 92,145,197, 97,196, +203,113, 47,145,195, 13,226, 11,100, 51,188,119,244, 99,153, 68,138,185,153, 16, + 3, 0,201, 53,103,120,144,246,170,193, 1, 80, 64,203,129, 0,237, 10, 22,169, +189, 64,197, 20,159,165,156,129, 57, 45,121,224, 68, 92,110,182, 2, 60, 10,102, +128, 23,195, 38, 65,127, 69,168,237, 99, 56, 78,158,156,143,187, 86,121, 92, 96, + 77,126, 73,114,148,183,100,160,148,193,102, 67, 0,213, 62,166,148,214,193,217, +233,143,139, 61,218,234,147, 56, 20,253, 12,132, 3, 88,205,204,235,228,130,237, +130, 9,103,165, 2,222,213,233, 5,154,161, 66,104,202,181, 42,131,190, 16, 21, +123, 64, 26, 96, 40,155, 64,178,195,139,103, 51, 27,105,111, 97, 97,190, 62,141, +153,248,136,216, 29,138, 76,163, 53, 65,214, 21, 72, 48,237,238,179,236, 9,100, + 25,105, 71,168, 74, 86, 1, 50,133,121, 73, 67,175,116, 93, 77,250, 85,196,151, +144,151, 18, 76, 85,103, 22, 21,239, 68, 94,143, 44,130, 89, 6, 7,110,218,154, +102,189,208,165,228,189,253, 59, 12,233,252, 20,210, 5,147,209,133,121,167, 95, +237,173,187, 56,213,243, 80,232,170, 55,152, 91,109,147,238, 68,194,130,176, 46, +142,184, 98,238, 33,131,254,217,184, 14,122, 39, 53,125,248, 63, 50, 94,163,210, + 35,243, 2, 0, 1, 39, 24, 99,210,105,157, 37,250,104, 16, 50, 73, 40,195, 20, + 89,253, 84,129,122,220, 84,157, 35, 17, 28,245, 83,212,118,158,214,122,197, 89, +206,245, 75,119,225,193,159,188, 85,105,160, 75,120,212,239,188, 85,150,204, 31, +245,182,119,246,160,103, 87, 20,150, 29, 22,198,168,175,200, 85,149, 90,119,238, +187, 56, 29,198,238, 17,159,232, 39,140,112, 44,150,122,196, 38,222,240,126, 17, +213, 91, 26, 13,190, 29,228, 1, 62,109,221,117,119,147,142, 66, 12,166,173,129, +227, 67,115,155,204, 41,178,170,204, 39, 15,101,173,139,137, 45, 56, 88,187, 2, + 22,222,196, 66, 1,205, 10, 27,175,174, 46,210,191,223,209,155, 99,125, 67,211, +206, 25, 47, 55,130,195,174,253, 8,137, 77,174,197, 41, 26, 52,159,159,153,154, +137,116,184, 28, 81,165,138,182,198, +} ; + +// ../Source/Template/GB_subassign_25_template.c: +uint8_t GB_JITpackage_207 [1745] = { + 40,181, 47,253, 96,136, 29, 61, 54, 0,198,190,188, 41,176,148,177, 14,180,128, +192,141, 72,117, 36, 16, 19,131,205,214, 96, 4,104,153,188,130,232, 17,196,244, + 12, 38,227,151,160,191, 8,255,148,254, 52,189, 59, 46, 1,174, 0,182, 0,175, + 0,213,235,123,226,238, 52,101, 58,186,103, 15, 97,215,125,164, 99,176,211,181, +218,179, 54, 71,250,117,146,236,171,215, 57,207,219,156,232,199,192,110,122, 95, +214, 62, 15,211, 99,135,243, 56,123, 51, 99, 74, 6, 83,112,105, 78,155, 55, 94, +227, 53, 37,209, 92,123,187, 46, 26,245, 92, 48, 58, 32,204,214, 33, 94,227,206, +142, 51,231, 65,179,119, 93, 60, 52, 40,200, 20, 92, 20, 8, 50, 5,175,104,212, + 33,166, 33,179,115, 76,252,137,203,214, 68, 69,135,161,232,113,224,238,244, 32, + 52,141,189,121, 67,157,233, 23,162, 52,174,189,197,111,117,254,148,143,233,171, +183,215,156,200,227, 57,111,192, 24,170,107, 58,207,238,154, 58, 75,132, 2, 89, + 61, 40,198,115,244, 97,233, 0,241,129, 1,202,101, 96, 32, 19,217,231, 66, 98, + 92,153, 40, 98,210,170, 46, 79,168,178,117,205, 73,146, 90, 59, 30, 43,130, 66, + 98,184,132, 39,196,219,108,143,203, 85, 98,183,178,232,169,172, 78,169,126,156, +246,173, 73, 40,190,116,243, 3,233, 91,236,125, 77,215, 93, 55,189, 9, 50, 49, +241,120, 42, 30,168,139, 50, 43, 20,138, 36,186,213, 77,195,197, 70,234,156,206, +218,209, 27,119,253,177,160,136,137, 46, 7, 25,186,100,148,152,202,232,177, 40, + 50,107, 66,138, 46, 9, 18, 13,192,249,187,149, 62,183,199, 41, 37, 20,202,201, +230,149, 44, 15, 18,114,165,135, 30,149,106,180,195,178,212, 18,163, 14,250,128, +228, 68,102, 93,252, 47,161,112,188, 43, 13,160,120, 60, 81, 90, 86,246,112, 82, +111,245, 11,160, 80,240,108,211,196,111, 46,159,203, 84,228, 91, 7,175, 80,210, +244,213,123,150,244,251,107,178,159, 38,143,233,221,128,141,230,111,158, 57,167, + 86,157,103,123,218,123,244, 58,181,227,166, 35,147, 37, 57,129,153, 67, 40,109, +150, 31,116,202, 12,208,199,234,124, 42,217,137,152,231,134,253, 60,185,252, 74, + 43,139, 15,237,245, 99,182,198,223,189,246,168,182,187,173,199,148, 19,117,100, + 54, 42,154,205,207,120,106,125, 79, 57,246,215,205,144, 18, 25,169,147, 74,158, + 21,209,168, 87, 85, 85,141, 84,168, 17, 17, 0, 5,196, 37, 57, 85,156,163, 81, +252, 66,237, 46, 4,163,148,227, 46,231, 23,155,248,200,142,229,113,192, 42, 36, + 50, 11,148, 17, 17,202, 34, 40, 84,157,115, 90, 61,107,212,203,184, 61,129, 87, +135, 90,135,212,134, 11,118,203, 15, 23, 14, 3,148, 47,128, 94,150,198,149,125, + 68,149,101, 33, 59,216, 21,146, 17,131,136, 25,200,155,125,239,124,215, 81,145, +122,139, 57, 22, 74, 29,116,121, 30, 42,139,229,243,184, 77, 86,235,209,201, 33, +188, 35, 21,245,170, 82, 74,189, 99, 68,111,121,196,238,198, 41,195,230,231, 28, +187, 2,255, 56,167,181, 74,241,179,205,199,185, 82,123, 31,239, 49, 31, 4, 22, + 88,185, 32, 8,183,218,135, 18,187,212, 35, 72,138, 44,136,210, 33,135, 81,199, +100,196, 71,254,105,244,106,189,190,214,230, 87,242, 86, 41,233, 12,155, 87, 52, + 80, 67,201,205, 59, 54, 48,201,121,158,109,183, 87, 60,187,210, 27,158,177, 71, + 73, 37,139,133,129,170,104, 44, 84,181, 52,107, 94,133, 0,106,212, 52,235,105, +163,186,251,182,230, 52, 28,129,174,168,225, 45,154, 33, 17, 17, 73, 74,146, 66, + 97, 56, 65, 8,194, 80, 32,118, 82, 50, 31,146,144, 56,151, 65, 12,163, 40, 68, +136, 33,142, 24, 19,136,136, 72, 32,209,196, 72, 36, 19,206, 3,133,177, 98,222, +210,233, 61, 38, 34,173, 70, 86,220,154,146,130, 11,245,161,173,198,158, 6,199, + 40, 78,250,225, 11,253, 21,196,107,136, 0, 83,114,144,112, 84, 54,143,202,141, +198,116, 40,107,164,150, 13,228,208, 10,104, 69,249, 39,194,226,206,235,199,134, +114,163, 23,251,108, 63,249, 36,121,247,188,253,234,153, 89,195, 8, 40,152, 7, + 79, 1, 22, 20,248,185,154,247,142,219, 95,240,105,215,142,143,250,238, 15,251, +199,161,215,207,108,179, 79,114,150,154,119, 15, 78, 65, 77, 7,129, 43,232,157, + 0,124,106,171, 10,237,207, 14, 9,160,180,205,167,144,255, 39, 4, 52, 65, 89, +190, 58,198, 89, 51,222,110,207, 42, 15, 45,234,201, 35,160, 28,140,129, 89, 16, + 88,205,162,190, 64, 35,212, 78,183,224,139, 64, 72, 85,181, 86, 61, 16,154,240, + 21, 28,139, 67, 95,217, 4,186,226, 41, 30,252, 39,167,190,190,251,216, 40, 1, + 75,155, 42, 41,147, 9, 65, 81,236, 61,177, 17,203, 24,239,193, 1, 60, 77, 37, + 64,164, 2, 25, 22,140, 24,118,194, 2,127, 12,176,175,143,217, 2, 99, 92, 72, +171, 96,105, 28,104, 24, 46,243, 61,217, 50,186,189,145,220, 49, 57, 98,100,226, +120, 95,197,162, 35, 58, 54, 35,111,161,227,240, 29, 37, 55,107,141,148,162, 36, +236,240,121, 94,137,233, 63,117,251,169, 50,191,167,135,125, 72,221, 95, 3, 32, +197,213,231,113, 12,238,220, 24, 89,210,165,214,220,153,157,235,109, 32, 47,170, + 59,166, 27, 85, 37,104,237,226, 35,118, 48, 49,232, 81, 44,240,186, 41,162,165, + 34,177,208,247, 50, 62, 59,137,211, 98, 49,238,178,207, 47,153, 31,249,138,247, +123, 76,208, 23, 67,190,203,216, 54, 73,109, 11,142,164, 29,234,247, 49,254,195, + 34,169,103, 1, 93,188, 15,152, 23,197,132,196, 93, 97,192, 54, 50,127,202,238, + 93, 37,239, 25,139,194,217,185,207,190, 64,176, 21, 27, 11, 76,173, 34, 2,189, + 72, 98,211, 44, 86,114,173,101, 40,234,101,234,139, 69, 60,252,133,132, 26,241, + 51, 66,160,147,175,145, 32, 86,152, 59,199,102,182,139,174, 13, 30,110,190, 19, +174,218, 72, 74, 87,163,242,147, 26,119,181,102,164,146,103,126, 0,125, 95, 89, +250,125,140, 79,198,246,193, 33, 23,244, 98, 4,190,250,238,149,198,111,158,131, + 72, 16, 35,227, 31, 4, 74,115,149, 42,134,127,225,214, 13,104,243,129, 51, 99, +159, 8,181,151,181,243, 49, 28,170, 62,171,182, 64,209,242, 80, 30, 38, 75, 3, + 68, 94,140,129,187, 26,128, 61, 99,223,137, 2, 32, 93,180,113, 88, 71,111,164, + 9, 33, 9,152, 33, 23, 27,228, 92, 13, 45,128,237,171,247, 5,170,186,102, 62, +159,175,217,157,164, 45, 86, 95, 62,210, 50,141,247,146, 97, 1,154, 93,188, 23, +148,171,233,208,139,101,208,107,163,122, 21,197, 92,127, 97,111,185, 48,186, 29, +203,101,178,229,121, 4,137, 46, 27,219, 89, 95,130,181, 53,246,229, 21, 98, 53, + 28, 27,134,199, 46,122,252, 78,195,230, 68, 79,129,185,101,180,155,228,199, 94, +140,196,167,150,233, 59,229,250, 55, 2,249, 18, 27,161,138, 0,116,239, 83,130, + 36, 28,236, 91,199, 82,251,251, 82, 36,241,195,129,186,250,111, 85, 39,169, 16, +166, 75, 50, 20,182, 89,210,157, 11, 97,208,188,136,196, 68, 40,159,120, 69, 41, +185,115,101, 74,177, 86,162, 43,105, 17, 60, 28,122,194,119, 50, 69,109,165,195, +169, 50,230, 95,152, 13,145,227, 79,143, 45,232, 42, 48,133,226, 23, 19,100, 59, + 81, 66, 94,146,236, 98,125, 4,174, 7, 90, 32,238, 88,246,126, 5,152,179,224, +106,172,162,237,148,173,219, 22,245, 52, 62,209,178,187,174, 75,165,114,143,178, + 60,232,226,130,239,169, 71, 49,159,158,185, 85, 38,169,196,169,200, 9, 91,133, +210,128,223, 57,203,132, 1,183,127,236,192, 64,149, 52,120,179,135,202,145,222, +215,189,196,116, 9,254,219,142, 59, 72, 87,232,240,238,245,229,213,156, 75,178, + 60,166,220, 56,216, 71, 57, 80,177, 46,242, 65, 19,207, 46,118, 77,227,103,110, + 0, 17,100,154,147,243, 92,168, 36, 56, 29,173,119,178, 91, 62, 61,119,169,129, + 75, 2, 46,164,169,169, 26,216,100,166,243,230,154,185,198,182,139, 33, 18, 0, +139,210, 10,144, 7, +} ; +// ../Source/Template/GB_task_struct.h: +uint8_t GB_JITpackage_208 [1044] = { + 40,181, 47,253, 96,110, 12, 85, 32, 0,150,172,131, 40,224,178, 56, 7,200,165, + 49,196,246,110,149,114,175, 91,232, 44, 85,172,126,117, 78,221, 61,125,223,139, +118, 3,195,191,163,235,155, 51,152, 97, 24,198, 11, 1,127, 0,116, 0,113, 0, + 43, 35, 64, 4,113,105, 48, 24, 23,154,204, 37,145,161, 52,217, 66,153, 69,128, +104, 96,178, 72,171, 97,143, 82,191,212,141, 89,108,185, 48, 66, 90,150,139,197, + 9,105,195, 96, 49,193, 5,213,229,189, 56,183,198,137, 23,223, 54,234,142,192, + 50, 96,145, 14, 42, 3,150, 79, 48,201, 29, 71,208, 99,248, 68, 61,164,245,244, + 68,205, 93,134,154,168, 52,250,234,195,101, 57,179, 29, 63,153,168,206,166,177, + 98,188,240,223,118,219, 94,125,244, 23,109,106,236, 83,155,175, 14,191,190,170, +135, 83, 40,145, 68,161, 4,147,226,159, 22, 20,249,179, 97, 50, 94,100, 60,215, +217,216,130,126,230,183,117,174,144,240,230, 26,179,206,221,196,254, 94,167,195, + 63,101,243, 12,101,236,124,126,244,214, 14,199,179,101,124,167,206, 15,173,207, +145, 17,139, 27, 63,212,113,184, 33,113,235,123,232,211,164,186, 59, 37, 57,157, + 87,248,130,149, 48,241,112, 23, 9,102, 39, 29,126, 30, 40,223, 93,111, 31,207, + 58, 8,159,228, 44,103,236,215, 31,234,153,216,151,227,135,212,114, 61,187,237, + 87,211, 4, 95, 26,106, 14,189,143,183,220,186, 89, 22,225, 67,242,121, 28, 38, + 63,217, 37, 39, 50,191,217, 19, 7,140, 26,151,174,240,229,237,183, 81,207,246, + 5, 25, 78,173,215,163, 97,111, 63,161,156,148,183, 86,199,150,202,249,105,205, +113, 66,195,203,159, 79,222,222,179,173, 29, 31, 6,193,184,136,113, 32,150,139, +150, 53,105,185,188,149,158,227,173,103, 81, 82,185, 88, 85,244,253,238, 64, 40, + 23, 41,138,118,243, 59, 98, 55,126, 87, 36,142,239, 9,119,101, 81,148, 69, 40, +183, 34,128, 32,185, 69,245,144,213, 5,173, 92,222,118, 4,225, 27,122,133, 83, + 2, 62,217,188,203,121,222,126,117,233,164, 30, 64, 17,249, 68,242,108,227, 19, +185, 27,104,211,185,163,155,187,120,119,109,168,132,146,253,181,220,150, 19,235, +229,252,114, 81,161,193, 52,100, 92,154,134,135, 40, 66,120, 52, 18,105,205,201, +230,119,131,242,105,114,183,170,170, 42,138,162, 40,203,178,172,138, 4,229, 94, + 28, 24,170,113, 16,204, 49,116,226,168,117, 60, 66, 95, 5, 6,255, 35,145,128, +232,168,177,169, 51, 53, 35, 34, 73, 10,146, 82,107, 80,132,200,144, 93,213, 1, +226, 0, 77,199, 66,144, 32,130,140, 68,129, 4, 34,129, 68, 19, 74, 26, 41, 40, + 72, 65, 27, 0, 72,128, 88,158, 32, 71,107,114, 21, 91,129, 54,246,137,216,191, +182, 59,137, 84,168, 36,165, 82,114,250,215,177, 37,193,240,186,115,218,147,115, + 17, 31, 5,236, 61,109,125,206,238, 21,168,115,227,180, 70, 43, 6, 35,185,252, + 18, 46,115,226, 80,152, 57, 66,129, 85,180,202,139,121,212,131,164,103, 68, 23, +101, 53,106,255,152,103,234, 56, 43,102,205, 41,252,226,159,130,234,163,227,213, +175, 54,201,207,104,184, 75,244,153,233, 80, 54,136, 72, 37,165, 17, 51, 68,196, +108, 31, 78,132, 72,154, 54, 79, 30,155, 4,151,209,193,226, 30,128,240, 71,252, +125, 21,133, 89,119,148,246, 7, 71, 46, 39,104,200,114,237,146, 94,176,233,114, +162,241,179,212,206,159, 86,192,116, 79,158, 48,177,222,184, 73,198,131, 9, 20, +164,247,156, 40, 50,167,161,184,251,239, 26,211, 80,196,208,178,144, 26, 14,191, +249,208, 24,226,177, 65,208, 57,131, 44,226,215,113, 22, 13, 7,116, 1,117, 53, + 23,221,242, 37,169,110,188,140,232, 30, 29,244,213,147, 17,150,176,212,125,199, +100,211,246,229,186, 59,117,180, 60, 68,126,148,121,245,102, 73, 76, 19, 39,111, + 51,134, 58,144, 36,146,136, 38,158, 24, 98,247,140,227, 13, 30, 12,201,219,185, + 29, 48,211,200,142,119, 0,115, 24,115,181,205,102, 35, 94, 68, 35,186,148, 95, +176, 61, 15,244,207,254, 55,110,176,109,154,177, 99,111,168,185, 38,170, 50, 77, + 42, 63, 28,207, 64,164, 30,165,160,228,116,223,115,152, 29,182,247,206,242,201, +215, 61,103, 21,188, 52, 73, 19, 8,145,139,210, 98, 13,188, 80,151,100,224,254, + 90, 12,174,179,186, 77,120,252,227,222,201, 44, 62,184,244,160,127, 4,168,129, + 78, 58,102,243,124,150,153,131, 35, 64,190,133, 25,120,135,247,134, 64,145,143, +116,240, 29, 5,212, 6, 77,165,160,105, 16,172,167, 9, 72,209, 13,164, 23,220, +212,142,132, 72, 18,100, 52, 10,223,101,100,249, 55,249,237,195,174, 84, 56,206, +201,224, 75, 97, 68,131,166,170, 14, 19, 94,239, 53, 16, 50,187,224, 64,223,232, + 95, 15, 96, 12, } ; -// ../Source/Shared/GB_opaque.h: -uint8_t GB_JITpackage_211 [5161] = { - 40,181, 47,253, 96,128, 98,253,160, 0,170,150,160, 28, 45,144, 16,157,109,170, -125,175,197, 97, 79, 37,171,106,114, 66,190,220, 79,155,218,177,215,134,119,103, -141, 28, 96,135,157,130, 1, 96,104,184,216,136, 0, 0, 0, 0, 8,145, 8,128, -179, 1,202, 1,196, 1,155, 6,187,168,133,205, 10, 5,156, 84, 80,201,164,145, - 73, 33,179,210,252,216, 38,135,109,135,129, 58,152,250,248,218, 52,208, 88,186, -231, 34,171,104, 58,157,111, 5, 76,249, 48, 0, 77,237, 24,213,167,114,117, 17, -191,133,252,162,169,203, 13,147, 11, 0, 9,215,217, 54, 56,180, 86,132,105,247, -157,143,184,132,184, 34,156,178,191,239,144,250,109,252, 17, 88, 68, 33,160,139, -227,209, 96,211,102,249,128,211,184, 45,203, 92, 24,109, 37, 67,217,214,249, 36, -202, 22,255,142,165, 75, 43,217, 18,213,190,173,158,206,134,175, 13, 67, 58,218, - 76,175,119,132,166,161,161, 81, 57, 52,132,203, 60,168,210,195, 81,180, 29,134, -241, 80, 68, 90,239,162, 60, 28,213,199, 5,166,206,212,134, 95,101, 93, 30,138, - 10, 5, 34,153, 72,176, 71, 4, 34,185,170,135, 5, 70,225, 54,173,163, 95, 39, -232,250, 93,224, 71, 54, 44,208,213,181,233,116, 46,149,213, 18,221, 33,191,214, -115, 92,199,100,123,181,237, 85,218, 85,125, 71, 14,255,113,181, 5, 95, 26,210, - 14, 55,228,106, 7,187,187, 27, 24, 26, 34, 89,157, 11, 93,174, 6,187,103,187, -142,232, 75,193,174, 61,175,163,199,149,244,177,148,187,207, 46,130,249, 47,237, -235,185,190, 29,251,218,175,189, 15,105, 70,103, 82,212, 85, 59,198,135,109,241, -222,102, 52, 26, 20, 85,118, 21, 10, 77,141,109,102,131,108,106,170,156, 92, 64, -163, 34,148, 89, 48,152,158, 78,253, 94, 64,195,122,192, 28, 14,118,116,156,109, -185,254,223,231,234,158,230,112, 92,189,251,141,227, 34,227,121,240, 60,227, 58, -246, 79,227, 12,142,254,211, 97, 56,187,122, 96, 22,230,152, 92, 22,214, 84, 55, -117,133, 63,131,102,250, 97,118, 9,204, 86,124,174, 43,208,220, 92,192,145, 94, -141,197,241,165, 35,200,243,147,160, 6,206,157,147, 68,182,251,179,141,171,253, -252,245, 63,247,218, 2, 62, 56, 89,129,142, 54,116,209, 52, 4, 68,195, 1, 1, - 17,109,193,142, 16, 7, 29,207, 3, 2,107,160,101, 28,174,140,163,113,101,201, -162,124, 28,149, 18, 5,100,177,241,148,116,114, 49,235,139,146, 43,242,209,166, - 39,252, 75,111,126,209,165,157,135,142,187, 42,149,144, 7, 91,233,145,217, 58, -152, 12, 84, 97, 47, 10,113,160,143, 70,145,201,241, 49,117,145,226, 75,102,191, -157, 41,152,155, 42, 85, 23,250, 69,212,196,154, 28,168,108, 40,217, 68, 66,194, - 32, 3, 16,217, 50, 11,210,211,118,178,130,104, 23, 78, 7,194,230, 47, 18,237, -133,238,108,235,117, 48, 63, 44, 21,117, 57,112,104,187,106,185, 12, 92,156,198, - 98, 85,150,169,167, 37,201, 54,223,103, 1, 84, 40, 40, 58, 18, 20,114, 98, 98, - 81,205,155, 37, 27,237,195, 57,174, 28, 31,241,104, 27, 10, 3, 35,250,158, 3, -162,153, 90, 38,180, 29,233,177,113,180, 5,123,219, 66, 25,248, 9,139,148,222, -135, 46,178,204,166, 57,176, 96, 84, 18,204, 36,136,239,106,123, 84,223,171, 62, -186,119,109,231,144,196,254,193,126,201,220, 97,205, 49, 25, 42,221,171, 79,109, - 38,117,160, 9, 16,144,152,152,186, 33,161,169, 41,203,120, 58, 15, 62,115,179, - 8,129,180,142,197,247,247,237,213,149,129, 72, 86,132, 68,170, 92, 6, 46,202, -183,132, 68, 83, 20,169,250,105, 78, 31,154,104, 91, 71,227, 52, 80,199,227, 85, - 16,201,181,141, 61,114,125, 75, 72,177, 29, 93,194,105,155, 70, 81,105,141,108, -115,251, 30, 2,161,208, 74,149, 90, 43, 26, 93,250,248,204, 17, 21, 31,211, 76, -142,134,185,102,246,241, 42,245,235,160, 5, 82,181, 22, 68,193,214,193,148,194, -106,115,245,106,189,146, 93, 23,166, 53,208, 54,251,179, 77, 49,254, 92,169,216, - 85,121, 63,202,197,135, 66,212, 77, 30, 23,140,228,187, 30,161,248,100,153,163, -162, 72, 71,225, 99,114, 56, 83,179,193, 60,151,199,186,172,135,117, 93, 98,229, -226, 96, 20,172,171,228,205, 19,204,102,241,225,188, 74,218, 43,201,108, 22,157, -207,181,145, 79,167,179,161, 8,223, 33,216, 70,203, 68,178,142, 30, 28,139, 32, -217, 17, 61, 97,203, 54,161,140, 51,183, 82, 19,161,190,213, 17,152,230, 52, 5, - 96, 30, 69,116,245, 48, 59,134,200, 62,106,145, 86, 76, 58, 64, 64, 88, 21, 70, - 1,209,134,174,123,212, 65, 28,145, 67,221,104, 60, 80, 88,198, 36, 9,236,190, - 10,169,200,134,121,244,174,244,169,177,232,249, 27,210, 79, 75,225,165,190,125, - 17,172, 68,239,165, 61, 78, 56, 38, 46,133,185,250,189, 36,166,251, 1,123,158, - 5,179,139,157,177, 21,179,151,178,173,149,118,157,173,238, 34, 16,115, 73,100, -210, 73, 58, 73, 56,170,212,107,155,199,208, 65,191,153,204,230,238, 71, 84,108, - 7, 57, 76,242, 73, 40,147,199, 4, 50,137, 72,176, 73,105,245, 67, 37,179,123, - 37,106,129,118,229,249,133, 15,233,119, 5, 59,234,237,222,227,142,134,227,117, -145, 72,214, 46, 85,140,166,201,213,118, 19,142,182,180,227,144,126,141,160,169, -205,198, 98,163, 46,165, 93, 38,175, 62,198,103,155, 58,152, 59, 20,135,201, 54, - 25,168, 66,153, 72, 34,144, 5,155, 69, 5,247,200, 48,110,115,101,214,131,211, - 84, 42, 74,231,147,217,218, 85, 53,145, 68, 42, 8,102,175, 95,104,155, 27,231, -144,164, 17,152,180, 94, 91, 50, 25, 55, 49,217,199,147,101,166,177, 83,106, 40, -237,242,151, 7, 70, 34, 93,152,130,203,194, 46, 31,242,170,237, 28, 87, 52, 18, -133, 68,154, 40,184, 12, 92,146,171, 84,101,124,255,139,104,126,105,151, 94, 84, -118,144,139,141,135, 99,233,106, 44,221, 11, 31,151,103, 83, 26,109,135, 61,240, -116, 48,151,138,126,175,201,201, 62,158, 21, 63,235,234,112, 40,178, 29, 75, 96, -133,235,120, 30, 84, 96, 20,140,155, 72, 34,144,199,166,170,176, 9, 71,115, 37, - 55,125, 15,226,139, 66,171, 0,221,176,179,172,235,179,193,224, 10, 40,251,136, -194,101,154,186, 97,178, 93, 91, 82,144,120,149, 18,136, 92,219, 85, 6,200,229, -113,129,205,210,212, 25, 50, 52,101, 93, 31,171, 34, 81,201, 52, 7, 40,155,158, -152,112, 26, 0,146,172, 84, 78, 17, 6, 89,141,198,247, 94,117, 1,151,203,229, -114,153, 46,151, 57,231,156,115,206,105, 78, 14,135,195,225, 76, 28,142, 23, 58, - 24,202,108,178,138, 11,181, 74,180, 83, 62,129, 54,179,193, 22,234, 75,107,221, -152, 9, 19,162, 22, 28,122,189,142, 81, 18,249,181,183,195, 13,107,138,208,229, -180,248, 67,179,156,211,133,232, 18,141,149,104, 78,151, 49, 66,255,128,166,198, - 31,171,159,147, 6,130, 21, 56,167,138, 9, 24, 17,218,210,212,212, 14, 77, 97, -140,213,195, 12, 90, 97, 84,227,181, 20, 99,239,186, 41, 98, 64,152,246, 46,245, - 42,205,184, 47, 71, 73,228,184,218, 2,102,160,207,244,128, 62, 25,190,160,232, - 71,137, 6, 41,168,169,195,144,252, 40, 74, 52,225, 0, 48, 53, 53, 39,207,228, -112,141,145,138,249,103,233, 32, 58,198, 19, 14, 92,150,164, 75,124, 47,227,251, -208,118,164,119,184,182,254,232,213, 49, 4, 62,224,239,126, 40, 27,213, 61,131, -130, 84, 89, 93,139,107,198, 31, 98, 15, 71, 50,123, 39,102,116,133, 45,158,106, -177,104, 71, 88,120, 48, 22,207,248, 76, 71, 94,189, 15,145,227,200, 98,225,209, -216,220,217, 44,160,164, 98,168, 98,209,222,177,177, 0, 10, 79,215,195,169, 62, -118,202, 92, 98,104,166, 21, 53,245, 40,190, 88,138, 94, 87, 53, 95,139, 67,214, -187,165,166,218,199,216,111,232, 88, 84,210,203, 69, 85, 23,135, 41,129,153, 83, -215,183,234, 99,224, 76,142,153,180, 13, 66, 54,119,247,223,119, 62,102,124,175, - 95, 31,141,108,104,193,160,206, 27,148,127, 51, 5,187, 76,197,142,150, 46, 25, -255,118,216, 51, 17,165,112,252, 28,146, 34,246, 60,218,163,250,247, 69, 7, 97, -202,214,169,243,151,238, 8,197,235,249,194,132, 99,180, 17,165,252,163,189,222, -219,106, 57, 14, 15,165,240,187,191, 94,125,212,180,109,198,180,107,184,168,171, -170, 84,103,249,151, 0,224, 67,128,118,143, 12,187,250, 2, 34, 90, 67,129,234, - 1,127,101,245,247, 1,134, 77,168,211,183,179,162,101,108,102, 36, 73, 82,200, -178, 6,243, 51, 17, 12, 20,149,141,230,146,162, 69,125, 3, 1,195,144, 36, 16, -155,132,132, 73,156,163, 48,152, 98,138, 24, 34, 18,136, 4, 34, 66, 1,165, 81, -146,233, 0,106,156, 45,251, 89,126,122,136,133,176, 61,244, 32, 39,255,202, 62, -215,108, 47,164,122,211,141, 83, 43, 56,135, 25,247,116,189,216, 97, 26,198,230, -105,123,247,162, 84,111,187, 61,181,154, 19,172, 36,208,139, 96,123,200, 65, 70, -254,149,216,167, 52,217,235,163,116,216, 25,251,248, 88,157,149,104,241, 1, 9, - 17, 55, 0,155,222, 1,206,160,166, 84, 23, 69, 11, 68,227,133,174, 30, 33,142, -230, 34, 11,152, 15,138,200,234, 99, 16, 87,114, 30,126,242,101, 95,114,108,224, - 48, 16,211, 10,124,175,103, 49,217, 98,182,160, 75, 5, 36, 5, 89, 71, 74, 13, - 26,226,153,142, 10,237,160,139, 54,113,128, 12,207,216,121, 1,236,251, 51, 11, -114,202, 51,116,220,247,222,100, 62, 47, 91, 64, 65, 67,117, 2,186, 40, 98,165, -202, 76,199,223, 20,227, 20,182,130,124, 47,226,198,241,160,121,137,103, 68,145, -130,119,110, 31,217, 17,141,244,163, 98, 36,253,232, 26,198,144,130, 39,220, 57, -197, 5,239, 9,118, 54, 12,195, 38,174,222,106,116,220, 78,131, 31, 60,141,184, -227,218,186,138,253, 37, 55, 92, 7,217, 55,254, 0, 94,163,146,107, 43, 19,108, -190,232, 4,192, 90, 77,215,214, 75, 0,208,136, 5,228,152, 56,118,208,106,128, -101,192,212,202,220,255,105,128, 70,179,119,191,218,201, 25,253,108,223,186,110, -242,207, 19, 73,115,212,224,112, 85, 38,171,116,212, 28,153,191,224, 23,246,216, - 21, 74,176,139, 35, 40,207,128, 52,224, 89,123, 37, 50, 26,227,229,250, 16, 82, -140,134, 87, 32,109,105,139,253,214,186, 89,134, 69,241,172,100, 37,181, 56,238, - 13, 37,117, 95, 26, 6,187,103,200,219, 2,119,166,229, 27,218,121,204,235,110, -128,185, 79,121,251,174,203,197, 3, 79,162, 83,191,122,135,214,188, 60, 81,143, -189,134, 60, 74, 30,148, 31, 70, 10,164,120, 7, 3,223, 6,207,115,109,217,114, -213,246,236,138, 76,148,113, 94,143,151,105, 15,239,169,137,245, 51, 43, 14, 42, - 2, 95,115,182,106, 74,232,158, 52, 17,242, 26,242, 8,172, 66, 1,139,207,121, -152, 0, 47, 86,192, 88, 17, 90,176, 13,135, 77,156, 34,106,184,103, 12,106,230, -246,202, 44, 87, 22, 92, 90, 53, 14,158,191,213, 76,203,123,242, 42, 30,156,243, - 78,157,251, 31, 48, 72, 34, 20,211,202,193,219,150,128, 83, 34, 69, 41, 7, 20, -155,226,231, 74,117, 68,159,175,159,147, 49,145,232,143,188, 1, 33,216, 37,106, -202,100,207,222,121,164,183,188,129,101,137,212,190,142,166, 69, 49, 11,149,122, -210,157,252,145, 24, 85, 11,175, 40,241,147,173,171,101,237,148,192,144,115, 16, -182,215,207, 71,224,140,133, 11,181, 71, 58, 45,184,196,138,160, 93, 99,182,175, -216, 20,229, 74, 58, 96, 71, 25, 63, 26,132, 39, 40, 71, 52,147, 8,150,240, 79, -110,108, 16,103, 36,229, 69, 67,191,135,117,199, 66, 97,161,253,170,105,115,190, -207,137,224,169,237, 30, 33, 71,194,192,231,118,168,107,255, 87, 97, 42, 9,171, - 47, 73,247,114,252, 21,152, 13,201, 28,129,177,128,103,192,122, 72,135,215, 85, -159,204,119,249, 19, 26,125,203, 2, 50,187, 73, 15, 73,165,115, 12, 8,215,186, -153, 63, 10,142,198,215,175, 57,171, 86,107, 1, 5,107,124, 61,102,212,230, 24, -120, 61, 95,208, 49,220, 84,166, 14,105, 68, 73,245,226,148,249, 56,131,122,153, - 0, 8, 9,221, 8,182, 13,251,216,208, 46,238,118,136,183, 78,130,226, 38,135, -215, 18,172,143, 50, 19,127,226, 59,241, 50,163,105,144,116,145,171, 19,208, 51, -179,224,140, 61,104, 35,172,171,201, 95,170, 63, 29, 21,148, 37,191, 38, 45, 23, -130,103,191,218,165,218,252, 43, 0, 23,193,199,215, 93, 53,130,154, 49,154,116, -221,125,246, 55,199,238,148,155, 58, 91,185,119,236,107, 74,224, 60,157, 79, 46, -233,247,168,208, 36, 96, 59, 76,147,145, 34,110, 88,167, 22,222,162,155,222,235, -229, 82, 24,140,123,242, 60,215, 89,123,162,173,154, 81,191, 60,235, 27,121,125, -154, 28,173,104, 72, 66,224,192,206, 45,130,142, 31,238,137, 61,196, 67, 35,118, - 21,172,203,199,224,149, 45,166,254,152,148,135, 44,192, 21,226, 93,182, 27,201, - 15,167, 78,161,104,164,187,188, 48,194, 70,102,203,194,207, 37,180,143, 96,176, - 52,133,150,126,202,229, 32, 28,215,158, 78,213, 91,159,139, 40, 30, 73,251,196, -214,191,185,152,200,150,113, 96,140, 97, 49, 93, 61,122,235, 49, 88, 13, 37, 2, - 2, 66, 14, 17, 49, 0,224,175,176,194, 55,186, 38,121,208, 65,114,159,181, 40, - 55, 1, 63, 3, 46, 53, 55,102,195,133,253,151,253,163,193,173, 38, 20, 81, 14, -115, 8,228,167,184,200,254, 22, 34, 5, 16,149,252, 10,165, 4,148,251,132, 38, - 7,142, 76, 85,195,150,139,120, 3, 21,220, 20,107, 71, 89,246, 97, 78, 92,223, -217,170, 44, 80, 77,135,153,161,135,185,199, 81,240,184,150,120, 87, 89,220, 27, -238,208, 17,145,160,111, 74, 46, 17,171, 22,215, 18,131,218,239, 24,157,125,126, - 60, 91,203, 60, 79, 69, 99,208,226, 29, 78, 7,175,108,200, 5, 72, 0,211,121, -216, 0,196,204,151,227,135,251,230,219, 72, 66, 64, 51, 81, 87,110, 0, 28, 96, -173,142, 7,239,229,234,148, 1,100,139,218,175, 3, 10,212,212, 10, 81,200, 15, -133,222,209, 23,235, 11, 8, 41, 99, 92, 55, 86, 72, 32, 98, 7, 69, 54,121,218, - 12,254, 78,251,224, 72,129,242, 60,108, 94,137,175, 4, 55,130,188,149,214, 33, - 98,129,149,247, 26,143,140,155, 23,141,120, 83,229,119,251,233, 47, 68, 59,248, -106, 91,100,198, 42,118,165,149,218,167,102, 14, 80, 1,183,197, 50,248, 32,255, - 94,153,103, 83, 37,124, 28, 21, 62,107,143,170,243,154,195,229,247,136,203,169, - 79, 80,145, 87,131, 51,237,147,159,250, 15,209, 64, 46,211,146,189, 86,141, 51, -249,192, 53, 67,186, 96, 0, 81, 91, 60,101, 17, 24,172, 7,215,210, 81,156,138, -198,124, 82, 24,137,121, 90,201,188,200, 73,211,186,187, 62, 11,199,111, 13,160, - 79, 90, 92, 18, 98, 49,169,130,116, 51,135,120, 52,229, 70,254,162,102,169, 60, - 42, 97, 42, 85,141,122, 75,127, 55,224,192,192,125, 18,121,101,188,166,243,177, - 94,187,128,143,131, 28,156, 9,233,212, 61, 22, 17,153, 16,124, 63, 54,152, 39, - 98, 70,133,229,251, 62,200,110,137, 29,117, 73, 66, 91,130, 10,152,159,194, 18, -199, 64, 8, 30, 0,185,250, 76,165,154,137,105,175,117,171,114,165, 20,119,126, -114,210,195, 75,191, 93,156,105,148,140, 55, 52, 18, 76,244,205, 64, 27,231, 70, - 6,156,225,214,164,235,229, 54, 96, 35, 67, 38, 42,231,102, 32,150,182,185,226, -195,176,209,112,148,144,197,118,239, 92, 84, 54,229,205, 95, 92,235,117,193, 52, - 19, 98,176,108,226,117,243,105,174, 17, 43, 95, 57,124, 29,107, 39,144,186,107, - 1, 39,239,169, 84,151, 47, 58,226,197, 56, 24,117,170,148,199,213,180,216,177, -167, 51, 81, 98, 10,239, 67,105, 20,102, 4, 12,138,105, 53, 8, 81, 81,115,163, - 94,135,175,235,166, 4,242, 65,248, 42,122,145,221,106,228, 18, 97,155,102,201, - 67,155,140,246,185, 65, 40,114,229,237,142, 37,136, 11,115, 16, 1, 74,180,250, - 38, 58,123, 79, 42,107,131,132,194, 87,232, 71,132,173,187, 97,232,183,254, 86, -150, 57,170,146, 82,134, 89, 38, 79, 73, 49, 82,219,191,119,234,168, 88,113,169, -254, 95,217, 53,229,240, 67,167,166,207,156, 66,112,249,149, 86, 65,241, 94,192, -234, 39,216,189, 12,235,191,132, 49,255, 51, 4, 39,143,214,125,251, 29,202,250, -208, 24,104, 9,214, 59,156,236,119,134,239,224,232,186,155,158, 81,218,214, 94, - 54, 30,111,244,124,153,183,245,192,211, 38,122,195, 52, 75, 49,240,232,155, 82, -192, 34,119, 14, 25, 7,222,147,220, 99, 62, 73,240, 71, 73,150, 74, 0,217,186, - 36, 57, 37, 71,168, 44, 58,217,240,135, 48,156, 18,182,207,183, 80,217,243, 4, -178, 69,243,159, 81, 25,176,204,183,174, 31,203,218, 54, 82, 58,120,166, 53, 18, -194,182,187,207,145,253,186,135,247, 72, 66,215,196, 95, 8, 29, 18,220,171, 69, -234,239,147, 21,167,164,185,254, 74,172,242,150,116,177,147, 3, 91, 79,199,129, - 82,251,193, 23, 32,134, 36, 62,117, 68,135, 12, 97, 76, 49, 58, 12,215,212,139, - 12,200,253, 68, 56,228,118, 48,228, 71,233, 9, 94, 32, 22,165, 83, 20, 92,128, -128, 79,116, 34,148,198, 99, 65,157,116, 2, 60,232,172,237, 87,119, 35,208, 93, -108, 58,123,235, 68,143,137,200,231,212,159,176, 83, 64,127,157,204,216,144,156, -170, 26,115, 64, 60, 26,111, 57, 42,145,197,177,237, 46, 60, 41, 77,169, 80,150, -157,241,125, 51,150,239, 70, 73,120, 72,148, 27,200,138,114, 21,223,212, 54,248, -169,167, 4,166,108,191,224, 85, 6, 1, 77, 66, 46,231,138,141,158, 61, 37, 43, - 18,252,153,160,237,142, 24, 67, 45, 96,138,122,106, 66, 44,128,120, 56,195,131, - 13, 20, 57, 52, 41, 95, 6, 80,154, 25,191, 37, 12, 72,180, 74,142, 34, 18, 77, -178, 65, 21, 76,191,155, 9,114,141, 97,250, 82, 53, 71, 42, 53,210,132, 0,143, -126,249,163, 48,137,201,235, 11, 28, 42,140, 70, 56, 12, 80,244,128,112,248,194, - 15, 92,108,187, 69,104, 13, 27, 53,215, 28, 21,150,118, 69,229,220,244,190,155, - 60,251,157, 24, 23,240, 40, 36, 75,101,145, 40,177, 36, 98,251, 92, 27, 32, 15, -226, 33, 57,177,225,158, 5, 12,181,242,251,240,159, 86,115,100, 12, 20, 67, 28, -122,151, 35,204,117,121, 8,215, 3,126,240,230,161,203,245,207, 42, 2, 16,171, -139,116,109,248, 62, 96,112,145,138,101,125,204, 67,151, 71, 62,226,106, 78,214, -102, 47,247,126,108, 15, 16, 43, 96, 18,245, 41, 71,176,193, 43,218,168, 83, 14, - 73, 59,120, 53,168,181, 91,234,216, 21,196,178, 30,113,202,109,108,204, 22,159, -154,255, 71, 77, 67,252,148, 36,178,142,204,169,124, 70,145,167,141,129,206, 19, -242,210,222, 76, 9,150,180, 0, 31,155,124, 57,133,183,195,204, 40, 22,236, 79, -240,235,113, 75,253, 98,152,218,252,119, 41,121,168,152, 63,120,215,159,246,247, - 93, 99, 88, 57, 15, 58, 52, 37, 84, 29, 7,190,115,235, 69,110,119,151,210,167, -135,160, 9,239,232, 30,211,242, 80,157,175,118,161,144, 69, 61, 1, 78, 4,250, -192,251,139, 13, 59, 62, 96, 27, 69,150,140, 32, 54,146,190,150,223, 2,201, 69, - 33, 8,155, 94,153,254,135,241,229,202,127,171, 30, 4,247,184, 28, 0,133, 21, -122,212, 20,235,167, 6,148, 64,250,231,186,227,251, 35,231,250, 37,240, 40,126, -148,184,230,134,197,123,177,205,221,191,102,212, 46,218,210, 51,191,180, 20,127, - 72,158,102,188,172, 30, 21,216,176,142, 9, 40,226,249,200,120,198,205,198,206, - 47, 1,241, 57,242,180, 68,167, 97,117,148,249, 15,143, 23,130,215, 67,206, 9, -166, 15,248, 70, 22, 87, 18, 35,150,137,135,110,216, 35,251, 56, 21,184, 0,102, -252,108,101,176,222,144, 5, 16,147,178, 3,194, 67,112, 73,145,212,208,101, 18, -149,170,227,111, 47,237,230,192,178,150, 27,222, 19,100, 64,178, 67, 62,186,118, -219,233,199,168,221, 44, 65,205, 67, 3,179, 65,196, 56, 73, 2, 87,168,157,193, - 6, 79, 98,195,138, 72,154,213,100,231, 37, 72,134,241,130, 45, 43,241, 98, 68, - 79,237, 26,165,167,116, 4,201, 31,205,193,236,175, 43, 80,226,131, 71,172,161, - 76,112,236,104, 27,206,100,184,226,123,253,117,160,169,212,168,169, 82, 10,175, -136,146, 6, 53,205, 9,225, 37,101,224,254, 70, 38, 35,199,239, 15, 77,187,198, - 13,148, 38,105,237,254,243,200,105, 85, 84,217,109,197, 63,172,215, 12,114,135, -190,138,192,238, 33,240, 12,208,245,180, 89,155,249, 14,122,147,175,122,227,252, -164,127,153,190,151, 84,215, 92, 82,253, 27, 23,112,162, 64,176,129, 69,167,249, - 37, 86,229,112, 97, 95,130, 94, 19, 33, 11,247, 21,219,181,220,199,116,158, 50, - 62,181, 91, 17, 94, 44, 37,130, 96,238,126,212,173, 7,220,162,120,197, 9,244, -166, 15, 8, 90,167,204, 79, 51, 43,193,224,152,186,142, 65,137,218,166,126,174, - 52, 1, 91, 90, 18,113,229, 58,152,236,149, 25, 49, 69,168,231,186, 99,136,244, - 2,108, 89,189,174,200,101,179, 37,143, 15, 73,189,152,253, 44,107, 99, 34,155, - 81,163,147, 8,155,182, 2, 34,212, 42,142,107, 21,246,100,154,169,130,138,151, - 39, 80, 24, 92,120,109,134, 84,128,254,172,218,175,244,121,124,151, 76,253, 29, - 33,193, 28, 67, 77, 84,161, 38,127, 37, 92,104, 78,184, 88,213, 41, 56, 58,223, -170, 21, 85,116,208,168,116, 24, 42,233, 9,151, 54, 76,144,101,113,102,184,238, -144, 14, 31, 66,117,168,129,173,199,191,152,144, 59, 37,154,192, 32,237,194, 98, -140,214,223,209,134,186, 36, 87, 82,179, 64,101,104,233,172,223,121,218,156,163, -114, 82,228,125, 65,159,137, 2,243,193,219,207,106,169, 12, 15,170,195,213, 43, - 62, 23, 87,192, 97, 64,248,245,159,167,254,104,218, 13,178,169,165,178, 24,222, - 14, 53,250,236,195, 71,178,185,225,188, 77,116, 38, 93, 4,223, 46, 2, 80,253, -169,153, 51,199, 2, 76, 28, 27, 80, 37, 81, 36,211,240,109, 43, 39, 94,180,145, -136,174, 37,229,169, 99,137,247,100,211,226, 95, 61,119,126,194,217,166,120,101, -188,181,248, 17,189, 87,150, 91,115,143,208,141,230,192,109,173,234, 56,163,249, - 91,161, 13,170,172,125, 32,198,154,158,188, 80,132, 75,136,249, 30,134, 54, 1, - 76, 72,124,225,105,116,204,190,246,184,147,103,234,214, 18,251,134,147,192,244, -235, 39,223, 33, 49, 65,106,225, 39, 97, 80, 17, 44, 64, 85,129, 24,225, 70,242, -189, 69,112, 8, 37,212,107,136, 3,160,171,193,100,158, 86,130, 95,181,215, 43, -116, 29,170,209,197, 89,188,253, 95,145, 94,154, 69, 38,148, 42, 31,124,173, 58, -237, 45, 40,180, 27, 13, 24, 20, 26, 59,188, 6,222, 4,181,170, 23,153, 95,202, - 10,223,244, 96,207, 46, 7, 64,161,151, 57,164, 39, 10, 34, 6,178, 26, 2, 67, - 48,176,159,224, 31, 52,193, 41,159,174,242,252,171, 74, 64,249, 20, 60,191,114, -144,243, 53, 31,228,192, 22, 73,162,223,133,162, 60,139,129,102,139, 48, 4,151, - 77,128,177,135,248, 90, 5,199, 6, 12, 34,184, 93,109, 44,227,200,146, 18,118, - 49, 68, 59, 95, 82, 49, 87,162, 50,242,219, 49, 40,190,176,245,134, 70,120,172, - 81, 80,243, 7,126, 12,158,103, 20, 79, 17, 12,156, 39,182,110,199,210,162,143, - 20, 5, 6,246,232,120,235,204,228, 15, 74,149,139,208,162, 65,130, 80,220,158, - 90,254,198,118,224,216,154,191, 71,251, 32, 67, 15, 19, 5, 58, 51,117, 61,144, -136,244, 65,115,148,179,129, 56, 63,184, 1, 63,112, 41, 78,124, 41,202, 9,250, - 1, 58,104,198,117,153,169,115,224, 13,177, 11, 66,113,129,251, 80, 45, 18,107, - 14, +// ../Source/Template/GB_transpose_bitmap.c: +uint8_t GB_JITpackage_209 [789] = { + 40,181, 47,253, 96,184, 6, 93, 24, 0, 38,169,123, 40,240,206, 56, 7,136,136, + 56, 98,117,185,214,220,179,202, 27, 27, 33,113,188,145,237, 33,193, 44,236,201, +109, 34, 34, 86, 79,102,168, 88,224, 25, 72,115,248, 11,114, 0,113, 0,105, 0, +176,190, 75, 44,199, 45,246,100,173, 82,241,157,156,197,135, 74,130,225,226,208, +248, 99,249, 50,230,183, 57, 78,196, 92,202,119,170, 32, 2,137, 84, 8, 4,144, +200,167, 76, 58,117,227, 7, 50,220,241, 30,226,154,118, 81,115, 42,243, 30, 40, + 92,133,214, 65,194,215,194,154,225,142,158, 76, 84,233, 67,178, 86,120,109,194, + 83, 92, 67,167,166, 73,224, 73,125, 97, 38, 85,106, 93,151, 84,216,117,220, 96, +124,105,189, 19,218,198, 40, 14,127, 60,162,234,241, 8,125,203,125,225,118,222, + 92,147, 30, 10,122,199, 75, 44, 12, 22,205,117,109, 54,239,157, 69,219,151,237, +192, 27, 75,232, 59,105, 6,162,114,179,252,161,183,204, 97,182,116,114,226,100, +192,250,197,156, 44, 84,239,214, 27, 51, 56,232, 25,175, 79,186,168,125, 96, 21, +218, 84,147,229, 7,254,198,107,242,105,122,210, 47, 15, 66, 83,161, 96,153, 10, + 70,113,144,174,193, 52,100, 50,239, 92,211,205,217,194, 95,239,255, 31, 69, 24, + 17,196, 17,169,152,203, 2, 24,141,198, 21, 38,135,220,146,166, 44, 54,236, 43, +177,244,104,204,101,247,211,148,174, 6,217,114,141,117,158, 41, 89, 74,104, 97, +125,237,232, 97,199,129,182, 2,104,177, 31, 57, 26,110,109, 41,119,111,233,103, +228,186,170,164,132, 45,101, 4,253,186,124, 97,118,230,250, 27,125, 95,218,221, +179,129,221,153, 99,161,188,165, 27,117,103,231,145, 52,123, 92, 16,181,111, 58, + 79, 93,150,177, 31,218,252, 70,174, 79,181,211, 81,148, 17,109, 81,155,156,241, +234,169,139, 5,155,120,184, 92,158,197,147, 94,169, 5,134,244,173, 33, 99,185, +100, 34, 30, 70,131, 89,190,177, 54,183, 8, 96,189,226,186, 42, 94,165,176,126, +251, 70, 11,198, 58, 49,107, 72, 31,120,124,227,157, 91,127,245, 83,164, 58,210, +155, 52,118,188,180,106, 51,110,143, 78,192,173,199,169, 67, 69,233,122,200,246, +228, 78,124, 51, 71, 97,114,235,167, 40, 74,122,132,165,162,169,104, 48,239, 50, +153,106, 11,251, 98, 87, 13,123,168, 17, 49, 51, 8,161, 25, 9,102, 70,146, 20, + 20,210, 1, 64, 68, 48,200, 57,155, 7, 50, 8, 93, 75,147,198, 10, 12,209, 4, +243, 41, 40,255,122,217, 0, 56,147, 73, 47,158,130, 31,232,151, 85,110, 86,232, + 98,207, 47,226,158, 3, 6,220,220,162,184, 87, 93,129, 98, 68, 27, 18, 3, 85, +210,205, 53, 58, 20,165, 12,169,143,131, 25,100,213,226, 53, 1,170,136,179,179, + 4,123,129,147,207,204, 27,205,146,200, 45,248,101,122, 25, 86,148,166, 49, 10, + 72,122, 99, 90,206, 50, 81,178, 26,167,197,145, 90,148, 45, 64, 79, 81, 92, 84, +233,148,249, 30, 16,148,116,129, 48, 30, 48,155, 61, 0,166, 83, 72, 54, 24,221, + 1,163, 54, 39,140,157, 27, 18,250,114, 10,158,172,182,212,192, 1, 63,201, 78, +157,144,167,163,216,188,197,146, 36,141,175, 34,239,242,153,132, 4, 39, 25, 0, +245,160, 62,248, 2,206, 68,175,240,226,183,156, 7,137, 90,197,204,218,143, 94, +213, 94,119,218,196,199,203, 59,182, 72, 22,144,126,151,247,116, 57, 59,232, 56, +243, 10,180,128, 62, 4, 48,218,210,157, 23,242,216,154, 72,111,101,181,189, 13, + 4,134, 49, 94, 34, 56,210,200, 65,243, 40,102,194,125,192, 11,247,172,222, 74, +226, 77, 88,138,196,215,176, 3, 3, } ; -// ../Source/Shared/GB_partition.h: -uint8_t GB_JITpackage_212 [404] = { - 40,181, 47,253, 96,228, 2, 85, 12, 0,118,150, 69, 32, 16,179,115, 63, 35,144, - 35, 88,139,216, 18,207,165,216,237,201, 58, 94,130,152,140,247, 61,126, 69, 96, - 68, 0, 0, 8, 24, 4, 61, 0, 63, 0, 57, 0, 30,154,184,132, 61,164,221, 78, -211,147, 79, 9,214, 64,104, 27,234, 41, 46,254, 60,186,145,240,237,142, 4,114, -198, 82,239, 32,174,182,111,233, 51,182,239,117,217, 63,219, 25,215, 95,154,100, -187,190,125, 61,186,177, 32, 20,159, 38, 24, 77, 83,142, 7, 99,194,152, 68, 48, - 72,198,213,102, 13,128,148,100, 69,172, 97,232, 6,251,229,113,103,125, 45, 87, - 70,196,159,101, 76, 55, 34, 74, 2, 34, 85,246,120,252,113,228,223,213, 50, 29, - 57,199, 97,159, 3,139,178, 34, 66, 69, 89,151,152,248,249,117,220,165,211,213, - 24, 31,184,140,241,255, 97,229, 82,237,251,251,121,157,125,125, 57,237,172,125, -227,165,175, 82,246,180,107,167, 9,134, 56,142,118, 56,252, 42,178, 23,117,214, -238,185,182,167,235,127, 85, 75,207, 0,184,176, 4, 16,102, 93, 45, 3, 32,156, -149, 64,218, 88, 69, 86,225,211,254,243, 58, 92, 82,191,193,112,195,171,173,246, -157,118, 90,219,172,182, 40,171,200,218,226, 85,109,182, 59, 95,234,241,166, 59, -199,245,231, 82, 78,151, 82,218,120,201, 1, 46, 32, 64,132, 8, 76, 29, 31,224, -134,155, 33,134,242,193,225,185,200,134,181,223,176,204, 75, 46,137,209, 29,248, -173,127,100,221, 13, 34, 64, 4, 27,227, 18, 78,255,194, 12,192,249,110,203, 2, - 55, 27,238,189, 97,117,172, 23,156, 97,129,213, 39,186, 19,221, 11,168,142,118, -188,132, 71, 76, 34, 66,105,229, 90, 6,195,125,177, 67,150,128,160, 0,244,125, - 93,255,177, 86, 51,104, 50,207, 76,181, 81, 90,109,159, 0, 5, 48,133, 69, 90, -172,168,115, 3, +// ../Source/Template/GB_transpose_full.c: +uint8_t GB_JITpackage_210 [737] = { + 40,181, 47,253, 96,202, 5,189, 22, 0,118, 39,119, 40,208,208, 58, 7,120,199, + 49, 98,127,185, 12, 50, 71,203,102,156,207, 89,248,166,119, 59, 75,149,220, 5, +127,217,150,142, 76, 26,108, 59,200,213, 48,139,188, 18,110, 0,108, 0,102, 0, +150, 99, 23,123, 50, 87,169,248, 78,222,162,165,154, 96,192, 60, 56,254, 88,190, +156,249,109,143, 19, 51,151,242, 58, 85, 32,137, 72, 42, 4,130,136,228,211, 38, +157,186,241, 3, 25,254,184, 30,242,154,126, 81,115, 42,187, 44, 11, 94,133,246, + 97,194,215,194,154,113, 71, 79, 22, 85,250,144,172, 21,158,155,240, 20,215,208, +169,105, 18,184,164,190,112,147, 42,181,176, 79,164,244,116, 26, 95, 90,239,132, +182,181,133,135, 67, 32, 81, 5,129, 4,167,220,105,247,133,221,121,115, 78,122, + 40,232, 29, 63,185, 48, 92, 52, 32, 42, 59,203, 31,122,203, 28,102, 75, 39, 39, + 82, 6,172,103, 76,138, 66,117,221,122,107, 6, 7, 61, 35,118,202, 23,185, 15, +172, 66,155,106,178,252,192,223,136, 77,151,116, 7, 45,171, 80, 62, 89, 44, 17, + 16,183,172, 95,222, 96,189, 23,150, 74, 72,215,100, 26,178,236,186,215,116,115, +182,240,216,245,255,143, 34,141, 40,242,144, 84,236,109,176, 94,159, 4,236,109, +247,211,148, 46, 7,217,122,173,125,158, 41,217,194,250,250,209,195,143, 3,109, +165,156,139,253,134,236,130,201, 32,174,140, 70,187,188, 99,110,118, 17,224,209, +176,107, 75,189,123, 75, 63,171, 74, 74,216, 82, 70,208,177,203, 23,110,103,175, +223,209,247,165,223,103,124,123, 54, 91,180, 13,191, 51,199, 66,121, 75, 59,234, +206,207, 35,233, 6,185, 32,106,223,116,158,186, 44, 99, 63,180,249,141, 94, 7, + 81,180, 17,117,145,155, 12, 16,109, 76, 1, 14,136,116, 10,115,209, 40, 44, 24, +204,101,113, 93,210, 43,189,117, 11,172, 86, 28, 3, 27,120,188,227,157, 91,191, +234, 20,169,142,116, 77, 26, 59, 94, 90,185, 25, 59, 72, 39,224,214,227,212,161, +162,132, 61,100,123,114, 39,190,153,243, 4,202,173,159,162, 40,233, 16,151,138, +166,162,201, 92,152,255,147,169,182,176,175,134, 85, 13,135,227, 9,148, 71,110, + 73,211, 22, 27,246,149, 88,122,184,107,168, 33,173, 67,200,144,140,200,136, 72, +146, 36,173, 6, 48, 68, 96, 20, 59,237,162, 8,105,141, 82,103,102, 74,196,148, + 71, 73,249,207, 3, 73,106, 72,120,250, 3, 60, 3,204, 26,141,201,133, 98,235, +141,169, 56,191,136, 89,136, 3, 63,177,193, 82, 37,243, 67,179,149,224,112, 87, + 82, 94, 76,148,119,252,101, 2,182,124,198,118, 53,135,133, 19,164,161,203, 19, +228,200, 18, 99, 22,237, 41,148,139,204, 84,103,232, 15,178, 34,125, 65,144,227, +248,195,138, 17, 46,219, 32, 96,171,132,218, 33,205, 93, 57,225,125,143,130, 22, +214, 75,118,203,113,132,178, 89,135, 41,161,127,220,209,133,108,230, 17,213, 68, +194,148, 14, 67,204,244,180, 66,251,242,190,239, 16,125, 25, 0,101, 10,170,110, +165,234,143,211,127, 57,222,158,143,224,222,195, 69,242, 47,112,201,227, 20,210, +241, 22,114,204,228,132, 45,208,219, 11,171, 79, 98,103,226,129,123,123,158, 34, + 2, 66,101,104,130,184,244,131,221,106,129,195,152, 45, 8,174, 48, 25, 52,223, +207, 76, 83, 7, 64, 56,199, 72,207,105, 62,251,120,243,213, 1,150, } ; -// ../Source/Shared/GB_pun.h: -uint8_t GB_JITpackage_213 [371] = { - 40,181, 47,253, 96, 32, 2, 77, 11, 0, 38, 85, 64, 31, 16,149,115,231, 77,110, -182,132,103, 62, 91,185,179,136,150, 3,254,141,193, 67, 34,235, 55, 62,232,136, - 0, 0, 16, 56, 8, 61, 0, 54, 0, 51, 0, 24,227, 19,226, 80, 56, 80, 9, 67, -225,112,129, 37,125,154, 11,122,142, 87,140,143,174,206, 62,123,249,100, 97, 72, - 26,151,246,228, 67,161, 83, 62,205,162,189,155,197,117,120,249,170,141,250,138, -171,226, 77,219, 52, 30, 39, 16, 28, 69, 32, 4,240,239,243, 29,106, 63,149,253, -185,215, 13,123, 32,236,239,211,213,155,113,133,234, 64,233,101, 61,141,113,133, -212,141,219,172, 48, 66,233,100,181, 86, 66,105, 28,148, 10, 42, 72,234,212,202, -103, 95,157,173, 28, 11,115,251, 64,181, 84, 42,100,200,239,147,212,230,205, 52, -193,224,210,223,179, 62,212,158,114,163, 94,253,152,125, 78,149, 16,190,235,117, -249,171, 14,111,207,103,101, 28,122,111,156, 79,205, 42, 53,198, 13,206,197,133, -172, 82, 64,186, 52,144, 46,152, 54,229,141, 10, 1, 14,178,153, 96, 40, 81, 33, -199, 5, 56, 87, 5, 62,223,167,217,123,245,188, 86,140,179,115,114,122,191,224, -108, 53,145,242,187,114,222, 25,191, 3, 41, 32, 48,132, 24,196,152, 29,135, 0, -128, 2,144, 26,196,141, 52,234,177,183,173, 17,235, 65, 66, 97,123,102, 32, 32, - 92, 31,205,128, 42,141,114, 51,241, 64, 81,145,225, 18,142, 89, 20, 3, 36,232, - 88, 1,249, 27,145,155, 12, 44, 72,124, 0,123, 1, 54, 65, 98, 7,175, 67,105, -141,150,230, 56,128, 67,224,225, 48,164,244,122, 52, 58,200,166,217, 60, 51,105, -123, 91,173,187,131,234, 31, 32, 40,122,221, +// ../Source/Template/GB_transpose_sparse.c: +uint8_t GB_JITpackage_211 [833] = { + 40,181, 47,253, 96,133, 15,189, 25, 0, 6,102,116, 33,224, 90, 23, 3,144,119, +226,106,206, 2,139,180,157, 49, 67,110,137, 91,178,143, 8,158, 82, 5, 26,189, + 29,195, 24,131, 48,194, 11,108, 0,103, 0,104, 0,151,116,183,105,199, 11,193, +106,211,138, 23, 67, 0, 77,190,194,104, 87,217,106,203,185,222,100,233,114, 94, +150,244,156, 34,113, 72, 16, 26,136, 67,226,155,168,157,211,119, 85, 39, 47,208, +187,200,125,162,110,231, 28, 72, 49, 18, 18,215, 92, 1,237,190, 42, 48,195,231, + 93, 37,198,245,163, 89,207, 89,236, 58,183,109, 1,170,109, 93, 69, 13,159,157, +119,135,213,185, 98, 29, 90,125, 98,109,214,188, 67, 73,229, 6, 67, 70, 48, 24, + 2,228,182,168,151, 85,149,178,250, 27,226, 93,119, 61, 86,155,201,109,106, 39, +121,158,104, 87,102,189,151, 36, 31,199, 17, 2,125,119, 76,191,197,155,183,182, + 89,240, 29, 46, 24,219,188,223,218, 60, 69,239,241,141, 67,249, 66,150,195, 96, +223,168,118, 10,200,161, 31, 24,130,151, 80, 82,209,222,225, 80, 64,144,122,127, +100,139, 93,228,243,249,235,123,250,255,207,178, 87,118, 40, 36, 8,150, 20, 43, +166,119,100, 27,164, 11, 48,189,251,200,243, 6,131,209, 21,117,247, 40, 22,253, +222,171,109,151, 51,105,222, 33,143,238, 20, 35, 6,163,105, 71, 39,209, 49,125, +247,157,235,214, 33,197,143,111,167,115, 36,213, 14,134, 22, 73,229,221, 77, 38, +206,161,209,155,247,218,222,188, 77,123, 75,238,103,187, 58,111,119,205,118,223, +215, 54, 24, 64, 30, 63,188,251, 73,123, 62, 73,143,143, 14,162,235,207,187, 91, +177, 98,125,202, 39,107, 60, 3, 89, 22, 35,152,167,185, 96,120,154, 75, 72,225, +120, 58, 31,245, 66,239,146,217,116, 60,124,135,171, 44,171,190,228,254, 57,142, +110,169, 67,122,200, 38,222, 93,183,214,108,169, 26, 45, 41,234,111, 33, 74,101, +150,182, 44,107,174,248, 24,117,190,162, 74, 53, 99,192,120,247,197,139, 58,119, +181,186,180, 89, 22, 35,221,209,180, 27,197,231, 60,172,253,219,132, 33,204,247, +209, 22,213,142,207, 22, 5,220,124,160,134,114, 58,225,134,100, 71, 51,128,142, +160,241,161, 65, 83, 52, 65, 65, 65, 65,146, 74, 26, 3, 48, 68, 96,144,178, 18, +221, 29,124,239,248,148, 66, 9,122,140,206,212, 93,194,206,235,208,206, 42, 81, + 3,197,249,164,189,105, 74,207,113,230, 52, 23,231,159,222, 4, 89,155, 71, 90, + 19, 68,154, 63, 34, 29, 9, 30,226, 10, 31,126,208, 33,148,126, 92,222,223, 6, +255,238,151, 12,245,118, 22,131,168, 34,104, 20,255, 66, 19,161, 39,113,232, 34, +130, 22,196,163,247,208,104,230, 95,131, 88,190, 8,222,206, 86,224, 80, 27, 78, + 84,130, 31, 80, 57, 62, 62,202, 40,219, 72, 27,114,207,244, 22,112,196, 75,202, + 76, 58, 12,243,233, 72,134,150,106, 49,141, 24, 60, 16,131, 66, 24, 43,137,187, +126,137, 49,146,102,171,242, 38,218, 81,238, 73,157,177,147,156, 73,162,216, 70, +132, 34,252,151,229, 51, 68, 64, 46,131, 64, 37, 78, 79, 59, 35,241,254, 49, 55, + 26, 7, 61,159, 83,125, 92, 59, 76,223,161, 37, 16,254, 24,253, 54, 20, 88,136, + 50, 10,181,211, 86,250,124,192, 68,164, 39,154,176,167,203,159,168,163, 32,223, +227,240,237,180, 99,163,213,151,112,179, 25,194, 10,248,155,104,109,133,127, 33, + 2,248,143, 56, 8,219, 14,111,153, 86, 8,198,139,113, 8,129,112,112,141,104, +108, 28, 6, 4, 19,166, 7, 71, 25,132,244,160,247,117, 3, 15,243, 24,179, 5, +113, 7,204,128,181,188,195,112, 96,201, 9,107,114,160,191,144,190, 32, 46, 19, +159,218, 7,136,153, 45,110,104, 52,104,114,126, 96, 82,171,203,241,207, 45,192, + 61, 71,212,186,118, 1,146, 98,133, 82, 20, 52, 1, +} ; + +// ../Source/Template/GB_transpose_template.c: +uint8_t GB_JITpackage_212 [761] = { + 40,181, 47,253, 96, 93, 9,125, 23, 0,198,226,104, 32,224, 26,231,208, 73, 35, +108,123,143,187,231,101,203, 18,149,110,132, 94,168, 31, 50, 55,107,180,120,168, + 70,140,113,136, 49, 14, 97, 0, 95, 0, 91, 0, 30,175, 44, 55,135,222, 23, 68, +205,208,195, 48, 59,214, 96, 40, 24, 7,199, 66,193,120,161, 35, 28,235,185,146, +148, 35,178,183,192, 91, 85, 83,116,108,203, 56, 19, 80,148,246,242,224,182, 82, +220,248,206,113, 3,136,245,173, 80, 20,229, 61, 42,143,177,216, 58, 86, 40, 12, + 50,194,109,217, 17,196, 26,209,254,224, 43, 67, 81,197,151,227,174, 98, 83,105, + 47, 55,185, 60,145, 0, 28, 18,137,246, 74,213,153, 85,146,158,193,139,182, 5, + 71,241,100, 38,223,172,128, 76, 34,110,227, 54, 14, 51,185,252, 99,143,142, 90, +246,203,168, 0,136, 8,156,189, 49,236,232, 20,188, 39,120,255,213, 55,247,120, + 86,213,190,173,223, 61,238,145,142,103,101, 79, 36,254, 31, 0,112, 1, 20, 8, +198,129,193, 78,138,217, 31,150,231, 55, 47,101, 47,115,224,166,220, 77,206,161, + 68, 1, 33, 2,158, 44, 36,226, 62, 91,230,155, 30,205,178,122,159, 97, 40, 58, +217,178,170,173,164,227, 49,143, 50, 60, 58, 79,220, 33, 79, 10, 41, 12,204, 8, + 76,167, 0,209,151,242,165,181,123,223,249,110,238, 58,249,122,207,167,223, 30, + 85,213,118,216, 13,199,102,123,249,206,126, 4,198,154,116,205, 41,121,127,231, +239,120, 58, 22, 50,181,156,170,247,116,182, 20,207,154, 1,163, 0, 0,120,253, + 39, 91, 95,240, 60, 18,121,115, 39,197, 78,217, 74, 34,252,155,218, 33,150,197, + 22,120, 91,223,239,201, 45, 74,213,157, 39, 80,214, 17,101, 38,175, 64,135, 8, +195,241, 59,120,235,233,108,229, 57, 35, 11,183,101, 92,156,138, 39, 84,217,112, +162,140,230, 23,235, 35,215, 52, 77,211, 14, 57, 75,114,200, 94, 32, 60,114, 86, +246,219, 77,123,155,173,225,246,246, 1,109, 1,128,137,160,193,173, 81, 70, 70, + 68, 68, 36, 73,146, 74, 99, 48,132, 16,163,212, 89, 7,123,167,231,239, 60,138, +159,162,214,104, 54,188,220,102, 44, 37, 99,203,101,188, 65,144, 18, 57,194, 6, + 79, 16, 94, 24, 5, 25, 25, 55, 6, 49,136, 28, 22, 34, 43, 71, 14,254, 56, 43, +106, 80,242,242, 33,128,114,123,100,183, 21,208,130,161,113, 19, 71,238,216,229, + 96, 27, 99,194, 9,252,192, 70, 6, 13,165,106,115, 78,102,196,151,214, 96, 26, + 64, 22, 8, 27, 5,141,145, 89,108, 57,200,161, 88, 24,158, 41,134, 96,132, 16, +244,165, 21, 34, 62,121,200, 18, 9,241,146, 15, 12,206,194, 91,200,194,172, 69, +184,187,104,114,165, 48,113,229,114,121,155, 56,110,187,203, 21, 31,241,163,251, + 80, 35,188,236,122,102, 42, 52, 73,136,151,249,214, 64, 18, 7, 80, 17,224, 16, +144,217, 5,217, 88, 26, 24, 65, 0, 34,211,211,233, 45, 94, 93, 36,185,117,108, +123,192,211, 14,191,239, 78, 84,211,151,154,231,135,238,149, 20,215, 79, 0,214, +179, 41, 69, 48,168, 15,192,179,162,208,117,237,212,131, 59, 20, 8,225,224,133, + 59,165,105, 62,116,108,168,181, 3, 4,236, 2,162,153,180,234,121,192, 20,206, +158, 12, 88, 16, 30, 13, 89,170,119,167,242,173, 44,131, 72, 73, 53, 24,127, 22, +209,217, 17, 65, 19, 19, 85,228, 15, 49,253, 33, 75, 29,156, 93, 77,133, 34,212, + 65,147,243, 51,211, 61,148,149,115, 16, 35,182, 90,155,224,221,193, 66, 21,189, + 99, } ; -// ../Source/Shared/GB_select_shared_definitions.h: -uint8_t GB_JITpackage_214 [393] = { - 40,181, 47,253, 96,118, 2,253, 11, 0,150, 23, 72, 31, 16,147,117,176,245, 14, -175,180,109, 92,129,187, 33,249,246, 95,123,203, 10, 49,197, 93,131,151,161, 23, - 17, 0, 64,149,222, 63, 0, 64, 0, 57, 0,242, 82, 79, 99, 46, 97,213,132, 33, - 55, 87, 33, 11,182,213,109, 24,223,254, 96,145,213,120, 86,238,252,149,198, 91, - 90,159,243,124, 82,143,135,190, 47, 36,101, 39,237,219,179, 35,195, 12,114,117, -210,102,247,177,198, 54, 99, 64, 94, 40, 68, 83,161, 16,145,225, 45,195, 6,209, -186, 61, 50, 80,136,137,229,115, 91,245, 69,229,142,125, 39,195,107, 98, 59,249, -245,100,210, 88, 22, 10, 50,168,178,229,203,237,149,156,190, 92,211,170, 75, 9, -132, 1, 49, 41, 14, 6,196, 9,111,112,201, 54,200, 89,167,170,135, 2,147, 57, - 15,109,126,219,199,252, 20,107, 29,111, 91, 94,206,108, 1,195,143,246,102, 7, - 78,239, 43,237,186, 29, 10, 56,240,201,188,249,165,243, 12,114,242,150,173,123, -215, 92, 63,222,236, 89,222,199,190,164,105,238, 87,251,184, 81,108, 56, 57, 16, - 25, 94,193, 46,106,187,113,136, 34, 25, 70,169, 92,152,139,114, 61, 28, 86,102, - 57, 46, 85, 4,203, 48, 13,199,196,129, 69,134, 51, 2, 0,143, 34, 10,115, 73, - 94, 89,153, 70,198,210,184,188,116,115, 56,221,165, 80,165,247,185,120,233,117, -229, 35, 32, 48, 66,130, 20,149, 7,115,129,137, 4,169, 7, 0,220, 49,194,211, -148, 29, 73,198,147, 88,166,198, 1,106,221,189,112,213,197,202,248,166, 27,130, - 1, 0,191,146, 65,130,152,113, 4,193,225,189,244, 32, 46,253,164, 99,216,241, - 18, 94,105,209, 54,212, 41, 79, 28, 7, 32,218, 98, 44,199,238,155,161,103, 38, -196, 50, 10,172, 99,134,142,201,192,160,162, 96, 8, +// ../Source/Template/GB_wait_macros.h: +uint8_t GB_JITpackage_213 [499] = { + 40,181, 47,253, 96, 0, 5, 77, 15, 0, 86,151, 76, 33,240,214, 54, 20, 48,107, +216, 83,198, 13, 17,164, 72,224,211, 13,193,103,142, 54,195,199, 26,214,173,199, + 37, 44, 14,131,158,247, 2, 65, 0, 66, 0, 69, 0, 14,177,172, 57,178,120,157, +107, 73,127,219, 16,165, 44,203,178, 30, 18,155,188,160,127, 44, 67,219, 63,215, +130,247, 75,215, 85,116,146,205,187,146, 94, 61,180,254,215,146,249,247,131,190, + 16, 45,141,243, 87, 73,111,219, 58,242, 28, 17, 55, 24,168,202, 96, 8, 1,234, +178, 16,213,139, 95, 45,167, 47,242,219,208,238,251, 96, 86,189,190,255, 89,173, +210, 64, 56, 11,124, 81,126,253,157,235, 45,126,108,231,227, 56,189,144, 64, 92, +136, 74,113,184, 16, 78,248, 6, 94,208, 86, 84, 33,110, 77, 47,137, 27,147,246, +226, 5, 58,181,140,203, 27,126, 41,150, 57, 42, 22, 14, 1,224,167,147, 83, 44, +222,139,170,232,120, 59,248, 35, 60,142,213,181, 37,112,141,202, 5, 2,215, 52, +204,230, 12,192,192, 9,115, 16,217, 50,200,134,113,161,188,255,218, 0, 37,241, +168,165,123,204,138,119,201,102, 38,124,240,134, 54, 20, 21, 90,240,126, 0,163, +221,228, 40,205, 36,116, 74,188, 14,227, 54, 18,108,219,247, 47, 46, 73,252,249, +166, 81, 77,199,119,135, 60,174,243,151, 37,209,221,169, 78,103,201,108,182,153, +241,123, 32,152,230,168, 96, 38,224,143, 30, 50, 4,234, 50,246,203, 25, 1, 73, +160,193,153,146, 74,166,146,164, 36,169,177, 6, 32, 68, 64, 24, 57,122, 14,141, + 17, 16, 82,209, 17,118, 22, 24,127,246,214, 26,114,132, 29, 16, 93, 49, 96,223, +196, 9,139,173, 88,146,220, 19,236,196,169, 66, 32,198, 48, 68, 88,137,162,197, +163,254, 70,194, 83,219,132, 76, 16, 84,193, 76,126,175, 52,204,169,189, 22, 89, + 79,177,200, 9, 71, 31, 91,177,178,225,171,170,137,240,210,116,149, 33,152, 90, + 48,186,195, 2,241,164,103, 0,129,111,148,191,216,109, 28,101,240,151,172,168, + 93, 8,133,244, 68,225, 91,216,100,137, 14,217, 18, 54,167,112,179,117,232,156, +186,129,184, 99,112, 68, 1, 10,131, 68,185, 29,130, 96,179,103,122,119, 10, 14, +119,192, 15,154,157,207, 76, 90,200,117, 28,148, 81, 23,116,171, 20, 5,119, } ; -// ../Source/Shared/GB_unused.h: -uint8_t GB_JITpackage_215 [449] = { - 40,181, 47,253, 96, 62, 3,189, 13, 0,166, 25, 80, 32, 0,183, 27, 22,161,215, -248,158, 49,194, 70,177,137,253,103,198,194,211, 52,252,242,210, 32,136,178, 94, - 84, 85, 45, 8, 12, 8, 70, 0, 69, 0, 73, 0, 7, 30,100, 2,166,236,139, 58, -194,132, 7,151,184,251,121,207, 97,234,122, 88, 32, 28,216,117,210,112, 91, 27, -188,252,126,120, 69,187,209,167,181, 71, 92,189,123,208,251, 50,246, 46,212,246, - 39,127,151,109,123, 91, 87,144, 27, 28, 97,186, 13,105,136, 65, 38, 92, 85, 81, - 86, 85,108, 61,251,180,185,204, 61,166,223,223,174, 78,125, 99,159,220,101,237, - 99,183, 97,103, 14,137, 5,194, 65, 58,151, 53,248,224, 70,245,215,254, 82,159, - 21,233,150,122,246, 22, 9,138,104, 8,211, 69,213,173,111,216, 94,110,251, 13, -119,221,131, 41,196,161,112,144, 11, 67, 33,167, 19, 91, 86,165,243, 64,140, 3, - 54, 20, 12, 9,110, 8, 56,240,253, 12,239,197, 93,135,246, 61,124, 93,170,138, -153, 57, 70,235,186, 96, 27,137,165,162,185,100, 44,167,175,249, 12, 68, 10, 22, -145, 92, 29, 76, 71,243, 73,181, 15,196, 72,240, 44, 83,243, 63, 81,243,253,168, -215,102, 75, 5, 49, 2,166,155,190,235,191, 79, 95,251, 73, 29,240,181, 69,242, -186,149, 55, 12,201,143, 4,240,244,250,246,163, 91,255,228, 65,130, 29,140, 97, - 86, 7, 51,193, 48, 1,107,159,253,165, 61, 29,236,122, 73,222,117,253,217,172, - 9,130,161,224,197,194,128, 24, 73,206,178, 7, 5, 45, 32, 32, 66,131,152, 85, - 30,115, 3,247,131,214, 20, 40,128,193,205, 70, 5,200,250,105,127, 82, 25,140, -135,235, 5, 12, 26, 8, 29, 30,235,134,142,239, 0,157,129, 68, 6,119,139,135, -107,159, 57, 87, 26, 15,243,181, 93,145,182,127,173,140,200, 36, 70,104,142, 25, -130,252,247,114, 81, 49, 21,192, 48, 0,174, 91,204, 15,231, 10,161,147, 26,145, -199,145, 24,144, 90,243, 80,193,202, 91,224, 67, 14,254,166,217, 60, 51,173, 77, -129,213,154, 39, 16, 10, 21, 5, 67, +// ../Source/Template/GB_warnings.h: +uint8_t GB_JITpackage_214 [941] = { + 40,181, 47,253, 96, 34, 9, 29, 29, 0, 70,238,135, 30,240,220, 54, 80,217,107, +191, 87,158, 33, 17,200,178,198, 85, 91, 98, 53,109, 52, 51,142,140,173, 11,139, +195,160,248, 74,134, 0,121, 0,127, 0, 92,145, 80, 28, 11, 6, 51, 51, 3, 0, +170, 90,141, 53, 26,207,138,196,249,120, 70, 32,145,166,245, 3,192, 34,209,216, +220,139, 13, 98,184, 82,253, 91,127,167,115,158,205,237,244,248,159, 77,181, 25, + 37, 56,135, 85,183, 78, 98,123,189,238, 73, 44, 37,134, 17,142,198,162,177, 73, + 24,139, 6, 27, 98,129, 17,246, 97,189,225, 4,134,103,222,165,223,155, 24, 81, +194,124, 50, 30,216,181, 83,113, 91, 27, 44,249,253,176, 4,224,234,242,193,143, + 70,110,181, 40,207, 26, 94,174,120, 9,219,205,159,181, 99,171, 76,135, 21, 10, +192,166, 80, 4,181,193, 25, 82, 34,147,219,223,164,250,157, 79,193,191, 61,159, +189,251, 49,150,253,247,231, 63, 30,142, 1,115, 62,191,229,220, 12,185,210, 22, +115,110, 67,166,213,105, 14,235,178,155,237, 31,203, 14, 95,236,224,236, 50, 87, + 24,148, 70,108,227, 24,159, 13, 92,113,201,106,251, 92,129,251,235,186,130, 3, +218, 87,122,163,195,248,210,201, 32,165,146, 43, 13, 8, 4,194,121,108, 9,178, +215,102,123, 43, 5,189,242, 5,235, 5,105,226,192, 94,221,139,241, 13, 41,171, +217, 85,251,243, 26, 2,230,188, 62,199,191,150,206,174, 13,252,224, 11,175, 86, +154, 83,168,179, 90,113,161, 82,221,235,222,147, 37, 32, 28, 99,167,209,116,164, + 15, 0,156,251,100,219, 76,112, 46,148,113,254,128,103, 44,158, 73,135,253,141, + 46,221,242, 13, 89,140,224,102, 82, 54,139,202,206,107,179, 23,223,139, 49,194, + 65,129, 48, 55,155, 37, 18, 6, 35,188,132,123,105,118, 47,129, 64,120,118, 52, +122,157,225, 4,193,136,220,103,177, 91, 42,121,214,159,237, 8,105, 52, 98,148, +107,207, 82,188,242,109, 42, 91, 18,235, 95, 7,145, 7,227, 65,159, 11,111,137, +101,135,246, 81, 92, 2,149, 64,242,173,109, 65, 55, 91,198, 78, 8,243,209,208, + 75, 43,104, 3, 87,134,189,121,241,126,204,218,109,115, 43,235,181,155,223,175, + 49, 3,219, 80,130, 81,176,109,179,193,174,169,141, 63, 90, 91,207, 77,231,218, +165,253, 74,107,117,182,109,221,187,211, 5,246,254,247,114,243,186,144, 86,239, + 74,217,173,237,126,124, 9,126,207,205,112,115,150,101,210,191, 29,103, 88,239, + 38,184, 50,191,147,198, 77, 82,202,218,230,111,119,126,106, 11,128,158,168, 81, +165,114,134,134, 72, 36, 40, 72, 10,146,100, 56, 48,132, 16, 82,236,172, 3,194, +185, 28,164, 56,144, 33, 69, 4, 72, 48, 50, 34,129,140, 4, 18,200,100, 87,205, + 6, 21, 3,168, 45,241,118, 41,129,179,186, 32, 34, 4, 4, 70, 56,170,143,151, +201,193,210,253, 57,154, 46, 59, 40,202, 78,232,174, 53, 17,156, 62, 54,200,164, + 12,138,227, 48,154,194,132, 11,123,205,144,238, 23,168,245,177, 58,225,104,157, + 66,231, 29,112,248,249,201,108,130,254, 64,122,197,164,112,137,253,141, 54,180, +178, 39,164, 50,205, 15, 61,140,149,226,229,252,235,123,166,226,114, 59,213,227, + 0,143, 15, 24, 31,186,160,228,103,249, 49,180,138, 24,190, 91,236, 52,119,143, +144, 34,203, 95, 44,105, 27, 34, 42,157, 19, 84, 29,220, 98,157,194,175,176, 94, +158,249,186,133, 20,136, 93, 53,161,106, 49,175, 78,201, 66,128,245, 54,174,198, + 88, 81, 24,162,153,160,114,202,179,128, 62,238, 62, 98,210,150,221, 5,247, 53, +228, 1,156, 89,208,176,178,159,180,243, 47, 81, 12,120,137, 5,197,104,235,253, + 96,179,218,189,131,104,237,156,157,234,117,223, 86,193,108, 82,103,137, 61, 96, +112,154, 75,172,203, 0,206, 61, 91,217,192, 51, 12, 96, 46, 32,143, 16, 15,112, +225,162, 98,223,169, 30,229,114,217,220,170,237, 65,149,111,243, 27,232, 7,163, +139,196,213,232,243,218, 57,251,213,151,139,172, 55, 11,243,195, 38, 22, 72,128, +139, 27, 55,139, 98,185, 69,118, 62,220,206, 85,106, 94, 53,117,102, 65, 61,134, + 66,172, 72, 32, 97,252,234, 14,239, 85,124, 26, 96,223,130, 85,169,252, 60,182, +186, 9, 48, 51,104,166, 63, 51,221, 4,185,226, 1,222,209,160,202,171, 22, 48, + 1, } ; -// ../Source/Shared/GxB_complex.h: -uint8_t GB_JITpackage_216 [712] = { - 40,181, 47,253, 96,179, 6,245, 21, 0,214, 33,105, 33,240, 88, 55,192, 9,121, -240,238, 22, 57, 40,149,243, 14, 39,101,183, 23,119,121,212, 43,181,126, 28,193, - 82,100, 19, 65, 19, 26, 2, 95, 0, 89, 0,100, 0,250, 62,181,152, 44, 52,225, -104,245, 79,249,245,119, 92,239,145,100, 59, 78,146,157, 27, 18,220,129,203, 24, -136, 3,231, 24,189,220,160,237,105, 78, 92,235, 92, 53,110, 92,178, 30, 55, 56, - 94,231, 89,130,191,173, 9,180,244,151,170,237, 14,118, 24,201, 88,206,108,241, - 31,183,103, 44,186,190,216,110,123,173,248,213, 29,163,150,122,178, 44, 97, 26, - 74, 82, 22,223, 54, 43,219,182,186,220,123,116,252,107, 51,245,219,183,225,210, - 79,252, 31,116,215,242,214, 78,186,215,122, 29,124, 53,145,244,218,128,255,200, -239,164,254,164, 21, 93,219,171, 88,212, 59,125,135, 92,194,171, 24,240,118,173, -159,210,233,186,254, 95,207,120,207,252, 37,246,250, 89,126,109,242,233,226,103, - 29, 52, 46,251,145,206,178,115, 71,126, 43,218,125,191,126,217, 7, 26,133,235, -181, 32,223, 34,214, 56, 83,155,193, 28,179,104, 58,140,175, 86,152, 15, 67,241, -104,190, 48,188, 0, 46, 16,120,135,242, 9, 61, 48, 19,250,229,238,238, 86,192, -186,132, 33, 10,134,147,217,120,161, 36,100,113,241,235, 21,109,192,178, 2, 13, -110,129, 56, 40, 20, 13,196,134, 51,250, 58,255,254,113,103,215,102,212,238, 47, -141,219,230,153,109,154, 30,141,112,205, 85, 67,161, 80,219,230, 8,150, 37,218, -122, 63, 96,137,182,222, 15,112, 9,236, 11, 9, 94,112, 12,203, 23,118, 93,216, -117,137, 14,123,112,245,227,234,116,102,176,115,218,194, 41, 37,205,146,191, 54, - 85,176,235,201,145, 9, 87, 47,116,223, 19,147, 34, 2,225,249, 7,106,186,215, -228, 35, 28,220,116,188, 46, 19,130,221, 37,148, 96, 94, 73,107, 26, 93,142, 89, - 67,190, 42,161,212,228, 81, 9, 63, 83, 4,226, 94,119,160,193, 45, 98, 68, 70, -100, 36, 41, 73, 10,105, 12, 48,134, 16,114,138,206, 3,158, 49,158, 76,143,151, -191,176,145,179,183,235,177,133,148,131,250, 11,135, 3,238,167, 12, 57, 99,172, -178,133,120,120, 0,200,110, 64, 86, 26,208,121, 53,111,251,131, 8,167, 69, 96, -177,238,186,213, 78, 42,178,176,222,102,164, 40,223,237,205,240,139,181,165, 53, - 34,139,213,172,172,195,212,172,169,214,122,155,241, 58, 17, 81,176,200,127, 8, -203, 59,145,101, 33,114, 80, 8,178, 71, 80, 10, 88,100,214, 88,210,118,144, 77, - 34,157, 7, 88,142,110, 15,178, 3,125,208, 1,218,182, 78, 66,113, 11,176, 0, - 0, 88, 68,225,135, 59, 22,200,170,246, 90,139,183,232, 92, 50, 5, 88, 83, 74, - 38,183,160,251, 91, 42,127,189, 72,165, 11,190,220,140,144, 63, 43,132,183,138, -183,177,163,127, 90,228, 65,131,251,162,104, 3,102,125,112, 80,140, 50, 67,130, -146, 6, 28, 36, 3,117, 3,185,133,165, 98, 86, 8,154, 28, 42,224,117, 65, 10, -220,161,150,107, 64, 26, 88,142,140, 7, 32,160, 11,142, 1, 34,193, 99, 3, 0, -136, 98, 62,170,136,229,180,152,194,250,235,220, 52, 55,234, 77,111, 21,127,109, - 66,139,112, 73,209, 30, 76,220, 82, 20, 56, 1, +// ../Source/Template/GB_werk.h: +uint8_t GB_JITpackage_215 [1331] = { + 40,181, 47,253, 96,172, 15, 77, 41, 0,214,185,164, 38,208, 22, 85, 7, 20,152, +244,223, 10,216,237,161, 69, 75,209, 38,144, 26,134,215, 90, 74, 79,153, 26,195, + 89,207, 2,111,148, 95,228,106, 6,188,120,130,158, 0,145, 0,155, 0, 27,110, +176,188,189,165,202,249, 86, 44,187,117,147,176, 94, 30,123,139, 97, 80, 59, 67, +102, 61, 6,210, 10, 84,177,185,216,144,240,184,212,122,215, 86,160, 1,170,192, +162,153,195, 49,172,123,109,124,106, 89, 88,180,159, 86,155,177,124, 68,104, 80, +150,118, 88, 91, 55,222, 49,195,118,227,154,230,240,201,160, 96,160,192,146, 64, + 48, 80,112,169,138, 62,245,118, 50,226,148,195, 63, 89,132,219,114,124,210, 56, +100, 30, 50, 46,153, 2,163,205,201,105, 52,110,167,129, 72,170,140,125,143,107, + 22,255,224,227,211, 77,177,124,185, 93,171,228,250, 12,175,247,131, 27,247,237, +165,214, 49, 25, 69,194,234,217, 60, 80,252,114,129, 44,151, 75,111, 43,149,225, + 43, 81, 70,195,105,255, 73,230,188,101,177,180,100,175,220,250,249, 11, 94, 77, +182,247, 18, 32, 22, 26, 74, 25, 62, 76, 59,144,147,239,220,176,100,238,170, 29, + 61, 78,207,243,215, 52, 11,195,203,195,146,197,245,188,170, 48,206, 39, 45,159, +198,247,222,140,227,138,111,153,123,253,220, 78,116, 75, 99, 86,175,227,168, 87, +182,110,249,142, 61,168, 41, 95, 59, 85,212,100,229,224,167,214,103, 76,203,178, +176,118,119, 89,252,148, 4,241,143,166,101,181,220, 39, 70,103, 24, 43,237, 92, + 74,150, 99,110,143, 29,188,196,142,123, 11,227,123,159, 85,155,121, 62,169,150, + 5, 88, 7,159,198,253,181,175, 54,102, 28,223, 32, 95, 24, 73, 74, 40, 25, 72, +137, 14,112, 41,225, 2, 81, 4,227,251, 92,247,182, 94, 7,249, 82, 71, 10, 17, + 24, 29, 25, 27,170,113,242,243, 44,141,217,187, 24, 14,114,151,172, 59,110, 19, +176,129, 80, 32,200,106,242,233,130,231, 96,228, 30, 55,145, 33,167, 28, 96, 41, +115, 87, 85,176,122,221,245, 47, 92, 89, 51, 79,192, 57,179,234,193,234,114,249, + 23, 62, 18,114,107, 97,231, 63,116, 2, 65,208,129,130, 1, 2, 1, 68, 61,108, +185,235,167,135,241, 83,172, 58,142,205,123,221,210, 42, 53,238,173, 81, 5,141, +219,168,229,149,243,216,221, 70, 73, 82,147,116,198, 87,206, 48, 16,116,173,245, +180,146, 87,146,213, 62,177, 90, 12,159, 49, 97,145,121,208,186,218, 3, 53,214, +238,180, 56, 49,247, 91, 62,194,151,197, 15,107, 71,223,109, 89,187,169,242,196, + 79,125,180, 24, 55, 61,202,215,255, 17,105,100,112,240,130,211, 39, 41, 2,136, + 46, 45, 92,138,166,143,168, 66,211,161,241,105,160, 55,141,251, 22,174,173,229, +181,121,112,243, 74,229, 31,215, 32,228, 44, 60,147,233,192, 56, 67,172,150, 99, + 43, 7, 28, 18,185, 52,125, 68, 18, 27, 14, 25, 8,137,136,167,157,197, 62,242, +202,169, 85,106, 53,228, 74, 57, 77, 51, 10,198, 44,102, 84,115, 84,243,225,236, +181,215,195,154,197,140,159,218,236,100, 1,129, 35,168,193, 33, 83,166,100,100, + 20, 20,148, 20, 36,173, 1, 33, 12,130, 64, 32,207, 82,216, 3, 2,185,108, 14, + 34, 67, 40, 34, 66, 66, 34, 18, 35, 18,136, 40,163,160, 32, 37,121,142, 57, 4, +156,224,221, 71, 13,191,107,144, 6, 0,142,132,111,248,122,119,245,136,144,199, + 87,132, 32, 1,209, 81,171, 17, 56, 39,164,201,101,136,217, 3,131,189, 29,154, +227, 12,102,178,211,236, 90, 67,218, 37,140, 10,231,142,103,111, 26, 89,252,233, +122,160,132, 55, 85, 18, 70,170,248, 98,159, 94,129,101,191, 38, 51,207,232, 13, + 89, 10,102, 42,137,140,114,184,200,253,180,215, 19,246, 82,191,182,216,181,138, + 58,158,213,235, 63, 12,108, 23,135,149, 96,236,221,178,142,251,176,133,236,147, +162,243,101, 15,102,236,226,157, 18,175,112,211, 24,211,244,163,187,168,174, 29, +108,249,128,175,105,112, 65,201, 93,167, 77, 51, 78, 34,203, 72,129,219, 50,191, +188,122, 22,106, 36, 56, 4,128,229,172,160, 72, 3, 57,139, 96, 75, 37,104,137, + 14, 36, 34,135, 85, 51,115,124, 24, 58,219, 4,153, 38,209,105,135,214, 64,230, + 27,223,120,243,180,136,200, 50, 24,137, 40, 72, 3,143,145,247,225, 71,251, 46, + 58,124,202, 33,228,150,138, 35, 97, 52,167, 72, 94,175,160, 45, 5,188,211, 19, + 68, 72,105, 90, 85,142,181,189,110,163, 0,115,174, 20,187, 71,143,151, 57,226, +230,164, 29, 97, 44,229, 36,132, 7, 39,189,115,206,190,125, 87,221,210, 77, 3, +154,124,201,127, 55, 79, 24,238, 29, 79, 6,121,108,134, 71,133, 36, 76,158,217, +184, 13,212,173, 27, 17, 9,102,176, 61, 92,105,119, 32,205,142,182,251, 67, 4, + 69,128, 84, 57, 34, 67,178,210, 50,219,117,175,176,205,104, 28,187, 70,106,184, +130,197, 8,169,125, 49, 35,159, 27,116,151, 76,244, 39,155,152, 58, 24,205, 99, +193,226, 66,188,175, 29, 91,243,131, 13, 36,160, 17, 73,250,174, 65,122, 1,159, +244, 12,118,141,243, 95, 98,170,254, 8, 90, 50,112, 73, 64,193, 3,181,116, 1, + 30, 7,199,171, 53, 61,194,140, 37,109, 47,227,123, 14,220,178,207, 63, 4,136, +217, 51,212, 98, 27, 17,193,135,160, 34, 86,216,152,172,236,114, 63, 60,155,242, + 37, 84,155,158,193, 60,229,131,128,105, 88, 5, 12, 64, 63,154,160,251, 95, 9, +164,153,199, 5, 63,116, 48,103,118, 59,148, 49,224,166, 41,166,137,167,148,168, +117, 69, 94,144, 50,236, 40, 7,157,181, 48, 51,130, 17,227,183,160,211,170, 10, +105, 99,254,119,108,137,253,234,138,130, 65, 26,181, 31, 37, 51,176,212, 91, 33, +164,161, 79, 40, 9,186, 32,178, 85, 57, 37,190,212,101,227,168,139, 4, 19,227, +255,226, 30, 19,225,233, 10,148,234, 94,137,223,248, 36,243, 28,186, 20,252,113, +197, 71, 9,135,115, 5,224, 74,129, 65, 93,216, 6,108,103,140,190, 64, 83, 60, +146, 54, 86,149,208,194,121, 90,166,129,102,104, 70, 70,138,153,150,154, 97,220, + 51,214, 81, 47, 81,239,101,125,117, 0,120, +} ; + +// ../Source/Template/GB_zombie.h: +uint8_t GB_JITpackage_216 [925] = { + 40,181, 47,253, 96, 81, 7,157, 28, 0,182, 44,129, 38,208, 22,113, 14,160,213, +107,191, 81,124, 81, 30,181,176,233,138, 20,116,172, 8,213,179,144,148,125, 13, +251,243,244,148,222, 44,245, 48, 88,193,193, 11,128, 0,113, 0,108, 0, 76,114, +189,228, 99,100, 52, 17, 11, 64,153, 16,129,200, 52, 84, 92,120, 92,235,250, 98, + 0,138,101,186, 72,139, 89,170, 81, 71,136,203, 23,207, 94,151,145, 86,246, 90, +172,145, 58, 30, 48, 38,183, 37,113,229,102, 92, 78,108,195, 25,127,143,122,100, +112,177, 92,164,131, 2,203,229,144,245, 60,146, 92,162, 15,159,168,119,176, 9, + 51,222,120,164, 65,105, 26, 48, 77,163, 4,194,202,168,154,198, 78,222, 52, 40, +242, 17, 94,151, 13,121,114,243,181,238, 8,216,180, 92,101,240, 68,164, 65,226, + 4, 4, 20,137,128, 32,157, 56,123,223,212,212,129,174,183,157,219,131,178,210, +183,126,211, 76,162,243, 89,112, 96, 48,206,119,211,138, 89,159, 2, 45, 23,186, + 71, 5,210,163,221,158,150,188,242,184, 43, 95,108,131,143,193, 28,130,248,217, +146,230, 55, 7, 94, 78,142,190, 36,172,233,221,234, 82, 49, 5,183,154,198,239, +250,132, 61,249,189,216,188,229,152,133,243,175,140,201,186,230,187,149, 90, 73, + 48,238,201, 21, 42,144,158,207, 13, 86,250,138,110,182, 43,191,224, 93, 7,242, +233, 39, 59, 28,206,102,206,246, 59, 15,246, 53,104, 29,179, 24,227,156,194, 64, + 20, 81,230,113,120, 52,123,179,222,176,148, 90,109,242,157, 74, 55, 90,223,232, +241, 79,155,241,212,109,168, 59,101,243,163,181, 26,126,234,123,122, 56, 63,123, +217,226,235,218,111,132,217,165,192,228,149,155, 90,219,185,219,173,218,183, 78, +177,217,167,254,169, 82,209,187, 37,137,154,125,171,183, 90, 55,225, 56, 53,187, +190,249,208, 72,196, 15,245, 20,202,197,174, 23,130, 66,180,143, 63, 15, 56,164, + 61,143, 70,195, 97,193, 20, 5,164,247,149,104,164, 69, 76,101, 16, 24,110,185, +194,243, 0,129,161,145,129, 46,146,244, 80,166,201,202,169, 92,107,111, 25,140, +215, 97,212,145,155, 65, 7,150,174,249, 26, 16,105,136, 18, 81,223,182,217, 24, +225,148, 27, 35, 14,140,209,198,133, 69,220,169,239,110,157, 83, 56, 47,167,228, +247,125,218, 54, 93,175,118, 75,159,150,208,209,136,122,212,213, 52,213, 79, 14, + 44, 55,106,239, 56,221,248, 84, 6,128,179,168,161,169, 82,134, 72, 36,136, 20, + 36, 41, 40,164, 49, 32,132, 16,163,220,149, 7, 66, 96, 73, 16,114,230,208, 85, + 82,148,122,237,207, 1, 70,112, 39, 89,104,148,222,182,142,207,210, 17,171,204, +100,152, 69, 82,160, 56, 16,207,170, 74,203,142, 47,197,137, 65,210, 68,208, 20, +156, 37,240, 46,115, 71,195, 78,121,224, 13,109,249, 54, 83,230, 90,143, 65, 92, +182,173, 24, 88,115,142, 35, 22, 82, 25, 88,241,194,179,247,237,142,130,111, 65, +180,198, 10, 49,190, 85,153, 64,104,217, 47, 65, 9, 25,181,107, 31,106,215, 78, +201, 14,243, 6,124, 41,106,150, 32, 46, 97, 13, 33,187,184, 9, 24, 57,210, 77, +162, 73,171,193, 99, 46,195, 48,193,178,148,203, 49,147, 56,142, 38,221,197, 92, + 99,195,108, 37,170,108,110,196, 12, 42, 5,226,145,162, 87, 34,245,161,165,173, +247,214, 47,105, 2,135, 81, 89,249, 30, 50,193, 74,124,231, 15,161, 85, 74,204, +185, 64,248,194,208, 46,129, 0,206,110,233, 2,116,110,221,142, 8, 18,243, 38, +230,248, 99,126,134,133,128,179, 91, 58, 91, 69,128,124, 10, 73,107,143, 36,211, +103,157,162, 48, 90,196,134, 37,121,143, 27, 75, 92,246,126,202,207,190,239,166, +245, 68, 73,151,109,114,200,241, 42,248, 93, 56, 34,166,201,124,154,209, 4, 4, +231,239, 74, 30,140,112, 43,105,128,205,152, 68,140,244, 80, 86,245,227, 3,224, + 45,101,146,159,224,142, 57, 30,143,192,201, 92,106, 46,225,139,215,226,194, 29, + 36, 91, 76,122,102, 28, 2,170, 58, 88,176,255,134,186,176,210,143,140, 84, 35, +209,166, 2, 60, 50,189,230,232, 42, 72,103, 41,152,172, 47,159, 87,122,167, 12, +238, 97,199, 65, 3,158,137,146, 57,104,182, 63, 51,121,191,124,157, 79,217,105, +222,126,213, 2, 60, } ; GB_JITpackage_index_struct GB_JITpackage_index [217] = { - { 600266, 56892, GB_JITpackage_0 , "GraphBLAS.h" }, - { 12343, 2052, GB_JITpackage_1 , "GB_AxB_dot2_meta.c" }, - { 8501, 2026, GB_JITpackage_2 , "GB_AxB_dot2_template.c" }, - { 6469, 1635, GB_JITpackage_3 , "GB_AxB_dot3_meta.c" }, - { 5387, 1489, GB_JITpackage_4 , "GB_AxB_dot3_phase1_template.c" }, - { 6807, 1639, GB_JITpackage_5 , "GB_AxB_dot3_template.c" }, - { 5316, 1108, GB_JITpackage_6 , "GB_AxB_dot4_cij.c" }, - { 4425, 1390, GB_JITpackage_7 , "GB_AxB_dot4_meta.c" }, - { 47264, 4767, GB_JITpackage_8 , "GB_AxB_dot4_template.c" }, - { 22677, 2904, GB_JITpackage_9 , "GB_AxB_dot_cij.c" }, - { 6138, 1313, GB_JITpackage_10 , "GB_AxB_dot_cij.h" }, - { 769, 323, GB_JITpackage_11 , "GB_AxB_macros.h" }, - { 12124, 2034, GB_JITpackage_12 , "GB_AxB_saxbit_A_bitmap_B_bitmap_template.c" }, - { 29870, 4065, GB_JITpackage_13 , "GB_AxB_saxbit_A_sparse_B_bitmap_template.c" }, - { 15568, 2199, GB_JITpackage_14 , "GB_AxB_saxbit_template.c" }, - { 2774, 838, GB_JITpackage_15 , "GB_AxB_saxpy3_coarseGus_M_phase1.c" }, - { 5481, 1094, GB_JITpackage_16 , "GB_AxB_saxpy3_coarseGus_M_phase5.c" }, - { 2382, 764, GB_JITpackage_17 , "GB_AxB_saxpy3_coarseGus_noM_phase1.c" }, - { 4726, 930, GB_JITpackage_18 , "GB_AxB_saxpy3_coarseGus_noM_phase5.c" }, - { 2453, 789, GB_JITpackage_19 , "GB_AxB_saxpy3_coarseGus_notM_phase1.c" }, - { 4584, 979, GB_JITpackage_20 , "GB_AxB_saxpy3_coarseGus_notM_phase5.c" }, - { 3576, 973, GB_JITpackage_21 , "GB_AxB_saxpy3_coarseHash_M_phase1.c" }, - { 3635, 957, GB_JITpackage_22 , "GB_AxB_saxpy3_coarseHash_M_phase5.c" }, - { 2654, 829, GB_JITpackage_23 , "GB_AxB_saxpy3_coarseHash_notM_phase1.c" }, - { 2921, 887, GB_JITpackage_24 , "GB_AxB_saxpy3_coarseHash_notM_phase5.c" }, - { 4500, 1341, GB_JITpackage_25 , "GB_AxB_saxpy3_coarseHash_phase1.c" }, - { 3411, 1108, GB_JITpackage_26 , "GB_AxB_saxpy3_coarseHash_phase5.c" }, - { 4982, 1109, GB_JITpackage_27 , "GB_AxB_saxpy3_fineGus_M_phase2.c" }, - { 3899, 1115, GB_JITpackage_28 , "GB_AxB_saxpy3_fineGus_notM_phase2.c" }, - { 3530, 1010, GB_JITpackage_29 , "GB_AxB_saxpy3_fineGus_phase2.c" }, - { 4893, 1179, GB_JITpackage_30 , "GB_AxB_saxpy3_fineHash_M_phase2.c" }, - { 4015, 1173, GB_JITpackage_31 , "GB_AxB_saxpy3_fineHash_notM_phase2.c" }, - { 6739, 1562, GB_JITpackage_32 , "GB_AxB_saxpy3_fineHash_phase2.c" }, - { 23942, 3826, GB_JITpackage_33 , "GB_AxB_saxpy3_template.c" }, - { 30108, 4529, GB_JITpackage_34 , "GB_AxB_saxpy3_template.h" }, - { 2814, 909, GB_JITpackage_35 , "GB_AxB_saxpy4_meta.c" }, - { 5761, 914, GB_JITpackage_36 , "GB_AxB_saxpy4_panel.c" }, - { 18924, 3122, GB_JITpackage_37 , "GB_AxB_saxpy4_template.c" }, - { 3217, 1090, GB_JITpackage_38 , "GB_AxB_saxpy5_A_bitmap.c" }, - { 3851, 1253, GB_JITpackage_39 , "GB_AxB_saxpy5_A_iso_or_pattern.c" }, - { 51561, 2932, GB_JITpackage_40 , "GB_AxB_saxpy5_unrolled.c" }, - { 2695, 791, GB_JITpackage_41 , "GB_Template.h" }, - { 4690, 714, GB_JITpackage_42 , "GB_add_bitmap_M_bitmap.c" }, - { 3273, 842, GB_JITpackage_43 , "GB_add_bitmap_M_bitmap_27.c" }, - { 4429, 1138, GB_JITpackage_44 , "GB_add_bitmap_M_bitmap_28.c" }, - { 4429, 1142, GB_JITpackage_45 , "GB_add_bitmap_M_bitmap_29.c" }, - { 6401, 1476, GB_JITpackage_46 , "GB_add_bitmap_M_sparse.c" }, - { 3220, 833, GB_JITpackage_47 , "GB_add_bitmap_M_sparse_24.c" }, - { 4099, 1087, GB_JITpackage_48 , "GB_add_bitmap_M_sparse_25.c" }, - { 4097, 1091, GB_JITpackage_49 , "GB_add_bitmap_M_sparse_26.c" }, - { 1841, 467, GB_JITpackage_50 , "GB_add_bitmap_noM.c" }, - { 2579, 687, GB_JITpackage_51 , "GB_add_bitmap_noM_21.c" }, - { 3618, 1013, GB_JITpackage_52 , "GB_add_bitmap_noM_22.c" }, - { 3617, 1015, GB_JITpackage_53 , "GB_add_bitmap_noM_23.c" }, - { 2312, 730, GB_JITpackage_54 , "GB_add_bitmap_template.c" }, - { 911, 360, GB_JITpackage_55 , "GB_add_full_30.c" }, - { 1405, 466, GB_JITpackage_56 , "GB_add_full_31.c" }, - { 2300, 784, GB_JITpackage_57 , "GB_add_full_32.c" }, - { 1408, 467, GB_JITpackage_58 , "GB_add_full_33.c" }, - { 2303, 793, GB_JITpackage_59 , "GB_add_full_34.c" }, - { 3233, 667, GB_JITpackage_60 , "GB_add_full_template.c" }, - { 14173, 1607, GB_JITpackage_61 , "GB_add_sparse_M_bitmap.c" }, - { 12413, 2495, GB_JITpackage_62 , "GB_add_sparse_M_sparse.c" }, - { 16502, 2031, GB_JITpackage_63 , "GB_add_sparse_noM.c" }, - { 9049, 1707, GB_JITpackage_64 , "GB_add_sparse_template.c" }, - { 6921, 1639, GB_JITpackage_65 , "GB_add_template.c" }, - { 831, 394, GB_JITpackage_66 , "GB_apply_bind1st_template.c" }, - { 831, 392, GB_JITpackage_67 , "GB_apply_bind2nd_template.c" }, - { 2372, 743, GB_JITpackage_68 , "GB_apply_unop_ijp.c" }, - { 904, 372, GB_JITpackage_69 , "GB_apply_unop_ip.c" }, - { 1069, 420, GB_JITpackage_70 , "GB_apply_unop_template.c" }, - { 3883, 986, GB_JITpackage_71 , "GB_assert_kernels.h" }, - { 18885, 3750, GB_JITpackage_72 , "GB_atomics.h" }, - { 11733, 1194, GB_JITpackage_73 , "GB_binary_search.h" }, - { 649, 244, GB_JITpackage_74 , "GB_bitmap_scatter.h" }, - { 4942, 1341, GB_JITpackage_75 , "GB_bld_template.c" }, - { 898, 376, GB_JITpackage_76 , "GB_bytes.h" }, - { 2480, 644, GB_JITpackage_77 , "GB_callback.h" }, - { 9954, 1746, GB_JITpackage_78 , "GB_callback_proto.h" }, - { 3632, 1052, GB_JITpackage_79 , "GB_colscale_template.c" }, - { 10349, 2493, GB_JITpackage_80 , "GB_compiler.h" }, - { 1022, 432, GB_JITpackage_81 , "GB_concat_bitmap_bitmap.c" }, - { 906, 401, GB_JITpackage_82 , "GB_concat_bitmap_full.c" }, - { 1827, 717, GB_JITpackage_83 , "GB_concat_bitmap_sparse.c" }, - { 2112, 586, GB_JITpackage_84 , "GB_concat_bitmap_template.c" }, - { 1459, 561, GB_JITpackage_85 , "GB_concat_full_template.c" }, - { 3619, 1015, GB_JITpackage_86 , "GB_concat_sparse_template.c" }, - { 2165, 709, GB_JITpackage_87 , "GB_convert_s2b_nozombies.c" }, - { 1912, 550, GB_JITpackage_88 , "GB_convert_s2b_template.c" }, - { 2261, 738, GB_JITpackage_89 , "GB_convert_s2b_zombies.c" }, - { 548, 241, GB_JITpackage_90 , "GB_coverage.h" }, - { 992, 400, GB_JITpackage_91 , "GB_defaults.h" }, - { 1108, 395, GB_JITpackage_92 , "GB_dev.h" }, - { 7407, 1313, GB_JITpackage_93 , "GB_ek_slice_kernels.h" }, - { 3180, 813, GB_JITpackage_94 , "GB_emult_02_template.c" }, - { 1959, 723, GB_JITpackage_95 , "GB_emult_02a.c" }, - { 1828, 679, GB_JITpackage_96 , "GB_emult_02b.c" }, - { 2300, 862, GB_JITpackage_97 , "GB_emult_02c.c" }, - { 3186, 813, GB_JITpackage_98 , "GB_emult_03_template.c" }, - { 1959, 724, GB_JITpackage_99 , "GB_emult_03a.c" }, - { 1828, 679, GB_JITpackage_100, "GB_emult_03b.c" }, - { 2303, 861, GB_JITpackage_101, "GB_emult_03c.c" }, - { 3648, 1145, GB_JITpackage_102, "GB_emult_04_template.c" }, - { 4684, 1227, GB_JITpackage_103, "GB_emult_08_meta.c" }, - { 10195, 2007, GB_JITpackage_104, "GB_emult_08_template.c" }, - { 4775, 880, GB_JITpackage_105, "GB_emult_08bcd.c" }, - { 4851, 1262, GB_JITpackage_106, "GB_emult_08e.c" }, - { 6282, 1042, GB_JITpackage_107, "GB_emult_08fgh.c" }, - { 1926, 637, GB_JITpackage_108, "GB_emult_bitmap_5.c" }, - { 3165, 1043, GB_JITpackage_109, "GB_emult_bitmap_6.c" }, - { 3675, 908, GB_JITpackage_110, "GB_emult_bitmap_7.c" }, - { 3086, 876, GB_JITpackage_111, "GB_emult_bitmap_template.c" }, - { 3031, 740, GB_JITpackage_112, "GB_ewise_fulla_template.c" }, - { 1802, 639, GB_JITpackage_113, "GB_ewise_fulln_template.c" }, - { 547, 236, GB_JITpackage_114, "GB_iceil.h" }, - { 37546, 2452, GB_JITpackage_115, "GB_jit_kernel_proto.h" }, - { 1394, 613, GB_JITpackage_116, "GB_log2.h" }, - { 1691, 706, GB_JITpackage_117, "GB_math_macros.h" }, - { 3825, 820, GB_JITpackage_118, "GB_memory_macros.h" }, - { 12703, 2278, GB_JITpackage_119, "GB_meta16_definitions.h" }, - { 10350, 623, GB_JITpackage_120, "GB_meta16_factory.c" }, - { 1159, 400, GB_JITpackage_121, "GB_meta16_methods.c" }, - { 1342, 473, GB_JITpackage_122, "GB_nthreads.h" }, - { 1655, 599, GB_JITpackage_123, "GB_omp_kernels.h" }, - { 714, 259, GB_JITpackage_124, "GB_prefix.h" }, - { 2288, 763, GB_JITpackage_125, "GB_printf_kernels.h" }, - { 10090, 1902, GB_JITpackage_126, "GB_reduce_panel.c" }, - { 4538, 1289, GB_JITpackage_127, "GB_reduce_to_scalar_template.c" }, - { 2537, 887, GB_JITpackage_128, "GB_rowscale_template.c" }, - { 1259, 492, GB_JITpackage_129, "GB_saxpy3task_struct.h" }, - { 2156, 637, GB_JITpackage_130, "GB_select_bitmap_bitmap_template.c" }, - { 1919, 607, GB_JITpackage_131, "GB_select_bitmap_full_template.c" }, - { 1373, 410, GB_JITpackage_132, "GB_select_bitmap_template.c" }, - { 4604, 1235, GB_JITpackage_133, "GB_select_entry_phase1_template.c" }, - { 7212, 1500, GB_JITpackage_134, "GB_select_phase2.c" }, - { 9648, 1796, GB_JITpackage_135, "GB_select_positional_phase1_template.c" }, - { 1617, 585, GB_JITpackage_136, "GB_split_bitmap_template.c" }, - { 1381, 538, GB_JITpackage_137, "GB_split_full_template.c" }, - { 2471, 803, GB_JITpackage_138, "GB_split_sparse_template.c" }, - { 4152, 1166, GB_JITpackage_139, "GB_subassign_05d_template.c" }, - { 20772, 2482, GB_JITpackage_140, "GB_subassign_06d_template.c" }, - { 1681, 578, GB_JITpackage_141, "GB_subassign_22_template.c" }, - { 7220, 1589, GB_JITpackage_142, "GB_subassign_23_template.c" }, - { 7816, 1745, GB_JITpackage_143, "GB_subassign_25_template.c" }, - { 3438, 1044, GB_JITpackage_144, "GB_task_struct.h" }, - { 1976, 789, GB_JITpackage_145, "GB_transpose_bitmap.c" }, - { 1738, 737, GB_JITpackage_146, "GB_transpose_full.c" }, - { 4229, 833, GB_JITpackage_147, "GB_transpose_sparse.c" }, - { 2653, 761, GB_JITpackage_148, "GB_transpose_template.c" }, - { 1398, 437, GB_JITpackage_149, "GB_wait_macros.h" }, - { 2594, 941, GB_JITpackage_150, "GB_warnings.h" }, - { 4268, 1331, GB_JITpackage_151, "GB_werk.h" }, - { 2129, 925, GB_JITpackage_152, "GB_zombie.h" }, - { 1567, 562, GB_JITpackage_153, "GB_jit_kernel.h" }, - { 677, 308, GB_JITpackage_154, "GB_jit_kernel_AxB_dot2.c" }, - { 712, 328, GB_JITpackage_155, "GB_jit_kernel_AxB_dot2n.c" }, - { 690, 320, GB_JITpackage_156, "GB_jit_kernel_AxB_dot3.c" }, - { 884, 386, GB_JITpackage_157, "GB_jit_kernel_AxB_dot4.c" }, - { 838, 377, GB_JITpackage_158, "GB_jit_kernel_AxB_saxbit.c" }, - { 1094, 466, GB_JITpackage_159, "GB_jit_kernel_AxB_saxpy3.c" }, - { 698, 306, GB_JITpackage_160, "GB_jit_kernel_AxB_saxpy4.c" }, - { 5537, 1097, GB_JITpackage_161, "GB_jit_kernel_AxB_saxpy5.c" }, - { 626, 287, GB_JITpackage_162, "GB_jit_kernel_add.c" }, - { 618, 271, GB_JITpackage_163, "GB_jit_kernel_apply_bind1st.c" }, - { 616, 271, GB_JITpackage_164, "GB_jit_kernel_apply_bind2nd.c" }, - { 1571, 593, GB_JITpackage_165, "GB_jit_kernel_apply_unop.c" }, - { 703, 306, GB_JITpackage_166, "GB_jit_kernel_build.c" }, - { 628, 284, GB_JITpackage_167, "GB_jit_kernel_colscale.c" }, - { 991, 437, GB_JITpackage_168, "GB_jit_kernel_concat_bitmap.c" }, - { 725, 338, GB_JITpackage_169, "GB_jit_kernel_concat_full.c" }, - { 728, 338, GB_JITpackage_170, "GB_jit_kernel_concat_sparse.c" }, - { 718, 335, GB_JITpackage_171, "GB_jit_kernel_convert_s2b.c" }, - { 609, 271, GB_JITpackage_172, "GB_jit_kernel_emult_02.c" }, - { 609, 270, GB_JITpackage_173, "GB_jit_kernel_emult_03.c" }, - { 609, 270, GB_JITpackage_174, "GB_jit_kernel_emult_04.c" }, - { 605, 260, GB_JITpackage_175, "GB_jit_kernel_emult_08.c" }, - { 811, 357, GB_JITpackage_176, "GB_jit_kernel_emult_bitmap.c" }, - { 605, 265, GB_JITpackage_177, "GB_jit_kernel_ewise_fulla.c" }, - { 604, 257, GB_JITpackage_178, "GB_jit_kernel_ewise_fulln.c" }, - { 3477, 1307, GB_JITpackage_179, "GB_jit_kernel_reduce.c" }, - { 628, 286, GB_JITpackage_180, "GB_jit_kernel_rowscale.c" }, - { 707, 319, GB_JITpackage_181, "GB_jit_kernel_select_bitmap.c" }, - { 875, 394, GB_JITpackage_182, "GB_jit_kernel_select_phase1.c" }, - { 751, 336, GB_JITpackage_183, "GB_jit_kernel_select_phase2.c" }, - { 717, 331, GB_JITpackage_184, "GB_jit_kernel_split_bitmap.c" }, - { 705, 330, GB_JITpackage_185, "GB_jit_kernel_split_full.c" }, - { 717, 328, GB_JITpackage_186, "GB_jit_kernel_split_sparse.c" }, - { 1476, 614, GB_JITpackage_187, "GB_jit_kernel_subassign_05d.c" }, - { 1917, 781, GB_JITpackage_188, "GB_jit_kernel_subassign_06d.c" }, - { 1380, 554, GB_JITpackage_189, "GB_jit_kernel_subassign_22.c" }, - { 1366, 552, GB_JITpackage_190, "GB_jit_kernel_subassign_23.c" }, - { 1746, 731, GB_JITpackage_191, "GB_jit_kernel_subassign_25.c" }, - { 966, 417, GB_JITpackage_192, "GB_jit_kernel_trans_bind1st.c" }, - { 962, 415, GB_JITpackage_193, "GB_jit_kernel_trans_bind2nd.c" }, - { 779, 371, GB_JITpackage_194, "GB_jit_kernel_trans_unop.c" }, - { 766, 345, GB_JITpackage_195, "GB_jit_kernel_union.c" }, - { 670, 298, GB_JITpackage_196, "GB_jit_kernel_user_op.c" }, - { 666, 290, GB_JITpackage_197, "GB_jit_kernel_user_type.c" }, - { 1620, 623, GB_JITpackage_198, "GB_Operator.h" }, - { 867, 406, GB_JITpackage_199, "GB_apply_shared_definitions.h" }, - { 93272, 12579, GB_JITpackage_200, "GB_assign_shared_definitions.h" }, - { 10718, 1759, GB_JITpackage_201, "GB_complex.h" }, - { 1550, 618, GB_JITpackage_202, "GB_ewise_shared_definitions.h" }, - { 2143, 965, GB_JITpackage_203, "GB_hash.h" }, - { 3928, 1171, GB_JITpackage_204, "GB_hyper_hash_lookup.h" }, - { 1193, 386, GB_JITpackage_205, "GB_index.h" }, - { 2720, 638, GB_JITpackage_206, "GB_int64_mult.h" }, - { 5671, 1189, GB_JITpackage_207, "GB_kernel_shared_definitions.h" }, - { 28610, 7468, GB_JITpackage_208, "GB_matrix.h" }, - { 5037, 1355, GB_JITpackage_209, "GB_monoid_shared_definitions.h" }, - { 6244, 1360, GB_JITpackage_210, "GB_mxm_shared_definitions.h" }, - { 25472, 5161, GB_JITpackage_211, "GB_opaque.h" }, - { 996, 404, GB_JITpackage_212, "GB_partition.h" }, - { 800, 371, GB_JITpackage_213, "GB_pun.h" }, - { 886, 393, GB_JITpackage_214, "GB_select_shared_definitions.h" }, - { 1086, 449, GB_JITpackage_215, "GB_unused.h" }, - { 1971, 712, GB_JITpackage_216, "GxB_complex.h" }, + { 587319, 56682, GB_JITpackage_0 , "GraphBLAS.h" }, + { 1567, 562, GB_JITpackage_1 , "GB_jit_kernel.h" }, + { 677, 308, GB_JITpackage_2 , "GB_jit_kernel_AxB_dot2.c" }, + { 712, 328, GB_JITpackage_3 , "GB_jit_kernel_AxB_dot2n.c" }, + { 690, 320, GB_JITpackage_4 , "GB_jit_kernel_AxB_dot3.c" }, + { 884, 386, GB_JITpackage_5 , "GB_jit_kernel_AxB_dot4.c" }, + { 838, 377, GB_JITpackage_6 , "GB_jit_kernel_AxB_saxbit.c" }, + { 1094, 466, GB_JITpackage_7 , "GB_jit_kernel_AxB_saxpy3.c" }, + { 698, 306, GB_JITpackage_8 , "GB_jit_kernel_AxB_saxpy4.c" }, + { 5537, 1097, GB_JITpackage_9 , "GB_jit_kernel_AxB_saxpy5.c" }, + { 626, 287, GB_JITpackage_10 , "GB_jit_kernel_add.c" }, + { 618, 271, GB_JITpackage_11 , "GB_jit_kernel_apply_bind1st.c" }, + { 616, 271, GB_JITpackage_12 , "GB_jit_kernel_apply_bind2nd.c" }, + { 1571, 593, GB_JITpackage_13 , "GB_jit_kernel_apply_unop.c" }, + { 703, 306, GB_JITpackage_14 , "GB_jit_kernel_build.c" }, + { 628, 284, GB_JITpackage_15 , "GB_jit_kernel_colscale.c" }, + { 991, 437, GB_JITpackage_16 , "GB_jit_kernel_concat_bitmap.c" }, + { 725, 338, GB_JITpackage_17 , "GB_jit_kernel_concat_full.c" }, + { 728, 338, GB_JITpackage_18 , "GB_jit_kernel_concat_sparse.c" }, + { 718, 335, GB_JITpackage_19 , "GB_jit_kernel_convert_s2b.c" }, + { 609, 271, GB_JITpackage_20 , "GB_jit_kernel_emult_02.c" }, + { 609, 270, GB_JITpackage_21 , "GB_jit_kernel_emult_03.c" }, + { 609, 270, GB_JITpackage_22 , "GB_jit_kernel_emult_04.c" }, + { 605, 260, GB_JITpackage_23 , "GB_jit_kernel_emult_08.c" }, + { 811, 357, GB_JITpackage_24 , "GB_jit_kernel_emult_bitmap.c" }, + { 605, 265, GB_JITpackage_25 , "GB_jit_kernel_ewise_fulla.c" }, + { 604, 257, GB_JITpackage_26 , "GB_jit_kernel_ewise_fulln.c" }, + { 3477, 1307, GB_JITpackage_27 , "GB_jit_kernel_reduce.c" }, + { 628, 286, GB_JITpackage_28 , "GB_jit_kernel_rowscale.c" }, + { 707, 319, GB_JITpackage_29 , "GB_jit_kernel_select_bitmap.c" }, + { 875, 394, GB_JITpackage_30 , "GB_jit_kernel_select_phase1.c" }, + { 751, 336, GB_JITpackage_31 , "GB_jit_kernel_select_phase2.c" }, + { 717, 331, GB_JITpackage_32 , "GB_jit_kernel_split_bitmap.c" }, + { 705, 330, GB_JITpackage_33 , "GB_jit_kernel_split_full.c" }, + { 717, 328, GB_JITpackage_34 , "GB_jit_kernel_split_sparse.c" }, + { 1476, 614, GB_JITpackage_35 , "GB_jit_kernel_subassign_05d.c" }, + { 1917, 781, GB_JITpackage_36 , "GB_jit_kernel_subassign_06d.c" }, + { 1380, 554, GB_JITpackage_37 , "GB_jit_kernel_subassign_22.c" }, + { 1366, 552, GB_JITpackage_38 , "GB_jit_kernel_subassign_23.c" }, + { 1746, 731, GB_JITpackage_39 , "GB_jit_kernel_subassign_25.c" }, + { 966, 417, GB_JITpackage_40 , "GB_jit_kernel_trans_bind1st.c" }, + { 962, 415, GB_JITpackage_41 , "GB_jit_kernel_trans_bind2nd.c" }, + { 779, 371, GB_JITpackage_42 , "GB_jit_kernel_trans_unop.c" }, + { 766, 345, GB_JITpackage_43 , "GB_jit_kernel_union.c" }, + { 670, 298, GB_JITpackage_44 , "GB_jit_kernel_user_op.c" }, + { 666, 290, GB_JITpackage_45 , "GB_jit_kernel_user_type.c" }, + { 1419, 578, GB_JITpackage_46 , "GB_Operator.h" }, + { 867, 406, GB_JITpackage_47 , "GB_apply_shared_definitions.h" }, + { 93262, 12576, GB_JITpackage_48 , "GB_assign_shared_definitions.h" }, + { 10718, 1759, GB_JITpackage_49 , "GB_complex.h" }, + { 1550, 618, GB_JITpackage_50 , "GB_ewise_shared_definitions.h" }, + { 2143, 965, GB_JITpackage_51 , "GB_hash.h" }, + { 3135, 1025, GB_JITpackage_52 , "GB_hyper_hash_lookup.h" }, + { 1193, 386, GB_JITpackage_53 , "GB_index.h" }, + { 2720, 638, GB_JITpackage_54 , "GB_int64_mult.h" }, + { 5671, 1189, GB_JITpackage_55 , "GB_kernel_shared_definitions.h" }, + { 28315, 7390, GB_JITpackage_56 , "GB_matrix.h" }, + { 5037, 1355, GB_JITpackage_57 , "GB_monoid_shared_definitions.h" }, + { 6244, 1360, GB_JITpackage_58 , "GB_mxm_shared_definitions.h" }, + { 24470, 5059, GB_JITpackage_59 , "GB_opaque.h" }, + { 996, 404, GB_JITpackage_60 , "GB_partition.h" }, + { 800, 371, GB_JITpackage_61 , "GB_pun.h" }, + { 886, 393, GB_JITpackage_62 , "GB_select_shared_definitions.h" }, + { 1086, 449, GB_JITpackage_63 , "GB_unused.h" }, + { 1971, 712, GB_JITpackage_64 , "GxB_complex.h" }, + { 12343, 2052, GB_JITpackage_65 , "GB_AxB_dot2_meta.c" }, + { 8501, 2026, GB_JITpackage_66 , "GB_AxB_dot2_template.c" }, + { 6513, 1649, GB_JITpackage_67 , "GB_AxB_dot3_meta.c" }, + { 5365, 1473, GB_JITpackage_68 , "GB_AxB_dot3_phase1_template.c" }, + { 6785, 1626, GB_JITpackage_69 , "GB_AxB_dot3_template.c" }, + { 5316, 1108, GB_JITpackage_70 , "GB_AxB_dot4_cij.c" }, + { 4425, 1390, GB_JITpackage_71 , "GB_AxB_dot4_meta.c" }, + { 47264, 4767, GB_JITpackage_72 , "GB_AxB_dot4_template.c" }, + { 22677, 2904, GB_JITpackage_73 , "GB_AxB_dot_cij.c" }, + { 6138, 1313, GB_JITpackage_74 , "GB_AxB_dot_cij.h" }, + { 769, 323, GB_JITpackage_75 , "GB_AxB_macros.h" }, + { 12124, 2034, GB_JITpackage_76 , "GB_AxB_saxbit_A_bitmap_B_bitmap_template.c" }, + { 29870, 4065, GB_JITpackage_77 , "GB_AxB_saxbit_A_sparse_B_bitmap_template.c" }, + { 15568, 2199, GB_JITpackage_78 , "GB_AxB_saxbit_template.c" }, + { 2774, 838, GB_JITpackage_79 , "GB_AxB_saxpy3_coarseGus_M_phase1.c" }, + { 5481, 1094, GB_JITpackage_80 , "GB_AxB_saxpy3_coarseGus_M_phase5.c" }, + { 2382, 764, GB_JITpackage_81 , "GB_AxB_saxpy3_coarseGus_noM_phase1.c" }, + { 4726, 930, GB_JITpackage_82 , "GB_AxB_saxpy3_coarseGus_noM_phase5.c" }, + { 2453, 789, GB_JITpackage_83 , "GB_AxB_saxpy3_coarseGus_notM_phase1.c" }, + { 4584, 979, GB_JITpackage_84 , "GB_AxB_saxpy3_coarseGus_notM_phase5.c" }, + { 3576, 973, GB_JITpackage_85 , "GB_AxB_saxpy3_coarseHash_M_phase1.c" }, + { 3635, 957, GB_JITpackage_86 , "GB_AxB_saxpy3_coarseHash_M_phase5.c" }, + { 2654, 829, GB_JITpackage_87 , "GB_AxB_saxpy3_coarseHash_notM_phase1.c" }, + { 2921, 887, GB_JITpackage_88 , "GB_AxB_saxpy3_coarseHash_notM_phase5.c" }, + { 4500, 1341, GB_JITpackage_89 , "GB_AxB_saxpy3_coarseHash_phase1.c" }, + { 3411, 1108, GB_JITpackage_90 , "GB_AxB_saxpy3_coarseHash_phase5.c" }, + { 4982, 1109, GB_JITpackage_91 , "GB_AxB_saxpy3_fineGus_M_phase2.c" }, + { 3899, 1115, GB_JITpackage_92 , "GB_AxB_saxpy3_fineGus_notM_phase2.c" }, + { 3530, 1010, GB_JITpackage_93 , "GB_AxB_saxpy3_fineGus_phase2.c" }, + { 4893, 1179, GB_JITpackage_94 , "GB_AxB_saxpy3_fineHash_M_phase2.c" }, + { 4015, 1173, GB_JITpackage_95 , "GB_AxB_saxpy3_fineHash_notM_phase2.c" }, + { 6739, 1562, GB_JITpackage_96 , "GB_AxB_saxpy3_fineHash_phase2.c" }, + { 24033, 3860, GB_JITpackage_97 , "GB_AxB_saxpy3_template.c" }, + { 30108, 4518, GB_JITpackage_98 , "GB_AxB_saxpy3_template.h" }, + { 2814, 909, GB_JITpackage_99 , "GB_AxB_saxpy4_meta.c" }, + { 5761, 914, GB_JITpackage_100, "GB_AxB_saxpy4_panel.c" }, + { 18924, 3122, GB_JITpackage_101, "GB_AxB_saxpy4_template.c" }, + { 3217, 1090, GB_JITpackage_102, "GB_AxB_saxpy5_A_bitmap.c" }, + { 3851, 1253, GB_JITpackage_103, "GB_AxB_saxpy5_A_iso_or_pattern.c" }, + { 51561, 2932, GB_JITpackage_104, "GB_AxB_saxpy5_unrolled.c" }, + { 2695, 791, GB_JITpackage_105, "GB_Template.h" }, + { 4690, 714, GB_JITpackage_106, "GB_add_bitmap_M_bitmap.c" }, + { 3273, 842, GB_JITpackage_107, "GB_add_bitmap_M_bitmap_27.c" }, + { 4429, 1138, GB_JITpackage_108, "GB_add_bitmap_M_bitmap_28.c" }, + { 4429, 1142, GB_JITpackage_109, "GB_add_bitmap_M_bitmap_29.c" }, + { 6401, 1476, GB_JITpackage_110, "GB_add_bitmap_M_sparse.c" }, + { 3220, 833, GB_JITpackage_111, "GB_add_bitmap_M_sparse_24.c" }, + { 4099, 1087, GB_JITpackage_112, "GB_add_bitmap_M_sparse_25.c" }, + { 4097, 1091, GB_JITpackage_113, "GB_add_bitmap_M_sparse_26.c" }, + { 1841, 467, GB_JITpackage_114, "GB_add_bitmap_noM.c" }, + { 2579, 687, GB_JITpackage_115, "GB_add_bitmap_noM_21.c" }, + { 3618, 1013, GB_JITpackage_116, "GB_add_bitmap_noM_22.c" }, + { 3617, 1015, GB_JITpackage_117, "GB_add_bitmap_noM_23.c" }, + { 2312, 730, GB_JITpackage_118, "GB_add_bitmap_template.c" }, + { 911, 360, GB_JITpackage_119, "GB_add_full_30.c" }, + { 1405, 466, GB_JITpackage_120, "GB_add_full_31.c" }, + { 2300, 784, GB_JITpackage_121, "GB_add_full_32.c" }, + { 1408, 467, GB_JITpackage_122, "GB_add_full_33.c" }, + { 2303, 793, GB_JITpackage_123, "GB_add_full_34.c" }, + { 3233, 667, GB_JITpackage_124, "GB_add_full_template.c" }, + { 14173, 1607, GB_JITpackage_125, "GB_add_sparse_M_bitmap.c" }, + { 12413, 2495, GB_JITpackage_126, "GB_add_sparse_M_sparse.c" }, + { 16502, 2031, GB_JITpackage_127, "GB_add_sparse_noM.c" }, + { 9049, 1707, GB_JITpackage_128, "GB_add_sparse_template.c" }, + { 6921, 1639, GB_JITpackage_129, "GB_add_template.c" }, + { 831, 394, GB_JITpackage_130, "GB_apply_bind1st_template.c" }, + { 831, 392, GB_JITpackage_131, "GB_apply_bind2nd_template.c" }, + { 2372, 743, GB_JITpackage_132, "GB_apply_unop_ijp.c" }, + { 904, 372, GB_JITpackage_133, "GB_apply_unop_ip.c" }, + { 1069, 420, GB_JITpackage_134, "GB_apply_unop_template.c" }, + { 3883, 986, GB_JITpackage_135, "GB_assert_kernels.h" }, + { 18972, 3783, GB_JITpackage_136, "GB_atomics.h" }, + { 11733, 1194, GB_JITpackage_137, "GB_binary_search.h" }, + { 649, 244, GB_JITpackage_138, "GB_bitmap_scatter.h" }, + { 4942, 1341, GB_JITpackage_139, "GB_bld_template.c" }, + { 898, 376, GB_JITpackage_140, "GB_bytes.h" }, + { 2480, 644, GB_JITpackage_141, "GB_callback.h" }, + { 9954, 1746, GB_JITpackage_142, "GB_callback_proto.h" }, + { 3632, 1052, GB_JITpackage_143, "GB_colscale_template.c" }, + { 10349, 2493, GB_JITpackage_144, "GB_compiler.h" }, + { 1022, 432, GB_JITpackage_145, "GB_concat_bitmap_bitmap.c" }, + { 906, 401, GB_JITpackage_146, "GB_concat_bitmap_full.c" }, + { 1827, 717, GB_JITpackage_147, "GB_concat_bitmap_sparse.c" }, + { 2112, 586, GB_JITpackage_148, "GB_concat_bitmap_template.c" }, + { 1459, 561, GB_JITpackage_149, "GB_concat_full_template.c" }, + { 3619, 1015, GB_JITpackage_150, "GB_concat_sparse_template.c" }, + { 2165, 709, GB_JITpackage_151, "GB_convert_s2b_nozombies.c" }, + { 1912, 550, GB_JITpackage_152, "GB_convert_s2b_template.c" }, + { 2261, 738, GB_JITpackage_153, "GB_convert_s2b_zombies.c" }, + { 548, 241, GB_JITpackage_154, "GB_coverage.h" }, + { 994, 412, GB_JITpackage_155, "GB_defaults.h" }, + { 1108, 395, GB_JITpackage_156, "GB_dev.h" }, + { 7407, 1313, GB_JITpackage_157, "GB_ek_slice_kernels.h" }, + { 3180, 813, GB_JITpackage_158, "GB_emult_02_template.c" }, + { 1959, 723, GB_JITpackage_159, "GB_emult_02a.c" }, + { 1828, 679, GB_JITpackage_160, "GB_emult_02b.c" }, + { 2300, 862, GB_JITpackage_161, "GB_emult_02c.c" }, + { 3186, 813, GB_JITpackage_162, "GB_emult_03_template.c" }, + { 1959, 724, GB_JITpackage_163, "GB_emult_03a.c" }, + { 1828, 679, GB_JITpackage_164, "GB_emult_03b.c" }, + { 2303, 861, GB_JITpackage_165, "GB_emult_03c.c" }, + { 3648, 1145, GB_JITpackage_166, "GB_emult_04_template.c" }, + { 4684, 1227, GB_JITpackage_167, "GB_emult_08_meta.c" }, + { 10195, 2007, GB_JITpackage_168, "GB_emult_08_template.c" }, + { 4775, 880, GB_JITpackage_169, "GB_emult_08bcd.c" }, + { 4851, 1262, GB_JITpackage_170, "GB_emult_08e.c" }, + { 6282, 1042, GB_JITpackage_171, "GB_emult_08fgh.c" }, + { 1926, 637, GB_JITpackage_172, "GB_emult_bitmap_5.c" }, + { 3165, 1043, GB_JITpackage_173, "GB_emult_bitmap_6.c" }, + { 3675, 908, GB_JITpackage_174, "GB_emult_bitmap_7.c" }, + { 3086, 876, GB_JITpackage_175, "GB_emult_bitmap_template.c" }, + { 3031, 740, GB_JITpackage_176, "GB_ewise_fulla_template.c" }, + { 1802, 639, GB_JITpackage_177, "GB_ewise_fulln_template.c" }, + { 547, 236, GB_JITpackage_178, "GB_iceil.h" }, + { 37546, 2452, GB_JITpackage_179, "GB_jit_kernel_proto.h" }, + { 1394, 613, GB_JITpackage_180, "GB_log2.h" }, + { 1691, 706, GB_JITpackage_181, "GB_math_macros.h" }, + { 3825, 820, GB_JITpackage_182, "GB_memory_macros.h" }, + { 12703, 2278, GB_JITpackage_183, "GB_meta16_definitions.h" }, + { 10350, 623, GB_JITpackage_184, "GB_meta16_factory.c" }, + { 1159, 400, GB_JITpackage_185, "GB_meta16_methods.c" }, + { 1342, 473, GB_JITpackage_186, "GB_nthreads.h" }, + { 1655, 599, GB_JITpackage_187, "GB_omp_kernels.h" }, + { 714, 259, GB_JITpackage_188, "GB_prefix.h" }, + { 2288, 763, GB_JITpackage_189, "GB_printf_kernels.h" }, + { 10090, 1902, GB_JITpackage_190, "GB_reduce_panel.c" }, + { 4538, 1289, GB_JITpackage_191, "GB_reduce_to_scalar_template.c" }, + { 2537, 887, GB_JITpackage_192, "GB_rowscale_template.c" }, + { 1259, 492, GB_JITpackage_193, "GB_saxpy3task_struct.h" }, + { 2156, 637, GB_JITpackage_194, "GB_select_bitmap_bitmap_template.c" }, + { 1919, 607, GB_JITpackage_195, "GB_select_bitmap_full_template.c" }, + { 1373, 410, GB_JITpackage_196, "GB_select_bitmap_template.c" }, + { 4604, 1235, GB_JITpackage_197, "GB_select_entry_phase1_template.c" }, + { 7212, 1500, GB_JITpackage_198, "GB_select_phase2.c" }, + { 9648, 1796, GB_JITpackage_199, "GB_select_positional_phase1_template.c" }, + { 1617, 585, GB_JITpackage_200, "GB_split_bitmap_template.c" }, + { 1381, 538, GB_JITpackage_201, "GB_split_full_template.c" }, + { 2471, 803, GB_JITpackage_202, "GB_split_sparse_template.c" }, + { 4152, 1166, GB_JITpackage_203, "GB_subassign_05d_template.c" }, + { 20772, 2482, GB_JITpackage_204, "GB_subassign_06d_template.c" }, + { 1681, 578, GB_JITpackage_205, "GB_subassign_22_template.c" }, + { 7220, 1589, GB_JITpackage_206, "GB_subassign_23_template.c" }, + { 7816, 1745, GB_JITpackage_207, "GB_subassign_25_template.c" }, + { 3438, 1044, GB_JITpackage_208, "GB_task_struct.h" }, + { 1976, 789, GB_JITpackage_209, "GB_transpose_bitmap.c" }, + { 1738, 737, GB_JITpackage_210, "GB_transpose_full.c" }, + { 4229, 833, GB_JITpackage_211, "GB_transpose_sparse.c" }, + { 2653, 761, GB_JITpackage_212, "GB_transpose_template.c" }, + { 1536, 499, GB_JITpackage_213, "GB_wait_macros.h" }, + { 2594, 941, GB_JITpackage_214, "GB_warnings.h" }, + { 4268, 1331, GB_JITpackage_215, "GB_werk.h" }, + { 2129, 925, GB_JITpackage_216, "GB_zombie.h" }, } ; #endif diff --git a/JITpackage/Makefile b/JITpackage/Makefile index f0a854ab40..d971e9c3f7 100644 --- a/JITpackage/Makefile +++ b/JITpackage/Makefile @@ -9,9 +9,6 @@ go: ( cd build && cmake $(CMAKE_OPTIONS) .. && cmake --build . ) - ./build/grb_jitpackage ../Include/GraphBLAS.h \ - ../Source/Template/*.[ch] ../Source/JitKernels/*.[ch] \ - ../Source/Shared/*.h clean: distclean diff --git a/JITpackage/Source/grb_jitpackage.c b/JITpackage/Source/grb_jitpackage.c index 0eee48b64d..27a8ad9499 100644 --- a/JITpackage/Source/grb_jitpackage.c +++ b/JITpackage/Source/grb_jitpackage.c @@ -83,7 +83,7 @@ int main (int argc, char **argv) // start the GB_JITpackage.c file //-------------------------------------------------------------------------- - FILE *fp = fopen ("GB_JITpackage.c", "w") ; + FILE *fp = fopen ("GB_JITpackage.c", "wb") ; OK (fp != NULL) ; int nfiles = argc - 1 ; printf ("Processing %d input files ...\n", nfiles) ; @@ -157,7 +157,7 @@ int main (int argc, char **argv) //---------------------------------------------------------------------- fprintf (fp, "// %s:\n", argv [k]) ; - fprintf (fp, "uint8_t GB_JITpackage_%d [%lu] = {\n", k-1, dsize) ; + fprintf (fp, "uint8_t GB_JITpackage_%d [%zu] = {\n", k-1, dsize) ; for (int64_t k = 0 ; k < dsize ; k++) { fprintf (fp, "%3d,", dst [k]) ; @@ -181,8 +181,8 @@ int main (int argc, char **argv) // print the index //-------------------------------------------------------------------------- - printf ("Total uncompressed: %lu bytes\n", total_uncompressed_size) ; - printf ("Total compressed: %lu bytes\n", total_compressed_size) ; + printf ("Total uncompressed: %zu bytes\n", total_uncompressed_size) ; + printf ("Total compressed: %zu bytes\n", total_compressed_size) ; printf ("Compression: %g\n", (double) total_compressed_size / (double) total_uncompressed_size) ; @@ -200,7 +200,7 @@ int main (int argc, char **argv) } } // append this file to the index - fprintf (fp, " { %8lu, %8lu, GB_JITpackage_%-3d, \"%s\" },\n", + fprintf (fp, " { %8zu, %8zu, GB_JITpackage_%-3d, \"%s\" },\n", Uncompressed_size [k], Compressed_size [k], k-1, name) ; } fprintf (fp, "} ;\n#endif\n\n") ; diff --git a/Makefile b/Makefile index 9e434ad527..a07e07a446 100644 --- a/Makefile +++ b/Makefile @@ -32,11 +32,11 @@ library: # install only in SuiteSparse/lib and SuiteSparse/include local: - ( cd build && cmake $(CMAKE_OPTIONS) -DLOCAL_INSTALL=1 .. && cmake --build . --config Release -j${JOBS} ) + ( cd build && cmake $(CMAKE_OPTIONS) -USUITESPARSE_PKGFILEDIR -DLOCAL_INSTALL=1 .. && cmake --build . --config Release -j${JOBS} ) # install only in /usr/local (default) global: - ( cd build && cmake $(CMAKE_OPTIONS) -DLOCAL_INSTALL=0 .. && cmake --build . --config Release -j${JOBS} ) + ( cd build && cmake $(CMAKE_OPTIONS) -USUITESPARSE_PKGFILEDIR -DLOCAL_INSTALL=0 .. && cmake --build . --config Release -j${JOBS} ) # enable CUDA (NOTE: not ready for production use) cuda: @@ -65,10 +65,10 @@ demos: all # diff the demo output demodiffs: demos echo "Comparing demo output:" - - diff -w Demo/Output/simple_demo.out Demo/simple_demo.out - - diff -w Demo/Output/complex_demo_out.m Demo/complex_demo_out.m - - diff -w Demo/Output/wildtype_demo.out Demo/wildtype_demo.out - - diff -w Demo/Output/gauss_demo.out Demo/gauss_demo.out + - diff -w Demo/Output/simple_demo.out build/simple_demo.out + - diff -w Demo/Output/complex_demo_out.m build/complex_demo_out.m + - diff -w Demo/Output/wildtype_demo.out build/wildtype_demo.out + - diff -w Demo/Output/gauss_demo.out build/gauss_demo.out # just do 'make' in build; do not rerun the cmake script remake: diff --git a/README.md b/README.md index bcbb1b511a..752513b53e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. SPDX-License-Identifier: Apache-2.0 -VERSION 9.0.0, Oct 7, 2023 +VERSION 8.3.0, Dec 30, 2023 SuiteSparse:GraphBLAS is a complete implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of @@ -128,9 +128,9 @@ PreJIT: a folder for JIT kernels that are to be integrated into the Versions v5.2.0 and earlier conform to the version 1.3.0 (Sept 25, 2019) of the GraphBLAS C API Specification. Versions v6.0.0 and later conform to the -version 2.0.0 (Nov, 2021) of the GraphBLAS C API Specification. Versions -9.0.0 and later conform to the v2.1.0 C API. This library also includes -several additional functions and features as extensions to the spec. +version 2.0.0 (Nov, 2021) of the GraphBLAS C API Specification. This library +also includes several additional functions and features as extensions to the +spec. All functions, objects, and macros with the prefix GxB are extensions to the spec. Functions, objects, and macros with prefix GB must not be accessed @@ -225,9 +225,9 @@ Thanks for packaging SuiteSparse! Here are some suggestions: To cite this package, please use the following: - T. Davis, Algorithm 10xx: SuiteSparse:GraphBLAS: parallel graph - algorithms in the language of sparse linear algebra, ACM Trans on - Mathematical Software, to appear, 2023. + T. A. Davis. Algorithm 1037: SuiteSparse:GraphBLAS: Parallel Graph + Algorithms in the Language of Sparse Linear Algebra. ACM Trans. Math. + Softw. 49, 3, Article 28 (September 2023), 30 pages. https://doi.org/10.1145/3577195 T. Davis, Algorithm 1000: SuiteSparse:GraphBLAS: graph algorithms in diff --git a/Source/Factories/GB_AxB_saxpy3_symbolic_template.c b/Source/Factories/GB_AxB_saxpy3_symbolic_template.c index 111d76e254..ad0ce2f532 100644 --- a/Source/Factories/GB_AxB_saxpy3_symbolic_template.c +++ b/Source/Factories/GB_AxB_saxpy3_symbolic_template.c @@ -76,10 +76,10 @@ void GB_EVAL2 (GB (AxB_saxpy3_sym), GB_MASK_A_B_SUFFIX) ASSERT (GB_A_IS_FULL == GB_IS_FULL (A)) ; #if GB_A_IS_HYPER - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = A->Y->p ; + const int64_t *restrict A_Yi = A->Y->i ; + const int64_t *restrict A_Yx = A->Y->x ; + int64_t A_hash_bits = A->Y->vdim - 1 ; #endif #if ( !GB_NO_MASK ) @@ -95,10 +95,18 @@ void GB_EVAL2 (GB (AxB_saxpy3_sym), GB_MASK_A_B_SUFFIX) const bool M_is_bitmap = GB_IS_BITMAP (M) ; const bool M_jumbled = GB_JUMBLED (M) ; // get the M hyper_hash - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = NULL ; + const int64_t *restrict M_Yi = NULL ; + const int64_t *restrict M_Yx = NULL ; + int64_t M_hash_bits = 0 ; + if (M_is_hyper) + { + // mask is present, and hypersparse + M_Yp = M->Y->p ; + M_Yi = M->Y->i ; + M_Yx = M->Y->x ; + M_hash_bits = M->Y->vdim - 1 ; + } #endif //========================================================================== diff --git a/Source/Factories/GB_Matrix_extractElement.c b/Source/Factories/GB_Matrix_extractElement.c index ec6f71f1e7..c6f29d2e18 100644 --- a/Source/Factories/GB_Matrix_extractElement.c +++ b/Source/Factories/GB_Matrix_extractElement.c @@ -103,20 +103,27 @@ GrB_Info GB_EXTRACT_ELEMENT // extract a single entry, x = A(row,col) // A is hypersparse: look for j in hyperlist A->h [0 ... A->nvec-1] //------------------------------------------------------------------ - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; - int64_t k = GB_hyper_hash_lookup (Ah, A->nvec, Ap, A_Yp, A_Yi, A_Yx, - A_hash_bits, j, &pA_start, &pA_end) ; - found = (k >= 0) ; + int64_t k ; + if (A->Y == NULL) + { + // A is hypersparse but does not yet have a hyper_hash + k = 0 ; + found = GB_lookup (true, Ah, Ap, A->vlen, &k, + A->nvec-1, j, &pA_start, &pA_end) ; + } + else + { + // A is hypersparse, with a hyper_hash that is already built + k = GB_hyper_hash_lookup (Ap, A->Y->p, A->Y->i, A->Y->x, + A->Y->vdim-1, j, &pA_start, &pA_end) ; + found = (k >= 0) ; + } if (!found) { // vector j is empty return (GrB_NO_VALUE) ; } ASSERT (j == Ah [k]) ; - } else { diff --git a/Source/Factories/GB_unop_factory.c b/Source/Factories/GB_unop_factory.c index 2fa00b037b..76aaf675c8 100644 --- a/Source/Factories/GB_unop_factory.c +++ b/Source/Factories/GB_unop_factory.c @@ -610,7 +610,7 @@ } break ; - case GB_FREXPX_unop_code : // z = frexpx (x), mantissa from C11 frexp + case GB_FREXPX_unop_code : // z = frexpx (x), mantissa from ANSI C11 frexp switch (code1) { @@ -620,7 +620,7 @@ } break ; - case GB_FREXPE_unop_code : // z = frexpe (x), exponent from C11 frexp + case GB_FREXPE_unop_code : // z = frexpe (x), exponent from ANSI C11 frexp switch (code1) { diff --git a/Source/GB_AxB_dot3.c b/Source/GB_AxB_dot3.c index daf0cf0b68..2ede234fa5 100644 --- a/Source/GB_AxB_dot3.c +++ b/Source/GB_AxB_dot3.c @@ -146,15 +146,17 @@ GrB_Info GB_AxB_dot3 // C = A'*B using dot product method ASSERT (A->vlen == B->vlen) ; ASSERT (vlen > 0) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; - - const int64_t *restrict B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *restrict B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *restrict B_Yx = (B->Y == NULL) ? NULL : B->Y->x ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const GrB_Matrix A_Y = A->Y ; + const int64_t *restrict A_Yp = (A_is_hyper) ? A_Y->p : NULL ; + const int64_t *restrict A_Yi = (A_is_hyper) ? A_Y->i : NULL ; + const int64_t *restrict A_Yx = (A_is_hyper) ? A_Y->x : NULL ; + const int64_t A_hash_bits = (A_is_hyper) ? (A_Y->vdim - 1) : 0 ; + + const GrB_Matrix B_Y = B->Y ; + const int64_t *restrict B_Yp = (B_is_hyper) ? B_Y->p : NULL ; + const int64_t *restrict B_Yi = (B_is_hyper) ? B_Y->i : NULL ; + const int64_t *restrict B_Yx = (B_is_hyper) ? B_Y->x : NULL ; + const int64_t B_hash_bits = (B_is_hyper) ? (B_Y->vdim - 1) : 0 ; //-------------------------------------------------------------------------- // allocate C, the same size and # of entries as M diff --git a/Source/GB_AxB_saxpy3_flopcount.c b/Source/GB_AxB_saxpy3_flopcount.c index a514c72df7..a720ec64be 100644 --- a/Source/GB_AxB_saxpy3_flopcount.c +++ b/Source/GB_AxB_saxpy3_flopcount.c @@ -147,7 +147,7 @@ GrB_Info GB_AxB_saxpy3_flopcount mnvec = M->nvec ; mvlen = M->vlen ; M_is_dense = GB_IS_BITMAP (M) || GB_as_if_full (M) ; - if (M->Y != NULL) + if (M_is_hyper) { // mask is present, and hypersparse ASSERT_MATRIX_OK (M->Y, "M->Y hyper_hash", GB0) ; @@ -167,10 +167,19 @@ GrB_Info GB_AxB_saxpy3_flopcount const int64_t anvec = A->nvec ; const int64_t avlen = A->vlen ; const bool A_is_hyper = GB_IS_HYPERSPARSE (A) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + + const int64_t *restrict A_Yp = NULL ; + const int64_t *restrict A_Yi = NULL ; + const int64_t *restrict A_Yx = NULL ; + int64_t A_hash_bits = 0 ; + if (A_is_hyper) + { + ASSERT_MATRIX_OK (A->Y, "A->Y hyper_hash", GB0) ; + A_Yp = A->Y->p ; + A_Yi = A->Y->i ; + A_Yx = A->Y->x ; + A_hash_bits = A->Y->vdim - 1 ; + } const int64_t *restrict Bp = B->p ; const int64_t *restrict Bh = B->h ; @@ -270,8 +279,8 @@ GrB_Info GB_AxB_saxpy3_flopcount if (M_is_hyper) { // M is hypersparse: find M(:,j) in the M->Y hyper_hash - GB_hyper_hash_lookup (Mh, mnvec, Mp, M_Yp, M_Yi, M_Yx, - M_hash_bits, j, &pM, &pM_end) ; + GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, M_hash_bits, + j, &pM, &pM_end) ; } else { @@ -320,8 +329,8 @@ GrB_Info GB_AxB_saxpy3_flopcount if (A_is_hyper) { // A is hypersparse: find A(:,k) in the A->Y hyper_hash - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, - A_hash_bits, k, &pA, &pA_end) ; + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + k, &pA, &pA_end) ; } else { diff --git a/Source/GB_AxB_saxpy3_slice_balanced.c b/Source/GB_AxB_saxpy3_slice_balanced.c index 61109d5d86..f6746a7c7d 100644 --- a/Source/GB_AxB_saxpy3_slice_balanced.c +++ b/Source/GB_AxB_saxpy3_slice_balanced.c @@ -270,12 +270,20 @@ GrB_Info GB_AxB_saxpy3_slice_balanced const int64_t *restrict Ap = A->p ; const int64_t *restrict Ah = A->h ; const int64_t avlen = A->vlen ; - const int64_t anvec = A->nvec ; const bool A_is_hyper = GB_IS_HYPERSPARSE (A) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + + const int64_t *restrict A_Yp = NULL ; + const int64_t *restrict A_Yi = NULL ; + const int64_t *restrict A_Yx = NULL ; + int64_t A_hash_bits = 0 ; + if (A_is_hyper) + { + ASSERT_MATRIX_OK (A->Y, "A->Y hyper_hash", GB0) ; + A_Yp = A->Y->p ; + A_Yi = A->Y->i ; + A_Yx = A->Y->x ; + A_hash_bits = A->Y->vdim - 1 ; + } const int64_t *restrict Bp = B->p ; const int64_t *restrict Bh = B->h ; @@ -296,7 +304,8 @@ GrB_Info GB_AxB_saxpy3_slice_balanced int64_t Mwork = 0 ; int64_t *restrict Bflops = C->p ; // use C->p as workspace for Bflops - GB_OK (GB_AxB_saxpy3_flopcount (&Mwork, Bflops, M, Mask_comp, A, B, Werk)) ; + GB_OK (GB_AxB_saxpy3_flopcount (&Mwork, Bflops, M, Mask_comp, A, B, + Werk)) ; double total_flops = (double) Bflops [bnvec] ; double axbflops = total_flops - Mwork ; GBURBLE ("axbwork %g ", axbflops) ; @@ -678,8 +687,8 @@ GrB_Info GB_AxB_saxpy3_slice_balanced if (A_is_hyper) { // A is hypersparse: find A(:,k) in hyper_hash - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, - A_Yi, A_Yx, A_hash_bits, k, &pA, &pA_end) ; + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, + A_hash_bits, k, &pA, &pA_end) ; } else { diff --git a/Source/GB_BinaryOp_check.c b/Source/GB_BinaryOp_check.c index 2e70527802..609d9d0ad0 100644 --- a/Source/GB_BinaryOp_check.c +++ b/Source/GB_BinaryOp_check.c @@ -60,29 +60,26 @@ GrB_Info GB_BinaryOp_check // check a GraphBLAS binary operator bool op_is_first = (opcode == GB_FIRST_binop_code) ; bool op_is_second = (opcode == GB_SECOND_binop_code) ; bool op_is_pair = (opcode == GB_PAIR_binop_code) ; - int32_t actual_len = (int32_t) strlen (op->name) ; - int32_t name_len = op->name_len ; - char *op_name = (actual_len > 0) ? op->name : "f" ; if (opcode == GB_USER_binop_code) { // user-defined binary operator - GBPR0 ("(user-defined): z=%s(x,y)\n", op_name) ; + GBPR0 ("(user-defined): z=%s(x,y)\n", op->name) ; } else if (opcode == GB_FIRST_binop_code && op->ztype->code == GB_UDT_code) { // FIRST_UDT binary operator created by GB_reduce_to_vector - GBPR0 ("(generated): z=%s(x,y)\n", op_name) ; + GBPR0 ("(generated): z=%s(x,y)\n", op->name) ; } else if (op_is_positional) { // built-in positional binary operator - GBPR0 ("(built-in positional): z=%s(x,y,i,k,j)\n", op_name) ; + GBPR0 ("(built-in positional): z=%s(x,y,i,k,j)\n", op->name) ; } else { // built-in - GBPR0 ("(built-in): z=%s(x,y)\n", op_name) ; + GBPR0 ("(built-in): z=%s(x,y)\n", op->name) ; } if (!(op_is_positional || op_is_first || op_is_second) @@ -92,6 +89,8 @@ GrB_Info GB_BinaryOp_check // check a GraphBLAS binary operator return (GrB_INVALID_OBJECT) ; } + int32_t name_len = op->name_len ; + int32_t actual_len = (int32_t) strlen (op->name) ; if (opcode == GB_USER_binop_code && name_len != actual_len) { GBPR0 (" BinaryOp has an invalid name_len\n") ; diff --git a/Source/GB_Context.c b/Source/GB_Context.c index 2a94fe7574..61258a41d5 100644 --- a/Source/GB_Context.c +++ b/Source/GB_Context.c @@ -43,7 +43,7 @@ #elif defined ( HAVE_KEYWORD__THREAD_LOCAL ) - // C11 threads + // ANSI C11 threads #include _Thread_local GxB_Context GB_CONTEXT_THREAD = NULL ; diff --git a/Source/GB_Global.c b/Source/GB_Global.c index bf96f6c97b..99a2e0300e 100644 --- a/Source/GB_Global.c +++ b/Source/GB_Global.c @@ -38,7 +38,6 @@ typedef struct float bitmap_switch [GxB_NBITMAP_SWITCH] ; // default bitmap_switch float hyper_switch ; // default hyper_switch for new matrices bool is_csc ; // default CSR/CSC format for new matrices - int64_t hyper_hash ; // controls when A->Y hyper_hash is created //-------------------------------------------------------------------------- // abort function: only used for debugging @@ -51,7 +50,7 @@ typedef struct //-------------------------------------------------------------------------- // All threads must use the same malloc/realloc/free functions. - // They default to the C11 functions, but can be defined by GxB_init. + // They default to the ANSI C11 functions, but can be defined by GxB_init. void * (* malloc_function ) (size_t) ; // required void * (* calloc_function ) (size_t, size_t) ; // may be NULL @@ -176,12 +175,10 @@ static GB_Global_struct GB_Global = .is_csc = false, // default is GxB_BY_ROW - .hyper_hash = GB_HYPER_HASH_DEFAULT, - // abort function for debugging only .abort_function = abort, - // malloc/realloc/free functions: default to C11 functions + // malloc/realloc/free functions: default to ANSI C11 functions .malloc_function = malloc, .realloc_function = realloc, .free_function = free, @@ -345,20 +342,6 @@ float GB_Global_hyper_switch_get (void) return (GB_Global.hyper_switch) ; } -//------------------------------------------------------------------------------ -// hyper_hash -//------------------------------------------------------------------------------ - -void GB_Global_hyper_hash_set (int64_t hyper_hash) -{ - GB_Global.hyper_hash = hyper_hash ; -} - -int64_t GB_Global_hyper_hash_get (void) -{ - return (GB_Global.hyper_hash) ; -} - //------------------------------------------------------------------------------ // bitmap_switch //------------------------------------------------------------------------------ diff --git a/Source/GB_Global.h b/Source/GB_Global.h index 0f42b8767c..dc483cfc96 100644 --- a/Source/GB_Global.h +++ b/Source/GB_Global.h @@ -30,9 +30,6 @@ bool GB_Global_GrB_init_called_get (void) ; void GB_Global_hyper_switch_set (float hyper_switch) ; float GB_Global_hyper_switch_get (void) ; -void GB_Global_hyper_hash_set (int64_t hyper_hash) ; -int64_t GB_Global_hyper_hash_get (void) ; - void GB_Global_bitmap_switch_set (int k, float b) ; float GB_Global_bitmap_switch_get (int k) ; float GB_Global_bitmap_switch_matrix_get diff --git a/Source/GB_IndexUnaryOp_check.c b/Source/GB_IndexUnaryOp_check.c index 99a07b49dc..cec6c13446 100644 --- a/Source/GB_IndexUnaryOp_check.c +++ b/Source/GB_IndexUnaryOp_check.c @@ -49,11 +49,7 @@ GrB_Info GB_IndexUnaryOp_check // check a GraphBLAS index_unary operator { GBPR0 ("(built-in): ") ; } - - int32_t name_len = op->name_len ; - int32_t actual_len = (int32_t) strlen (op->name) ; - char *op_name = (actual_len > 0) ? op->name : "f" ; - GBPR0 ("z=%s(x,i,j,y)\n", op_name) ; + GBPR0 ("z=%s(x,i,j,y)\n", op->name) ; if (op->idxunop_function == NULL) { @@ -61,6 +57,8 @@ GrB_Info GB_IndexUnaryOp_check // check a GraphBLAS index_unary operator return (GrB_INVALID_OBJECT) ; } + int32_t name_len = op->name_len ; + int32_t actual_len = (int32_t) strlen (op->name) ; if (opcode == GB_USER_idxunop_code && name_len != actual_len) { GBPR0 (" IndexUnaryOp has an invalid name_len\n") ; diff --git a/Source/GB_Matrix_free.c b/Source/GB_Matrix_free.c index c1ffd917cf..1f47b822df 100644 --- a/Source/GB_Matrix_free.c +++ b/Source/GB_Matrix_free.c @@ -24,7 +24,6 @@ void GB_Matrix_free // free a matrix if (A != NULL && (A->magic == GB_MAGIC || A->magic == GB_MAGIC2)) { // free all content of A - GB_FREE (&(A->user_name), A->user_name_size) ; size_t header_size = A->header_size ; GB_phybix_free (A) ; if (!(A->static_header)) diff --git a/Source/GB_Monoid_new.c b/Source/GB_Monoid_new.c index 5aec6e0c91..b33780f972 100644 --- a/Source/GB_Monoid_new.c +++ b/Source/GB_Monoid_new.c @@ -100,8 +100,6 @@ GrB_Info GB_Monoid_new // create a monoid GrB_Monoid mon = *monoid ; mon->magic = GB_MAGIC ; mon->header_size = header_size ; - mon->user_name = NULL ; // user_name for GrB_get/GrB_set - mon->user_name_size = 0 ; mon->op = op ; size_t zsize = op->ztype->size ; mon->identity = NULL ; // defined below (if present) diff --git a/Source/GB_Op_free.c b/Source/GB_Op_free.c index ce62904639..3733996400 100644 --- a/Source/GB_Op_free.c +++ b/Source/GB_Op_free.c @@ -21,15 +21,14 @@ GrB_Info GB_Op_free // free a user-created op GB_Operator op = *op_handle ; if (op != NULL) { - GB_FREE (&(op->user_name), op->user_name_size) ; - size_t defn_size = op->defn_size ; - if (defn_size > 0) - { - GB_FREE (&(op->defn), defn_size) ; - } size_t header_size = op->header_size ; if (header_size > 0) { + size_t defn_size = op->defn_size ; + if (defn_size > 0) + { + GB_FREE (&(op->defn), defn_size) ; + } op->magic = GB_FREED ; // to help detect dangling pointers op->header_size = 0 ; GB_FREE (op_handle, header_size) ; diff --git a/Source/GB_Pending.h b/Source/GB_Pending.h index 3a8f6b354e..f2da17aac3 100644 --- a/Source/GB_Pending.h +++ b/Source/GB_Pending.h @@ -11,10 +11,6 @@ #define GB_PENDING_H #include "GB.h" -// FUTURE: remove this once GxB_Matrix_pending is revised (see PR #172) -// true if a matrix is hypersparse and needs its hyper_hash built -#define GB_NEED_HYPER_HASH(A) GB_hyper_hash_need (A) - //------------------------------------------------------------------------------ // GB_Pending functions //------------------------------------------------------------------------------ diff --git a/Source/GB_Scalar_wrap.c b/Source/GB_Scalar_wrap.c index 6da7e5e52b..cf44365d66 100644 --- a/Source/GB_Scalar_wrap.c +++ b/Source/GB_Scalar_wrap.c @@ -36,8 +36,6 @@ GrB_Scalar GB_Scalar_wrap // create a new GrB_Scalar with one entry s->magic = GB_MAGIC ; s->header_size = 0 ; - s->user_name = NULL ; - s->user_name_size = 0 ; s->type = (type == NULL) ? GrB_BOOL : type ; s->logger = NULL ; s->logger_size = 0 ; diff --git a/Source/GB_Semiring_new.c b/Source/GB_Semiring_new.c index 62b17e637e..71b440a9f5 100644 --- a/Source/GB_Semiring_new.c +++ b/Source/GB_Semiring_new.c @@ -43,8 +43,6 @@ GrB_Info GB_Semiring_new // create a semiring // initialize the semiring semiring->magic = GB_MAGIC ; - semiring->user_name = NULL ; // user_name for GrB_get/GrB_set - semiring->user_name_size = 0 ; semiring->add = add ; semiring->multiply = multiply ; semiring->name = NULL ; diff --git a/Source/GB_UnaryOp_check.c b/Source/GB_UnaryOp_check.c index f5e1daaa29..7348d42bbb 100644 --- a/Source/GB_UnaryOp_check.c +++ b/Source/GB_UnaryOp_check.c @@ -49,10 +49,7 @@ GrB_Info GB_UnaryOp_check // check a GraphBLAS unary operator { GBPR0 ("(built-in): ") ; } - int32_t name_len = op->name_len ; - int32_t actual_len = (int32_t) strlen (op->name) ; - char *op_name = (actual_len > 0) ? op->name : "f" ; - GBPR0 ("z=%s(x)\n", op_name) ; + GBPR0 ("z=%s(x)\n", op->name) ; bool op_is_positional = GB_OPCODE_IS_POSITIONAL (opcode) ; bool op_is_one = (opcode == GB_ONE_unop_code) ; @@ -64,6 +61,8 @@ GrB_Info GB_UnaryOp_check // check a GraphBLAS unary operator return (GrB_INVALID_OBJECT) ; } + int32_t name_len = op->name_len ; + int32_t actual_len = (int32_t) strlen (op->name) ; if (opcode == GB_USER_unop_code && name_len != actual_len) { GBPR0 (" UnaryOp has an invalid name_len\n") ; diff --git a/Source/GB_add_phase0.c b/Source/GB_add_phase0.c index 067eded6b7..ee5b654b3b 100644 --- a/Source/GB_add_phase0.c +++ b/Source/GB_add_phase0.c @@ -278,15 +278,15 @@ GrB_Info GB_add_phase0 // find vectors in C for C=A+B or C=A+B GB_OK (GB_hyper_hash_build (A, Werk)) ; GB_OK (GB_hyper_hash_build (B, Werk)) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = (A_is_hyper) ? A->Y->p : NULL ; + const int64_t *restrict A_Yi = (A_is_hyper) ? A->Y->i : NULL ; + const int64_t *restrict A_Yx = (A_is_hyper) ? A->Y->x : NULL ; + const int64_t A_hash_bits = (A_is_hyper) ? (A->Y->vdim - 1) : 0 ; - const int64_t *restrict B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *restrict B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *restrict B_Yx = (B->Y == NULL) ? NULL : B->Y->x ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *restrict B_Yp = (B_is_hyper) ? B->Y->p : NULL ; + const int64_t *restrict B_Yi = (B_is_hyper) ? B->Y->i : NULL ; + const int64_t *restrict B_Yx = (B_is_hyper) ? B->Y->x : NULL ; + const int64_t B_hash_bits = (B_is_hyper) ? (B->Y->vdim - 1) : 0 ; int64_t k ; #pragma omp parallel for num_threads(nthreads) schedule(static) @@ -297,16 +297,16 @@ GrB_Info GB_add_phase0 // find vectors in C for C=A+B or C=A+B { // C_to_A [k] = kA if Ah [kA] == j and A(:,j) is non-empty int64_t pA, pA_end ; - int64_t kA = GB_hyper_hash_lookup (Ah, Anvec, Ap, A_Yp, - A_Yi, A_Yx, A_hash_bits, j, &pA, &pA_end) ; + int64_t kA = GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, + A_hash_bits, j, &pA, &pA_end) ; C_to_A [k] = (pA < pA_end) ? kA : -1 ; } if (B_is_hyper) { // C_to_B [k] = kB if Bh [kB] == j and B(:,j) is non-empty int64_t pB, pB_end ; - int64_t kB = GB_hyper_hash_lookup (Bh, Bnvec, Bp, B_Yp, - B_Yi, B_Yx, B_hash_bits, j, &pB, &pB_end) ; + int64_t kB = GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, + B_hash_bits, j, &pB, &pB_end) ; C_to_B [k] = (pB < pB_end) ? kB : -1 ; } } @@ -676,10 +676,10 @@ GrB_Info GB_add_phase0 // find vectors in C for C=A+B or C=A+B // create the M->Y hyper_hash GB_OK (GB_hyper_hash_build (M, Werk)) ; - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = M->Y->p ; + const int64_t *restrict M_Yi = M->Y->i ; + const int64_t *restrict M_Yx = M->Y->x ; + const int64_t M_hash_bits = M->Y->vdim - 1 ; int64_t k ; #pragma omp parallel for num_threads(nthreads) schedule(static) @@ -688,8 +688,8 @@ GrB_Info GB_add_phase0 // find vectors in C for C=A+B or C=A+B int64_t j = Ch [k] ; // C_to_M [k] = kM if Mh [kM] == j and M(:,j) is non-empty int64_t pM, pM_end ; - int64_t kM = GB_hyper_hash_lookup (Mh, Mnvec, Mp, M_Yp, M_Yi, - M_Yx, M_hash_bits, j, &pM, &pM_end) ; + int64_t kM = GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, + M_hash_bits, j, &pM, &pM_end) ; C_to_M [k] = (pM < pM_end) ? kM : -1 ; } } diff --git a/Source/GB_assign_zombie1.c b/Source/GB_assign_zombie1.c index 095371b6a7..5f7ab6a056 100644 --- a/Source/GB_assign_zombie1.c +++ b/Source/GB_assign_zombie1.c @@ -40,19 +40,13 @@ GrB_Info GB_assign_zombie1 //-------------------------------------------------------------------------- int64_t *restrict Ci = C->i ; - const int64_t *restrict Ch = C->h ; const int64_t *restrict Cp = C->p ; int64_t pC_start, pC_end ; - const int64_t cnvec = C->nvec ; - if (Ch != NULL) + if (C->h != NULL) { // C is hypersparse - const int64_t *restrict C_Yp = (C->Y == NULL) ? NULL : C->Y->p ; - const int64_t *restrict C_Yi = (C->Y == NULL) ? NULL : C->Y->i ; - const int64_t *restrict C_Yx = (C->Y == NULL) ? NULL : C->Y->x ; - const int64_t C_hash_bits = (C->Y == NULL) ? 0 : (C->Y->vdim - 1) ; - GB_hyper_hash_lookup (Ch, cnvec, Cp, C_Yp, C_Yi, C_Yx, C_hash_bits, + GB_hyper_hash_lookup (Cp, C->Y->p, C->Y->i, C->Y->x, C->Y->vdim-1, j, &pC_start, &pC_end) ; } else diff --git a/Source/GB_assign_zombie3.c b/Source/GB_assign_zombie3.c index b6e792a48d..7f46f0a9be 100644 --- a/Source/GB_assign_zombie3.c +++ b/Source/GB_assign_zombie3.c @@ -60,20 +60,14 @@ GrB_Info GB_assign_zombie3 // get C (:,j) //-------------------------------------------------------------------------- - int64_t *restrict Ci = C->i ; - const int64_t *restrict Ch = C->h ; const int64_t *restrict Cp = C->p ; + int64_t *restrict Ci = C->i ; int64_t pC_start, pC_end ; - const int64_t cnvec = C->nvec ; - if (Ch != NULL) + if (C->h != NULL) { // C is hypersparse - const int64_t *restrict C_Yp = (C->Y == NULL) ? NULL : C->Y->p ; - const int64_t *restrict C_Yi = (C->Y == NULL) ? NULL : C->Y->i ; - const int64_t *restrict C_Yx = (C->Y == NULL) ? NULL : C->Y->x ; - const int64_t C_hash_bits = (C->Y == NULL) ? 0 : (C->Y->vdim - 1) ; - GB_hyper_hash_lookup (Ch, cnvec, Cp, C_Yp, C_Yi, C_Yx, C_hash_bits, + GB_hyper_hash_lookup (Cp, C->Y->p, C->Y->i, C->Y->x, C->Y->vdim-1, j, &pC_start, &pC_end) ; } else diff --git a/Source/GB_assign_zombie4.c b/Source/GB_assign_zombie4.c index b0bd60341e..6c9c429a50 100644 --- a/Source/GB_assign_zombie4.c +++ b/Source/GB_assign_zombie4.c @@ -70,19 +70,19 @@ GrB_Info GB_assign_zombie4 //-------------------------------------------------------------------------- const int64_t *restrict Mp = M->p ; - const int64_t *restrict Mh = M->h ; +// const int64_t *restrict Mh = M->h ; const int8_t *restrict Mb = M->b ; const GB_M_TYPE *restrict Mx = (GB_M_TYPE *) (Mask_struct ? NULL : (M->x)) ; const size_t msize = M->type->size ; - const int64_t Mnvec = M->nvec ; +// const int64_t Mnvec = M->nvec ; ASSERT (M->vlen == 1) ; const bool M_is_hyper = GB_IS_HYPERSPARSE (M) ; const bool M_is_bitmap = GB_IS_BITMAP (M) ; const bool M_is_full = GB_IS_FULL (M) ; - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = (M_is_hyper) ? M->Y->p : NULL ; + const int64_t *restrict M_Yi = (M_is_hyper) ? M->Y->i : NULL ; + const int64_t *restrict M_Yx = (M_is_hyper) ? M->Y->x : NULL ; + const int64_t M_hash_bits = (M_is_hyper) ? (M->Y->vdim - 1) : 0 ; //-------------------------------------------------------------------------- // determine the number of threads to use @@ -158,8 +158,8 @@ GrB_Info GB_assign_zombie4 if (M_is_hyper) { // M is hypersparse - GB_hyper_hash_lookup (Mh, Mnvec, Mp, M_Yp, M_Yi, - M_Yx, M_hash_bits, j, &pM, &pM_end) ; + GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, + M_hash_bits, j, &pM, &pM_end) ; } else { diff --git a/Source/GB_assign_zombie5.c b/Source/GB_assign_zombie5.c index 9a55d50fd4..69fe425a1f 100644 --- a/Source/GB_assign_zombie5.c +++ b/Source/GB_assign_zombie5.c @@ -92,10 +92,10 @@ GrB_Info GB_assign_zombie5 const bool M_is_hyper = GB_IS_HYPERSPARSE (M) ; const bool M_is_bitmap = GB_IS_BITMAP (M) ; const bool M_is_full = GB_IS_FULL (M) ; - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = (M_is_hyper) ? M->Y->p : NULL ; + const int64_t *restrict M_Yi = (M_is_hyper) ? M->Y->i : NULL ; + const int64_t *restrict M_Yx = (M_is_hyper) ? M->Y->x : NULL ; + const int64_t M_hash_bits = (M_is_hyper) ? (M->Y->vdim - 1) : 0 ; //-------------------------------------------------------------------------- // determine the number of threads to use @@ -157,8 +157,8 @@ GrB_Info GB_assign_zombie5 if (M_is_hyper) { // M is hypersparse - GB_hyper_hash_lookup (Mh, Mnvec, Mp, M_Yp, M_Yi, M_Yx, - M_hash_bits, j, &pM_start, &pM_end) ; + GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, M_hash_bits, + j, &pM_start, &pM_end) ; } else { diff --git a/Source/GB_binop_new.c b/Source/GB_binop_new.c index 3860ebb6b4..4abcf4750e 100644 --- a/Source/GB_binop_new.c +++ b/Source/GB_binop_new.c @@ -45,8 +45,6 @@ GrB_Info GB_binop_new //-------------------------------------------------------------------------- op->magic = GB_MAGIC ; - op->user_name = NULL ; - op->user_name_size = 0 ; op->ztype = ztype ; op->xtype = xtype ; op->ytype = ytype ; @@ -69,6 +67,7 @@ GrB_Info GB_binop_new // output: op->name, &(op->name_len), &(op->hash), &(op->defn), &(op->defn_size), // input: - binop_name, binop_defn, opcode == GB_USER_binop_code, jitable)) ; + binop_name, binop_defn, "GxB_binary_function", 19, + opcode == GB_USER_binop_code, jitable)) ; } diff --git a/Source/GB_bitwise.h b/Source/GB_bitwise.h index c404be0d98..859eeecde0 100644 --- a/Source/GB_bitwise.h +++ b/Source/GB_bitwise.h @@ -364,7 +364,7 @@ inline uint8_t GB_bitshift_uint8 (uint8_t x, int8_t k) } else if (k >= 8 || k <= -8) { - // C11 states that the result of x << k is undefined if k is + // ANSI C11 states that the result of x << k is undefined if k is // negative or if k is greater than the # of bits in x. Here, the // result is defined to be zero (the same as if shifting left // or right by 8). @@ -372,13 +372,13 @@ inline uint8_t GB_bitshift_uint8 (uint8_t x, int8_t k) } else if (k > 0) { - // left shift x by k bits. z is defined by C11 as + // left shift x by k bits. z is defined by ANSI C11 as // (x * (2^k)) mod (uintmax + 1). return (x << k) ; } else { - // right shift x by k bits. z is defined by C11 as the + // right shift x by k bits. z is defined by ANSI C11 as the // integral part of the quotient of x / (2^k). return (x >> (-k)) ; } @@ -541,13 +541,13 @@ inline int8_t GB_bitshift_int8 (int8_t x, int8_t k) } else if (k >= 8) { - // C11 states that z = x << k is undefined if k is greater + // ANSI C11 states that z = x << k is undefined if k is greater // than the # of bits in x. Here, the result is defined to be zero. return (0) ; } else if (k <= -8) { - // C11 states that z = x >> (-k) is undefined if (-k) is + // ANSI C11 states that z = x >> (-k) is undefined if (-k) is // greater than the # of bits in x. Here, the result is defined to // be the sign of x (z = 0 if x >= 0 and z = -1 if x is negative). return ((x >= 0) ? 0 : -1) ; @@ -555,7 +555,7 @@ inline int8_t GB_bitshift_int8 (int8_t x, int8_t k) else if (k > 0) { // left shift x by k bits (where k is in range 1 to #bits - 1). - // C11 states that z is defined only if x is non-negative and + // ANSI C11 states that z is defined only if x is non-negative and // x * (2^k) is representable. This computation assumes x and z // are represented in 2's complement. The result depends on the // underlying machine architecture and the compiler. @@ -567,13 +567,13 @@ inline int8_t GB_bitshift_int8 (int8_t x, int8_t k) // right shift x by k bits (where k is in range 1 to 8) if (x >= 0) { - // C11 defines z as the integral part of the quotient + // ANSI C11 defines z as the integral part of the quotient // of x / (2^k). return (x >> k) ; } else { - // C11 states that the result is implementation-defined if + // ANSI C11 states that the result is implementation-defined if // x is negative. This computation assumes x and z are in 2's // complement, so 1-bits are shifted in on the left, and thus // the sign bit is always preserved. The result depends on the diff --git a/Source/GB_block.c b/Source/GB_block.c index 53e38c4cb3..9a5577cff4 100644 --- a/Source/GB_block.c +++ b/Source/GB_block.c @@ -29,7 +29,7 @@ GrB_Info GB_block // apply all pending computations if blocking mode enabled // wait if mode is blocking, or if too many pending tuples //-------------------------------------------------------------------------- - if (!(GB_ANY_PENDING_WORK (A) || GB_hyper_hash_need (A))) + if (!(GB_ANY_PENDING_WORK (A) || GB_NEED_HYPER_HASH (A))) { // no pending work, so no need to block return (GrB_SUCCESS) ; diff --git a/Source/GB_boolean_rename.c b/Source/GB_boolean_rename.c index 9d7548a886..d91d853865 100644 --- a/Source/GB_boolean_rename.c +++ b/Source/GB_boolean_rename.c @@ -23,7 +23,7 @@ // Those 6 names are in GraphBLAS but the pairs of names are equivalent. // GraphBLAS includes a built-in GrB_DIV_BOOL operator, so boolean division -// must be defined. C11 does not provide a definition either, and +// must be defined. ANSI C11 does not provide a definition either, and // dividing by zero (boolean false) will typically terminate an application. // In this GraphBLAS implementation, boolean division is treated as if it were // int1, where 1/1 = 1, 0/1 = 0, 0/0 = integer NaN = 0, 1/0 = +infinity = 1. diff --git a/Source/GB_code_name_get.c b/Source/GB_code_name_get.c deleted file mode 100644 index 1d5c3af53c..0000000000 --- a/Source/GB_code_name_get.c +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_code_name_get: get the user_name of a type, from a code -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -const char *GB_code_name_get (GB_Type_code code, char *user_name) -{ - switch (code) - { - case GB_BOOL_code : return ("GrB_BOOL") ; - case GB_INT8_code : return ("GrB_INT8") ; - case GB_INT16_code : return ("GrB_INT16") ; - case GB_INT32_code : return ("GrB_INT32") ; - case GB_INT64_code : return ("GrB_INT64") ; - case GB_UINT8_code : return ("GrB_UINT8") ; - case GB_UINT16_code : return ("GrB_UINT16") ; - case GB_UINT32_code : return ("GrB_UINT32") ; - case GB_UINT64_code : return ("GrB_UINT64") ; - case GB_FP32_code : return ("GrB_FP32") ; - case GB_FP64_code : return ("GrB_FP64") ; - case GB_FC32_code : return ("GxB_FC32") ; - case GB_FC64_code : return ("GxB_FC64") ; - default: - case GB_UDT_code : return (user_name) ; - } -} - diff --git a/Source/GB_deserialize.c b/Source/GB_deserialize.c index e780738aa0..e6dcd15a50 100644 --- a/Source/GB_deserialize.c +++ b/Source/GB_deserialize.c @@ -10,7 +10,6 @@ // A parallel decompression of a serialized blob into a GrB_Matrix. #include "GB.h" -#include "GB_get_set.h" #include "GB_serialize.h" #define GB_FREE_ALL \ @@ -219,41 +218,6 @@ GrB_Info GB_deserialize // deserialize a matrix from a blob } C->magic = GB_MAGIC ; - //-------------------------------------------------------------------------- - // get the GrB_NAME and GrB_ELTYPE_STRING - //-------------------------------------------------------------------------- - - // v8.1.0 adds two nul-terminated uncompressed strings to the end of the - // blob. If the strings are empty, the nul terminators still appear. - - if (version >= GxB_VERSION (8,1,0)) - { - - //---------------------------------------------------------------------- - // look for the two nul bytes in blob [s : blob_size-1] - //---------------------------------------------------------------------- - - int nfound = 0 ; - size_t ss [2] ; - for (size_t p = s ; p < blob_size && nfound < 2 ; p++) - { - if (blob [p] == 0) - { - ss [nfound++] = p ; - } - } - - if (nfound == 2) - { - // extract the GrB_NAME and GrB_ELTYPE_STRING from the blob - char *user_name = (char *) (blob + s) ; -// char *eltype_string = (char *) (blob + ss [0] + 1) ; -// printf ("deserialize user_name [%s] eltype [%s]\n", user_name, -// eltype_string) ; - GB_OK (GB_matvec_name_set (C, user_name, GrB_NAME)) ; - } - } - //-------------------------------------------------------------------------- // return result //-------------------------------------------------------------------------- diff --git a/Source/GB_dup_worker.c b/Source/GB_dup_worker.c index be0adf2c23..63e97336a9 100644 --- a/Source/GB_dup_worker.c +++ b/Source/GB_dup_worker.c @@ -11,13 +11,11 @@ // if numeric is false, C->x is allocated but not initialized. -// If *Chandle is not NULL on input, the header is reused. It may be a static -// or dynamic header, depending on C->static_header. +// If *Chandle is not NULL, the header is reused. It may be a static or +// dynamic header, depending on C->static_header. #include "GB.h" -#include "GB_get_set.h" -#define GB_FREE_ALL \ - GB_FREE (&C_user_name, C_user_name_size) ; +#define GB_FREE_ALL ; GrB_Info GB_dup_worker // make an exact copy of a matrix ( @@ -66,23 +64,6 @@ GrB_Info GB_dup_worker // make an exact copy of a matrix int sparsity_control = A->sparsity_control ; GrB_Type atype = A->type ; - //-------------------------------------------------------------------------- - // copy the user_name of A, if present - //-------------------------------------------------------------------------- - - char *C_user_name = NULL ; - size_t C_user_name_size = 0 ; - if (A->user_name != NULL) - { - info = GB_user_name_set (&C_user_name, &C_user_name_size, - A->user_name, false) ; - if (info != GrB_SUCCESS) - { - // out of memory - return (info) ; - } - } - //-------------------------------------------------------------------------- // create C //-------------------------------------------------------------------------- @@ -134,21 +115,14 @@ GrB_Info GB_dup_worker // make an exact copy of a matrix } C->magic = GB_MAGIC ; // C->p and C->h are now initialized - - //-------------------------------------------------------------------------- - // copy the user_name of A into C, if present - //-------------------------------------------------------------------------- - - C->user_name = C_user_name ; - C->user_name_size = C_user_name_size ; + #ifdef GB_DEBUG + if (numeric) ASSERT_MATRIX_OK (C, "C duplicate of A", GB0) ; + #endif //-------------------------------------------------------------------------- // return the result //-------------------------------------------------------------------------- - #ifdef GB_DEBUG - if (numeric) ASSERT_MATRIX_OK (C, "C duplicate of A", GB0) ; - #endif return (GrB_SUCCESS) ; } diff --git a/Source/GB_emult_08_phase0.c b/Source/GB_emult_08_phase0.c index 8ab085d4a1..13e54c0267 100644 --- a/Source/GB_emult_08_phase0.c +++ b/Source/GB_emult_08_phase0.c @@ -426,10 +426,10 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B GB_OK (GB_hyper_hash_build (M, Werk)) ; const int64_t *restrict Mp = M->p ; - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = M->Y->p ; + const int64_t *restrict M_Yi = M->Y->i ; + const int64_t *restrict M_Yx = M->Y->x ; + const int64_t M_hash_bits = M->Y->vdim - 1 ; // compute C_to_M int64_t k ; @@ -438,7 +438,7 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B { int64_t pM, pM_end ; int64_t j = Ch [k] ; - int64_t kM = GB_hyper_hash_lookup (Mh, Mnvec, Mp, M_Yp, M_Yi, M_Yx, + int64_t kM = GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, M_hash_bits, j, &pM, &pM_end) ; C_to_M [k] = (pM < pM_end) ? kM : -1 ; } @@ -464,10 +464,10 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B GB_OK (GB_hyper_hash_build (A, Werk)) ; const int64_t *restrict Ap = A->p ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = A->Y->p ; + const int64_t *restrict A_Yi = A->Y->i ; + const int64_t *restrict A_Yx = A->Y->x ; + const int64_t A_hash_bits = A->Y->vdim - 1 ; // compute C_to_A int64_t k ; @@ -476,7 +476,7 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B { int64_t pA, pA_end ; int64_t j = Ch [k] ; - int64_t kA = GB_hyper_hash_lookup (Ah, Anvec, Ap, A_Yp, A_Yi, A_Yx, + int64_t kA = GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, j, &pA, &pA_end) ; C_to_A [k] = (pA < pA_end) ? kA : -1 ; } @@ -502,10 +502,10 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B GB_OK (GB_hyper_hash_build (B, Werk)) ; const int64_t *restrict Bp = B->p ; - const int64_t *restrict B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *restrict B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *restrict B_Yx = (B->Y == NULL) ? NULL : B->Y->x ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const int64_t *restrict B_Yp = B->Y->p ; + const int64_t *restrict B_Yi = B->Y->i ; + const int64_t *restrict B_Yx = B->Y->x ; + const int64_t B_hash_bits = B->Y->vdim - 1 ; // compute C_to_B int64_t k ; @@ -514,7 +514,7 @@ GrB_Info GB_emult_08_phase0 // find vectors in C for C=A.*B or C=A.*B { int64_t pB, pB_end ; int64_t j = Ch [k] ; - int64_t kB = GB_hyper_hash_lookup (Bh, Bnvec, Bp, B_Yp, B_Yi, B_Yx, + int64_t kB = GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, j, &pB, &pB_end) ; C_to_B [k] = (pB < pB_end) ? kB : -1 ; } diff --git a/Source/GB_get_set.h b/Source/GB_get_set.h deleted file mode 100644 index 8e91c6dcc8..0000000000 --- a/Source/GB_get_set.h +++ /dev/null @@ -1,93 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_get_set.h: definitions for GrB_get/set methods -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#ifndef GB_GET_SET_H -#define GB_GET_SET_H -#include "GB.h" - -struct GB_Global_opaque -{ - int64_t magic ; - size_t header_size ; -} ; - -GrB_Type_Code GB_type_code_get // return the GrB_Type_Code for the code -( - const GB_Type_code code // type code to convert -) ; - -const char *GB_type_name_get (GrB_Type type) ; -const char *GB_code_name_get (GB_Type_code code, char *user_name) ; - -GrB_Info GB_matvec_name_size_get (GrB_Matrix A, size_t *value, int field) ; -GrB_Info GB_matvec_name_get (GrB_Matrix A, char *name, int field) ; -GrB_Info GB_matvec_enum_get (GrB_Matrix A, int32_t *value, int field) ; -GrB_Info GB_matvec_name_set (GrB_Matrix A, char *value, int field) ; - -GrB_Info GB_matvec_set -( - GrB_Matrix A, - bool is_vector, // true if A is a GrB_Vector - int32_t ivalue, - double dvalue, - int field, - GB_Werk Werk -) ; - -GrB_Info GB_op_enum_get (GB_Operator op, int32_t * value, GrB_Field field) ; -GrB_Info GB_op_scalar_get (GB_Operator op, GrB_Scalar value, GrB_Field field, - GB_Werk Werk) ; -GrB_Info GB_op_string_get (GB_Operator op, char * value, GrB_Field field) ; -GrB_Info GB_op_size_get (GB_Operator op, size_t * value, GrB_Field field) ; - -const char *GB_op_name_get (GB_Operator op) ; -GrB_Info GB_op_string_set (GB_Operator op, char * value, GrB_Field field) ; - -const char *GB_monoid_name_get (GrB_Monoid monoid) ; -const char *GB_semiring_name_get (GrB_Semiring semiring) ; - -GrB_Info GB_op_or_type_string_set -( - // input: - bool user_defined, - bool jitable, - char *value, - int field, - // output: - char **user_name, - size_t *user_name_size, - char *name, - int32_t *name_len, - char **defn, - size_t *defn_size, - uint64_t *hash -) ; - -GrB_Info GB_monoid_get -( - GrB_Monoid monoid, - GrB_Scalar value, - GrB_Field field, - GB_Werk Werk -) ; - -GrB_Info GB_user_name_set -( - // input/output - char **object_user_name, // user_name of the object - size_t *object_user_name_size, // user_name_size of the object - // input - const char *new_name, // new name for the object - const bool only_once // if true, the name of the object can - // only be set once -) ; - - -#endif - diff --git a/Source/GB_hyper.h b/Source/GB_hyper.h index 884c33e09b..116575f15b 100644 --- a/Source/GB_hyper.h +++ b/Source/GB_hyper.h @@ -54,17 +54,10 @@ GrB_Info GB_hyper_hash_build // construct A->Y if not already constructed GB_Werk Werk ) ; -bool GB_hyper_hash_need // return true if A needs a hyper hash -( - GrB_Matrix A -) ; - //------------------------------------------------------------------------------ // GB_lookup: find k so that j == Ah [k], without using the A->Y hyper_hash //------------------------------------------------------------------------------ -#ifdef GB_DEBUG - // For a sparse, bitmap, or full matrix j == k. // For a hypersparse matrix, find k so that j == Ah [k], if it // appears in the list. @@ -75,7 +68,8 @@ bool GB_hyper_hash_need // return true if A needs a hyper hash // pstart and pend are defined for all sparsity structures: hypersparse, // sparse, bitmap, or full. -// With the introduction of the hyper_hash, this is used only for debugging. +// With the introduction of the hyper_hash, this is used only when the +// hyper_hash is too costly to build. static inline bool GB_lookup // find j = Ah [k] ( @@ -101,14 +95,14 @@ static inline bool GB_lookup // find j = Ah [k] bool found ; GB_BINARY_SEARCH (j, Ah, (*pleft), pright, found) ; // ok (historical) if (found) - { + { // j appears in the hyperlist at Ah [pleft] // k = (*pleft) (*pstart) = Ap [(*pleft)] ; (*pend) = Ap [(*pleft)+1] ; } else - { + { // j does not appear in the hyperlist Ah // k = -1 (*pstart) = -1 ; @@ -125,6 +119,6 @@ static inline bool GB_lookup // find j = Ah [k] return (true) ; } } -#endif + #endif diff --git a/Source/GB_hyper_hash_build.c b/Source/GB_hyper_hash_build.c index 78e9946ccc..374d3a210c 100644 --- a/Source/GB_hyper_hash_build.c +++ b/Source/GB_hyper_hash_build.c @@ -35,11 +35,9 @@ GrB_Info GB_hyper_hash_build // construct A->Y if not already constructed // check inputs //-------------------------------------------------------------------------- - if (!GB_hyper_hash_need (A)) + if (A == NULL || !GB_NEED_HYPER_HASH (A)) { - // quick return: A is NULL, not hypersparse, A->Y already computed, - // or A does not have enough non-empty vectors to warrant the creation - // of the A->Y hyper_hash + // quick return: A is NULL, not hypersparse, or A->Y already computed return (GrB_SUCCESS) ; } diff --git a/Source/GB_hyper_hash_need.c b/Source/GB_hyper_hash_need.c deleted file mode 100644 index aefdcd33e8..0000000000 --- a/Source/GB_hyper_hash_need.c +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_hyper_hash_need: determine if a matrix needs its hyper_hash built -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -// A hypersparse matrix A can use a hyper_hash matrix A->Y to speed up access -// to its hyper list, A->h. For extremely sparse matrices, building the -// hyper_hash can be costly, however. - -// If A has pending work, this test is not useful, since the format of A can -// change, and A->nvec could change if zombies are removed and pending tuples -// assembled. This test should only be used if a matrix has no other pending -// work. - -#include "GB.h" - -bool GB_hyper_hash_need -( - GrB_Matrix A -) -{ - - if (A == NULL || !GB_IS_HYPERSPARSE (A)) - { - // only hypersparse matrices require a hyper_hash - return (false) ; - } - - if (A->Y != NULL) - { - // A already has a hyper_hash - return (false) ; - } - - // A is hypersparse, and has no hyper_hash. Check how many non-empty - // vectors it has. A->Y should be built if A has a significant number of - // non-empty vectors. - - // FUTURE: make this also a per-matrix parameter for GrB_get/set - - int64_t hyper_hash = GB_Global_hyper_hash_get ( ) ; - - return (A->nvec > hyper_hash) ; -} - diff --git a/Source/GB_hyper_shallow.c b/Source/GB_hyper_shallow.c index f12a51736f..d3eb2e1fe1 100644 --- a/Source/GB_hyper_shallow.c +++ b/Source/GB_hyper_shallow.c @@ -45,10 +45,6 @@ GrB_Matrix GB_hyper_shallow // return C C->static_header = C_static_header ; C->header_size = C_header_size ; - // remove the user_name - C->user_name = NULL ; - C->user_name_size = 0 ; - // remove the hyperlist and the hyper_hash C->h = NULL ; C->h_shallow = false ; diff --git a/Source/GB_init.c b/Source/GB_init.c index 80cd0fc9e0..7cfe471f7a 100644 --- a/Source/GB_init.c +++ b/Source/GB_init.c @@ -97,7 +97,7 @@ GrB_Info GB_init // start up GraphBLAS GB_Global_GrB_init_called_set (true) ; - // GrB_init passes in the C11 malloc/calloc/realloc/free. + // GrB_init passes in the ANSI C11 malloc/calloc/realloc/free. GB_Global_malloc_function_set (malloc_function ) ; // cannot be NULL GB_Global_calloc_function_set (calloc_function ) ; // ok if NULL diff --git a/Source/GB_jitifyer.c b/Source/GB_jitifyer.c index b956dc5452..a1d3d3e360 100644 --- a/Source/GB_jitifyer.c +++ b/Source/GB_jitifyer.c @@ -37,8 +37,8 @@ static int64_t GB_jit_table_populated = 0 ; static size_t GB_jit_table_allocated = 0 ; static bool GB_jit_use_cmake = - #if GB_WINDOWS - true ; // Windows requires cmake + #if defined (_MSC_VER) + true ; // MSVC requires cmake #else false ; // otherwise, default is to skip cmake and compile directly #endif @@ -234,7 +234,8 @@ GrB_Info GB_jitifyer_init (void) control = GB_IMIN (control, (int) GxB_JIT_ON) ; #else // The JIT is restricted; only OFF, PAUSE, and RUN settings can be - // used. No JIT kernels can be loaded or compiled. + // used. No JIT kernels can be loaded or compiled. Only PreJIT kernels + // can be used. control = GB_IMIN (control, (int) GxB_JIT_RUN) ; #endif GB_jit_control = (GxB_JIT_Control) control ; @@ -1158,9 +1159,12 @@ void GB_jitifyer_set_use_cmake (bool use_cmake) { #pragma omp critical (GB_jitifyer_worker) { - #if GB_WINDOWS + #if defined (_MSC_VER) // Windows requires cmake GB_jit_use_cmake = true ; + #elif defined (__MINGW32__) + // MINGW requires direct compile + GB_jit_use_cmake = false ; #else // all other platforms have the option to use cmake or a direct compile GB_jit_use_cmake = use_cmake ; @@ -2168,6 +2172,19 @@ void GB_jitifyer_table_free (bool freeall) // handled by modifying the command string in the caller, so they do not have // to be handled here. +// NOTE: this call to system(...) *cannot* be sanitized; CodeQL flags calls to +// GB_jitifyer_command as security issues, but this is intentional. The JIT +// allows the end user to create arbitary user-defined types and operators, +// which GraphBLAS then injects into C source code of a JIT kernel created at +// run time. The end user can also specify an arbitrary compiler to compile +// JIT kernels. This code injection is intentional, and required for the JIT. +// If a security-hardened GraphBLAS library is required, then GraphBLAS must be +// compiled with -DNJIT to disable the JIT entirely. User-defined JIT kernels +// will not be created at run time, and thus user-defined types and operators +// will be slow, however. This option does not disable any PreJIT kernels, so +// if fast user-defined kernels are required, they can be used with the PreJIT +// mechanism; see the GraphBLAS User Guide for details. + static void GB_jitifyer_command (char *command) { int result = system (command) ; @@ -2180,7 +2197,10 @@ static void GB_jitifyer_command (char *command) // This method does not return any error/success code. If the compilation // fails for any reason, the subsequent load of the compiled kernel will fail. -// This method works on any platform. For Windows, this method is always used. +// This method works on most platforms (not yet on MINGW, so it is not used +// there). For Windows using MSVC, this method is always used. + +// FUTURE: get this method to work in MINGW. #define GB_BLD_DIR "%s/tmp/%016" PRIx64 @@ -2193,12 +2213,18 @@ void GB_jitifyer_cmake_compile (char *kernel_name, uint64_t hash) char *burble_stdout = GB_Global_burble_get ( ) ? "" : GB_DEV_NULL ; char *err_redirect = (strlen (GB_jit_error_log) > 0) ? " 2>> " : "" ; +#if defined (__MINGW32__) +#define GB_SH_C "sh -c " +#else +#define GB_SH_C +#endif + // remove any prior build folder for this kernel, and all its contents snprintf (GB_jit_temp, GB_jit_temp_allocated, - "cmake -E remove_directory \"" GB_BLD_DIR "\" %s %s %s", + GB_SH_C "cmake -E remove_directory \"" GB_BLD_DIR "\" %s %s %s", GB_jit_cache_path, hash, // build path burble_stdout, err_redirect, GB_jit_error_log) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above // create the build folder for this kernel snprintf (GB_jit_temp, GB_jit_temp_allocated, GB_BLD_DIR, @@ -2253,35 +2279,35 @@ void GB_jitifyer_cmake_compile (char *kernel_name, uint64_t hash) // generate the build system for this kernel snprintf (GB_jit_temp, GB_jit_temp_allocated, - "cmake -S \"" GB_BLD_DIR "\" -B \"" GB_BLD_DIR "\"" + GB_SH_C "cmake -S \"" GB_BLD_DIR "\" -B \"" GB_BLD_DIR "\"" " -DCMAKE_C_COMPILER=\"%s\" %s %s %s", GB_jit_cache_path, hash, // -S source path GB_jit_cache_path, hash, // -B build path GB_jit_C_compiler, // C compiler to use burble_stdout, err_redirect, GB_jit_error_log) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above // compile the library for this kernel snprintf (GB_jit_temp, GB_jit_temp_allocated, - "cmake --build \"" GB_BLD_DIR "\" --config Release %s %s %s", + GB_SH_C "cmake --build \"" GB_BLD_DIR "\" --config Release %s %s %s", // can add "--verbose" here too GB_jit_cache_path, hash, // build path burble_stdout, err_redirect, GB_jit_error_log) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above // install the library snprintf (GB_jit_temp, GB_jit_temp_allocated, - "cmake --install \"" GB_BLD_DIR "\" %s %s %s", + GB_SH_C "cmake --install \"" GB_BLD_DIR "\" %s %s %s", GB_jit_cache_path, hash, // build path burble_stdout, err_redirect, GB_jit_error_log) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above // remove the build folder and all its contents snprintf (GB_jit_temp, GB_jit_temp_allocated, - "cmake -E remove_directory \"" GB_BLD_DIR "\" %s %s %s", + GB_SH_C "cmake -E remove_directory \"" GB_BLD_DIR "\" %s %s %s", GB_jit_cache_path, hash, // build path burble_stdout, err_redirect, GB_jit_error_log) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above #endif } @@ -2293,7 +2319,11 @@ void GB_jitifyer_cmake_compile (char *kernel_name, uint64_t hash) // This method does not return any error/success code. If the compilation // fails for any reason, the subsequent load of the compiled kernel will fail. -// This method does not work on Windows. +// This method does not work on Windows with MSVC. It works for Linux, Mac, +// or Windows with MINGW (for which it is currently the only option). + +// FUTURE: get this method to work in MSVC, since it's much faster than using +// cmake on Windows. void GB_jitifyer_direct_compile (char *kernel_name, uint32_t bucket) { @@ -2306,8 +2336,9 @@ void GB_jitifyer_direct_compile (char *kernel_name, uint32_t bucket) snprintf (GB_jit_temp, GB_jit_temp_allocated, // compile: - "%s -DGB_JIT_RUNTIME=1 " // compiler command - "%s " // C flags + "sh -c \"" // execute with POSIX shell + "%s " // compiler command + "-DGB_JIT_RUNTIME=1 %s " // C flags "-I%s/src " // include source directory "%s " // openmp include directories "-o %s/c/%02x/%s%s " // *.o output file @@ -2322,8 +2353,8 @@ void GB_jitifyer_direct_compile (char *kernel_name, uint32_t bucket) "-o %s/lib/%02x/%s%s%s " // lib*.so output file "%s/c/%02x/%s%s " // *.o input file "%s " // libraries to link with - "%s" // burble stdout - "%s %s ", // error log file + "%s " // burble stdout + "%s %s\"", // error log file // compile: GB_jit_C_compiler, // C compiler @@ -2348,7 +2379,7 @@ void GB_jitifyer_direct_compile (char *kernel_name, uint32_t bucket) // compile the library and return result GBURBLE ("(jit: %s) ", GB_jit_temp) ; - GB_jitifyer_command (GB_jit_temp) ; + GB_jitifyer_command (GB_jit_temp) ; // OK: see security comment above // remove the *.o file snprintf (GB_jit_temp, GB_jit_temp_allocated, "%s/c/%02x/%s%s", diff --git a/Source/GB_macrofy_cast_expression.c b/Source/GB_macrofy_cast_expression.c index 566ec1b071..4cf5ffb64f 100644 --- a/Source/GB_macrofy_cast_expression.c +++ b/Source/GB_macrofy_cast_expression.c @@ -268,7 +268,7 @@ const char *GB_macrofy_cast_expression // return cast expression { //---------------------------------------------------------------------- - // all other cases: use C11 typecasting rules + // all other cases: use ANSI C11 typecasting rules //---------------------------------------------------------------------- f = NULL ; diff --git a/Source/GB_macrofy_cast_input.c b/Source/GB_macrofy_cast_input.c index a7c8f9981d..21d105be8f 100644 --- a/Source/GB_macrofy_cast_input.c +++ b/Source/GB_macrofy_cast_input.c @@ -66,7 +66,7 @@ void GB_macrofy_cast_input if (f == NULL) { - // C11 typecasting + // ANSI C11 typecasting ASSERT (ztype != xtype) ; fprintf (fp, "#define %s(%s,%s) %s = (%s) (%s)\n", macro_name, zarg, xargs, zarg, ztype->name, xexpr) ; diff --git a/Source/GB_macrofy_cast_output.c b/Source/GB_macrofy_cast_output.c index 68990080c7..31f1e55763 100644 --- a/Source/GB_macrofy_cast_output.c +++ b/Source/GB_macrofy_cast_output.c @@ -47,7 +47,7 @@ void GB_macrofy_cast_output if (f == NULL) { - // C11 typecasting + // ANSI C11 typecasting ASSERT (ztype != xtype) ; fprintf (fp, "#define %s(%s,%s) %s = (%s) (%s)\n", macro_name, zarg, xargs, xexpr, xtype->name, zarg) ; diff --git a/Source/GB_math.h b/Source/GB_math.h index 559cdf16e2..8bcf24b6b5 100644 --- a/Source/GB_math.h +++ b/Source/GB_math.h @@ -296,9 +296,6 @@ inline uint64_t GB_idiv_uint64 (uint64_t x, uint64_t y) // Three cases below are from ACM Algo 116, R. L. Smith, 1962. -#if !defined ( GBCUDA_CPLUSPLUS ) -// TODO: does not yet work in CUDA - inline GxB_FC64_t GB_FC64_div (GxB_FC64_t x, GxB_FC64_t y) { double xr = GB_creal (x) ; @@ -401,8 +398,6 @@ inline GxB_FC32_t GB_FC32_div (GxB_FC32_t x, GxB_FC32_t y) " return (GJ_CMPLX32 ((float) GB_creal(zz), (float) GB_cimag(zz))) ; \n" \ "}" -#endif - //------------------------------------------------------------------------------ // z = x^y: wrappers for pow, powf, cpow, and cpowf //------------------------------------------------------------------------------ @@ -484,9 +479,6 @@ inline double GB_pow (double x, double y) " return (pow (x, y)) ; \n" \ "}" -#if !defined ( GBCUDA_CPLUSPLUS ) -// TODO: does not yet work in CUDA - inline GxB_FC32_t GB_FC32_pow (GxB_FC32_t x, GxB_FC32_t y) { float xr = GB_crealf (x) ; @@ -608,7 +600,6 @@ inline GxB_FC64_t GB_FC64_pow (GxB_FC64_t x, GxB_FC64_t y) " } \n" \ " return (GB_cpow (x, y)) ; \n" \ "}" -#endif inline int8_t GB_pow_int8 (int8_t x, int8_t y) { @@ -792,9 +783,6 @@ inline double GB_signum (double x) " return ((double) ((x < 0) ? (-1) : ((x > 0) ? 1 : 0))) ; \n" \ "}" -#if !defined ( GBCUDA_CPLUSPLUS ) -// TODO: does not yet work in CUDA - inline GxB_FC32_t GB_csignumf (GxB_FC32_t x) { if (GB_crealf (x) == 0 && GB_cimagf (x) == 0) @@ -841,9 +829,9 @@ inline GxB_FC64_t GB_csignum (GxB_FC64_t x) // complex functions //------------------------------------------------------------------------------ -// The C11 math.h header defines the ceil, floor, round, trunc, +// The ANSI C11 math.h header defines the ceil, floor, round, trunc, // exp2, expm1, log10, log1pm, or log2 functions for float and double, -// but the corresponding functions do not appear in the C11 complex.h. +// but the corresponding functions do not appear in the ANSI C11 complex.h. // These functions are used instead, for float complex and double complex. //------------------------------------------------------------------------------ @@ -1258,5 +1246,3 @@ inline bool GB_cisfinite (GxB_FC64_t x) #endif -#endif - diff --git a/Source/GB_matvec_enum_get.c b/Source/GB_matvec_enum_get.c deleted file mode 100644 index 944508958a..0000000000 --- a/Source/GB_matvec_enum_get.c +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_matvec_enum_get: get an enum field from a matrix -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_matvec_enum_get (GrB_Matrix A, int32_t *value, int field) -{ - switch (field) - { - case GrB_STORAGE_ORIENTATION_HINT : - - (*value) = (A->is_csc) ? GrB_COLMAJOR : GrB_ROWMAJOR ; - break ; - - case GrB_ELTYPE_CODE : - - (*value) = GB_type_code_get (A->type->code) ; - break ; - - case GxB_SPARSITY_CONTROL : - - (*value) = A->sparsity_control ; - break ; - - case GxB_SPARSITY_STATUS : - - (*value) = GB_sparsity (A) ; - break ; - - case GxB_FORMAT : - - (*value) = (A->is_csc) ? GxB_BY_COL : GxB_BY_ROW ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_matvec_name_get.c b/Source/GB_matvec_name_get.c deleted file mode 100644 index 6225a97826..0000000000 --- a/Source/GB_matvec_name_get.c +++ /dev/null @@ -1,45 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_matvec_name_get: get a name of a matrix or its type -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_matvec_name_get (GrB_Matrix A, char *name, int field) -{ - const char *typename ; - (*name) = '\0' ; - - switch (field) - { - - case GrB_NAME : - if (A->user_name != NULL) - { - strcpy (name, A->user_name) ; - } - break ; - - case GxB_JIT_C_NAME : - strcpy (name, A->type->name) ; - break ; - - case GrB_ELTYPE_STRING : - typename = GB_type_name_get (A->type) ; - if (typename != NULL) - { - strcpy (name, typename) ; - } - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_matvec_name_set.c b/Source/GB_matvec_name_set.c deleted file mode 100644 index f0747f4075..0000000000 --- a/Source/GB_matvec_name_set.c +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_matvec_name_set: set the user_name of a matrix/vector/scalar -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_matvec_name_set -( - GrB_Matrix A, - char *value, - int field -) -{ - - if (field != GrB_NAME) - { - return (GrB_INVALID_VALUE) ; - } - - return (GB_user_name_set (&(A->user_name), &(A->user_name_size), value, - false)) ; -} - diff --git a/Source/GB_matvec_name_size_get.c b/Source/GB_matvec_name_size_get.c deleted file mode 100644 index 3b5cb0bc5a..0000000000 --- a/Source/GB_matvec_name_size_get.c +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_matvec_name_size_get: get max size of a matrix/vector/scalar name or type -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_matvec_name_size_get (GrB_Matrix A, size_t *value, int field) -{ - const char *name = NULL ; - - switch (field) - { - - case GrB_NAME : - name = A->user_name ; - break ; - - case GxB_JIT_C_NAME : - name = A->type->name ; - break ; - - case GrB_ELTYPE_STRING : - name = GB_type_name_get (A->type) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - (*value) = (name == NULL) ? 1 : (strlen (name) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_matvec_set.c b/Source/GB_matvec_set.c deleted file mode 100644 index 2d6139d82b..0000000000 --- a/Source/GB_matvec_set.c +++ /dev/null @@ -1,94 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_matvec_set: set a field in a matrix or vector -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" -#include "GB_transpose.h" -#define GB_FREE_ALL ; - -GrB_Info GB_matvec_set -( - GrB_Matrix A, - bool is_vector, // true if A is a GrB_Vector - int ivalue, - double dvalue, - int field, - GB_Werk Werk -) -{ - - GrB_Info info ; - GB_BURBLE_START ("GrB_set") ; - - int format = ivalue ; - - switch (field) - { - - case GxB_HYPER_SWITCH : - - if (is_vector) - { - return (GrB_INVALID_VALUE) ; - } - A->hyper_switch = (float) dvalue ; - break ; - - case GxB_BITMAP_SWITCH : - - A->bitmap_switch = (float) dvalue ; - break ; - - case GxB_SPARSITY_CONTROL : - - A->sparsity_control = GB_sparsity_control (ivalue, (int64_t) (-1)) ; - break ; - - case GrB_STORAGE_ORIENTATION_HINT : - - format = (ivalue == GrB_COLMAJOR) ? GxB_BY_COL : GxB_BY_ROW ; - // fall through to the GxB_FORMAT case - - case GxB_FORMAT : - - if (is_vector) - { - // the hint is ignored - return (GrB_SUCCESS) ; - } - if (! (format == GxB_BY_ROW || format == GxB_BY_COL)) - { - return (GrB_INVALID_VALUE) ; - } - bool new_csc = (format != GxB_BY_ROW) ; - // conform the matrix to the new by-row/by-col format - if (A->is_csc != new_csc) - { - // A = A', done in-place, and change to the new format. - GB_BURBLE_N (GB_nnz (A), "(transpose) ") ; - GB_OK (GB_transpose_in_place (A, new_csc, Werk)) ; - ASSERT (A->is_csc == new_csc) ; - ASSERT (GB_JUMBLED_OK (A)) ; - } - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // conform the matrix to its new desired sparsity structure - //-------------------------------------------------------------------------- - - ASSERT_MATRIX_OK (A, "A set before conform", GB0) ; - GB_OK (GB_conform (A, Werk)) ; - GB_BURBLE_END ; - ASSERT_MATRIX_OK (A, "A set after conform", GB0) ; - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_monoid_get.c b/Source/GB_monoid_get.c deleted file mode 100644 index cf8566c6d7..0000000000 --- a/Source/GB_monoid_get.c +++ /dev/null @@ -1,69 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_monoid_get: get a field in a monoid -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_monoid_get -( - GrB_Monoid monoid, - GrB_Scalar value, - GrB_Field field, - GB_Werk Werk -) -{ - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - case GrB_INPUT1TYPE_CODE : - case GrB_INPUT2TYPE_CODE : - case GrB_OUTPUTTYPE_CODE : - - return (GB_op_scalar_get ((GB_Operator) monoid->op, value, field, - Werk)) ; - - case GxB_MONOID_IDENTITY : - - if (value->type != monoid->op->ztype) - { - // scalar type must match the monoid type - return (GrB_DOMAIN_MISMATCH) ; - } - return (GB_setElement ((GrB_Matrix) value, NULL, - monoid->identity, 0, 0, monoid->op->ztype->code, Werk)) ; - - case GxB_MONOID_TERMINAL : - - if (value->type != monoid->op->ztype) - { - // scalar type must match the monoid type - return (GrB_DOMAIN_MISMATCH) ; - } - if (monoid->terminal == NULL) - { - // monoid is not terminal: clear the output scalar. - // This is not an error - return (GB_clear ((GrB_Matrix) value, Werk)) ; - } - else - { - // monoid is terminal: return the terminal value. - return (GB_setElement ((GrB_Matrix) value, NULL, - monoid->terminal, 0, 0, monoid->op->ztype->code, - Werk)) ; - } - - default : - return (GrB_INVALID_VALUE) ; - } -} - diff --git a/Source/GB_monoid_name_get.c b/Source/GB_monoid_name_get.c deleted file mode 100644 index 222bab4c6c..0000000000 --- a/Source/GB_monoid_name_get.c +++ /dev/null @@ -1,213 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_monoid_name_get: get the name of a built-in monoid -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -const char *GB_monoid_name_get (GrB_Monoid monoid) -{ - - if (monoid->user_name_size > 0) - { - // user-defined monoid, with name defined by GrB_set - return (monoid->user_name) ; - } - - GB_Opcode opcode = monoid->op->opcode ; - GB_Type_code zcode = monoid->op->ztype->code ; - - switch (opcode) - { - - case GB_ANY_binop_code : // z = x or y - - switch (zcode) - { - case GB_BOOL_code : return ("GxB_ANY_BOOL_MONOID" ) ; - case GB_INT8_code : return ("GxB_ANY_INT8_MONOID" ) ; - case GB_INT16_code : return ("GxB_ANY_INT16_MONOID" ) ; - case GB_INT32_code : return ("GxB_ANY_INT32_MONOID" ) ; - case GB_INT64_code : return ("GxB_ANY_INT64_MONOID" ) ; - case GB_UINT8_code : return ("GxB_ANY_UINT8_MONOID" ) ; - case GB_UINT16_code : return ("GxB_ANY_UINT16_MONOID") ; - case GB_UINT32_code : return ("GxB_ANY_UINT32_MONOID") ; - case GB_UINT64_code : return ("GxB_ANY_UINT64_MONOID") ; - case GB_FP32_code : return ("GxB_ANY_FP32_MONOID" ) ; - case GB_FP64_code : return ("GxB_ANY_FP64_MONOID" ) ; - case GB_FC32_code : return ("GxB_ANY_FC32_MONOID" ) ; - case GB_FC64_code : return ("GxB_ANY_FC64_MONOID" ) ; - default :; - } - break ; - - case GB_MIN_binop_code : // z = min(x,y) - - switch (zcode) - { - case GB_INT8_code : return ("GrB_MIN_MONOID_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_MONOID_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_MONOID_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_MONOID_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_MONOID_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_MONOID_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_MONOID_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_MONOID_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_MONOID_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_MONOID_FP64" ) ; - default :; - } - break ; - - case GB_MAX_binop_code : // z = max(x,y) - - switch (zcode) - { - case GB_INT8_code : return ("GrB_MAX_MONOID_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_MONOID_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_MONOID_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_MONOID_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_MONOID_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_MONOID_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_MONOID_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_MONOID_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_MONOID_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_MONOID_FP64" ) ; - default :; - } - break ; - - case GB_PLUS_binop_code : // z = x + y - - switch (zcode) - { - case GB_INT8_code : return ("GrB_PLUS_MONOID_INT8" ) ; - case GB_INT16_code : return ("GrB_PLUS_MONOID_INT16" ) ; - case GB_INT32_code : return ("GrB_PLUS_MONOID_INT32" ) ; - case GB_INT64_code : return ("GrB_PLUS_MONOID_INT64" ) ; - case GB_UINT8_code : return ("GrB_PLUS_MONOID_UINT8" ) ; - case GB_UINT16_code : return ("GrB_PLUS_MONOID_UINT16") ; - case GB_UINT32_code : return ("GrB_PLUS_MONOID_UINT32") ; - case GB_UINT64_code : return ("GrB_PLUS_MONOID_UINT64") ; - case GB_FP32_code : return ("GrB_PLUS_MONOID_FP32" ) ; - case GB_FP64_code : return ("GrB_PLUS_MONOID_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_FC32_MONOID" ) ; - case GB_FC64_code : return ("GxB_PLUS_FC64_MONOID" ) ; - default :; - } - break ; - - case GB_TIMES_binop_code : // z = x * y - - switch (zcode) - { - case GB_INT8_code : return ("GrB_TIMES_MONOID_INT8" ) ; - case GB_INT16_code : return ("GrB_TIMES_MONOID_INT16" ) ; - case GB_INT32_code : return ("GrB_TIMES_MONOID_INT32" ) ; - case GB_INT64_code : return ("GrB_TIMES_MONOID_INT64" ) ; - case GB_UINT8_code : return ("GrB_TIMES_MONOID_UINT8" ) ; - case GB_UINT16_code : return ("GrB_TIMES_MONOID_UINT16") ; - case GB_UINT32_code : return ("GrB_TIMES_MONOID_UINT32") ; - case GB_UINT64_code : return ("GrB_TIMES_MONOID_UINT64") ; - case GB_FP32_code : return ("GrB_TIMES_MONOID_FP32" ) ; - case GB_FP64_code : return ("GrB_TIMES_MONOID_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_FC32_MONOID" ) ; - case GB_FC64_code : return ("GxB_TIMES_FC64_MONOID" ) ; - default :; - } - break ; - - case GB_LOR_binop_code : // z = (x != 0) || (y != 0) - - switch (zcode) - { - case GB_BOOL_code : return ("GrB_LOR_MONOID_BOOL") ; - default :; - } - break ; - - case GB_LAND_binop_code : // z = (x != 0) && (y != 0) - - switch (zcode) - { - case GB_BOOL_code : return ("GrB_LAND_MONOID_BOOL") ; - default :; - } - break ; - - case GB_LXOR_binop_code : // z = (x != 0) != (y != 0) - - switch (zcode) - { - case GB_BOOL_code : return ("GrB_LXOR_MONOID_BOOL") ; - default :; - } - break ; - - case GB_EQ_binop_code : // z = (x == y), is LXNOR for bool - - switch (zcode) - { - case GB_BOOL_code : return ("GrB_LXNOR_MONOID_BOOL") ; - default :; - } - break ; - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BOR_UINT8_MONOID" ) ; - case GB_UINT16_code : return ("GxB_BOR_UINT16_MONOID") ; - case GB_UINT32_code : return ("GxB_BOR_UINT32_MONOID") ; - case GB_UINT64_code : return ("GxB_BOR_UINT64_MONOID") ; - default :; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BAND_UINT8_MONOID" ) ; - case GB_UINT16_code : return ("GxB_BAND_UINT16_MONOID") ; - case GB_UINT32_code : return ("GxB_BAND_UINT32_MONOID") ; - case GB_UINT64_code : return ("GxB_BAND_UINT64_MONOID") ; - default :; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXOR_UINT8_MONOID" ) ; - case GB_UINT16_code : return ("GxB_BXOR_UINT16_MONOID") ; - case GB_UINT32_code : return ("GxB_BXOR_UINT32_MONOID") ; - case GB_UINT64_code : return ("GxB_BXOR_UINT64_MONOID") ; - default :; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXNOR_UINT8_MONOID" ) ; - case GB_UINT16_code : return ("GxB_BXNOR_UINT16_MONOID") ; - case GB_UINT32_code : return ("GxB_BXNOR_UINT32_MONOID") ; - case GB_UINT64_code : return ("GxB_BXNOR_UINT64_MONOID") ; - default :; - } - break ; - - default: ; - } - - return (NULL) ; -} - diff --git a/Source/GB_new.c b/Source/GB_new.c index 7731d4b053..b92a4a20ac 100644 --- a/Source/GB_new.c +++ b/Source/GB_new.c @@ -91,8 +91,6 @@ GrB_Info GB_new // create matrix, except for indices & values // basic information A->magic = GB_MAGIC2 ; // object is not yet valid A->type = type ; - A->user_name = NULL ; - A->user_name_size = 0 ; // no user_name yet A->logger = NULL ; // no error logged yet A->logger_size = 0 ; diff --git a/Source/GB_op.h b/Source/GB_op.h index 6b41cc4250..1cc2e0e1e0 100644 --- a/Source/GB_op.h +++ b/Source/GB_op.h @@ -32,6 +32,8 @@ GrB_Info GB_op_name_and_defn // input const char *input_name, // user-provided name, may be NULL const char *input_defn, // user-provided name, may be NULL + const char *typecast_name, // typecast name for function pointer + size_t typecast_len, // length of typecast_name bool user_op, // if true, a user-defined op bool jitable // if true, the op can be JIT'd ) ; diff --git a/Source/GB_op_enum_get.c b/Source/GB_op_enum_get.c deleted file mode 100644 index 74db9620b1..0000000000 --- a/Source/GB_op_enum_get.c +++ /dev/null @@ -1,46 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_enum_get: get a field in an op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_op_enum_get -( - GB_Operator op, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - GrB_Type type = NULL ; - (*value) = -1 ; - - switch ((int) field) - { - case GrB_INPUT1TYPE_CODE : type = op->xtype ; break ; - case GrB_INPUT2TYPE_CODE : type = op->ytype ; break ; - case GrB_OUTPUTTYPE_CODE : type = op->ztype ; break ; - default : ; - return (GrB_INVALID_VALUE) ; - } - - if (type == NULL) - { - // operator does not depend on this input - return (GrB_NO_VALUE) ; - } - - (*value) = (int32_t) GB_type_code_get (type->code) ; - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_op_name_and_defn.c b/Source/GB_op_name_and_defn.c index f3b2bb73b7..bf89b71ffd 100644 --- a/Source/GB_op_name_and_defn.c +++ b/Source/GB_op_name_and_defn.c @@ -26,8 +26,10 @@ GrB_Info GB_op_name_and_defn // input const char *input_name, // user-provided name, may be NULL const char *input_defn, // user-provided name, may be NULL + const char *typecast_name, // typecast name for function pointer + size_t typecast_len, // length of typecast_name bool user_op, // if true, a user-defined op - bool jitable // if true, the op can be JIT'd + bool jitable // if false, the op cannot be JIT'd ) { @@ -37,6 +39,7 @@ GrB_Info GB_op_name_and_defn ASSERT (op_name != NULL) ; ASSERT (op_defn != NULL) ; + ASSERT (typecast_name != NULL) ; ASSERT (op_defn_size != NULL) ; (*op_defn) = NULL ; (*op_defn_size) = 0 ; @@ -48,22 +51,54 @@ GrB_Info GB_op_name_and_defn // note: this can get a mangled name; see the BF methods in LAGraph memset (op_name, 0, GxB_MAX_NAME_LEN) ; - if (input_name != NULL) - { - // copy the input_name + if (!user_op) + { + // FIRST_UDT operator created by GB_reduce_to_vector or + // SECOND_UDT operator created by GB_wait + ASSERT (input_name != NULL) ; strncpy (op_name, input_name, GxB_MAX_NAME_LEN-1) ; } + else if (input_name != NULL) + { + // copy the input_name into the working name + char working [GxB_MAX_NAME_LEN] ; + memset (working, 0, GxB_MAX_NAME_LEN) ; + strncpy (working, input_name, GxB_MAX_NAME_LEN-1) ; + // see if the typecast appears in the input_name + char *p = NULL ; + p = strstr (working, typecast_name) ; + if (p != NULL) + { + // skip past the typecast, the left parenthesis, and any whitespace + p += typecast_len ; + while (isspace (*p)) p++ ; + if (*p == ')') p++ ; + while (isspace (*p)) p++ ; + // p now contains the final name, copy it to the output name + strncpy (op_name, p, GxB_MAX_NAME_LEN-1) ; + } + else + { + // no typcast appears; copy the entire op_name as-is + memcpy (op_name, working, GxB_MAX_NAME_LEN) ; + } + } + else + { + // the user-defined op has no name, so give it a generic name + strncpy (op_name, "user_op", GxB_MAX_NAME_LEN-1) ; + } // ensure op_name is null-terminated op_name [GxB_MAX_NAME_LEN-1] = '\0' ; - // get the operator name length (zero if no name given) + // get the operator name length and hash the name (*op_name_len) = (int32_t) strlen (op_name) ; // a user-defined op can only be JIT'd if it has a name and defn. // a new builtin op (created by GB_reduce_to_vector) can always be JIT'd. (*op_hash) = GB_jitifyer_hash (op_name, (*op_name_len), - jitable && (!user_op || (*op_name_len) > 0)) ; + jitable && (!user_op || (input_name != NULL && input_defn != NULL))) ; //-------------------------------------------------------------------------- // get the definition of the operator, if present diff --git a/Source/GB_op_name_get.c b/Source/GB_op_name_get.c deleted file mode 100644 index e7a5af1132..0000000000 --- a/Source/GB_op_name_get.c +++ /dev/null @@ -1,1702 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_name_get: get the user_name of any operator -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -// Three operators are left unnamed: identity_udt, 1st_udt, and 2nd_udt. -// These are created by GB_unop_identity, GB_reduce_to_vector, and -// GB_binop_second, and do not exist outside GraphBLAS. The user application -// cannot pass them to GrB_get. - -#include "GB_get_set.h" - -const char *GB_op_name_get (GB_Operator op) -{ - - GB_Opcode opcode = op->opcode ; - GB_Type_code xcode = (op->xtype == NULL) ? 0 : op->xtype->code ; - GB_Type_code zcode = (op->ztype == NULL) ? 0 : op->ztype->code ; - - switch (opcode) - { - - case GB_NOP_code : return ("GxB_IGNORE_DUP") ; - - //---------------------------------------------------------------------- - // unary operators - //---------------------------------------------------------------------- - - case GB_ONE_unop_code : // z = 1 - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ONE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ONE_INT8" ) ; - case GB_INT16_code : return ("GxB_ONE_INT16" ) ; - case GB_INT32_code : return ("GxB_ONE_INT32" ) ; - case GB_INT64_code : return ("GxB_ONE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ONE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ONE_UINT16") ; - case GB_UINT32_code : return ("GxB_ONE_UINT32") ; - case GB_UINT64_code : return ("GxB_ONE_UINT64") ; - case GB_FP32_code : return ("GxB_ONE_FP32" ) ; - case GB_FP64_code : return ("GxB_ONE_FP64" ) ; - case GB_FC32_code : return ("GxB_ONE_FC32" ) ; - case GB_FC64_code : return ("GxB_ONE_FC64" ) ; - default :; - } - break ; - - case GB_IDENTITY_unop_code : // z = x - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_IDENTITY_BOOL" ) ; - case GB_INT8_code : return ("GrB_IDENTITY_INT8" ) ; - case GB_INT16_code : return ("GrB_IDENTITY_INT16" ) ; - case GB_INT32_code : return ("GrB_IDENTITY_INT32" ) ; - case GB_INT64_code : return ("GrB_IDENTITY_INT64" ) ; - case GB_UINT8_code : return ("GrB_IDENTITY_UINT8" ) ; - case GB_UINT16_code : return ("GrB_IDENTITY_UINT16") ; - case GB_UINT32_code : return ("GrB_IDENTITY_UINT32") ; - case GB_UINT64_code : return ("GrB_IDENTITY_UINT64") ; - case GB_FP32_code : return ("GrB_IDENTITY_FP32" ) ; - case GB_FP64_code : return ("GrB_IDENTITY_FP64" ) ; - case GB_FC32_code : return ("GxB_IDENTITY_FC32" ) ; - case GB_FC64_code : return ("GxB_IDENTITY_FC64" ) ; - // see GB_unop_identity: -// case GB_UDT_code : -// return ("identity_udt") ; - default :; - } - break ; - - case GB_AINV_unop_code : // z = -x - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_AINV_BOOL" ) ; - case GB_INT8_code : return ("GrB_AINV_INT8" ) ; - case GB_INT16_code : return ("GrB_AINV_INT16" ) ; - case GB_INT32_code : return ("GrB_AINV_INT32" ) ; - case GB_INT64_code : return ("GrB_AINV_INT64" ) ; - case GB_UINT8_code : return ("GrB_AINV_UINT8" ) ; - case GB_UINT16_code : return ("GrB_AINV_UINT16") ; - case GB_UINT32_code : return ("GrB_AINV_UINT32") ; - case GB_UINT64_code : return ("GrB_AINV_UINT64") ; - case GB_FP32_code : return ("GrB_AINV_FP32" ) ; - case GB_FP64_code : return ("GrB_AINV_FP64" ) ; - case GB_FC32_code : return ("GxB_AINV_FC32" ) ; - case GB_FC64_code : return ("GxB_AINV_FC64" ) ; - default :; - } - break ; - - case GB_ABS_unop_code : // z = abs(x) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_ABS_BOOL" ) ; - case GB_INT8_code : return ("GrB_ABS_INT8" ) ; - case GB_INT16_code : return ("GrB_ABS_INT16" ) ; - case GB_INT32_code : return ("GrB_ABS_INT32" ) ; - case GB_INT64_code : return ("GrB_ABS_INT64" ) ; - case GB_UINT8_code : return ("GrB_ABS_UINT8" ) ; - case GB_UINT16_code : return ("GrB_ABS_UINT16") ; - case GB_UINT32_code : return ("GrB_ABS_UINT32") ; - case GB_UINT64_code : return ("GrB_ABS_UINT64") ; - case GB_FP32_code : return ("GrB_ABS_FP32" ) ; - case GB_FP64_code : return ("GrB_ABS_FP64" ) ; - case GB_FC32_code : return ("GxB_ABS_FC32" ) ; - case GB_FC64_code : return ("GxB_ABS_FC64" ) ; - default :; - } - break ; - - case GB_MINV_unop_code : // z = 1/x - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_MINV_BOOL" ) ; - case GB_INT8_code : return ("GrB_MINV_INT8" ) ; - case GB_INT16_code : return ("GrB_MINV_INT16" ) ; - case GB_INT32_code : return ("GrB_MINV_INT32" ) ; - case GB_INT64_code : return ("GrB_MINV_INT64" ) ; - case GB_UINT8_code : return ("GrB_MINV_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MINV_UINT16") ; - case GB_UINT32_code : return ("GrB_MINV_UINT32") ; - case GB_UINT64_code : return ("GrB_MINV_UINT64") ; - case GB_FP32_code : return ("GrB_MINV_FP32" ) ; - case GB_FP64_code : return ("GrB_MINV_FP64" ) ; - case GB_FC32_code : return ("GxB_MINV_FC32" ) ; - case GB_FC64_code : return ("GxB_MINV_FC64" ) ; - default :; - } - break ; - - case GB_LNOT_unop_code : // z = !x - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LNOT" ) ; - case GB_INT8_code : return ("GxB_LNOT_INT8" ) ; - case GB_INT16_code : return ("GxB_LNOT_INT16" ) ; - case GB_INT32_code : return ("GxB_LNOT_INT32" ) ; - case GB_INT64_code : return ("GxB_LNOT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LNOT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LNOT_UINT16") ; - case GB_UINT32_code : return ("GxB_LNOT_UINT32") ; - case GB_UINT64_code : return ("GxB_LNOT_UINT64") ; - case GB_FP32_code : return ("GxB_LNOT_FP32" ) ; - case GB_FP64_code : return ("GxB_LNOT_FP64" ) ; - default :; - } - break ; - - case GB_BNOT_unop_code : // z = ~x - - switch (xcode) - { - case GB_INT8_code : return ("GrB_BNOT_INT8" ) ; - case GB_INT16_code : return ("GrB_BNOT_INT16" ) ; - case GB_INT32_code : return ("GrB_BNOT_INT32" ) ; - case GB_INT64_code : return ("GrB_BNOT_INT64" ) ; - case GB_UINT8_code : return ("GrB_BNOT_UINT8" ) ; - case GB_UINT16_code : return ("GrB_BNOT_UINT16") ; - case GB_UINT32_code : return ("GrB_BNOT_UINT32") ; - case GB_UINT64_code : return ("GrB_BNOT_UINT64") ; - default :; - } - break ; - - case GB_SQRT_unop_code : // z = sqrt (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_SQRT_FP32") ; - case GB_FP64_code : return ("GxB_SQRT_FP64") ; - case GB_FC32_code : return ("GxB_SQRT_FC32") ; - case GB_FC64_code : return ("GxB_SQRT_FC64") ; - default :; - } - break ; - - case GB_LOG_unop_code : // z = log (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LOG_FP32") ; - case GB_FP64_code : return ("GxB_LOG_FP64") ; - case GB_FC32_code : return ("GxB_LOG_FC32") ; - case GB_FC64_code : return ("GxB_LOG_FC64") ; - default :; - } - break ; - - case GB_EXP_unop_code : // z = exp (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_EXP_FP32") ; - case GB_FP64_code : return ("GxB_EXP_FP64") ; - case GB_FC32_code : return ("GxB_EXP_FC32") ; - case GB_FC64_code : return ("GxB_EXP_FC64") ; - default :; - } - break ; - - case GB_SIN_unop_code : // z = sin (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_SIN_FP32") ; - case GB_FP64_code : return ("GxB_SIN_FP64") ; - case GB_FC32_code : return ("GxB_SIN_FC32") ; - case GB_FC64_code : return ("GxB_SIN_FC64") ; - default :; - } - break ; - - case GB_COS_unop_code : // z = cos (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_COS_FP32") ; - case GB_FP64_code : return ("GxB_COS_FP64") ; - case GB_FC32_code : return ("GxB_COS_FC32") ; - case GB_FC64_code : return ("GxB_COS_FC64") ; - default :; - } - break ; - - case GB_TAN_unop_code : // z = tan (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_TAN_FP32") ; - case GB_FP64_code : return ("GxB_TAN_FP64") ; - case GB_FC32_code : return ("GxB_TAN_FC32") ; - case GB_FC64_code : return ("GxB_TAN_FC64") ; - default :; - } - break ; - - case GB_ASIN_unop_code : // z = asin (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ASIN_FP32") ; - case GB_FP64_code : return ("GxB_ASIN_FP64") ; - case GB_FC32_code : return ("GxB_ASIN_FC32") ; - case GB_FC64_code : return ("GxB_ASIN_FC64") ; - default :; - } - break ; - - case GB_ACOS_unop_code : // z = acos (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ACOS_FP32") ; - case GB_FP64_code : return ("GxB_ACOS_FP64") ; - case GB_FC32_code : return ("GxB_ACOS_FC32") ; - case GB_FC64_code : return ("GxB_ACOS_FC64") ; - default :; - } - break ; - - case GB_ATAN_unop_code : // z = atan (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ATAN_FP32") ; - case GB_FP64_code : return ("GxB_ATAN_FP64") ; - case GB_FC32_code : return ("GxB_ATAN_FC32") ; - case GB_FC64_code : return ("GxB_ATAN_FC64") ; - default :; - } - break ; - - case GB_SINH_unop_code : // z = sinh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_SINH_FP32") ; - case GB_FP64_code : return ("GxB_SINH_FP64") ; - case GB_FC32_code : return ("GxB_SINH_FC32") ; - case GB_FC64_code : return ("GxB_SINH_FC64") ; - default :; - } - break ; - - case GB_COSH_unop_code : // z = cosh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_COSH_FP32") ; - case GB_FP64_code : return ("GxB_COSH_FP64") ; - case GB_FC32_code : return ("GxB_COSH_FC32") ; - case GB_FC64_code : return ("GxB_COSH_FC64") ; - default :; - } - break ; - - case GB_TANH_unop_code : // z = tanh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_TANH_FP32") ; - case GB_FP64_code : return ("GxB_TANH_FP64") ; - case GB_FC32_code : return ("GxB_TANH_FC32") ; - case GB_FC64_code : return ("GxB_TANH_FC64") ; - default :; - } - break ; - - case GB_ASINH_unop_code : // z = asinh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ASINH_FP32") ; - case GB_FP64_code : return ("GxB_ASINH_FP64") ; - case GB_FC32_code : return ("GxB_ASINH_FC32") ; - case GB_FC64_code : return ("GxB_ASINH_FC64") ; - default :; - } - break ; - - case GB_ACOSH_unop_code : // z = acosh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ACOSH_FP32") ; - case GB_FP64_code : return ("GxB_ACOSH_FP64") ; - case GB_FC32_code : return ("GxB_ACOSH_FC32") ; - case GB_FC64_code : return ("GxB_ACOSH_FC64") ; - default :; - } - break ; - - case GB_ATANH_unop_code : // z = atanh (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ATANH_FP32") ; - case GB_FP64_code : return ("GxB_ATANH_FP64") ; - case GB_FC32_code : return ("GxB_ATANH_FC32") ; - case GB_FC64_code : return ("GxB_ATANH_FC64") ; - default :; - } - break ; - - case GB_SIGNUM_unop_code : // z = signum (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_SIGNUM_FP32") ; - case GB_FP64_code : return ("GxB_SIGNUM_FP64") ; - case GB_FC32_code : return ("GxB_SIGNUM_FC32") ; - case GB_FC64_code : return ("GxB_SIGNUM_FC64") ; - default :; - } - break ; - - case GB_CEIL_unop_code : // z = ceil (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_CEIL_FP32") ; - case GB_FP64_code : return ("GxB_CEIL_FP64") ; - case GB_FC32_code : return ("GxB_CEIL_FC32") ; - case GB_FC64_code : return ("GxB_CEIL_FC64") ; - default :; - } - break ; - - case GB_FLOOR_unop_code : // z = floor (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_FLOOR_FP32") ; - case GB_FP64_code : return ("GxB_FLOOR_FP64") ; - case GB_FC32_code : return ("GxB_FLOOR_FC32") ; - case GB_FC64_code : return ("GxB_FLOOR_FC64") ; - default :; - } - break ; - - case GB_ROUND_unop_code : // z = round (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ROUND_FP32") ; - case GB_FP64_code : return ("GxB_ROUND_FP64") ; - case GB_FC32_code : return ("GxB_ROUND_FC32") ; - case GB_FC64_code : return ("GxB_ROUND_FC64") ; - default :; - } - break ; - - case GB_TRUNC_unop_code : // z = trunc (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_TRUNC_FP32") ; - case GB_FP64_code : return ("GxB_TRUNC_FP64") ; - case GB_FC32_code : return ("GxB_TRUNC_FC32") ; - case GB_FC64_code : return ("GxB_TRUNC_FC64") ; - default :; - } - break ; - - case GB_EXP2_unop_code : // z = exp2 (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_EXP2_FP32") ; - case GB_FP64_code : return ("GxB_EXP2_FP64") ; - case GB_FC32_code : return ("GxB_EXP2_FC32") ; - case GB_FC64_code : return ("GxB_EXP2_FC64") ; - default :; - } - break ; - - case GB_EXPM1_unop_code : // z = expm1 (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_EXPM1_FP32") ; - case GB_FP64_code : return ("GxB_EXPM1_FP64") ; - case GB_FC32_code : return ("GxB_EXPM1_FC32") ; - case GB_FC64_code : return ("GxB_EXPM1_FC64") ; - default :; - } - break ; - - case GB_LOG10_unop_code : // z = log10 (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LOG10_FP32") ; - case GB_FP64_code : return ("GxB_LOG10_FP64") ; - case GB_FC32_code : return ("GxB_LOG10_FC32") ; - case GB_FC64_code : return ("GxB_LOG10_FC64") ; - default :; - } - break ; - - case GB_LOG1P_unop_code : // z = log1P (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LOG1P_FP32") ; - case GB_FP64_code : return ("GxB_LOG1P_FP64") ; - case GB_FC32_code : return ("GxB_LOG1P_FC32") ; - case GB_FC64_code : return ("GxB_LOG1P_FC64") ; - default :; - } - break ; - - case GB_LOG2_unop_code : // z = log2 (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LOG2_FP32") ; - case GB_FP64_code : return ("GxB_LOG2_FP64") ; - case GB_FC32_code : return ("GxB_LOG2_FC32") ; - case GB_FC64_code : return ("GxB_LOG2_FC64") ; - default :; - } - break ; - - case GB_LGAMMA_unop_code : // z = lgamma (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LGAMMA_FP32") ; - case GB_FP64_code : return ("GxB_LGAMMA_FP64") ; - default :; - } - break ; - - case GB_TGAMMA_unop_code : // z = tgamma (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_TGAMMA_FP32") ; - case GB_FP64_code : return ("GxB_TGAMMA_FP64") ; - default :; - } - break ; - - case GB_ERF_unop_code : // z = erf (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ERF_FP32") ; - case GB_FP64_code : return ("GxB_ERF_FP64") ; - default :; - } - break ; - - case GB_ERFC_unop_code : // z = erfc (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ERFC_FP32") ; - case GB_FP64_code : return ("GxB_ERFC_FP64") ; - default :; - } - break ; - - case GB_CBRT_unop_code : // z = cbrt (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_CBRT_FP32") ; - case GB_FP64_code : return ("GxB_CBRT_FP64") ; - default :; - } - break ; - - case GB_FREXPX_unop_code : // z = frexpx (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_FREXPX_FP32") ; - case GB_FP64_code : return ("GxB_FREXPX_FP64") ; - default :; - } - break ; - - case GB_FREXPE_unop_code : // z = frexpe (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_FREXPE_FP32") ; - case GB_FP64_code : return ("GxB_FREXPE_FP64") ; - default :; - } - break ; - - case GB_CONJ_unop_code : // z = conj (x) - - switch (xcode) - { - case GB_FC32_code : return ("GxB_CONJ_FC32") ; - case GB_FC64_code : return ("GxB_CONJ_FC64") ; - default :; - } - break ; - - case GB_CREAL_unop_code : // z = creal (x) - - switch (xcode) - { - case GB_FC32_code : return ("GxB_CREAL_FC32") ; - case GB_FC64_code : return ("GxB_CREAL_FC64") ; - default :; - } - break ; - - case GB_CIMAG_unop_code : // z = cimag (x) - - switch (xcode) - { - case GB_FC32_code : return ("GxB_CIMAG_FC32") ; - case GB_FC64_code : return ("GxB_CIMAG_FC64") ; - default :; - } - break ; - - case GB_CARG_unop_code : // z = carg (x) - - switch (xcode) - { - case GB_FC32_code : return ("GxB_CARG_FC32") ; - case GB_FC64_code : return ("GxB_CARG_FC64") ; - default :; - } - break ; - - case GB_ISINF_unop_code : // z = isinf (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ISINF_FP32") ; - case GB_FP64_code : return ("GxB_ISINF_FP64") ; - case GB_FC32_code : return ("GxB_ISINF_FC32") ; - case GB_FC64_code : return ("GxB_ISINF_FC64") ; - default :; - } - break ; - - case GB_ISNAN_unop_code : // z = isnan (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ISNAN_FP32") ; - case GB_FP64_code : return ("GxB_ISNAN_FP64") ; - case GB_FC32_code : return ("GxB_ISNAN_FC32") ; - case GB_FC64_code : return ("GxB_ISNAN_FC64") ; - default :; - } - break ; - - case GB_ISFINITE_unop_code : // z = isfinite (x) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ISFINITE_FP32") ; - case GB_FP64_code : return ("GxB_ISFINITE_FP64") ; - case GB_FC32_code : return ("GxB_ISFINITE_FC32") ; - case GB_FC64_code : return ("GxB_ISFINITE_FC64") ; - default :; - } - break ; - - case GB_POSITIONI_unop_code : // z = position_i(A(i,j)) == i - - switch (zcode) - { - case GB_INT32_code : return ("GxB_POSITIONI_INT32") ; - case GB_INT64_code : return ("GxB_POSITIONI_INT64") ; - default :; - } - break ; - - case GB_POSITIONI1_unop_code : // z = position_i1(A(i,j)) == i+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_POSITIONI1_INT32") ; - case GB_INT64_code : return ("GxB_POSITIONI1_INT64") ; - default :; - } - break ; - - case GB_POSITIONJ_unop_code : // z = position_j(A(i,j)) == j - - switch (zcode) - { - case GB_INT32_code : return ("GxB_POSITIONJ_INT32") ; - case GB_INT64_code : return ("GxB_POSITIONJ_INT64") ; - default :; - } - break ; - - case GB_POSITIONJ1_unop_code : // z = position_j1(A(i,j)) == j+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_POSITIONJ1_INT32") ; - case GB_INT64_code : return ("GxB_POSITIONJ1_INT64") ; - default :; - } - break ; - - //---------------------------------------------------------------------- - // index_unary operators - //---------------------------------------------------------------------- - - case GB_ROWINDEX_idxunop_code : // (i+thunk): row index - thunk - - switch (zcode) - { - case GB_INT32_code : return ("GrB_ROWINDEX_INT32") ; - case GB_INT64_code : return ("GrB_ROWINDEX_INT64") ; - default :; - } - break ; - - case GB_COLINDEX_idxunop_code : // (j+thunk): col index - thunk - - switch (zcode) - { - case GB_INT32_code : return ("GrB_COLINDEX_INT32") ; - case GB_INT64_code : return ("GrB_COLINDEX_INT64") ; - default :; - } - break ; - - case GB_DIAGINDEX_idxunop_code : // (j-(i+thunk)): diag index+thunk - - switch (zcode) - { - case GB_INT32_code : return ("GrB_DIAGINDEX_INT32") ; - case GB_INT64_code : return ("GrB_DIAGINDEX_INT64") ; - default :; - } - break ; - - case GB_FLIPDIAGINDEX_idxunop_code : // (i-(j+thunk)), internal use only - - switch (zcode) - { - case GB_INT32_code : return ("GxB_FLIPDIAGINDEX_INT32") ; - case GB_INT64_code : return ("GxB_FLIPDIAGINDEX_INT64") ; - default :; - } - break ; - - case GB_TRIL_idxunop_code : return ("GrB_TRIL" ) ; - case GB_TRIU_idxunop_code : return ("GrB_TRIU" ) ; - case GB_DIAG_idxunop_code : return ("GrB_DIAG" ) ; - case GB_OFFDIAG_idxunop_code : return ("GrB_OFFDIAG") ; - case GB_COLLE_idxunop_code : return ("GrB_COLLE" ) ; - case GB_COLGT_idxunop_code : return ("GrB_COLGT" ) ; - case GB_ROWLE_idxunop_code : return ("GrB_ROWLE" ) ; - case GB_ROWGT_idxunop_code : return ("GrB_ROWGT" ) ; - - case GB_NONZOMBIE_idxunop_code : return ("GxB_NONZOMBIE") ; - - case GB_VALUENE_idxunop_code : // (aij != thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUENE_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUENE_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUENE_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUENE_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUENE_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUENE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUENE_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUENE_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUENE_UINT64") ; - case GB_FP32_code : return ("GrB_VALUENE_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUENE_FP64" ) ; - case GB_FC32_code : return ("GxB_VALUENE_FC32" ) ; - case GB_FC64_code : return ("GxB_VALUENE_FC64" ) ; - default :; - } - break ; - - case GB_VALUEEQ_idxunop_code : // (aij == thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUEEQ_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUEEQ_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUEEQ_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUEEQ_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUEEQ_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUEEQ_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUEEQ_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUEEQ_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUEEQ_UINT64") ; - case GB_FP32_code : return ("GrB_VALUEEQ_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUEEQ_FP64" ) ; - case GB_FC32_code : return ("GxB_VALUEEQ_FC32" ) ; - case GB_FC64_code : return ("GxB_VALUEEQ_FC64" ) ; - default :; - } - break ; - - case GB_VALUEGT_idxunop_code : // (aij > thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUEGT_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUEGT_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUEGT_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUEGT_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUEGT_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUEGT_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUEGT_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUEGT_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUEGT_UINT64") ; - case GB_FP32_code : return ("GrB_VALUEGT_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUEGT_FP64" ) ; - default :; - } - break ; - - case GB_VALUEGE_idxunop_code : // (aij >= thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUEGE_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUEGE_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUEGE_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUEGE_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUEGE_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUEGE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUEGE_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUEGE_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUEGE_UINT64") ; - case GB_FP32_code : return ("GrB_VALUEGE_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUEGE_FP64" ) ; - default :; - } - break ; - - case GB_VALUELT_idxunop_code : // (aij < thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUELT_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUELT_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUELT_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUELT_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUELT_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUELT_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUELT_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUELT_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUELT_UINT64") ; - case GB_FP32_code : return ("GrB_VALUELT_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUELT_FP64" ) ; - default :; - } - break ; - - case GB_VALUELE_idxunop_code : // (aij <= thunk) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_VALUELE_BOOL" ) ; - case GB_INT8_code : return ("GrB_VALUELE_INT8" ) ; - case GB_INT16_code : return ("GrB_VALUELE_INT16" ) ; - case GB_INT32_code : return ("GrB_VALUELE_INT32" ) ; - case GB_INT64_code : return ("GrB_VALUELE_INT64" ) ; - case GB_UINT8_code : return ("GrB_VALUELE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_VALUELE_UINT16") ; - case GB_UINT32_code : return ("GrB_VALUELE_UINT32") ; - case GB_UINT64_code : return ("GrB_VALUELE_UINT64") ; - case GB_FP32_code : return ("GrB_VALUELE_FP32" ) ; - case GB_FP64_code : return ("GrB_VALUELE_FP64" ) ; - default :; - } - break ; - - //---------------------------------------------------------------------- - // binary operators - //---------------------------------------------------------------------- - - case GB_FIRST_binop_code : // z = x - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_FIRST_BOOL" ) ; - case GB_INT8_code : return ("GrB_FIRST_INT8" ) ; - case GB_INT16_code : return ("GrB_FIRST_INT16" ) ; - case GB_INT32_code : return ("GrB_FIRST_INT32" ) ; - case GB_INT64_code : return ("GrB_FIRST_INT64" ) ; - case GB_UINT8_code : return ("GrB_FIRST_UINT8" ) ; - case GB_UINT16_code : return ("GrB_FIRST_UINT16") ; - case GB_UINT32_code : return ("GrB_FIRST_UINT32") ; - case GB_UINT64_code : return ("GrB_FIRST_UINT64") ; - case GB_FP32_code : return ("GrB_FIRST_FP32" ) ; - case GB_FP64_code : return ("GrB_FIRST_FP64" ) ; - case GB_FC32_code : return ("GxB_FIRST_FC32" ) ; - case GB_FC64_code : return ("GxB_FIRST_FC64" ) ; - // see GB_reduce_to_vector: -// case GB_UDT_code : -// return ("1st_udt") ; - default :; - } - break ; - - case GB_SECOND_binop_code : // z = y - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_SECOND_BOOL" ) ; - case GB_INT8_code : return ("GrB_SECOND_INT8" ) ; - case GB_INT16_code : return ("GrB_SECOND_INT16" ) ; - case GB_INT32_code : return ("GrB_SECOND_INT32" ) ; - case GB_INT64_code : return ("GrB_SECOND_INT64" ) ; - case GB_UINT8_code : return ("GrB_SECOND_UINT8" ) ; - case GB_UINT16_code : return ("GrB_SECOND_UINT16") ; - case GB_UINT32_code : return ("GrB_SECOND_UINT32") ; - case GB_UINT64_code : return ("GrB_SECOND_UINT64") ; - case GB_FP32_code : return ("GrB_SECOND_FP32" ) ; - case GB_FP64_code : return ("GrB_SECOND_FP64" ) ; - case GB_FC32_code : return ("GxB_SECOND_FC32" ) ; - case GB_FC64_code : return ("GxB_SECOND_FC64" ) ; - // see GB_binop_second: -// case GB_UDT_code : -// return ("2nd_udt") ; - default :; - } - break ; - - case GB_ANY_binop_code : // z = x or y - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ANY_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_FC64" ) ; - default :; - } - break ; - - case GB_PAIR_binop_code : // z = 1 - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_ONEB_BOOL" ) ; - case GB_INT8_code : return ("GrB_ONEB_INT8" ) ; - case GB_INT16_code : return ("GrB_ONEB_INT16" ) ; - case GB_INT32_code : return ("GrB_ONEB_INT32" ) ; - case GB_INT64_code : return ("GrB_ONEB_INT64" ) ; - case GB_UINT8_code : return ("GrB_ONEB_UINT8" ) ; - case GB_UINT16_code : return ("GrB_ONEB_UINT16") ; - case GB_UINT32_code : return ("GrB_ONEB_UINT32") ; - case GB_UINT64_code : return ("GrB_ONEB_UINT64") ; - case GB_FP32_code : return ("GrB_ONEB_FP32" ) ; - case GB_FP64_code : return ("GrB_ONEB_FP64" ) ; - case GB_FC32_code : return ("GxB_ONEB_FC32" ) ; - case GB_FC64_code : return ("GxB_ONEB_FC64" ) ; - default :; - } - break ; - - case GB_MIN_binop_code : // z = min(x,y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_MIN_BOOL" ) ; - case GB_INT8_code : return ("GrB_MIN_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_FP64" ) ; - default :; - } - break ; - - case GB_MAX_binop_code : // z = max(x,y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_MAX_BOOL" ) ; - case GB_INT8_code : return ("GrB_MAX_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_FP64" ) ; - default :; - } - break ; - - case GB_PLUS_binop_code : // z = x + y - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_PLUS_BOOL" ) ; - case GB_INT8_code : return ("GrB_PLUS_INT8" ) ; - case GB_INT16_code : return ("GrB_PLUS_INT16" ) ; - case GB_INT32_code : return ("GrB_PLUS_INT32" ) ; - case GB_INT64_code : return ("GrB_PLUS_INT64" ) ; - case GB_UINT8_code : return ("GrB_PLUS_UINT8" ) ; - case GB_UINT16_code : return ("GrB_PLUS_UINT16") ; - case GB_UINT32_code : return ("GrB_PLUS_UINT32") ; - case GB_UINT64_code : return ("GrB_PLUS_UINT64") ; - case GB_FP32_code : return ("GrB_PLUS_FP32" ) ; - case GB_FP64_code : return ("GrB_PLUS_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_FC64" ) ; - default :; - } - break ; - - case GB_MINUS_binop_code : // z = x - y - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_MINUS_BOOL" ) ; - case GB_INT8_code : return ("GrB_MINUS_INT8" ) ; - case GB_INT16_code : return ("GrB_MINUS_INT16" ) ; - case GB_INT32_code : return ("GrB_MINUS_INT32" ) ; - case GB_INT64_code : return ("GrB_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GrB_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MINUS_UINT16") ; - case GB_UINT32_code : return ("GrB_MINUS_UINT32") ; - case GB_UINT64_code : return ("GrB_MINUS_UINT64") ; - case GB_FP32_code : return ("GrB_MINUS_FP32" ) ; - case GB_FP64_code : return ("GrB_MINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_MINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_MINUS_FC64" ) ; - default :; - } - break ; - - case GB_RMINUS_binop_code : // z = y - x - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_RMINUS_BOOL" ) ; - case GB_INT8_code : return ("GxB_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_RMINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_RMINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_RMINUS_FC64" ) ; - default :; - } - break ; - - case GB_TIMES_binop_code : // z = x * y - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_TIMES_BOOL" ) ; - case GB_INT8_code : return ("GrB_TIMES_INT8" ) ; - case GB_INT16_code : return ("GrB_TIMES_INT16" ) ; - case GB_INT32_code : return ("GrB_TIMES_INT32" ) ; - case GB_INT64_code : return ("GrB_TIMES_INT64" ) ; - case GB_UINT8_code : return ("GrB_TIMES_UINT8" ) ; - case GB_UINT16_code : return ("GrB_TIMES_UINT16") ; - case GB_UINT32_code : return ("GrB_TIMES_UINT32") ; - case GB_UINT64_code : return ("GrB_TIMES_UINT64") ; - case GB_FP32_code : return ("GrB_TIMES_FP32" ) ; - case GB_FP64_code : return ("GrB_TIMES_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_FC64" ) ; - default :; - } - break ; - - case GB_DIV_binop_code : // z = x / y - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_DIV_BOOL" ) ; - case GB_INT8_code : return ("GrB_DIV_INT8" ) ; - case GB_INT16_code : return ("GrB_DIV_INT16" ) ; - case GB_INT32_code : return ("GrB_DIV_INT32" ) ; - case GB_INT64_code : return ("GrB_DIV_INT64" ) ; - case GB_UINT8_code : return ("GrB_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GrB_DIV_UINT16") ; - case GB_UINT32_code : return ("GrB_DIV_UINT32") ; - case GB_UINT64_code : return ("GrB_DIV_UINT64") ; - case GB_FP32_code : return ("GrB_DIV_FP32" ) ; - case GB_FP64_code : return ("GrB_DIV_FP64" ) ; - case GB_FC32_code : return ("GxB_DIV_FC32" ) ; - case GB_FC64_code : return ("GxB_DIV_FC64" ) ; - default :; - } - break ; - - case GB_RDIV_binop_code : // z = y / x - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_RDIV_BOOL" ) ; - case GB_INT8_code : return ("GxB_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_RDIV_FP64" ) ; - case GB_FC32_code : return ("GxB_RDIV_FC32" ) ; - case GB_FC64_code : return ("GxB_RDIV_FC64" ) ; - default :; - } - break ; - - case GB_POW_binop_code : // z = pow (x,y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_POW_BOOL" ) ; - case GB_INT8_code : return ("GxB_POW_INT8" ) ; - case GB_INT16_code : return ("GxB_POW_INT16" ) ; - case GB_INT32_code : return ("GxB_POW_INT32" ) ; - case GB_INT64_code : return ("GxB_POW_INT64" ) ; - case GB_UINT8_code : return ("GxB_POW_UINT8" ) ; - case GB_UINT16_code : return ("GxB_POW_UINT16") ; - case GB_UINT32_code : return ("GxB_POW_UINT32") ; - case GB_UINT64_code : return ("GxB_POW_UINT64") ; - case GB_FP32_code : return ("GxB_POW_FP32" ) ; - case GB_FP64_code : return ("GxB_POW_FP64" ) ; - case GB_FC32_code : return ("GxB_POW_FC32" ) ; - case GB_FC64_code : return ("GxB_POW_FC64" ) ; - default :; - } - break ; - - case GB_ISEQ_binop_code : // z = (x == y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISEQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_ISEQ_FP64" ) ; - case GB_FC32_code : return ("GxB_ISEQ_FC32" ) ; - case GB_FC64_code : return ("GxB_ISEQ_FC64" ) ; - default :; - } - break ; - - case GB_ISNE_binop_code : // z = (x != y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISNE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_ISNE_FP64" ) ; - case GB_FC32_code : return ("GxB_ISNE_FC32" ) ; - case GB_FC64_code : return ("GxB_ISNE_FC64" ) ; - default :; - } - break ; - - case GB_ISGT_binop_code : // z = (x > y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISGT_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_ISGT_FP64" ) ; - default :; - } - break ; - - case GB_ISLT_binop_code : // z = (x < y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISLT_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_ISLT_FP64" ) ; - default :; - } - break ; - - case GB_ISGE_binop_code : // z = (x >= y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISGE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_ISGE_FP64" ) ; - default :; - } - break ; - - case GB_ISLE_binop_code : // z = (x <= y) - - switch (xcode) - { - case GB_BOOL_code : return ("GxB_ISLE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_ISLE_FP64" ) ; - default :; - } - break ; - - case GB_LOR_binop_code : // z = (x != 0) || (y != 0) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LOR" ) ; - case GB_INT8_code : return ("GxB_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_FP64" ) ; - default :; - } - break ; - - case GB_LAND_binop_code : // z = (x != 0) && (y != 0) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LAND" ) ; - case GB_INT8_code : return ("GxB_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_FP64" ) ; - default :; - } - break ; - - case GB_LXOR_binop_code : // z = (x != 0) != (y != 0) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LXOR" ) ; - case GB_INT8_code : return ("GxB_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_FP64" ) ; - default :; - } - break ; - - case GB_EQ_binop_code : // z = (x == y), is LXNOR for bool - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LXNOR" ) ; - case GB_INT8_code : return ("GrB_EQ_INT8" ) ; - case GB_INT16_code : return ("GrB_EQ_INT16" ) ; - case GB_INT32_code : return ("GrB_EQ_INT32" ) ; - case GB_INT64_code : return ("GrB_EQ_INT64" ) ; - case GB_UINT8_code : return ("GrB_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GrB_EQ_UINT16") ; - case GB_UINT32_code : return ("GrB_EQ_UINT32") ; - case GB_UINT64_code : return ("GrB_EQ_UINT64") ; - case GB_FP32_code : return ("GrB_EQ_FP32" ) ; - case GB_FP64_code : return ("GrB_EQ_FP64" ) ; - case GB_FC32_code : return ("GxB_EQ_FC32" ) ; - case GB_FC64_code : return ("GxB_EQ_FC64" ) ; - default :; - } - break ; - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (xcode) - { - case GB_INT8_code : return ("GrB_BOR_INT8" ) ; - case GB_INT16_code : return ("GrB_BOR_INT16" ) ; - case GB_INT32_code : return ("GrB_BOR_INT32" ) ; - case GB_INT64_code : return ("GrB_BOR_INT64" ) ; - case GB_UINT8_code : return ("GrB_BOR_UINT8" ) ; - case GB_UINT16_code : return ("GrB_BOR_UINT16") ; - case GB_UINT32_code : return ("GrB_BOR_UINT32") ; - case GB_UINT64_code : return ("GrB_BOR_UINT64") ; - default :; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (xcode) - { - case GB_INT8_code : return ("GrB_BAND_INT8" ) ; - case GB_INT16_code : return ("GrB_BAND_INT16" ) ; - case GB_INT32_code : return ("GrB_BAND_INT32" ) ; - case GB_INT64_code : return ("GrB_BAND_INT64" ) ; - case GB_UINT8_code : return ("GrB_BAND_UINT8" ) ; - case GB_UINT16_code : return ("GrB_BAND_UINT16") ; - case GB_UINT32_code : return ("GrB_BAND_UINT32") ; - case GB_UINT64_code : return ("GrB_BAND_UINT64") ; - default :; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (xcode) - { - case GB_INT8_code : return ("GrB_BXOR_INT8" ) ; - case GB_INT16_code : return ("GrB_BXOR_INT16" ) ; - case GB_INT32_code : return ("GrB_BXOR_INT32" ) ; - case GB_INT64_code : return ("GrB_BXOR_INT64" ) ; - case GB_UINT8_code : return ("GrB_BXOR_UINT8" ) ; - case GB_UINT16_code : return ("GrB_BXOR_UINT16") ; - case GB_UINT32_code : return ("GrB_BXOR_UINT32") ; - case GB_UINT64_code : return ("GrB_BXOR_UINT64") ; - default :; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (xcode) - { - case GB_INT8_code : return ("GrB_BXNOR_INT8" ) ; - case GB_INT16_code : return ("GrB_BXNOR_INT16" ) ; - case GB_INT32_code : return ("GrB_BXNOR_INT32" ) ; - case GB_INT64_code : return ("GrB_BXNOR_INT64" ) ; - case GB_UINT8_code : return ("GrB_BXNOR_UINT8" ) ; - case GB_UINT16_code : return ("GrB_BXNOR_UINT16") ; - case GB_UINT32_code : return ("GrB_BXNOR_UINT32") ; - case GB_UINT64_code : return ("GrB_BXNOR_UINT64") ; - default :; - } - break ; - - case GB_BGET_binop_code : // z = bitget (x,y) - - switch (xcode) - { - case GB_INT8_code : return ("GxB_BGET_INT8" ) ; - case GB_INT16_code : return ("GxB_BGET_INT16" ) ; - case GB_INT32_code : return ("GxB_BGET_INT32" ) ; - case GB_INT64_code : return ("GxB_BGET_INT64" ) ; - case GB_UINT8_code : return ("GxB_BGET_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BGET_UINT16") ; - case GB_UINT32_code : return ("GxB_BGET_UINT32") ; - case GB_UINT64_code : return ("GxB_BGET_UINT64") ; - default :; - } - break ; - - case GB_BSET_binop_code : // z = bitset (x,y) - - switch (xcode) - { - case GB_INT8_code : return ("GxB_BSET_INT8" ) ; - case GB_INT16_code : return ("GxB_BSET_INT16" ) ; - case GB_INT32_code : return ("GxB_BSET_INT32" ) ; - case GB_INT64_code : return ("GxB_BSET_INT64" ) ; - case GB_UINT8_code : return ("GxB_BSET_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BSET_UINT16") ; - case GB_UINT32_code : return ("GxB_BSET_UINT32") ; - case GB_UINT64_code : return ("GxB_BSET_UINT64") ; - default :; - } - break ; - - case GB_BCLR_binop_code : // z = bitclr (x,y) - - switch (xcode) - { - case GB_INT8_code : return ("GxB_BCLR_INT8" ) ; - case GB_INT16_code : return ("GxB_BCLR_INT16" ) ; - case GB_INT32_code : return ("GxB_BCLR_INT32" ) ; - case GB_INT64_code : return ("GxB_BCLR_INT64" ) ; - case GB_UINT8_code : return ("GxB_BCLR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BCLR_UINT16") ; - case GB_UINT32_code : return ("GxB_BCLR_UINT32") ; - case GB_UINT64_code : return ("GxB_BCLR_UINT64") ; - default :; - } - break ; - - case GB_BSHIFT_binop_code : // z = bitshift (x,y) - - switch (xcode) - { - case GB_INT8_code : return ("GxB_BSHIFT_INT8" ) ; - case GB_INT16_code : return ("GxB_BSHIFT_INT16" ) ; - case GB_INT32_code : return ("GxB_BSHIFT_INT32" ) ; - case GB_INT64_code : return ("GxB_BSHIFT_INT64" ) ; - case GB_UINT8_code : return ("GxB_BSHIFT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BSHIFT_UINT16") ; - case GB_UINT32_code : return ("GxB_BSHIFT_UINT32") ; - case GB_UINT64_code : return ("GxB_BSHIFT_UINT64") ; - default :; - } - break ; - - case GB_NE_binop_code : // z = (x != y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_NE_BOOL" ) ; - case GB_INT8_code : return ("GrB_NE_INT8" ) ; - case GB_INT16_code : return ("GrB_NE_INT16" ) ; - case GB_INT32_code : return ("GrB_NE_INT32" ) ; - case GB_INT64_code : return ("GrB_NE_INT64" ) ; - case GB_UINT8_code : return ("GrB_NE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_NE_UINT16") ; - case GB_UINT32_code : return ("GrB_NE_UINT32") ; - case GB_UINT64_code : return ("GrB_NE_UINT64") ; - case GB_FP32_code : return ("GrB_NE_FP32" ) ; - case GB_FP64_code : return ("GrB_NE_FP64" ) ; - case GB_FC32_code : return ("GxB_NE_FC32" ) ; - case GB_FC64_code : return ("GxB_NE_FC64" ) ; - default :; - } - break ; - - case GB_GT_binop_code : // z = (x > y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_GT_BOOL" ) ; - case GB_INT8_code : return ("GrB_GT_INT8" ) ; - case GB_INT16_code : return ("GrB_GT_INT16" ) ; - case GB_INT32_code : return ("GrB_GT_INT32" ) ; - case GB_INT64_code : return ("GrB_GT_INT64" ) ; - case GB_UINT8_code : return ("GrB_GT_UINT8" ) ; - case GB_UINT16_code : return ("GrB_GT_UINT16") ; - case GB_UINT32_code : return ("GrB_GT_UINT32") ; - case GB_UINT64_code : return ("GrB_GT_UINT64") ; - case GB_FP32_code : return ("GrB_GT_FP32" ) ; - case GB_FP64_code : return ("GrB_GT_FP64" ) ; - default :; - } - break ; - - case GB_LT_binop_code : // z = (x < y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LT_BOOL" ) ; - case GB_INT8_code : return ("GrB_LT_INT8" ) ; - case GB_INT16_code : return ("GrB_LT_INT16" ) ; - case GB_INT32_code : return ("GrB_LT_INT32" ) ; - case GB_INT64_code : return ("GrB_LT_INT64" ) ; - case GB_UINT8_code : return ("GrB_LT_UINT8" ) ; - case GB_UINT16_code : return ("GrB_LT_UINT16") ; - case GB_UINT32_code : return ("GrB_LT_UINT32") ; - case GB_UINT64_code : return ("GrB_LT_UINT64") ; - case GB_FP32_code : return ("GrB_LT_FP32" ) ; - case GB_FP64_code : return ("GrB_LT_FP64" ) ; - default :; - } - break ; - - case GB_GE_binop_code : // z = (x >= y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_GE_BOOL" ) ; - case GB_INT8_code : return ("GrB_GE_INT8" ) ; - case GB_INT16_code : return ("GrB_GE_INT16" ) ; - case GB_INT32_code : return ("GrB_GE_INT32" ) ; - case GB_INT64_code : return ("GrB_GE_INT64" ) ; - case GB_UINT8_code : return ("GrB_GE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_GE_UINT16") ; - case GB_UINT32_code : return ("GrB_GE_UINT32") ; - case GB_UINT64_code : return ("GrB_GE_UINT64") ; - case GB_FP32_code : return ("GrB_GE_FP32" ) ; - case GB_FP64_code : return ("GrB_GE_FP64" ) ; - default :; - } - break ; - - case GB_LE_binop_code : // z = (x <= y) - - switch (xcode) - { - case GB_BOOL_code : return ("GrB_LE_BOOL" ) ; - case GB_INT8_code : return ("GrB_LE_INT8" ) ; - case GB_INT16_code : return ("GrB_LE_INT16" ) ; - case GB_INT32_code : return ("GrB_LE_INT32" ) ; - case GB_INT64_code : return ("GrB_LE_INT64" ) ; - case GB_UINT8_code : return ("GrB_LE_UINT8" ) ; - case GB_UINT16_code : return ("GrB_LE_UINT16") ; - case GB_UINT32_code : return ("GrB_LE_UINT32") ; - case GB_UINT64_code : return ("GrB_LE_UINT64") ; - case GB_FP32_code : return ("GrB_LE_FP32" ) ; - case GB_FP64_code : return ("GrB_LE_FP64" ) ; - default :; - } - break ; - - case GB_ATAN2_binop_code : // z = atan2 (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_ATAN2_FP32") ; - case GB_FP64_code : return ("GxB_ATAN2_FP64") ; - default :; - } - break ; - - case GB_HYPOT_binop_code : // z = hypot (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_HYPOT_FP32") ; - case GB_FP64_code : return ("GxB_HYPOT_FP64") ; - default :; - } - break ; - - case GB_FMOD_binop_code : // z = fmod (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_FMOD_FP32") ; - case GB_FP64_code : return ("GxB_FMOD_FP64") ; - default :; - } - break ; - - case GB_REMAINDER_binop_code : // z = remainder (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_REMAINDER_FP32") ; - case GB_FP64_code : return ("GxB_REMAINDER_FP64") ; - default :; - } - break ; - - case GB_COPYSIGN_binop_code : // z = copysign (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_COPYSIGN_FP32") ; - case GB_FP64_code : return ("GxB_COPYSIGN_FP64") ; - default :; - } - break ; - - case GB_LDEXP_binop_code : // z = ldexp (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_LDEXP_FP32") ; - case GB_FP64_code : return ("GxB_LDEXP_FP64") ; - default :; - } - break ; - - case GB_CMPLX_binop_code : // z = cmplx (x,y) - - switch (xcode) - { - case GB_FP32_code : return ("GxB_CMPLX_FP32") ; - case GB_FP64_code : return ("GxB_CMPLX_FP64") ; - default :; - } - break ; - - case GB_FIRSTI_binop_code : // z = first_i(A(i,j),y) == i - - switch (zcode) - { - case GB_INT32_code : return ("GxB_FIRSTI_INT32") ; - case GB_INT64_code : return ("GxB_FIRSTI_INT64") ; - default :; - } - break ; - - case GB_FIRSTI1_binop_code : // z = first_i1(A(i,j),y) == i+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_FIRSTI1_INT32") ; - case GB_INT64_code : return ("GxB_FIRSTI1_INT64") ; - default :; - } - break ; - - case GB_FIRSTJ_binop_code : // z = first_j(A(i,j),y) == j - - switch (zcode) - { - case GB_INT32_code : return ("GxB_FIRSTJ_INT32") ; - case GB_INT64_code : return ("GxB_FIRSTJ_INT64") ; - default :; - } - break ; - - case GB_FIRSTJ1_binop_code : // z = first_j1(A(i,j),y) == j+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_FIRSTJ1_INT32") ; - case GB_INT64_code : return ("GxB_FIRSTJ1_INT64") ; - default :; - } - break ; - - case GB_SECONDI_binop_code : // z = second_i(x,B(i,j)) == i - - switch (zcode) - { - case GB_INT32_code : return ("GxB_SECONDI_INT32") ; - case GB_INT64_code : return ("GxB_SECONDI_INT64") ; - default :; - } - break ; - - case GB_SECONDI1_binop_code : // z = second_i1(x,B(i,j)) == i+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_SECONDI1_INT32") ; - case GB_INT64_code : return ("GxB_SECONDI1_INT64") ; - default :; - } - break ; - - case GB_SECONDJ_binop_code : // z = second_j(x,B(i,j)) == j - - switch (zcode) - { - case GB_INT32_code : return ("GxB_SECONDJ_INT32") ; - case GB_INT64_code : return ("GxB_SECONDJ_INT64") ; - default :; - } - break ; - - case GB_SECONDJ1_binop_code : // z = second_j1(x,B(i,j)) == j+1 - - switch (zcode) - { - case GB_INT32_code : return ("GxB_SECONDJ1_INT32") ; - case GB_INT64_code : return ("GxB_SECONDJ1_INT64") ; - default :; - } - break ; - - //---------------------------------------------------------------------- - // user-defined operators - //---------------------------------------------------------------------- - - case GB_USER_unop_code : - case GB_USER_idxunop_code : - case GB_USER_binop_code : return (op->user_name) ; - - //---------------------------------------------------------------------- - // operator not recognized - //---------------------------------------------------------------------- - - default :; - } - - return ("") ; -} - diff --git a/Source/GB_op_or_type_string_set.c b/Source/GB_op_or_type_string_set.c deleted file mode 100644 index 2e44f32f0a..0000000000 --- a/Source/GB_op_or_type_string_set.c +++ /dev/null @@ -1,115 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_or_type_string_set: set the name or defn of a user-defined type or op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" -#include -#include "GB_jitifyer.h" - -GrB_Info GB_op_or_type_string_set -( - // input: - bool user_defined, - bool jitable, - char *value, - int field, - // output: - char **user_name, - size_t *user_name_size, - char *name, - int32_t *name_len, - char **defn, - size_t *defn_size, - uint64_t *hash -) -{ - - //-------------------------------------------------------------------------- - // quick return for built-in types and operators - //-------------------------------------------------------------------------- - - if (!user_defined) - { - // built-in type or operator - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // set the name or defn of a user-defined type or operator - //-------------------------------------------------------------------------- - - size_t len = strlen (value) ; - bool compute_hash = false ; - - switch (field) - { - - case GrB_NAME : - - return (GB_user_name_set (user_name, user_name_size, value, true)) ; - - case GxB_JIT_C_NAME : - - if (name [0] != '\0') - { - return (GrB_ALREADY_SET) ; // GxB_JIT_C_NAME already set - } - - if (len == 0 || len >= GxB_MAX_NAME_LEN) - { - // invalid name: the name cannot be empty, and the name cannot - // exceed GxB_MAX_NAME_LEN-1 characters. - return (GrB_INVALID_VALUE) ; - } - - // set the name - strncpy (name, value, GxB_MAX_NAME_LEN-1) ; - name [GxB_MAX_NAME_LEN-1] = '\0' ; - (*name_len) = (int32_t) len ; - // compute the hash if the type defn has also been set - compute_hash = ((*defn) != NULL) ; - break ; - - case GxB_JIT_C_DEFINITION : - - if ((*defn) != NULL) - { - return (GrB_ALREADY_SET) ; // GxB_JIT_C_DEFINITION already set - } - - // allocate space for the definition - (*defn) = GB_MALLOC (len+1, char, defn_size) ; - if ((*defn) == NULL) - { - // out of memory - return (GrB_OUT_OF_MEMORY) ; - } - - // copy the definition into the new operator - memcpy ((*defn), value, len+1) ; - // compute the hash if the type name has also been set - compute_hash = (name [0] != '[') ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // compute the operator hash, if type->name and type->defn are now both set - //-------------------------------------------------------------------------- - - if (compute_hash) - { - // the type name and defn have been set - (*hash) = GB_jitifyer_hash (name, (*name_len), jitable) ; - } - - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_op_scalar_get.c b/Source/GB_op_scalar_get.c deleted file mode 100644 index 74b9a8c9c9..0000000000 --- a/Source/GB_op_scalar_get.c +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_scalar_get: get a field in an op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_op_scalar_get -( - GB_Operator op, - GrB_Scalar value, - GrB_Field field, - GB_Werk Werk -) -{ - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int i ; - GrB_Info info = GB_op_enum_get (op, &i, field) ; - if (info == GrB_SUCCESS) - { - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - return (info) ; -} - diff --git a/Source/GB_op_size_get.c b/Source/GB_op_size_get.c deleted file mode 100644 index 7ff8fd4d52..0000000000 --- a/Source/GB_op_size_get.c +++ /dev/null @@ -1,66 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_size_get: get the size of a string in an op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_op_size_get -( - GB_Operator op, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *s ; - - switch ((int) field) - { - - case GxB_JIT_C_DEFINITION : - (*value) = (op->defn == NULL) ? 1 : (strlen (op->defn) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; - - case GxB_JIT_C_NAME : - (*value) = strlen (op->name) + 1 ; - #pragma omp flush - return (GrB_SUCCESS) ; - - case GrB_NAME : - s = GB_op_name_get (op) ; - (*value) = (s == NULL) ? 1 : (strlen (s) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; - - case GrB_INPUT1TYPE_STRING : - s = GB_type_name_get (op->xtype) ; - break ; ; - - case GrB_INPUT2TYPE_STRING : - s = GB_type_name_get (op->ytype) ; - break ; - - case GrB_OUTPUTTYPE_STRING : - s = GB_type_name_get (op->ztype) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - (*value) = (s == NULL) ? 1 : (strlen (s) + 1) ; - - #pragma omp flush - return ((s == NULL) ? GrB_NO_VALUE : GrB_SUCCESS) ; -} - diff --git a/Source/GB_op_string_get.c b/Source/GB_op_string_get.c deleted file mode 100644 index aeb83e1b61..0000000000 --- a/Source/GB_op_string_get.c +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_string_get: get a field in an op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_op_string_get -( - GB_Operator op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - (*value) = '\0' ; - GrB_Type type = NULL ; - const char *name ; - - switch ((int) field) - { - - case GrB_NAME : - - name = GB_op_name_get (op) ; - if (name != NULL) - { - strcpy (value, name) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; - - case GxB_JIT_C_NAME : - - strcpy (value, op->name) ; - #pragma omp flush - return (GrB_SUCCESS) ; - - case GxB_JIT_C_DEFINITION : - - if (op->defn != NULL) - { - strcpy (value, op->defn) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; - - case GrB_INPUT1TYPE_STRING : type = op->xtype ; break ; - case GrB_INPUT2TYPE_STRING : type = op->ytype ; break ; - case GrB_OUTPUTTYPE_STRING : type = op->ztype ; break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - if (type == NULL) - { - // operator does not depend on this input - return (GrB_NO_VALUE) ; - } - - name = GB_type_name_get (type) ; - if (name != NULL) - { - strcpy (value, name) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GB_op_string_set.c b/Source/GB_op_string_set.c deleted file mode 100644 index 6f49a5fbc5..0000000000 --- a/Source/GB_op_string_set.c +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_op_string_set: set the name or defn of an operator -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_op_string_set -( - GB_Operator op, - char * value, - GrB_Field field -) -{ - - GB_Opcode opcode = op->opcode ; - bool user_defined = (opcode == GB_USER_unop_code) || - (opcode == GB_USER_idxunop_code) || - (opcode == GB_USER_binop_code) ; - - bool jitable = - (op->ztype->hash != UINT64_MAX) && - (op->xtype->hash != UINT64_MAX) && - (op->ytype == NULL || op->ytype->hash != UINT64_MAX) ; - - return (GB_op_or_type_string_set (user_defined, jitable, value, field, - &(op->user_name), &(op->user_name_size), - op->name, &(op->name_len), &(op->defn), &(op->defn_size), - &(op->hash))) ; -} - diff --git a/Source/GB_ops.c b/Source/GB_ops.c index 1d82758af8..4f35cd7e87 100644 --- a/Source/GB_ops.c +++ b/Source/GB_ops.c @@ -38,7 +38,6 @@ struct GB_Type_opaque GB_OPAQUE (type) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ sizeof (ctype), /* sizeof the type */ \ GB_ ## type ## _code, /* type code */ \ 0, name, /* name_len and name */ \ @@ -70,7 +69,6 @@ GB_TYPEDEF (GxB, FC64 , GxB_FC64_t, "GxB_FC64_t") ; struct GB_Descriptor_opaque GB_OPAQUE (desc_ ## name) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ "", 0, /* logger */ \ (GrB_Desc_Value) (out), \ (GrB_Desc_Value) (mask), \ @@ -142,7 +140,6 @@ GB_DESC (RSCT0T1, GrB_REPLACE, GrB_STRUCTURE + GrB_COMP, GrB_TRAN, GrB_TRAN ) struct GB_UnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (ztype), /* ztype */ \ & GB_OPAQUE (xtype), /* xtype */ \ NULL, /* ytype */ \ @@ -176,7 +173,6 @@ GB_DESC (RSCT0T1, GrB_REPLACE, GrB_STRUCTURE + GrB_COMP, GrB_TRAN, GrB_TRAN ) struct GB_BinaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (ztype), /* ztype */ \ & GB_OPAQUE (xtype), \ & GB_OPAQUE (ytype), \ @@ -215,7 +211,6 @@ GB_DESC (RSCT0T1, GrB_REPLACE, GrB_STRUCTURE + GrB_COMP, GrB_TRAN, GrB_TRAN ) struct GB_UnaryOp_opaque GB_OPAQUE (op ## _ ## type) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (type), /* ztype */ \ & GB_OPAQUE (type), /* xtype */ \ NULL, /* ytype */ \ @@ -231,7 +226,6 @@ GB_DESC (RSCT0T1, GrB_REPLACE, GrB_STRUCTURE + GrB_COMP, GrB_TRAN, GrB_TRAN ) struct GB_BinaryOp_opaque GB_OPAQUE (op ## _ ## type) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (type), /* ztype */ \ & GB_OPAQUE (type), /* xtype */ \ & GB_OPAQUE (type), /* ytype */ \ @@ -281,7 +275,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_IndexUnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (GB_XTYPE), /* ztype */ \ NULL, /* xtype */ \ & GB_OPAQUE (GB_XTYPE), /* ytype */ \ @@ -300,7 +293,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_IndexUnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (GB_XTYPE), /* ztype */ \ NULL, /* xtype */ \ & GB_OPAQUE (GB_XTYPE), /* ytype */ \ @@ -320,7 +312,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_IndexUnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (BOOL), /* ztype */ \ NULL, /* xtype */ \ & GB_OPAQUE (GB_XTYPE), /* ytype */ \ @@ -338,7 +329,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_IndexUnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (BOOL), /* ztype */ \ & GB_OPAQUE (GB_XTYPE), /* xtype */ \ & GB_OPAQUE (GB_XTYPE), /* ytype */ \ @@ -356,7 +346,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_IndexUnaryOp_opaque GB_OPAQUE (GB_OP (op)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (BOOL), /* ztype */ \ & GB_OPAQUE (GB_XTYPE), /* xtype */ \ & GB_OPAQUE (GB_XTYPE), /* ytype */ \ @@ -375,7 +364,6 @@ GXB_OP2_POS (SECONDJ1 , "secondj1" , INT64) ; struct GB_SelectOp_opaque GB_OPAQUE (op) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (BOOL), /* ztype */ \ NULL, /* xtype */ \ NULL, /* thunk type */ \ @@ -500,7 +488,6 @@ GrB_BinaryOp GrB_LXNOR = & GB_OPAQUE (EQ_BOOL) ; struct GB_BinaryOp_opaque GB_OPAQUE (IGNORE_DUP) = { GB_MAGIC2, 0, // magic and header_size - NULL, 0, // no user_name for GrB_get/GrB_set NULL, // ztype NULL, // xtype NULL, // ytype @@ -534,7 +521,6 @@ extern void GB_nonzombie_func (bool *z, const void *x, struct GB_IndexUnaryOp_opaque GB_OPAQUE (NONZOMBIE) = { GB_MAGIC, 0, // magic and header_size - NULL, 0, // no user_name for GrB_get/GrB_set & GB_OPAQUE (BOOL), // ztype NULL, // xtype & GB_OPAQUE (INT64), // ytype @@ -586,7 +572,6 @@ const GxB_Format_Value GxB_FORMAT_DEFAULT = GxB_BY_ROW ; struct GB_Monoid_opaque GB_OPAQUE (GB_EVAL2 (op, _MONOID)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (op), /* additive operator */ \ & GB_OPAQUE (GB_EVAL2 (identity_, op)), /* identity */ \ NULL, /* terminal */ \ @@ -602,7 +587,6 @@ const GxB_Format_Value GxB_FORMAT_DEFAULT = GxB_BY_ROW ; struct GB_Monoid_opaque GB_OPAQUE (GB_EVAL2 (op, _MONOID)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (op), /* additive operator */ \ & GB_OPAQUE (GB_EVAL2 (identity_, op)), /* identity */ \ & GB_OPAQUE (GB_EVAL2 (terminal_, op)), /* terminal */ \ @@ -776,7 +760,6 @@ GB_MONOID_DEF ( BXNOR_UINT64 , uint64_t , 0xFFFFFFFFFFFFFFFF ) struct GB_Semiring_opaque GB_OPAQUE (GB_SEMIRING_NAME(add, mult)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (GB_EVAL4 (add, _, GB_XTYPE, _MONOID)), \ & GB_OPAQUE (GB_EVAL3 (mult, _, GB_XTYPE)), \ NULL, 0, 0, 0 /* name, name_len, name_size, hash */ \ @@ -789,7 +772,6 @@ GB_MONOID_DEF ( BXNOR_UINT64 , uint64_t , 0xFFFFFFFFFFFFFFFF ) struct GB_Semiring_opaque GB_OPAQUE (GB_SEMIRING_NAME(add, mult)) = \ { \ GB_MAGIC, 0, /* magic and header_size */ \ - NULL, 0, /* no user_name for GrB_get/GrB_set */ \ & GB_OPAQUE (GB_EVAL2 (add, _BOOL_MONOID)), \ & GB_OPAQUE (GB_EVAL3 (mult, _, GB_XTYPE)), \ NULL, 0, 0, 0 /* name, name_len, name_size, hash */ \ @@ -1021,8 +1003,7 @@ struct GB_Context_opaque GB_OPAQUE (CONTEXT_WORLD) = { GB_MAGIC, // magic: initialized 0, // header_size: statically allocated - NULL, 0, // no user_name for GrB_get/GrB_set - // revised by GxB_Context_get/set: + // revised by GrB_init: (double) GB_CHUNK_DEFAULT, // chunk 1, // nthreads_max -1, // gpu_id diff --git a/Source/GB_semiring_name_get.c b/Source/GB_semiring_name_get.c deleted file mode 100644 index 54a6d24843..0000000000 --- a/Source/GB_semiring_name_get.c +++ /dev/null @@ -1,3341 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_semiring_name_get: get the name of a built-in semiring -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -const char *GB_semiring_name_get (GrB_Semiring semiring) -{ - - if (semiring->user_name_size > 0) - { - // user-defined semiring, with name defined by GrB_set - return (semiring->user_name) ; - } - - GB_Opcode add_opcode = semiring->add->op->opcode ; - GB_Opcode mult_opcode = semiring->multiply->opcode ; - GB_Type_code zcode = semiring->add->op->ztype->code ; - GB_Type_code xcode = semiring->multiply->xtype->code ; - bool xbool = (xcode == GB_BOOL_code) ; - - switch (mult_opcode) - { - - //---------------------------------------------------------------------- - case GB_FIRST_binop_code : // z = x - //---------------------------------------------------------------------- - - // 61 semirings with FIRST: - // 50: (min,max,plus,times,any) for 10 non-boolean real - // 5: (or,and,xor,eq,any) for boolean - // 6: (plus,times,any) for 2 complex - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MIN_FIRST_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_FIRST_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_FIRST_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_FIRST_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_FIRST_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_FIRST_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_FIRST_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_FIRST_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_FIRST_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_FIRST_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MAX_FIRST_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_FIRST_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_FIRST_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_FIRST_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_FIRST_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_FIRST_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_FIRST_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_FIRST_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_FIRST_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_FIRST_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_FIRST_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_FIRST_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_FIRST_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_FIRST_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_FIRST_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_FIRST_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_FIRST_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_FIRST_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_FIRST_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_FIRST_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_FIRST_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_FIRST_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_FIRST_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_FIRST_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_FIRST_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_FIRST_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_FIRST_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_FIRST_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_FIRST_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_FIRST_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_FIRST_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_FIRST_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_FIRST_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_FIRST_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types, plus 2 complex - case GB_BOOL_code : return ("GxB_ANY_FIRST_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_FIRST_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_FIRST_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_FIRST_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_FIRST_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_FIRST_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_FIRST_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_FIRST_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_FIRST_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_FIRST_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_FIRST_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_FIRST_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_FIRST_FC64" ) ; - default: ; - } - break ; - - case GB_LOR_binop_code : if (xbool) return ("GxB_LOR_FIRST_BOOL" ) ; - case GB_LAND_binop_code : if (xbool) return ("GxB_LAND_FIRST_BOOL" ) ; - case GB_EQ_binop_code : if (xbool) return ("GxB_EQ_FIRST_BOOL" ) ; - case GB_LXOR_binop_code : if (xbool) return ("GxB_LXOR_FIRST_BOOL") ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_SECOND_binop_code : // z = y - //---------------------------------------------------------------------- - - // 61 semirings with SECOND: - // 50: (min,max,plus,times,any) for 10 real non-boolean - // 5: (or,and,xor,eq,any) for boolean - // 6: (plus,times,any) for 2 complex - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MIN_SECOND_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_SECOND_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_SECOND_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_SECOND_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_SECOND_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_SECOND_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_SECOND_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_SECOND_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_SECOND_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_SECOND_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MAX_SECOND_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_SECOND_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_SECOND_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_SECOND_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_SECOND_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_SECOND_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_SECOND_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_SECOND_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_SECOND_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_SECOND_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_SECOND_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_SECOND_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_SECOND_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_SECOND_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_SECOND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_SECOND_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_SECOND_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_SECOND_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_SECOND_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_SECOND_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_SECOND_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_SECOND_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_SECOND_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_SECOND_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_SECOND_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_SECOND_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_SECOND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_SECOND_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_SECOND_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_SECOND_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_SECOND_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_SECOND_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_SECOND_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_SECOND_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types, plus 2 complex - case GB_BOOL_code : return ("GxB_ANY_SECOND_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_SECOND_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_SECOND_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_SECOND_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_SECOND_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_SECOND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_SECOND_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_SECOND_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_SECOND_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_SECOND_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_SECOND_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_SECOND_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_SECOND_FC64" ) ; - default: ; - } - break ; - - case GB_LOR_binop_code : if (xbool) return ("GxB_LOR_SECOND_BOOL" ) ; - case GB_LAND_binop_code : if (xbool) return ("GxB_LAND_SECOND_BOOL" ) ; - case GB_EQ_binop_code : if (xbool) return ("GxB_EQ_SECOND_BOOL" ) ; - case GB_LXOR_binop_code : if (xbool) return ("GxB_LXOR_SECOND_BOOL") ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_MIN_binop_code : // z = min(x,y) - //---------------------------------------------------------------------- - - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_MIN_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_MIN_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_MIN_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_MIN_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_MIN_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_MIN_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_MIN_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_MIN_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_MIN_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_MIN_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MAX_MIN_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_MIN_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_MIN_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_MIN_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_MIN_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_MIN_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_MIN_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_MIN_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_MIN_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_MIN_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_PLUS_MIN_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_PLUS_MIN_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_PLUS_MIN_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_PLUS_MIN_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_PLUS_MIN_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_PLUS_MIN_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_PLUS_MIN_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_PLUS_MIN_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_PLUS_MIN_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_PLUS_MIN_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_MIN_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_MIN_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_MIN_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_MIN_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_MIN_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_MIN_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_MIN_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_MIN_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_MIN_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_MIN_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_MIN_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_MIN_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_MIN_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_MIN_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_MIN_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_MIN_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_MIN_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_MIN_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_MIN_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_MIN_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_MAX_binop_code : // z = max(x,y) - //---------------------------------------------------------------------- - - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MIN_MAX_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_MAX_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_MAX_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_MAX_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_MAX_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_MAX_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_MAX_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_MAX_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_MAX_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_MAX_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_MAX_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_MAX_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_MAX_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_MAX_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_MAX_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_MAX_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_MAX_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_MAX_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_MAX_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_MAX_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_MAX_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_MAX_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_MAX_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_MAX_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_MAX_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_MAX_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_MAX_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_MAX_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_MAX_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_MAX_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_MAX_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_MAX_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_MAX_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_MAX_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_MAX_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_MAX_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_MAX_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_MAX_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_MAX_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_MAX_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_MAX_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_MAX_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_MAX_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_MAX_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_MAX_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_MAX_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_MAX_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_MAX_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_MAX_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_MAX_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_PLUS_binop_code : // z = x + y - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MIN_PLUS_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_PLUS_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_PLUS_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_PLUS_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_PLUS_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_PLUS_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_PLUS_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_PLUS_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_PLUS_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_PLUS_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MAX_PLUS_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_PLUS_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_PLUS_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_PLUS_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_PLUS_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_PLUS_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_PLUS_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_PLUS_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_PLUS_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_PLUS_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_PLUS_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_PLUS_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_PLUS_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_PLUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_PLUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_PLUS_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_PLUS_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_PLUS_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_PLUS_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_PLUS_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_PLUS_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_PLUS_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_PLUS_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_PLUS_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_PLUS_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_PLUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_PLUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_PLUS_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_PLUS_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_PLUS_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_PLUS_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_PLUS_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_PLUS_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_PLUS_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_PLUS_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_PLUS_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_PLUS_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_PLUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_PLUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_PLUS_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_PLUS_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_PLUS_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_PLUS_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_PLUS_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_PLUS_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_PLUS_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_MINUS_binop_code : // z = x - y - //---------------------------------------------------------------------- - - // 56 semirings: - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - // 6: (plus,times,any) for 2 complex types - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_MINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_MINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_MINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_MINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_MINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_MINUS_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_MINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_MINUS_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_MINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_MINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_MINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_MINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_MINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_MINUS_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_MINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_MINUS_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_MINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_MINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_MINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_MINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_MINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_MINUS_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_MINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_MINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_MINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_MINUS_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_MINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_MINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_MINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_MINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_MINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_MINUS_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_MINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_MINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_MINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_MINUS_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_MINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_MINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_MINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_MINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_MINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_MINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_MINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_MINUS_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_MINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_MINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_MINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_MINUS_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISEQ_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISEQ_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISEQ_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISEQ_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISEQ_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISEQ_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISEQ_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISEQ_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISEQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISEQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISEQ_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISEQ_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISEQ_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISEQ_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISEQ_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISNE_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISNE_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISNE_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISNE_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISNE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISNE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISNE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISNE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISNE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISNE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISNE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISNE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISNE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISNE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISNE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISGT_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISGT_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISGT_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISGT_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISGT_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISGT_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISGT_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISGT_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISGT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISGT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISGT_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISGT_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISGT_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISGT_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISGT_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISLT_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISLT_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISLT_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISLT_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISLT_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISLT_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISLT_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISLT_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISLT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISLT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISLT_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISLT_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISLT_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISLT_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISLT_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISGE_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISGE_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISGE_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISGE_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISGE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISGE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISGE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISGE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISGE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISGE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISGE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISGE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISGE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISGE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISGE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_ISLE_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_ISLE_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_ISLE_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_ISLE_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_ISLE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_ISLE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_ISLE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_ISLE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_ISLE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_ISLE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_ISLE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_ISLE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_ISLE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_ISLE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_ISLE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_RMINUS_binop_code : // z = y - x (reverse minus) - //---------------------------------------------------------------------- - - // 56 semirings: - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - // 6: (plus,times,any) for 2 complex types - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_RMINUS_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_RMINUS_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_RMINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_RMINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_RMINUS_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_RMINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_RMINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_RMINUS_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_RMINUS_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_RMINUS_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_RMINUS_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_RMINUS_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_RMINUS_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_RMINUS_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_RMINUS_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_RMINUS_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_RMINUS_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_RMINUS_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_RMINUS_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_RMINUS_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_TIMES_binop_code : // z = x * y - //---------------------------------------------------------------------- - - // 56 semirings: - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - // 6: (plus,times,any) for 2 complex types - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MIN_TIMES_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MIN_TIMES_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MIN_TIMES_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MIN_TIMES_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MIN_TIMES_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MIN_TIMES_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MIN_TIMES_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MIN_TIMES_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MIN_TIMES_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MIN_TIMES_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GrB_MAX_TIMES_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_MAX_TIMES_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_MAX_TIMES_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_MAX_TIMES_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_MAX_TIMES_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_MAX_TIMES_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_MAX_TIMES_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_MAX_TIMES_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_MAX_TIMES_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_MAX_TIMES_SEMIRING_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GrB_PLUS_TIMES_SEMIRING_INT8" ) ; - case GB_INT16_code : return ("GrB_PLUS_TIMES_SEMIRING_INT16" ) ; - case GB_INT32_code : return ("GrB_PLUS_TIMES_SEMIRING_INT32" ) ; - case GB_INT64_code : return ("GrB_PLUS_TIMES_SEMIRING_INT64" ) ; - case GB_UINT8_code : return ("GrB_PLUS_TIMES_SEMIRING_UINT8" ) ; - case GB_UINT16_code : return ("GrB_PLUS_TIMES_SEMIRING_UINT16") ; - case GB_UINT32_code : return ("GrB_PLUS_TIMES_SEMIRING_UINT32") ; - case GB_UINT64_code : return ("GrB_PLUS_TIMES_SEMIRING_UINT64") ; - case GB_FP32_code : return ("GrB_PLUS_TIMES_SEMIRING_FP32" ) ; - case GB_FP64_code : return ("GrB_PLUS_TIMES_SEMIRING_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_TIMES_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_TIMES_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_TIMES_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_TIMES_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_TIMES_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_TIMES_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_TIMES_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_TIMES_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_TIMES_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_TIMES_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_TIMES_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_TIMES_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_TIMES_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_TIMES_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_TIMES_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_TIMES_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_TIMES_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_TIMES_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_TIMES_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_TIMES_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_TIMES_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_TIMES_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_TIMES_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_TIMES_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_TIMES_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_TIMES_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_DIV_binop_code : // z = x / y - //---------------------------------------------------------------------- - - // 56 semirings: - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - // 6: (plus,times,any) for 2 complex types - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_DIV_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_DIV_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_DIV_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_DIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_DIV_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_DIV_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_DIV_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_DIV_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_DIV_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_DIV_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_DIV_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_DIV_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_DIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_DIV_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_DIV_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_DIV_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_DIV_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_DIV_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_DIV_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_DIV_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_DIV_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_DIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_DIV_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_DIV_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_DIV_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_DIV_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_DIV_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_DIV_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_DIV_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_DIV_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_DIV_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_DIV_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_DIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_DIV_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_DIV_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_DIV_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_DIV_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_DIV_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_DIV_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_DIV_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_DIV_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_DIV_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_DIV_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_DIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_DIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_DIV_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_DIV_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_DIV_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_DIV_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_DIV_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_DIV_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_DIV_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_RDIV_binop_code : // z = y / x (reverse division) - //---------------------------------------------------------------------- - - // 56 semirings: - // 50 semirings: (min,max,plus,times,any) for 10 real non-boolean - // 6: (plus,times,any) for 2 complex types - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_RDIV_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_RDIV_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_RDIV_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_RDIV_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_RDIV_FC64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_TIMES_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_RDIV_FP64" ) ; - case GB_FC32_code : return ("GxB_TIMES_RDIV_FC32" ) ; - case GB_FC64_code : return ("GxB_TIMES_RDIV_FC64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_ANY_RDIV_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_RDIV_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_RDIV_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_RDIV_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_RDIV_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_RDIV_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_RDIV_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_RDIV_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_RDIV_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_RDIV_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_RDIV_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_RDIV_FC64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_EQ_binop_code : // z = (x == y) - //---------------------------------------------------------------------- - - // 55 semirings: (and,or,xor,eq,any) * 11 types (all but complex) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LOR_EQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_LOR_EQ_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_EQ_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_EQ_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_EQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_EQ_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_EQ_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_EQ_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_EQ_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_EQ_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LAND_EQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_LAND_EQ_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_EQ_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_EQ_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_EQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_EQ_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_EQ_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_EQ_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_EQ_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_EQ_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LXOR_EQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_LXOR_EQ_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_EQ_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_EQ_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_EQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_EQ_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_EQ_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_EQ_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_EQ_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_EQ_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_EQ_EQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_EQ_EQ_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_EQ_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_EQ_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_EQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_EQ_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_EQ_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_EQ_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_EQ_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_EQ_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_ANY_EQ_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_EQ_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_EQ_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_EQ_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_EQ_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_EQ_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_EQ_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_EQ_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_EQ_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_EQ_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_EQ_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_NE_binop_code : // z = (x != y) - //---------------------------------------------------------------------- - - // 50 semirings: (and,or,xor,eq,any) * (10 real non-boolean types) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_LOR_NE_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_NE_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_NE_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_NE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_NE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_NE_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_NE_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_NE_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_NE_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_NE_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_LAND_NE_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_NE_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_NE_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_NE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_NE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_NE_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_NE_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_NE_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_NE_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_NE_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_LXOR_NE_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_NE_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_NE_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_NE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_NE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_NE_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_NE_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_NE_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_NE_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_NE_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_EQ_NE_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_NE_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_NE_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_NE_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_NE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_NE_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_NE_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_NE_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_NE_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_NE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_ANY_NE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_NE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_NE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_NE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_NE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_NE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_NE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_NE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_NE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_NE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_GT_binop_code : // z = (x > y) - //---------------------------------------------------------------------- - - // 55 semirings: (and,or,xor,eq,any) * 11 types (all but complex) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LOR_GT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LOR_GT_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_GT_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_GT_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_GT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_GT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_GT_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_GT_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_GT_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_GT_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_GT_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LAND_GT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LAND_GT_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_GT_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_GT_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_GT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_GT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_GT_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_GT_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_GT_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_GT_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_GT_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LXOR_GT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LXOR_GT_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_GT_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_GT_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_GT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_GT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_GT_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_GT_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_GT_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_GT_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_GT_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_EQ_GT_BOOL" ) ; - case GB_INT8_code : return ("GxB_EQ_GT_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_GT_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_GT_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_GT_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_GT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_GT_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_GT_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_GT_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_GT_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_GT_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_ANY_GT_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_GT_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_GT_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_GT_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_GT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_GT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_GT_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_GT_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_GT_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_GT_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_GT_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_LT_binop_code : // z = (x < y) - //---------------------------------------------------------------------- - - // 55 semirings: (and,or,xor,eq,any) * 11 types (all but complex) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LOR_LT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LOR_LT_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_LT_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_LT_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_LT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_LT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_LT_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_LT_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_LT_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_LT_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_LT_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LAND_LT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LAND_LT_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_LT_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_LT_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_LT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_LT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_LT_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_LT_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_LT_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_LT_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_LT_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LXOR_LT_BOOL" ) ; - case GB_INT8_code : return ("GxB_LXOR_LT_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_LT_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_LT_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_LT_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_LT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_LT_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_LT_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_LT_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_LT_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_LT_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_EQ_LT_BOOL" ) ; - case GB_INT8_code : return ("GxB_EQ_LT_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_LT_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_LT_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_LT_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_LT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_LT_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_LT_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_LT_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_LT_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_LT_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_ANY_LT_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_LT_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_LT_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_LT_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_LT_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_LT_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_LT_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_LT_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_LT_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_LT_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_LT_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_GE_binop_code : // z = (x >= y) - //---------------------------------------------------------------------- - - // 55 semirings: (and,or,xor,eq,any) * 11 types (all but complex) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LOR_GE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LOR_GE_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_GE_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_GE_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_GE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_GE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_GE_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_GE_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_GE_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_GE_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_GE_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LAND_GE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LAND_GE_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_GE_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_GE_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_GE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_GE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_GE_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_GE_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_GE_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_GE_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_GE_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LXOR_GE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LXOR_GE_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_GE_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_GE_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_GE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_GE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_GE_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_GE_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_GE_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_GE_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_GE_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_EQ_GE_BOOL" ) ; - case GB_INT8_code : return ("GxB_EQ_GE_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_GE_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_GE_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_GE_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_GE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_GE_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_GE_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_GE_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_GE_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_GE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_ANY_GE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_GE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_GE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_GE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_GE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_GE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_GE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_GE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_GE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_GE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_GE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_LE_binop_code : // z = (x <= y) - //---------------------------------------------------------------------- - - // 55 semirings: (and,or,xor,eq,any) * 11 types (all but complex) - - switch (add_opcode) - { - - case GB_LOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LOR_LE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LOR_LE_INT8" ) ; - case GB_INT16_code : return ("GxB_LOR_LE_INT16" ) ; - case GB_INT32_code : return ("GxB_LOR_LE_INT32" ) ; - case GB_INT64_code : return ("GxB_LOR_LE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LOR_LE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LOR_LE_UINT16") ; - case GB_UINT32_code : return ("GxB_LOR_LE_UINT32") ; - case GB_UINT64_code : return ("GxB_LOR_LE_UINT64") ; - case GB_FP32_code : return ("GxB_LOR_LE_FP32" ) ; - case GB_FP64_code : return ("GxB_LOR_LE_FP64" ) ; - default: ; - } - break ; - - case GB_LAND_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LAND_LE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LAND_LE_INT8" ) ; - case GB_INT16_code : return ("GxB_LAND_LE_INT16" ) ; - case GB_INT32_code : return ("GxB_LAND_LE_INT32" ) ; - case GB_INT64_code : return ("GxB_LAND_LE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LAND_LE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LAND_LE_UINT16") ; - case GB_UINT32_code : return ("GxB_LAND_LE_UINT32") ; - case GB_UINT64_code : return ("GxB_LAND_LE_UINT64") ; - case GB_FP32_code : return ("GxB_LAND_LE_FP32" ) ; - case GB_FP64_code : return ("GxB_LAND_LE_FP64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_LXOR_LE_BOOL" ) ; - case GB_INT8_code : return ("GxB_LXOR_LE_INT8" ) ; - case GB_INT16_code : return ("GxB_LXOR_LE_INT16" ) ; - case GB_INT32_code : return ("GxB_LXOR_LE_INT32" ) ; - case GB_INT64_code : return ("GxB_LXOR_LE_INT64" ) ; - case GB_UINT8_code : return ("GxB_LXOR_LE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_LXOR_LE_UINT16") ; - case GB_UINT32_code : return ("GxB_LXOR_LE_UINT32") ; - case GB_UINT64_code : return ("GxB_LXOR_LE_UINT64") ; - case GB_FP32_code : return ("GxB_LXOR_LE_FP32" ) ; - case GB_FP64_code : return ("GxB_LXOR_LE_FP64" ) ; - default: ; - } - break ; - - case GB_EQ_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_EQ_LE_BOOL" ) ; - case GB_INT8_code : return ("GxB_EQ_LE_INT8" ) ; - case GB_INT16_code : return ("GxB_EQ_LE_INT16" ) ; - case GB_INT32_code : return ("GxB_EQ_LE_INT32" ) ; - case GB_INT64_code : return ("GxB_EQ_LE_INT64" ) ; - case GB_UINT8_code : return ("GxB_EQ_LE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_EQ_LE_UINT16") ; - case GB_UINT32_code : return ("GxB_EQ_LE_UINT32") ; - case GB_UINT64_code : return ("GxB_EQ_LE_UINT64") ; - case GB_FP32_code : return ("GxB_EQ_LE_FP32" ) ; - case GB_FP64_code : return ("GxB_EQ_LE_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus boolean - case GB_BOOL_code : return ("GxB_ANY_LE_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_LE_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_LE_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_LE_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_LE_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_LE_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_LE_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_LE_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_LE_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_LE_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_LE_FP64" ) ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_PAIR_binop_code : // z = 1 - //---------------------------------------------------------------------- - - // 26 semirings with PAIR: - // 13: ANY_PAIR semirings - // 12: (plus) for 10 real non-boolean and 2 complex - // 1: (xor) for boolean - - switch (add_opcode) - { - - case GB_MIN_binop_code: - case GB_MAX_binop_code: - case GB_TIMES_binop_code: - case GB_LOR_binop_code: - case GB_LAND_binop_code: - case GB_EQ_binop_code: - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types, plus 2 complex - case GB_BOOL_code : return ("GxB_ANY_PAIR_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_PAIR_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_PAIR_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_PAIR_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_PAIR_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_PAIR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_PAIR_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_PAIR_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_PAIR_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_PAIR_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_PAIR_FP64" ) ; - case GB_FC32_code : return ("GxB_ANY_PAIR_FC32" ) ; - case GB_FC64_code : return ("GxB_ANY_PAIR_FC64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types, plus 2 complex - case GB_INT8_code : return ("GxB_PLUS_PAIR_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_PAIR_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_PAIR_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_PAIR_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_PAIR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_PAIR_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_PAIR_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_PAIR_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_PAIR_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_PAIR_FP64" ) ; - case GB_FC32_code : return ("GxB_PLUS_PAIR_FC32" ) ; - case GB_FC64_code : return ("GxB_PLUS_PAIR_FC64" ) ; - default: ; - } - break ; - - case GB_LXOR_binop_code : if (xbool) return ("GxB_LXOR_PAIR_BOOL") ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_LOR_binop_code : // z = x || y - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_LOR_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_LOR_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_LOR_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_LOR_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types - case GB_BOOL_code : return ("GxB_ANY_LOR_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_LOR_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_LOR_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_LOR_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_LOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_LOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_LOR_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_LOR_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_LOR_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_LOR_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_LOR_FP64" ) ; - default: ; - } - break ; - - case GB_LOR_binop_code : if (xbool) return ("GxB_LOR_LOR_BOOL" ) ; - case GB_LAND_binop_code : if (xbool) return ("GrB_LAND_LOR_SEMIRING_BOOL" ) ; - case GB_EQ_binop_code : if (xbool) return ("GrB_LXNOR_LOR_SEMIRING_BOOL") ; - case GB_LXOR_binop_code : if (xbool) return ("GxB_LXOR_LOR_BOOL" ) ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_LAND_binop_code : // z = x && y - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_LAND_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_LAND_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_LAND_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_LAND_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types - case GB_BOOL_code : return ("GxB_ANY_LAND_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_LAND_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_LAND_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_LAND_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_LAND_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_LAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_LAND_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_LAND_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_LAND_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_LAND_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_LAND_FP64" ) ; - default: ; - } - break ; - - case GB_LOR_binop_code : if (xbool) return ("GrB_LOR_LAND_SEMIRING_BOOL" ) ; - case GB_LAND_binop_code : if (xbool) return ("GxB_LAND_LAND_BOOL" ) ; - case GB_EQ_binop_code : if (xbool) return ("GxB_EQ_LAND_BOOL" ) ; - case GB_LXOR_binop_code : if (xbool) return ("GrB_LXOR_LAND_SEMIRING_BOOL") ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_LXOR_binop_code : // z = x != y - //---------------------------------------------------------------------- - - switch (add_opcode) - { - - case GB_MIN_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MIN_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_MIN_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_MIN_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_MIN_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_MIN_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MIN_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_MIN_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_MIN_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_MIN_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_MIN_LXOR_FP64" ) ; - default: ; - } - break ; - - case GB_MAX_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_MAX_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_MAX_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_MAX_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_MAX_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_MAX_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_MAX_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_MAX_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_MAX_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_MAX_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_MAX_LXOR_FP64" ) ; - default: ; - } - break ; - - case GB_PLUS_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_PLUS_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_PLUS_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_PLUS_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_PLUS_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_PLUS_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_PLUS_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_PLUS_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_PLUS_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_PLUS_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_PLUS_LXOR_FP64" ) ; - default: ; - } - break ; - - case GB_TIMES_binop_code: - - switch (xcode) - { - // 10 real, non-boolean types - case GB_INT8_code : return ("GxB_TIMES_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_TIMES_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_TIMES_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_TIMES_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_TIMES_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_TIMES_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_TIMES_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_TIMES_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_TIMES_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_TIMES_LXOR_FP64" ) ; - default: ; - } - break ; - - case GB_ANY_binop_code: - - switch (xcode) - { - // 11 real and boolean types - case GB_BOOL_code : return ("GxB_ANY_LXOR_BOOL" ) ; - case GB_INT8_code : return ("GxB_ANY_LXOR_INT8" ) ; - case GB_INT16_code : return ("GxB_ANY_LXOR_INT16" ) ; - case GB_INT32_code : return ("GxB_ANY_LXOR_INT32" ) ; - case GB_INT64_code : return ("GxB_ANY_LXOR_INT64" ) ; - case GB_UINT8_code : return ("GxB_ANY_LXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_ANY_LXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_ANY_LXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_ANY_LXOR_UINT64") ; - case GB_FP32_code : return ("GxB_ANY_LXOR_FP32" ) ; - case GB_FP64_code : return ("GxB_ANY_LXOR_FP64" ) ; - default: ; - } - break ; - - case GB_LOR_binop_code : if (xbool) return ("GxB_LOR_LXOR_BOOL" ) ; - case GB_LAND_binop_code : if (xbool) return ("GxB_LAND_LXOR_BOOL" ) ; - case GB_EQ_binop_code : if (xbool) return ("GxB_EQ_LXOR_BOOL" ) ; - case GB_LXOR_binop_code : if (xbool) return ("GxB_LXOR_LXOR_BOOL" ) ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_BOR_binop_code : // z = (x | y), bitwise or - //---------------------------------------------------------------------- - - // 16 semirings: (bor,band,bxor,bxnor) * (uint8,16,32,64) - - switch (add_opcode) - { - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BOR_BOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BOR_BOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BOR_BOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BOR_BOR_UINT64") ; - default: ; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BAND_BOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BAND_BOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BAND_BOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BAND_BOR_UINT64") ; - default: ; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXOR_BOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXOR_BOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXOR_BOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXOR_BOR_UINT64") ; - default: ; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXNOR_BOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXNOR_BOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXNOR_BOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXNOR_BOR_UINT64") ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_BAND_binop_code : // z = (x & y), bitwise and - //---------------------------------------------------------------------- - - // 16 semirings: (bor,band,bxor,bxnor) * (uint8,16,32,64) - - switch (add_opcode) - { - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BOR_BAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BOR_BAND_UINT16") ; - case GB_UINT32_code : return ("GxB_BOR_BAND_UINT32") ; - case GB_UINT64_code : return ("GxB_BOR_BAND_UINT64") ; - default: ; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BAND_BAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BAND_BAND_UINT16") ; - case GB_UINT32_code : return ("GxB_BAND_BAND_UINT32") ; - case GB_UINT64_code : return ("GxB_BAND_BAND_UINT64") ; - default: ; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXOR_BAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXOR_BAND_UINT16") ; - case GB_UINT32_code : return ("GxB_BXOR_BAND_UINT32") ; - case GB_UINT64_code : return ("GxB_BXOR_BAND_UINT64") ; - default: ; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXNOR_BAND_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXNOR_BAND_UINT16") ; - case GB_UINT32_code : return ("GxB_BXNOR_BAND_UINT32") ; - case GB_UINT64_code : return ("GxB_BXNOR_BAND_UINT64") ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - //---------------------------------------------------------------------- - - // 16 semirings: (bor,band,bxor,bxnor) * (uint8,16,32,64) - - switch (add_opcode) - { - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BOR_BXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BOR_BXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BOR_BXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BOR_BXOR_UINT64") ; - default: ; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BAND_BXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BAND_BXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BAND_BXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BAND_BXOR_UINT64") ; - default: ; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXOR_BXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXOR_BXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXOR_BXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXOR_BXOR_UINT64") ; - default: ; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXNOR_BXOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXNOR_BXOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXNOR_BXOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXNOR_BXOR_UINT64") ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - //---------------------------------------------------------------------- - - // 16 semirings: (bor,band,bxor,bxnor) * (uint8,16,32,64) - - switch (add_opcode) - { - - case GB_BOR_binop_code : // z = (x | y), bitwise or - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BOR_BXNOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BOR_BXNOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BOR_BXNOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BOR_BXNOR_UINT64") ; - default: ; - } - break ; - - case GB_BAND_binop_code : // z = (x & y), bitwise and - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BAND_BXNOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BAND_BXNOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BAND_BXNOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BAND_BXNOR_UINT64") ; - default: ; - } - break ; - - case GB_BXOR_binop_code : // z = (x ^ y), bitwise xor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXOR_BXNOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXOR_BXNOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXOR_BXNOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXOR_BXNOR_UINT64") ; - default: ; - } - break ; - - case GB_BXNOR_binop_code : // z = ~(x ^ y), bitwise xnor - - switch (zcode) - { - case GB_UINT8_code : return ("GxB_BXNOR_BXNOR_UINT8" ) ; - case GB_UINT16_code : return ("GxB_BXNOR_BXNOR_UINT16") ; - case GB_UINT32_code : return ("GxB_BXNOR_BXNOR_UINT32") ; - case GB_UINT64_code : return ("GxB_BXNOR_BXNOR_UINT64") ; - default: ; - } - break ; - - default: ; - } - break ; - - //---------------------------------------------------------------------- - case GB_FIRSTI_binop_code : // z = first_i(A(i,k),y) == i - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_FIRSTI_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_FIRSTI_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_FIRSTI_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_FIRSTI_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_FIRSTI_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_FIRSTI_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_FIRSTI_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_FIRSTI_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_FIRSTI_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_FIRSTI_INT64" ) ; - default: ; - } - } - break ; - - //---------------------------------------------------------------------- - case GB_FIRSTI1_binop_code : // z = first_i1(A(i,k),y) == i+1 - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_FIRSTI1_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_FIRSTI1_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_FIRSTI1_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_FIRSTI1_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_FIRSTI1_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_FIRSTI1_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_FIRSTI1_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_FIRSTI1_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_FIRSTI1_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_FIRSTI1_INT64" ) ; - default: ; - } - } - break ; - - //---------------------------------------------------------------------- - case GB_FIRSTJ_binop_code : // z = first_j(A(i,k),y) == k - case GB_SECONDI_binop_code : // z = second_i(x,B(k,j)) == k - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - // FIRSTJ and SECONDI are identical when used in a semiring - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDI_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDI_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDI_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDI_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDI_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDI_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDI_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDI_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDI_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDI_INT64" ) ; - default: ; - } - } - break ; - - //---------------------------------------------------------------------- - case GB_FIRSTJ1_binop_code : // z = first_j1(A(i,k),y) == k+1 - case GB_SECONDI1_binop_code : // z = second_i1(x,B(k,j)) == k+1 - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - // FIRSTJ1 and SECONDI1 are identical when used in a semiring - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDI1_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDI1_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDI1_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDI1_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDI1_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDI1_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDI1_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDI1_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDI1_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDI1_INT64" ) ; - default: ; - } - } - break ; - - //---------------------------------------------------------------------- - case GB_SECONDJ_binop_code : // z = second_j(x,B(i,j)) == j - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDJ_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDJ_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDJ_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDJ_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDJ_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDJ_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDJ_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDJ_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDJ_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDJ_INT64" ) ; - default: ; - } - } - break ; - - //---------------------------------------------------------------------- - case GB_SECONDJ1_binop_code : // z = second_j1(x,B(i,j)) == j+1 - //---------------------------------------------------------------------- - - // 10 semirings: (min,max,times,plus,any) * (int32,int64) - - if (zcode == GB_INT32_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDJ1_INT32" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDJ1_INT32" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDJ1_INT32") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDJ1_INT32" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDJ1_INT32" ) ; - default: ; - } - } - else if (zcode == GB_INT64_code) - { - switch (add_opcode) - { - case GB_MIN_binop_code : return ("GxB_MIN_SECONDJ1_INT64" ) ; - case GB_MAX_binop_code : return ("GxB_MAX_SECONDJ1_INT64" ) ; - case GB_TIMES_binop_code : return ("GxB_TIMES_SECONDJ1_INT64") ; - case GB_PLUS_binop_code : return ("GxB_PLUS_SECONDJ1_INT64" ) ; - case GB_ANY_binop_code : return ("GxB_ANY_SECONDJ1_INT64" ) ; - default: ; - } - } - break ; - - default: ; - } - - return (NULL) ; -} - diff --git a/Source/GB_serialize.c b/Source/GB_serialize.c index 395dd5881d..87d61396a0 100644 --- a/Source/GB_serialize.c +++ b/Source/GB_serialize.c @@ -14,7 +14,6 @@ // estimate the size of the blob for GrB_Matrix_serializeSize. #include "GB.h" -#include "GB_get_set.h" #include "GB_serialize.h" #define GB_FREE_WORKSPACE \ @@ -244,14 +243,6 @@ GrB_Info GB_serialize // serialize a matrix into a blob s += Ai_compressed_size ; s += Ax_compressed_size ; - // size of the GrB_NAME and GrB_ELTYPE_STRING, including one nul byte each - char *user_name = A->user_name ; - size_t user_name_len = (user_name == NULL) ? 0 : strlen (user_name) ; - const char *eltype_string = GB_type_name_get (A->type) ; - size_t eltype_string_len = (eltype_string == NULL) ? 0 : - strlen (eltype_string) ; - s += (user_name_len + 1) + (eltype_string_len + 1) ; - //-------------------------------------------------------------------------- // return the upper bound estimate of the blob size, for dryrun //-------------------------------------------------------------------------- @@ -371,28 +362,6 @@ GrB_Info GB_serialize // serialize a matrix into a blob GB_serialize_to_blob (blob, &s, Ax_Blocks, Ax_Sblocks+1, Ax_nblocks, nthreads_max) ; - //-------------------------------------------------------------------------- - // append the GrB_NAME and GrB_ELTYPE_STRING to the blob - //-------------------------------------------------------------------------- - - if (user_name != NULL) - { - // write the GrB_NAME of the matrix (including the nul byte) -// printf ("serialize user_name %lu:[%s]\n", s, user_name) ; - strcpy ((char *) (blob + s), user_name) ; - s += user_name_len ; - } - blob [s++] = 0 ; // terminate the GrB_NAME with a nul byte - - if (eltype_string != NULL) - { - // write the ELTYPE_STRING of the matrix type (including the nul byte) -// printf ("serialize eltype_string %lu:[%s]\n", s, eltype_string) ; - strcpy ((char *) (blob + s), eltype_string) ; - s += eltype_string_len ; - } - blob [s++] = 0 ; // terminate the GrB_ELTYPE_STRING with a nul byte - ASSERT (s == blob_size_required) ; //-------------------------------------------------------------------------- diff --git a/Source/GB_serialize.h b/Source/GB_serialize.h index 95c57d88f3..7de0facf18 100644 --- a/Source/GB_serialize.h +++ b/Source/GB_serialize.h @@ -104,37 +104,35 @@ GrB_Info GB_deserialize_from_blob ) ; #define GB_BLOB_HEADER_SIZE \ - sizeof (uint64_t) /* blob_size */ \ - + 11 * sizeof (int64_t) /* vlen, vdim, nvec, nvec_nonempty, */ \ - /* nvals, typesize, A[phbix]_len */ \ - + 14 * sizeof (int32_t) /* version, typecode, sparsity_control, */ \ - /* A[phbix]_nblocks, A[phbix]_method, */ \ - /* sparsity_iso_csc */ \ + sizeof (uint64_t) /* blob_size */ \ + + 11 * sizeof (int64_t) /* vlen, vdim, nvec, nvec_nonempty, */ \ + /* nvals, typesize, A[phbix]_len */ \ + + 14 * sizeof (int32_t) /* version, typecode, sparsity_control, */ \ + /* A[phbix]_nblocks, A[phbix]_method, */ \ + /* sparsity_iso_csc */ \ + 2 * sizeof (float) /* hyper_switch, bitmap_switch */ // write a scalar to the blob -#define GB_BLOB_WRITE(x,type) \ - memcpy (blob + s, &(x), sizeof (type)) ; \ - s += sizeof (type) ; +#define GB_BLOB_WRITE(x,type) \ + memcpy (blob + s, &(x), sizeof (type)) ; s += sizeof (type) ; // write an int64_t array to the blob #define GB_BLOB_WRITES(S,n) \ - if (n > 0) \ - { \ - memcpy (((GB_void *) blob) + s, S + 1, n * sizeof (int64_t)) ; \ - s += n * sizeof (int64_t) ; \ + if (n > 0) \ + { \ + memcpy (((GB_void *) blob) + s, S + 1, n * sizeof (int64_t)) ; \ + s += n * sizeof (int64_t) ; \ } // read a scalar from the blob -#define GB_BLOB_READ(x,type) \ - type x ; \ - memcpy (&x, ((GB_void *) blob) + s, sizeof (type)) ; \ +#define GB_BLOB_READ(x,type) \ + type x ; \ + memcpy (&x, ((GB_void *) blob) + s, sizeof (type)) ; \ s += sizeof (type) ; // get an int64_t pointer to an array in the blob -#define GB_BLOB_READS(S,n) \ - int64_t *S = (int64_t *) (blob + s) ; \ - s += n * sizeof (int64_t) ; +#define GB_BLOB_READS(S,n) \ + int64_t *S = (int64_t *) (blob + s) ; s += n * sizeof (int64_t) ; #endif diff --git a/Source/GB_setElement.c b/Source/GB_setElement.c index f7700461cc..4d2d322dbb 100644 --- a/Source/GB_setElement.c +++ b/Source/GB_setElement.c @@ -223,7 +223,6 @@ GrB_Info GB_setElement // set a single entry, C(row,col) = scalar int64_t pC_start, pC_end ; const int64_t *restrict Ch = C->h ; - const int64_t *restrict Cp = C->p ; if (C->nvals == 0) { // C is empty @@ -232,21 +231,28 @@ GrB_Info GB_setElement // set a single entry, C(row,col) = scalar else if (Ch != NULL) { // C is hypersparse, with at least one entry - const int64_t *restrict C_Yp = (C->Y == NULL) ? NULL : C->Y->p ; - const int64_t *restrict C_Yi = (C->Y == NULL) ? NULL : C->Y->i ; - const int64_t *restrict C_Yx = (C->Y == NULL) ? NULL : C->Y->x ; - const int64_t C_hash_bits = (C->Y == NULL) ? 0 : (C->Y->vdim - 1) ; - const int64_t cnvec = C->nvec ; - int64_t k = GB_hyper_hash_lookup (Ch, cnvec, Cp, C_Yp, C_Yi, C_Yx, - C_hash_bits, j, &pC_start, &pC_end) ; - found = (k >= 0) ; + int64_t k ; + if (C->Y == NULL) + { + // C is hypersparse but does not yet have a hyper_hash + k = 0 ; + found = GB_lookup (true, Ch, C->p, C->vlen, &k, + C->nvec-1, j, &pC_start, &pC_end) ; + } + else + { + // C is hypersparse, with a hyper_hash that is already built + k = GB_hyper_hash_lookup (C->p, C->Y->p, C->Y->i, C->Y->x, + C->Y->vdim-1, j, &pC_start, &pC_end) ; + found = (k >= 0) ; + } ASSERT (GB_IMPLIES (found, j == Ch [k])) ; } else { // C is sparse - pC_start = Cp [j] ; - pC_end = Cp [j+1] ; + pC_start = C->p [j] ; + pC_end = C->p [j+1] ; found = true ; } diff --git a/Source/GB_status_code.c b/Source/GB_status_code.c index 46c24c9cae..180f5baa57 100644 --- a/Source/GB_status_code.c +++ b/Source/GB_status_code.c @@ -30,7 +30,6 @@ const char *GB_status_code (GrB_Info info) case GrB_INDEX_OUT_OF_BOUNDS : return ("GrB_INDEX_OUT_OF_BOUNDS") ; case GrB_PANIC : return ("GrB_PANIC") ; case GrB_NOT_IMPLEMENTED : return ("GrB_NOT_IMPLEMENTED") ; - case GrB_ALREADY_SET : return ("GrB_ALREADY_SET") ; case GrB_EMPTY_OBJECT : return ("GrB_EMPTY_OBJECT") ; default : return ("unknown GrB_Info value!") ; } diff --git a/Source/GB_subassign_06n.c b/Source/GB_subassign_06n.c index 5fc3619e19..f327a14454 100644 --- a/Source/GB_subassign_06n.c +++ b/Source/GB_subassign_06n.c @@ -89,10 +89,10 @@ GrB_Info GB_subassign_06n GrB_BinaryOp accum = NULL ; GB_OK (GB_hyper_hash_build (A, Werk)) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = (A_is_hyper) ? A->Y->p : NULL ; + const int64_t *restrict A_Yi = (A_is_hyper) ? A->Y->i : NULL ; + const int64_t *restrict A_Yx = (A_is_hyper) ? A->Y->x : NULL ; + const int64_t A_hash_bits = (A_is_hyper) ? (A->Y->vdim - 1) : 0 ; //-------------------------------------------------------------------------- // Method 06n: C(I,J) = A ; no S diff --git a/Source/GB_subref_phase0.c b/Source/GB_subref_phase0.c index b85999dc8c..ead990a359 100644 --- a/Source/GB_subref_phase0.c +++ b/Source/GB_subref_phase0.c @@ -327,10 +327,10 @@ GrB_Info GB_subref_phase0 GB_OK (GB_hyper_hash_build (A, Werk)) ; } - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = (use_hyper_hash) ? A->Y->p : NULL ; + const int64_t *restrict A_Yi = (use_hyper_hash) ? A->Y->i : NULL ; + const int64_t *restrict A_Yx = (use_hyper_hash) ? A->Y->x : NULL ; + const int64_t A_hash_bits = (use_hyper_hash) ? (A->Y->vdim - 1) : 0 ; //-------------------------------------------------------------------------- // determine # of threads to use @@ -486,7 +486,7 @@ GrB_Info GB_subref_phase0 { // find jA using the hyper_hash int64_t ignore1, ignore2 ; - kA = GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, + kA = GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, jA, &ignore1, &ignore2) ; found = (kA >= 0) ; } @@ -683,7 +683,7 @@ GrB_Info GB_subref_phase0 { // find jA using the hyper_hash int64_t ignore1, ignore2 ; - kA = GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, + kA = GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, jA, &ignore1, &ignore2) ; found = (kA >= 0) ; } diff --git a/Source/GB_transplant.c b/Source/GB_transplant.c index d5a8ab19a8..c492d99dc4 100644 --- a/Source/GB_transplant.c +++ b/Source/GB_transplant.c @@ -14,8 +14,8 @@ // shallow. This function is not user-callable. The new type of C (ctype) // must be compatible with A->type. -// C->hyper_switch, C->bitmap_switch, C->sparsity_control, C->static_header, -// C->user_name, and C->user_name_size are not modified by the transplant. +// C->hyper_switch, C->bitmap_switch, C->sparsity_control, and C->static_header +// are not modified by the transplant. #define GB_FREE_ALL \ { \ diff --git a/Source/GB_type_code_get.c b/Source/GB_type_code_get.c deleted file mode 100644 index b0c3609555..0000000000 --- a/Source/GB_type_code_get.c +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_type_code_get: convert a GB_Type_code to a GrB_Type_Code -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Type_Code GB_type_code_get // return the GrB_Type_Code for the code -( - const GB_Type_code code // type code to convert -) -{ - - ASSERT (code >= 0 && code <= GB_UDT_code) ; - switch (code) - { - case GB_BOOL_code : return (GrB_BOOL_CODE) ; - case GB_INT8_code : return (GrB_INT8_CODE) ; - case GB_INT16_code : return (GrB_INT16_CODE) ; - case GB_INT32_code : return (GrB_INT32_CODE) ; - case GB_INT64_code : return (GrB_INT64_CODE) ; - case GB_UINT8_code : return (GrB_UINT8_CODE) ; - case GB_UINT16_code : return (GrB_UINT16_CODE) ; - case GB_UINT32_code : return (GrB_UINT32_CODE) ; - case GB_UINT64_code : return (GrB_UINT64_CODE) ; - case GB_FP32_code : return (GrB_FP32_CODE) ; - case GB_FP64_code : return (GrB_FP64_CODE) ; - case GB_FC32_code : return (GxB_FC32_CODE) ; - case GB_FC64_code : return (GxB_FC64_CODE) ; - default: - case GB_UDT_code : return (GrB_UDT_CODE) ; - } -} - diff --git a/Source/GB_type_name_get.c b/Source/GB_type_name_get.c deleted file mode 100644 index 5ab8f2d278..0000000000 --- a/Source/GB_type_name_get.c +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_type_name_get: get the user_name of a type -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -const char *GB_type_name_get (GrB_Type type) -{ - - if (type == NULL) - { - return (NULL) ; - } - - return (GB_code_name_get (type->code, type->user_name)) ; -} - diff --git a/Source/GB_unop_new.c b/Source/GB_unop_new.c index d4486fc9c5..6b8bee30d4 100644 --- a/Source/GB_unop_new.c +++ b/Source/GB_unop_new.c @@ -42,8 +42,6 @@ GrB_Info GB_unop_new //-------------------------------------------------------------------------- op->magic = GB_MAGIC ; - op->user_name = NULL ; - op->user_name_size = 0 ; op->xtype = xtype ; op->ztype = ztype ; op->ytype = NULL ; @@ -67,6 +65,7 @@ GrB_Info GB_unop_new // output: op->name, &(op->name_len), &(op->hash), &(op->defn), &(op->defn_size), // input: - unop_name, unop_defn, opcode == GB_USER_unop_code, jitable)) ; + unop_name, unop_defn, "GxB_unary_function", 18, + opcode == GB_USER_unop_code, jitable)) ; } diff --git a/Source/GB_user_name_set.c b/Source/GB_user_name_set.c deleted file mode 100644 index 7b9bed82be..0000000000 --- a/Source/GB_user_name_set.c +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_user_name_set: set the user_name of an object -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -GrB_Info GB_user_name_set -( - // input/output - char **object_user_name, // user_name of the object - size_t *object_user_name_size, // user_name_size of the object - // input - const char *new_name, // new name for the object - const bool only_once // if true, the name of the object can - // only be set once -) -{ - - if (only_once && (*object_user_name) != NULL) - { - // types, operators, monoids, and semirings can have their GrB_NAME - // set at most once - return (GrB_ALREADY_SET) ; - } - - // free the object user_name, if it already exists - GB_FREE (object_user_name, (*object_user_name_size)) ; - (*object_user_name_size) = 0 ; - - // get the length of the new name - size_t len = strlen (new_name) ; - if (len == 0) - { - // no new name; leave the object unnamed - return (GrB_SUCCESS) ; - } - - // allocate the new name - size_t user_name_size ; - char *user_name = GB_MALLOC (len + 1, char, &user_name_size) ; - if (user_name == NULL) - { - // out of memory - return (GrB_OUT_OF_MEMORY) ; - } - - // set the new user_name - strcpy (user_name, new_name) ; - (*object_user_name) = user_name ; - (*object_user_name_size) = user_name_size ; - return (GrB_SUCCESS) ; -} - diff --git a/Source/GrB_BinaryOp_get.c b/Source/GrB_BinaryOp_get.c deleted file mode 100644 index 39e0ba7ed0..0000000000 --- a/Source/GrB_BinaryOp_get.c +++ /dev/null @@ -1,149 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_*: get a field in a binary op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_get_Scalar -( - GrB_BinaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_BinaryOp_get_Scalar (op, value, field)") ; - if (op != GxB_IGNORE_DUP) - { - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - ASSERT_BINARYOP_OK (op, "binaryop for get", GB0) ; - } - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_scalar_get ((GB_Operator) op, value, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_get_String -( - GrB_BinaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_BinaryOp_get_String (op, value, field)") ; - if (op != GxB_IGNORE_DUP) - { - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - ASSERT_BINARYOP_OK (op, "binaryop for get", GB0) ; - } - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_string_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_get_INT32 -( - GrB_BinaryOp op, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_BinaryOp_get_INT32 (op, value, field)") ; - if (op != GxB_IGNORE_DUP) - { - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - ASSERT_BINARYOP_OK (op, "binaryop for get", GB0) ; - } - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_enum_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_get_SIZE -( - GrB_BinaryOp op, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_BinaryOp_get_SIZE (op, value, field)") ; - if (op != GxB_IGNORE_DUP) - { - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - ASSERT_BINARYOP_OK (op, "binaryop for get", GB0) ; - } - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_size_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_get_VOID -( - GrB_BinaryOp op, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_BinaryOp_new.c b/Source/GrB_BinaryOp_new.c index ca659a44ad..ee36f2900f 100644 --- a/Source/GrB_BinaryOp_new.c +++ b/Source/GrB_BinaryOp_new.c @@ -7,9 +7,17 @@ //------------------------------------------------------------------------------ +// GrB_BinaryOp_new is implemented both as a macro and a function. Both are +// user-callable. The macro is used by default since it can capture the name +// of the binary function. + #include "GB.h" -GrB_Info GrB_BinaryOp_new +// the macro version of this function must first be #undefined +#undef GrB_BinaryOp_new +#undef GrM_BinaryOp_new + +GrB_Info GRB (BinaryOp_new) ( GrB_BinaryOp *binaryop, // handle for the new binary operator GxB_binary_function function, // pointer to the binary function diff --git a/Source/GrB_BinaryOp_set.c b/Source/GrB_BinaryOp_set.c deleted file mode 100644 index 9a72236c4d..0000000000 --- a/Source/GrB_BinaryOp_set.c +++ /dev/null @@ -1,85 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_BinaryOp_set_*: set a field in a binary op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_set_Scalar -( - GrB_BinaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_set_String -( - GrB_BinaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_BinaryOp_set_String (op, value, field)") ; - if (op != GxB_IGNORE_DUP) - { - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - ASSERT_BINARYOP_OK (op, "binaryop for set", GB0) ; - } - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_op_string_set ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_set_INT32 -( - GrB_BinaryOp op, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_BinaryOp_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_BinaryOp_set_VOID -( - GrB_BinaryOp op, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Descriptor_free.c b/Source/GrB_Descriptor_free.c index acff7daefd..d39db520d0 100644 --- a/Source/GrB_Descriptor_free.c +++ b/Source/GrB_Descriptor_free.c @@ -25,8 +25,6 @@ GrB_Info GrB_Descriptor_free // free a descriptor if (desc != NULL) { size_t header_size = desc->header_size ; - // free the Descriptor user_name - GB_FREE (&(desc->user_name), desc->user_name_size) ; if (header_size > 0) { GB_FREE (&(desc->logger), desc->logger_size) ; diff --git a/Source/GrB_Descriptor_get2.c b/Source/GrB_Descriptor_get2.c deleted file mode 100644 index 8f9340af52..0000000000 --- a/Source/GrB_Descriptor_get2.c +++ /dev/null @@ -1,283 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_*: get a field in a descriptor -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ - -static GrB_Info GB_desc_get -( - GrB_Descriptor desc, // descriptor to query; NULL is ok - int32_t *value, // return value of the descriptor - int field // parameter to query -) -{ - - //-------------------------------------------------------------------------- - // get the parameter - //-------------------------------------------------------------------------- - - switch (field) - { - case GrB_OUTP : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->out) ; - break ; - - case GrB_MASK : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->mask) ; - break ; - - case GrB_INP0 : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->in0) ; - break ; - - case GrB_INP1 : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->in1) ; - break ; - - case GxB_AxB_METHOD : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->axb) ; - break ; - - case GxB_SORT : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->do_sort); - break ; - - case GxB_COMPRESSION : - - (*value) = (int32_t) ((desc == NULL) ? - GrB_DEFAULT : desc->compression) ; - break ; - - case GxB_IMPORT : - - (*value) = (int32_t) ((desc == NULL) ? GrB_DEFAULT : desc->import) ; - if ((*value) != GrB_DEFAULT) (*value) = GxB_SECURE_IMPORT ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_get_Scalar -( - GrB_Descriptor desc, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Descriptor_get_Scalar (desc, value, field)") ; - GB_RETURN_IF_FAULTY (desc) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_DESCRIPTOR_OK_OR_NULL (desc, "desc for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GB_desc_get (desc, &i, field) ; - if (info == GrB_SUCCESS) - { - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - return (info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_String -//------------------------------------------------------------------------------ - -#define DNAME(d) \ -{ \ - if (desc == d) \ - { \ - strcpy (value, #d) ; \ - return (GrB_SUCCESS) ; \ - } \ -} - -GrB_Info GrB_Descriptor_get_String -( - GrB_Descriptor desc, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Descriptor_get_String (desc, value, field)") ; - GB_RETURN_IF_FAULTY (desc) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_DESCRIPTOR_OK_OR_NULL (desc, "desc for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the name - //-------------------------------------------------------------------------- - - DNAME (GrB_NULL ) ; - DNAME (GrB_DESC_T1 ) ; - DNAME (GrB_DESC_T0 ) ; - DNAME (GrB_DESC_T0T1 ) ; - - DNAME (GrB_DESC_C ) ; - DNAME (GrB_DESC_CT1 ) ; - DNAME (GrB_DESC_CT0 ) ; - DNAME (GrB_DESC_CT0T1 ) ; - - DNAME (GrB_DESC_S ) ; - DNAME (GrB_DESC_ST1 ) ; - DNAME (GrB_DESC_ST0 ) ; - DNAME (GrB_DESC_ST0T1 ) ; - - DNAME (GrB_DESC_SC ) ; - DNAME (GrB_DESC_SCT1 ) ; - DNAME (GrB_DESC_SCT0 ) ; - DNAME (GrB_DESC_SCT0T1 ) ; - - DNAME (GrB_DESC_R ) ; - DNAME (GrB_DESC_RT1 ) ; - DNAME (GrB_DESC_RT0 ) ; - DNAME (GrB_DESC_RT0T1 ) ; - - DNAME (GrB_DESC_RC ) ; - DNAME (GrB_DESC_RCT1 ) ; - DNAME (GrB_DESC_RCT0 ) ; - DNAME (GrB_DESC_RCT0T1 ) ; - - DNAME (GrB_DESC_RS ) ; - DNAME (GrB_DESC_RST1 ) ; - DNAME (GrB_DESC_RST0 ) ; - DNAME (GrB_DESC_RST0T1 ) ; - - DNAME (GrB_DESC_RSC ) ; - DNAME (GrB_DESC_RSCT1 ) ; - DNAME (GrB_DESC_RSCT0 ) ; - DNAME (GrB_DESC_RSCT0T1) ; - - // user-defined descriptor - (*value) = '\0' ; - - if (desc->user_name_size > 0) - { - // user-defined descriptor, with name defined by GrB_set - strcpy (value, desc->user_name) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_get_INT32 -( - GrB_Descriptor desc, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Descriptor_get_INT32 (desc, value, field)") ; - GB_RETURN_IF_FAULTY (desc) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_DESCRIPTOR_OK_OR_NULL (desc, "desc for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_desc_get (desc, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_get_SIZE -( - GrB_Descriptor desc, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Descriptor_get_SIZE (desc, value, field)") ; - GB_RETURN_IF_FAULTY (desc) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_DESCRIPTOR_OK_OR_NULL (desc, "desc for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - if (field != GrB_NAME) - { - return (GrB_INVALID_VALUE) ; - } - - if (desc != NULL && desc->user_name != NULL) - { - (*value) = desc->user_name_size ; - } - else - { - (*value) = GxB_MAX_NAME_LEN ; - } - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_get_VOID -( - GrB_Descriptor desc, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Descriptor_new.c b/Source/GrB_Descriptor_new.c index 7c220179f7..f607a35057 100644 --- a/Source/GrB_Descriptor_new.c +++ b/Source/GrB_Descriptor_new.c @@ -42,8 +42,6 @@ GrB_Info GrB_Descriptor_new // create a new descriptor GrB_Descriptor desc = *descriptor ; desc->magic = GB_MAGIC ; desc->header_size = header_size ; - desc->user_name = NULL ; // user_name for GrB_get/GrB_set - desc->user_name_size = 0 ; desc->logger = NULL ; // error string desc->logger_size = 0 ; desc->out = GxB_DEFAULT ; // descriptor for output diff --git a/Source/GrB_Descriptor_set2.c b/Source/GrB_Descriptor_set2.c deleted file mode 100644 index 0fa1a4b5f3..0000000000 --- a/Source/GrB_Descriptor_set2.c +++ /dev/null @@ -1,260 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Descriptor_set_*: set a field in a descriptor -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GB_desc_set -//------------------------------------------------------------------------------ - -static GrB_Info GB_desc_set -( - GrB_Descriptor desc, // descriptor to modify - int32_t value, // value to change it to - int field, // parameter to change - GB_Werk Werk -) -{ - - //-------------------------------------------------------------------------- - // set the parameter - //-------------------------------------------------------------------------- - - int mask = (int) desc->mask ; - - switch (field) - { - - case GrB_OUTP : // same as GrB_OUTP_FIELD - - if (! (value == GrB_DEFAULT || value == GrB_REPLACE)) - { - GB_ERROR (GrB_INVALID_VALUE, - "invalid descriptor value [%d] for GrB_OUTP field;\n" - "must be GrB_DEFAULT [%d] or GrB_REPLACE [%d]", - value, (int) GrB_DEFAULT, (int) GrB_REPLACE) ; - } - desc->out = (GrB_Desc_Value) value ; - break ; - - case GrB_MASK : // same as GrB_MASK_FIELD - - if (! (value == GrB_DEFAULT || - value == GrB_COMP || - value == GrB_STRUCTURE || - value == (GrB_COMP + GrB_STRUCTURE))) - { - GB_ERROR (GrB_INVALID_VALUE, - "invalid descriptor value [%d] for GrB_MASK field;\n" - "must be GrB_DEFAULT [%d], GrB_COMP [%d],\n" - "GrB_STRUCTURE [%d], or GrB_COMP+GrB_STRUCTURE [%d]", - value, (int) GrB_DEFAULT, (int) GrB_COMP, - (int) GrB_STRUCTURE, - (int) (GrB_COMP + GrB_STRUCTURE)) ; - } - switch (value) - { - case GrB_COMP : mask |= GrB_COMP ; break ; - case GrB_STRUCTURE : mask |= GrB_STRUCTURE ; break ; - default : mask = value ; break ; - } - desc->mask = (GrB_Desc_Value) mask ; - break ; - - case GrB_INP0 : // same as GrB_INP0_FIELD - - if (! (value == GrB_DEFAULT || value == GrB_TRAN)) - { - GB_ERROR (GrB_INVALID_VALUE, - "invalid descriptor value [%d] for GrB_INP0 field;\n" - "must be GrB_DEFAULT [%d] or GrB_TRAN [%d]", - value, (int) GrB_DEFAULT, (int) GrB_TRAN) ; - } - desc->in0 = (GrB_Desc_Value) value ; - break ; - - case GrB_INP1 : // same as GrB_INP1_FIELD - - if (! (value == GrB_DEFAULT || value == GrB_TRAN)) - { - GB_ERROR (GrB_INVALID_VALUE, - "invalid descriptor value [%d] for GrB_INP1 field;\n" - "must be GrB_DEFAULT [%d] or GrB_TRAN [%d]", - value, (int) GrB_DEFAULT, (int) GrB_TRAN) ; - } - desc->in1 = (GrB_Desc_Value) value ; - break ; - - case GxB_AxB_METHOD : - - if (! (value == GrB_DEFAULT || value == GxB_AxB_GUSTAVSON - || value == GxB_AxB_DOT - || value == GxB_AxB_HASH || value == GxB_AxB_SAXPY)) - { - GB_ERROR (GrB_INVALID_VALUE, - "invalid descriptor value [%d] for GrB_AxB_METHOD" - " field;\nmust be GrB_DEFAULT [%d], GxB_AxB_GUSTAVSON" - " [%d]\nGxB_AxB_DOT [%d]" - " GxB_AxB_HASH [%d] or GxB_AxB_SAXPY [%d]", - value, (int) GrB_DEFAULT, (int) GxB_AxB_GUSTAVSON, - (int) GxB_AxB_DOT, - (int) GxB_AxB_HASH, (int) GxB_AxB_SAXPY) ; - } - desc->axb = (GrB_Desc_Value) value ; - break ; - - case GxB_SORT : - - desc->do_sort = value ; - break ; - - case GxB_COMPRESSION : - - desc->compression = value ; - break ; - - case GxB_IMPORT : - - // In case the user application does not check the return value - // of this method, an error condition is never returned. - desc->import = - (value == GrB_DEFAULT) ? GxB_FAST_IMPORT : GxB_SECURE_IMPORT ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_set_Scalar -( - GrB_Descriptor desc, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - if (desc == NULL || desc->header_size == 0) - { - // built-in descriptors may not be modified - return (GrB_INVALID_VALUE) ; - } - - GB_WHERE (desc, "GrB_Descriptor_set_Scalar (desc, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (desc) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_DESCRIPTOR_OK (desc, "desc to set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GrB_Scalar_extractElement_INT32 (&i, value) ; - if (info != GrB_SUCCESS) - { - return ((info == GrB_NO_VALUE) ? GrB_EMPTY_OBJECT : info) ; - } - return (GB_desc_set (desc, i, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_set_String -( - GrB_Descriptor desc, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - if (desc == NULL || desc->header_size == 0 || field != GrB_NAME) - { - // built-in descriptors may not be modified - return (GrB_INVALID_VALUE) ; - } - - GB_WHERE (desc, "GrB_Descriptor_set_String (desc, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (desc) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_DESCRIPTOR_OK (desc, "desc to set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_user_name_set (&(desc->user_name), &(desc->user_name_size), - value, false)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_set_INT32 -( - GrB_Descriptor desc, - int32_t value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - if (desc == NULL || desc->header_size == 0) - { - // built-in descriptors may not be modified - return (GrB_INVALID_VALUE) ; - } - - GB_WHERE (desc, "GrB_Descriptor_set_INT32 (desc, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (desc) ; - ASSERT_DESCRIPTOR_OK (desc, "desc to set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_desc_set (desc, value, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Descriptor_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Descriptor_set_VOID -( - GrB_Descriptor desc, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Global_get.c b/Source/GrB_Global_get.c deleted file mode 100644 index 31850b9e39..0000000000 --- a/Source/GrB_Global_get.c +++ /dev/null @@ -1,537 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Global_get_*: get a global option -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" -#include "GB_jitifyer.h" - -//------------------------------------------------------------------------------ -// GrB_Global: an object defining the global state -//------------------------------------------------------------------------------ - -struct GB_Global_opaque GB_OPAQUE (WORLD_OBJECT) = -{ - GB_MAGIC, // magic: initialized - 0, // header_size: statically allocated -} ; - -const GrB_Global GrB_GLOBAL = & GB_OPAQUE (WORLD_OBJECT) ; - -//------------------------------------------------------------------------------ -// GB_global_enum_get: get an enum value from the global state -//------------------------------------------------------------------------------ - -static GrB_Info GB_global_enum_get (int32_t *value, int field) -{ - - switch (field) - { - - case GrB_LIBRARY_VER_MAJOR : - - (*value) = GxB_IMPLEMENTATION_MAJOR ; - break ; - - case GrB_LIBRARY_VER_MINOR : - - (*value) = GxB_IMPLEMENTATION_MINOR ; - break ; - - case GrB_LIBRARY_VER_PATCH : - - (*value) = GxB_IMPLEMENTATION_SUB ; - break ; - - case GrB_API_VER_MAJOR : - - (*value) = GxB_SPEC_MAJOR ; - break ; - - case GrB_API_VER_MINOR : - - (*value) = GxB_SPEC_MINOR ; - break ; - - case GrB_API_VER_PATCH : - - (*value) = GxB_SPEC_SUB ; - break ; - - case GrB_BLOCKING_MODE : - - // return just the GrB modes - (*value) = (int) GB_Global_mode_get ( ) ; - if ((*value) == GxB_NONBLOCKING_GPU) (*value) = GrB_NONBLOCKING ; - if ((*value) == GxB_BLOCKING_GPU) (*value) = GrB_BLOCKING ; - break ; - - case GxB_MODE : - - // return all 4 possible modes (GrB and GxB) - (*value) = (int) GB_Global_mode_get ( ) ; - break ; - - case GrB_STORAGE_ORIENTATION_HINT : - - (*value) = (int) (GB_Global_is_csc_get ( )) ? - GrB_COLMAJOR : GrB_ROWMAJOR ; - break ; - - case GxB_FORMAT : - - (*value) = (int) (GB_Global_is_csc_get ( )) ? - GxB_BY_COL : GxB_BY_ROW ; - break ; - - case GxB_GLOBAL_NTHREADS : // same as GxB_NTHREADS - - (*value) = (int) GB_Context_nthreads_max_get (NULL) ; - break ; - - case GxB_GLOBAL_GPU_ID : // same as GxB_GPU_ID - - (*value) = (int) GB_Context_gpu_id_get (NULL) ; - break ; - - case GxB_BURBLE : - - (*value) = (int) GB_Global_burble_get ( ) ; - break ; - - case GxB_LIBRARY_OPENMP : - - #ifdef _OPENMP - (*value) = (int) true ; - #else - (*value) = (int) false ; - #endif - break ; - - case GxB_PRINT_1BASED : - - (*value) = (int) GB_Global_print_one_based_get ( ) ; - break ; - - case GxB_JIT_C_CONTROL : - - (*value) = (int) GB_jitifyer_get_control ( ) ; - break ; - - case GxB_JIT_USE_CMAKE : - - (*value) = (int) GB_jitifyer_get_use_cmake ( ) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_get_Scalar -( - GrB_Global g, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_get_Scalar (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GB_global_enum_get (&i, field) ; - if (info == GrB_SUCCESS) - { - // field specifies an int: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - else - { - double x ; - int64_t i64 ; - switch ((int) field) - { - - case GxB_HYPER_SWITCH : - - x = (double) GB_Global_hyper_switch_get ( ) ; - info = GB_setElement ((GrB_Matrix) value, NULL, &x, 0, 0, - GB_FP64_code, Werk) ; - - break ; - - case GxB_GLOBAL_CHUNK : // same as GxB_CHUNK - - x = GB_Context_chunk_get (NULL) ; - info = GB_setElement ((GrB_Matrix) value, NULL, &x, 0, 0, - GB_FP64_code, Werk) ; - break ; - - case GxB_HYPER_HASH : - - i64 = GB_Global_hyper_hash_get ( ) ; - info = GB_setElement ((GrB_Matrix) value, NULL, &i64, 0, 0, - GB_INT64_code, Werk) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - } - - return (info) ; -} - -//------------------------------------------------------------------------------ -// GB_global_string_get: get a string from the global state -//------------------------------------------------------------------------------ - -static GrB_Info GB_global_string_get (const char **value, int field) -{ - - switch ((int) field) - { - - case GrB_NAME : - case GxB_LIBRARY_NAME : - - (*value) = GxB_IMPLEMENTATION_NAME ; - break ; - - case GxB_LIBRARY_DATE : - - (*value) = GxB_IMPLEMENTATION_DATE ; - break ; - - case GxB_LIBRARY_ABOUT : - - (*value) = GxB_IMPLEMENTATION_ABOUT ; - break ; - - case GxB_LIBRARY_LICENSE : - - (*value) = GxB_IMPLEMENTATION_LICENSE ; - break ; - - case GxB_LIBRARY_COMPILE_DATE : - - (*value) = __DATE__ ; - break ; - - case GxB_LIBRARY_COMPILE_TIME : - - (*value) = __TIME__ ; - break ; - - case GxB_LIBRARY_URL : - - (*value) = "http://faculty.cse.tamu.edu/davis/GraphBLAS" ; - break ; - - case GxB_API_DATE : - - (*value) = GxB_SPEC_DATE ; - break ; - - case GxB_API_ABOUT : - - (*value) = GxB_SPEC_ABOUT ; - break ; - - case GxB_API_URL : - - (*value) = "http://graphblas.org" ; - break ; - - case GxB_COMPILER_NAME : - - (*value) = GB_COMPILER_NAME ; - break ; - - //---------------------------------------------------------------------- - // JIT configuration: - //---------------------------------------------------------------------- - - case GxB_JIT_C_COMPILER_NAME : - - (*value) = GB_jitifyer_get_C_compiler ( ) ; - break ; - - case GxB_JIT_C_COMPILER_FLAGS : - - (*value) = GB_jitifyer_get_C_flags ( ) ; - break ; - - case GxB_JIT_C_LINKER_FLAGS : - - (*value) = GB_jitifyer_get_C_link_flags ( ) ; - break ; - - case GxB_JIT_C_LIBRARIES : - - (*value) = GB_jitifyer_get_C_libraries ( ) ; - break ; - - case GxB_JIT_C_CMAKE_LIBS : - - (*value) = GB_jitifyer_get_C_cmake_libs ( ) ; - break ; - - case GxB_JIT_C_PREFACE : - - (*value) = GB_jitifyer_get_C_preface ( ) ; - break ; - - case GxB_JIT_ERROR_LOG : - - (*value) = GB_jitifyer_get_error_log ( ) ; - break ; - - case GxB_JIT_CACHE_PATH : - - (*value) = GB_jitifyer_get_cache_path ( ) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_get_String -( - GrB_Global g, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_get_String (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL (value) ; - (*value) = '\0' ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *s ; - GrB_Info info = GB_global_string_get (&s, field) ; - if (info == GrB_SUCCESS) - { - strcpy (value, s) ; - } - #pragma omp flush - return (info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_get_INT32 -( - GrB_Global g, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_get_INT32 (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_global_enum_get (value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_get_SIZE -( - GrB_Global g, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_get_SIZE (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL (value) ; - (*value) = 0 ; - - //-------------------------------------------------------------------------- - // get the size of the field - //-------------------------------------------------------------------------- - - const char *s ; - GrB_Info info = GB_global_string_get (&s, field) ; - if (info == GrB_SUCCESS) - { - (*value) = strlen (s) + 1 ; - } - else - { - switch ((int) field) - { - - case GxB_BITMAP_SWITCH : - - (*value) = sizeof (double) * GxB_NBITMAP_SWITCH ; - break ; - - case GxB_COMPILER_VERSION : - - (*value) = sizeof (int32_t) * 3 ; - break ; - - case GxB_MALLOC_FUNCTION : - case GxB_CALLOC_FUNCTION : - case GxB_REALLOC_FUNCTION : - case GxB_FREE_FUNCTION : - - (*value) = sizeof (void *) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_get_VOID -( - GrB_Global g, - void * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_get_VOID (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GxB_BITMAP_SWITCH : - - { - double *dvalue = (double *) value ; - for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) - { - dvalue [k] = (double) GB_Global_bitmap_switch_get (k) ; - } - } - break ; - - case GxB_COMPILER_VERSION : - - { - int32_t *ivalue = (int32_t *) value ; - ivalue [0] = GB_COMPILER_MAJOR ; - ivalue [1] = GB_COMPILER_MINOR ; - ivalue [2] = GB_COMPILER_SUB ; - } - break ; - - case GxB_MALLOC_FUNCTION : - { - void **func = (void **) value ; - (*func) = GB_Global_malloc_function_get ( ) ; - } - break ; - - case GxB_CALLOC_FUNCTION : - { - void **func = (void **) value ; - (*func) = GB_Global_calloc_function_get ( ) ; - } - break ; - - case GxB_REALLOC_FUNCTION : - { - void **func = (void **) value ; - (*func) = GB_Global_realloc_function_get ( ) ; - } - break ; - - case GxB_FREE_FUNCTION : - { - void **func = (void **) value ; - (*func) = GB_Global_free_function_get ( ) ; - } - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GrB_Global_set.c b/Source/GrB_Global_set.c deleted file mode 100644 index d8897cf680..0000000000 --- a/Source/GrB_Global_set.c +++ /dev/null @@ -1,320 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Global_set_*: set a global option -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" -#include "GB_jitifyer.h" - -//------------------------------------------------------------------------------ -// GB_global_enum_set: get an enum value from the global state -//------------------------------------------------------------------------------ - -static GrB_Info GB_global_enum_set (int32_t value, int field) -{ - - switch (field) - { - - case GrB_STORAGE_ORIENTATION_HINT : - - switch (value) - { - case GrB_ROWMAJOR : value = GxB_BY_ROW ; break ; - case GrB_COLMAJOR : value = GxB_BY_COL ; break ; - case GrB_BOTH : value = GxB_BY_ROW ; break ; - case GrB_UNKNOWN : value = GxB_BY_ROW ; break ; - default : return (GrB_INVALID_VALUE) ; - } - // fall through to the GxB_FORMAT case - - case GxB_FORMAT : - - if (! (value == GxB_BY_ROW || value == GxB_BY_COL)) - { - return (GrB_INVALID_VALUE) ; - } - GB_Global_is_csc_set (value != (int) GxB_BY_ROW) ; - break ; - - case GxB_GLOBAL_NTHREADS : // same as GxB_NTHREADS - - GB_Context_nthreads_max_set (NULL, value) ; - break ; - - case GxB_GLOBAL_GPU_ID : // same as GxB_GPU_ID - - GB_Context_gpu_id_set (NULL, value) ; - break ; - - case GxB_BURBLE : - - GB_Global_burble_set ((bool) value) ; - break ; - - case GxB_PRINT_1BASED : - - GB_Global_print_one_based_set ((bool) value) ; - break ; - - case GxB_JIT_USE_CMAKE : - - GB_jitifyer_set_use_cmake ((bool) value) ; - break ; - - case GxB_JIT_C_CONTROL : - - GB_jitifyer_set_control (value) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_set_Scalar -( - GrB_Global g, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_set_Scalar (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - double dvalue = 0 ; - int32_t ivalue = 0 ; - int64_t i64value = 0 ; - GrB_Info info ; - - switch ((int) field) - { - - case GxB_HYPER_SWITCH : - - info = GrB_Scalar_extractElement_FP64 (&dvalue, value) ; - if (info == GrB_SUCCESS) - { - GB_Global_hyper_switch_set ((float) dvalue) ; - } - break ; - - case GxB_GLOBAL_CHUNK : // same as GxB_CHUNK - - info = GrB_Scalar_extractElement_FP64 (&dvalue, value) ; - if (info == GrB_SUCCESS) - { - GB_Context_chunk_set (NULL, dvalue) ; - } - break ; - - case GxB_HYPER_HASH : - - info = GrB_Scalar_extractElement_INT64 (&i64value, value) ; - if (info == GrB_SUCCESS) - { - GB_Global_hyper_hash_set (i64value) ; - } - break ; - - default : - - info = GrB_Scalar_extractElement_INT32 (&ivalue, value) ; - if (info == GrB_SUCCESS) - { - info = GB_global_enum_set (ivalue, field) ; - } - break ; - } - - return ((info == GrB_NO_VALUE) ? GrB_EMPTY_OBJECT : info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_set_String -( - GrB_Global g, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_set_String (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GxB_JIT_C_COMPILER_NAME : - - return (GB_jitifyer_set_C_compiler (value)) ; - - case GxB_JIT_C_COMPILER_FLAGS : - - return (GB_jitifyer_set_C_flags (value)) ; - - case GxB_JIT_C_LINKER_FLAGS : - - return (GB_jitifyer_set_C_link_flags (value)) ; - - case GxB_JIT_C_LIBRARIES : - - return (GB_jitifyer_set_C_libraries (value)) ; - - case GxB_JIT_C_CMAKE_LIBS : - - return (GB_jitifyer_set_C_cmake_libs (value)) ; - - case GxB_JIT_C_PREFACE : - - return (GB_jitifyer_set_C_preface (value)) ; - - case GxB_JIT_ERROR_LOG : - - return (GB_jitifyer_set_error_log (value)) ; - - case GxB_JIT_CACHE_PATH : - - return (GB_jitifyer_set_cache_path (value)) ; - - default : - - return (GrB_INVALID_VALUE) ; - } -} - -//------------------------------------------------------------------------------ -// GrB_Global_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_set_INT32 -( - GrB_Global g, - int32_t value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_set_INT32 (g, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_global_enum_set (value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Global_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Global_set_VOID -( - GrB_Global g, - void * value, - GrB_Field field, - size_t size -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Global_set_VOID (g, value, field, size)") ; - GB_RETURN_IF_NULL_OR_FAULTY (g) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GxB_BITMAP_SWITCH : - - if (value == NULL) - { - // set all switches to their default - GB_Global_bitmap_switch_default ( ) ; - } - else - { - if (size < sizeof (double) * GxB_NBITMAP_SWITCH) - { - return (GrB_INVALID_VALUE) ; - } - double *dvalue = (double *) value ; - for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) - { - float b = (float) dvalue [k] ; - GB_Global_bitmap_switch_set (k, b) ; - } - } - break ; - - case GxB_PRINTF : - - if (size != sizeof (GB_printf_function_t)) - { - return (GrB_INVALID_VALUE) ; - } - GB_Global_printf_set ((GB_printf_function_t) value) ; - break ; - - case GxB_FLUSH : - - if (size != sizeof (GB_flush_function_t)) - { - return (GrB_INVALID_VALUE) ; - } - GB_Global_flush_set ((GB_flush_function_t) value) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GrB_IndexUnaryOp_get.c b/Source/GrB_IndexUnaryOp_get.c deleted file mode 100644 index d1708eaccc..0000000000 --- a/Source/GrB_IndexUnaryOp_get.c +++ /dev/null @@ -1,137 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_*: get a field in a idxunop -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_get_Scalar -( - GrB_IndexUnaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_IndexUnaryOp_get_Scalar (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_INDEXUNARYOP_OK (op, "idxunop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_scalar_get ((GB_Operator) op, value, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_get_String -( - GrB_IndexUnaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_IndexUnaryOp_get_String (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_INDEXUNARYOP_OK (op, "idxunop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_string_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_get_INT32 -( - GrB_IndexUnaryOp op, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_IndexUnaryOp_get_INT32 (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_INDEXUNARYOP_OK (op, "idxunop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_enum_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_get_SIZE -( - GrB_IndexUnaryOp op, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_IndexUnaryOp_get_SIZE (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_INDEXUNARYOP_OK (op, "idxunop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_size_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_get_VOID -( - GrB_IndexUnaryOp op, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_IndexUnaryOp_new.c b/Source/GrB_IndexUnaryOp_new.c index 04409be64c..5f35cddac0 100644 --- a/Source/GrB_IndexUnaryOp_new.c +++ b/Source/GrB_IndexUnaryOp_new.c @@ -7,9 +7,17 @@ //------------------------------------------------------------------------------ +// GrB_IndexUnaryOp_new is implemented both as a macro and a function. Both are +// user-callable. The macro is used by default since it can capture the name +// of the index_unary function. + #include "GB.h" -GrB_Info GrB_IndexUnaryOp_new // create a new user-defined IndexUnary op +// the macro version of this function must first be #undefined +#undef GrB_IndexUnaryOp_new +#undef GrM_IndexUnaryOp_new + +GrB_Info GRB (IndexUnaryOp_new) // create a new user-defined IndexUnary op ( GrB_IndexUnaryOp *op, // handle for the new IndexUnary operator GxB_index_unary_function function, // pointer to IndexUnary function diff --git a/Source/GrB_IndexUnaryOp_set.c b/Source/GrB_IndexUnaryOp_set.c deleted file mode 100644 index 7a4ed5824a..0000000000 --- a/Source/GrB_IndexUnaryOp_set.c +++ /dev/null @@ -1,82 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_set_*: set a field in a unary op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_set_Scalar -( - GrB_IndexUnaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_set_String -( - GrB_IndexUnaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_IndexUnaryOp_set_String (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_INDEXUNARYOP_OK (op, "idxunop for set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_op_string_set ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_set_INT32 -( - GrB_IndexUnaryOp op, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_IndexUnaryOp_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_IndexUnaryOp_set_VOID -( - GrB_IndexUnaryOp op, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Matrix_get.c b/Source/GrB_Matrix_get.c deleted file mode 100644 index d2b12ed58b..0000000000 --- a/Source/GrB_Matrix_get.c +++ /dev/null @@ -1,166 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Matrix_get_*: get a field in a matrix -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Matrix_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_get_Scalar -( - GrB_Matrix A, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_get_Scalar (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_MATRIX_OK (A, "A to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GB_matvec_enum_get (A, &i, field) ; - if (info == GrB_SUCCESS) - { - // field specifies an int: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - else - { - double x ; - switch ((int) field) - { - case GxB_HYPER_SWITCH : - x = (double) (A->hyper_switch) ; - break ; - - case GxB_BITMAP_SWITCH : - x = (double) (A->bitmap_switch) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - // field specifies a double: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &x, 0, 0, - GB_FP64_code, Werk) ; - } - - return (info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_get_String -( - GrB_Matrix A, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_get_String (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MATRIX_OK (A, "A to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_get (A, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_get_INT32 -( - GrB_Matrix A, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_get_INT32 (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MATRIX_OK (A, "A to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_enum_get (A, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_get_SIZE -( - GrB_Matrix A, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_get_SIZE (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MATRIX_OK (A, "A to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_size_get (A, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_get_VOID -( - GrB_Matrix A, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Matrix_reduce.c b/Source/GrB_Matrix_reduce.c index e849171cf9..393c0b747b 100644 --- a/Source/GrB_Matrix_reduce.c +++ b/Source/GrB_Matrix_reduce.c @@ -37,7 +37,7 @@ GrB_Info GB_EVAL3 (prefix, _Matrix_reduce_, T) /* c = accum (c, reduce (A)) */ \ GB_BURBLE_START ("GrB_reduce") ; \ GB_RETURN_IF_NULL_OR_FAULTY (A) ; \ GrB_Info info = GB_reduce_to_scalar (c, GB_EVAL3 (prefix, _, T), accum, \ - monoid, A, Werk) ; \ + monoid, A, Werk) ; \ GB_BURBLE_END ; \ return (info) ; \ } @@ -148,7 +148,7 @@ GrB_Info GrB_Matrix_reduce_Monoid_Scalar const GrB_Descriptor desc ) { - GB_WHERE (S, "GrB_Matrix_reduce_Monoid_Scalar (s, accum, monoid, A, desc)"); + GB_WHERE (S, "GrB_Matrix_reduce_Monoid_Scalar (s, accum, monoid, A, desc)") ; GB_BURBLE_START ("GrB_reduce") ; GrB_Info info = GB_Scalar_reduce (S, accum, monoid, A, Werk) ; GB_BURBLE_END ; diff --git a/Source/GrB_Matrix_removeElement.c b/Source/GrB_Matrix_removeElement.c index 722f6bd790..69b6a3cabb 100644 --- a/Source/GrB_Matrix_removeElement.c +++ b/Source/GrB_Matrix_removeElement.c @@ -76,14 +76,21 @@ static inline bool GB_removeElement // return true if found // C is hypersparse: look for j in hyperlist C->h [0 ... C->nvec-1] //------------------------------------------------------------------ - const int64_t *restrict C_Yp = (C->Y == NULL) ? NULL : C->Y->p ; - const int64_t *restrict C_Yi = (C->Y == NULL) ? NULL : C->Y->i ; - const int64_t *restrict C_Yx = (C->Y == NULL) ? NULL : C->Y->x ; - const int64_t C_hash_bits = (C->Y == NULL) ? 0 : (C->Y->vdim - 1) ; - const int64_t cnvec = C->nvec ; - int64_t k = GB_hyper_hash_lookup (Ch, cnvec, Cp, C_Yp, C_Yi, C_Yx, - C_hash_bits, j, &pC_start, &pC_end) ; - found = (k >= 0) ; + int64_t k ; + if (C->Y == NULL) + { + // C is sparse but does not yet have a hyper_hash + k = 0 ; + found = GB_lookup (true, Ch, Cp, C->vlen, &k, + C->nvec-1, j, &pC_start, &pC_end) ; + } + else + { + // C is sparse, with a hyper_hash that is already built + k = GB_hyper_hash_lookup (Cp, C->Y->p, C->Y->i, C->Y->x, + C->Y->vdim-1, j, &pC_start, &pC_end) ; + found = (k >= 0) ; + } if (!found) { // vector j is empty diff --git a/Source/GrB_Matrix_set.c b/Source/GrB_Matrix_set.c deleted file mode 100644 index 365907e651..0000000000 --- a/Source/GrB_Matrix_set.c +++ /dev/null @@ -1,132 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Matrix_set_*: set a field in a matrix -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Matrix_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_set_Scalar -( - GrB_Matrix A, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_set_Scalar (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - ASSERT_MATRIX_OK (A, "A to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - double dvalue = 0 ; - int32_t ivalue = 0 ; - GrB_Info info ; - - switch ((int) field) - { - - case GxB_HYPER_SWITCH : - case GxB_BITMAP_SWITCH : - - info = GrB_Scalar_extractElement_FP64 (&dvalue, value) ; - break ; - - default : - - info = GrB_Scalar_extractElement_INT32 (&ivalue, value) ; - break ; - } - - if (info != GrB_SUCCESS) - { - return ((info == GrB_NO_VALUE) ? GrB_EMPTY_OBJECT : info) ; - } - - return (GB_matvec_set (A, false, ivalue, dvalue, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_set_String -( - GrB_Matrix A, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_set_String (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MATRIX_OK (A, "A to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_set (A, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_set_INT32 -( - GrB_Matrix A, - int32_t value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Matrix_set_INT32 (A, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (A) ; - ASSERT_MATRIX_OK (A, "A to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_matvec_set (A, false, value, 0, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Matrix_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Matrix_set_VOID -( - GrB_Matrix A, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Matrix_wait.c b/Source/GrB_Matrix_wait.c index 602f7783b0..338a65ea02 100644 --- a/Source/GrB_Matrix_wait.c +++ b/Source/GrB_Matrix_wait.c @@ -32,7 +32,7 @@ GrB_Info GrB_Matrix_wait // finish all work on a matrix //-------------------------------------------------------------------------- if (waitmode != GrB_COMPLETE && - (GB_ANY_PENDING_WORK (A) || GB_hyper_hash_need (A))) + (GB_ANY_PENDING_WORK (A) || GB_NEED_HYPER_HASH (A))) { GrB_Info info ; GB_BURBLE_START ("GrB_Matrix_wait") ; diff --git a/Source/GrB_Monoid_free.c b/Source/GrB_Monoid_free.c index 45a36f4adc..99934a68c4 100644 --- a/Source/GrB_Monoid_free.c +++ b/Source/GrB_Monoid_free.c @@ -22,8 +22,6 @@ GrB_Info GrB_Monoid_free // free a user-created monoid if (mon != NULL) { size_t header_size = mon->header_size ; - // free the monoid user_name - GB_FREE (&(mon->user_name), mon->user_name_size) ; if (header_size > 0) { mon->magic = GB_FREED ; // to help detect dangling pointers diff --git a/Source/GrB_Monoid_get.c b/Source/GrB_Monoid_get.c deleted file mode 100644 index bc1dfca3e2..0000000000 --- a/Source/GrB_Monoid_get.c +++ /dev/null @@ -1,214 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Monoid_get_*: get a field in a monoid -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Monoid_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_get_Scalar -( - GrB_Monoid monoid, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_get_Scalar (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_monoid_get (monoid, value, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_get_String -( - GrB_Monoid monoid, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_get_String (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - (*value) = '\0' ; - const char *name ; - - switch ((int) field) - { - case GrB_NAME : - - // get the name of the monoid - name = GB_monoid_name_get (monoid) ; - if (name != NULL) - { - strcpy (value, name) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; - - case GrB_INPUT1TYPE_STRING : - case GrB_INPUT2TYPE_STRING : - case GrB_OUTPUTTYPE_STRING : - return (GB_op_string_get ((GB_Operator) (monoid->op), - value, field)) ; - - default : ; - return (GrB_INVALID_VALUE) ; - } -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_get_INT32 -( - GrB_Monoid monoid, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_get_INT32 (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_enum_get ((GB_Operator) (monoid->op), value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_get_SIZE -( - GrB_Monoid monoid, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_get_SIZE (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *name ; - - switch ((int) field) - { - - case GrB_NAME : - - // get the length of the monoid user_name, or built-in name - name = GB_monoid_name_get (monoid) ; - break ; - - case GrB_INPUT1TYPE_STRING : - case GrB_INPUT2TYPE_STRING : - case GrB_OUTPUTTYPE_STRING : - name = GB_type_name_get (monoid->op->ztype) ; - break ; - - case GxB_MONOID_OPERATOR : - (*value) = sizeof (GrB_BinaryOp) ; - return (GrB_SUCCESS) ; - - default : - return (GrB_INVALID_VALUE) ; - } - - (*value) = (name == NULL) ? 1 : (strlen (name) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_get_VOID -( - GrB_Monoid monoid, - void * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_get_VOID (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GxB_MONOID_OPERATOR : - memcpy (value, &(monoid->op), sizeof (GrB_BinaryOp)) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GrB_Monoid_set.c b/Source/GrB_Monoid_set.c deleted file mode 100644 index fc1fcc7958..0000000000 --- a/Source/GrB_Monoid_set.c +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Monoid_set_*: set a field in a monoid -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Monoid_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_set_Scalar -( - GrB_Monoid monoid, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_set_String -( - GrB_Monoid monoid, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Monoid_set_String (monoid, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (monoid) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_MONOID_OK (monoid, "monoid to get option", GB0) ; - - if (monoid->header_size == 0 || field != GrB_NAME) - { - // built-in monoids may not be modified - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_user_name_set (&(monoid->user_name), - &(monoid->user_name_size), value, true)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_set_INT32 -( - GrB_Monoid monoid, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Monoid_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Monoid_set_VOID -( - GrB_Monoid monoid, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Scalar_get.c b/Source/GrB_Scalar_get.c deleted file mode 100644 index 0e88c2ffbe..0000000000 --- a/Source/GrB_Scalar_get.c +++ /dev/null @@ -1,145 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Scalar_get_*: get a field in a scalar -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Scalar_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_Scalar -( - GrB_Scalar s, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Scalar_get_Scalar (s, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (s) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_SCALAR_OK (s, "s to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GB_matvec_enum_get ((GrB_Matrix) s, &i, field) ; - if (info == GrB_SUCCESS) - { - // field specifies an int32_t: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - return (info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_String -( - GrB_Scalar s, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Scalar_get_String (s, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (s) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SCALAR_OK (s, "s to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_get ((GrB_Matrix) s, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_INT32 -( - GrB_Scalar s, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Scalar_get_INT32 (s, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (s) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SCALAR_OK (s, "s to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_enum_get ((GrB_Matrix) s, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_SIZE -( - GrB_Scalar s, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Scalar_get_SIZE (s, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (s) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SCALAR_OK (s, "s to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_size_get ((GrB_Matrix) s, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_get_VOID -( - GrB_Scalar s, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Scalar_set.c b/Source/GrB_Scalar_set.c deleted file mode 100644 index ff7f002084..0000000000 --- a/Source/GrB_Scalar_set.c +++ /dev/null @@ -1,86 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Scalar_set_*: set a field in a scalar -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Scalar_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_Scalar -( - GrB_Scalar s, - GrB_Scalar value, - GrB_Field field -) -{ - // all settings are ignored - return ((field == GrB_STORAGE_ORIENTATION_HINT) ? - GrB_SUCCESS : GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_String -( - GrB_Scalar s, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Scalar_set_String (s, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (s) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SCALAR_OK (s, "s to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_set ((GrB_Matrix) s, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_INT32 -( - GrB_Scalar s, - int32_t value, - GrB_Field field -) -{ - // all settings are ignored - return ((field == GrB_STORAGE_ORIENTATION_HINT) ? - GrB_SUCCESS : GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Scalar_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Scalar_set_VOID -( - GrB_Scalar s, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Scalar_setElement.c b/Source/GrB_Scalar_setElement.c index 4d770d1df2..59ad11bf3b 100644 --- a/Source/GrB_Scalar_setElement.c +++ b/Source/GrB_Scalar_setElement.c @@ -76,4 +76,3 @@ GrB_Info GxB_Scalar_setElement_UINT64 (GrB_Scalar s, uint64_t x) { return (GrB_S GrB_Info GxB_Scalar_setElement_FP32 (GrB_Scalar s, float x) { return (GrB_Scalar_setElement_FP32 (s,x)) ; } GrB_Info GxB_Scalar_setElement_FP64 (GrB_Scalar s, double x) { return (GrB_Scalar_setElement_FP64 (s,x)) ; } GrB_Info GxB_Scalar_setElement_UDT (GrB_Scalar s, void *x) { return (GrB_Scalar_setElement_UDT (s,x)) ; } - diff --git a/Source/GrB_Semiring_free.c b/Source/GrB_Semiring_free.c index 2fcbedeb3c..c5f323a81e 100644 --- a/Source/GrB_Semiring_free.c +++ b/Source/GrB_Semiring_free.c @@ -23,8 +23,6 @@ GrB_Info GrB_Semiring_free // free a user-created semiring { // free the semiring name GB_FREE (&(s->name), s->name_size) ; - // free the semiring user_name - GB_FREE (&(s->user_name), s->user_name_size) ; // free the semiring header size_t header_size = s->header_size ; if (header_size > 0) diff --git a/Source/GrB_Semiring_get.c b/Source/GrB_Semiring_get.c deleted file mode 100644 index 0fbb8f64c8..0000000000 --- a/Source/GrB_Semiring_get.c +++ /dev/null @@ -1,241 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Semiring_get_*: get a field in a semiring -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Semiring_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_get_Scalar -( - GrB_Semiring semiring, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_get_Scalar (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - case GxB_MONOID_IDENTITY : - case GxB_MONOID_TERMINAL : - return (GB_monoid_get (semiring->add, value, field, Werk)) ; - default : - return (GB_op_scalar_get ((GB_Operator) (semiring->multiply), - value, field, Werk)) ; - } -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_get_String -( - GrB_Semiring semiring, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_get_String (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - (*value) = '\0' ; - const char *name ; - - switch ((int) field) - { - case GrB_NAME : - - name = GB_semiring_name_get (semiring) ; - if (name != NULL) - { - // get the name of the semiring - strcpy (value, name) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; - - case GrB_INPUT1TYPE_STRING : - case GrB_INPUT2TYPE_STRING : - case GrB_OUTPUTTYPE_STRING : - return (GB_op_string_get ((GB_Operator) (semiring->multiply), - value, field)) ; - - default : ; - return (GrB_INVALID_VALUE) ; - } -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_get_INT32 -( - GrB_Semiring semiring, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_get_INT32 (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_enum_get ((GB_Operator) (semiring->multiply), value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_get_SIZE -( - GrB_Semiring semiring, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_get_SIZE (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *name ; - - switch ((int) field) - { - - case GrB_NAME : - - // get the length of the semiring user_name, or built-in name - name = GB_semiring_name_get (semiring) ; - break ; - - case GrB_INPUT1TYPE_STRING : - name = GB_type_name_get (semiring->multiply->xtype) ; - break ; - - case GrB_INPUT2TYPE_STRING : - name = GB_type_name_get (semiring->multiply->ytype) ; - break ; - - case GrB_OUTPUTTYPE_STRING : - name = GB_type_name_get (semiring->multiply->ztype) ; - break ; - - case GxB_MONOID_OPERATOR : - case GxB_SEMIRING_MULTIPLY : - (*value) = sizeof (GrB_BinaryOp) ; - return (GrB_SUCCESS) ; - - case GxB_SEMIRING_MONOID : - (*value) = sizeof (GrB_Monoid) ; - return (GrB_SUCCESS) ; - - default : - return (GrB_INVALID_VALUE) ; - } - - (*value) = (name == NULL) ? 1 : (strlen (name) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_get_VOID -( - GrB_Semiring semiring, - void * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_get_VOID (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GxB_MONOID_OPERATOR : - memcpy (value, &(semiring->add->op), sizeof (GrB_BinaryOp)) ; - break ; - - case GxB_SEMIRING_MONOID : - memcpy (value, &(semiring->add), sizeof (GrB_Monoid)) ; - break ; - - case GxB_SEMIRING_MULTIPLY : - memcpy (value, &(semiring->multiply), sizeof (GrB_BinaryOp)) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - diff --git a/Source/GrB_Semiring_set.c b/Source/GrB_Semiring_set.c deleted file mode 100644 index e398567ea7..0000000000 --- a/Source/GrB_Semiring_set.c +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Semiring_set_*: set a field in a semiring -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Semiring_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_set_Scalar -( - GrB_Semiring semiring, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_set_String -( - GrB_Semiring semiring, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Semiring_set_String (semiring, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (semiring) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_SEMIRING_OK (semiring, "semiring to get option", GB0) ; - - if (semiring->header_size == 0 || field != GrB_NAME) - { - // built-in semirings may not be modified - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_user_name_set (&(semiring->user_name), - &(semiring->user_name_size), value, true)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_set_INT32 -( - GrB_Semiring semiring, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Semiring_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Semiring_set_VOID -( - GrB_Semiring semiring, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Type_free.c b/Source/GrB_Type_free.c index b12b9c3603..91815a0ab4 100644 --- a/Source/GrB_Type_free.c +++ b/Source/GrB_Type_free.c @@ -21,15 +21,14 @@ GrB_Info GrB_Type_free // free a user-defined type GrB_Type t = *type ; if (t != NULL) { - GB_FREE (&(t->user_name), t->user_name_size) ; - size_t defn_size = t->defn_size ; - if (defn_size > 0) - { - GB_FREE (&(t->defn), defn_size) ; - } size_t header_size = t->header_size ; if (header_size > 0) { + size_t defn_size = t->defn_size ; + if (defn_size > 0) + { + GB_FREE (&(t->defn), defn_size) ; + } t->magic = GB_FREED ; // to help detect dangling pointers t->header_size = 0 ; GB_FREE (type, header_size) ; diff --git a/Source/GrB_Type_get.c b/Source/GrB_Type_get.c deleted file mode 100644 index dfb8fbb36b..0000000000 --- a/Source/GrB_Type_get.c +++ /dev/null @@ -1,237 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Type_get_*: get a field in a type -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Type_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_get_Scalar -( - GrB_Type type, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Type_get_Scalar (type, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (type) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_TYPE_OK (type, "type for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - uint64_t u ; - - switch ((int) field) - { - case GrB_ELTYPE_CODE : - i = (int32_t) GB_type_code_get (type->code) ; - return (GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk)) ; - break ; - - case GrB_SIZE : - u = (uint64_t) type->size ; - return (GB_setElement ((GrB_Matrix) value, NULL, &u, 0, 0, - GB_UINT64_code, Werk)) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } -} - -//------------------------------------------------------------------------------ -// GrB_Type_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_get_String -( - GrB_Type type, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Type_get_String (type, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (type) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_TYPE_OK (type, "type for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - (*value) = '\0' ; - const char *name ; - - switch ((int) field) - { - case GrB_NAME : - case GrB_ELTYPE_STRING : - - name = GB_type_name_get (type) ; - if (name != NULL) - { - strcpy (value, name) ; - } - #pragma omp flush - return (GrB_SUCCESS) ; - - case GxB_JIT_C_NAME : - - strcpy (value, type->name) ; - break ; - - case GxB_JIT_C_DEFINITION : - - if (type->defn != NULL) - { - strcpy (value, type->defn) ; - } - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_get_INT32 -( - GrB_Type type, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Type_get_INT32 (type, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (type) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_TYPE_OK (type, "type for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch ((int) field) - { - - case GrB_ELTYPE_CODE : - - (*value) = (int32_t) GB_type_code_get (type->code) ; - break ; - - case GrB_SIZE : - - // int32_t is fine for small types but for GrB_Scalar, - // UINT64 is used instead (see above) - (*value) = (int32_t) type->size ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_get_SIZE -( - GrB_Type type, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Type_get_SIZE (type, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (type) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_TYPE_OK (type, "type for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *s ; - - switch ((int) field) - { - - case GrB_NAME : - case GrB_ELTYPE_STRING : - - s = GB_type_name_get (type) ; - break ; - - case GxB_JIT_C_NAME : - - s = type->name ; - break ; - - case GxB_JIT_C_DEFINITION : - - s = type->defn ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - (*value) = (s == NULL) ? 1 : (strlen (s) + 1) ; - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_get_VOID -( - GrB_Type type, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Type_new.c b/Source/GrB_Type_new.c index dcb7f242d0..0debf8f594 100644 --- a/Source/GrB_Type_new.c +++ b/Source/GrB_Type_new.c @@ -7,9 +7,26 @@ //------------------------------------------------------------------------------ +// GrB_Type_new is implemented both as a macro and a function. Both are +// user-callable. The default is to use the macro, since this allows the name +// of the type to be saved as a string, for subsequent error reporting by +// GrB_error and for the return value of GxB_Matrix_type_name. It is also +// provided as a function so that applications that require a function instead +// of macro can access it. User code can simply do #undef GrB_Type_new before +// using the function. This approach also places the function GrB_Type_new in +// the linkable SuiteSparse:GraphBLAS library so that it is visible for linking +// with applications in languages other than ANSI C. The function version does +// not allow the name of the ctype to be saved in the new GraphBLAS type, +// however. It is given a generic name, "user_type_of_size_%d" where "%d" is +// the size of the type. + #include "GB.h" -GrB_Info GrB_Type_new // create a new GraphBLAS type +// the macro version of this function must first be #undefined +#undef GrB_Type_new +#undef GrM_Type_new + +GrB_Info GRB (Type_new) // create a new GraphBLAS type ( GrB_Type *type, // handle of user type to create size_t sizeof_ctype // size = sizeof (ctype) of the C type diff --git a/Source/GrB_Type_set.c b/Source/GrB_Type_set.c deleted file mode 100644 index 3fa6b4b95f..0000000000 --- a/Source/GrB_Type_set.c +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Type_set_*: set a field in a type -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Type_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_set_Scalar -( - GrB_Type type, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_set_String -( - GrB_Type type, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Type_set_String (type, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (type) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_TYPE_OK (type, "unaryop for get", GB0) ; - - //-------------------------------------------------------------------------- - // set the name or defn of a user-defined type - //-------------------------------------------------------------------------- - - bool user_defined = (type->code == GB_UDT_code) ; - - return (GB_op_or_type_string_set (user_defined, true, value, field, - &(type->user_name), &(type->user_name_size), - type->name, &(type->name_len), &(type->defn), &(type->defn_size), - &(type->hash))) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_set_INT32 -( - GrB_Type type, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_Type_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Type_set_VOID -( - GrB_Type type, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_UnaryOp_get.c b/Source/GrB_UnaryOp_get.c deleted file mode 100644 index 1a88de4c5b..0000000000 --- a/Source/GrB_UnaryOp_get.c +++ /dev/null @@ -1,137 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_*: get a field in a unary op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_get_Scalar -( - GrB_UnaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_UnaryOp_get_Scalar (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_UNARYOP_OK (op, "unaryop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_scalar_get ((GB_Operator) op, value, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_get_String -( - GrB_UnaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_UnaryOp_get_String (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_UNARYOP_OK (op, "unaryop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_string_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_get_INT32 -( - GrB_UnaryOp op, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_UnaryOp_get_INT32 (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_UNARYOP_OK (op, "unaryop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_enum_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_get_SIZE -( - GrB_UnaryOp op, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_UnaryOp_get_SIZE (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_UNARYOP_OK (op, "unaryop for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_op_size_get ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_get_VOID -( - GrB_UnaryOp op, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_UnaryOp_new.c b/Source/GrB_UnaryOp_new.c index bf4c77860c..f21dc59c9d 100644 --- a/Source/GrB_UnaryOp_new.c +++ b/Source/GrB_UnaryOp_new.c @@ -7,9 +7,17 @@ //------------------------------------------------------------------------------ +// GrB_UnaryOp_new is implemented both as a macro and a function. Both are +// user-callable. The macro is used by default since it can capture the name +// of the unary function. + #include "GB.h" -GrB_Info GrB_UnaryOp_new // create a new user-defined unary operator +// the macro version of this function must first be #undefined +#undef GrB_UnaryOp_new +#undef GrM_UnaryOp_new + +GrB_Info GRB (UnaryOp_new) // create a new user-defined unary operator ( GrB_UnaryOp *unaryop, // handle for the new unary operator GxB_unary_function function, // pointer to the unary function diff --git a/Source/GrB_UnaryOp_set.c b/Source/GrB_UnaryOp_set.c deleted file mode 100644 index bf92f6d71a..0000000000 --- a/Source/GrB_UnaryOp_set.c +++ /dev/null @@ -1,82 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_UnaryOp_set_*: set a field in a unary op -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_set_Scalar -( - GrB_UnaryOp op, - GrB_Scalar value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_set_String -( - GrB_UnaryOp op, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_UnaryOp_set_String (op, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (op) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_UNARYOP_OK (op, "unaryop for set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_op_string_set ((GB_Operator) op, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_set_INT32 -( - GrB_UnaryOp op, - int32_t value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - -//------------------------------------------------------------------------------ -// GrB_UnaryOp_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_UnaryOp_set_VOID -( - GrB_UnaryOp op, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Vector_get.c b/Source/GrB_Vector_get.c deleted file mode 100644 index 8eb0aef5df..0000000000 --- a/Source/GrB_Vector_get.c +++ /dev/null @@ -1,162 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Vector_get_*: get a field in a matrix -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Vector_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_get_Scalar -( - GrB_Vector v, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_get_Scalar (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_VECTOR_OK (v, "v to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - int32_t i ; - GrB_Info info = GB_matvec_enum_get ((GrB_Matrix) v, &i, field) ; - if (info == GrB_SUCCESS) - { - // field specifies an int32_t: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &i, 0, 0, - GB_INT32_code, Werk) ; - } - else - { - double x ; - switch ((int) field) - { - case GxB_BITMAP_SWITCH : - x = (double) (v->bitmap_switch) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - // field specifies a double: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &x, 0, 0, - GB_FP64_code, Werk) ; - } - - return (info) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_get_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_get_String -( - GrB_Vector v, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_get_String (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_VECTOR_OK (v, "v to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_get ((GrB_Matrix) v, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_get_INT32 -( - GrB_Vector v, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_get_INT32 (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_VECTOR_OK (v, "v to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_enum_get ((GrB_Matrix) v, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_get_SIZE -( - GrB_Vector v, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_get_SIZE (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_VECTOR_OK (v, "v to get option", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_size_get ((GrB_Matrix) v, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_get_VOID -( - GrB_Vector v, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_Vector_set.c b/Source/GrB_Vector_set.c deleted file mode 100644 index aae8adb393..0000000000 --- a/Source/GrB_Vector_set.c +++ /dev/null @@ -1,126 +0,0 @@ -//------------------------------------------------------------------------------ -// GrB_Vector_set_*: set a field in a vector -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GrB_Vector_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_set_Scalar -( - GrB_Vector v, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_set_Scalar (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - ASSERT_VECTOR_OK (v, "v to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - double dvalue = 0 ; - int32_t ivalue = 0 ; - GrB_Info info ; - - switch ((int) field) - { - case GxB_BITMAP_SWITCH : - info = GrB_Scalar_extractElement_FP64 (&dvalue, value) ; - break ; - default : - info = GrB_Scalar_extractElement_INT32 (&ivalue, value) ; - break ; - } - - if (info != GrB_SUCCESS) - { - return ((info == GrB_NO_VALUE) ? GrB_EMPTY_OBJECT : info) ; - } - return (GB_matvec_set ((GrB_Matrix) v, true, ivalue, dvalue, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_set_String -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_set_String -( - GrB_Vector v, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_set_String (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_VECTOR_OK (v, "v to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_matvec_name_set ((GrB_Matrix) v, value, field)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_set_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_set_INT32 -( - GrB_Vector v, - int32_t value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GrB_Vector_set_INT32 (v, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (v) ; - ASSERT_VECTOR_OK (v, "v to set option", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_matvec_set ((GrB_Matrix) v, true, value, 0, field, Werk)) ; -} - -//------------------------------------------------------------------------------ -// GrB_Vector_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GrB_Vector_set_VOID -( - GrB_Vector v, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GrB_init.c b/Source/GrB_init.c index d0204449d4..c4d4375a2d 100644 --- a/Source/GrB_init.c +++ b/Source/GrB_init.c @@ -29,7 +29,7 @@ GrB_Info GrB_init // start up GraphBLAS // initialize GraphBLAS //-------------------------------------------------------------------------- - // default: use the C11 malloc memory manager, which is thread-safe + // default: use the ANSI C11 malloc memory manager, which is thread-safe return (GB_init (mode, // blocking or non-blocking mode malloc, calloc, realloc, free, // ANSI C memory management functions diff --git a/Source/GxB_Context_free.c b/Source/GxB_Context_free.c index 32b975961b..bdf817f52f 100644 --- a/Source/GxB_Context_free.c +++ b/Source/GxB_Context_free.c @@ -34,8 +34,6 @@ GrB_Info GxB_Context_free // free a Context if (Context != NULL) { size_t header_size = Context->header_size ; - // free the Context user_name - GB_FREE (&(Context->user_name), Context->user_name_size) ; if (header_size > 0) { Context->magic = GB_FREED ; // to help detect dangling pointers diff --git a/Source/GxB_Context_get.c b/Source/GxB_Context_get.c index 927325bd7b..c4549a7bf9 100644 --- a/Source/GxB_Context_get.c +++ b/Source/GxB_Context_get.c @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------ -// GxB_Context_get: get a field of Context (HISTORICAL; do not use for new code) +// GxB_Context_get: get a field of a Context //------------------------------------------------------------------------------ // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. diff --git a/Source/GxB_Context_get2.c b/Source/GxB_Context_get2.c deleted file mode 100644 index 8950d95231..0000000000 --- a/Source/GxB_Context_get2.c +++ /dev/null @@ -1,229 +0,0 @@ -//------------------------------------------------------------------------------ -// GxB_Context_get_*: get a field in a context -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GxB_Context_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_get_Scalar -( - GxB_Context Context, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_get_Scalar (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_CONTEXT_OK (Context, "context for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - double dvalue = 0 ; - int32_t ivalue = 0 ; - GrB_Info info ; - - switch ((int) field) - { - - case GxB_CONTEXT_CHUNK : // same as GxB_CHUNK - - dvalue = GB_Context_chunk_get (Context) ; - break ; - - case GxB_CONTEXT_NTHREADS : // same as GxB_NTHREADS - - ivalue = GB_Context_nthreads_max_get (Context) ; - break ; - - case GxB_CONTEXT_GPU_ID : // same as GxB_GPU_ID - - ivalue= GB_Context_gpu_id_get (Context) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - switch ((int) field) - { - - case GxB_CONTEXT_CHUNK : // same as GxB_CHUNK - - info = GB_setElement ((GrB_Matrix) value, NULL, &dvalue, 0, 0, - GB_FP64_code, Werk) ; - break ; - - default : - info = GB_setElement ((GrB_Matrix) value, NULL, &ivalue, 0, 0, - GB_INT32_code, Werk) ; - break ; - } - - return (info) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_get_String -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_get_String -( - GxB_Context Context, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_get_String (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_CONTEXT_OK (Context, "context for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - if (field != GrB_NAME) - { - return (GrB_INVALID_VALUE) ; - } - - (*value) = '\0' ; - if (Context == GxB_CONTEXT_WORLD) - { - // built-in Context - strcpy (value, "GxB_CONTEXT_WORLD") ; - } - else if (Context->user_name_size > 0) - { - // user-defined Context, with name defined by GrB_set - strcpy (value, Context->user_name) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_get_INT -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_get_INT -( - GxB_Context Context, - int32_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_get_INT (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_CONTEXT_OK (Context, "context for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - switch (field) - { - - case GxB_CONTEXT_NTHREADS : // same as GxB_NTHREADS - - (*value) = GB_Context_nthreads_max_get (Context) ; - break ; - - case GxB_CONTEXT_GPU_ID : // same as GxB_GPU_ID - - (*value) = GB_Context_gpu_id_get (Context) ; - break ; - - default : - - return (GrB_INVALID_VALUE) ; - } - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_get_SIZE -( - GxB_Context Context, - size_t * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_get_SIZE (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_CONTEXT_OK (Context, "context for get", GB0) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - if (field != GrB_NAME) - { - return (GrB_INVALID_VALUE) ; - } - - if (Context->user_name != NULL) - { - (*value) = Context->user_name_size ; - } - else - { - (*value) = GxB_MAX_NAME_LEN ; - } - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_get_VOID -( - GxB_Context Context, - void * value, - GrB_Field field -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GxB_Context_new.c b/Source/GxB_Context_new.c index ad0e7d9de9..360bb0b7cb 100644 --- a/Source/GxB_Context_new.c +++ b/Source/GxB_Context_new.c @@ -41,8 +41,6 @@ GrB_Info GxB_Context_new // create a new Context Context->magic = GB_MAGIC ; Context->header_size = header_size ; - Context->user_name = NULL ; // user_name for GrB_get/GrB_set - Context->user_name_size = 0 ; // initialize the Context with the same settings as GxB_CONTEXT_WORLD Context->nthreads_max = GB_Context_nthreads_max_get (NULL) ; diff --git a/Source/GxB_Context_set.c b/Source/GxB_Context_set.c index ece98c8ee8..ffa7eb1a34 100644 --- a/Source/GxB_Context_set.c +++ b/Source/GxB_Context_set.c @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------ -// GxB_Context_set: set a field in Context (HISTORICAL; do not use for new code) +// GxB_Context_set: set a field in a Context //------------------------------------------------------------------------------ // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. diff --git a/Source/GxB_Context_set2.c b/Source/GxB_Context_set2.c deleted file mode 100644 index 02e0d6ca9c..0000000000 --- a/Source/GxB_Context_set2.c +++ /dev/null @@ -1,179 +0,0 @@ -//------------------------------------------------------------------------------ -// GxB_Context_set_*: set a field in a Context -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" - -//------------------------------------------------------------------------------ -// GxB_Context_set_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_set_Scalar -( - GxB_Context Context, - GrB_Scalar value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_set_Scalar (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - ASSERT_CONTEXT_OK (Context, "Context to set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - GrB_Info info ; - int32_t ivalue = 0 ; - double dvalue = 0 ; - - switch ((int) field) - { - - case GxB_CONTEXT_NTHREADS : // same as GxB_NTHREADS - case GxB_CONTEXT_GPU_ID : // same as GxB_GPU_ID - info = GrB_Scalar_extractElement_INT32 (&ivalue, value) ; - break ; - - case GxB_CONTEXT_CHUNK : // same as GxB_CHUNK - info = GrB_Scalar_extractElement_FP64 (&dvalue, value) ; - break ; - - default : - info = GrB_INVALID_VALUE ; - break ; - } - - if (info != GrB_SUCCESS) - { - return ((info == GrB_NO_VALUE) ? GrB_EMPTY_OBJECT : info) ; - } - - switch (field) - { - - default: - case GxB_CONTEXT_NTHREADS : // same as GxB_NTHREADS - - GB_Context_nthreads_max_set (Context, ivalue) ; - break ; - - case GxB_CONTEXT_GPU_ID : // same as GxB_GPU_ID - - GB_Context_gpu_id_set (Context, ivalue) ; - break ; - - case GxB_CONTEXT_CHUNK : // same as GxB_CHUNK - - GB_Context_chunk_set (Context, dvalue) ; - break ; - } - - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_set_String -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_set_String -( - GxB_Context Context, - char * value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_set_String (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - GB_RETURN_IF_NULL (value) ; - ASSERT_CONTEXT_OK (Context, "Context to get option", GB0) ; - - if (Context == GxB_CONTEXT_WORLD || field != GrB_NAME) - { - // built-in GxB_CONTEXT_WORLD may not be modified - return (GrB_INVALID_VALUE) ; - } - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - return (GB_user_name_set (&(Context->user_name), - &(Context->user_name_size), value, false)) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_set_INT -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_set_INT -( - GxB_Context Context, - int32_t value, - GrB_Field field -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Context_set_INT (Context, value, field)") ; - GB_RETURN_IF_NULL_OR_FAULTY (Context) ; - ASSERT_CONTEXT_OK (Context, "Context to set", GB0) ; - - //-------------------------------------------------------------------------- - // set the field - //-------------------------------------------------------------------------- - - switch (field) - { - - case GxB_CONTEXT_NTHREADS : // same as GxB_NTHREADS - - GB_Context_nthreads_max_set (Context, value) ; - break ; - - case GxB_CONTEXT_GPU_ID : // same as GxB_GPU_ID - - GB_Context_gpu_id_set (Context, value) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Context_set_VOID -//------------------------------------------------------------------------------ - -GrB_Info GxB_Context_set_VOID -( - GxB_Context Context, - void * value, - GrB_Field field, - size_t size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GxB_IndexUnaryOp_new.c b/Source/GxB_IndexUnaryOp_new.c index 17f9d227c3..2993e85392 100644 --- a/Source/GxB_IndexUnaryOp_new.c +++ b/Source/GxB_IndexUnaryOp_new.c @@ -63,8 +63,6 @@ GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp //-------------------------------------------------------------------------- op->magic = GB_MAGIC ; - op->user_name = NULL ; - op->user_name_size = 0 ; op->ztype = ztype ; op->xtype = xtype ; op->ytype = ytype ; // thunk type @@ -89,7 +87,7 @@ GrB_Info GxB_IndexUnaryOp_new // create a named user-created IndexUnaryOp // output: op->name, &(op->name_len), &(op->hash), &(op->defn), &(op->defn_size), // input: - idxop_name, idxop_defn, true, jitable) ; + idxop_name, idxop_defn, "GxB_index_unary_function", 24, true, jitable) ; if (info != GrB_SUCCESS) { // out of memory diff --git a/Source/GxB_Matrix_serialize.c b/Source/GxB_Matrix_serialize.c index 7674c64c24..181299823b 100644 --- a/Source/GxB_Matrix_serialize.c +++ b/Source/GxB_Matrix_serialize.c @@ -12,7 +12,7 @@ // This method is similar to GrB_Matrix_serialize. In contrast with the GrB* // method, this method allocates the blob itself, and hands over the allocated // space to the user application. The blob must be freed by the same free -// function passed in to GxB_init, or by the C11 free() if GrB_init was +// function passed in to GxB_init, or by the ANSI C11 free() if GrB_init was // used. On input, the blob_size need not be initialized; it is returned as // the size of the blob as allocated. diff --git a/Source/GxB_Serialized_get.c b/Source/GxB_Serialized_get.c deleted file mode 100644 index 02beee7ea5..0000000000 --- a/Source/GxB_Serialized_get.c +++ /dev/null @@ -1,532 +0,0 @@ -//------------------------------------------------------------------------------ -// GxB_Serialized_get_*: query the contents of a serialized blob -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_get_set.h" -#include "GB_serialize.h" - -//------------------------------------------------------------------------------ -// GB_blob_header_get: get all properties of the blob -//------------------------------------------------------------------------------ - -static GrB_Info GB_blob_header_get -( - // output: - char *type_name, // name of the type (char array of size at - // least GxB_MAX_NAME_LEN) - int32_t *type_code, // type code of the matrix - int32_t *sparsity_status, // sparsity status - int32_t *sparsity_ctrl, // sparsity control - double *hyper_sw, // hyper_switch - double *bitmap_sw, // bitmap_switch - int32_t *storage, // GrB_COLMAJOR or GrB_ROWMAJOR - char **user_name, // GrB_NAME of the blob - char **eltype_string, // GrB_ELTYPE_STRING of the type of the blob - - // input, not modified: - const GB_void *blob, // the blob - GrB_Index blob_size // size of the blob -) -{ - - //-------------------------------------------------------------------------- - // read the content of the header (160 bytes) - //-------------------------------------------------------------------------- - - size_t s = 0 ; - - if (blob_size < GB_BLOB_HEADER_SIZE) - { - // blob is invalid - return (GrB_INVALID_OBJECT) ; - } - - GB_BLOB_READ (blob_size2, uint64_t) ; - GB_BLOB_READ (typecode, int32_t) ; - uint64_t blob_size1 = (uint64_t) blob_size ; - - if (blob_size1 != blob_size2 - || typecode < GB_BOOL_code || typecode > GB_UDT_code - || (typecode == GB_UDT_code && - blob_size < GB_BLOB_HEADER_SIZE + GxB_MAX_NAME_LEN)) - { - // blob is invalid - return (GrB_INVALID_OBJECT) ; - } - - GB_BLOB_READ (version, int32_t) ; - GB_BLOB_READ (vlen, int64_t) ; - GB_BLOB_READ (vdim, int64_t) ; - GB_BLOB_READ (nvec, int64_t) ; - GB_BLOB_READ (nvec_nonempty, int64_t) ; ASSERT (nvec_nonempty >= 0) ; - GB_BLOB_READ (nvals, int64_t) ; - GB_BLOB_READ (typesize, int64_t) ; - GB_BLOB_READ (Cp_len, int64_t) ; - GB_BLOB_READ (Ch_len, int64_t) ; - GB_BLOB_READ (Cb_len, int64_t) ; - GB_BLOB_READ (Ci_len, int64_t) ; - GB_BLOB_READ (Cx_len, int64_t) ; - GB_BLOB_READ (hyper_switch, float) ; - GB_BLOB_READ (bitmap_switch, float) ; - GB_BLOB_READ (sparsity_control, int32_t) ; - GB_BLOB_READ (sparsity_iso_csc, int32_t) ; - GB_BLOB_READ (Cp_nblocks, int32_t) ; GB_BLOB_READ (Cp_method, int32_t) ; - GB_BLOB_READ (Ch_nblocks, int32_t) ; GB_BLOB_READ (Ch_method, int32_t) ; - GB_BLOB_READ (Cb_nblocks, int32_t) ; GB_BLOB_READ (Cb_method, int32_t) ; - GB_BLOB_READ (Ci_nblocks, int32_t) ; GB_BLOB_READ (Ci_method, int32_t) ; - GB_BLOB_READ (Cx_nblocks, int32_t) ; GB_BLOB_READ (Cx_method, int32_t) ; - - (*sparsity_status) = sparsity_iso_csc / 4 ; - bool iso = ((sparsity_iso_csc & 2) == 2) ; - bool is_csc = ((sparsity_iso_csc & 1) == 1) ; - (*sparsity_ctrl) = sparsity_control ; - (*hyper_sw) = (double) hyper_switch ; - (*bitmap_sw) = (double) bitmap_switch ; - (*storage) = (is_csc) ? GrB_COLMAJOR : GrB_ROWMAJOR ; - - //-------------------------------------------------------------------------- - // determine the matrix type_code and C type_name - //-------------------------------------------------------------------------- - - (*type_code) = GB_type_code_get (typecode) ; - memset (type_name, 0, GxB_MAX_NAME_LEN) ; - - if (typecode >= GB_BOOL_code && typecode < GB_UDT_code) - { - // blob has a built-in type; the name is not in the blob - strcpy (type_name, GB_code_string (typecode)) ; - } - else if (typecode == GB_UDT_code) - { - // blob has a user-defined type - // get the GxB_JIT_C_NAME of the user type from the blob - memcpy (type_name, ((GB_void *) blob) + GB_BLOB_HEADER_SIZE, - GxB_MAX_NAME_LEN) ; - s += GxB_MAX_NAME_LEN ; - } - - // this should already be in the blob, but set it to null just in case - type_name [GxB_MAX_NAME_LEN-1] = '\0' ; -// printf ("JIT C type name [%s]\n", type_name) ; - - //-------------------------------------------------------------------------- - // get the compressed block sizes from the blob for each array - //-------------------------------------------------------------------------- - - GB_BLOB_READS (Cp_Sblocks, Cp_nblocks) ; - GB_BLOB_READS (Ch_Sblocks, Ch_nblocks) ; - GB_BLOB_READS (Cb_Sblocks, Cb_nblocks) ; - GB_BLOB_READS (Ci_Sblocks, Ci_nblocks) ; - GB_BLOB_READS (Cx_Sblocks, Cx_nblocks) ; - - //-------------------------------------------------------------------------- - // skip past each array (Cp, Ch, Cb, Ci, and Cx) - //-------------------------------------------------------------------------- - - switch (*sparsity_status) - { - case GxB_HYPERSPARSE : - // skip Cp, Ch, and Ci - s += (Cp_nblocks > 0) ? Cp_Sblocks [Cp_nblocks-1] : 0 ; - s += (Ch_nblocks > 0) ? Ch_Sblocks [Ch_nblocks-1] : 0 ; - s += (Ci_nblocks > 0) ? Ci_Sblocks [Ci_nblocks-1] : 0 ; - break ; - - case GxB_SPARSE : - // skip Cp and Ci - s += (Cp_nblocks > 0) ? Cp_Sblocks [Cp_nblocks-1] : 0 ; - s += (Ci_nblocks > 0) ? Ci_Sblocks [Ci_nblocks-1] : 0 ; - break ; - - case GxB_BITMAP : - // skip Cb - s += (Cb_nblocks > 0) ? Cb_Sblocks [Cb_nblocks-1] : 0 ; - break ; - - case GxB_FULL : - break ; - default: ; - } - - // skip Cx - s += (Cx_nblocks > 0) ? Cx_Sblocks [Cx_nblocks-1] : 0 ; - - //-------------------------------------------------------------------------- - // get the GrB_NAME and GrB_ELTYPE_STRING - //-------------------------------------------------------------------------- - - // v8.1.0 adds two nul-terminated uncompressed strings to the end of the - // blob. If the strings are empty, the nul terminators still appear. - - (*user_name) = NULL ; - (*eltype_string) = NULL ; - - if (version >= GxB_VERSION (8,1,0)) - { - - //---------------------------------------------------------------------- - // look for the two nul bytes in blob [s : blob_size-1] - //---------------------------------------------------------------------- - - int nfound = 0 ; - size_t ss [2] ; - for (size_t p = s ; p < blob_size && nfound < 2 ; p++) - { - if (blob [p] == 0) - { - ss [nfound++] = p ; - } - } - - if (nfound == 2) - { - // extract the GrB_NAME and GrB_ELTYPE_STRING from the blob - (*user_name) = (char *) (blob + s) ; - (*eltype_string) = (char *) (blob + ss [0] + 1) ; -// printf ("deserialize user_name %lu:[%s] eltype %lu:[%s]\n", -// s, *user_name, ss [0] + 1, *eltype_string) ; - } - } - - //-------------------------------------------------------------------------- - // return result - //-------------------------------------------------------------------------- - - #pragma omp flush - return (GrB_SUCCESS) ; -} - -//------------------------------------------------------------------------------ -// GxB_Serialized_get_Scalar -//------------------------------------------------------------------------------ - -GrB_Info GxB_Serialized_get_Scalar -( - const void * blob, - GrB_Scalar value, - GrB_Field field, - size_t blob_size -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Serialized_get_Scalar (blob, value, field, blobsize)") ; - GB_RETURN_IF_NULL (blob) ; - GB_RETURN_IF_NULL_OR_FAULTY (value) ; - - //-------------------------------------------------------------------------- - // read the blob - //-------------------------------------------------------------------------- - - char type_name [GxB_MAX_NAME_LEN], *user_name, *eltype_string ; - int32_t sparsity_status, sparsity_ctrl, type_code, storage ; - double hyper_sw, bitmap_sw ; - - GrB_Info info = GB_blob_header_get (type_name, &type_code, &sparsity_status, - &sparsity_ctrl, &hyper_sw, &bitmap_sw, &storage, - &user_name, &eltype_string, blob, blob_size) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - double dvalue = 0 ; - int32_t ivalue = 0 ; - bool is_double = false ; - - if (info == GrB_SUCCESS) - { - switch (field) - { - case GrB_STORAGE_ORIENTATION_HINT : - - ivalue = storage ; - break ; - - case GrB_ELTYPE_CODE : - - ivalue = type_code ; - break ; - - case GxB_SPARSITY_CONTROL : - - ivalue = sparsity_ctrl ; - break ; - - case GxB_SPARSITY_STATUS : - - ivalue = sparsity_status ; - break ; - - case GxB_FORMAT : - - ivalue = (storage == GrB_COLMAJOR) ? GxB_BY_COL : GxB_BY_ROW ; - break ; - - case GxB_HYPER_SWITCH : - dvalue = hyper_sw ; - is_double = true ; - break ; - - case GxB_BITMAP_SWITCH : - dvalue = bitmap_sw ; - is_double = true ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - - if (is_double) - { - // field specifies a double: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &dvalue, 0, 0, - GB_FP64_code, Werk) ; - } - else - { - // field specifies an int32_t: assign it to the scalar - info = GB_setElement ((GrB_Matrix) value, NULL, &ivalue, 0, 0, - GB_INT32_code, Werk) ; - } - } - - #pragma omp flush - return (info) ; -} - -//------------------------------------------------------------------------------ -// GxB_Serialized_get_String -//------------------------------------------------------------------------------ - -GrB_Info GxB_Serialized_get_String -( - const void * blob, - char * value, - GrB_Field field, - size_t blob_size -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Serialized_get_String (blob, value, field, blobsize)") ; - GB_RETURN_IF_NULL (blob) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // read the blob - //-------------------------------------------------------------------------- - - char type_name [GxB_MAX_NAME_LEN], *user_name, *eltype_string ; - int32_t sparsity_status, sparsity_ctrl, type_code, storage ; - double hyper_sw, bitmap_sw ; - - GrB_Info info = GB_blob_header_get (type_name, &type_code, &sparsity_status, - &sparsity_ctrl, &hyper_sw, &bitmap_sw, &storage, - &user_name, &eltype_string, blob, blob_size) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - (*value) = '\0' ; - const char *name ; - - if (info == GrB_SUCCESS) - { - switch (field) - { - - case GrB_NAME : - if (user_name != NULL) - { - strcpy (value, user_name) ; - } - break ; - - case GxB_JIT_C_NAME : - strcpy (value, type_name) ; - break ; - - case GrB_ELTYPE_STRING : - if (eltype_string != NULL) - { - strcpy (value, eltype_string) ; - } - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - } - - #pragma omp flush - return (info) ; -} - -//------------------------------------------------------------------------------ -// GxB_Serialized_get_INT32 -//------------------------------------------------------------------------------ - -GrB_Info GxB_Serialized_get_INT32 -( - const void * blob, - int32_t * value, - GrB_Field field, - size_t blob_size -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Serialized_get_INT32 (blob, value, field, blobsize)") ; - GB_RETURN_IF_NULL (blob) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // read the blob - //-------------------------------------------------------------------------- - - char type_name [GxB_MAX_NAME_LEN], *user_name, *eltype_string ; - int32_t sparsity_status, sparsity_ctrl, type_code, storage ; - double hyper_sw, bitmap_sw ; - - GrB_Info info = GB_blob_header_get (type_name, &type_code, &sparsity_status, - &sparsity_ctrl, &hyper_sw, &bitmap_sw, &storage, - &user_name, &eltype_string, blob, blob_size) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - if (info == GrB_SUCCESS) - { - switch (field) - { - case GrB_STORAGE_ORIENTATION_HINT : - - (*value) = storage ; - break ; - - case GrB_ELTYPE_CODE : - - (*value) = type_code ; - break ; - - case GxB_SPARSITY_CONTROL : - - (*value) = sparsity_ctrl ; - break ; - - case GxB_SPARSITY_STATUS : - - (*value) = sparsity_status ; - break ; - - case GxB_FORMAT : - - (*value) = (storage == GrB_COLMAJOR) ? GxB_BY_COL : GxB_BY_ROW ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - } - - #pragma omp flush - return (info) ; -} - -//------------------------------------------------------------------------------ -// GxB_Serialized_get_SIZE -//------------------------------------------------------------------------------ - -GrB_Info GxB_Serialized_get_SIZE -( - const void * blob, - size_t * value, - GrB_Field field, - size_t blob_size -) -{ - - //-------------------------------------------------------------------------- - // check inputs - //-------------------------------------------------------------------------- - - GB_WHERE1 ("GxB_Serialized_get_SIZE (blob, value, field, blobsize)") ; - GB_RETURN_IF_NULL (blob) ; - GB_RETURN_IF_NULL (value) ; - - //-------------------------------------------------------------------------- - // read the blob - //-------------------------------------------------------------------------- - - char type_name [GxB_MAX_NAME_LEN], *user_name, *eltype_string ; - int32_t sparsity_status, sparsity_ctrl, type_code, storage ; - double hyper_sw, bitmap_sw ; - - GrB_Info info = GB_blob_header_get (type_name, &type_code, &sparsity_status, - &sparsity_ctrl, &hyper_sw, &bitmap_sw, &storage, - &user_name, &eltype_string, blob, blob_size) ; - - //-------------------------------------------------------------------------- - // get the field - //-------------------------------------------------------------------------- - - const char *name ; - - if (info == GrB_SUCCESS) - { - switch (field) - { - - case GrB_NAME : - (*value) = (user_name == NULL) ? 1 : (strlen (user_name) + 1) ; - break ; - - case GxB_JIT_C_NAME : - (*value) = strlen (type_name) + 1 ; - break ; - - case GrB_ELTYPE_STRING : - (*value) = (eltype_string == NULL) ? - 1 : (strlen (eltype_string) + 1) ; - break ; - - default : - return (GrB_INVALID_VALUE) ; - } - } - #pragma omp flush - return (info) ; -} - -//------------------------------------------------------------------------------ -// GxB_Serialized_get_VOID -//------------------------------------------------------------------------------ - -GrB_Info GxB_Serialized_get_VOID -( - const void * blob, - void * value, - GrB_Field field, - size_t blob_size -) -{ - return (GrB_INVALID_VALUE) ; -} - diff --git a/Source/GxB_Type_from_name.c b/Source/GxB_Type_from_name.c index 57d02ed6d5..407e9187fc 100644 --- a/Source/GxB_Type_from_name.c +++ b/Source/GxB_Type_from_name.c @@ -7,10 +7,10 @@ //------------------------------------------------------------------------------ -// GxB_Type_from_name returns the built-in GrB_Type corresponding to the C name -// of the type as a string, or the GraphBLAS name of the type. For -// user-defined types, type is returned as NULL. This is not an error -// condition. This allows the user to write code such as this: +// GxB_Type_from_name returns the built-in GrB_Type corresponding to the +// C name of the type as a string. For user-defined types, type is returned +// as NULL. This is not an error condition. This allows the user to write +// code such as this: /* typedef struct { double x ; char stuff [16] ; } myfirsttype ; @@ -25,14 +25,11 @@ // ... create a matrix A of some built-in or user-defined type // later on, to query the type of A: - GrB_Scalar tsize ; - GrB_Scalar_new (&tsize, GrB_UINT32) ; - GrB_get (type, tsize, GrB_SIZE) ; // works for any type size_t typesize ; - GrB_Scalar_extractElement (&typesize, tsize) ; + GxB_Type_size (&typesize, type) ; // works for any type GrB_Type atype ; char atype_name [GxB_MAX_NAME_LEN] ; - GrB_get (A, atype_name, GrB_NAME) ; + GxB_Matrix_type_name (atype_name, A) ; GxB_Type_from_name (&atype, atype_name) ; if (atype == NULL) { @@ -60,8 +57,8 @@ // As a result, the GxB_Matrix_type function that appears in SuiteSparse // GraphBLAS has been declared "historical" and its use is discouraged. It -// won't be removed, to preserve backward compatibility, but it is removed from -// the user guide. Use the string-based type mechanism instead. +// won't be removed, to preserve backward compatibility, but it will eventually +// removed from the user guide. Use the string-based type mechanism instead. #include "GB.h" @@ -84,23 +81,22 @@ GrB_Info GxB_Type_from_name // return the GrB_Type from a name //-------------------------------------------------------------------------- #define MATCH(s) (strncmp (type_name, s, GxB_MAX_NAME_LEN) == 0) - #define MATCH2(s1,s2) MATCH (s1) || MATCH (s2) - - if (MATCH2 ("bool" , "GrB_BOOL" )) (*type) = GrB_BOOL ; - else if (MATCH2 ("int8_t" , "GrB_INT8" )) (*type) = GrB_INT8 ; - else if (MATCH2 ("int16_t" , "GrB_INT16" )) (*type) = GrB_INT16 ; - else if (MATCH2 ("int32_t" , "GrB_INT32" )) (*type) = GrB_INT32 ; - else if (MATCH2 ("int64_t" , "GrB_INT64" )) (*type) = GrB_INT64 ; - else if (MATCH2 ("uint8_t" , "GrB_UINT8" )) (*type) = GrB_UINT8 ; - else if (MATCH2 ("uint16_t" , "GrB_UINT16")) (*type) = GrB_UINT16 ; - else if (MATCH2 ("uint32_t" , "GrB_UINT32")) (*type) = GrB_UINT32 ; - else if (MATCH2 ("uint64_t" , "GrB_UINT64")) (*type) = GrB_UINT64 ; - else if (MATCH2 ("float" , "GrB_FP32" )) (*type) = GrB_FP32 ; - else if (MATCH2 ("double" , "GrB_FP64" )) (*type) = GrB_FP64 ; - else if (MATCH2 ("float complex" , "GxB_FC32_t")) (*type) = GxB_FC32 ; - else if (MATCH ("float _Complex" )) (*type) = GxB_FC32 ; - else if (MATCH2 ("double complex", "GxB_FC64_t")) (*type) = GxB_FC64 ; - else if (MATCH ("double _Complex" )) (*type) = GxB_FC64 ; + + if (MATCH ("bool" )) (*type) = GrB_BOOL ; + else if (MATCH ("int8_t" )) (*type) = GrB_INT8 ; + else if (MATCH ("int16_t" )) (*type) = GrB_INT16 ; + else if (MATCH ("int32_t" )) (*type) = GrB_INT32 ; + else if (MATCH ("int64_t" )) (*type) = GrB_INT64 ; + else if (MATCH ("uint8_t" )) (*type) = GrB_UINT8 ; + else if (MATCH ("uint16_t" )) (*type) = GrB_UINT16 ; + else if (MATCH ("uint32_t" )) (*type) = GrB_UINT32 ; + else if (MATCH ("uint64_t" )) (*type) = GrB_UINT64 ; + else if (MATCH ("float" )) (*type) = GrB_FP32 ; + else if (MATCH ("double" )) (*type) = GrB_FP64 ; + else if (MATCH ("float complex" )) (*type) = GxB_FC32 ; + else if (MATCH ("GxB_FC32_t" )) (*type) = GxB_FC32 ; + else if (MATCH ("double complex")) (*type) = GxB_FC64 ; + else if (MATCH ("GxB_FC64_t" )) (*type) = GxB_FC64 ; else { // This is not an error. Returning type as NULL means that A has a diff --git a/Source/GxB_Type_new.c b/Source/GxB_Type_new.c index eeff523ad2..3afd386e2b 100644 --- a/Source/GxB_Type_new.c +++ b/Source/GxB_Type_new.c @@ -40,7 +40,7 @@ GrB_Info GxB_Type_new ( GrB_Type *type, // handle of user type to create size_t sizeof_type, // size of the user type - const char *type_name, // name of the user type + const char *type_name, // name of the user type, or "sizeof (ctype)" const char *type_defn // typedef of the C type (any length) ) { @@ -76,8 +76,6 @@ GrB_Info GxB_Type_new // initialize the type t->header_size = header_size ; - t->user_name = NULL ; - t->user_name_size = 0 ; t->size = sizeof_type ; t->code = GB_UDT_code ; // user-defined type memset (t->name, 0, GxB_MAX_NAME_LEN) ; // no name yet @@ -85,13 +83,46 @@ GrB_Info GxB_Type_new t->defn_size = 0 ; //-------------------------------------------------------------------------- - // get the name + // get the name: as a type_name or "sizeof (type_name)" //-------------------------------------------------------------------------- if (type_name != NULL) { // copy the type_name into the working name - strncpy (t->name, type_name, GxB_MAX_NAME_LEN-1) ; + char working [GxB_MAX_NAME_LEN] ; + memset (working, 0, GxB_MAX_NAME_LEN) ; + strncpy (working, type_name, GxB_MAX_NAME_LEN-1) ; + + // look for "sizeof" in the name + char *p = NULL ; + p = strstr (working, "sizeof") ; + if (p != NULL) + { + // "sizeof" appears in the input string, advance past it + p += 6 ; + + // find leading "(" if it appears, and advance to one char past it + char *p2 = strstr (p, "(") ; + if (p2 != NULL) p = p2 + 1 ; + + // find trailing ")" if it appears, and delete it + p2 = strstr (p, ")") ; + if (p2 != NULL) *p2 = '\0' ; + + // p now contains the final name, copy it to the output name + strncpy (t->name, p, GxB_MAX_NAME_LEN-1) ; + } + else + { + // "sizeof" does not appear, take the input type_name as-is + memcpy (t->name, working, GxB_MAX_NAME_LEN) ; + } + } + else + { + // no type name, so give it a generic name, with the size of type only + snprintf (t->name, GxB_MAX_NAME_LEN-1, "user_type_of_size_" GBu, + (uint64_t) sizeof_type) ; } // ensure t->name is null-terminated @@ -101,7 +132,7 @@ GrB_Info GxB_Type_new t->name_len = (int32_t) strlen (t->name) ; // type can be JIT'd only if it has a name and defn t->hash = GB_jitifyer_hash (t->name, t->name_len, - (t->name_len > 0 && type_defn != NULL)) ; + (type_name != NULL && type_defn != NULL)) ; //-------------------------------------------------------------------------- // get the typedef, if present diff --git a/Source/GxB_Vector_serialize.c b/Source/GxB_Vector_serialize.c index ab8de201f4..ef00a5772b 100644 --- a/Source/GxB_Vector_serialize.c +++ b/Source/GxB_Vector_serialize.c @@ -12,7 +12,7 @@ // This method is similar to GxB_Matrix_serialize. Like that method, it // allocates the blob itself, and hands over the allocated space to the user // application. The blob must be freed by the same free function passed in to -// GxB_init, or by the C11 free() if GrB_init was used. On input, the +// GxB_init, or by the ANSI C11 free() if GrB_init was used. On input, the // blob_size need not be initialized; it is returned as the size of the blob as // allocated. diff --git a/Source/GxB_deserialize_type_name.c b/Source/GxB_deserialize_type_name.c index 29236ba436..9a69a535a7 100644 --- a/Source/GxB_deserialize_type_name.c +++ b/Source/GxB_deserialize_type_name.c @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------ -// GxB_deserialize_type_name: return the JIT C name of the type of a blob +// GxB_deserialize_type_name: return the name of a type //------------------------------------------------------------------------------ // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. @@ -10,16 +10,13 @@ #include "GB.h" #include "GB_serialize.h" -// This method is historical; use GrB_get instead. - -// GxB_deserialize_type_name extracts the JIT C type_name of the GrB_Type of -// the GrB_Matrix or GrB_Vector held in a serialized blob. On input, type_name +// GxB_deserialize_type_name extracts the type_name of the GrB_Type of the +// GrB_Matrix or GrB_Vector held in a serialized blob. On input, type_name // must point to a user-owned char array of size at least GxB_MAX_NAME_LEN (it // must not point into the blob itself). On output, type_name will contain a // null-terminated string with the corresponding C type name. If the blob // holds a matrix of a built-in type, the name is returned as "bool" for -// GrB_BOOL, "uint8_t" for GrB_UINT8, "float complex" for GxB_FC32, etc. If -// the type is user-defined, the GxB_JIT_C_NAME of the type is returned. +// GrB_BOOL, "uint8_t" for GrB_UINT8, "float complex" for GxB_FC32, etc. GrB_Info GxB_deserialize_type_name // return the type name of a blob ( diff --git a/Source/GxB_init.c b/Source/GxB_init.c index 338e6f5855..e085cee3fb 100644 --- a/Source/GxB_init.c +++ b/Source/GxB_init.c @@ -19,7 +19,7 @@ // Examples: // -// To use GraphBLAS with the C11 functions (or to another library +// To use GraphBLAS with the ANSI C11 functions (or to another library // linked in that replaces them): // // // either use: diff --git a/Source/Shared/GB_Operator.h b/Source/Shared/GB_Operator.h index ea197fd881..50f09e317a 100644 --- a/Source/Shared/GB_Operator.h +++ b/Source/Shared/GB_Operator.h @@ -12,10 +12,6 @@ int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 - // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// GrB_Type ztype ; // type of z GrB_Type xtype ; // type of x @@ -27,8 +23,8 @@ GxB_index_unary_function idxunop_function ; GxB_binary_function binop_function ; - char name [GxB_MAX_NAME_LEN] ; // JIT C name of the operator - int32_t name_len ; // length of JIT C name; 0 for builtin + char name [GxB_MAX_NAME_LEN] ; // name of the operator + int32_t name_len ; // length of user-defined name; 0 for builtin GB_Opcode opcode ; // operator opcode char *defn ; // function definition size_t defn_size ; // allocated size of the definition diff --git a/Source/Shared/GB_assign_shared_definitions.h b/Source/Shared/GB_assign_shared_definitions.h index ae5ff10df6..c9dc7e79b4 100644 --- a/Source/Shared/GB_assign_shared_definitions.h +++ b/Source/Shared/GB_assign_shared_definitions.h @@ -82,10 +82,10 @@ #define GB_GET_C_HYPER_HASH \ GB_OK (GB_hyper_hash_build (C, Werk)) ; \ - const int64_t *restrict C_Yp = (C->Y == NULL) ? NULL : C->Y->p ; \ - const int64_t *restrict C_Yi = (C->Y == NULL) ? NULL : C->Y->i ; \ - const int64_t *restrict C_Yx = (C->Y == NULL) ? NULL : C->Y->x ; \ - const int64_t C_hash_bits = (C->Y == NULL) ? 0 : (C->Y->vdim - 1) ; + const int64_t *restrict C_Yp = (C_is_hyper) ? C->Y->p : NULL ; \ + const int64_t *restrict C_Yi = (C_is_hyper) ? C->Y->i : NULL ; \ + const int64_t *restrict C_Yx = (C_is_hyper) ? C->Y->x : NULL ; \ + const int64_t C_hash_bits = (C_is_hyper) ? (C->Y->vdim - 1) : 0 ; //------------------------------------------------------------------------------ // GB_GET_MASK: get the mask matrix M @@ -111,10 +111,10 @@ #define GB_GET_MASK_HYPER_HASH \ GB_OK (GB_hyper_hash_build (M, Werk)) ; \ - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; \ - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; \ - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; \ - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = (M_is_hyper) ? M->Y->p : NULL ; \ + const int64_t *restrict M_Yi = (M_is_hyper) ? M->Y->i : NULL ; \ + const int64_t *restrict M_Yx = (M_is_hyper) ? M->Y->x : NULL ; \ + const int64_t M_hash_bits = (M_is_hyper) ? (M->Y->vdim - 1) : 0 ; //------------------------------------------------------------------------------ // GB_GET_ACCUM: get the accumulator op and its related typecasting functions @@ -220,10 +220,10 @@ const int64_t Svlen = S->vlen ; \ const int64_t Snvec = S->nvec ; \ const bool S_is_hyper = GB_IS_HYPERSPARSE (S) ; \ - const int64_t *restrict S_Yp = (S->Y == NULL) ? NULL : S->Y->p ; \ - const int64_t *restrict S_Yi = (S->Y == NULL) ? NULL : S->Y->i ; \ - const int64_t *restrict S_Yx = (S->Y == NULL) ? NULL : S->Y->x ; \ - const int64_t S_hash_bits = (S->Y == NULL) ? 0 : (S->Y->vdim - 1) ; + const int64_t *restrict S_Yp = (S_is_hyper) ? S->Y->p : NULL ; \ + const int64_t *restrict S_Yi = (S_is_hyper) ? S->Y->i : NULL ; \ + const int64_t *restrict S_Yx = (S_is_hyper) ? S->Y->x : NULL ; \ + const int64_t S_hash_bits = (S_is_hyper) ? (S->Y->vdim - 1) : 0 ; //------------------------------------------------------------------------------ // basic actions @@ -1277,8 +1277,8 @@ { \ if (X ## _is_hyper) \ { \ - GB_hyper_hash_lookup (X ## h, X ## nvec, X ## p, X ## _Yp, \ - X ## _Yi, X ## _Yx, X ## _hash_bits, j, &pX_start, &pX_end) ; \ + GB_hyper_hash_lookup (X ## p, X ## _Yp, X ## _Yi, X ## _Yx, \ + X ## _hash_bits, j, &pX_start, &pX_end) ; \ } \ else \ { \ diff --git a/Source/Shared/GB_complex.h b/Source/Shared/GB_complex.h index d201c05913..45ca58e2f0 100644 --- a/Source/Shared/GB_complex.h +++ b/Source/Shared/GB_complex.h @@ -153,7 +153,7 @@ #else //-------------------------------------------------------------------------- - // C11 + // ANSI C11 //-------------------------------------------------------------------------- #define GB_crealf(x) crealf(x) diff --git a/Source/Shared/GB_hyper_hash_lookup.h b/Source/Shared/GB_hyper_hash_lookup.h index c32640cb1d..682d7e2115 100644 --- a/Source/Shared/GB_hyper_hash_lookup.h +++ b/Source/Shared/GB_hyper_hash_lookup.h @@ -15,9 +15,6 @@ GB_STATIC_INLINE int64_t GB_hyper_hash_lookup // k if j==Ah[k]; -1 if not found ( - // new inputs, not modified - const int64_t *restrict Ah, // A->h [0..A->nvec-1]: list of vectors - const int64_t anvec, // input, not modified const int64_t *restrict Ap, // A->p [0..A->nvec]: pointers to vectors const int64_t *restrict Yp, // A->Y->p @@ -25,79 +22,57 @@ GB_STATIC_INLINE int64_t GB_hyper_hash_lookup // k if j==Ah[k]; -1 if not found const int64_t *restrict Yx, // A->Y->x const int64_t hash_bits, // A->Y->vdim-1, which is hash table size-1 const int64_t j, // find j in Ah [0..anvec-1], using A->Y - // output int64_t *restrict pstart, // start of vector: Ap [k] int64_t *restrict pend // end of vector: Ap [k+1] ) { - bool found = false ; - int64_t k ; - - if (Yp == NULL) - { + //-------------------------------------------------------------------------- + // determine the hash bucket that would contain vector j + //-------------------------------------------------------------------------- - //---------------------------------------------------------------------- - // no hyper_hash constructed - //---------------------------------------------------------------------- + const int64_t jhash = GB_HASHF2 (j, hash_bits) ; - // binary search of Ah [0...A->nvec-1] for the value j - k = 0 ; - int64_t pright = anvec - 1 ; - GB_BINARY_SEARCH (j, Ah, k, pright, found) ; + //-------------------------------------------------------------------------- + // search for j in the jhash bucket: Yi [Yp [jhash] ... Yp [jhash+1]-1] + //-------------------------------------------------------------------------- + const int64_t ypstart = Yp [jhash] ; + const int64_t ypend = Yp [jhash+1] ; + int64_t k = -1 ; + if ((ypend - ypstart) > 256) + { + // The hash bucket jhash has over 256 entries, which is a very high + // number of collisions. The load factor of the hash table ranges from + // 2 to 4. Do a binary search as a fallback. + bool found ; + int64_t p = ypstart ; + int64_t pright = ypend - 1 ; + GB_BINARY_SEARCH (j, Yi, p, pright, found) ; + if (found) + { + k = Yx [p] ; + } } else { - - //---------------------------------------------------------------------- - // using the hyper_hash - //---------------------------------------------------------------------- - - // determine the hash bucket that would contain vector j - const int64_t jhash = GB_HASHF2 (j, hash_bits) ; - - //---------------------------------------------------------------------- - // search for j in the jhash bucket: Yi [Yp [jhash] ... Yp [jhash+1]-1] - //---------------------------------------------------------------------- - - const int64_t ypstart = Yp [jhash] ; - const int64_t ypend = Yp [jhash+1] ; - k = -1 ; - if ((ypend - ypstart) > 256) + // Linear-time search for j in the jhash bucket. + for (int64_t p = ypstart ; p < ypend ; p++) { - // The hash bucket jhash has over 256 entries, which is a very high - // number of collisions. The load factor of the hash table ranges - // from 2 to 4. Do a binary search as a fallback. - int64_t p = ypstart ; - int64_t pright = ypend - 1 ; - GB_BINARY_SEARCH (j, Yi, p, pright, found) ; - if (found) + if (j == Yi [p]) { + // found: j = Ah [k] where k is given by k = Yx [p] k = Yx [p] ; + break ; } } - else - { - // Linear-time search for j in the jhash bucket. - for (int64_t p = ypstart ; p < ypend ; p++) - { - if (j == Yi [p]) - { - // found: j = Ah [k] where k is given by k = Yx [p] - k = Yx [p] ; - break ; - } - } - found = (k >= 0) ; - } } //-------------------------------------------------------------------------- // if found, return the start and end of A(:,j) //-------------------------------------------------------------------------- - if (found) + if (k >= 0) { // found: j == Ah [k], get the vector A(:,j) (*pstart) = Ap [k] ; @@ -106,7 +81,6 @@ GB_STATIC_INLINE int64_t GB_hyper_hash_lookup // k if j==Ah[k]; -1 if not found else { // not found: j is not in the hyperlist Ah [0..anvec-1] - k = -1 ; (*pstart) = -1 ; (*pend ) = -1 ; } diff --git a/Source/Shared/GB_matrix.h b/Source/Shared/GB_matrix.h index 26b5e0518e..543f95f46f 100644 --- a/Source/Shared/GB_matrix.h +++ b/Source/Shared/GB_matrix.h @@ -9,11 +9,10 @@ // The GrB_Matrix and GrB_Vector objects are different names for the same // content. A GrB_Vector is held as an m-by-1 non-hypersparse CSC matrix. -// This file is #include'd in GB_opaque.h to define the GB_Matrix_opaque, -// GB_Vector_opaque, and GB_Scalar_opaque structs. It would be cleaner to -// define just one opaque struct, and then GrB_Matrix, GrB_Vector, GrB_Scalar -// would be typedef'd as pointers to the same struct, but then the compiler -// gets confused with _Generic(x). +// This file is #include'd in GB_opaque.h to define the GB_Matrix_opaque and +// GB_Vector_opaque structs. It would be cleaner to define just one opaque +// struct, and then GrB_Matrix and GrB_Vector would be typedef'd as pointers to +// the same struct, but then the compiler gets confused with Generic(x). // For a GrB_Vector object, as an m-by-1 non-hypersparse CSC matrix: // bool is_csc ; // always true @@ -28,18 +27,13 @@ // basic information: magic, error logger, and type //------------------------------------------------------------------------------ -// The first four items exactly match the first four items of nearly all -// GraphBLAS objects. The first 6 match the GrB_Descriptor struct. +// The first four items exactly match the first four items in the +// GrB_Descriptor struct. int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 -// ---------------------// -char *user_name ; // user name for GrB_get/GrB_set -size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set -// ---------------------// char *logger ; // error logger string size_t logger_size ; // size of the malloc'd block for logger, or 0 -// ---------------------// // The remaining items are specific the GrB_Matrix, GrB_Vector and GrB_Scalar // structs, and do not appear in the GrB_Descriptor struct: diff --git a/Source/Shared/GB_opaque.h b/Source/Shared/GB_opaque.h index 6c175431da..884536f00d 100644 --- a/Source/Shared/GB_opaque.h +++ b/Source/Shared/GB_opaque.h @@ -107,8 +107,8 @@ typedef enum GB_ERF_unop_code = 35, // z = erf (x) GB_ERFC_unop_code = 36, // z = erfc (x) GB_CBRT_unop_code = 37, // z = cbrt (x) - GB_FREXPX_unop_code = 38, // z = frexpx (x), mantissa of C11 frexp - GB_FREXPE_unop_code = 39, // z = frexpe (x), exponent of C11 frexp + GB_FREXPX_unop_code = 38, // z = frexpx (x), mantissa of ANSI C11 frexp + GB_FREXPE_unop_code = 39, // z = frexpe (x), exponent of ANSI C11 frexp //-------------------------------------------------------------------------- // unary operators for complex types only @@ -358,21 +358,15 @@ GB_Opcode ; // when A->p array is allocated but not initialized. #define GB_MAGIC2 0x7265745f786f62ULL -// Nearly all GraphBLAS objects contain the same first 4 items (except for -// GB_Global_opaque, which has just the first 2). - struct GB_Type_opaque // content of GrB_Type { int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// size_t size ; // size of the type GB_Type_code code ; // the type code - int32_t name_len ; // length of JIT C name; 0 for builtin - char name [GxB_MAX_NAME_LEN] ; // JIT C name of the type + int32_t name_len ; // length of user-defined name; 0 for builtin + char name [GxB_MAX_NAME_LEN] ; // name of the type char *defn ; // type definition size_t defn_size ; // allocated size of the definition uint64_t hash ; // if 0, type is builtin. @@ -413,9 +407,6 @@ struct GB_Monoid_opaque // content of GrB_Monoid int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// GrB_BinaryOp op ; // binary operator of the monoid void *identity ; // identity of the monoid; type is op->ztype void *terminal ; // early-exit (NULL if no value); type is op->ztype @@ -430,29 +421,22 @@ struct GB_Semiring_opaque // content of GrB_Semiring int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// GrB_Monoid add ; // add operator of the semiring GrB_BinaryOp multiply ; // multiply operator of the semiring - char *name ; // name of the semiring; NULL for builtin - int32_t name_len ; // length of name; 0 for builtin + char *name ; // name of the type; NULL for builtin + int32_t name_len ; // length of user-defined name; 0 for builtin size_t name_size ; // allocated size of the name uint64_t hash ; // if 0, semiring uses only builtin ops and types } ; struct GB_Descriptor_opaque // content of GrB_Descriptor { - // first 6 items exactly match GrB_Matrix, GrB_Vector, GrB_Scalar structs: + // first 4 items exactly match GrB_Matrix, GrB_Vector, GrB_Scalar structs: int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// char *logger ; // error logger string size_t logger_size ; // size of the malloc'd block for logger, or 0 - // ---------------------// // specific to the descriptor struct: GrB_Desc_Value out ; // output descriptor GrB_Desc_Value mask ; // mask descriptor @@ -469,9 +453,6 @@ struct GB_Context_opaque // content of GxB_Context int64_t magic ; // for detecting uninitialized objects size_t header_size ; // size of the malloc'd block for this struct, or 0 // ---------------------// - char *user_name ; // user name for GrB_get/GrB_set - size_t user_name_size ; // allocated size of user_name for GrB_get/GrB_set - // ---------------------// // OpenMP thread(s): double chunk ; // chunk size for # of threads for small problems int nthreads_max ; // max # threads to use in this call to GraphBLAS diff --git a/Source/Shared/GxB_complex.h b/Source/Shared/GxB_complex.h index 9ff0394eb0..173ab3c90c 100644 --- a/Source/Shared/GxB_complex.h +++ b/Source/Shared/GxB_complex.h @@ -30,13 +30,13 @@ #else - // C11 complex types + // ANSI C11 complex types #include #undef I typedef float _Complex GxB_FC32_t ; typedef double _Complex GxB_FC64_t ; #if (defined (CMPLX) && defined (CMPLXF)) - // use the C11 CMPLX and CMPLXF macros + // use the ANSI C11 CMPLX and CMPLXF macros #define GxB_CMPLX(r,i) CMPLX (r,i) #define GxB_CMPLXF(r,i) CMPLXF (r,i) #define GB_HAS_CMPLX_MACROS 1 diff --git a/Source/Template/GB_AxB_dot3_meta.c b/Source/Template/GB_AxB_dot3_meta.c index 7308d4b34d..e1a8c3c98a 100644 --- a/Source/Template/GB_AxB_dot3_meta.c +++ b/Source/Template/GB_AxB_dot3_meta.c @@ -106,15 +106,17 @@ const bool A_iso = A->iso ; #endif - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; - - const int64_t *restrict B_Yp = (B->Y == NULL) ? NULL : B->Y->p ; - const int64_t *restrict B_Yi = (B->Y == NULL) ? NULL : B->Y->i ; - const int64_t *restrict B_Yx = (B->Y == NULL) ? NULL : B->Y->x ; - const int64_t B_hash_bits = (B->Y == NULL) ? 0 : (B->Y->vdim - 1) ; + const GrB_Matrix A_Y = A->Y ; + const int64_t *restrict A_Yp = (A_is_hyper) ? A_Y->p : NULL ; + const int64_t *restrict A_Yi = (A_is_hyper) ? A_Y->i : NULL ; + const int64_t *restrict A_Yx = (A_is_hyper) ? A_Y->x : NULL ; + const int64_t A_hash_bits = (A_is_hyper) ? (A_Y->vdim - 1) : 0 ; + + const GrB_Matrix B_Y = B->Y ; + const int64_t *restrict B_Yp = (B_is_hyper) ? B_Y->p : NULL ; + const int64_t *restrict B_Yi = (B_is_hyper) ? B_Y->i : NULL ; + const int64_t *restrict B_Yx = (B_is_hyper) ? B_Y->x : NULL ; + const int64_t B_hash_bits = (B_is_hyper) ? (B_Y->vdim - 1) : 0 ; #if !GB_A_IS_PATTERN const GB_A_TYPE *restrict Ax = (GB_A_TYPE *) A->x ; diff --git a/Source/Template/GB_AxB_dot3_phase1_template.c b/Source/Template/GB_AxB_dot3_phase1_template.c index 2cd571526d..f02b54cff2 100644 --- a/Source/Template/GB_AxB_dot3_phase1_template.c +++ b/Source/Template/GB_AxB_dot3_phase1_template.c @@ -57,8 +57,8 @@ #if GB_B_IS_HYPER // B is hyper: find B(:,j) using the B->Y hyper hash int64_t pB_start, pB_end ; - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, - B_hash_bits, j, &pB_start, &pB_end) ; + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + j, &pB_start, &pB_end) ; #elif GB_B_IS_SPARSE // B is sparse const int64_t pB_start = Bp [j] ; @@ -106,8 +106,8 @@ #if GB_A_IS_HYPER // A is hyper: find A(:,i) using the A->Y hyper hash int64_t pA, pA_end ; - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, - A_hash_bits, i, &pA, &pA_end) ; + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + i, &pA, &pA_end) ; const int64_t ainz = pA_end - pA ; work += GB_IMIN (ainz, bjnz) ; #elif GB_A_IS_SPARSE diff --git a/Source/Template/GB_AxB_dot3_template.c b/Source/Template/GB_AxB_dot3_template.c index d9cdb407d3..e4b41c7b92 100644 --- a/Source/Template/GB_AxB_dot3_template.c +++ b/Source/Template/GB_AxB_dot3_template.c @@ -72,8 +72,8 @@ #if GB_B_IS_HYPER // B is hyper: find B(:,j) using the B->Y hyper hash int64_t pB_start, pB_end ; - GB_hyper_hash_lookup (Bh, bnvec, Bp, B_Yp, B_Yi, B_Yx, - B_hash_bits, j, &pB_start, &pB_end) ; + GB_hyper_hash_lookup (Bp, B_Yp, B_Yi, B_Yx, B_hash_bits, + j, &pB_start, &pB_end) ; #elif GB_B_IS_SPARSE // B is sparse const int64_t pB_start = Bp [j] ; @@ -136,8 +136,8 @@ #if GB_A_IS_HYPER // A is hyper: find A(:,i) using the A->Y hyper hash int64_t pA, pA_end ; - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, - A_hash_bits, i, &pA, &pA_end) ; + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, + i, &pA, &pA_end) ; const int64_t ainz = pA_end - pA ; if (ainz > 0) #elif GB_A_IS_SPARSE diff --git a/Source/Template/GB_AxB_saxpy3_template.c b/Source/Template/GB_AxB_saxpy3_template.c index cac0998879..0775683291 100644 --- a/Source/Template/GB_AxB_saxpy3_template.c +++ b/Source/Template/GB_AxB_saxpy3_template.c @@ -68,10 +68,17 @@ const bool A_ok_for_binary_search = ((A_is_sparse || A_is_hyper) && !A_jumbled) ; - const int64_t *restrict A_Yp = (A->Y == NULL) ? NULL : A->Y->p ; - const int64_t *restrict A_Yi = (A->Y == NULL) ? NULL : A->Y->i ; - const int64_t *restrict A_Yx = (A->Y == NULL) ? NULL : A->Y->x ; - const int64_t A_hash_bits = (A->Y == NULL) ? 0 : (A->Y->vdim - 1) ; + const int64_t *restrict A_Yp = NULL ; + const int64_t *restrict A_Yi = NULL ; + const int64_t *restrict A_Yx = NULL ; + int64_t A_hash_bits = 0 ; + if (A_is_hyper) + { + A_Yp = A->Y->p ; + A_Yi = A->Y->i ; + A_Yx = A->Y->x ; + A_hash_bits = A->Y->vdim - 1 ; + } #if ( !GB_NO_MASK ) const int64_t *restrict Mp = M->p ; @@ -91,10 +98,18 @@ int64_t mnvec = M->nvec ; int64_t mvlen = M->vlen ; // get the M hyper_hash - const int64_t *restrict M_Yp = (M->Y == NULL) ? NULL : M->Y->p ; - const int64_t *restrict M_Yi = (M->Y == NULL) ? NULL : M->Y->i ; - const int64_t *restrict M_Yx = (M->Y == NULL) ? NULL : M->Y->x ; - const int64_t M_hash_bits = (M->Y == NULL) ? 0 : (M->Y->vdim - 1) ; + const int64_t *restrict M_Yp = NULL ; + const int64_t *restrict M_Yi = NULL ; + const int64_t *restrict M_Yx = NULL ; + int64_t M_hash_bits = 0 ; + if (M_is_hyper) + { + // mask is present, and hypersparse + M_Yp = M->Y->p ; + M_Yi = M->Y->i ; + M_Yx = M->Y->x ; + M_hash_bits = M->Y->vdim - 1 ; + } #endif #if !GB_A_IS_PATTERN diff --git a/Source/Template/GB_AxB_saxpy3_template.h b/Source/Template/GB_AxB_saxpy3_template.h index 869dc51921..d1b9a8ef89 100644 --- a/Source/Template/GB_AxB_saxpy3_template.h +++ b/Source/Template/GB_AxB_saxpy3_template.h @@ -24,7 +24,7 @@ if (M_is_hyper) \ { \ /* M is hypersparse: find M(:,j) in the M->Y hyper_hash */ \ - GB_hyper_hash_lookup (Mh, mnvec, Mp, M_Yp, M_Yi, M_Yx, M_hash_bits, \ + GB_hyper_hash_lookup (Mp, M_Yp, M_Yi, M_Yx, M_hash_bits, \ GBH_B (Bh, kk), &pM_start, &pM_end) ; \ } \ else \ @@ -229,7 +229,7 @@ if (A_is_hyper) \ { \ /* A is hypersparse: find A(:,k) in the A->Y hyper_hash */ \ - GB_hyper_hash_lookup (Ah, anvec, Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, \ + GB_hyper_hash_lookup (Ap, A_Yp, A_Yi, A_Yx, A_hash_bits, \ k, &pA_start, &pA_end) ; \ } \ else \ diff --git a/Source/Template/GB_Template.h b/Source/Template/GB_Template.h index 2efcf4a5a1..568edfd259 100644 --- a/Source/Template/GB_Template.h +++ b/Source/Template/GB_Template.h @@ -32,7 +32,7 @@ // Intentionally shadow the built-in "restrict" keyword. See GraphBLAS.h for // the definition of GB_restrict. It becomes empty for C++, and "__restrict" -// for MS Visual Studio. Otherwise, GB_restrict is just "restrict" on C11 +// for MS Visual Studio. Otherwise, GB_restrict is just "restrict" on ANSI C11 // compliant compilers. I prefer to use the "restrict" keyword to make the // code readable. This #define is a patch for compilers that don't support it: diff --git a/Source/Template/GB_atomics.h b/Source/Template/GB_atomics.h index 0feb5fa300..1b846f2ce7 100644 --- a/Source/Template/GB_atomics.h +++ b/Source/Template/GB_atomics.h @@ -10,7 +10,7 @@ // All atomic operations used by SuiteSparse:GraphBLAS appear in this file. // OpenMP 4.0 or later is preferred. -// These atomic operations assume either an C11 compiler that supports +// These atomic operations assume either an ANSI C11 compiler that supports // OpenMP 3.1 or later, or Microsoft Visual Studio on 64-bit Windows (which // only supports OpenMP 2.0). SuiteSparse:GraphBLAS is not supported on 32-bit // Windows. @@ -62,7 +62,12 @@ // OpenMP 4.0 or later) with the "update" clause. For MS Visual Studio, the // "update" clause is removed since it supports OpenMP 2.0. -#if ( _OPENMP >= 201307 ) +#if (! defined (_OPENMP)) || (_OPENMP < 199810) + + // no OpenMP at all + #define GB_ATOMIC_UPDATE + +#elif ( _OPENMP >= 201307 ) // OpenMP 4.0 or later: seq_cst added #define GB_ATOMIC_UPDATE GB_PRAGMA (omp atomic seq_cst update) @@ -72,16 +77,11 @@ // OpenMP 3.1: no seq_cst keyword #define GB_ATOMIC_UPDATE GB_PRAGMA (omp atomic update) -#elif ( _OPENMP >= 199810 ) +#else // ( _OPENMP >= 199810 ) // OpenMP 1.0 to 3.0: no optional clauses, "update" is assumed #define GB_ATOMIC_UPDATE GB_PRAGMA (omp atomic) -#else - - // no OpenMP at all - #define GB_ATOMIC_UPDATE - #endif //------------------------------------------------------------------------------ @@ -100,9 +100,10 @@ // is no need for atomic reads/writes when compiling GraphBLAS on Windows // with MS Visual Studio. -#if GBX86 +#if GBX86 || ! defined (_OPENMP) || (_OPENMP < 201107 ) - // x86_64: no atomic read/write is needed. + // For x86_64, no atomic read/write is needed, + // or OpenMP 3.0 or earlier, or no OpenMP at all #define GB_ATOMIC_READ #define GB_ATOMIC_WRITE @@ -112,18 +113,12 @@ #define GB_ATOMIC_READ GB_PRAGMA (omp atomic seq_cst read) #define GB_ATOMIC_WRITE GB_PRAGMA (omp atomic seq_cst write) -#elif ( _OPENMP >= 201107 ) +#else // ( _OPENMP >= 201107 ) // OpenMP 3.1 and later have atomic reads and writes, but no seq_cst clause #define GB_ATOMIC_READ GB_PRAGMA (omp atomic read) #define GB_ATOMIC_WRITE GB_PRAGMA (omp atomic write) -#else - - // OpenMP 3.0 or earlier, or no OpenMP at all - #define GB_ATOMIC_READ - #define GB_ATOMIC_WRITE - #endif //------------------------------------------------------------------------------ @@ -173,7 +168,12 @@ // https://docs.microsoft.com/en-us/cpp/intrinsics/interlockedexchange-intrinsic-functions // https://docs.microsoft.com/en-us/cpp/intrinsics/interlockedor-intrinsic-functions -#if ( _OPENMP >= 201307 ) +#if (! defined (_OPENMP)) || (_OPENMP < 199810) + + // no OpenMP at all + #define GB_ATOMIC_CAPTURE + +#elif ( _OPENMP >= 201307 ) // OpenMP 4.0 or later: added seq_cst feature #define GB_ATOMIC_CAPTURE GB_PRAGMA (omp atomic seq_cst capture) @@ -183,17 +183,12 @@ // OpenMP 3.1: no seq_cst clause #define GB_ATOMIC_CAPTURE GB_PRAGMA (omp atomic capture) -#elif ( _OPENMP >= 199810 ) +#else // ( _OPENMP >= 199810 ) // OpenMP 1.0 to 3.0: generate an intentional compile-time error if any // attempt is made to use the atomic capture. #define GB_ATOMIC_CAPTURE atomic capture not available -#else - - // no OpenMP at all - #define GB_ATOMIC_CAPTURE - #endif //-------------------------------------------------------------------------- diff --git a/Source/Template/GB_compiler.h b/Source/Template/GB_compiler.h index 4ee1d72b87..7c38e29e7c 100644 --- a/Source/Template/GB_compiler.h +++ b/Source/Template/GB_compiler.h @@ -140,7 +140,7 @@ #if GB_COMPILER_MSC - // MS Visual Studio is not C11 compliant, and uses __pragma: + // MS Visual Studio is not ANSI C11 compliant, and uses __pragma: #define GB_PRAGMA(x) __pragma (x) // no #pragma omp simd is available in MS Visual Studio #define GB_PRAGMA_SIMD @@ -148,7 +148,7 @@ #else - // C11 compilers use _Pragma: + // ANSI C11 compilers use _Pragma: #define GB_PRAGMA(x) _Pragma (#x) // create two kinds of SIMD pragmas: // GB_PRAGMA_SIMD becomes "#pragma omp simd" diff --git a/Source/Template/GB_defaults.h b/Source/Template/GB_defaults.h index 277d3fc792..28988faa0b 100644 --- a/Source/Template/GB_defaults.h +++ b/Source/Template/GB_defaults.h @@ -17,8 +17,8 @@ // These parameters define the content of values that can be // used as inputs to GxB_*Option_set. +// The default format is by row (CSR). #define GB_HYPER_SWITCH_DEFAULT (0.0625) -#define GB_HYPER_HASH_DEFAULT (1024) // by default, give each thread at least 64K units of work to do #define GB_CHUNK_DEFAULT (64*1024) diff --git a/Source/Template/GB_math_macros.h b/Source/Template/GB_math_macros.h index b694c45f9f..f025e7763b 100644 --- a/Source/Template/GB_math_macros.h +++ b/Source/Template/GB_math_macros.h @@ -27,7 +27,7 @@ // NaN always return false, so if either x or y are NaN, then z = y, for both // min(x,y) and max(x,y). -// The C11 fmin, fminf, fmax, and fmaxf functions have the 'omitnan' +// The ANSI C11 fmin, fminf, fmax, and fmaxf functions have the 'omitnan' // behavior. These are used in SuiteSparse:GraphBLAS v2.3.0 and later. // for integers only: diff --git a/Source/Template/GB_wait_macros.h b/Source/Template/GB_wait_macros.h index a9cde8c8ab..4a65848618 100644 --- a/Source/Template/GB_wait_macros.h +++ b/Source/Template/GB_wait_macros.h @@ -35,5 +35,8 @@ #define GB_ANY_PENDING_WORK(A) \ (GB_PENDING (A) || GB_ZOMBIES (A) || GB_JUMBLED (A)) +// true if a matrix is hypersparse but has no A->Y component +#define GB_NEED_HYPER_HASH(A) (GB_IS_HYPERSPARSE (A) && (((A)->Y) == NULL)) + #endif diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbac7__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbac7__plus_my_rdiv2.c index 2765e40912..a166d9ec22 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbac7__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbac7__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xa7db05133c25c170 ; - v [0] = 8 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 0 ; v [2] = 0 ; // intentionally stale version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c index 5856726c0b..78be305c45 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x31aff911c5850713 ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c index 7be7466471..ef6d003393 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x227f98d0b09e286f ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c index f871fe3b73..47dbe76db2 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -105,7 +105,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xdf8cbb0c0ac7ce22 ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = NULL ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c index da6882a77a..ea5c911a34 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x422f36dae3aeca51 ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c index ed74b3aba9..1b968125e0 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x654ba0e0a34027e9 ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c index 358bf7affb..2f3fb7e33b 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x98afaa59c37fb8bb ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c index aafab966ed..0f994de017 100644 --- a/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c +++ b/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xfaa3c6cd7f90ec16 ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c b/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c index 8682bfc8bc..fc95d0ee66 100644 --- a/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c +++ b/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // GB_jit__user_op__0__my_rdiv.c //------------------------------------------------------------------------------ -// SuiteSparse:GraphBLAS v9.0.0, Timothy A. Davis, (c) 2017-2023, +// SuiteSparse:GraphBLAS v8.2.0, Timothy A. Davis, (c) 2017-2023, // All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // The above copyright and license do not apply to any @@ -37,7 +37,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xa98ff14e387744fe ; - v [0] = 9 ; v [1] = 0 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 3 ; v [2] = 0 ; // keep at current version defn [0] = GB_my_rdiv_USER_DEFN ; defn [1] = NULL ; defn [2] = NULL ; diff --git a/Tcov/README.txt b/Tcov/README.txt index 0521baf13d..687be5f5f7 100644 --- a/Tcov/README.txt +++ b/Tcov/README.txt @@ -3,8 +3,8 @@ SPDX-License-Identifier: Apache-2.0 GraphBLAS/Tcov: statement coverage tests -Requirements: the mex command must use a C compiler supporting C11. -Microft Visual Studio does not support C11 so this test is not available +Requirements: the mex command must use a C compiler supporting ANSI C11. +Microft Visual Studio does not support ANSI C11 so this test is not available on Windows unless you use another compiler. Since nearly all GraphBLAS tests are in *.m files, I have taken the unusual diff --git a/Tcov/grbuniq.m b/Tcov/grbuniq.m deleted file mode 100644 index 27ef4ccccd..0000000000 --- a/Tcov/grbuniq.m +++ /dev/null @@ -1,87 +0,0 @@ - -% load grbstat -ntests = length (GraphBLAS_grbcovs) ; -n = length (GraphBLAS_grbcovs {1}) ; -G = cell2mat (GraphBLAS_grbcovs') ; -T = cell2mat (GraphBLAS_times') ; - -Mine = zeros (ntests, n) ; -Mine (1, :) = G (1, :) ; - -for k = 2:ntests - % find the statements covered by this test - Mine (k,:) = G (k,:) - G (k-1,:) ; -end - -% Mine (k,i) = 1 if the kth test covers statement i -Mine = full (spones (Mine)) ; - -S = sum (Mine) ; -U = (S == 1) ; -keeper = [ ] ; - -for k = 1:ntests - my_uniq = (Mine (k,:) > 0) & U ; - n_uniq = sum (my_uniq) ; - t = T (k) ; - fprintf ('%3d %-20s : %5d %9.2f', k, GraphBLAS_scripts {k}, n_uniq, t) ; - fprintf (' %10.2f ', t/n_uniq) ; - if (n_uniq == 0) - fprintf ('<<<<<<<<<<<') ; - else - keeper = [keeper k] ; - end - fprintf ('\n') ; -end - -fprintf ('\n====================================\n') ; - -[ignore I] = sort (T, 'descend') ; -for kk = 1:ntests - k = I (kk) ; - my_uniq = (Mine (k,:) > 0) & U ; - n_uniq = sum (my_uniq) ; - t = T (k) ; - fprintf ('%3d %3d %-20s : %5d %9.2f', kk, k, GraphBLAS_scripts {k}, n_uniq, t) ; - fprintf (' %10.2f ', t/n_uniq) ; - if (n_uniq == 0) - fprintf ('<<<<<<<<<<<') ; - Mine (k,:) = 0 ; - S = sum (Mine) ; - U = (S == 1) ; - else - keeper = [keeper k] ; - end - fprintf ('\n') ; -end - - - -%{ -fprintf ('\n====================================\n') ; - -Mine2 = Mine (keeper, :) ; -S2 = sum (Mine2) ; -U2 = (S2 == 1) ; -ntests2 = length (keeper) ; -T2 = T (keeper) ; -Scr = GraphBLAS_scripts (keeper) ; - -for k = 1:ntests2 - my_uniq = (Mine2 (k,:) > 0) & U2 ; - n_uniq = sum (my_uniq) ; - t = T2 (k) ; - fprintf ('%3d %-20s : %5d %6.2f', k, Scr {k}, n_uniq, t) ; - fprintf (' %10.2f ', t/n_uniq) ; - if (n_uniq == 0) - fprintf ('<<<<<<<<<<<') ; - else - keeper = [keeper k] ; - end - fprintf ('\n') ; -end - -sum (T) /60 -sum (T2) /60 -(sum (T) - sum (T2)) / 60 -%} diff --git a/Tcov/log_Dec6.txt b/Tcov/log_Dec6.txt new file mode 100644 index 0000000000..6fee966997 --- /dev/null +++ b/Tcov/log_Dec6.txt @@ -0,0 +1,217 @@ + +---------------------------------------------- [malloc] [cover] +05-Dec 21:07:24 test272 0.1 sec 113: 21943 of 22139 0.9% 2068.01/s +05-Dec 21:07:24 test268 0.2 sec 131: 21812 of 22139 1.5% 844.56/s +05-Dec 21:07:26 test145 2.4 sec 293: 21519 of 22139 2.8% 120.09/s +05-Dec 21:07:26 test145 0.0 sec 3: 21516 of 22139 2.8% 63.46/s +05-Dec 21:07:27 test145 0.0 sec 26: 21490 of 22139 2.9% 1442.28/s +05-Dec 21:07:27 test145 0.0 sec 4: 21486 of 22139 2.9% 242.67/s +05-Dec 21:07:28 test145 1.8 sec 52: 21434 of 22139 3.2% 29.48/s +05-Dec 21:07:28 test145 0.0 sec 5: 21429 of 22139 3.2% 280.36/s +05-Dec 21:07:30 test240 1.1 sec 88: 21341 of 22139 3.6% 82.10/s +05-Dec 21:07:30 test240 0.3 sec 1: 21340 of 22139 3.6% 3.73/s +05-Dec 21:07:31 test237 1.4 sec 46: 21294 of 22139 3.8% 31.73/s +05-Dec 21:07:35 test237 3.2 sec 4: 21290 of 22139 3.8% 1.23/s +05-Dec 21:07:35 test237 0.1 sec 20: 21270 of 22139 3.9% 185.90/s +05-Dec 21:07:35 test237 0.0 sec 6: 21264 of 22139 4.0% 219.77/s +05-Dec 21:07:35 test237 0.1 sec 4: 21260 of 22139 4.0% 48.25/s +05-Dec 21:07:36 test267 0.8 sec 35: 21225 of 22139 4.1% 45.57/s +05-Dec 21:07:36 test267 0.0 sec 1: 21224 of 22139 4.1% 1763.67/s +05-Dec 21:07:36 test266 0.1 sec 4: 21220 of 22139 4.2% 60.05/s +05-Dec 21:07:36 test265 0.5 sec 92: 21128 of 22139 4.6% 177.05/s +05-Dec 21:07:36 test264 0.1 sec 191: 20937 of 22139 5.4% 3323.47/s +05-Dec 21:07:37 test263 0.9 sec 28: 20909 of 22139 5.6% 32.02/s +05-Dec 21:07:37 test262 0.1 sec 88: 20821 of 22139 6.0% 1536.85/s +05-Dec 21:07:37 test261 0.1 sec 29: 20792 of 22139 6.1% 530.51/s +05-Dec 21:07:38 test260 0.1 sec 3: 20789 of 22139 6.1% 55.61/s +05-Dec 21:07:40 test259 2.7 sec 4: 20785 of 22139 6.1% 1.49/s +05-Dec 21:07:41 test258 0.3 sec 22: 20763 of 22139 6.2% 63.35/s +05-Dec 21:07:41 test257 0.3 sec 65: 20698 of 22139 6.5% 233.48/s +05-Dec 21:07:41 test255 0.1 sec 8: 20690 of 22139 6.5% 128.71/s +05-Dec 21:07:41 test254 0.1 sec 29: 20661 of 22139 6.7% 380.66/s +05-Dec 21:07:47 test254 5.6 sec 20: 20641 of 22139 6.8% 3.59/s +05-Dec 21:07:47 test254 0.1 sec 1: 20640 of 22139 6.8% 9.08/s +05-Dec 21:07:47 test253 0.1 sec 27: 20613 of 22139 6.9% 194.24/s +05-Dec 21:07:47 test252 0.1 sec 11: 20602 of 22139 6.9% 211.94/s +05-Dec 21:09:07 test251 79.9 sec 490: 20112 of 22139 9.2% 6.14/s +05-Dec 21:12:17 test251 189.6 sec 12: 20100 of 22139 9.2% 0.06/s +05-Dec 21:15:57 test251 220.1 sec 78: 20022 of 22139 9.6% 0.35/s +05-Dec 21:15:59 test250 1.6 sec 169: 19853 of 22139 10.3% 108.47/s +05-Dec 21:16:01 test250 2.4 sec 13: 19840 of 22139 10.4% 5.44/s +05-Dec 21:16:02 test249 1.3 sec 29: 19811 of 22139 10.5% 22.62/s +05-Dec 21:16:02 test247 0.0 sec 24: 19787 of 22139 10.6% 938.09/s +05-Dec 21:16:14 test246 11.1 sec 74: 19713 of 22139 11.0% 6.67/s +05-Dec 21:16:34 test01 20.5 sec 1451: 18262 of 22139 17.5% 70.79/s +05-Dec 21:16:49 test01 14.8 sec 22: 18240 of 22139 17.6% 1.49/s +05-Dec 21:16:50 test245 1.1 sec 34: 18206 of 22139 17.8% 30.51/s +05-Dec 21:16:50 test245 0.0 sec 8: 18198 of 22139 17.8% 222.22/s +05-Dec 21:16:50 test199 0.0 sec 1: 18197 of 22139 17.8% 220.31/s +05-Dec 21:16:50 test83 0.1 sec 15: 18182 of 22139 17.9% 233.40/s +05-Dec 21:16:50 test210 0.0 sec 9: 18173 of 22139 17.9% 3935.29/s +05-Dec 21:16:50 test165 0.0 sec 1: 18172 of 22139 17.9% 261.85/s +05-Dec 21:16:50 test219 0.1 sec 9: 18163 of 22139 18.0% 167.72/s +05-Dec 21:16:51 test219 0.3 sec 3: 18160 of 22139 18.0% 9.48/s +05-Dec 21:16:51 test241 0.1 sec 10: 18150 of 22139 18.0% 92.18/s +05-Dec 21:16:51 test220 0.1 sec 15: 18135 of 22139 18.1% 168.23/s +05-Dec 21:16:51 test211 0.0 sec 15: 18120 of 22139 18.2% 506.74/s +05-Dec 21:16:51 test202 0.1 sec 83: 18037 of 22139 18.5% 852.49/s +05-Dec 21:16:51 test202 0.0 sec 1: 18036 of 22139 18.5% 23.36/s +05-Dec 21:16:54 test152 3.1 sec 827: 17209 of 22139 22.3% 263.18/s +05-Dec 21:16:59 test152 4.1 sec 13: 17196 of 22139 22.3% 3.17/s +05-Dec 21:18:25 test152 86.0 sec 245: 16951 of 22139 23.4% 2.85/s +05-Dec 21:18:25 test222 0.1 sec 18: 16933 of 22139 23.5% 124.35/s +05-Dec 21:18:25 test256 0.3 sec 50: 16883 of 22139 23.7% 158.74/s +05-Dec 21:18:28 test186 3.0 sec 42: 16841 of 22139 23.9% 13.93/s +05-Dec 21:18:29 test186 0.5 sec 1: 16840 of 22139 23.9% 2.21/s +05-Dec 21:18:29 test186(0) 0.4 sec 5: 16835 of 22139 24.0% 12.40/s +05-Dec 21:18:42 test150 13.3 sec 39: 16796 of 22139 24.1% 2.93/s +05-Dec 21:18:43 test150 0.3 sec 4: 16792 of 22139 24.2% 14.57/s +05-Dec 21:18:43 test239 0.1 sec 15: 16777 of 22139 24.2% 151.42/s +05-Dec 21:18:44 test239 1.0 sec 2: 16775 of 22139 24.2% 2.00/s +05-Dec 21:18:44 test235 0.0 sec 4: 16771 of 22139 24.2% 86.18/s +05-Dec 21:18:44 test226 0.0 sec 8: 16763 of 22139 24.3% 564.45/s +05-Dec 21:18:44 test223 0.0 sec 2: 16761 of 22139 24.3% 60.83/s +05-Dec 21:18:44 test204 0.1 sec 14: 16747 of 22139 24.4% 125.61/s +05-Dec 21:18:44 test203 0.1 sec 19: 16728 of 22139 24.4% 350.00/s +05-Dec 21:18:44 test183 0.0 sec 12: 16716 of 22139 24.5% 459.61/s +05-Dec 21:18:45 test179 0.1 sec 15: 16701 of 22139 24.6% 153.37/s +05-Dec 21:18:47 test179 2.1 sec 4: 16697 of 22139 24.6% 1.95/s +05-Dec 21:18:47 test174 0.0 sec 10: 16687 of 22139 24.6% 201.77/s +05-Dec 21:18:47 test155 0.1 sec 44: 16643 of 22139 24.8% 334.52/s +05-Dec 21:18:48 test156 0.9 sec 225: 16418 of 22139 25.8% 255.92/s +05-Dec 21:19:40 test156 52.5 sec 37: 16381 of 22139 26.0% 0.71/s +05-Dec 21:19:41 test136 0.2 sec 57: 16324 of 22139 26.3% 352.07/s +05-Dec 21:19:41 test02 0.8 sec 22: 16302 of 22139 26.4% 28.90/s +05-Dec 21:19:42 test109 0.5 sec 10: 16292 of 22139 26.4% 20.55/s +05-Dec 21:19:42 test109 0.0 sec 4: 16288 of 22139 26.4% 1154.40/s +05-Dec 21:19:42 test109 0.3 sec 8: 16280 of 22139 26.5% 23.94/s +05-Dec 21:19:42 test04 0.1 sec 15: 16265 of 22139 26.5% 150.51/s +05-Dec 21:19:42 test207 0.0 sec 2: 16263 of 22139 26.5% 468.71/s +05-Dec 21:19:42 test221 0.0 sec 2: 16261 of 22139 26.6% 278.55/s +05-Dec 21:19:43 test162 0.1 sec 5: 16256 of 22139 26.6% 83.33/s +05-Dec 21:20:47 test159 64.1 sec 80: 16176 of 22139 26.9% 1.25/s +05-Dec 21:20:50 test159 3.1 sec 55: 16121 of 22139 27.2% 17.58/s +05-Dec 21:20:50 test09 0.0 sec 5: 16116 of 22139 27.2% 446.87/s +05-Dec 21:20:50 test132 0.1 sec 8: 16108 of 22139 27.2% 92.59/s +05-Dec 21:21:33 test141 43.3 sec 476: 15632 of 22139 29.4% 10.98/s +05-Dec 21:21:46 test141 12.2 sec 77: 15555 of 22139 29.7% 6.31/s +05-Dec 21:27:32 test141 346.1 sec 2: 15553 of 22139 29.7% 0.01/s +05-Dec 21:27:34 testc2(1,1) 1.5 sec 20: 15533 of 22139 29.8% 13.24/s +05-Dec 21:27:42 testc2(1,1) 7.5 sec 4: 15529 of 22139 29.9% 0.53/s +05-Dec 21:27:42 test214 0.0 sec 3: 15526 of 22139 29.9% 315.72/s +05-Dec 21:27:42 test213 0.0 sec 2: 15524 of 22139 29.9% 182.42/s +05-Dec 21:27:44 test206 2.3 sec 219: 15305 of 22139 30.9% 94.57/s +05-Dec 21:27:59 test206 14.8 sec 8: 15297 of 22139 30.9% 0.54/s +05-Dec 21:27:59 test212 0.0 sec 9: 15288 of 22139 30.9% 501.14/s +05-Dec 21:28:00 test212 0.2 sec 2: 15286 of 22139 31.0% 9.07/s +05-Dec 21:28:00 test128 0.3 sec 49: 15237 of 22139 31.2% 143.45/s +05-Dec 21:28:00 test82 0.1 sec 18: 15219 of 22139 31.3% 209.64/s +05-Dec 21:28:03 test229 3.4 sec 9: 15210 of 22139 31.3% 2.66/s +05-Dec 21:28:05 test229 1.1 sec 1: 15209 of 22139 31.3% 0.93/s +05-Dec 21:28:05 test144 0.6 sec 2: 15207 of 22139 31.3% 3.62/s +05-Dec 21:29:34 test14 88.6 sec 664: 14543 of 22139 34.3% 7.49/s +05-Dec 21:30:03 test14 29.6 sec 2: 14541 of 22139 34.3% 0.07/s +05-Dec 21:34:50 test14 286.4 sec 117: 14424 of 22139 34.8% 0.41/s +05-Dec 21:34:59 test180 8.3 sec 134: 14290 of 22139 35.5% 16.21/s +05-Dec 21:35:02 test236 3.5 sec 74: 14216 of 22139 35.8% 21.12/s +05-Dec 21:35:05 test232 2.3 sec 20: 14196 of 22139 35.9% 8.58/s +05-Dec 21:35:23 test228 18.2 sec 28: 14168 of 22139 36.0% 1.54/s +05-Dec 21:37:15 test154 111.7 sec 1502: 12666 of 22139 42.8% 13.45/s +05-Dec 21:43:39 test154 384.9 sec 2: 12664 of 22139 42.8% 0.01/s +05-Dec 21:43:52 test238 12.1 sec 50: 12614 of 22139 43.0% 4.13/s +05-Dec 21:45:03 test238 71.5 sec 2: 12612 of 22139 43.0% 0.03/s +05-Dec 21:46:46 test151b 103.3 sec 173: 12439 of 22139 43.8% 1.67/s +05-Dec 21:48:23 test151b 96.8 sec 1: 12438 of 22139 43.8% 0.01/s +05-Dec 21:56:42 test151b 498.9 sec 1: 12437 of 22139 43.8% 0.00/s +05-Dec 21:56:46 test184 3.0 sec 38: 12399 of 22139 44.0% 12.52/s +05-Dec 21:56:58 test191 12.0 sec 21: 12378 of 22139 44.1% 1.75/s +05-Dec 21:57:26 test191 27.9 sec 3: 12375 of 22139 44.1% 0.11/s +05-Dec 22:05:43 test188 496.6 sec 183: 12192 of 22139 44.9% 0.37/s +05-Dec 22:08:09 test188 144.8 sec 3: 12189 of 22139 44.9% 0.02/s +05-Dec 22:08:14 test224 4.7 sec 24: 12165 of 22139 45.1% 5.09/s +05-Dec 22:08:16 test196 2.4 sec 11: 12154 of 22139 45.1% 4.50/s +05-Dec 22:08:21 test209 4.7 sec 20: 12134 of 22139 45.2% 4.22/s +05-Dec 22:08:38 test104 17.2 sec 40: 12094 of 22139 45.4% 2.33/s +05-Dec 22:08:46 test189 8.2 sec 1: 12093 of 22139 45.4% 0.12/s +05-Dec 22:09:50 test194 63.7 sec 5: 12088 of 22139 45.4% 0.08/s +05-Dec 22:10:05 test76 14.9 sec 15: 12073 of 22139 45.5% 1.00/s +05-Dec 22:10:45 test244 39.5 sec 17: 12056 of 22139 45.5% 0.43/s +[malloc debugging turned off] +05-Dec 22:10:45 test201 0.0 sec 3: 12053 of 22139 45.6% 673.85/s +05-Dec 22:10:45 test225 0.1 sec 4: 12049 of 22139 45.6% 26.93/s +05-Dec 22:10:45 test176 0.1 sec 5: 12044 of 22139 45.6% 72.95/s +05-Dec 22:10:45 test208 0.0 sec 5: 12039 of 22139 45.6% 345.14/s +05-Dec 22:10:45 test216 0.1 sec 3: 12036 of 22139 45.6% 44.06/s +05-Dec 22:12:14 test142 89.3 sec 630: 11406 of 22139 48.5% 7.06/s +05-Dec 22:12:37 test142 23.0 sec 2: 11404 of 22139 48.5% 0.09/s +05-Dec 22:16:24 test142 226.6 sec 2: 11402 of 22139 48.5% 0.01/s +05-Dec 22:16:47 test142 22.7 sec 2: 11400 of 22139 48.5% 0.09/s +05-Dec 22:16:48 test137 0.4 sec 3: 11397 of 22139 48.5% 7.86/s +05-Dec 22:16:48 test137 0.0 sec 2: 11395 of 22139 48.5% 243.81/s +05-Dec 22:16:48 test139 0.4 sec 2: 11393 of 22139 48.5% 4.97/s +05-Dec 22:16:48 test172 0.1 sec 3: 11390 of 22139 48.6% 40.83/s +05-Dec 22:16:49 test148 0.7 sec 4: 11386 of 22139 48.6% 5.36/s +05-Dec 22:16:50 test157 0.6 sec 12: 11374 of 22139 48.6% 20.94/s +05-Dec 22:16:51 test182 0.9 sec 8: 11366 of 22139 48.7% 8.58/s +05-Dec 22:16:51 test108 0.6 sec 2: 11364 of 22139 48.7% 3.25/s +05-Dec 22:16:52 test108 0.4 sec 1: 11363 of 22139 48.7% 2.58/s +05-Dec 22:16:53 test130 0.7 sec 26: 11337 of 22139 48.8% 34.68/s +05-Dec 22:16:53 test124 0.2 sec 3: 11334 of 22139 48.8% 16.28/s +05-Dec 22:16:53 test138 0.0 sec 1: 11333 of 22139 48.8% 20.87/s +05-Dec 22:16:57 test227 4.0 sec 27: 11306 of 22139 48.9% 6.74/s +05-Dec 22:17:24 test125 27.3 sec 630: 10676 of 22139 51.8% 23.06/s +05-Dec 22:19:49 test234 144.4 sec 396: 10280 of 22139 53.6% 2.74/s +05-Dec 22:23:27 test234 218.3 sec 2: 10278 of 22139 53.6% 0.01/s +05-Dec 22:24:09 test242 41.7 sec 77: 10201 of 22139 53.9% 1.85/s +05-Dec 22:24:10 test173 1.5 sec 11: 10190 of 22139 54.0% 7.43/s +05-Dec 22:24:13 test200 2.8 sec 10: 10180 of 22139 54.0% 3.63/s +05-Dec 22:24:13 test197 0.1 sec 1: 10179 of 22139 54.0% 6.79/s +05-Dec 22:24:15 test84 1.2 sec 18: 10161 of 22139 54.1% 15.63/s +05-Dec 22:24:25 test19b 9.9 sec 58: 10103 of 22139 54.4% 5.85/s +05-Dec 22:24:30 test19b 5.2 sec 5: 10098 of 22139 54.4% 0.97/s +05-Dec 22:24:30 test133 0.4 sec 2: 10096 of 22139 54.4% 5.10/s +05-Dec 22:24:34 test80 4.1 sec 12: 10084 of 22139 54.5% 2.89/s +05-Dec 22:24:50 test151 16.0 sec 73: 10011 of 22139 54.8% 4.56/s +05-Dec 22:26:10 test151 79.3 sec 2: 10009 of 22139 54.8% 0.03/s +05-Dec 22:27:40 test23 90.0 sec 146: 9863 of 22139 55.4% 1.62/s +05-Dec 22:28:40 test23 60.2 sec 2: 9861 of 22139 55.5% 0.03/s +05-Dec 22:28:42 test135 1.9 sec 7: 9854 of 22139 55.5% 3.66/s +05-Dec 22:30:02 test160 80.2 sec 23: 9831 of 22139 55.6% 0.29/s +05-Dec 22:31:22 test160 79.6 sec 1: 9830 of 22139 55.6% 0.01/s +05-Dec 22:31:27 test54 5.1 sec 20: 9810 of 22139 55.7% 3.94/s +05-Dec 22:31:28 test129 1.0 sec 4: 9806 of 22139 55.7% 3.83/s +05-Dec 22:31:30 test69 1.9 sec 3: 9803 of 22139 55.7% 1.56/s +05-Dec 22:32:52 test230 81.4 sec 114: 9689 of 22139 56.2% 1.40/s +06-Dec 00:01:09 test74 5297.3 sec 6588: 3101 of 22139 86.0% 1.24/s +06-Dec 00:32:42 test74 1893.4 sec 7: 3094 of 22139 86.0% 0.00/s +06-Dec 00:38:47 test127 364.3 sec 1633: 1461 of 22139 93.4% 4.48/s +06-Dec 00:50:30 test127 703.4 sec 18: 1443 of 22139 93.5% 0.03/s +06-Dec 01:46:09 test127 3338.7 sec 2: 1441 of 22139 93.5% 0.00/s +06-Dec 01:46:42 test19 3.1 sec 12: 1429 of 22139 93.5% 3.88/s +06-Dec 01:46:46 test11 3.5 sec 3: 1426 of 22139 93.6% 0.85/s +06-Dec 01:46:49 test215 3.2 sec 1: 1425 of 22139 93.6% 0.31/s +06-Dec 01:47:05 test193 15.4 sec 5: 1420 of 22139 93.6% 0.32/s +06-Dec 01:49:45 test195 160.3 sec 39: 1381 of 22139 93.8% 0.24/s +06-Dec 01:50:07 test243 21.8 sec 7: 1374 of 22139 93.8% 0.32/s +06-Dec 01:50:21 test29 14.1 sec 1: 1373 of 22139 93.8% 0.07/s +06-Dec 01:50:32 test29 10.5 sec 2: 1371 of 22139 93.8% 0.19/s +06-Dec 01:50:52 testc2(0,0) 20.4 sec 2: 1369 of 22139 93.8% 0.10/s +06-Dec 01:50:53 testc2(0,0) 1.2 sec 6: 1363 of 22139 93.8% 4.85/s +06-Dec 01:50:55 testc2(0,0) 1.6 sec 1: 1362 of 22139 93.8% 0.63/s +06-Dec 01:50:55 testc4(0) 0.5 sec 4: 1358 of 22139 93.9% 7.33/s +06-Dec 01:51:10 testc7(0) 14.3 sec 1: 1357 of 22139 93.9% 0.07/s +06-Dec 01:51:15 testcc(1) 5.0 sec 1: 1356 of 22139 93.9% 0.20/s +06-Dec 01:51:23 test187 7.7 sec 3: 1353 of 22139 93.9% 0.39/s +06-Dec 01:51:28 test192 5.1 sec 1: 1352 of 22139 93.9% 0.19/s +06-Dec 01:51:44 test181 15.8 sec 10: 1342 of 22139 93.9% 0.63/s +06-Dec 01:53:36 test185 112.2 sec 6: 1336 of 22139 94.0% 0.05/s +06-Dec 01:54:21 test53 45.1 sec 4: 1332 of 22139 94.0% 0.09/s +06-Dec 01:55:08 test17 46.8 sec 28: 1304 of 22139 94.1% 0.60/s +06-Dec 02:01:38 test231 390.2 sec 162: 1142 of 22139 94.8% 0.42/s +06-Dec 02:54:43 test10 3184.7 sec 946: 196 of 22139 99.1% 0.30/s +06-Dec 03:02:29 test75b 441.9 sec 151: 45 of 22139 99.8% 0.34/s +06-Dec 03:03:53 test21b 82.6 sec 26: 19 of 22139 99.9% 0.31/s +06-Dec 03:04:43 testca(1) 50.7 sec 5: 14 of 22139 99.9% 0.10/s +06-Dec 03:06:36 test81 112.8 sec 1: 13 of 22139 99.9% 0.01/s +06-Dec 03:11:52 test18 315.7 sec 13: all 22139 full 100% 0.04/s +[malloc debugging turned back on] diff --git a/Tcov/log_Sept10.txt b/Tcov/log_Sept10.txt deleted file mode 100644 index 20925fe818..0000000000 --- a/Tcov/log_Sept10.txt +++ /dev/null @@ -1,204 +0,0 @@ - ----------------------------------------------- [malloc] [cover] -10-Sep 16:13:15 test250 3.3 sec 415: 24525 of 25102 2.3% 125.06/s -10-Sep 16:13:18 test250 3.6 sec 57: 24468 of 25102 2.5% 15.94/s -10-Sep 16:13:18 test279 0.0 sec 130: 24338 of 25102 3.0% 2720.86/s -10-Sep 16:13:18 test278 0.0 sec 49: 24289 of 25102 3.2% 1316.96/s -10-Sep 16:13:18 test277 0.0 sec 38: 24251 of 25102 3.4% 1143.34/s -10-Sep 16:13:18 test276 0.0 sec 1626: 22625 of 25102 9.9% 47339.00/s -10-Sep 16:13:19 test275 0.0 sec 117: 22508 of 25102 10.3% 3568.92/s -10-Sep 16:13:19 test274 0.0 sec 129: 22379 of 25102 10.8% 4076.99/s -10-Sep 16:13:19 test273 0.1 sec 110: 22269 of 25102 11.3% 752.79/s -10-Sep 16:13:19 test272 0.0 sec 11: 22258 of 25102 11.3% 262.32/s -10-Sep 16:13:19 test271 0.0 sec 497: 21761 of 25102 13.3% 13146.41/s -10-Sep 16:13:19 test270 0.0 sec 286: 21475 of 25102 14.4% 6551.22/s -10-Sep 16:13:19 test269 0.0 sec 87: 21388 of 25102 14.8% 2284.72/s -10-Sep 16:13:19 test268 0.1 sec 102: 21286 of 25102 15.2% 1161.94/s -10-Sep 16:13:21 test145 1.7 sec 221: 21065 of 25102 16.1% 133.69/s -10-Sep 16:13:21 test145 0.0 sec 1: 21064 of 25102 16.1% 21.16/s -10-Sep 16:13:21 test145 0.0 sec 18: 21046 of 25102 16.2% 1051.95/s -10-Sep 16:13:21 test145 0.0 sec 4: 21042 of 25102 16.2% 220.22/s -10-Sep 16:13:22 test145 1.2 sec 34: 21008 of 25102 16.3% 28.05/s -10-Sep 16:13:22 test145 0.0 sec 3: 21005 of 25102 16.3% 263.57/s -10-Sep 16:13:23 test240 0.2 sec 58: 20944 of 25102 16.6% 236.40/s -10-Sep 16:13:23 test240 0.2 sec 1: 20943 of 25102 16.6% 5.46/s -10-Sep 16:13:23 test237 0.1 sec 35: 20908 of 25102 16.7% 343.56/s -10-Sep 16:13:24 test237 1.5 sec 23: 20885 of 25102 16.8% 15.35/s -10-Sep 16:13:25 test237 0.0 sec 18: 20867 of 25102 16.9% 519.45/s -10-Sep 16:13:25 test237 0.0 sec 6: 20861 of 25102 16.9% 642.88/s -10-Sep 16:13:25 test237 0.0 sec 4: 20857 of 25102 16.9% 125.36/s -10-Sep 16:13:25 test267 0.7 sec 8: 20849 of 25102 16.9% 11.65/s -10-Sep 16:13:25 test267 0.0 sec 1: 20848 of 25102 16.9% 746.83/s -10-Sep 16:13:26 test265 0.4 sec 36: 20812 of 25102 17.1% 97.08/s -10-Sep 16:13:26 test264 0.0 sec 173: 20639 of 25102 17.8% 4496.66/s -10-Sep 16:13:27 test263 0.7 sec 16: 20623 of 25102 17.8% 24.31/s -10-Sep 16:13:27 test262 0.0 sec 76: 20547 of 25102 18.1% 2013.25/s -10-Sep 16:13:27 test261 0.0 sec 22: 20525 of 25102 18.2% 651.02/s -10-Sep 16:13:27 test260 0.0 sec 3: 20522 of 25102 18.2% 87.24/s -10-Sep 16:13:29 test259 2.0 sec 4: 20518 of 25102 18.3% 2.02/s -10-Sep 16:13:29 test258 0.2 sec 20: 20498 of 25102 18.3% 91.17/s -10-Sep 16:13:30 test257 0.2 sec 54: 20444 of 25102 18.6% 283.59/s -10-Sep 16:13:30 test255 0.0 sec 8: 20436 of 25102 18.6% 202.75/s -10-Sep 16:13:30 test254 0.1 sec 29: 20407 of 25102 18.7% 400.97/s -10-Sep 16:13:34 test254 3.9 sec 20: 20387 of 25102 18.8% 5.07/s -10-Sep 16:13:34 test254 0.1 sec 1: 20386 of 25102 18.8% 12.24/s -10-Sep 16:13:34 test253 0.1 sec 8: 20378 of 25102 18.8% 55.50/s -10-Sep 16:13:34 test252 0.0 sec 7: 20371 of 25102 18.8% 186.79/s -10-Sep 16:14:39 test251 65.1 sec 476: 19895 of 25102 20.7% 7.31/s -10-Sep 16:17:13 test251 153.3 sec 76: 19819 of 25102 21.0% 0.50/s -10-Sep 16:17:14 test249 1.0 sec 27: 19792 of 25102 21.2% 25.88/s -10-Sep 16:17:14 test247 0.0 sec 24: 19768 of 25102 21.2% 542.62/s -10-Sep 16:17:28 test246 13.8 sec 72: 19696 of 25102 21.5% 5.23/s -10-Sep 16:17:44 test01 15.3 sec 1421: 18275 of 25102 27.2% 92.69/s -10-Sep 16:17:45 test245 0.8 sec 34: 18241 of 25102 27.3% 43.26/s -10-Sep 16:17:45 test245 0.0 sec 8: 18233 of 25102 27.4% 183.92/s -10-Sep 16:17:45 test199 0.0 sec 1: 18232 of 25102 27.4% 162.95/s -10-Sep 16:17:45 test83 0.0 sec 15: 18217 of 25102 27.4% 435.68/s -10-Sep 16:17:45 test210 0.0 sec 9: 18208 of 25102 27.5% 2346.81/s -10-Sep 16:17:45 test165 0.0 sec 1: 18207 of 25102 27.5% 165.45/s -10-Sep 16:17:45 test219 0.0 sec 9: 18198 of 25102 27.5% 224.00/s -10-Sep 16:17:45 test219 0.2 sec 3: 18195 of 25102 27.5% 15.47/s -10-Sep 16:17:46 test241 0.1 sec 10: 18185 of 25102 27.6% 114.98/s -10-Sep 16:17:46 test220 0.1 sec 15: 18170 of 25102 27.6% 224.25/s -10-Sep 16:17:46 test211 0.0 sec 15: 18155 of 25102 27.7% 457.86/s -10-Sep 16:17:46 test202 0.1 sec 83: 18072 of 25102 28.0% 1312.48/s -10-Sep 16:17:46 test202 0.0 sec 1: 18071 of 25102 28.0% 22.84/s -10-Sep 16:17:50 test152 3.1 sec 827: 17244 of 25102 31.3% 268.51/s -10-Sep 16:17:53 test152 3.6 sec 13: 17231 of 25102 31.4% 3.59/s -10-Sep 16:18:57 test152 63.9 sec 245: 16986 of 25102 32.3% 3.83/s -10-Sep 16:18:58 test222 0.1 sec 18: 16968 of 25102 32.4% 196.89/s -10-Sep 16:18:58 test256 0.5 sec 58: 16910 of 25102 32.6% 119.44/s -10-Sep 16:19:01 test186 2.7 sec 45: 16865 of 25102 32.8% 16.72/s -10-Sep 16:19:02 test186 0.6 sec 3: 16862 of 25102 32.8% 5.29/s -10-Sep 16:19:02 test186(0) 0.3 sec 5: 16857 of 25102 32.8% 15.52/s -10-Sep 16:19:03 test150 0.4 sec 44: 16813 of 25102 33.0% 104.79/s -10-Sep 16:19:03 test239 0.2 sec 15: 16798 of 25102 33.1% 98.34/s -10-Sep 16:19:04 test239 0.9 sec 2: 16796 of 25102 33.1% 2.15/s -10-Sep 16:19:05 test235 0.1 sec 4: 16792 of 25102 33.1% 69.86/s -10-Sep 16:19:05 test226 0.0 sec 8: 16784 of 25102 33.1% 463.61/s -10-Sep 16:19:05 test223 0.0 sec 2: 16782 of 25102 33.1% 65.81/s -10-Sep 16:19:05 test204 0.1 sec 14: 16768 of 25102 33.2% 175.47/s -10-Sep 16:19:05 test203 0.0 sec 19: 16749 of 25102 33.3% 415.32/s -10-Sep 16:19:06 test183 0.0 sec 12: 16737 of 25102 33.3% 332.48/s -10-Sep 16:19:06 test179 0.1 sec 15: 16722 of 25102 33.4% 126.77/s -10-Sep 16:19:08 test179 2.3 sec 4: 16718 of 25102 33.4% 1.74/s -10-Sep 16:19:09 test174 0.1 sec 10: 16708 of 25102 33.4% 116.20/s -10-Sep 16:19:09 test155 0.1 sec 43: 16665 of 25102 33.6% 376.56/s -10-Sep 16:19:09 test136 0.1 sec 57: 16608 of 25102 33.8% 383.45/s -10-Sep 16:19:10 test02 0.7 sec 249: 16359 of 25102 34.8% 382.16/s -10-Sep 16:19:11 test109 0.4 sec 10: 16349 of 25102 34.9% 24.37/s -10-Sep 16:19:11 test109 0.0 sec 4: 16345 of 25102 34.9% 863.93/s -10-Sep 16:19:11 test109 0.3 sec 8: 16337 of 25102 34.9% 23.57/s -10-Sep 16:19:12 test04 0.1 sec 15: 16322 of 25102 35.0% 164.76/s -10-Sep 16:19:12 test207 0.0 sec 2: 16320 of 25102 35.0% 308.98/s -10-Sep 16:19:12 test221 0.0 sec 2: 16318 of 25102 35.0% 186.25/s -10-Sep 16:19:12 test162 0.1 sec 5: 16313 of 25102 35.0% 69.38/s -10-Sep 16:19:17 test159 4.2 sec 72: 16241 of 25102 35.3% 16.96/s -10-Sep 16:19:17 test09 0.0 sec 5: 16236 of 25102 35.3% 355.09/s -10-Sep 16:19:17 test132 0.1 sec 8: 16228 of 25102 35.4% 123.77/s -10-Sep 16:19:43 test141 25.0 sec 551: 15677 of 25102 37.5% 22.03/s -10-Sep 16:19:44 testc2(1,1) 1.4 sec 20: 15657 of 25102 37.6% 14.80/s -10-Sep 16:19:51 testc2(1,1) 6.5 sec 4: 15653 of 25102 37.6% 0.62/s -10-Sep 16:19:51 test214 0.0 sec 3: 15650 of 25102 37.7% 182.05/s -10-Sep 16:19:51 test213 0.0 sec 2: 15648 of 25102 37.7% 105.94/s -10-Sep 16:19:54 test206 2.7 sec 221: 15427 of 25102 38.5% 81.48/s -10-Sep 16:20:13 test206 18.9 sec 24: 15403 of 25102 38.6% 1.27/s -10-Sep 16:20:14 test212 0.0 sec 9: 15394 of 25102 38.7% 209.43/s -10-Sep 16:20:14 test212 0.2 sec 2: 15392 of 25102 38.7% 10.48/s -10-Sep 16:20:15 test128 0.3 sec 49: 15343 of 25102 38.9% 141.56/s -10-Sep 16:20:15 test82 0.1 sec 18: 15325 of 25102 38.9% 247.45/s -10-Sep 16:20:19 test229 3.0 sec 9: 15316 of 25102 39.0% 3.04/s -10-Sep 16:20:20 test229 1.4 sec 1: 15315 of 25102 39.0% 0.70/s -10-Sep 16:20:21 test144 0.6 sec 2: 15313 of 25102 39.0% 3.59/s -10-Sep 16:21:23 test14 61.7 sec 671: 14642 of 25102 41.7% 10.87/s -10-Sep 16:24:40 test14 196.5 sec 118: 14524 of 25102 42.1% 0.60/s -10-Sep 16:24:49 test180 8.4 sec 136: 14388 of 25102 42.7% 16.23/s -10-Sep 16:24:55 test236 5.8 sec 74: 14314 of 25102 43.0% 12.87/s -10-Sep 16:25:00 test232 4.2 sec 22: 14292 of 25102 43.1% 5.23/s -10-Sep 16:25:23 test228 23.1 sec 27: 14265 of 25102 43.2% 1.17/s -10-Sep 16:27:59 test154 155.5 sec 1502: 12763 of 25102 49.2% 9.66/s -10-Sep 16:35:50 test154 470.4 sec 2: 12761 of 25102 49.2% 0.00/s -10-Sep 16:36:02 test238 11.3 sec 54: 12707 of 25102 49.4% 4.78/s -10-Sep 16:36:58 test238 55.7 sec 9: 12698 of 25102 49.4% 0.16/s -10-Sep 16:38:38 test151b 99.9 sec 174: 12524 of 25102 50.1% 1.74/s -10-Sep 16:38:44 test184 5.4 sec 38: 12486 of 25102 50.3% 7.02/s -10-Sep 16:39:02 test191 18.2 sec 21: 12465 of 25102 50.3% 1.16/s -10-Sep 16:39:30 test191 27.3 sec 3: 12462 of 25102 50.4% 0.11/s -10-Sep 16:47:00 test188 449.4 sec 212: 12250 of 25102 51.2% 0.47/s -10-Sep 16:49:06 test188 124.1 sec 3: 12247 of 25102 51.2% 0.02/s -10-Sep 16:49:11 test224 4.2 sec 24: 12223 of 25102 51.3% 5.72/s -10-Sep 16:49:14 test196 2.4 sec 11: 12212 of 25102 51.4% 4.50/s -10-Sep 16:49:19 test209 5.1 sec 20: 12192 of 25102 51.4% 3.90/s -10-Sep 16:49:34 test104 14.8 sec 40: 12152 of 25102 51.6% 2.71/s -10-Sep 16:49:44 test189 9.0 sec 1: 12151 of 25102 51.6% 0.11/s -10-Sep 16:50:47 test194 63.2 sec 5: 12146 of 25102 51.6% 0.08/s -10-Sep 16:50:59 test76 10.9 sec 15: 12131 of 25102 51.7% 1.37/s -10-Sep 16:51:35 test244 35.8 sec 17: 12114 of 25102 51.7% 0.47/s -[malloc debugging turned off] -10-Sep 16:51:35 test201 0.0 sec 3: 12111 of 25102 51.8% 362.23/s -10-Sep 16:51:36 test225 0.1 sec 4: 12107 of 25102 51.8% 32.73/s -10-Sep 16:51:36 test176 0.1 sec 5: 12102 of 25102 51.8% 70.60/s -10-Sep 16:51:36 test208 0.0 sec 5: 12097 of 25102 51.8% 319.88/s -10-Sep 16:51:37 test216 0.0 sec 3: 12094 of 25102 51.8% 67.39/s -10-Sep 16:51:58 test142 20.4 sec 631: 11463 of 25102 54.3% 30.96/s -10-Sep 16:55:30 test142 212.4 sec 10: 11453 of 25102 54.4% 0.05/s -10-Sep 16:55:50 test142 19.0 sec 2: 11451 of 25102 54.4% 0.11/s -10-Sep 16:55:51 test137 0.2 sec 3: 11448 of 25102 54.4% 12.74/s -10-Sep 16:55:51 test137 0.0 sec 2: 11446 of 25102 54.4% 344.00/s -10-Sep 16:55:52 test139 0.3 sec 2: 11444 of 25102 54.4% 6.53/s -10-Sep 16:55:52 test172 0.1 sec 3: 11441 of 25102 54.4% 45.42/s -10-Sep 16:55:53 test148 0.5 sec 4: 11437 of 25102 54.4% 8.56/s -10-Sep 16:55:54 test157 0.5 sec 12: 11425 of 25102 54.5% 24.68/s -10-Sep 16:55:55 test182 0.7 sec 8: 11417 of 25102 54.5% 10.87/s -10-Sep 16:55:56 test108 0.4 sec 2: 11415 of 25102 54.5% 5.17/s -10-Sep 16:55:57 test108 0.3 sec 2: 11413 of 25102 54.5% 6.48/s -10-Sep 16:55:58 test130 0.7 sec 25: 11388 of 25102 54.6% 34.50/s -10-Sep 16:55:58 test124 0.1 sec 3: 11385 of 25102 54.6% 26.80/s -10-Sep 16:55:59 test138 0.1 sec 1: 11384 of 25102 54.6% 17.04/s -10-Sep 16:56:04 test227 4.3 sec 27: 11357 of 25102 54.8% 6.27/s -10-Sep 16:56:27 test125 23.4 sec 630: 10727 of 25102 57.3% 26.96/s -10-Sep 16:58:32 test234 124.0 sec 397: 10330 of 25102 58.8% 3.20/s -10-Sep 17:02:12 test234 219.9 sec 3: 10327 of 25102 58.9% 0.01/s -10-Sep 17:02:53 test242 40.4 sec 77: 10250 of 25102 59.2% 1.91/s -10-Sep 17:02:55 test173 1.3 sec 12: 10238 of 25102 59.2% 8.92/s -10-Sep 17:02:58 test200 2.4 sec 10: 10228 of 25102 59.3% 4.11/s -10-Sep 17:02:59 test197 0.1 sec 1: 10227 of 25102 59.3% 7.24/s -10-Sep 17:03:01 test84 1.4 sec 18: 10209 of 25102 59.3% 12.98/s -10-Sep 17:03:07 test19b 5.6 sec 59: 10150 of 25102 59.6% 10.47/s -10-Sep 17:03:08 test133 0.3 sec 2: 10148 of 25102 59.6% 6.65/s -10-Sep 17:03:12 test80 3.5 sec 12: 10136 of 25102 59.6% 3.47/s -10-Sep 17:04:15 test23 62.8 sec 148: 9988 of 25102 60.2% 2.36/s -10-Sep 17:04:17 test135 1.4 sec 7: 9981 of 25102 60.2% 4.91/s -10-Sep 17:05:25 test160 67.6 sec 24: 9957 of 25102 60.3% 0.36/s -10-Sep 17:05:30 test54 4.4 sec 20: 9937 of 25102 60.4% 4.60/s -10-Sep 17:05:31 test129 1.1 sec 4: 9933 of 25102 60.4% 3.77/s -10-Sep 17:05:34 test69 1.8 sec 6: 9927 of 25102 60.5% 3.37/s -10-Sep 17:07:02 test230 87.4 sec 114: 9813 of 25102 60.9% 1.30/s -10-Sep 17:40:44 test74 2022.3 sec 6637: 3176 of 25102 87.3% 3.28/s -10-Sep 17:59:17 test127 1111.9 sec 1707: 1469 of 25102 94.1% 1.54/s -10-Sep 17:59:21 test19 3.1 sec 12: 1457 of 25102 94.2% 3.90/s -10-Sep 17:59:25 test11 3.7 sec 3: 1454 of 25102 94.2% 0.80/s -10-Sep 17:59:28 test215 2.9 sec 1: 1453 of 25102 94.2% 0.35/s -10-Sep 17:59:56 test193 27.1 sec 5: 1448 of 25102 94.2% 0.18/s -10-Sep 18:02:32 test195 155.5 sec 39: 1409 of 25102 94.4% 0.25/s -10-Sep 18:02:54 test243 21.5 sec 7: 1402 of 25102 94.4% 0.33/s -10-Sep 18:03:05 test29 10.5 sec 3: 1399 of 25102 94.4% 0.29/s -10-Sep 18:03:07 testc2(0,0) 1.3 sec 7: 1392 of 25102 94.5% 5.32/s -10-Sep 18:03:24 testc2(0,0) 16.7 sec 1: 1391 of 25102 94.5% 0.06/s -10-Sep 18:03:25 testc4(0) 0.4 sec 4: 1387 of 25102 94.5% 10.82/s -10-Sep 18:03:43 testc7(0) 16.7 sec 3: 1384 of 25102 94.5% 0.18/s -10-Sep 18:03:49 testcc(1) 5.6 sec 1: 1383 of 25102 94.5% 0.18/s -10-Sep 18:03:59 test187 9.5 sec 3: 1380 of 25102 94.5% 0.32/s -10-Sep 18:04:05 test192 5.6 sec 1: 1379 of 25102 94.5% 0.18/s -10-Sep 18:04:22 test181 16.3 sec 10: 1369 of 25102 94.5% 0.61/s -10-Sep 18:05:52 test185 89.4 sec 6: 1363 of 25102 94.6% 0.07/s -10-Sep 18:06:30 test53 36.8 sec 4: 1359 of 25102 94.6% 0.11/s -10-Sep 18:07:10 test17 39.1 sec 27: 1332 of 25102 94.7% 0.69/s -10-Sep 18:14:15 test231 424.8 sec 162: 1170 of 25102 95.3% 0.38/s -10-Sep 19:00:00 test10 2744.6 sec 970: 200 of 25102 99.2% 0.35/s -10-Sep 19:12:41 test75b 734.5 sec 155: 45 of 25102 99.8% 0.21/s -10-Sep 19:14:00 test21b 77.7 sec 26: 19 of 25102 99.9% 0.33/s -10-Sep 19:14:44 testca(1) 44.0 sec 5: 14 of 25102 99.9% 0.11/s -10-Sep 19:16:16 test81 90.7 sec 1: 13 of 25102 99.9% 0.01/s -10-Sep 19:21:27 test18 310.5 sec 13: all 25102 full 100% 0.04/s -[malloc debugging turned back on] diff --git a/Tcov/log_Sept5.txt b/Tcov/log_Sept5.txt deleted file mode 100644 index bf59d15b47..0000000000 --- a/Tcov/log_Sept5.txt +++ /dev/null @@ -1,217 +0,0 @@ - ----------------------------------------------- [malloc] [cover] -05-Sep 10:12:35 test272 0.1 sec 113: 21943 of 22139 0.9% 1216.96/s -05-Sep 10:12:35 test268 0.2 sec 131: 21812 of 22139 1.5% 566.82/s -05-Sep 10:12:37 test145 2.4 sec 293: 21519 of 22139 2.8% 122.08/s -05-Sep 10:12:37 test145 0.0 sec 3: 21516 of 22139 2.8% 63.06/s -05-Sep 10:12:37 test145 0.0 sec 26: 21490 of 22139 2.9% 1410.44/s -05-Sep 10:12:37 test145 0.0 sec 4: 21486 of 22139 2.9% 248.02/s -05-Sep 10:12:39 test145 1.4 sec 52: 21434 of 22139 3.2% 37.92/s -05-Sep 10:12:39 test145 0.0 sec 5: 21429 of 22139 3.2% 323.73/s -05-Sep 10:12:39 test240 0.4 sec 68: 21361 of 22139 3.5% 176.93/s -05-Sep 10:12:40 test240 0.2 sec 1: 21360 of 22139 3.5% 4.19/s -05-Sep 10:12:40 test237 0.1 sec 37: 21323 of 22139 3.7% 405.72/s -05-Sep 10:12:42 test237 2.0 sec 27: 21296 of 22139 3.8% 13.42/s -05-Sep 10:12:42 test237 0.0 sec 19: 21277 of 22139 3.9% 398.82/s -05-Sep 10:12:42 test237 0.0 sec 6: 21271 of 22139 3.9% 482.08/s -05-Sep 10:12:42 test237 0.0 sec 4: 21267 of 22139 3.9% 113.80/s -05-Sep 10:12:42 test267 0.6 sec 35: 21232 of 22139 4.1% 57.85/s -05-Sep 10:12:42 test267 0.0 sec 1: 21231 of 22139 4.1% 1776.20/s -05-Sep 10:12:43 test266 0.1 sec 4: 21227 of 22139 4.1% 38.51/s -05-Sep 10:12:43 test265 0.5 sec 92: 21135 of 22139 4.5% 190.45/s -05-Sep 10:12:43 test264 0.1 sec 191: 20944 of 22139 5.4% 1651.15/s -05-Sep 10:12:44 test263 0.8 sec 28: 20916 of 22139 5.5% 36.50/s -05-Sep 10:12:44 test262 0.1 sec 88: 20828 of 22139 5.9% 899.25/s -05-Sep 10:12:44 test261 0.1 sec 29: 20799 of 22139 6.1% 296.19/s -05-Sep 10:12:44 test260 0.1 sec 3: 20796 of 22139 6.1% 30.79/s -05-Sep 10:12:47 test259 2.3 sec 4: 20792 of 22139 6.1% 1.72/s -05-Sep 10:12:47 test258 0.4 sec 22: 20770 of 22139 6.2% 62.84/s -05-Sep 10:12:47 test257 0.3 sec 65: 20705 of 22139 6.5% 235.22/s -05-Sep 10:12:48 test255 0.1 sec 8: 20697 of 22139 6.5% 86.44/s -05-Sep 10:12:48 test254 0.1 sec 29: 20668 of 22139 6.6% 360.02/s -05-Sep 10:12:52 test254 4.4 sec 20: 20648 of 22139 6.7% 4.50/s -05-Sep 10:12:52 test254 0.1 sec 1: 20647 of 22139 6.7% 8.72/s -05-Sep 10:12:53 test253 0.2 sec 27: 20620 of 22139 6.9% 149.11/s -05-Sep 10:12:53 test252 0.1 sec 11: 20609 of 22139 6.9% 113.08/s -05-Sep 10:14:06 test251 73.0 sec 492: 20117 of 22139 9.1% 6.74/s -05-Sep 10:17:11 test251 185.7 sec 12: 20105 of 22139 9.2% 0.06/s -05-Sep 10:20:23 test251 191.2 sec 78: 20027 of 22139 9.5% 0.41/s -05-Sep 10:20:24 test250 1.2 sec 170: 19857 of 22139 10.3% 137.23/s -05-Sep 10:20:26 test250 1.6 sec 13: 19844 of 22139 10.4% 7.98/s -05-Sep 10:20:27 test249 1.4 sec 29: 19815 of 22139 10.5% 21.39/s -05-Sep 10:20:27 test247 0.0 sec 25: 19790 of 22139 10.6% 1201.52/s -05-Sep 10:20:38 test246 11.1 sec 73: 19717 of 22139 10.9% 6.55/s -05-Sep 10:20:56 test01 17.2 sec 1452: 18265 of 22139 17.5% 84.53/s -05-Sep 10:21:08 test01 12.4 sec 22: 18243 of 22139 17.6% 1.77/s -05-Sep 10:21:09 test245 0.9 sec 34: 18209 of 22139 17.8% 39.75/s -05-Sep 10:21:09 test245 0.0 sec 8: 18201 of 22139 17.8% 175.85/s -05-Sep 10:21:09 test199 0.0 sec 1: 18200 of 22139 17.8% 132.57/s -05-Sep 10:21:09 test83 0.1 sec 15: 18185 of 22139 17.9% 119.44/s -05-Sep 10:21:09 test210 0.0 sec 9: 18176 of 22139 17.9% 1893.94/s -05-Sep 10:21:09 test165 0.0 sec 1: 18175 of 22139 17.9% 169.41/s -05-Sep 10:21:10 test219 0.1 sec 9: 18166 of 22139 17.9% 89.94/s -05-Sep 10:21:10 test219 0.2 sec 3: 18163 of 22139 18.0% 12.96/s -05-Sep 10:21:10 test241 0.1 sec 10: 18153 of 22139 18.0% 83.60/s -05-Sep 10:21:10 test220 0.1 sec 15: 18138 of 22139 18.1% 107.08/s -05-Sep 10:21:10 test211 0.0 sec 15: 18123 of 22139 18.1% 432.81/s -05-Sep 10:21:10 test202 0.1 sec 83: 18040 of 22139 18.5% 604.97/s -05-Sep 10:21:10 test202 0.0 sec 1: 18039 of 22139 18.5% 23.10/s -05-Sep 10:21:13 test152 2.6 sec 827: 17212 of 22139 22.3% 314.90/s -05-Sep 10:21:17 test152 4.0 sec 13: 17199 of 22139 22.3% 3.24/s -05-Sep 10:22:25 test152 68.2 sec 245: 16954 of 22139 23.4% 3.59/s -05-Sep 10:22:26 test222 0.2 sec 18: 16936 of 22139 23.5% 89.56/s -05-Sep 10:22:26 test256 0.3 sec 50: 16886 of 22139 23.7% 165.66/s -05-Sep 10:22:29 test186 2.8 sec 43: 16843 of 22139 23.9% 15.15/s -05-Sep 10:22:29 test186 0.4 sec 1: 16842 of 22139 23.9% 2.24/s -05-Sep 10:22:30 test186(0) 0.4 sec 5: 16837 of 22139 23.9% 12.61/s -05-Sep 10:22:41 test150 11.7 sec 39: 16798 of 22139 24.1% 3.35/s -05-Sep 10:22:42 test150 0.2 sec 4: 16794 of 22139 24.1% 19.78/s -05-Sep 10:22:42 test239 0.1 sec 15: 16779 of 22139 24.2% 115.27/s -05-Sep 10:22:43 test239 0.9 sec 2: 16777 of 22139 24.2% 2.21/s -05-Sep 10:22:43 test235 0.0 sec 4: 16773 of 22139 24.2% 94.81/s -05-Sep 10:22:43 test226 0.0 sec 8: 16765 of 22139 24.3% 620.01/s -05-Sep 10:22:43 test223 0.0 sec 2: 16763 of 22139 24.3% 60.38/s -05-Sep 10:22:43 test204 0.2 sec 14: 16749 of 22139 24.3% 75.71/s -05-Sep 10:22:43 test203 0.1 sec 19: 16730 of 22139 24.4% 196.99/s -05-Sep 10:22:43 test183 0.0 sec 12: 16718 of 22139 24.5% 402.19/s -05-Sep 10:22:44 test179 0.1 sec 15: 16703 of 22139 24.6% 107.30/s -05-Sep 10:22:45 test179 1.8 sec 4: 16699 of 22139 24.6% 2.25/s -05-Sep 10:22:45 test174 0.1 sec 10: 16689 of 22139 24.6% 157.67/s -05-Sep 10:22:46 test155 0.2 sec 44: 16645 of 22139 24.8% 271.85/s -05-Sep 10:22:46 test156 0.7 sec 227: 16418 of 22139 25.8% 347.62/s -05-Sep 10:23:30 test156 44.1 sec 37: 16381 of 22139 26.0% 0.84/s -05-Sep 10:23:31 test136 0.3 sec 57: 16324 of 22139 26.3% 226.47/s -05-Sep 10:23:32 test02 0.7 sec 22: 16302 of 22139 26.4% 30.63/s -05-Sep 10:23:32 test109 0.5 sec 10: 16292 of 22139 26.4% 21.56/s -05-Sep 10:23:32 test109 0.0 sec 4: 16288 of 22139 26.4% 1192.25/s -05-Sep 10:23:32 test109 0.3 sec 8: 16280 of 22139 26.5% 25.54/s -05-Sep 10:23:33 test04 0.1 sec 15: 16265 of 22139 26.5% 105.91/s -05-Sep 10:23:33 test207 0.0 sec 2: 16263 of 22139 26.5% 411.44/s -05-Sep 10:23:33 test221 0.0 sec 2: 16261 of 22139 26.6% 258.26/s -05-Sep 10:23:33 test162 0.1 sec 5: 16256 of 22139 26.6% 88.30/s -05-Sep 10:24:31 test159 58.7 sec 80: 16176 of 22139 26.9% 1.36/s -05-Sep 10:24:34 test159 2.4 sec 55: 16121 of 22139 27.2% 23.01/s -05-Sep 10:24:34 test09 0.0 sec 5: 16116 of 22139 27.2% 475.33/s -05-Sep 10:24:34 test132 0.1 sec 8: 16108 of 22139 27.2% 68.57/s -05-Sep 10:25:14 test141 39.5 sec 476: 15632 of 22139 29.4% 12.05/s -05-Sep 10:25:26 test141 12.1 sec 77: 15555 of 22139 29.7% 6.34/s -05-Sep 10:30:09 test141 282.7 sec 2: 15553 of 22139 29.7% 0.01/s -05-Sep 10:30:11 testc2(1,1) 1.3 sec 20: 15533 of 22139 29.8% 14.86/s -05-Sep 10:30:17 testc2(1,1) 6.3 sec 4: 15529 of 22139 29.9% 0.64/s -05-Sep 10:30:17 test214 0.0 sec 3: 15526 of 22139 29.9% 257.60/s -05-Sep 10:30:17 test213 0.0 sec 2: 15524 of 22139 29.9% 150.33/s -05-Sep 10:30:20 test206 2.3 sec 219: 15305 of 22139 30.9% 95.31/s -05-Sep 10:30:32 test206 12.2 sec 8: 15297 of 22139 30.9% 0.65/s -05-Sep 10:30:32 test212 0.0 sec 9: 15288 of 22139 30.9% 445.46/s -05-Sep 10:30:32 test212 0.2 sec 2: 15286 of 22139 31.0% 11.47/s -05-Sep 10:30:33 test128 0.4 sec 49: 15237 of 22139 31.2% 130.38/s -05-Sep 10:30:33 test82 0.1 sec 18: 15219 of 22139 31.3% 171.29/s -05-Sep 10:30:36 test229 3.0 sec 9: 15210 of 22139 31.3% 3.00/s -05-Sep 10:30:37 test229 1.1 sec 1: 15209 of 22139 31.3% 0.90/s -05-Sep 10:30:38 test144 0.6 sec 2: 15207 of 22139 31.3% 3.33/s -05-Sep 10:31:55 test14 77.5 sec 664: 14543 of 22139 34.3% 8.57/s -05-Sep 10:32:24 test14 29.3 sec 2: 14541 of 22139 34.3% 0.07/s -05-Sep 10:36:31 test14 246.2 sec 117: 14424 of 22139 34.8% 0.48/s -05-Sep 10:36:39 test180 8.1 sec 134: 14290 of 22139 35.5% 16.56/s -05-Sep 10:36:43 test236 3.6 sec 74: 14216 of 22139 35.8% 20.55/s -05-Sep 10:36:45 test232 2.5 sec 20: 14196 of 22139 35.9% 8.10/s -05-Sep 10:37:04 test228 18.1 sec 28: 14168 of 22139 36.0% 1.54/s -05-Sep 10:38:48 test154 104.7 sec 1502: 12666 of 22139 42.8% 14.35/s -05-Sep 10:44:56 test154 367.6 sec 2: 12664 of 22139 42.8% 0.01/s -05-Sep 10:45:07 test238 11.5 sec 50: 12614 of 22139 43.0% 4.36/s -05-Sep 10:46:09 test238 61.3 sec 2: 12612 of 22139 43.0% 0.03/s -05-Sep 10:47:42 test151b 93.1 sec 173: 12439 of 22139 43.8% 1.86/s -05-Sep 10:49:18 test151b 96.1 sec 1: 12438 of 22139 43.8% 0.01/s -05-Sep 10:56:19 test151b 421.3 sec 1: 12437 of 22139 43.8% 0.00/s -05-Sep 10:56:24 test184 3.2 sec 38: 12399 of 22139 44.0% 12.04/s -05-Sep 10:56:36 test191 12.7 sec 21: 12378 of 22139 44.1% 1.66/s -05-Sep 10:57:05 test191 28.2 sec 3: 12375 of 22139 44.1% 0.11/s -05-Sep 11:03:55 test188 410.7 sec 183: 12192 of 22139 44.9% 0.45/s -05-Sep 11:06:21 test188 145.0 sec 3: 12189 of 22139 44.9% 0.02/s -05-Sep 11:06:26 test224 4.7 sec 24: 12165 of 22139 45.1% 5.05/s -05-Sep 11:06:29 test196 2.4 sec 11: 12154 of 22139 45.1% 4.51/s -05-Sep 11:06:33 test209 4.7 sec 20: 12134 of 22139 45.2% 4.29/s -05-Sep 11:06:50 test104 16.8 sec 40: 12094 of 22139 45.4% 2.38/s -05-Sep 11:06:58 test189 8.2 sec 1: 12093 of 22139 45.4% 0.12/s -05-Sep 11:08:02 test194 63.4 sec 5: 12088 of 22139 45.4% 0.08/s -05-Sep 11:08:16 test76 14.4 sec 15: 12073 of 22139 45.5% 1.04/s -05-Sep 11:08:55 test244 38.5 sec 17: 12056 of 22139 45.5% 0.44/s -[malloc debugging turned off] -05-Sep 11:08:55 test201 0.0 sec 3: 12053 of 22139 45.6% 315.89/s -05-Sep 11:08:55 test225 0.2 sec 4: 12049 of 22139 45.6% 26.63/s -05-Sep 11:08:55 test176 0.1 sec 5: 12044 of 22139 45.6% 71.58/s -05-Sep 11:08:55 test208 0.0 sec 5: 12039 of 22139 45.6% 309.79/s -05-Sep 11:08:55 test216 0.1 sec 3: 12036 of 22139 45.6% 29.06/s -05-Sep 11:10:10 test142 74.2 sec 630: 11406 of 22139 48.5% 8.49/s -05-Sep 11:10:33 test142 22.9 sec 2: 11404 of 22139 48.5% 0.09/s -05-Sep 11:13:36 test142 183.0 sec 2: 11402 of 22139 48.5% 0.01/s -05-Sep 11:14:00 test142 23.2 sec 2: 11400 of 22139 48.5% 0.09/s -05-Sep 11:14:00 test137 0.4 sec 3: 11397 of 22139 48.5% 7.36/s -05-Sep 11:14:00 test137 0.0 sec 2: 11395 of 22139 48.5% 228.18/s -05-Sep 11:14:01 test139 0.5 sec 2: 11393 of 22139 48.5% 3.97/s -05-Sep 11:14:01 test172 0.1 sec 3: 11390 of 22139 48.6% 37.90/s -05-Sep 11:14:02 test148 0.9 sec 4: 11386 of 22139 48.6% 4.59/s -05-Sep 11:14:02 test157 0.6 sec 12: 11374 of 22139 48.6% 19.60/s -05-Sep 11:14:03 test182 1.0 sec 8: 11366 of 22139 48.7% 8.16/s -05-Sep 11:14:04 test108 0.6 sec 2: 11364 of 22139 48.7% 3.21/s -05-Sep 11:14:04 test108 0.4 sec 1: 11363 of 22139 48.7% 2.69/s -05-Sep 11:14:05 test130 0.8 sec 26: 11337 of 22139 48.8% 32.95/s -05-Sep 11:14:05 test124 0.2 sec 3: 11334 of 22139 48.8% 16.21/s -05-Sep 11:14:06 test138 0.1 sec 1: 11333 of 22139 48.8% 19.29/s -05-Sep 11:14:10 test227 4.0 sec 27: 11306 of 22139 48.9% 6.81/s -05-Sep 11:14:36 test125 26.4 sec 630: 10676 of 22139 51.8% 23.90/s -05-Sep 11:16:47 test234 131.5 sec 396: 10280 of 22139 53.6% 3.01/s -05-Sep 11:20:27 test234 219.1 sec 2: 10278 of 22139 53.6% 0.01/s -05-Sep 11:21:07 test242 40.5 sec 77: 10201 of 22139 53.9% 1.90/s -05-Sep 11:21:09 test173 1.5 sec 11: 10190 of 22139 54.0% 7.47/s -05-Sep 11:21:11 test200 2.7 sec 10: 10180 of 22139 54.0% 3.72/s -05-Sep 11:21:12 test197 0.1 sec 1: 10179 of 22139 54.0% 7.35/s -05-Sep 11:21:13 test84 1.2 sec 18: 10161 of 22139 54.1% 15.33/s -05-Sep 11:21:23 test19b 10.0 sec 58: 10103 of 22139 54.4% 5.81/s -05-Sep 11:21:28 test19b 5.2 sec 5: 10098 of 22139 54.4% 0.96/s -05-Sep 11:21:28 test133 0.4 sec 2: 10096 of 22139 54.4% 5.15/s -05-Sep 11:21:33 test80 4.2 sec 12: 10084 of 22139 54.5% 2.89/s -05-Sep 11:21:48 test151 15.4 sec 73: 10011 of 22139 54.8% 4.73/s -05-Sep 11:22:59 test151 70.9 sec 2: 10009 of 22139 54.8% 0.03/s -05-Sep 11:24:17 test23 78.4 sec 146: 9863 of 22139 55.4% 1.86/s -05-Sep 11:25:19 test23 61.1 sec 2: 9861 of 22139 55.5% 0.03/s -05-Sep 11:25:21 test135 1.9 sec 7: 9854 of 22139 55.5% 3.66/s -05-Sep 11:26:37 test160 76.2 sec 23: 9831 of 22139 55.6% 0.30/s -05-Sep 11:27:53 test160 75.6 sec 1: 9830 of 22139 55.6% 0.01/s -05-Sep 11:27:58 test54 5.1 sec 20: 9810 of 22139 55.7% 3.90/s -05-Sep 11:27:59 test129 1.0 sec 4: 9806 of 22139 55.7% 4.09/s -05-Sep 11:28:01 test69 2.0 sec 3: 9803 of 22139 55.7% 1.50/s -05-Sep 11:29:22 test230 81.0 sec 114: 9689 of 22139 56.2% 1.41/s -05-Sep 12:49:06 test74 4784.6 sec 6588: 3101 of 22139 86.0% 1.38/s -05-Sep 13:21:22 test74 1935.1 sec 7: 3094 of 22139 86.0% 0.00/s -05-Sep 13:27:05 test127 343.4 sec 1633: 1461 of 22139 93.4% 4.75/s -05-Sep 13:39:24 test127 738.7 sec 18: 1443 of 22139 93.5% 0.02/s -05-Sep 14:27:40 test127 2896.1 sec 2: 1441 of 22139 93.5% 0.00/s -05-Sep 14:28:14 test19 3.1 sec 12: 1429 of 22139 93.5% 3.86/s -05-Sep 14:28:17 test11 3.5 sec 3: 1426 of 22139 93.6% 0.87/s -05-Sep 14:28:21 test215 3.2 sec 1: 1425 of 22139 93.6% 0.31/s -05-Sep 14:28:36 test193 15.0 sec 5: 1420 of 22139 93.6% 0.33/s -05-Sep 14:31:13 test195 157.4 sec 39: 1381 of 22139 93.8% 0.25/s -05-Sep 14:31:35 test243 21.6 sec 7: 1374 of 22139 93.8% 0.32/s -05-Sep 14:31:48 test29 12.7 sec 1: 1373 of 22139 93.8% 0.08/s -05-Sep 14:31:58 test29 10.4 sec 2: 1371 of 22139 93.8% 0.19/s -05-Sep 14:32:15 testc2(0,0) 17.2 sec 2: 1369 of 22139 93.8% 0.12/s -05-Sep 14:32:16 testc2(0,0) 1.2 sec 6: 1363 of 22139 93.8% 5.08/s -05-Sep 14:32:18 testc2(0,0) 1.4 sec 1: 1362 of 22139 93.8% 0.70/s -05-Sep 14:32:19 testc4(0) 0.6 sec 4: 1358 of 22139 93.9% 6.58/s -05-Sep 14:32:33 testc7(0) 14.1 sec 1: 1357 of 22139 93.9% 0.07/s -05-Sep 14:32:38 testcc(1) 5.0 sec 1: 1356 of 22139 93.9% 0.20/s -05-Sep 14:32:45 test187 7.5 sec 3: 1353 of 22139 93.9% 0.40/s -05-Sep 14:32:50 test192 5.1 sec 1: 1352 of 22139 93.9% 0.20/s -05-Sep 14:33:06 test181 15.9 sec 10: 1342 of 22139 93.9% 0.63/s -05-Sep 14:34:55 test185 109.0 sec 6: 1336 of 22139 94.0% 0.06/s -05-Sep 14:35:36 test53 41.1 sec 4: 1332 of 22139 94.0% 0.10/s -05-Sep 14:36:22 test17 45.5 sec 28: 1304 of 22139 94.1% 0.61/s -05-Sep 14:42:42 test231 380.3 sec 162: 1142 of 22139 94.8% 0.43/s -05-Sep 15:27:01 test10 2658.7 sec 946: 196 of 22139 99.1% 0.36/s -05-Sep 15:34:32 test75b 426.3 sec 151: 45 of 22139 99.8% 0.35/s -05-Sep 15:35:55 test21b 81.3 sec 26: 19 of 22139 99.9% 0.32/s -05-Sep 15:36:46 testca(1) 51.4 sec 5: 14 of 22139 99.9% 0.10/s -05-Sep 15:38:39 test81 112.9 sec 1: 13 of 22139 99.9% 0.01/s -05-Sep 15:43:51 test18 311.6 sec 13: all 22139 full 100% 0.04/s -[malloc debugging turned back on] diff --git a/Test/GB_mex_dup.c b/Test/GB_mex_dup.c index ee51af00f2..f518d95610 100644 --- a/Test/GB_mex_dup.c +++ b/Test/GB_mex_dup.c @@ -10,7 +10,6 @@ // copy and typecast a matrix #include "GB_mex.h" -#include "GB_mex_errors.h" #define USAGE "C = GB_mex_dup (A, type, method, sparsity)" @@ -41,11 +40,16 @@ void mexFunction mexErrMsgTxt ("Usage: " USAGE) ; } - #define GET_DEEP_COPY ; + #define GET_DEEP_COPY ; #define FREE_DEEP_COPY ; + // get A (shallow copy) A = GB_mx_mxArray_to_Matrix (pargin [0], "A input", false, true) ; - GrB_Matrix_set_String (A, "A input", GrB_NAME) ; + if (A == NULL) + { + FREE_ALL ; + mexErrMsgTxt ("A failed") ; + } // get ctype of output matrix GrB_Type ctype = GB_mx_string_to_Type (PARGIN (1), A->type) ; @@ -62,12 +66,6 @@ void mexFunction if (method == 0 && sparsity == GxB_DEFAULT) { METHOD (GrB_Matrix_dup (&C, A)) ; - - // get the name of the C matrix - char name [256] ; - GrB_Matrix_get_String (C, name, GrB_NAME) ; - CHECK (MATCH (name, "A input")) ; - } else { diff --git a/Test/GB_mex_generic.h b/Test/GB_mex_generic.h index 24df5af9f9..31ffd1f08a 100644 --- a/Test/GB_mex_generic.h +++ b/Test/GB_mex_generic.h @@ -16,147 +16,6 @@ // testing the _Generic versions //------------------------------------------------------------------------------ -// GrB_get: -#define GrB_Scalar_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Scalar_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Scalar_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Scalar_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Scalar_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Vector_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Vector_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Vector_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Vector_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Vector_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Matrix_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Matrix_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Matrix_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Matrix_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Matrix_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GxB_Serialized_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GxB_Serialized_get_String_(...) GrB_get (__VA_ARGS__) -#define GxB_Serialized_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GxB_Serialized_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GxB_Serialized_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_UnaryOp_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_UnaryOp_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_UnaryOp_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_UnaryOp_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_UnaryOp_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_IndexUnaryOp_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_IndexUnaryOp_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_IndexUnaryOp_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_IndexUnaryOp_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_IndexUnaryOp_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_BinaryOp_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_BinaryOp_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_BinaryOp_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_BinaryOp_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_BinaryOp_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Monoid_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Monoid_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Monoid_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Monoid_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Monoid_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Semiring_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Semiring_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Semiring_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Semiring_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Semiring_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Descriptor_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Descriptor_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Descriptor_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Descriptor_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Descriptor_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Type_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Type_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Type_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Type_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Type_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GrB_Global_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GrB_Global_get_String_(...) GrB_get (__VA_ARGS__) -#define GrB_Global_get_INT32_(...) GrB_get (__VA_ARGS__) -#define GrB_Global_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GrB_Global_get_VOID_(...) GrB_get (__VA_ARGS__) - -#define GxB_Context_get_Scalar_(...) GrB_get (__VA_ARGS__) -#define GxB_Context_get_String_(...) GrB_get (__VA_ARGS__) -#define GxB_Context_get_INT_(...) GrB_get (__VA_ARGS__) -#define GxB_Context_get_SIZE_(...) GrB_get (__VA_ARGS__) -#define GxB_Context_get_VOID_(...) GrB_get (__VA_ARGS__) - -// GrB_set: - -#define GrB_Scalar_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Scalar_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Scalar_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Scalar_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Vector_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Vector_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Vector_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Vector_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Matrix_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Matrix_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Matrix_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Matrix_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_UnaryOp_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_UnaryOp_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_UnaryOp_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_UnaryOp_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_IndexUnaryOp_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_IndexUnaryOp_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_IndexUnaryOp_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_IndexUnaryOp_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_BinaryOp_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_BinaryOp_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_BinaryOp_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_BinaryOp_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Monoid_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Monoid_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Monoid_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Monoid_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Semiring_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Semiring_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Semiring_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Semiring_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Descriptor_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Descriptor_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Descriptor_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Descriptor_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Type_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Type_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Type_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Type_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GrB_Global_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GrB_Global_set_String_(...) GrB_set (__VA_ARGS__) -#define GrB_Global_set_INT32_(...) GrB_set (__VA_ARGS__) -#define GrB_Global_set_VOID_(...) GrB_set (__VA_ARGS__) - -#define GxB_Context_set_Scalar_(...) GrB_set (__VA_ARGS__) -#define GxB_Context_set_String_(...) GrB_set (__VA_ARGS__) -#define GxB_Context_set_INT_(...) GrB_set (__VA_ARGS__) -#define GxB_Context_set_VOID_(...) GrB_set (__VA_ARGS__) - // GrB_free: #define GrB_Type_free_(...) GrB_free (__VA_ARGS__) #define GrB_UnaryOp_free_(...) GrB_free (__VA_ARGS__) diff --git a/Test/GB_mex_serialize.c b/Test/GB_mex_serialize.c index ca30a0cfec..c12dc9f68e 100644 --- a/Test/GB_mex_serialize.c +++ b/Test/GB_mex_serialize.c @@ -19,7 +19,7 @@ // method: // -2 // GrB*serialize with default LZ4 compression // GxB_COMPRESSION_NONE -1 // no compression -// GxB_COMPRESSION_DEFAULT 0 // ZSTD level 1 +// GxB_COMPRESSION_DEFAULT 0 // LZ4 // GxB_COMPRESSION_LZ4 1000 // LZ4 // GxB_COMPRESSION_LZ4HC 2000 // LZ4HC, with default level 9 // GxB_COMPRESSION_LZ4HC 2001 // LZ4HC:1 diff --git a/Test/GB_mex_test0.c b/Test/GB_mex_test0.c index c0fcb37635..d0f258cb6a 100644 --- a/Test/GB_mex_test0.c +++ b/Test/GB_mex_test0.c @@ -3868,7 +3868,10 @@ void mexFunction ERR (GB_Type_check (Tcrud, "Tcrud", G1, ff)) ; CHECK (T == NULL) ; - OK (GrB_Type_new (&T, sizeof (int))) ; + // test the function instead of the macro: + #undef GrB_Type_new + #undef GrM_Type_new + OK (GRB (Type_new) (&T, sizeof (int))) ; Werk->where = "GB_Type_check" ; OK (GB_Type_check (T, "T ok (via function)", G3, ff)) ; @@ -3910,7 +3913,10 @@ void mexFunction CHECK (info == GrB_NULL_POINTER) ; CHECK (op1b == NULL) ; - OK (GrB_UnaryOp_new (&op1b, (GxB_unary_function) f1, GrB_FP64, GrB_UINT32)) ; + // test the function instead of the macro: + #undef GrB_UnaryOp_new + #undef GrM_UnaryOp_new + OK (GRB (UnaryOp_new) (&op1b, (GxB_unary_function) f1, GrB_FP64, GrB_UINT32)) ; CHECK (op1b != NULL) ; OK (GrB_UnaryOp_wait_(op1b, GrB_MATERIALIZE)) ; @@ -3955,7 +3961,10 @@ void mexFunction CHECK (info == GrB_NULL_POINTER) ; CHECK (op2b == NULL) ; - OK (GrB_BinaryOp_new (&op2b, (GxB_binary_function) f2, GrB_INT32, GrB_UINT8, GrB_INT16)) ; + // test the function instead of the macro: + #undef GrB_BinaryOp_new + #undef GrM_BinaryOp_new + OK (GRB (BinaryOp_new) (&op2b, (GxB_binary_function) f2, GrB_INT32, GrB_UINT8, GrB_INT16)) ; CHECK (op2b != NULL) ; Werk->where = "GB_BinaryOp_check" ; @@ -3991,6 +4000,54 @@ void mexFunction printf ("\nAll GB_BinaryOp_check tests passed (errors expected)\n") ; + //-------------------------------------------------------------------------- + // SelectOp check + //-------------------------------------------------------------------------- + +#if 0 + printf ("\n-------------- GB_SelectOp_check:\n") ; + + Werk->where = "GB_SelectOp_check" ; + + info = GB_SelectOp_check (NULL, "null selectop", G3, ff) ; + CHECK (info == GrB_NULL_POINTER) ; + + CHECK (selectop == NULL) ; + // test the function instead of the macro: + #undef GxB_SelectOp_new + #undef GxM_SelectOp_new + OK (GXB (SelectOp_new) (&selectop, (GxB_select_function) fselect, GrB_FP64, GrB_FP64)) ; + CHECK (selectop != NULL) ; + + Werk->where = "GB_SelectOp_check" ; + OK (GB_SelectOp_check (selectop, "user selectop ok (via function)", G3, + ff)) ; + + expected = GrB_UNINITIALIZED_OBJECT ; + + selectop->magic = GB_FREED ; + ERR (GB_SelectOp_check (selectop, "selectop freed", G1, ff)) ; + selectop->magic = GB_MAGIC ; + + expected = GrB_INVALID_OBJECT ; + + selectop->selop_function = NULL ; + ERR (GB_SelectOp_check (selectop, "selectop invalid function", G1, ff)) ; + selectop->selop_function = (GxB_select_function) fselect ; + + selectop->opcode = 9999 ; + ERR (GB_SelectOp_check (selectop, "selectop invalid opcode", G1, ff)) ; + selectop->opcode = GB_USER_selop_code ; + + selectop->xtype = Tcrud ; + ERR (GB_SelectOp_check (selectop, "selectop invalid xtype", G1, ff)) ; + selectop->xtype = GrB_FP64 ; + + OK (GB_SelectOp_check (selectop, "user selectop ok", G3, ff)) ; + + printf ("\nAll GB_SelectOp_check tests passed (errors expected)\n") ; +#endif + //-------------------------------------------------------------------------- // Monoid check //-------------------------------------------------------------------------- diff --git a/Test/GB_mex_test1.c b/Test/GB_mex_test1.c index 44d943e043..0423432732 100644 --- a/Test/GB_mex_test1.c +++ b/Test/GB_mex_test1.c @@ -84,16 +84,12 @@ void mexFunction sizeof (struct GB_Monoid_opaque)) ; printf ("sizeof (struct GB_Semiring_opaque) %d\n", sizeof (struct GB_Semiring_opaque)) ; - printf ("sizeof (struct GB_Scalar_opaque) %d\n", - sizeof (struct GB_Scalar_opaque)) ; printf ("sizeof (struct GB_Vector_opaque) %d\n", sizeof (struct GB_Vector_opaque)) ; printf ("sizeof (struct GB_Matrix_opaque) %d\n", sizeof (struct GB_Matrix_opaque)) ; printf ("sizeof (struct GB_Descriptor_opaque) %d\n", sizeof (struct GB_Descriptor_opaque)) ; - printf ("sizeof (struct GB_Context_opaque) %d\n", - sizeof (struct GB_Context_opaque)) ; size_t s ; GxB_Type_size (&s, GrB_BOOL ) ; printf ("%d %d\n", s, sizeof (bool )); diff --git a/Test/GB_mex_test11.c b/Test/GB_mex_test11.c index e001e37097..a9ae2cc94a 100644 --- a/Test/GB_mex_test11.c +++ b/Test/GB_mex_test11.c @@ -161,8 +161,12 @@ if (jit_enabled) mxFree (save_c) ; save_c = NULL ; + // test compiler flags OK (GxB_Global_Option_get_CHAR (GxB_JIT_C_COMPILER_FLAGS, &s)) ; printf ("default flags [%s]\n", s) ; + len = strlen (s) ; + char *save_flags = mxMalloc (len+2) ; + strcpy (save_flags, s) ; OK (GxB_set (GxB_JIT_C_COMPILER_FLAGS, "-g")) ; OK (GxB_get (GxB_JIT_C_COMPILER_FLAGS, &s)) ; CHECK (MATCH (s, "-g")) ; @@ -171,7 +175,11 @@ if (jit_enabled) OK (GxB_Global_Option_set_CHAR (GxB_JIT_C_COMPILER_FLAGS, "-O0")) ; OK (GxB_Global_Option_get_CHAR (GxB_JIT_C_COMPILER_FLAGS, &t)) ; CHECK (MATCH (t, "-O0")) ; + OK (GxB_Global_Option_set_CHAR (GxB_JIT_C_COMPILER_FLAGS, save_flags)) ; + mxFree (save_flags) ; + save_flags = NULL ; + // test libraries for cmake OK (GxB_get (GxB_JIT_C_CMAKE_LIBS, &s)) ; printf ("default C cmake libs [%s]\n", s) ; printf ("set cmake libs:\n") ; @@ -227,6 +235,7 @@ if (jit_enabled) OK (GxB_Global_Option_get_CHAR (GxB_JIT_C_PREFACE, &t)) ; CHECK (MATCH (t, "// more stuff here")) ; + OK (GxB_Type_new (&MyType, 0, "mytype", "typedef double mytype ;")) ; OK (GxB_Type_size (&mysize, MyType)) ; CHECK (mysize == sizeof (double)) ; @@ -480,7 +489,7 @@ if (jit_enabled) OK (GxB_Context_engage (context1)) ; expected = GrB_INVALID_VALUE ; ERR (GxB_Context_disengage (context2)) ; - OK (GxB_Context_set (context1, GxB_CHUNK, (double) -1)) ; + OK (GxB_Context_set (context1, GxB_CHUNK, -1)) ; double chunk = 0 ; OK (GxB_Context_get (context1, GxB_CHUNK, &chunk)) ; CHECK (chunk == GB_CHUNK_DEFAULT) ; @@ -502,7 +511,6 @@ if (jit_enabled) OK (GxB_Context_set_INT32 (context1, GxB_CONTEXT_GPU_ID, 40)) ; OK (GxB_Context_get_INT32 (context1, GxB_CONTEXT_GPU_ID, &id1)) ; - OK (GxB_Context_disengage (context1)) ; GrB_free (&context1) ; GrB_free (&context2) ; diff --git a/Test/unused/GB_mex_test23.c b/Test/GB_mex_test23.c similarity index 100% rename from Test/unused/GB_mex_test23.c rename to Test/GB_mex_test23.c diff --git a/Test/GB_mex_test25.c b/Test/GB_mex_test25.c index ab9ad206fd..7dbfa16e21 100644 --- a/Test/GB_mex_test25.c +++ b/Test/GB_mex_test25.c @@ -9,7 +9,6 @@ #include "GB_mex.h" #include "GB_mex_errors.h" -#include "GB_get_set.h" #define USAGE "GB_mex_test25" @@ -73,35 +72,6 @@ void mexFunction printf ("GxB_Context_error [%s] ok\n", s) ; OK (GxB_Context_wait (GxB_CONTEXT_WORLD, GrB_COMPLETE)) ; - //-------------------------------------------------------------------------- - // report object sizes - //-------------------------------------------------------------------------- - - printf ("%4d: sizeof (struct GB_Type_opaque)\n", - (int) sizeof (struct GB_Type_opaque)) ; - printf ("%4d: sizeof (struct GB_UnaryOp_opaque)\n", - (int) sizeof (struct GB_UnaryOp_opaque)) ; - printf ("%4d: sizeof (struct GB_BinaryOp_opaque)\n", - (int) sizeof (struct GB_BinaryOp_opaque)) ; - printf ("%4d: sizeof (struct GB_SelectOp_opaque)\n", - (int) sizeof (struct GB_SelectOp_opaque)) ; - printf ("%4d: sizeof (struct GB_Monoid_opaque)\n", - (int) sizeof (struct GB_Monoid_opaque)) ; - printf ("%4d: sizeof (struct GB_Semiring_opaque)\n", - (int) sizeof (struct GB_Semiring_opaque)) ; - printf ("%4d: sizeof (struct GB_Scalar_opaque)\n", - (int) sizeof (struct GB_Scalar_opaque)) ; - printf ("%4d: sizeof (struct GB_Vector_opaque)\n", - (int) sizeof (struct GB_Vector_opaque)) ; - printf ("%4d: sizeof (struct GB_Matrix_opaque)\n", - (int) sizeof (struct GB_Matrix_opaque)) ; - printf ("%4d: sizeof (struct GB_Descriptor_opaque)\n", - (int) sizeof (struct GB_Descriptor_opaque)) ; - printf ("%4d: sizeof (struct GB_Context_opaque)\n", - (int) sizeof (struct GB_Context_opaque)) ; - printf ("%4d: sizeof (struct GB_Global_opaque)\n", - (int) sizeof (struct GB_Global_opaque)) ; - //-------------------------------------------------------------------------- // finalize GraphBLAS //-------------------------------------------------------------------------- diff --git a/Test/GB_mex_test26.c b/Test/GB_mex_test26.c deleted file mode 100644 index 77e0bbebe7..0000000000 --- a/Test/GB_mex_test26.c +++ /dev/null @@ -1,670 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test26: test GrB_get and GrB_set (type, scalar, vector, matrix) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test26" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -typedef struct { int32_t stuff ; } mytype ; -#define MYTYPE_DEFN \ -"typedef struct { int32_t stuff ; } mytype ;" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Matrix A = NULL ; - GrB_Vector v = NULL ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL, - s_uint64 = NULL ; - GrB_Type type = NULL ; - uint64_t u64 ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - OK (GrB_Scalar_new (&s_uint64, GrB_UINT64)) ; - - //-------------------------------------------------------------------------- - // GrB_Type get/set - //-------------------------------------------------------------------------- - - // type name size - OK (GrB_Type_get_SIZE_(GrB_BOOL, &size, GrB_NAME)) ; - CHECK (size == strlen ("GrB_BOOL") + 1) ; - - OK (GrB_Type_get_SIZE_(GrB_BOOL, &size, GxB_JIT_C_NAME)) ; - CHECK (size == strlen ("bool") + 1) ; - - // type name - OK (GrB_Type_get_String_(GrB_BOOL, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_BOOL")) ; - - OK (GrB_Type_get_String_(GrB_INT8, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_INT8")) ; - - OK (GrB_Type_get_String_(GrB_INT16, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_INT16")) ; - - OK (GrB_Type_get_String_(GrB_INT32, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_INT32")) ; - - OK (GrB_Type_get_String_(GrB_INT64, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_INT64")) ; - - OK (GrB_Type_get_String_(GrB_UINT8, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_UINT8")) ; - - OK (GrB_Type_get_String_(GrB_UINT16, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_UINT16")) ; - - OK (GrB_Type_get_String_(GrB_UINT32, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_UINT32")) ; - - OK (GrB_Type_get_String_(GrB_UINT64, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_UINT64")) ; - - OK (GrB_Type_get_String_(GrB_FP32, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Type_get_String_(GrB_FP64, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_FP64")) ; - - OK (GrB_Type_get_String_(GxB_FC32, name, GrB_NAME)) ; - CHECK (MATCH (name, "GxB_FC32")) ; - - OK (GrB_Type_get_String_(GxB_FC64, name, GrB_NAME)) ; - CHECK (MATCH (name, "GxB_FC64")) ; - - // type JIT name - OK (GrB_Type_get_String_(GrB_BOOL, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "bool")) ; - - OK (GrB_Type_get_String_(GrB_INT8, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "int8_t")) ; - - OK (GrB_Type_get_String_(GrB_INT16, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "int16_t")) ; - - OK (GrB_Type_get_String_(GrB_INT32, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "int32_t")) ; - - OK (GrB_Type_get_String_(GrB_INT64, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "int64_t")) ; - - OK (GrB_Type_get_String_(GrB_UINT8, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "uint8_t")) ; - - OK (GrB_Type_get_String_(GrB_UINT16, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "uint16_t")) ; - - OK (GrB_Type_get_String_(GrB_UINT32, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "uint32_t")) ; - - OK (GrB_Type_get_String_(GrB_UINT64, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "uint64_t")) ; - - OK (GrB_Type_get_String_(GrB_FP32, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "float")) ; - - OK (GrB_Type_get_String_(GrB_FP64, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "double")) ; - - OK (GrB_Type_get_String_(GxB_FC32, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "GxB_FC32_t")) ; - - OK (GrB_Type_get_String_(GxB_FC64, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "GxB_FC64_t")) ; - - // type code - OK (GrB_Type_get_INT32_(GrB_BOOL, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_BOOL_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_INT8, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_INT8_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_INT16, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_INT16_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_INT32, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_INT32_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_INT64, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_INT64_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_UINT8, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_UINT8_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_UINT16, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_UINT16_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_UINT32, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_UINT32_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_UINT64, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_UINT64_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_FP32, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_Type_get_INT32_(GrB_FP64, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_Type_get_INT32_(GxB_FC32, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GxB_FC32_CODE) ; - - OK (GrB_Type_get_INT32_(GxB_FC64, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GxB_FC64_CODE) ; - - // type size (using a GrB_Scalar): recommended type of GrB_UINT64 - OK (GrB_Type_get_Scalar_(GrB_BOOL, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (bool)) ; - - OK (GrB_Type_get_Scalar_(GrB_INT8, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (int8_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_INT16, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (int16_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_INT32, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (int32_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_INT64, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (int64_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_UINT8, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (uint8_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_UINT16, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (uint16_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_UINT32, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (uint32_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_UINT64, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (uint64_t)) ; - - OK (GrB_Type_get_Scalar_(GrB_FP32, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (float)) ; - - OK (GrB_Type_get_Scalar_(GrB_FP64, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (double)) ; - - OK (GrB_Type_get_Scalar_(GxB_FC32, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (float complex)) ; - - OK (GrB_Type_get_Scalar_(GxB_FC64, s_uint64, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_UINT64_(&u64, s_uint64)) ; - CHECK (u64 == sizeof (double complex)) ; - - // type size (using an int32_t) - OK (GrB_Type_get_INT32_(GrB_BOOL, &i, GrB_SIZE)) ; - CHECK (i == sizeof (bool)) ; - - OK (GrB_Type_get_INT32_(GrB_INT8, &i, GrB_SIZE)) ; - CHECK (i == sizeof (int8_t)) ; - - OK (GrB_Type_get_INT32_(GrB_INT16, &i, GrB_SIZE)) ; - CHECK (i == sizeof (int16_t)) ; - - OK (GrB_Type_get_INT32_(GrB_INT32, &i, GrB_SIZE)) ; - CHECK (i == sizeof (int32_t)) ; - - OK (GrB_Type_get_INT32_(GrB_INT64, &i, GrB_SIZE)) ; - CHECK (i == sizeof (int64_t)) ; - - OK (GrB_Type_get_INT32_(GrB_UINT8, &i, GrB_SIZE)) ; - CHECK (i == sizeof (uint8_t)) ; - - OK (GrB_Type_get_INT32_(GrB_UINT16, &i, GrB_SIZE)) ; - CHECK (i == sizeof (uint16_t)) ; - - OK (GrB_Type_get_INT32_(GrB_UINT32, &i, GrB_SIZE)) ; - CHECK (i == sizeof (uint32_t)) ; - - OK (GrB_Type_get_INT32_(GrB_UINT64, &i, GrB_SIZE)) ; - CHECK (i == sizeof (uint64_t)) ; - - OK (GrB_Type_get_INT32_(GrB_FP32, &i, GrB_SIZE)) ; - CHECK (i == sizeof (float)) ; - - OK (GrB_Type_get_INT32_(GrB_FP64, &i, GrB_SIZE)) ; - CHECK (i == sizeof (double)) ; - - OK (GrB_Type_get_INT32_(GxB_FC32, &i, GrB_SIZE)) ; - CHECK (i == sizeof (float complex)) ; - - OK (GrB_Type_get_INT32_(GxB_FC64, &i, GrB_SIZE)) ; - CHECK (i == sizeof (double complex)) ; - - - // built-in type definition - OK (GrB_Type_get_SIZE_(GrB_BOOL, &size, GxB_JIT_C_DEFINITION)) ; - CHECK (size == 1) ; - OK (GrB_Type_get_String_(GrB_BOOL, defn, GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH (defn, "")) ; - - // user-defined type - OK (GrB_Type_new (&type, sizeof (mytype))) ; - OK (GxB_print (type, 3)) ; - expected = GrB_INVALID_VALUE ; - ERR (GrB_Type_set_String_(type, "", GxB_JIT_C_NAME)) ; - OK (GrB_Type_set_String_(type, "mytype", GxB_JIT_C_NAME)) ; - CHECK (type->hash == UINT64_MAX) ; - OK (GrB_Type_set_String_(type, MYTYPE_DEFN, GxB_JIT_C_DEFINITION)) ; - OK (GxB_print (type, 3)) ; - CHECK (type->hash != UINT64_MAX) ; - printf (" hash: %016lx\n", type->hash) ; - - OK (GrB_Type_get_SIZE_(type, &size, GrB_NAME)) ; - CHECK (size == 1) ; - OK (GrB_Type_set_String_ (type, "user name of a type", GrB_NAME)) ; - OK (GrB_Type_get_SIZE_(type, &size, GrB_NAME)) ; - CHECK (size == strlen ("user name of a type") + 1) ; - OK (GrB_Type_get_String_ (type, name, GrB_NAME)) ; - CHECK (MATCH (name, "user name of a type")) ; - - expected = GrB_ALREADY_SET ; - ERR (GrB_Type_set_String_ (type, "another user name of a type", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - OK (GrB_Type_get_String_(type, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "mytype")) ; - OK (GrB_Type_get_SIZE_(type, &size, GxB_JIT_C_NAME)) ; - CHECK (size == strlen ("mytype") + 1) ; - - OK (GrB_Type_get_SIZE_(type, &size, GxB_JIT_C_DEFINITION)) ; - CHECK (size == strlen (MYTYPE_DEFN) + 1) ; - OK (GrB_Type_get_String_(type, defn, GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH (defn, MYTYPE_DEFN)) ; - - OK (GrB_Type_get_Scalar_(type, s_int32, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == sizeof (mytype)) ; - - OK (GrB_Type_get_INT32_(type, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_UDT_CODE) ; - - OK (GrB_Type_get_String_(type, name, GrB_ELTYPE_STRING)) ; - CHECK (MATCH (name, "user name of a type")) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Type_get_INT32_(type, &code, GrB_ELTYPE_STRING)) ; - - i = -1 ; - OK (GrB_Type_get_Scalar_(type, s_int32, GrB_ELTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_UDT_CODE) ; - - OK (GrB_Type_get_Scalar_(type, s_int32, GrB_SIZE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == sizeof (mytype)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Type_get_Scalar_(type, s_int32, GrB_OUTP)) ; - ERR (GrB_Type_get_String_(type, name, GrB_OUTP)) ; - ERR (GrB_Type_get_SIZE_(type, &size, GrB_OUTP)) ; - ERR (GrB_Type_get_SIZE_(GrB_FP32, &size, GrB_SIZE)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Type_get_VOID_(type, nothing, 0)) ; - ERR (GrB_Type_set_Scalar_(type, s_int32, 0)) ; - ERR (GrB_Type_set_INT32_(type, 3, 0)) ; - ERR (GrB_Type_set_VOID_(type, nothing, 0, 256)) ; - - //-------------------------------------------------------------------------- - // GrB_Scalar get/set - //-------------------------------------------------------------------------- - - OK (GrB_Scalar_new (&s, GrB_FP32)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Scalar_get_VOID_(s, nothing, 0)) ; - - OK (GrB_Scalar_get_SIZE_(s, &size, GrB_ELTYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - OK (GrB_Scalar_get_String_(s, name, GrB_ELTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Scalar_get_String_(s, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - - OK (GrB_Scalar_get_INT32_(s, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - i = -1 ; - OK (GrB_Scalar_get_Scalar_(s, s_int32, GrB_ELTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_FP32_CODE) ; - - GxB_print (s, 3) ; - - OK (GrB_Scalar_get_INT32_(s, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - printf ("scalar storage: %d\n", i) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Scalar_get_INT32_(s, &i, GxB_FORMAT)) ; - printf ("scalar storage: %d\n", i) ; - CHECK (i == GxB_BY_COL) ; - - OK (GrB_Scalar_get_INT32_(s, &i, GxB_SPARSITY_CONTROL)) ; - printf ("sparsity control: %d\n", i) ; - CHECK (i == GxB_AUTO_SPARSITY) ; - - GxB_print (s_int32, 3) ; - OK (GrB_Scalar_get_INT32_(s_int32, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_FULL) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Scalar_get_INT32_(s_int32, &i, 0)) ; - ERR (GrB_Scalar_get_SIZE_(s, &size, 0)) ; - - ERR (GrB_Scalar_set_Scalar_(s, s_int32, 0)) ; - OK (GrB_Scalar_set_Scalar_(s, s_int32, GrB_STORAGE_ORIENTATION_HINT)) ; - - ERR (GrB_Scalar_set_INT32_(s, 0, 0)) ; - OK (GrB_Scalar_set_INT32_(s, 0, GrB_STORAGE_ORIENTATION_HINT)) ; - - OK (GrB_Scalar_set_String_(s, "scalar name", GrB_NAME)) ; - OK (GrB_Scalar_get_String_(s, name, GrB_NAME)) ; - OK (GrB_Scalar_get_SIZE_(s, &size, GrB_NAME)) ; - CHECK (MATCH (name, "scalar name")) ; - CHECK (size == strlen (name) + 1) ; - - OK (GrB_Scalar_set_String_(s, "another scalar name", GrB_NAME)) ; - OK (GrB_Scalar_get_String_(s, name, GrB_NAME)) ; - OK (GrB_Scalar_get_SIZE_(s, &size, GrB_NAME)) ; - CHECK (MATCH (name, "another scalar name")) ; - CHECK (size == strlen (name) + 1) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Scalar_set_VOID_(s, nothing, 0, 0)) ; - - //-------------------------------------------------------------------------- - // GrB_Vector get/set - //-------------------------------------------------------------------------- - - OK (GrB_Vector_new (&v, GrB_FP32, 10)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Vector_get_VOID_(v, nothing, 0)) ; - - OK (GrB_Vector_get_SIZE_(v, &size, GrB_ELTYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - OK (GrB_Vector_get_String_(v, name, GrB_ELTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Vector_get_String_(v, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - - OK (GrB_Vector_get_INT32_(v, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - i = -1 ; - OK (GrB_Vector_get_Scalar_(v, s_int32, GrB_ELTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_FP32_CODE) ; - - GxB_print (v, 3) ; - - OK (GrB_Vector_get_INT32_(v, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - printf ("vector storage: %d\n", i) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Vector_get_INT32_(v, &i, GxB_FORMAT)) ; - printf ("vector storage: %d\n", i) ; - CHECK (i == GxB_BY_COL) ; - - OK (GrB_Vector_set_INT32_(v, GrB_ROWMAJOR, GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Vector_get_INT32_(v, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Vector_get_INT32_(v, &i, GxB_SPARSITY_CONTROL)) ; - printf ("sparsity control: %d\n", i) ; - CHECK (i == GxB_AUTO_SPARSITY) ; - - OK (GrB_assign (v, NULL, NULL, 1, GrB_ALL, 10, NULL)) ; - GxB_print (v, 3) ; - - OK (GrB_Vector_get_INT32_(v, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_FULL) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Vector_get_INT32_(v, &i, 0)) ; - ERR (GrB_Vector_get_SIZE_(v, &size, 0)) ; - - fvalue = -1 ; - OK (GrB_Vector_get_Scalar_(v, s_fp32, GxB_BITMAP_SWITCH)) ; - OK (GrB_Scalar_extractElement_FP32_(&fvalue, s_fp32)) ; - printf ("bitmap switch: %g\n", fvalue) ; - CHECK (abs (fvalue - 0.04) < 1e-6) ; - - OK (GrB_Scalar_setElement_FP32_(s_fp32, 0.5)) ; - OK (GrB_Vector_set_Scalar_(v, s_fp32, GxB_BITMAP_SWITCH)) ; - OK (GrB_Vector_get_Scalar_(v, s_fp64, GxB_BITMAP_SWITCH)) ; - OK (GrB_Scalar_extractElement_FP64_(&dvalue, s_fp64)) ; - printf ("bitmap switch: %g\n", dvalue) ; - CHECK (abs (dvalue - 0.5) < 1e-6) ; - - OK (GrB_Scalar_setElement_INT32_(s_int32, GxB_BITMAP)) ; - OK (GrB_Vector_set_Scalar_(v, s_int32, GxB_SPARSITY_CONTROL)) ; - GxB_print (v, 3) ; - - OK (GrB_Vector_get_INT32_(v, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_BITMAP) ; - - OK (GrB_Vector_set_INT32_(v, GxB_SPARSE, GxB_SPARSITY_CONTROL)) ; - OK (GrB_Vector_get_INT32_(v, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_SPARSE) ; - - ERR (GrB_Vector_set_Scalar_(v, s_int32, GxB_HYPER_SWITCH)) ; - ERR (GrB_Vector_get_Scalar_(v, s_int32, GxB_HYPER_SWITCH)) ; - - OK (GrB_Vector_set_String_(v, "vector name", GrB_NAME)) ; - OK (GrB_Vector_get_String_(v, name, GrB_NAME)) ; - OK (GrB_Vector_get_SIZE_(v, &size, GrB_NAME)) ; - CHECK (MATCH (name, "vector name")) ; - CHECK (size == strlen (name) + 1) ; - - OK (GrB_Vector_set_String_(v, "another vector name", GrB_NAME)) ; - OK (GrB_Vector_get_String_(v, name, GrB_NAME)) ; - OK (GrB_Vector_get_SIZE_(v, &size, GrB_NAME)) ; - CHECK (MATCH (name, "another vector name")) ; - CHECK (size == strlen (name) + 1) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Vector_set_VOID_(v, nothing, 0, 1)) ; - - expected = GrB_EMPTY_OBJECT ; - OK (GrB_Scalar_clear (s_int32)) ; - ERR (GrB_Vector_set_Scalar_(v, s_int32, GxB_FORMAT)) ; - - //-------------------------------------------------------------------------- - // GrB_Matrix get/set - //-------------------------------------------------------------------------- - - OK (GrB_Matrix_new (&A, GrB_FP32, 5, 5)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Matrix_get_VOID_(A, nothing, 0)) ; - - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_ELTYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - OK (GrB_Matrix_get_String_(A, name, GrB_ELTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - - OK (GrB_Matrix_get_INT32_(A, &code, GrB_ELTYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - i = -1 ; - OK (GrB_Matrix_get_Scalar_(A, s_int32, GrB_ELTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_FP32_CODE) ; - - GxB_print (A, 3) ; - - OK (GrB_Matrix_get_INT32_(A, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - printf ("matrix storage: %d\n", i) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Matrix_get_INT32_(A, &i, GxB_FORMAT)) ; - printf ("matrix storage: %d\n", i) ; - CHECK (i == GxB_BY_COL) ; - - OK (GrB_Matrix_get_INT32_(A, &i, GxB_SPARSITY_CONTROL)) ; - printf ("sparsity control: %d\n", i) ; - CHECK (i == GxB_AUTO_SPARSITY) ; - - OK (GrB_assign (A, NULL, NULL, 1, GrB_ALL, 5, GrB_ALL, 5, NULL)) ; - GxB_print (A, 3) ; - - OK (GrB_Matrix_get_INT32_(A, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_FULL) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Matrix_get_INT32_(A, &i, 0)) ; - ERR (GrB_Matrix_get_SIZE_(A, &size, 0)) ; - - fvalue = -1 ; - OK (GrB_Matrix_get_Scalar_(A, s_fp32, GxB_BITMAP_SWITCH)) ; - OK (GrB_Scalar_extractElement_FP32_(&fvalue, s_fp32)) ; - printf ("bitmap switch: %g\n", fvalue) ; - CHECK (abs (fvalue - 0.04) < 1e-6) ; - - OK (GrB_Scalar_setElement_FP32_(s_fp32, 0.5)) ; - OK (GrB_Matrix_set_Scalar_(A, s_fp32, GxB_BITMAP_SWITCH)) ; - OK (GrB_Matrix_get_Scalar_(A, s_fp64, GxB_BITMAP_SWITCH)) ; - OK (GrB_Scalar_extractElement_FP64_(&dvalue, s_fp64)) ; - printf ("bitmap switch: %g\n", dvalue) ; - CHECK (abs (dvalue - 0.5) < 1e-6) ; - - OK (GrB_Scalar_setElement_INT32_(s_int32, GxB_BITMAP)) ; - OK (GrB_Matrix_set_Scalar_(A, s_int32, GxB_SPARSITY_CONTROL)) ; - GxB_print (A, 3) ; - - OK (GrB_Matrix_get_INT32_(A, &i, GxB_SPARSITY_STATUS)) ; - printf ("sparsity status: %d\n", i) ; - CHECK (i == GxB_BITMAP) ; - - OK (GrB_Scalar_setElement_FP32_(s_fp32, 0.25)) ; - OK (GrB_Matrix_set_Scalar_(A, s_fp32, GxB_HYPER_SWITCH)) ; - OK (GrB_Matrix_get_Scalar_(A, s_fp64, GxB_HYPER_SWITCH)) ; - OK (GrB_Scalar_extractElement_FP64_(&dvalue, s_fp64)) ; - printf ("hyper switch: %g\n", dvalue) ; - CHECK (abs (dvalue - 0.25) < 1e-6) ; - - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_NAME)) ; - CHECK (size == 1) ; - - OK (GrB_Matrix_set_String_(A, "matrix name", GrB_NAME)) ; - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_NAME)) ; - CHECK (MATCH (name, "matrix name")) ; - CHECK (size == strlen (name) + 1) ; - - OK (GrB_Matrix_set_String_(A, "another matrix name", GrB_NAME)) ; - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_NAME)) ; - CHECK (MATCH (name, "another matrix name")) ; - CHECK (size == strlen (name) + 1) ; - - OK (GrB_Matrix_get_String_(A, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "float")) ; - OK (GrB_Matrix_get_SIZE_(A, &size, GxB_JIT_C_NAME)) ; - CHECK (size == strlen ("float") + 1) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Matrix_set_String_ (A, "garbage", 999)) ; - ERR (GrB_Matrix_set_VOID_(A, nothing, 0, 1)) ; - ERR (GrB_Matrix_get_SIZE_(A, &size, 999)) ; - - OK (GrB_Matrix_set_INT32_(A, GrB_ROWMAJOR, GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Matrix_get_INT32_(A, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_ROWMAJOR) ; - OK (GrB_Matrix_get_INT32_(A, &i, GxB_FORMAT)) ; - CHECK (i == GxB_BY_ROW) ; - GxB_print (A, 3) ; - - OK (GrB_Matrix_set_INT32_(A, GrB_COLMAJOR, GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Matrix_get_INT32_(A, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - OK (GrB_Matrix_get_INT32_(A, &i, GxB_FORMAT)) ; - CHECK (i == GxB_BY_COL) ; - GxB_print (A, 3) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Matrix_set_INT32_(A, 99, GxB_FORMAT)) ; - ERR (GrB_Matrix_set_INT32_(A, 99, 999)) ; - ERR (GrB_Matrix_get_String_(A, defn, 999)) ; - ERR (GrB_Matrix_get_Scalar(A, s_int32, 999)) ; - - expected = GrB_EMPTY_OBJECT ; - OK (GrB_Scalar_clear (s_int32)) ; - ERR (GrB_Matrix_set_Scalar_(A, s_int32, GxB_FORMAT)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&A) ; - GrB_free (&v) ; - GrB_free (&s) ; - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&s_uint64) ; - GrB_free (&type) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test26: all tests passed.\n\n") ; -} - diff --git a/Test/GB_mex_test27.c b/Test/GB_mex_test27.c deleted file mode 100644 index 4044bf0247..0000000000 --- a/Test/GB_mex_test27.c +++ /dev/null @@ -1,476 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test27: test GrB_get and GrB_set (unary ops) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test27" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define GETOP(op,opname) \ -{ \ - OK (GrB_UnaryOp_get_String (op, name, GrB_NAME)) ; \ - CHECK (MATCH (name, opname)) ; \ - OK (GrB_UnaryOp_get_String (op, cname, GxB_JIT_C_NAME)) ; \ - printf ("%s: %s\n", name, cname) ; \ - OK (GrB_UnaryOp_get_SIZE (op, &size, GrB_NAME)) ; \ - CHECK (size == strlen (name) + 1) ; \ - GrB_Info info2, info3 ; \ - info2 = GrB_UnaryOp_get_SIZE (op, &size, GrB_INPUT1TYPE_STRING) ; \ - info3 = GrB_UnaryOp_get_String (op, name, GrB_INPUT1TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (size == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (size == 1) ; } \ - info2 = GrB_UnaryOp_get_SIZE (op, &size, GrB_INPUT2TYPE_STRING) ; \ - info3 = GrB_UnaryOp_get_String (op, name, GrB_INPUT2TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (size == 1) ; \ - CHECK (info2 == GrB_NO_VALUE) ; \ - info2 = GrB_UnaryOp_get_SIZE (op, &size, GrB_OUTPUTTYPE_STRING) ; \ - info3 = GrB_UnaryOp_get_String (op, name, GrB_OUTPUTTYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (size == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (size == 1) ; } \ -} - -#define GETNAME(op) \ -{ \ - GETOP (op, #op) ; \ -/* OK (GxB_UnaryOp_fprint (op, "unop", 3, NULL)) ; */ \ -} - -#define GETNAM2(op,alias) \ -{ \ - GETOP (op,alias) ; \ -/* OK (GxB_UnaryOp_fprint (op, "unop", 3, NULL)) ; */ \ -} - -void myfunc (float *z, const float *x) ; -void myfunc (float *z, const float *x) { (*z) = -(*x) ; } -#define MYFUNC_DEFN \ -"void myfunc (float *z, const float *x) { (*z) = -(*x) ; }" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_UnaryOp unop = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char cname [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_UnaryOp get name - //-------------------------------------------------------------------------- - - GETNAME (GrB_IDENTITY_BOOL) ; - GETNAME (GrB_IDENTITY_INT8) ; - GETNAME (GrB_IDENTITY_INT16) ; - GETNAME (GrB_IDENTITY_INT32) ; - GETNAME (GrB_IDENTITY_INT64) ; - GETNAME (GrB_IDENTITY_UINT8) ; - GETNAME (GrB_IDENTITY_UINT16) ; - GETNAME (GrB_IDENTITY_UINT32) ; - GETNAME (GrB_IDENTITY_UINT64) ; - GETNAME (GrB_IDENTITY_FP32) ; - GETNAME (GrB_IDENTITY_FP64) ; - GETNAME (GxB_IDENTITY_FC32) ; - GETNAME (GxB_IDENTITY_FC64) ; - - GETNAME (GrB_AINV_BOOL) ; - GETNAME (GrB_AINV_INT8) ; - GETNAME (GrB_AINV_INT16) ; - GETNAME (GrB_AINV_INT32) ; - GETNAME (GrB_AINV_INT64) ; - GETNAME (GrB_AINV_UINT8) ; - GETNAME (GrB_AINV_UINT16) ; - GETNAME (GrB_AINV_UINT32) ; - GETNAME (GrB_AINV_UINT64) ; - GETNAME (GrB_AINV_FP32) ; - GETNAME (GrB_AINV_FP64) ; - GETNAME (GxB_AINV_FC32) ; - GETNAME (GxB_AINV_FC64) ; - - GETNAME (GrB_MINV_BOOL) ; - GETNAME (GrB_MINV_INT8) ; - GETNAME (GrB_MINV_INT16) ; - GETNAME (GrB_MINV_INT32) ; - GETNAME (GrB_MINV_INT64) ; - GETNAME (GrB_MINV_UINT8) ; - GETNAME (GrB_MINV_UINT16) ; - GETNAME (GrB_MINV_UINT32) ; - GETNAME (GrB_MINV_UINT64) ; - GETNAME (GrB_MINV_FP32) ; - GETNAME (GrB_MINV_FP64) ; - GETNAME (GxB_MINV_FC32) ; - GETNAME (GxB_MINV_FC64) ; - - GETNAME (GrB_LNOT) ; - GETNAM2 (GxB_LNOT_BOOL, "GrB_LNOT") ; - GETNAME (GxB_LNOT_INT8) ; - GETNAME (GxB_LNOT_INT16) ; - GETNAME (GxB_LNOT_INT32) ; - GETNAME (GxB_LNOT_INT64) ; - GETNAME (GxB_LNOT_UINT8) ; - GETNAME (GxB_LNOT_UINT16) ; - GETNAME (GxB_LNOT_UINT32) ; - GETNAME (GxB_LNOT_UINT64) ; - GETNAME (GxB_LNOT_FP32) ; - GETNAME (GxB_LNOT_FP64) ; - - GETNAME (GxB_ONE_BOOL) ; - GETNAME (GxB_ONE_INT8) ; - GETNAME (GxB_ONE_INT16) ; - GETNAME (GxB_ONE_INT32) ; - GETNAME (GxB_ONE_INT64) ; - GETNAME (GxB_ONE_UINT8) ; - GETNAME (GxB_ONE_UINT16) ; - GETNAME (GxB_ONE_UINT32) ; - GETNAME (GxB_ONE_UINT64) ; - GETNAME (GxB_ONE_FP32) ; - GETNAME (GxB_ONE_FP64) ; - GETNAME (GxB_ONE_FC32) ; - GETNAME (GxB_ONE_FC64) ; - - GETNAME (GrB_ABS_BOOL) ; - GETNAME (GrB_ABS_INT8) ; - GETNAME (GrB_ABS_INT16) ; - GETNAME (GrB_ABS_INT32) ; - GETNAME (GrB_ABS_INT64) ; - GETNAME (GrB_ABS_UINT8) ; - GETNAME (GrB_ABS_UINT16) ; - GETNAME (GrB_ABS_UINT32) ; - GETNAME (GrB_ABS_UINT64) ; - GETNAME (GrB_ABS_FP32) ; - GETNAME (GrB_ABS_FP64) ; - - GETNAME (GrB_BNOT_INT8) ; - GETNAME (GrB_BNOT_INT16) ; - GETNAME (GrB_BNOT_INT32) ; - GETNAME (GrB_BNOT_INT64) ; - GETNAME (GrB_BNOT_UINT8) ; - GETNAME (GrB_BNOT_UINT16) ; - GETNAME (GrB_BNOT_UINT32) ; - GETNAME (GrB_BNOT_UINT64) ; - - GETNAM2 (GxB_ABS_BOOL, "GrB_ABS_BOOL") ; - GETNAM2 (GxB_ABS_INT8, "GrB_ABS_INT8") ; - GETNAM2 (GxB_ABS_INT16, "GrB_ABS_INT16") ; - GETNAM2 (GxB_ABS_INT32, "GrB_ABS_INT32") ; - GETNAM2 (GxB_ABS_INT64, "GrB_ABS_INT64") ; - GETNAM2 (GxB_ABS_UINT8, "GrB_ABS_UINT8") ; - GETNAM2 (GxB_ABS_UINT16, "GrB_ABS_UINT16") ; - GETNAM2 (GxB_ABS_UINT32, "GrB_ABS_UINT32") ; - GETNAM2 (GxB_ABS_UINT64, "GrB_ABS_UINT64") ; - GETNAM2 (GxB_ABS_FP32, "GrB_ABS_FP32") ; - GETNAM2 (GxB_ABS_FP64, "GrB_ABS_FP64") ; - GETNAME (GxB_ABS_FC32) ; - GETNAME (GxB_ABS_FC64) ; - - GETNAME (GxB_SQRT_FP32) ; - GETNAME (GxB_SQRT_FP64) ; - GETNAME (GxB_SQRT_FC32) ; - GETNAME (GxB_SQRT_FC64) ; - - GETNAME (GxB_LOG_FP32) ; - GETNAME (GxB_LOG_FP64) ; - GETNAME (GxB_LOG_FC32) ; - GETNAME (GxB_LOG_FC64) ; - - GETNAME (GxB_EXP_FP32) ; - GETNAME (GxB_EXP_FP64) ; - GETNAME (GxB_EXP_FC32) ; - GETNAME (GxB_EXP_FC64) ; - - GETNAME (GxB_LOG2_FP32) ; - GETNAME (GxB_LOG2_FP64) ; - GETNAME (GxB_LOG2_FC32) ; - GETNAME (GxB_LOG2_FC64) ; - - GETNAME (GxB_SIN_FP32) ; - GETNAME (GxB_SIN_FP64) ; - GETNAME (GxB_SIN_FC32) ; - GETNAME (GxB_SIN_FC64) ; - - GETNAME (GxB_COS_FP32) ; - GETNAME (GxB_COS_FP64) ; - GETNAME (GxB_COS_FC32) ; - GETNAME (GxB_COS_FC64) ; - - GETNAME (GxB_TAN_FP32) ; - GETNAME (GxB_TAN_FP64) ; - GETNAME (GxB_TAN_FC32) ; - GETNAME (GxB_TAN_FC64) ; - - GETNAME (GxB_ACOS_FP32) ; - GETNAME (GxB_ACOS_FP64) ; - GETNAME (GxB_ACOS_FC32) ; - GETNAME (GxB_ACOS_FC64) ; - - GETNAME (GxB_ASIN_FP32) ; - GETNAME (GxB_ASIN_FP64) ; - GETNAME (GxB_ASIN_FC32) ; - GETNAME (GxB_ASIN_FC64) ; - - GETNAME (GxB_ATAN_FP32) ; - GETNAME (GxB_ATAN_FP64) ; - GETNAME (GxB_ATAN_FC32) ; - GETNAME (GxB_ATAN_FC64) ; - - GETNAME (GxB_SINH_FP32) ; - GETNAME (GxB_SINH_FP64) ; - GETNAME (GxB_SINH_FC32) ; - GETNAME (GxB_SINH_FC64) ; - - GETNAME (GxB_COSH_FP32) ; - GETNAME (GxB_COSH_FP64) ; - GETNAME (GxB_COSH_FC32) ; - GETNAME (GxB_COSH_FC64) ; - - GETNAME (GxB_TANH_FP32) ; - GETNAME (GxB_TANH_FP64) ; - GETNAME (GxB_TANH_FC32) ; - GETNAME (GxB_TANH_FC64) ; - - GETNAME (GxB_ATANH_FP32) ; - GETNAME (GxB_ATANH_FP64) ; - GETNAME (GxB_ATANH_FC32) ; - GETNAME (GxB_ATANH_FC64) ; - - GETNAME (GxB_ASINH_FP32) ; - GETNAME (GxB_ASINH_FP64) ; - GETNAME (GxB_ASINH_FC32) ; - GETNAME (GxB_ASINH_FC64) ; - - GETNAME (GxB_ACOSH_FP32) ; - GETNAME (GxB_ACOSH_FP64) ; - GETNAME (GxB_ACOSH_FC32) ; - GETNAME (GxB_ACOSH_FC64) ; - - GETNAME (GxB_SIGNUM_FP32) ; - GETNAME (GxB_SIGNUM_FP64) ; - GETNAME (GxB_SIGNUM_FC32) ; - GETNAME (GxB_SIGNUM_FC64) ; - - GETNAME (GxB_CEIL_FP32) ; - GETNAME (GxB_CEIL_FP64) ; - GETNAME (GxB_CEIL_FC32) ; - GETNAME (GxB_CEIL_FC64) ; - - GETNAME (GxB_FLOOR_FP32) ; - GETNAME (GxB_FLOOR_FP64) ; - GETNAME (GxB_FLOOR_FC32) ; - GETNAME (GxB_FLOOR_FC64) ; - - GETNAME (GxB_ROUND_FP32) ; - GETNAME (GxB_ROUND_FP64) ; - GETNAME (GxB_ROUND_FC32) ; - GETNAME (GxB_ROUND_FC64) ; - - GETNAME (GxB_TRUNC_FP32) ; - GETNAME (GxB_TRUNC_FP64) ; - GETNAME (GxB_TRUNC_FC32) ; - GETNAME (GxB_TRUNC_FC64) ; - - GETNAME (GxB_EXP2_FP32) ; - GETNAME (GxB_EXP2_FP64) ; - GETNAME (GxB_EXP2_FC32) ; - GETNAME (GxB_EXP2_FC64) ; - - GETNAME (GxB_EXPM1_FP32) ; - GETNAME (GxB_EXPM1_FP64) ; - GETNAME (GxB_EXPM1_FC32) ; - GETNAME (GxB_EXPM1_FC64) ; - - GETNAME (GxB_LOG10_FP32) ; - GETNAME (GxB_LOG10_FP64) ; - GETNAME (GxB_LOG10_FC32) ; - GETNAME (GxB_LOG10_FC64) ; - - GETNAME (GxB_LOG1P_FP32) ; - GETNAME (GxB_LOG1P_FP64) ; - GETNAME (GxB_LOG1P_FC32) ; - GETNAME (GxB_LOG1P_FC64) ; - - GETNAME (GxB_LGAMMA_FP32) ; - GETNAME (GxB_LGAMMA_FP64) ; - - GETNAME (GxB_TGAMMA_FP32) ; - GETNAME (GxB_TGAMMA_FP64) ; - - GETNAME (GxB_ERF_FP32) ; - GETNAME (GxB_ERF_FP64) ; - - GETNAME (GxB_ERFC_FP32) ; - GETNAME (GxB_ERFC_FP64) ; - - GETNAME (GxB_CBRT_FP32) ; - GETNAME (GxB_CBRT_FP64) ; - - GETNAME (GxB_FREXPX_FP32) ; - GETNAME (GxB_FREXPX_FP64) ; - - GETNAME (GxB_FREXPE_FP32) ; - GETNAME (GxB_FREXPE_FP64) ; - - GETNAME (GxB_CONJ_FC32) ; - GETNAME (GxB_CONJ_FC64) ; - - GETNAME (GxB_CREAL_FC32) ; - GETNAME (GxB_CREAL_FC64) ; - - GETNAME (GxB_CIMAG_FC32) ; - GETNAME (GxB_CIMAG_FC64) ; - - GETNAME (GxB_CARG_FC32) ; - GETNAME (GxB_CARG_FC64) ; - - GETNAME (GxB_ISINF_FP32) ; - GETNAME (GxB_ISINF_FP64) ; - GETNAME (GxB_ISINF_FC32) ; - GETNAME (GxB_ISINF_FC64) ; - - GETNAME (GxB_ISNAN_FP32) ; - GETNAME (GxB_ISNAN_FP64) ; - GETNAME (GxB_ISNAN_FC32) ; - GETNAME (GxB_ISNAN_FC64) ; - - GETNAME (GxB_ISFINITE_FP32) ; - GETNAME (GxB_ISFINITE_FP64) ; - GETNAME (GxB_ISFINITE_FC32) ; - GETNAME (GxB_ISFINITE_FC64) ; - - GETNAME (GxB_POSITIONI_INT32) ; - GETNAME (GxB_POSITIONI_INT64) ; - GETNAME (GxB_POSITIONI1_INT32) ; - GETNAME (GxB_POSITIONI1_INT64) ; - - GETNAME (GxB_POSITIONJ_INT32) ; - GETNAME (GxB_POSITIONJ_INT64) ; - GETNAME (GxB_POSITIONJ1_INT32) ; - GETNAME (GxB_POSITIONJ1_INT64) ; - - //-------------------------------------------------------------------------- - // other get/set methods for GrB_UnaryOp - //-------------------------------------------------------------------------- - - OK (GrB_UnaryOp_get_INT32_(GrB_ABS_FP32, &code, GrB_INPUT1TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_UnaryOp_get_String_(GrB_ABS_FP32, name, GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_UnaryOp_get_INT32_(GrB_ABS_FP64, &code, GrB_OUTPUTTYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_UnaryOp_get_String_(GrB_ABS_FP64, name, GrB_OUTPUTTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP64")) ; - - OK (GrB_UnaryOp_get_Scalar_(GrB_ABS_FP32, s_int32, GrB_INPUT1TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_UnaryOp_get_Scalar_(GrB_LNOT, s_int32, GrB_OUTPUTTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - expected = GrB_NO_VALUE ; - ERR (GrB_UnaryOp_get_INT32_(GrB_BNOT_UINT8, &code, GrB_INPUT2TYPE_CODE)) ; - ERR (GrB_UnaryOp_get_Scalar_(GrB_LNOT, s_int32, GrB_INPUT2TYPE_CODE)) ; - ERR (GrB_UnaryOp_get_String_(GrB_BNOT_UINT8, name, GrB_INPUT2TYPE_STRING)) ; - ERR (GrB_UnaryOp_get_SIZE_(GrB_BNOT_UINT8, &size, GrB_INPUT2TYPE_STRING)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_UnaryOp_get_INT32_(GrB_BNOT_UINT8, &code, GrB_NAME)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_UnaryOp_get_VOID_(GrB_LNOT, nothing, 0)) ; - - OK (GrB_UnaryOp_new (&unop, myfunc, GrB_FP32, GrB_FP32)) ; - OK (GrB_UnaryOp_get_SIZE_(unop, &size, GrB_NAME)) ; - CHECK (size == 1) ; - OK (GrB_UnaryOp_get_SIZE_(unop, &size, GxB_JIT_C_NAME)) ; - CHECK (size == 1) ; - OK (GrB_UnaryOp_get_SIZE_(unop, &size, GxB_JIT_C_DEFINITION)) ; - CHECK (size == 1) ; - - expected = GrB_INVALID_VALUE ; - OK (GrB_UnaryOp_set_String_(unop, "myfunc", GxB_JIT_C_NAME)) ; - OK (GrB_UnaryOp_get_String_(unop, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "myfunc")) ; - - CHECK (unop->hash == UINT64_MAX) ; - METHOD (GrB_UnaryOp_set_String (unop, MYFUNC_DEFN, GxB_JIT_C_DEFINITION)) ; - OK (GrB_UnaryOp_get_String_(unop, defn, GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH (defn, MYFUNC_DEFN)) ; - CHECK (unop->hash != UINT64_MAX) ; - OK (GxB_print (unop, 3)) ; - - OK (GrB_UnaryOp_set_String_(unop, "user name for myfunc", GrB_NAME)) ; - OK (GrB_UnaryOp_get_String_(unop, name, GrB_NAME)) ; - CHECK (MATCH (name, "user name for myfunc")) ; - expected = GrB_ALREADY_SET ; - ERR (GrB_UnaryOp_set_String_(unop, "another user name", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - expected = GrB_NO_VALUE ; - ERR (GrB_UnaryOp_get_INT32_(unop, &code, GrB_INPUT2TYPE_CODE)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_UnaryOp_set_String_(unop, "another_name", 999)) ; - ERR (GrB_UnaryOp_get_SIZE(unop, &size, 999)) ; - - expected = GrB_ALREADY_SET ; - ERR (GrB_UnaryOp_set_String_(unop, "another_name", GxB_JIT_C_NAME)) ; - ERR (GrB_UnaryOp_set_String_(unop, "another_defn", GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH ("GrB_ALREADY_SET", GB_status_code (GrB_ALREADY_SET))) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_UnaryOp_set_String_(GrB_LNOT, "another_name", GxB_JIT_C_NAME)) ; - ERR (GrB_UnaryOp_set_Scalar_(unop, s_int32, 0)) ; - ERR (GrB_UnaryOp_set_INT32_(unop, 0, 0)) ; - ERR (GrB_UnaryOp_set_VOID_(unop, nothing, 0, 0)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&unop) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test27: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test28.c b/Test/GB_mex_test28.c deleted file mode 100644 index ab337738c4..0000000000 --- a/Test/GB_mex_test28.c +++ /dev/null @@ -1,680 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test28: test GrB_get and GrB_set (binary ops) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test28" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define GETOP(op,opname) \ -{ \ - size_t siz1, siz2, siz3 ; \ - OK (GrB_BinaryOp_get_String (op, name, GrB_NAME)) ; \ - CHECK (MATCH (name, opname)) ; \ - OK (GrB_BinaryOp_get_String (op, cname, GxB_JIT_C_NAME)) ; \ - printf ("%s: %s\n", name, cname) ; \ - OK (GrB_BinaryOp_get_SIZE (op, &size, GrB_NAME)) ; \ - CHECK (size == strlen (name) + 1) ; \ - GrB_Info info2, info3 ; \ - info2 = GrB_BinaryOp_get_SIZE (op, &siz1, GrB_INPUT1TYPE_STRING) ; \ - info3 = GrB_BinaryOp_get_String (op, name, GrB_INPUT1TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz1 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz1 == 1) ; } \ - info2 = GrB_BinaryOp_get_SIZE (op, &siz2, GrB_INPUT2TYPE_STRING) ; \ - info3 = GrB_BinaryOp_get_String (op, name, GrB_INPUT2TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz2 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz2 == 1) ; } \ - info2 = GrB_BinaryOp_get_SIZE (op, &siz3, GrB_OUTPUTTYPE_STRING) ; \ - info3 = GrB_BinaryOp_get_String (op, name, GrB_OUTPUTTYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz3 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz3 == 1) ; } \ -} - -#define GETNAME(op) \ -{ \ - GETOP (op, #op) ; \ -/* OK (GxB_BinaryOp_fprint (op, "binop", 3, NULL)) ; */ \ -} - -#define GETNAM2(op,alias) \ -{ \ - GETOP (op,alias) ; \ -/* OK (GxB_BinaryOp_fprint (op, "binop", 3, NULL)) ; */ \ -} - -void myfunc (float *z, const float *x, const float *y) ; -void myfunc (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; } -#define MYFUNC_DEFN \ -"void myfunc (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; }" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_BinaryOp binop = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char cname [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_BinaryOp get name - //-------------------------------------------------------------------------- - - GETNAME (GrB_FIRST_BOOL) ; - GETNAME (GrB_FIRST_INT8) ; - GETNAME (GrB_FIRST_INT16) ; - GETNAME (GrB_FIRST_INT32) ; - GETNAME (GrB_FIRST_INT64) ; - GETNAME (GrB_FIRST_UINT8) ; - GETNAME (GrB_FIRST_UINT16) ; - GETNAME (GrB_FIRST_UINT32) ; - GETNAME (GrB_FIRST_UINT64) ; - GETNAME (GrB_FIRST_FP32) ; - GETNAME (GrB_FIRST_FP64) ; - GETNAME (GxB_FIRST_FC32) ; - GETNAME (GxB_FIRST_FC64) ; - - GETNAME (GrB_SECOND_BOOL) ; - GETNAME (GrB_SECOND_INT8) ; - GETNAME (GrB_SECOND_INT16) ; - GETNAME (GrB_SECOND_INT32) ; - GETNAME (GrB_SECOND_INT64) ; - GETNAME (GrB_SECOND_UINT8) ; - GETNAME (GrB_SECOND_UINT16) ; - GETNAME (GrB_SECOND_UINT32) ; - GETNAME (GrB_SECOND_UINT64) ; - GETNAME (GrB_SECOND_FP32) ; - GETNAME (GrB_SECOND_FP64) ; - GETNAME (GxB_SECOND_FC32) ; - GETNAME (GxB_SECOND_FC64) ; - - GETNAME (GrB_ONEB_BOOL) ; - GETNAME (GrB_ONEB_INT8) ; - GETNAME (GrB_ONEB_INT16) ; - GETNAME (GrB_ONEB_INT32) ; - GETNAME (GrB_ONEB_INT64) ; - GETNAME (GrB_ONEB_UINT8) ; - GETNAME (GrB_ONEB_UINT16) ; - GETNAME (GrB_ONEB_UINT32) ; - GETNAME (GrB_ONEB_UINT64) ; - GETNAME (GrB_ONEB_FP32) ; - GETNAME (GrB_ONEB_FP64) ; - GETNAME (GxB_ONEB_FC32) ; - GETNAME (GxB_ONEB_FC64) ; - - GETNAME (GxB_POW_BOOL) ; - GETNAME (GxB_POW_INT8) ; - GETNAME (GxB_POW_INT16) ; - GETNAME (GxB_POW_INT32) ; - GETNAME (GxB_POW_INT64) ; - GETNAME (GxB_POW_UINT8) ; - GETNAME (GxB_POW_UINT16) ; - GETNAME (GxB_POW_UINT32) ; - GETNAME (GxB_POW_UINT64) ; - GETNAME (GxB_POW_FP32) ; - GETNAME (GxB_POW_FP64) ; - GETNAME (GxB_POW_FC32) ; - GETNAME (GxB_POW_FC64) ; - - GETNAME (GrB_PLUS_BOOL) ; - GETNAME (GrB_PLUS_INT8) ; - GETNAME (GrB_PLUS_INT16) ; - GETNAME (GrB_PLUS_INT32) ; - GETNAME (GrB_PLUS_INT64) ; - GETNAME (GrB_PLUS_UINT8) ; - GETNAME (GrB_PLUS_UINT16) ; - GETNAME (GrB_PLUS_UINT32) ; - GETNAME (GrB_PLUS_UINT64) ; - GETNAME (GrB_PLUS_FP32) ; - GETNAME (GrB_PLUS_FP64) ; - GETNAME (GxB_PLUS_FC32) ; - GETNAME (GxB_PLUS_FC64) ; - - GETNAME (GrB_MINUS_BOOL) ; - GETNAME (GrB_MINUS_INT8) ; - GETNAME (GrB_MINUS_INT16) ; - GETNAME (GrB_MINUS_INT32) ; - GETNAME (GrB_MINUS_INT64) ; - GETNAME (GrB_MINUS_UINT8) ; - GETNAME (GrB_MINUS_UINT16) ; - GETNAME (GrB_MINUS_UINT32) ; - GETNAME (GrB_MINUS_UINT64) ; - GETNAME (GrB_MINUS_FP32) ; - GETNAME (GrB_MINUS_FP64) ; - GETNAME (GxB_MINUS_FC32) ; - GETNAME (GxB_MINUS_FC64) ; - - GETNAME (GrB_TIMES_BOOL) ; - GETNAME (GrB_TIMES_INT8) ; - GETNAME (GrB_TIMES_INT16) ; - GETNAME (GrB_TIMES_INT32) ; - GETNAME (GrB_TIMES_INT64) ; - GETNAME (GrB_TIMES_UINT8) ; - GETNAME (GrB_TIMES_UINT16) ; - GETNAME (GrB_TIMES_UINT32) ; - GETNAME (GrB_TIMES_UINT64) ; - GETNAME (GrB_TIMES_FP32) ; - GETNAME (GrB_TIMES_FP64) ; - GETNAME (GxB_TIMES_FC32) ; - GETNAME (GxB_TIMES_FC64) ; - - GETNAME (GrB_DIV_BOOL) ; - GETNAME (GrB_DIV_INT8) ; - GETNAME (GrB_DIV_INT16) ; - GETNAME (GrB_DIV_INT32) ; - GETNAME (GrB_DIV_INT64) ; - GETNAME (GrB_DIV_UINT8) ; - GETNAME (GrB_DIV_UINT16) ; - GETNAME (GrB_DIV_UINT32) ; - GETNAME (GrB_DIV_UINT64) ; - GETNAME (GrB_DIV_FP32) ; - GETNAME (GrB_DIV_FP64) ; - GETNAME (GxB_DIV_FC32) ; - GETNAME (GxB_DIV_FC64) ; - - GETNAME (GxB_RMINUS_BOOL) ; - GETNAME (GxB_RMINUS_INT8) ; - GETNAME (GxB_RMINUS_INT16) ; - GETNAME (GxB_RMINUS_INT32) ; - GETNAME (GxB_RMINUS_INT64) ; - GETNAME (GxB_RMINUS_UINT8) ; - GETNAME (GxB_RMINUS_UINT16) ; - GETNAME (GxB_RMINUS_UINT32) ; - GETNAME (GxB_RMINUS_UINT64) ; - GETNAME (GxB_RMINUS_FP32) ; - GETNAME (GxB_RMINUS_FP64) ; - GETNAME (GxB_RMINUS_FC32) ; - GETNAME (GxB_RMINUS_FC64) ; - - GETNAME (GxB_RDIV_BOOL) ; - GETNAME (GxB_RDIV_INT8) ; - GETNAME (GxB_RDIV_INT16) ; - GETNAME (GxB_RDIV_INT32) ; - GETNAME (GxB_RDIV_INT64) ; - GETNAME (GxB_RDIV_UINT8) ; - GETNAME (GxB_RDIV_UINT16) ; - GETNAME (GxB_RDIV_UINT32) ; - GETNAME (GxB_RDIV_UINT64) ; - GETNAME (GxB_RDIV_FP32) ; - GETNAME (GxB_RDIV_FP64) ; - GETNAME (GxB_RDIV_FC32) ; - GETNAME (GxB_RDIV_FC64) ; - - GETNAM2 (GxB_PAIR_BOOL, "GrB_ONEB_BOOL") ; - GETNAM2 (GxB_PAIR_INT8, "GrB_ONEB_INT8") ; - GETNAM2 (GxB_PAIR_INT16, "GrB_ONEB_INT16") ; - GETNAM2 (GxB_PAIR_INT32, "GrB_ONEB_INT32") ; - GETNAM2 (GxB_PAIR_INT64, "GrB_ONEB_INT64") ; - GETNAM2 (GxB_PAIR_UINT8, "GrB_ONEB_UINT8") ; - GETNAM2 (GxB_PAIR_UINT16, "GrB_ONEB_UINT16") ; - GETNAM2 (GxB_PAIR_UINT32, "GrB_ONEB_UINT32") ; - GETNAM2 (GxB_PAIR_UINT64, "GrB_ONEB_UINT64") ; - GETNAM2 (GxB_PAIR_FP32, "GrB_ONEB_FP32") ; - GETNAM2 (GxB_PAIR_FP64, "GrB_ONEB_FP64") ; - GETNAM2 (GxB_PAIR_FC32, "GxB_ONEB_FC32") ; - GETNAM2 (GxB_PAIR_FC64, "GxB_ONEB_FC64") ; - - GETNAME (GxB_ANY_BOOL) ; - GETNAME (GxB_ANY_INT8) ; - GETNAME (GxB_ANY_INT16) ; - GETNAME (GxB_ANY_INT32) ; - GETNAME (GxB_ANY_INT64) ; - GETNAME (GxB_ANY_UINT8) ; - GETNAME (GxB_ANY_UINT16) ; - GETNAME (GxB_ANY_UINT32) ; - GETNAME (GxB_ANY_UINT64) ; - GETNAME (GxB_ANY_FP32) ; - GETNAME (GxB_ANY_FP64) ; - GETNAME (GxB_ANY_FC32) ; - GETNAME (GxB_ANY_FC64) ; - - GETNAME (GxB_ISEQ_BOOL) ; - GETNAME (GxB_ISEQ_INT8) ; - GETNAME (GxB_ISEQ_INT16) ; - GETNAME (GxB_ISEQ_INT32) ; - GETNAME (GxB_ISEQ_INT64) ; - GETNAME (GxB_ISEQ_UINT8) ; - GETNAME (GxB_ISEQ_UINT16) ; - GETNAME (GxB_ISEQ_UINT32) ; - GETNAME (GxB_ISEQ_UINT64) ; - GETNAME (GxB_ISEQ_FP32) ; - GETNAME (GxB_ISEQ_FP64) ; - GETNAME (GxB_ISEQ_FC32) ; - GETNAME (GxB_ISEQ_FC64) ; - - GETNAME (GxB_ISNE_BOOL) ; - GETNAME (GxB_ISNE_INT8) ; - GETNAME (GxB_ISNE_INT16) ; - GETNAME (GxB_ISNE_INT32) ; - GETNAME (GxB_ISNE_INT64) ; - GETNAME (GxB_ISNE_UINT8) ; - GETNAME (GxB_ISNE_UINT16) ; - GETNAME (GxB_ISNE_UINT32) ; - GETNAME (GxB_ISNE_UINT64) ; - GETNAME (GxB_ISNE_FP32) ; - GETNAME (GxB_ISNE_FP64) ; - GETNAME (GxB_ISNE_FC32) ; - GETNAME (GxB_ISNE_FC64) ; - - GETNAME (GxB_ISGT_BOOL) ; - GETNAME (GxB_ISGT_INT8) ; - GETNAME (GxB_ISGT_INT16) ; - GETNAME (GxB_ISGT_INT32) ; - GETNAME (GxB_ISGT_INT64) ; - GETNAME (GxB_ISGT_UINT8) ; - GETNAME (GxB_ISGT_UINT16) ; - GETNAME (GxB_ISGT_UINT32) ; - GETNAME (GxB_ISGT_UINT64) ; - GETNAME (GxB_ISGT_FP32) ; - GETNAME (GxB_ISGT_FP64) ; - - GETNAME (GxB_ISLT_BOOL) ; - GETNAME (GxB_ISLT_INT8) ; - GETNAME (GxB_ISLT_INT16) ; - GETNAME (GxB_ISLT_INT32) ; - GETNAME (GxB_ISLT_INT64) ; - GETNAME (GxB_ISLT_UINT8) ; - GETNAME (GxB_ISLT_UINT16) ; - GETNAME (GxB_ISLT_UINT32) ; - GETNAME (GxB_ISLT_UINT64) ; - GETNAME (GxB_ISLT_FP32) ; - GETNAME (GxB_ISLT_FP64) ; - - GETNAME (GxB_ISGE_BOOL) ; - GETNAME (GxB_ISGE_INT8) ; - GETNAME (GxB_ISGE_INT16) ; - GETNAME (GxB_ISGE_INT32) ; - GETNAME (GxB_ISGE_INT64) ; - GETNAME (GxB_ISGE_UINT8) ; - GETNAME (GxB_ISGE_UINT16) ; - GETNAME (GxB_ISGE_UINT32) ; - GETNAME (GxB_ISGE_UINT64) ; - GETNAME (GxB_ISGE_FP32) ; - GETNAME (GxB_ISGE_FP64) ; - - GETNAME (GxB_ISLE_BOOL) ; - GETNAME (GxB_ISLE_INT8) ; - GETNAME (GxB_ISLE_INT16) ; - GETNAME (GxB_ISLE_INT32) ; - GETNAME (GxB_ISLE_INT64) ; - GETNAME (GxB_ISLE_UINT8) ; - GETNAME (GxB_ISLE_UINT16) ; - GETNAME (GxB_ISLE_UINT32) ; - GETNAME (GxB_ISLE_UINT64) ; - GETNAME (GxB_ISLE_FP32) ; - GETNAME (GxB_ISLE_FP64) ; - - GETNAME (GrB_MIN_BOOL) ; - GETNAME (GrB_MIN_INT8) ; - GETNAME (GrB_MIN_INT16) ; - GETNAME (GrB_MIN_INT32) ; - GETNAME (GrB_MIN_INT64) ; - GETNAME (GrB_MIN_UINT8) ; - GETNAME (GrB_MIN_UINT16) ; - GETNAME (GrB_MIN_UINT32) ; - GETNAME (GrB_MIN_UINT64) ; - GETNAME (GrB_MIN_FP32) ; - GETNAME (GrB_MIN_FP64) ; - - GETNAME (GrB_MAX_BOOL) ; - GETNAME (GrB_MAX_INT8) ; - GETNAME (GrB_MAX_INT16) ; - GETNAME (GrB_MAX_INT32) ; - GETNAME (GrB_MAX_INT64) ; - GETNAME (GrB_MAX_UINT8) ; - GETNAME (GrB_MAX_UINT16) ; - GETNAME (GrB_MAX_UINT32) ; - GETNAME (GrB_MAX_UINT64) ; - GETNAME (GrB_MAX_FP32) ; - GETNAME (GrB_MAX_FP64) ; - - GETNAME (GrB_LOR) ; - GETNAM2 (GxB_LOR_BOOL, "GrB_LOR") ; - GETNAME (GxB_LOR_INT8) ; - GETNAME (GxB_LOR_INT16) ; - GETNAME (GxB_LOR_INT32) ; - GETNAME (GxB_LOR_INT64) ; - GETNAME (GxB_LOR_UINT8) ; - GETNAME (GxB_LOR_UINT16) ; - GETNAME (GxB_LOR_UINT32) ; - GETNAME (GxB_LOR_UINT64) ; - GETNAME (GxB_LOR_FP32) ; - GETNAME (GxB_LOR_FP64) ; - - GETNAME (GrB_LAND) ; - GETNAM2 (GxB_LAND_BOOL, "GrB_LAND") ; - GETNAME (GxB_LAND_INT8) ; - GETNAME (GxB_LAND_INT16) ; - GETNAME (GxB_LAND_INT32) ; - GETNAME (GxB_LAND_INT64) ; - GETNAME (GxB_LAND_UINT8) ; - GETNAME (GxB_LAND_UINT16) ; - GETNAME (GxB_LAND_UINT32) ; - GETNAME (GxB_LAND_UINT64) ; - GETNAME (GxB_LAND_FP32) ; - GETNAME (GxB_LAND_FP64) ; - - GETNAME (GrB_LXOR) ; - GETNAM2 (GxB_LXOR_BOOL, "GrB_LXOR") ; - GETNAME (GxB_LXOR_INT8) ; - GETNAME (GxB_LXOR_INT16) ; - GETNAME (GxB_LXOR_INT32) ; - GETNAME (GxB_LXOR_INT64) ; - GETNAME (GxB_LXOR_UINT8) ; - GETNAME (GxB_LXOR_UINT16) ; - GETNAME (GxB_LXOR_UINT32) ; - GETNAME (GxB_LXOR_UINT64) ; - GETNAME (GxB_LXOR_FP32) ; - GETNAME (GxB_LXOR_FP64) ; - - GETNAME (GrB_LXNOR) ; - - GETNAME (GxB_ATAN2_FP32) ; - GETNAME (GxB_ATAN2_FP64) ; - - GETNAME (GxB_HYPOT_FP32) ; - GETNAME (GxB_HYPOT_FP64) ; - - GETNAME (GxB_FMOD_FP32) ; - GETNAME (GxB_FMOD_FP64) ; - - GETNAME (GxB_REMAINDER_FP32) ; - GETNAME (GxB_REMAINDER_FP64) ; - - GETNAME (GxB_LDEXP_FP32) ; - GETNAME (GxB_LDEXP_FP64) ; - - GETNAME (GxB_COPYSIGN_FP32) ; - GETNAME (GxB_COPYSIGN_FP64) ; - - GETNAME (GrB_BOR_INT8) ; - GETNAME (GrB_BOR_INT16) ; - GETNAME (GrB_BOR_INT32) ; - GETNAME (GrB_BOR_INT64) ; - GETNAME (GrB_BOR_UINT8) ; - GETNAME (GrB_BOR_UINT16) ; - GETNAME (GrB_BOR_UINT32) ; - GETNAME (GrB_BOR_UINT64) ; - - GETNAME (GrB_BAND_INT8) ; - GETNAME (GrB_BAND_INT16) ; - GETNAME (GrB_BAND_INT32) ; - GETNAME (GrB_BAND_INT64) ; - GETNAME (GrB_BAND_UINT8) ; - GETNAME (GrB_BAND_UINT16) ; - GETNAME (GrB_BAND_UINT32) ; - GETNAME (GrB_BAND_UINT64) ; - - GETNAME (GrB_BXOR_INT8) ; - GETNAME (GrB_BXOR_INT16) ; - GETNAME (GrB_BXOR_INT32) ; - GETNAME (GrB_BXOR_INT64) ; - GETNAME (GrB_BXOR_UINT8) ; - GETNAME (GrB_BXOR_UINT16) ; - GETNAME (GrB_BXOR_UINT32) ; - GETNAME (GrB_BXOR_UINT64) ; - - GETNAME (GrB_BXNOR_INT8) ; - GETNAME (GrB_BXNOR_INT16) ; - GETNAME (GrB_BXNOR_INT32) ; - GETNAME (GrB_BXNOR_INT64) ; - GETNAME (GrB_BXNOR_UINT8) ; - GETNAME (GrB_BXNOR_UINT16) ; - GETNAME (GrB_BXNOR_UINT32) ; - GETNAME (GrB_BXNOR_UINT64) ; - - GETNAME (GxB_BGET_INT8) ; - GETNAME (GxB_BGET_INT16) ; - GETNAME (GxB_BGET_INT32) ; - GETNAME (GxB_BGET_INT64) ; - GETNAME (GxB_BGET_UINT8) ; - GETNAME (GxB_BGET_UINT16) ; - GETNAME (GxB_BGET_UINT32) ; - GETNAME (GxB_BGET_UINT64) ; - - GETNAME (GxB_BSET_INT8) ; - GETNAME (GxB_BSET_INT16) ; - GETNAME (GxB_BSET_INT32) ; - GETNAME (GxB_BSET_INT64) ; - GETNAME (GxB_BSET_UINT8) ; - GETNAME (GxB_BSET_UINT16) ; - GETNAME (GxB_BSET_UINT32) ; - GETNAME (GxB_BSET_UINT64) ; - - GETNAME (GxB_BCLR_INT8) ; - GETNAME (GxB_BCLR_INT16) ; - GETNAME (GxB_BCLR_INT32) ; - GETNAME (GxB_BCLR_INT64) ; - GETNAME (GxB_BCLR_UINT8) ; - GETNAME (GxB_BCLR_UINT16) ; - GETNAME (GxB_BCLR_UINT32) ; - GETNAME (GxB_BCLR_UINT64) ; - - GETNAME (GxB_BSHIFT_INT8) ; - GETNAME (GxB_BSHIFT_INT16) ; - GETNAME (GxB_BSHIFT_INT32) ; - GETNAME (GxB_BSHIFT_INT64) ; - GETNAME (GxB_BSHIFT_UINT8) ; - GETNAME (GxB_BSHIFT_UINT16) ; - GETNAME (GxB_BSHIFT_UINT32) ; - GETNAME (GxB_BSHIFT_UINT64) ; - - GETNAM2 (GrB_EQ_BOOL, "GrB_LXNOR") ; - GETNAME (GrB_EQ_INT8) ; - GETNAME (GrB_EQ_INT16) ; - GETNAME (GrB_EQ_INT32) ; - GETNAME (GrB_EQ_INT64) ; - GETNAME (GrB_EQ_UINT8) ; - GETNAME (GrB_EQ_UINT16) ; - GETNAME (GrB_EQ_UINT32) ; - GETNAME (GrB_EQ_UINT64) ; - GETNAME (GrB_EQ_FP32) ; - GETNAME (GrB_EQ_FP64) ; - GETNAME (GxB_EQ_FC32) ; - GETNAME (GxB_EQ_FC64) ; - - GETNAME (GrB_NE_BOOL) ; - GETNAME (GrB_NE_INT8) ; - GETNAME (GrB_NE_INT16) ; - GETNAME (GrB_NE_INT32) ; - GETNAME (GrB_NE_INT64) ; - GETNAME (GrB_NE_UINT8) ; - GETNAME (GrB_NE_UINT16) ; - GETNAME (GrB_NE_UINT32) ; - GETNAME (GrB_NE_UINT64) ; - GETNAME (GrB_NE_FP32) ; - GETNAME (GrB_NE_FP64) ; - GETNAME (GxB_NE_FC32) ; - GETNAME (GxB_NE_FC64) ; - - GETNAME (GrB_GT_BOOL) ; - GETNAME (GrB_GT_INT8) ; - GETNAME (GrB_GT_INT16) ; - GETNAME (GrB_GT_INT32) ; - GETNAME (GrB_GT_INT64) ; - GETNAME (GrB_GT_UINT8) ; - GETNAME (GrB_GT_UINT16) ; - GETNAME (GrB_GT_UINT32) ; - GETNAME (GrB_GT_UINT64) ; - GETNAME (GrB_GT_FP32) ; - GETNAME (GrB_GT_FP64) ; - - GETNAME (GrB_LT_BOOL) ; - GETNAME (GrB_LT_INT8) ; - GETNAME (GrB_LT_INT16) ; - GETNAME (GrB_LT_INT32) ; - GETNAME (GrB_LT_INT64) ; - GETNAME (GrB_LT_UINT8) ; - GETNAME (GrB_LT_UINT16) ; - GETNAME (GrB_LT_UINT32) ; - GETNAME (GrB_LT_UINT64) ; - GETNAME (GrB_LT_FP32) ; - GETNAME (GrB_LT_FP64) ; - - GETNAME (GrB_GE_BOOL) ; - GETNAME (GrB_GE_INT8) ; - GETNAME (GrB_GE_INT16) ; - GETNAME (GrB_GE_INT32) ; - GETNAME (GrB_GE_INT64) ; - GETNAME (GrB_GE_UINT8) ; - GETNAME (GrB_GE_UINT16) ; - GETNAME (GrB_GE_UINT32) ; - GETNAME (GrB_GE_UINT64) ; - GETNAME (GrB_GE_FP32) ; - GETNAME (GrB_GE_FP64) ; - - GETNAME (GrB_LE_BOOL) ; - GETNAME (GrB_LE_INT8) ; - GETNAME (GrB_LE_INT16) ; - GETNAME (GrB_LE_INT32) ; - GETNAME (GrB_LE_INT64) ; - GETNAME (GrB_LE_UINT8) ; - GETNAME (GrB_LE_UINT16) ; - GETNAME (GrB_LE_UINT32) ; - GETNAME (GrB_LE_UINT64) ; - GETNAME (GrB_LE_FP32) ; - GETNAME (GrB_LE_FP64) ; - - GETNAME (GxB_CMPLX_FP32) ; - GETNAME (GxB_CMPLX_FP64) ; - - GETNAME (GxB_FIRSTI_INT32) ; GETNAME (GxB_FIRSTI_INT64) ; - GETNAME (GxB_FIRSTI1_INT32) ; GETNAME (GxB_FIRSTI1_INT64) ; - GETNAME (GxB_FIRSTJ_INT32) ; GETNAME (GxB_FIRSTJ_INT64) ; - GETNAME (GxB_FIRSTJ1_INT32) ; GETNAME (GxB_FIRSTJ1_INT64) ; - GETNAME (GxB_SECONDI_INT32) ; GETNAME (GxB_SECONDI_INT64) ; - GETNAME (GxB_SECONDI1_INT32) ; GETNAME (GxB_SECONDI1_INT64) ; - GETNAME (GxB_SECONDJ_INT32) ; GETNAME (GxB_SECONDJ_INT64) ; - GETNAME (GxB_SECONDJ1_INT32) ; GETNAME (GxB_SECONDJ1_INT64) ; - - GETNAME (GxB_IGNORE_DUP) ; - - //-------------------------------------------------------------------------- - // other get/set methods for GrB_BinaryOp - //-------------------------------------------------------------------------- - - OK (GrB_BinaryOp_get_INT32_(GrB_MAX_FP32, &code, GrB_INPUT1TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_BinaryOp_get_SIZE_(GrB_MAX_FP32, &size, GrB_INPUT1TYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - - OK (GrB_BinaryOp_get_String_(GrB_MAX_FP32, name, GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_BinaryOp_get_SIZE_(GrB_MAX_INT32, &size, GrB_INPUT2TYPE_STRING)) ; - CHECK (size == strlen ("GrB_INT32") + 1) ; - - OK (GrB_BinaryOp_get_String_(GrB_MAX_INT32, name, GrB_INPUT2TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_INT32")) ; - - OK (GrB_BinaryOp_get_INT32_(GrB_MAX_FP64, &code, GrB_OUTPUTTYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_BinaryOp_get_SIZE_(GrB_MAX_FP64, &size, GrB_OUTPUTTYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP64") + 1) ; - - OK (GrB_BinaryOp_get_String_(GrB_MAX_FP64, name, GrB_OUTPUTTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP64")) ; - - OK (GrB_BinaryOp_get_Scalar_(GrB_MAX_FP32, s_int32, GrB_INPUT1TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_BinaryOp_get_Scalar_(GrB_LAND, s_int32, GrB_OUTPUTTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - OK (GrB_BinaryOp_get_INT32_(GrB_PLUS_FP64, &code, GrB_INPUT2TYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_BinaryOp_get_Scalar_(GrB_LAND, s_int32, GrB_INPUT2TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_BinaryOp_get_INT32_(GrB_LAND, &code, GrB_NAME)) ; - ERR (GrB_BinaryOp_get_String_(GrB_MAX_INT32, name, 999)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_BinaryOp_get_VOID_(GrB_LAND, nothing, 0)) ; - - OK (GrB_BinaryOp_new (&binop, myfunc, GrB_FP32, GrB_FP32, GrB_FP32)) ; - OK (GrB_BinaryOp_get_SIZE_(binop, &size, GrB_NAME)) ; - CHECK (size == 1) ; - OK (GrB_BinaryOp_get_SIZE_(binop, &size, GxB_JIT_C_NAME)) ; - CHECK (size == 1) ; - OK (GrB_BinaryOp_get_SIZE_(binop, &size, GxB_JIT_C_DEFINITION)) ; - CHECK (size == 1) ; - OK (GrB_BinaryOp_set_String_(binop, "myfunc", GxB_JIT_C_NAME)) ; - OK (GrB_BinaryOp_get_String_(binop, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "myfunc")) ; - CHECK (binop->hash == UINT64_MAX) ; - METHOD (GrB_BinaryOp_set_String (binop, MYFUNC_DEFN, GxB_JIT_C_DEFINITION)) ; - OK (GrB_BinaryOp_get_String_(binop, defn, GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH (defn, MYFUNC_DEFN)) ; - CHECK (binop->hash != UINT64_MAX) ; - OK (GxB_print (binop, 3)) ; - - OK (GrB_BinaryOp_set_String_(binop, "user name for myfunc", GrB_NAME)) ; - OK (GrB_BinaryOp_get_String_(binop, name, GrB_NAME)) ; - CHECK (MATCH (name, "user name for myfunc")) ; - expected = GrB_ALREADY_SET ; - ERR (GrB_BinaryOp_set_String_(binop, "another user name", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - OK (GrB_BinaryOp_get_INT32_(binop, &code, GrB_INPUT2TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_BinaryOp_set_Scalar_(binop, s_int32, 0)) ; - ERR (GrB_BinaryOp_set_INT32_(binop, 0, 0)) ; - ERR (GrB_BinaryOp_set_VOID_(binop, nothing, 0, 0)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&binop) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test28: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test29.c b/Test/GB_mex_test29.c deleted file mode 100644 index 54073a6c6b..0000000000 --- a/Test/GB_mex_test29.c +++ /dev/null @@ -1,462 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test29: test GrB_get and GrB_set (global) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test29" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -int myprintf (const char *restrict format, ...) ; - -int myprintf (const char *restrict format, ...) -{ - printf ("[[myprintf:") ; - va_list ap ; - va_start (ap, format) ; - vprintf (format, ap) ; - va_end (ap) ; - printf ("]]") ; - return (1) ; -} - -int myflush (void) ; - -int myflush (void) -{ - printf ("myflush\n") ; - fflush (stdout) ; - return (0) ; -} - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Matrix A = NULL ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char defn [2048], defn2 [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // global set/get - //-------------------------------------------------------------------------- - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_LIBRARY_VER_MAJOR)) ; - CHECK (i == GxB_IMPLEMENTATION_MAJOR) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_LIBRARY_VER_MINOR)) ; - CHECK (i == GxB_IMPLEMENTATION_MINOR) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_LIBRARY_VER_PATCH)) ; - CHECK (i == GxB_IMPLEMENTATION_SUB) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_API_VER_MAJOR)) ; - CHECK (i == GxB_SPEC_MAJOR) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_API_VER_MINOR)) ; - CHECK (i == GxB_SPEC_MINOR) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_API_VER_PATCH)) ; - CHECK (i == GxB_SPEC_SUB) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_BLOCKING_MODE)) ; - CHECK (i == GrB_NONBLOCKING) ; - - i = -1 ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_MODE)) ; - CHECK (i == GrB_NONBLOCKING) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_ROWMAJOR, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_ROWMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_COLMAJOR, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_BOTH, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_ROWMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_COLMAJOR, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_UNKNOWN, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_ROWMAJOR) ; - - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, GrB_COLMAJOR, - GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, - GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_COLMAJOR) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Global_set_INT32_ (GrB_GLOBAL, 999, - GrB_STORAGE_ORIENTATION_HINT)) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_FORMAT)) ; - ERR (GrB_Global_set_INT32_ (GrB_GLOBAL, 999, GxB_FORMAT)) ; - CHECK (i == GxB_BY_COL) ; - - int32_t nth ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &nth, GxB_GLOBAL_NTHREADS)) ; - printf ("nthreads: %d\n", nth) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 2, GxB_GLOBAL_NTHREADS)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_GLOBAL_NTHREADS)) ; - CHECK (i == 2) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, nth, GxB_GLOBAL_NTHREADS)) ; - - int32_t gpu ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &gpu, GxB_GLOBAL_GPU_ID)) ; - printf ("gpu id: %d\n", gpu) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 2, GxB_GLOBAL_GPU_ID)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_GLOBAL_GPU_ID)) ; - CHECK (i == -1) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, gpu, GxB_GLOBAL_GPU_ID)) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_BURBLE)) ; - printf ("burble: %d\n", i) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 1, GxB_BURBLE)) ; - OK (GrB_Matrix_new (&A, GrB_FP32, 3, 3)) ; - OK (GrB_assign (A, NULL, NULL, 3, GrB_ALL, 3, GrB_ALL, 3, NULL)) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 0, GxB_BURBLE)) ; - OK (GrB_assign (A, NULL, NULL, 4, GrB_ALL, 3, GrB_ALL, 3, NULL)) ; - OK (GxB_print (A, 2)) ; - - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_LIBRARY_OPENMP)) ; - CHECK (i == 1) ; - - int32_t onebase ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &onebase, GxB_PRINT_1BASED)) ; - printf ("1based: %d\n", i) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 1, GxB_PRINT_1BASED)) ; - OK (GxB_print (A, 2)) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, onebase, GxB_PRINT_1BASED)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_PRINT_1BASED)) ; - CHECK (i == onebase) ; - - int32_t control ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &control, GxB_JIT_C_CONTROL)) ; - printf ("jit ctrl: %d\n", control) ; - for (int c = 0 ; c <= GxB_JIT_ON ; c++) - { - int32_t b ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, c, GxB_JIT_C_CONTROL)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &b, GxB_JIT_C_CONTROL)) ; - CHECK (c == b) ; - } - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, control, GxB_JIT_C_CONTROL)) ; - - int32_t use_cmake ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &use_cmake, GxB_JIT_USE_CMAKE)) ; - printf ("jit cmake %d\n", use_cmake) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, 1, GxB_JIT_USE_CMAKE)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_JIT_USE_CMAKE)) ; - CHECK (i == 1) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, use_cmake, GxB_JIT_USE_CMAKE)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Global_set_INT32_ (GrB_GLOBAL, 1, GrB_BLOCKING_MODE)) ; - expected = GrB_EMPTY_OBJECT ; - ERR (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_int32, - GrB_STORAGE_ORIENTATION_HINT)) ; - expected = GrB_INVALID_VALUE ; - OK (GrB_Scalar_setElement_INT32 (s_int32, 1)) ; - ERR (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_int32, GrB_BLOCKING_MODE)) ; - - OK (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_int32, GxB_JIT_C_CONTROL)) ; - OK (GrB_Scalar_setElement_INT32 (s_int32, 2)) ; - OK (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_int32, GxB_JIT_C_CONTROL)) ; - OK (GrB_Scalar_extractElement (&i, s_int32)) ; - CHECK (i == 1) ; - OK (GrB_Global_set_INT32_ (GrB_GLOBAL, control, GxB_JIT_C_CONTROL)) ; - OK (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GxB_JIT_C_CONTROL)) ; - CHECK (i == control) ; - - OK (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_fp64, GxB_HYPER_SWITCH)) ; - OK (GrB_Scalar_extractElement (&dvalue, s_fp64)) ; - printf ("hyper switch: %g\n", dvalue) ; - OK (GrB_Scalar_setElement (s_fp64, 0.75)) ; - OK (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_fp64, GxB_HYPER_SWITCH)) ; - OK (GrB_Scalar_clear (s_fp64)) ; - OK (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_fp64, GxB_HYPER_SWITCH)) ; - OK (GrB_Scalar_extractElement (&dvalue, s_fp64)) ; - CHECK (dvalue == 0.75) ; - - OK (GrB_Scalar_setElement_FP64 (s_fp64, 0.75)) ; - OK (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_fp64, GxB_HYPER_SWITCH)) ; - OK (GrB_Scalar_clear (s_fp64)) ; - - OK (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_fp64, GxB_CHUNK)) ; - OK (GrB_Scalar_extractElement (&dvalue, s_fp64)) ; - printf ("chunk: %g\n", dvalue) ; - OK (GrB_Scalar_setElement (s_fp64, 8901)) ; - OK (GrB_Global_set_Scalar_ (GrB_GLOBAL, s_fp64, GxB_CHUNK)) ; - OK (GrB_Scalar_clear (s_fp64)) ; - OK (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_fp64, GxB_CHUNK)) ; - OK (GrB_Scalar_extractElement (&dvalue, s_fp64)) ; - CHECK (dvalue == 8901) ; - - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Global_get_Scalar_ (GrB_GLOBAL, s_fp64, GrB_ELTYPE_CODE)) ; - ERR (GrB_Global_get_INT32_ (GrB_GLOBAL, &i, GrB_ELTYPE_CODE)) ; - ERR (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GrB_ELTYPE_CODE)) ; - ERR (GrB_Global_get_String_ (GrB_GLOBAL, name, GrB_ELTYPE_CODE)) ; - ERR (GrB_Global_get_VOID_ (GrB_GLOBAL, nothing, GrB_ELTYPE_CODE)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GrB_NAME)) ; - printf ("library name: [%s]\n", name) ; - CHECK (MATCH (name, GxB_IMPLEMENTATION_NAME)) ; - - name [0] = 0 ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_LIBRARY_NAME)) ; - printf ("library name: [%s]\n", name) ; - CHECK (MATCH (name, GxB_IMPLEMENTATION_NAME)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_LIBRARY_DATE)) ; - printf ("library date: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_LIBRARY_ABOUT)) ; - printf ("library about: [%s]\n", defn) ; - CHECK (MATCH (defn, GxB_IMPLEMENTATION_ABOUT)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_LIBRARY_LICENSE)) ; - printf ("library license: [%s]\n", defn) ; - CHECK (MATCH (defn, GxB_IMPLEMENTATION_LICENSE)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_LIBRARY_COMPILE_DATE)) ; - printf ("library compile date: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_LIBRARY_COMPILE_TIME)) ; - printf ("library compile time: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_LIBRARY_URL)) ; - printf ("library url: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_API_DATE)) ; - printf ("api date: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_API_ABOUT)) ; - printf ("api about: [%s]\n", defn) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, name, GxB_API_URL)) ; - printf ("api url: [%s]\n", name) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_COMPILER_NAME)) ; - printf ("compiler: [%s]\n", defn) ; - - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_COMPILER_NAME)) ; - printf ("JIT C compiler: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "cc", GxB_JIT_C_COMPILER_NAME)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_COMPILER_NAME)) ; - CHECK (MATCH (defn2, "cc")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_COMPILER_NAME)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_COMPILER_NAME)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_COMPILER_FLAGS)) ; - printf ("JIT C compiler flags: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "-O", GxB_JIT_C_COMPILER_FLAGS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_COMPILER_FLAGS)) ; - CHECK (MATCH (defn2, "-O")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_COMPILER_FLAGS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_COMPILER_FLAGS)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_LINKER_FLAGS)) ; - printf ("JIT C link flags: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "-stuff", GxB_JIT_C_LINKER_FLAGS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_LINKER_FLAGS)) ; - CHECK (MATCH (defn2, "-stuff")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_LINKER_FLAGS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_LINKER_FLAGS)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_LIBRARIES)) ; - printf ("JIT C libraries: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "-lm", GxB_JIT_C_LIBRARIES)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_LIBRARIES)) ; - CHECK (MATCH (defn2, "-lm")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_LIBRARIES)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_LIBRARIES)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_CMAKE_LIBS)) ; - printf ("JIT C cmake libs: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "m;dl", GxB_JIT_C_CMAKE_LIBS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_CMAKE_LIBS)) ; - CHECK (MATCH (defn2, "m;dl")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_CMAKE_LIBS)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_CMAKE_LIBS)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_C_PREFACE)) ; - printf ("JIT C preface: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "// stuff", GxB_JIT_C_PREFACE)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_PREFACE)) ; - CHECK (MATCH (defn2, "// stuff")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_C_PREFACE)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_C_PREFACE)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_ERROR_LOG)) ; - printf ("JIT error log: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "errlog.txt", GxB_JIT_ERROR_LOG)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_ERROR_LOG)) ; - CHECK (MATCH (defn2, "errlog.txt")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_ERROR_LOG)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_ERROR_LOG)) ; - CHECK (MATCH (defn2, defn)) ; - - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn, GxB_JIT_CACHE_PATH)) ; - printf ("JIT cache: [%s]\n", defn) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, "/tmp/stuff", GxB_JIT_CACHE_PATH)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_CACHE_PATH)) ; - CHECK (MATCH (defn2, "/tmp/stuff")) ; - OK (GrB_Global_set_String_ (GrB_GLOBAL, defn, GxB_JIT_CACHE_PATH)) ; - OK (GrB_Global_get_String_ (GrB_GLOBAL, defn2, GxB_JIT_CACHE_PATH)) ; - CHECK (MATCH (defn2, defn)) ; - system ("ls /tmp/stuff ; rm -rf /tmp/stuff") ; - - ERR (GrB_Global_set_String_ (GrB_GLOBAL, defn, GrB_NAME)) ; - - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_JIT_CACHE_PATH)) ; - CHECK (size == strlen (defn) + 1) ; - - double sw [GxB_NBITMAP_SWITCH] ; - double s2 [GxB_NBITMAP_SWITCH] ; - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_BITMAP_SWITCH)) ; - CHECK (size == sizeof (double) * GxB_NBITMAP_SWITCH) ; - OK (GrB_Global_get_VOID_ (GrB_GLOBAL, (void *) sw, GxB_BITMAP_SWITCH)) ; - OK (GrB_Global_get_VOID_ (GrB_GLOBAL, (void *) s2, GxB_BITMAP_SWITCH)) ; - for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) - { - printf ("bitmap switch [%d] = %g\n", k, sw [k]) ; - sw [k] = ((double) k) / 8. ; - } - - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) sw, GxB_BITMAP_SWITCH, - size)) ; - memset (sw, 0, size) ; - OK (GrB_Global_get_VOID_ (GrB_GLOBAL, (void *) sw, GxB_BITMAP_SWITCH)) ; - for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) - { - CHECK (sw [k] == ((double) k) / 8.) ; - } - - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) NULL, GxB_BITMAP_SWITCH, - 0)) ; - OK (GrB_Global_get_VOID_ (GrB_GLOBAL, (void *) sw, GxB_BITMAP_SWITCH)) ; - for (int k = 0 ; k < GxB_NBITMAP_SWITCH ; k++) - { - CHECK (sw [k] == s2 [k]) ; - } - - ERR (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) s2, GxB_BITMAP_SWITCH, - 1)) ; - - ERR (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) NULL, 0, 0)) ; - - ERR (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) NULL, GxB_PRINTF, 0)) ; - ERR (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) NULL, GxB_FLUSH, 0)) ; - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) myprintf, GxB_PRINTF, - sizeof (GB_printf_function_t))) ; - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) myflush, GxB_FLUSH, - sizeof (GB_flush_function_t))) ; - OK (GxB_print (s_int32, 3)) ; - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) mexPrintf, GxB_PRINTF, - sizeof (GB_printf_function_t))) ; - OK (GrB_Global_set_VOID_ (GrB_GLOBAL, (void *) NULL, GxB_FLUSH, - sizeof (GB_flush_function_t))) ; - OK (GxB_print (s_int32, 3)) ; - - int32_t cv [3] ; - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_COMPILER_VERSION)) ; - CHECK (size == sizeof (int32_t) * 3) ; - OK (GrB_Global_get_VOID_ (GrB_GLOBAL, (void *) cv, - GxB_COMPILER_VERSION)) ; - - for (int k = 0 ; k < 3 ; k++) - { - printf ("compiler version [%d] = %d\n", k, cv [k]) ; - } - - void *f = NULL ; - OK (GrB_Global_get_VOID_(GrB_GLOBAL, (void *) &f, GxB_MALLOC_FUNCTION)) ; - CHECK (f == mxMalloc) ; - OK (GrB_Global_get_VOID_(GrB_GLOBAL, (void *) &f, GxB_REALLOC_FUNCTION)) ; - CHECK (f == mxRealloc) ; - OK (GrB_Global_get_VOID (GrB_GLOBAL, (void *) &f, GxB_CALLOC_FUNCTION)) ; - CHECK (f == mxCalloc) ; - OK (GrB_Global_get_VOID (GrB_GLOBAL, (void *) &f, GxB_FREE_FUNCTION)) ; - CHECK (f == mxFree) ; - - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_MALLOC_FUNCTION)) ; - CHECK (size == sizeof (void *)) ; - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_REALLOC_FUNCTION)) ; - CHECK (size == sizeof (void *)) ; - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_CALLOC_FUNCTION)) ; - CHECK (size == sizeof (void *)) ; - OK (GrB_Global_get_SIZE_ (GrB_GLOBAL, &size, GxB_FREE_FUNCTION)) ; - CHECK (size == sizeof (void *)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&A) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test29: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test30.c b/Test/GB_mex_test30.c deleted file mode 100644 index 92377abd66..0000000000 --- a/Test/GB_mex_test30.c +++ /dev/null @@ -1,286 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test30: test GrB_get and GrB_set (index unary ops) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test30" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define GETOP(op,opname) \ -{ \ - size_t siz1, siz2, siz3 ; \ - OK (GrB_IndexUnaryOp_get_String (op, name, GrB_NAME)) ; \ - CHECK (MATCH (name, opname)) ; \ - OK (GrB_IndexUnaryOp_get_String (op, cname, GxB_JIT_C_NAME)) ; \ - printf ("%s: %s\n", name, cname) ; \ - OK (GrB_IndexUnaryOp_get_SIZE (op, &size, GrB_NAME)) ; \ - CHECK (size == strlen (name) + 1) ; \ - GrB_Info info2, info3 ; \ - info2 = GrB_IndexUnaryOp_get_SIZE (op, &siz1, GrB_INPUT1TYPE_STRING) ; \ - info3 = GrB_IndexUnaryOp_get_String (op, name, GrB_INPUT1TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz1 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz1 == 1) ; } \ - info2 = GrB_IndexUnaryOp_get_SIZE (op, &siz2, GrB_INPUT2TYPE_STRING) ; \ - info3 = GrB_IndexUnaryOp_get_String (op, name, GrB_INPUT2TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz2 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz2 == 1) ; } \ - info2 = GrB_IndexUnaryOp_get_SIZE (op, &siz3, GrB_OUTPUTTYPE_STRING) ; \ - info3 = GrB_IndexUnaryOp_get_String (op, name, GrB_OUTPUTTYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz3 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz3 == 1) ; } \ -} - -#define GETNAME(op) \ -{ \ - GETOP (op, #op) ; \ -/* OK (GxB_IndexUnaryOp_fprint (op, "idxop", 3, NULL)) ; */\ -} - -void myfunc (bool *z, const float *x, GrB_Index i, GrB_Index j, - const float *y) ; -void myfunc (bool *z, const float *x, GrB_Index i, GrB_Index j, - const float *y) -{ - (*z) = (*x) > 2 ; -} - -#define MYFUNC_DEFN \ -"void myfunc (bool *z, const float *x, GrB_Index i, GrB_Index j, \n" \ -" const float *y) \n" \ -"{ \n" \ -" (*z) = (*x) > 2 ; \n" \ -"}" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_IndexUnaryOp op = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char cname [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_IndexUnaryOp get name - //-------------------------------------------------------------------------- - - GETNAME (GrB_ROWINDEX_INT32) ; - GETNAME (GrB_ROWINDEX_INT64) ; - GETNAME (GrB_COLINDEX_INT32) ; - GETNAME (GrB_COLINDEX_INT64) ; - GETNAME (GrB_DIAGINDEX_INT32) ; - GETNAME (GrB_DIAGINDEX_INT64) ; - - GETNAME (GxB_FLIPDIAGINDEX_INT32) ; - GETNAME (GxB_FLIPDIAGINDEX_INT64) ; - - GETNAME (GrB_TRIL) ; - GETNAME (GrB_TRIU) ; - GETNAME (GrB_DIAG) ; - GETNAME (GrB_OFFDIAG) ; - - GETNAME (GrB_COLLE) ; - GETNAME (GrB_COLGT) ; - GETNAME (GrB_ROWLE) ; - GETNAME (GrB_ROWGT) ; - - GETNAME (GrB_VALUEEQ_BOOL) ; - GETNAME (GrB_VALUEEQ_INT8) ; - GETNAME (GrB_VALUEEQ_INT16) ; - GETNAME (GrB_VALUEEQ_INT32) ; - GETNAME (GrB_VALUEEQ_INT64) ; - GETNAME (GrB_VALUEEQ_UINT8) ; - GETNAME (GrB_VALUEEQ_UINT16) ; - GETNAME (GrB_VALUEEQ_UINT32) ; - GETNAME (GrB_VALUEEQ_UINT64) ; - GETNAME (GrB_VALUEEQ_FP32) ; - GETNAME (GrB_VALUEEQ_FP64) ; - GETNAME (GxB_VALUEEQ_FC32) ; - GETNAME (GxB_VALUEEQ_FC64) ; - - GETNAME (GrB_VALUENE_BOOL) ; - GETNAME (GrB_VALUENE_INT8) ; - GETNAME (GrB_VALUENE_INT16) ; - GETNAME (GrB_VALUENE_INT32) ; - GETNAME (GrB_VALUENE_INT64) ; - GETNAME (GrB_VALUENE_UINT8) ; - GETNAME (GrB_VALUENE_UINT16) ; - GETNAME (GrB_VALUENE_UINT32) ; - GETNAME (GrB_VALUENE_UINT64) ; - GETNAME (GrB_VALUENE_FP32) ; - GETNAME (GrB_VALUENE_FP64) ; - GETNAME (GxB_VALUENE_FC32) ; - GETNAME (GxB_VALUENE_FC64) ; - - GETNAME (GrB_VALUELT_BOOL) ; - GETNAME (GrB_VALUELT_INT8) ; - GETNAME (GrB_VALUELT_INT16) ; - GETNAME (GrB_VALUELT_INT32) ; - GETNAME (GrB_VALUELT_INT64) ; - GETNAME (GrB_VALUELT_UINT8) ; - GETNAME (GrB_VALUELT_UINT16) ; - GETNAME (GrB_VALUELT_UINT32) ; - GETNAME (GrB_VALUELT_UINT64) ; - GETNAME (GrB_VALUELT_FP32) ; - GETNAME (GrB_VALUELT_FP64) ; - - GETNAME (GrB_VALUELE_BOOL) ; - GETNAME (GrB_VALUELE_INT8) ; - GETNAME (GrB_VALUELE_INT16) ; - GETNAME (GrB_VALUELE_INT32) ; - GETNAME (GrB_VALUELE_INT64) ; - GETNAME (GrB_VALUELE_UINT8) ; - GETNAME (GrB_VALUELE_UINT16) ; - GETNAME (GrB_VALUELE_UINT32) ; - GETNAME (GrB_VALUELE_UINT64) ; - GETNAME (GrB_VALUELE_FP32) ; - GETNAME (GrB_VALUELE_FP64) ; - - GETNAME (GrB_VALUEGT_BOOL) ; - GETNAME (GrB_VALUEGT_INT8) ; - GETNAME (GrB_VALUEGT_INT16) ; - GETNAME (GrB_VALUEGT_INT32) ; - GETNAME (GrB_VALUEGT_INT64) ; - GETNAME (GrB_VALUEGT_UINT8) ; - GETNAME (GrB_VALUEGT_UINT16) ; - GETNAME (GrB_VALUEGT_UINT32) ; - GETNAME (GrB_VALUEGT_UINT64) ; - GETNAME (GrB_VALUEGT_FP32) ; - GETNAME (GrB_VALUEGT_FP64) ; - - GETNAME (GrB_VALUEGE_BOOL) ; - GETNAME (GrB_VALUEGE_INT8) ; - GETNAME (GrB_VALUEGE_INT16) ; - GETNAME (GrB_VALUEGE_INT32) ; - GETNAME (GrB_VALUEGE_INT64) ; - GETNAME (GrB_VALUEGE_UINT8) ; - GETNAME (GrB_VALUEGE_UINT16) ; - GETNAME (GrB_VALUEGE_UINT32) ; - GETNAME (GrB_VALUEGE_UINT64) ; - GETNAME (GrB_VALUEGE_FP32) ; - GETNAME (GrB_VALUEGE_FP64) ; - - GETNAME (GxB_NONZOMBIE) ; - - //-------------------------------------------------------------------------- - // other get/set methods for GrB_IndexUnaryOp - //-------------------------------------------------------------------------- - - OK (GrB_IndexUnaryOp_get_INT32_(GrB_VALUEGE_FP32, &code, GrB_INPUT1TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_IndexUnaryOp_get_String_(GrB_VALUEGE_FP32, name, GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_IndexUnaryOp_get_INT32_(GrB_VALUEGE_FP64, &code, GrB_OUTPUTTYPE_CODE)) ; - CHECK (code == GrB_BOOL_CODE) ; - - OK (GrB_IndexUnaryOp_get_String_(GrB_VALUEGE_FP64, name, GrB_OUTPUTTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_BOOL")) ; - - OK (GrB_IndexUnaryOp_get_Scalar_(GrB_VALUEGE_FP32, s_int32, GrB_INPUT1TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_IndexUnaryOp_get_Scalar_(GrB_VALUEGE_FP32, s_int32, GrB_OUTPUTTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - expected = GrB_NO_VALUE ; - ERR (GrB_IndexUnaryOp_get_INT32_(GrB_TRIL, &code, GrB_INPUT1TYPE_CODE)) ; - ERR (GrB_IndexUnaryOp_get_Scalar_(GrB_TRIL, s_int32, GrB_INPUT1TYPE_CODE)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_IndexUnaryOp_get_INT32_(GrB_TRIL, &code, GrB_NAME)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_IndexUnaryOp_get_VOID_(GrB_TRIL, nothing, 0)) ; - - OK (GrB_IndexUnaryOp_new (&op, myfunc, GrB_BOOL, GrB_FP32, GrB_FP32)) ; - OK (GrB_IndexUnaryOp_get_SIZE_(op, &size, GrB_NAME)) ; - CHECK (size == 1) ; - OK (GrB_IndexUnaryOp_get_SIZE_(op, &size, GxB_JIT_C_NAME)) ; - printf ("size %lu\n", size) ; - CHECK (size == 1) ; - OK (GrB_IndexUnaryOp_get_SIZE_(op, &size, GxB_JIT_C_DEFINITION)) ; - CHECK (size == 1) ; - - expected = GrB_INVALID_VALUE ; - OK (GrB_IndexUnaryOp_set_String_(op, "myfunc", GxB_JIT_C_NAME)) ; - OK (GrB_IndexUnaryOp_get_String_(op, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "myfunc")) ; - CHECK (op->hash == UINT64_MAX) ; - METHOD (GrB_IndexUnaryOp_set_String (op, MYFUNC_DEFN, GxB_JIT_C_DEFINITION)) ; - OK (GrB_IndexUnaryOp_get_String_(op, defn, GxB_JIT_C_DEFINITION)) ; - CHECK (MATCH (defn, MYFUNC_DEFN)) ; - CHECK (op->hash != UINT64_MAX) ; - OK (GxB_print (op, 3)) ; - - OK (GrB_IndexUnaryOp_set_String_(op, "user name for myfunc", GrB_NAME)) ; - OK (GrB_IndexUnaryOp_get_String_(op, name, GrB_NAME)) ; - CHECK (MATCH (name, "user name for myfunc")) ; - expected = GrB_ALREADY_SET ; - ERR (GrB_IndexUnaryOp_set_String_(op, "another user name", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_IndexUnaryOp_set_String_(op, "another_name", 999)) ; - ERR (GrB_IndexUnaryOp_get_SIZE(op, &size, 999)) ; - - expected = GrB_ALREADY_SET ; - ERR (GrB_IndexUnaryOp_set_String_(op, "another_name", GxB_JIT_C_NAME)) ; - ERR (GrB_IndexUnaryOp_set_String_(op, "another_defn", GxB_JIT_C_DEFINITION)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_IndexUnaryOp_set_String_(GrB_LNOT, "newname", GxB_JIT_C_NAME)) ; - ERR (GrB_IndexUnaryOp_set_Scalar_(op, s_int32, 0)) ; - ERR (GrB_IndexUnaryOp_set_INT32_(op, 0, 0)) ; - ERR (GrB_IndexUnaryOp_set_VOID_(op, nothing, 0, 0)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&op) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test30: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test31.c b/Test/GB_mex_test31.c deleted file mode 100644 index 1892e7d837..0000000000 --- a/Test/GB_mex_test31.c +++ /dev/null @@ -1,381 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test31: test GrB_get and GrB_set (monoids) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test31" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define GETOP(op,opname) \ -{ \ - size_t siz1, siz2, siz3 ; \ - OK (GrB_Monoid_get_String (op, name, GrB_NAME)) ; \ - CHECK (MATCH (name, opname)) ; \ - OK (GrB_Monoid_get_SIZE (op, &size, GrB_NAME)) ; \ - CHECK (size == strlen (name) + 1) ; \ - GrB_Info info2, info3 ; \ - info2 = GrB_Monoid_get_SIZE (op, &siz1, GrB_INPUT1TYPE_STRING) ; \ - info3 = GrB_Monoid_get_String (op, name, GrB_INPUT1TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz1 == strlen (name) + 1) ; \ - CHECK (info2 == GrB_SUCCESS) ; \ - info2 = GrB_Monoid_get_SIZE (op, &siz2, GrB_INPUT2TYPE_STRING) ; \ - info3 = GrB_Monoid_get_String (op, name, GrB_INPUT2TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz2 == strlen (name) + 1) ; \ - CHECK (info2 == GrB_SUCCESS) ; \ - info2 = GrB_Monoid_get_SIZE (op, &siz3, GrB_OUTPUTTYPE_STRING) ; \ - info3 = GrB_Monoid_get_String (op, name, GrB_OUTPUTTYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz3 == strlen (name) + 1) ; \ - CHECK (info2 == GrB_SUCCESS) ; \ -} - -#define GETNAME(op) \ -{ \ - GETOP (op, #op) ; \ -/* OK (GxB_Monoid_fprint (op, "binop", 3, NULL)) ; */ \ -} - -#define GETNAM2(op,alias) \ -{ \ - GETOP (op,alias) ; \ -/* OK (GxB_Monoid_fprint (op, "binop", 3, NULL)) ; */ \ -} - -void myfunc (float *z, const float *x, const float *y) ; -void myfunc (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; } -#define MYFUNC_DEFN \ -"void myfunc (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; }" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_BinaryOp binop = NULL, op = NULL ; - GrB_Monoid monoid = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - GrB_Index nvals = 999 ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_Monoid get name - //-------------------------------------------------------------------------- - - GETNAM2 (GxB_MIN_INT8_MONOID, "GrB_MIN_MONOID_INT8") ; - GETNAM2 (GxB_MIN_INT16_MONOID, "GrB_MIN_MONOID_INT16") ; - GETNAM2 (GxB_MIN_INT32_MONOID, "GrB_MIN_MONOID_INT32") ; - GETNAM2 (GxB_MIN_INT64_MONOID, "GrB_MIN_MONOID_INT64") ; - GETNAM2 (GxB_MIN_UINT8_MONOID, "GrB_MIN_MONOID_UINT8") ; - GETNAM2 (GxB_MIN_UINT16_MONOID, "GrB_MIN_MONOID_UINT16") ; - GETNAM2 (GxB_MIN_UINT32_MONOID, "GrB_MIN_MONOID_UINT32") ; - GETNAM2 (GxB_MIN_UINT64_MONOID, "GrB_MIN_MONOID_UINT64") ; - GETNAM2 (GxB_MIN_FP32_MONOID, "GrB_MIN_MONOID_FP32") ; - GETNAM2 (GxB_MIN_FP64_MONOID, "GrB_MIN_MONOID_FP64") ; - - GETNAME (GrB_MIN_MONOID_INT8) ; - GETNAME (GrB_MIN_MONOID_INT16) ; - GETNAME (GrB_MIN_MONOID_INT32) ; - GETNAME (GrB_MIN_MONOID_INT64) ; - GETNAME (GrB_MIN_MONOID_UINT8) ; - GETNAME (GrB_MIN_MONOID_UINT16) ; - GETNAME (GrB_MIN_MONOID_UINT32) ; - GETNAME (GrB_MIN_MONOID_UINT64) ; - GETNAME (GrB_MIN_MONOID_FP32) ; - GETNAME (GrB_MIN_MONOID_FP64) ; - - GETNAM2 (GxB_MAX_INT8_MONOID, "GrB_MAX_MONOID_INT8") ; - GETNAM2 (GxB_MAX_INT16_MONOID, "GrB_MAX_MONOID_INT16") ; - GETNAM2 (GxB_MAX_INT32_MONOID, "GrB_MAX_MONOID_INT32") ; - GETNAM2 (GxB_MAX_INT64_MONOID, "GrB_MAX_MONOID_INT64") ; - GETNAM2 (GxB_MAX_UINT8_MONOID, "GrB_MAX_MONOID_UINT8") ; - GETNAM2 (GxB_MAX_UINT16_MONOID, "GrB_MAX_MONOID_UINT16") ; - GETNAM2 (GxB_MAX_UINT32_MONOID, "GrB_MAX_MONOID_UINT32") ; - GETNAM2 (GxB_MAX_UINT64_MONOID, "GrB_MAX_MONOID_UINT64") ; - GETNAM2 (GxB_MAX_FP32_MONOID, "GrB_MAX_MONOID_FP32") ; - GETNAM2 (GxB_MAX_FP64_MONOID, "GrB_MAX_MONOID_FP64") ; - - GETNAME (GrB_MAX_MONOID_INT8) ; - GETNAME (GrB_MAX_MONOID_INT16) ; - GETNAME (GrB_MAX_MONOID_INT32) ; - GETNAME (GrB_MAX_MONOID_INT64) ; - GETNAME (GrB_MAX_MONOID_UINT8) ; - GETNAME (GrB_MAX_MONOID_UINT16) ; - GETNAME (GrB_MAX_MONOID_UINT32) ; - GETNAME (GrB_MAX_MONOID_UINT64) ; - GETNAME (GrB_MAX_MONOID_FP32) ; - GETNAME (GrB_MAX_MONOID_FP64) ; - - GETNAM2 (GxB_PLUS_INT8_MONOID, "GrB_PLUS_MONOID_INT8") ; - GETNAM2 (GxB_PLUS_INT16_MONOID, "GrB_PLUS_MONOID_INT16") ; - GETNAM2 (GxB_PLUS_INT32_MONOID, "GrB_PLUS_MONOID_INT32") ; - GETNAM2 (GxB_PLUS_INT64_MONOID, "GrB_PLUS_MONOID_INT64") ; - GETNAM2 (GxB_PLUS_UINT8_MONOID, "GrB_PLUS_MONOID_UINT8") ; - GETNAM2 (GxB_PLUS_UINT16_MONOID, "GrB_PLUS_MONOID_UINT16") ; - GETNAM2 (GxB_PLUS_UINT32_MONOID, "GrB_PLUS_MONOID_UINT32") ; - GETNAM2 (GxB_PLUS_UINT64_MONOID, "GrB_PLUS_MONOID_UINT64") ; - GETNAM2 (GxB_PLUS_FP32_MONOID, "GrB_PLUS_MONOID_FP32") ; - GETNAM2 (GxB_PLUS_FP64_MONOID, "GrB_PLUS_MONOID_FP64") ; - GETNAME (GxB_PLUS_FC32_MONOID) ; - GETNAME (GxB_PLUS_FC64_MONOID) ; - - GETNAME (GrB_PLUS_MONOID_INT8) ; - GETNAME (GrB_PLUS_MONOID_INT16) ; - GETNAME (GrB_PLUS_MONOID_INT32) ; - GETNAME (GrB_PLUS_MONOID_INT64) ; - GETNAME (GrB_PLUS_MONOID_UINT8) ; - GETNAME (GrB_PLUS_MONOID_UINT16) ; - GETNAME (GrB_PLUS_MONOID_UINT32) ; - GETNAME (GrB_PLUS_MONOID_UINT64) ; - GETNAME (GrB_PLUS_MONOID_FP32) ; - GETNAME (GrB_PLUS_MONOID_FP64) ; - - GETNAM2 (GxB_TIMES_INT8_MONOID, "GrB_TIMES_MONOID_INT8") ; - GETNAM2 (GxB_TIMES_INT16_MONOID, "GrB_TIMES_MONOID_INT16") ; - GETNAM2 (GxB_TIMES_INT32_MONOID, "GrB_TIMES_MONOID_INT32") ; - GETNAM2 (GxB_TIMES_INT64_MONOID, "GrB_TIMES_MONOID_INT64") ; - GETNAM2 (GxB_TIMES_UINT8_MONOID, "GrB_TIMES_MONOID_UINT8") ; - GETNAM2 (GxB_TIMES_UINT16_MONOID, "GrB_TIMES_MONOID_UINT16") ; - GETNAM2 (GxB_TIMES_UINT32_MONOID, "GrB_TIMES_MONOID_UINT32") ; - GETNAM2 (GxB_TIMES_UINT64_MONOID, "GrB_TIMES_MONOID_UINT64") ; - GETNAM2 (GxB_TIMES_FP32_MONOID, "GrB_TIMES_MONOID_FP32") ; - GETNAM2 (GxB_TIMES_FP64_MONOID, "GrB_TIMES_MONOID_FP64") ; - GETNAME (GxB_TIMES_FC32_MONOID) ; - GETNAME (GxB_TIMES_FC64_MONOID) ; - - GETNAME (GrB_TIMES_MONOID_INT8) ; - GETNAME (GrB_TIMES_MONOID_INT16) ; - GETNAME (GrB_TIMES_MONOID_INT32) ; - GETNAME (GrB_TIMES_MONOID_INT64) ; - GETNAME (GrB_TIMES_MONOID_UINT8) ; - GETNAME (GrB_TIMES_MONOID_UINT16) ; - GETNAME (GrB_TIMES_MONOID_UINT32) ; - GETNAME (GrB_TIMES_MONOID_UINT64) ; - GETNAME (GrB_TIMES_MONOID_FP32) ; - GETNAME (GrB_TIMES_MONOID_FP64) ; - - GETNAME (GxB_ANY_BOOL_MONOID) ; - GETNAME (GxB_ANY_INT8_MONOID) ; - GETNAME (GxB_ANY_INT16_MONOID) ; - GETNAME (GxB_ANY_INT32_MONOID) ; - GETNAME (GxB_ANY_INT64_MONOID) ; - GETNAME (GxB_ANY_UINT8_MONOID) ; - GETNAME (GxB_ANY_UINT16_MONOID) ; - GETNAME (GxB_ANY_UINT32_MONOID) ; - GETNAME (GxB_ANY_UINT64_MONOID) ; - GETNAME (GxB_ANY_FP32_MONOID) ; - GETNAME (GxB_ANY_FP64_MONOID) ; - GETNAME (GxB_ANY_FC32_MONOID) ; - GETNAME (GxB_ANY_FC64_MONOID) ; - - GETNAM2 (GxB_LOR_BOOL_MONOID, "GrB_LOR_MONOID_BOOL") ; - GETNAM2 (GxB_LAND_BOOL_MONOID, "GrB_LAND_MONOID_BOOL") ; - GETNAM2 (GxB_LXOR_BOOL_MONOID, "GrB_LXOR_MONOID_BOOL") ; - GETNAM2 (GxB_LXNOR_BOOL_MONOID, "GrB_LXNOR_MONOID_BOOL") ; - GETNAM2 (GxB_EQ_BOOL_MONOID, "GrB_LXNOR_MONOID_BOOL") ; - - GETNAME (GrB_LOR_MONOID_BOOL) ; - GETNAME (GrB_LAND_MONOID_BOOL) ; - GETNAME (GrB_LXOR_MONOID_BOOL) ; - GETNAME (GrB_LXNOR_MONOID_BOOL) ; - - GETNAME (GxB_BOR_UINT8_MONOID) ; - GETNAME (GxB_BOR_UINT16_MONOID) ; - GETNAME (GxB_BOR_UINT32_MONOID) ; - GETNAME (GxB_BOR_UINT64_MONOID) ; - - GETNAME (GxB_BAND_UINT8_MONOID) ; - GETNAME (GxB_BAND_UINT16_MONOID) ; - GETNAME (GxB_BAND_UINT32_MONOID) ; - GETNAME (GxB_BAND_UINT64_MONOID) ; - - GETNAME (GxB_BXOR_UINT8_MONOID) ; - GETNAME (GxB_BXOR_UINT16_MONOID) ; - GETNAME (GxB_BXOR_UINT32_MONOID) ; - GETNAME (GxB_BXOR_UINT64_MONOID) ; - - GETNAME (GxB_BXNOR_UINT8_MONOID) ; - GETNAME (GxB_BXNOR_UINT16_MONOID) ; - GETNAME (GxB_BXNOR_UINT32_MONOID) ; - GETNAME (GxB_BXNOR_UINT64_MONOID) ; - - //-------------------------------------------------------------------------- - // other get/set methods for GrB_Monoid - //-------------------------------------------------------------------------- - - OK (GrB_Monoid_get_INT32_(GrB_MAX_MONOID_FP32, &code, GrB_INPUT1TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_Monoid_get_String_(GrB_MAX_MONOID_FP32, name, - GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Monoid_get_String_(GrB_MAX_MONOID_INT32, name, - GrB_INPUT2TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_INT32")) ; - - OK (GrB_Monoid_get_INT32_(GrB_MAX_MONOID_FP64, &code, GrB_OUTPUTTYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_Monoid_get_String_(GrB_MAX_MONOID_FP64, name, - GrB_OUTPUTTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP64")) ; - - OK (GrB_Monoid_get_Scalar_(GrB_MAX_MONOID_FP32, s_int32, - GrB_INPUT1TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_Monoid_get_Scalar_(GrB_LAND_MONOID_BOOL, s_int32, - GrB_OUTPUTTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - OK (GrB_Monoid_get_INT32_(GrB_PLUS_MONOID_FP64, &code, - GrB_INPUT2TYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_Monoid_get_Scalar_(GrB_LAND_MONOID_BOOL, s_int32, - GrB_INPUT2TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Monoid_get_INT32_(GrB_LAND_MONOID_BOOL, &code, GrB_NAME)) ; - ERR (GrB_Monoid_get_String_(GrB_MAX_MONOID_INT32, name, 999)) ; - ERR (GrB_Monoid_get_VOID_(GrB_LAND_MONOID_BOOL, nothing, 0)) ; - - OK (GrB_BinaryOp_new (&binop, myfunc, GrB_FP32, GrB_FP32, GrB_FP32)) ; - OK (GrB_BinaryOp_set_String_(binop, "myfunc", GrB_NAME)) ; - METHOD (GrB_BinaryOp_set_String (binop, MYFUNC_DEFN, GxB_JIT_C_DEFINITION)) ; - - OK (GrB_Monoid_new_FP32 (&monoid, binop, (float) 0.0)) ; - OK (GrB_Monoid_get_SIZE_(monoid, &size, GrB_NAME)) ; - OK (GrB_Monoid_get_String_(monoid, name, GrB_NAME)) ; - printf ("\nuser monoid: [%s]\n", name) ; - CHECK (MATCH (name, "")) ; - CHECK (size == 1) ; - OK (GxB_print (monoid, 3)) ; - - OK (GrB_Monoid_get_String_(monoid, name, GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Monoid_get_SIZE_(monoid, &size, GrB_INPUT1TYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Monoid_get_SIZE_(monoid, &size, GrB_INPUT1TYPE_CODE)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Monoid_set_Scalar_(monoid, s_int32, 0)) ; - ERR (GrB_Monoid_set_INT32_(monoid, 0, 0)) ; - ERR (GrB_Monoid_set_VOID_(monoid, nothing, 0, 0)) ; - - OK (GrB_Monoid_set_String_(monoid, "monoid_stuff", GrB_NAME)) ; - OK (GrB_Monoid_get_String_(monoid, name, GrB_NAME)) ; - printf ("\nuser monoid: [%s]\n", name) ; - CHECK (MATCH (name, "monoid_stuff")) ; - OK (GrB_Monoid_get_SIZE_(monoid, &size, GrB_NAME)) ; - CHECK (size == strlen (name) + 1) ; - - expected = GrB_ALREADY_SET ; - ERR (GrB_Monoid_set_String_(monoid, "another user name", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - printf ("\nterminal monoid:\n") ; - int32_t id_int32 ; - OK (GxB_print (GrB_MAX_MONOID_INT32, 3)) ; - OK (GrB_Monoid_get_Scalar_ (GrB_MAX_MONOID_INT32, s_int32, - GxB_MONOID_IDENTITY)) ; - OK (GrB_Scalar_nvals (&nvals, s_int32)) ; - CHECK (nvals == 1) ; - OK (GrB_Scalar_extractElement_INT32_(&id_int32, s_int32)) ; - CHECK (id_int32 == INT32_MIN) ; - - int32_t term_int32 ; - OK (GrB_Monoid_get_Scalar_ (GrB_MAX_MONOID_INT32, s_int32, - GxB_MONOID_TERMINAL)) ; - OK (GrB_Scalar_extractElement_INT32_(&term_int32, s_int32)) ; - CHECK (term_int32 == INT32_MAX) ; - - printf ("\nmon-terminal monoid:\n") ; - OK (GxB_print (GrB_PLUS_MONOID_INT32, 3)) ; - OK (GrB_Monoid_get_Scalar_ (GrB_PLUS_MONOID_INT32, s_int32, - GxB_MONOID_TERMINAL)) ; - OK (GrB_Scalar_nvals (&nvals, s_int32)) ; - CHECK (nvals == 0) ; - - OK (GrB_Monoid_get_Scalar_ (GrB_PLUS_MONOID_INT32, s_int32, - GxB_MONOID_IDENTITY)) ; - OK (GrB_Scalar_extractElement_INT32_(&id_int32, s_int32)) ; - CHECK (id_int32 == 0) ; - - expected = GrB_DOMAIN_MISMATCH ; - ERR (GrB_Monoid_get_Scalar_ (GrB_PLUS_MONOID_INT32, s_fp64, - GxB_MONOID_IDENTITY)) ; - ERR (GrB_Monoid_get_Scalar_ (GrB_PLUS_MONOID_INT32, s_fp64, - GxB_MONOID_TERMINAL)) ; - ERR (GrB_Monoid_get_Scalar_ (GrB_MAX_MONOID_INT32, s_fp64, - GxB_MONOID_IDENTITY)) ; - ERR (GrB_Monoid_get_Scalar_ (GrB_MAX_MONOID_INT32, s_fp64, - GxB_MONOID_TERMINAL)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Monoid_get_Scalar_ (GrB_MAX_MONOID_INT32, s_fp64, - GrB_OUTP_FIELD)) ; - ERR (GrB_Monoid_set_String_(GrB_MAX_MONOID_INT32, "newname", GrB_NAME)) ; - - op = NULL ; - OK (GrB_Monoid_get_SIZE_ (monoid, &size, GxB_MONOID_OPERATOR)) ; - CHECK (size == sizeof (GrB_BinaryOp)) ; - OK (GrB_Monoid_get_VOID (monoid, (void *) (&op), GxB_MONOID_OPERATOR)) ; - CHECK (op == binop) ; - OK (GrB_Monoid_get_VOID_ (GrB_PLUS_MONOID_INT32, (void *) &op, - GxB_MONOID_OPERATOR)) ; - CHECK (op == GrB_PLUS_INT32) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&binop) ; - GrB_free (&monoid) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test31: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test32.c b/Test/GB_mex_test32.c deleted file mode 100644 index fd37bae0ad..0000000000 --- a/Test/GB_mex_test32.c +++ /dev/null @@ -1,2271 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test32: test GrB_get and GrB_set (semirings) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test32" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define GETOP(op,opname) \ -{ \ - size_t siz1, siz2, siz3 ; \ - OK (GrB_Semiring_get_String (op, name, GrB_NAME)) ; \ - CHECK (MATCH (name, opname)) ; \ - OK (GrB_Semiring_get_SIZE (op, &size, GrB_NAME)) ; \ - CHECK (size == strlen (name) + 1) ; \ - GrB_Info info2, info3 ; \ - info2 = GrB_Semiring_get_SIZE (op, &siz1, GrB_INPUT1TYPE_STRING) ; \ - info3 = GrB_Semiring_get_String (op, name, GrB_INPUT1TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz1 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz1 == 1) ; } \ - info2 = GrB_Semiring_get_SIZE (op, &siz2, GrB_INPUT2TYPE_STRING) ; \ - info3 = GrB_Semiring_get_String (op, name, GrB_INPUT2TYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz2 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz1 == 1) ; } \ - info2 = GrB_Semiring_get_SIZE (op, &siz3, GrB_OUTPUTTYPE_STRING) ; \ - info3 = GrB_Semiring_get_String (op, name, GrB_OUTPUTTYPE_STRING) ; \ - CHECK (info2 == info3) ; \ - CHECK (siz3 == strlen (name) + 1) ; \ - if (info2 == GrB_NO_VALUE) { CHECK (siz1 == 1) ; } \ -} - -#define GETNAME(op) \ -{ \ - GETOP (op, #op) ; \ -/* OK (GxB_Semiring_fprint (sm, "semiring", 3, NULL)) ; */ \ -} - -#define GETNAM2(op,alias) \ -{ \ - GETOP (op,alias) ; \ -/* OK (GxB_Semiring_fprint (sm, "semiring", 3, NULL)) ; */ \ -} - -void mytimes (float *z, const float *x, const float *y) ; -void mytimes (float *z, const float *x, const float *y) { (*z) = (*x)*(*y) ; } -#define MYTIMES_DEFN \ -"void mytimes (float *z, const float *x, const float *y) { (*z) = (*x)*(*y) ; }" - -void myadd (float *z, const float *x, const float *y) ; -void myadd (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; } -#define MYADD_DEFN \ -"void myadd (float *z, const float *x, const float *y) { (*z) = (*x)+(*y) ; }" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_BinaryOp times = NULL, add = NULL, op = NULL ; - GrB_Monoid monoid = NULL, mon = NULL ; - GrB_Semiring semiring = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [1024] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - GrB_Index nvals = 999 ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_Semiring get name - //-------------------------------------------------------------------------- - - //-------------------------------------------------------------------------- - // *_FIRST - //-------------------------------------------------------------------------- - - GETNAME (GrB_MIN_FIRST_SEMIRING_INT8) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_INT16) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_INT32) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_INT64) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_UINT8) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_UINT16) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_UINT32) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_UINT64) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_FP32) ; - GETNAME (GrB_MIN_FIRST_SEMIRING_FP64) ; - - GETNAM2 (GxB_MIN_FIRST_INT8, "GrB_MIN_FIRST_SEMIRING_INT8") ; - GETNAM2 (GxB_MIN_FIRST_INT16, "GrB_MIN_FIRST_SEMIRING_INT16") ; - GETNAM2 (GxB_MIN_FIRST_INT32, "GrB_MIN_FIRST_SEMIRING_INT32") ; - GETNAM2 (GxB_MIN_FIRST_INT64, "GrB_MIN_FIRST_SEMIRING_INT64") ; - GETNAM2 (GxB_MIN_FIRST_UINT8, "GrB_MIN_FIRST_SEMIRING_UINT8") ; - GETNAM2 (GxB_MIN_FIRST_UINT16, "GrB_MIN_FIRST_SEMIRING_UINT16") ; - GETNAM2 (GxB_MIN_FIRST_UINT32, "GrB_MIN_FIRST_SEMIRING_UINT32") ; - GETNAM2 (GxB_MIN_FIRST_UINT64, "GrB_MIN_FIRST_SEMIRING_UINT64") ; - GETNAM2 (GxB_MIN_FIRST_FP32, "GrB_MIN_FIRST_SEMIRING_FP32") ; - GETNAM2 (GxB_MIN_FIRST_FP64, "GrB_MIN_FIRST_SEMIRING_FP64") ; - - GETNAME (GrB_MAX_FIRST_SEMIRING_INT8) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_INT16) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_INT32) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_INT64) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_UINT8) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_UINT16) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_UINT32) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_UINT64) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_FP32) ; - GETNAME (GrB_MAX_FIRST_SEMIRING_FP64) ; - - GETNAM2 (GxB_MAX_FIRST_INT8, "GrB_MAX_FIRST_SEMIRING_INT8") ; - GETNAM2 (GxB_MAX_FIRST_INT16, "GrB_MAX_FIRST_SEMIRING_INT16") ; - GETNAM2 (GxB_MAX_FIRST_INT32, "GrB_MAX_FIRST_SEMIRING_INT32") ; - GETNAM2 (GxB_MAX_FIRST_INT64, "GrB_MAX_FIRST_SEMIRING_INT64") ; - GETNAM2 (GxB_MAX_FIRST_UINT8, "GrB_MAX_FIRST_SEMIRING_UINT8") ; - GETNAM2 (GxB_MAX_FIRST_UINT16, "GrB_MAX_FIRST_SEMIRING_UINT16") ; - GETNAM2 (GxB_MAX_FIRST_UINT32, "GrB_MAX_FIRST_SEMIRING_UINT32") ; - GETNAM2 (GxB_MAX_FIRST_UINT64, "GrB_MAX_FIRST_SEMIRING_UINT64") ; - GETNAM2 (GxB_MAX_FIRST_FP32, "GrB_MAX_FIRST_SEMIRING_FP32") ; - GETNAM2 (GxB_MAX_FIRST_FP64, "GrB_MAX_FIRST_SEMIRING_FP64") ; - - GETNAME (GxB_PLUS_FIRST_INT8) ; - GETNAME (GxB_PLUS_FIRST_INT16) ; - GETNAME (GxB_PLUS_FIRST_INT32) ; - GETNAME (GxB_PLUS_FIRST_INT64) ; - GETNAME (GxB_PLUS_FIRST_UINT8) ; - GETNAME (GxB_PLUS_FIRST_UINT16) ; - GETNAME (GxB_PLUS_FIRST_UINT32) ; - GETNAME (GxB_PLUS_FIRST_UINT64) ; - GETNAME (GxB_PLUS_FIRST_FP32) ; - GETNAME (GxB_PLUS_FIRST_FP64) ; - GETNAME (GxB_PLUS_FIRST_FC32) ; - GETNAME (GxB_PLUS_FIRST_FC64) ; - - GETNAME (GxB_TIMES_FIRST_INT8) ; - GETNAME (GxB_TIMES_FIRST_INT16) ; - GETNAME (GxB_TIMES_FIRST_INT32) ; - GETNAME (GxB_TIMES_FIRST_INT64) ; - GETNAME (GxB_TIMES_FIRST_UINT8) ; - GETNAME (GxB_TIMES_FIRST_UINT16) ; - GETNAME (GxB_TIMES_FIRST_UINT32) ; - GETNAME (GxB_TIMES_FIRST_UINT64) ; - GETNAME (GxB_TIMES_FIRST_FP32) ; - GETNAME (GxB_TIMES_FIRST_FP64) ; - GETNAME (GxB_TIMES_FIRST_FC32) ; - GETNAME (GxB_TIMES_FIRST_FC64) ; - - GETNAME (GxB_ANY_FIRST_INT8) ; - GETNAME (GxB_ANY_FIRST_INT16) ; - GETNAME (GxB_ANY_FIRST_INT32) ; - GETNAME (GxB_ANY_FIRST_INT64) ; - GETNAME (GxB_ANY_FIRST_UINT8) ; - GETNAME (GxB_ANY_FIRST_UINT16) ; - GETNAME (GxB_ANY_FIRST_UINT32) ; - GETNAME (GxB_ANY_FIRST_UINT64) ; - GETNAME (GxB_ANY_FIRST_FP32) ; - GETNAME (GxB_ANY_FIRST_FP64) ; - GETNAME (GxB_ANY_FIRST_FC32) ; - GETNAME (GxB_ANY_FIRST_FC64) ; - - GETNAME (GxB_LOR_FIRST_BOOL) ; - GETNAME (GxB_LAND_FIRST_BOOL) ; - GETNAME (GxB_LXOR_FIRST_BOOL) ; - GETNAME (GxB_EQ_FIRST_BOOL) ; - GETNAME (GxB_ANY_FIRST_BOOL) ; - - //-------------------------------------------------------------------------- - // *_SECOND - //-------------------------------------------------------------------------- - - GETNAME (GrB_MIN_SECOND_SEMIRING_INT8) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_INT16) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_INT32) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_INT64) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_UINT8) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_UINT16) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_UINT32) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_UINT64) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_FP32) ; - GETNAME (GrB_MIN_SECOND_SEMIRING_FP64) ; - - GETNAM2 (GxB_MIN_SECOND_INT8, "GrB_MIN_SECOND_SEMIRING_INT8") ; - GETNAM2 (GxB_MIN_SECOND_INT16, "GrB_MIN_SECOND_SEMIRING_INT16") ; - GETNAM2 (GxB_MIN_SECOND_INT32, "GrB_MIN_SECOND_SEMIRING_INT32") ; - GETNAM2 (GxB_MIN_SECOND_INT64, "GrB_MIN_SECOND_SEMIRING_INT64") ; - GETNAM2 (GxB_MIN_SECOND_UINT8, "GrB_MIN_SECOND_SEMIRING_UINT8") ; - GETNAM2 (GxB_MIN_SECOND_UINT16, "GrB_MIN_SECOND_SEMIRING_UINT16") ; - GETNAM2 (GxB_MIN_SECOND_UINT32, "GrB_MIN_SECOND_SEMIRING_UINT32") ; - GETNAM2 (GxB_MIN_SECOND_UINT64, "GrB_MIN_SECOND_SEMIRING_UINT64") ; - GETNAM2 (GxB_MIN_SECOND_FP32, "GrB_MIN_SECOND_SEMIRING_FP32") ; - GETNAM2 (GxB_MIN_SECOND_FP64, "GrB_MIN_SECOND_SEMIRING_FP64") ; - - GETNAME (GrB_MAX_SECOND_SEMIRING_INT8) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_INT16) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_INT32) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_INT64) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_UINT8) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_UINT16) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_UINT32) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_UINT64) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_FP32) ; - GETNAME (GrB_MAX_SECOND_SEMIRING_FP64) ; - - GETNAM2 (GxB_MAX_SECOND_INT8, "GrB_MAX_SECOND_SEMIRING_INT8") ; - GETNAM2 (GxB_MAX_SECOND_INT16, "GrB_MAX_SECOND_SEMIRING_INT16") ; - GETNAM2 (GxB_MAX_SECOND_INT32, "GrB_MAX_SECOND_SEMIRING_INT32") ; - GETNAM2 (GxB_MAX_SECOND_INT64, "GrB_MAX_SECOND_SEMIRING_INT64") ; - GETNAM2 (GxB_MAX_SECOND_UINT8, "GrB_MAX_SECOND_SEMIRING_UINT8") ; - GETNAM2 (GxB_MAX_SECOND_UINT16, "GrB_MAX_SECOND_SEMIRING_UINT16") ; - GETNAM2 (GxB_MAX_SECOND_UINT32, "GrB_MAX_SECOND_SEMIRING_UINT32") ; - GETNAM2 (GxB_MAX_SECOND_UINT64, "GrB_MAX_SECOND_SEMIRING_UINT64") ; - GETNAM2 (GxB_MAX_SECOND_FP32, "GrB_MAX_SECOND_SEMIRING_FP32") ; - GETNAM2 (GxB_MAX_SECOND_FP64, "GrB_MAX_SECOND_SEMIRING_FP64") ; - - GETNAME (GxB_PLUS_SECOND_INT8) ; - GETNAME (GxB_PLUS_SECOND_INT16) ; - GETNAME (GxB_PLUS_SECOND_INT32) ; - GETNAME (GxB_PLUS_SECOND_INT64) ; - GETNAME (GxB_PLUS_SECOND_UINT8) ; - GETNAME (GxB_PLUS_SECOND_UINT16) ; - GETNAME (GxB_PLUS_SECOND_UINT32) ; - GETNAME (GxB_PLUS_SECOND_UINT64) ; - GETNAME (GxB_PLUS_SECOND_FP32) ; - GETNAME (GxB_PLUS_SECOND_FP64) ; - GETNAME (GxB_PLUS_SECOND_FC32) ; - GETNAME (GxB_PLUS_SECOND_FC64) ; - - GETNAME (GxB_TIMES_SECOND_INT8) ; - GETNAME (GxB_TIMES_SECOND_INT16) ; - GETNAME (GxB_TIMES_SECOND_INT32) ; - GETNAME (GxB_TIMES_SECOND_INT64) ; - GETNAME (GxB_TIMES_SECOND_UINT8) ; - GETNAME (GxB_TIMES_SECOND_UINT16) ; - GETNAME (GxB_TIMES_SECOND_UINT32) ; - GETNAME (GxB_TIMES_SECOND_UINT64) ; - GETNAME (GxB_TIMES_SECOND_FP32) ; - GETNAME (GxB_TIMES_SECOND_FP64) ; - GETNAME (GxB_TIMES_SECOND_FC32) ; - GETNAME (GxB_TIMES_SECOND_FC64) ; - - GETNAME (GxB_ANY_SECOND_INT8) ; - GETNAME (GxB_ANY_SECOND_INT16) ; - GETNAME (GxB_ANY_SECOND_INT32) ; - GETNAME (GxB_ANY_SECOND_INT64) ; - GETNAME (GxB_ANY_SECOND_UINT8) ; - GETNAME (GxB_ANY_SECOND_UINT16) ; - GETNAME (GxB_ANY_SECOND_UINT32) ; - GETNAME (GxB_ANY_SECOND_UINT64) ; - GETNAME (GxB_ANY_SECOND_FP32) ; - GETNAME (GxB_ANY_SECOND_FP64) ; - GETNAME (GxB_ANY_SECOND_FC32) ; - GETNAME (GxB_ANY_SECOND_FC64) ; - - GETNAME (GxB_LOR_SECOND_BOOL) ; - GETNAME (GxB_LAND_SECOND_BOOL) ; - GETNAME (GxB_LXOR_SECOND_BOOL) ; - GETNAME (GxB_EQ_SECOND_BOOL) ; - GETNAME (GxB_ANY_SECOND_BOOL) ; - - //-------------------------------------------------------------------------- - // *_PAIR - //-------------------------------------------------------------------------- - - GETNAM2 (GxB_MIN_PAIR_INT8, "GxB_ANY_PAIR_INT8") ; - GETNAM2 (GxB_MIN_PAIR_INT16, "GxB_ANY_PAIR_INT16") ; - GETNAM2 (GxB_MIN_PAIR_INT32, "GxB_ANY_PAIR_INT32") ; - GETNAM2 (GxB_MIN_PAIR_INT64, "GxB_ANY_PAIR_INT64") ; - GETNAM2 (GxB_MIN_PAIR_UINT8, "GxB_ANY_PAIR_UINT8") ; - GETNAM2 (GxB_MIN_PAIR_UINT16, "GxB_ANY_PAIR_UINT16") ; - GETNAM2 (GxB_MIN_PAIR_UINT32, "GxB_ANY_PAIR_UINT32") ; - GETNAM2 (GxB_MIN_PAIR_UINT64, "GxB_ANY_PAIR_UINT64") ; - GETNAM2 (GxB_MIN_PAIR_FP32, "GxB_ANY_PAIR_FP32") ; - GETNAM2 (GxB_MIN_PAIR_FP64, "GxB_ANY_PAIR_FP64") ; - - GETNAM2 (GxB_MAX_PAIR_INT8, "GxB_ANY_PAIR_INT8") ; - GETNAM2 (GxB_MAX_PAIR_INT16, "GxB_ANY_PAIR_INT16") ; - GETNAM2 (GxB_MAX_PAIR_INT32, "GxB_ANY_PAIR_INT32") ; - GETNAM2 (GxB_MAX_PAIR_INT64, "GxB_ANY_PAIR_INT64") ; - GETNAM2 (GxB_MAX_PAIR_UINT8, "GxB_ANY_PAIR_UINT8") ; - GETNAM2 (GxB_MAX_PAIR_UINT16, "GxB_ANY_PAIR_UINT16") ; - GETNAM2 (GxB_MAX_PAIR_UINT32, "GxB_ANY_PAIR_UINT32") ; - GETNAM2 (GxB_MAX_PAIR_UINT64, "GxB_ANY_PAIR_UINT64") ; - GETNAM2 (GxB_MAX_PAIR_FP32, "GxB_ANY_PAIR_FP32") ; - GETNAM2 (GxB_MAX_PAIR_FP64, "GxB_ANY_PAIR_FP64") ; - - GETNAME (GxB_PLUS_PAIR_INT8) ; - GETNAME (GxB_PLUS_PAIR_INT16) ; - GETNAME (GxB_PLUS_PAIR_INT32) ; - GETNAME (GxB_PLUS_PAIR_INT64) ; - GETNAME (GxB_PLUS_PAIR_UINT8) ; - GETNAME (GxB_PLUS_PAIR_UINT16) ; - GETNAME (GxB_PLUS_PAIR_UINT32) ; - GETNAME (GxB_PLUS_PAIR_UINT64) ; - GETNAME (GxB_PLUS_PAIR_FP32) ; - GETNAME (GxB_PLUS_PAIR_FP64) ; - GETNAME (GxB_PLUS_PAIR_FC32) ; - GETNAME (GxB_PLUS_PAIR_FC64) ; - - GETNAM2 (GxB_TIMES_PAIR_INT8, "GxB_ANY_PAIR_INT8") ; - GETNAM2 (GxB_TIMES_PAIR_INT16, "GxB_ANY_PAIR_INT16") ; - GETNAM2 (GxB_TIMES_PAIR_INT32, "GxB_ANY_PAIR_INT32") ; - GETNAM2 (GxB_TIMES_PAIR_INT64, "GxB_ANY_PAIR_INT64") ; - GETNAM2 (GxB_TIMES_PAIR_UINT8, "GxB_ANY_PAIR_UINT8") ; - GETNAM2 (GxB_TIMES_PAIR_UINT16, "GxB_ANY_PAIR_UINT16") ; - GETNAM2 (GxB_TIMES_PAIR_UINT32, "GxB_ANY_PAIR_UINT32") ; - GETNAM2 (GxB_TIMES_PAIR_UINT64, "GxB_ANY_PAIR_UINT64") ; - GETNAM2 (GxB_TIMES_PAIR_FP32, "GxB_ANY_PAIR_FP32") ; - GETNAM2 (GxB_TIMES_PAIR_FP64, "GxB_ANY_PAIR_FP64") ; - GETNAM2 (GxB_TIMES_PAIR_FC32, "GxB_ANY_PAIR_FC32") ; - GETNAM2 (GxB_TIMES_PAIR_FC64, "GxB_ANY_PAIR_FC64") ; - - GETNAME (GxB_ANY_PAIR_INT8) ; - GETNAME (GxB_ANY_PAIR_INT16) ; - GETNAME (GxB_ANY_PAIR_INT32) ; - GETNAME (GxB_ANY_PAIR_INT64) ; - GETNAME (GxB_ANY_PAIR_UINT8) ; - GETNAME (GxB_ANY_PAIR_UINT16) ; - GETNAME (GxB_ANY_PAIR_UINT32) ; - GETNAME (GxB_ANY_PAIR_UINT64) ; - GETNAME (GxB_ANY_PAIR_FP32) ; - GETNAME (GxB_ANY_PAIR_FP64) ; - GETNAME (GxB_ANY_PAIR_FC32) ; - GETNAME (GxB_ANY_PAIR_FC64) ; - - GETNAM2 (GxB_LOR_PAIR_BOOL, "GxB_ANY_PAIR_BOOL") ; - GETNAM2 (GxB_LAND_PAIR_BOOL, "GxB_ANY_PAIR_BOOL") ; - GETNAME (GxB_LXOR_PAIR_BOOL) ; - GETNAM2 (GxB_EQ_PAIR_BOOL, "GxB_ANY_PAIR_BOOL") ; - GETNAME (GxB_ANY_PAIR_BOOL) ; - - //-------------------------------------------------------------------------- - // *_MIN - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_MIN_INT8) ; - GETNAME (GxB_MIN_MIN_INT16) ; - GETNAME (GxB_MIN_MIN_INT32) ; - GETNAME (GxB_MIN_MIN_INT64) ; - GETNAME (GxB_MIN_MIN_UINT8) ; - GETNAME (GxB_MIN_MIN_UINT16) ; - GETNAME (GxB_MIN_MIN_UINT32) ; - GETNAME (GxB_MIN_MIN_UINT64) ; - GETNAME (GxB_MIN_MIN_FP32) ; - GETNAME (GxB_MIN_MIN_FP64) ; - - GETNAME (GrB_MAX_MIN_SEMIRING_INT8) ; - GETNAME (GrB_MAX_MIN_SEMIRING_INT16) ; - GETNAME (GrB_MAX_MIN_SEMIRING_INT32) ; - GETNAME (GrB_MAX_MIN_SEMIRING_INT64) ; - GETNAME (GrB_MAX_MIN_SEMIRING_UINT8) ; - GETNAME (GrB_MAX_MIN_SEMIRING_UINT16) ; - GETNAME (GrB_MAX_MIN_SEMIRING_UINT32) ; - GETNAME (GrB_MAX_MIN_SEMIRING_UINT64) ; - GETNAME (GrB_MAX_MIN_SEMIRING_FP32) ; - GETNAME (GrB_MAX_MIN_SEMIRING_FP64) ; - - GETNAM2 (GxB_MAX_MIN_INT8, "GrB_MAX_MIN_SEMIRING_INT8") ; - GETNAM2 (GxB_MAX_MIN_INT16, "GrB_MAX_MIN_SEMIRING_INT16") ; - GETNAM2 (GxB_MAX_MIN_INT32, "GrB_MAX_MIN_SEMIRING_INT32") ; - GETNAM2 (GxB_MAX_MIN_INT64, "GrB_MAX_MIN_SEMIRING_INT64") ; - GETNAM2 (GxB_MAX_MIN_UINT8, "GrB_MAX_MIN_SEMIRING_UINT8") ; - GETNAM2 (GxB_MAX_MIN_UINT16, "GrB_MAX_MIN_SEMIRING_UINT16") ; - GETNAM2 (GxB_MAX_MIN_UINT32, "GrB_MAX_MIN_SEMIRING_UINT32") ; - GETNAM2 (GxB_MAX_MIN_UINT64, "GrB_MAX_MIN_SEMIRING_UINT64") ; - GETNAM2 (GxB_MAX_MIN_FP32, "GrB_MAX_MIN_SEMIRING_FP32") ; - GETNAM2 (GxB_MAX_MIN_FP64, "GrB_MAX_MIN_SEMIRING_FP64") ; - - GETNAME (GrB_PLUS_MIN_SEMIRING_INT8) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_INT16) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_INT32) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_INT64) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_UINT8) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_UINT16) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_UINT32) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_UINT64) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_FP32) ; - GETNAME (GrB_PLUS_MIN_SEMIRING_FP64) ; - - GETNAM2 (GxB_PLUS_MIN_INT8, "GrB_PLUS_MIN_SEMIRING_INT8") ; - GETNAM2 (GxB_PLUS_MIN_INT16, "GrB_PLUS_MIN_SEMIRING_INT16") ; - GETNAM2 (GxB_PLUS_MIN_INT32, "GrB_PLUS_MIN_SEMIRING_INT32") ; - GETNAM2 (GxB_PLUS_MIN_INT64, "GrB_PLUS_MIN_SEMIRING_INT64") ; - GETNAM2 (GxB_PLUS_MIN_UINT8, "GrB_PLUS_MIN_SEMIRING_UINT8") ; - GETNAM2 (GxB_PLUS_MIN_UINT16, "GrB_PLUS_MIN_SEMIRING_UINT16") ; - GETNAM2 (GxB_PLUS_MIN_UINT32, "GrB_PLUS_MIN_SEMIRING_UINT32") ; - GETNAM2 (GxB_PLUS_MIN_UINT64, "GrB_PLUS_MIN_SEMIRING_UINT64") ; - GETNAM2 (GxB_PLUS_MIN_FP32, "GrB_PLUS_MIN_SEMIRING_FP32") ; - GETNAM2 (GxB_PLUS_MIN_FP64, "GrB_PLUS_MIN_SEMIRING_FP64") ; - - GETNAME (GxB_TIMES_MIN_INT8) ; - GETNAME (GxB_TIMES_MIN_INT16) ; - GETNAME (GxB_TIMES_MIN_INT32) ; - GETNAME (GxB_TIMES_MIN_INT64) ; - GETNAME (GxB_TIMES_MIN_UINT8) ; - GETNAME (GxB_TIMES_MIN_UINT16) ; - GETNAME (GxB_TIMES_MIN_UINT32) ; - GETNAME (GxB_TIMES_MIN_UINT64) ; - GETNAME (GxB_TIMES_MIN_FP32) ; - GETNAME (GxB_TIMES_MIN_FP64) ; - - GETNAME (GxB_ANY_MIN_INT8) ; - GETNAME (GxB_ANY_MIN_INT16) ; - GETNAME (GxB_ANY_MIN_INT32) ; - GETNAME (GxB_ANY_MIN_INT64) ; - GETNAME (GxB_ANY_MIN_UINT8) ; - GETNAME (GxB_ANY_MIN_UINT16) ; - GETNAME (GxB_ANY_MIN_UINT32) ; - GETNAME (GxB_ANY_MIN_UINT64) ; - GETNAME (GxB_ANY_MIN_FP32) ; - GETNAME (GxB_ANY_MIN_FP64) ; - - //-------------------------------------------------------------------------- - // *_MAX - //-------------------------------------------------------------------------- - - GETNAME (GxB_MAX_MAX_INT8) ; - GETNAME (GxB_MAX_MAX_INT16) ; - GETNAME (GxB_MAX_MAX_INT32) ; - GETNAME (GxB_MAX_MAX_INT64) ; - GETNAME (GxB_MAX_MAX_UINT8) ; - GETNAME (GxB_MAX_MAX_UINT16) ; - GETNAME (GxB_MAX_MAX_UINT32) ; - GETNAME (GxB_MAX_MAX_UINT64) ; - GETNAME (GxB_MAX_MAX_FP32) ; - GETNAME (GxB_MAX_MAX_FP64) ; - - GETNAME (GrB_MIN_MAX_SEMIRING_INT8) ; - GETNAME (GrB_MIN_MAX_SEMIRING_INT16) ; - GETNAME (GrB_MIN_MAX_SEMIRING_INT32) ; - GETNAME (GrB_MIN_MAX_SEMIRING_INT64) ; - GETNAME (GrB_MIN_MAX_SEMIRING_UINT8) ; - GETNAME (GrB_MIN_MAX_SEMIRING_UINT16) ; - GETNAME (GrB_MIN_MAX_SEMIRING_UINT32) ; - GETNAME (GrB_MIN_MAX_SEMIRING_UINT64) ; - GETNAME (GrB_MIN_MAX_SEMIRING_FP32) ; - GETNAME (GrB_MIN_MAX_SEMIRING_FP64) ; - - GETNAM2 (GxB_MIN_MAX_INT8, "GrB_MIN_MAX_SEMIRING_INT8") ; - GETNAM2 (GxB_MIN_MAX_INT16, "GrB_MIN_MAX_SEMIRING_INT16") ; - GETNAM2 (GxB_MIN_MAX_INT32, "GrB_MIN_MAX_SEMIRING_INT32") ; - GETNAM2 (GxB_MIN_MAX_INT64, "GrB_MIN_MAX_SEMIRING_INT64") ; - GETNAM2 (GxB_MIN_MAX_UINT8, "GrB_MIN_MAX_SEMIRING_UINT8") ; - GETNAM2 (GxB_MIN_MAX_UINT16, "GrB_MIN_MAX_SEMIRING_UINT16") ; - GETNAM2 (GxB_MIN_MAX_UINT32, "GrB_MIN_MAX_SEMIRING_UINT32") ; - GETNAM2 (GxB_MIN_MAX_UINT64, "GrB_MIN_MAX_SEMIRING_UINT64") ; - GETNAM2 (GxB_MIN_MAX_FP32, "GrB_MIN_MAX_SEMIRING_FP32") ; - GETNAM2 (GxB_MIN_MAX_FP64, "GrB_MIN_MAX_SEMIRING_FP64") ; - - GETNAME (GxB_PLUS_MAX_INT8) ; - GETNAME (GxB_PLUS_MAX_INT16) ; - GETNAME (GxB_PLUS_MAX_INT32) ; - GETNAME (GxB_PLUS_MAX_INT64) ; - GETNAME (GxB_PLUS_MAX_UINT8) ; - GETNAME (GxB_PLUS_MAX_UINT16) ; - GETNAME (GxB_PLUS_MAX_UINT32) ; - GETNAME (GxB_PLUS_MAX_UINT64) ; - GETNAME (GxB_PLUS_MAX_FP32) ; - GETNAME (GxB_PLUS_MAX_FP64) ; - - GETNAME (GxB_TIMES_MAX_INT8) ; - GETNAME (GxB_TIMES_MAX_INT16) ; - GETNAME (GxB_TIMES_MAX_INT32) ; - GETNAME (GxB_TIMES_MAX_INT64) ; - GETNAME (GxB_TIMES_MAX_UINT8) ; - GETNAME (GxB_TIMES_MAX_UINT16) ; - GETNAME (GxB_TIMES_MAX_UINT32) ; - GETNAME (GxB_TIMES_MAX_UINT64) ; - GETNAME (GxB_TIMES_MAX_FP32) ; - GETNAME (GxB_TIMES_MAX_FP64) ; - - GETNAME (GxB_ANY_MAX_INT8) ; - GETNAME (GxB_ANY_MAX_INT16) ; - GETNAME (GxB_ANY_MAX_INT32) ; - GETNAME (GxB_ANY_MAX_INT64) ; - GETNAME (GxB_ANY_MAX_UINT8) ; - GETNAME (GxB_ANY_MAX_UINT16) ; - GETNAME (GxB_ANY_MAX_UINT32) ; - GETNAME (GxB_ANY_MAX_UINT64) ; - GETNAME (GxB_ANY_MAX_FP32) ; - GETNAME (GxB_ANY_MAX_FP64) ; - - //-------------------------------------------------------------------------- - // *_PLUS - //-------------------------------------------------------------------------- - - GETNAME (GrB_MIN_PLUS_SEMIRING_INT8) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_INT16) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_INT32) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_INT64) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_UINT8) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_UINT16) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_UINT32) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_UINT64) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_FP32) ; - GETNAME (GrB_MIN_PLUS_SEMIRING_FP64) ; - - GETNAM2 (GxB_MIN_PLUS_INT8, "GrB_MIN_PLUS_SEMIRING_INT8") ; - GETNAM2 (GxB_MIN_PLUS_INT16, "GrB_MIN_PLUS_SEMIRING_INT16") ; - GETNAM2 (GxB_MIN_PLUS_INT32, "GrB_MIN_PLUS_SEMIRING_INT32") ; - GETNAM2 (GxB_MIN_PLUS_INT64, "GrB_MIN_PLUS_SEMIRING_INT64") ; - GETNAM2 (GxB_MIN_PLUS_UINT8, "GrB_MIN_PLUS_SEMIRING_UINT8") ; - GETNAM2 (GxB_MIN_PLUS_UINT16, "GrB_MIN_PLUS_SEMIRING_UINT16") ; - GETNAM2 (GxB_MIN_PLUS_UINT32, "GrB_MIN_PLUS_SEMIRING_UINT32") ; - GETNAM2 (GxB_MIN_PLUS_UINT64, "GrB_MIN_PLUS_SEMIRING_UINT64") ; - GETNAM2 (GxB_MIN_PLUS_FP32, "GrB_MIN_PLUS_SEMIRING_FP32") ; - GETNAM2 (GxB_MIN_PLUS_FP64, "GrB_MIN_PLUS_SEMIRING_FP64") ; - - GETNAME (GrB_MAX_PLUS_SEMIRING_INT8) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_INT16) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_INT32) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_INT64) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_UINT8) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_UINT16) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_UINT32) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_UINT64) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_FP32) ; - GETNAME (GrB_MAX_PLUS_SEMIRING_FP64) ; - - GETNAM2 (GxB_MAX_PLUS_INT8, "GrB_MAX_PLUS_SEMIRING_INT8") ; - GETNAM2 (GxB_MAX_PLUS_INT16, "GrB_MAX_PLUS_SEMIRING_INT16") ; - GETNAM2 (GxB_MAX_PLUS_INT32, "GrB_MAX_PLUS_SEMIRING_INT32") ; - GETNAM2 (GxB_MAX_PLUS_INT64, "GrB_MAX_PLUS_SEMIRING_INT64") ; - GETNAM2 (GxB_MAX_PLUS_UINT8, "GrB_MAX_PLUS_SEMIRING_UINT8") ; - GETNAM2 (GxB_MAX_PLUS_UINT16, "GrB_MAX_PLUS_SEMIRING_UINT16") ; - GETNAM2 (GxB_MAX_PLUS_UINT32, "GrB_MAX_PLUS_SEMIRING_UINT32") ; - GETNAM2 (GxB_MAX_PLUS_UINT64, "GrB_MAX_PLUS_SEMIRING_UINT64") ; - GETNAM2 (GxB_MAX_PLUS_FP32, "GrB_MAX_PLUS_SEMIRING_FP32") ; - GETNAM2 (GxB_MAX_PLUS_FP64, "GrB_MAX_PLUS_SEMIRING_FP64") ; - - GETNAME (GxB_PLUS_PLUS_INT8) ; - GETNAME (GxB_PLUS_PLUS_INT16) ; - GETNAME (GxB_PLUS_PLUS_INT32) ; - GETNAME (GxB_PLUS_PLUS_INT64) ; - GETNAME (GxB_PLUS_PLUS_UINT8) ; - GETNAME (GxB_PLUS_PLUS_UINT16) ; - GETNAME (GxB_PLUS_PLUS_UINT32) ; - GETNAME (GxB_PLUS_PLUS_UINT64) ; - GETNAME (GxB_PLUS_PLUS_FP32) ; - GETNAME (GxB_PLUS_PLUS_FP64) ; - GETNAME (GxB_PLUS_PLUS_FC32) ; - GETNAME (GxB_PLUS_PLUS_FC64) ; - - GETNAME (GxB_TIMES_PLUS_INT8) ; - GETNAME (GxB_TIMES_PLUS_INT16) ; - GETNAME (GxB_TIMES_PLUS_INT32) ; - GETNAME (GxB_TIMES_PLUS_INT64) ; - GETNAME (GxB_TIMES_PLUS_UINT8) ; - GETNAME (GxB_TIMES_PLUS_UINT16) ; - GETNAME (GxB_TIMES_PLUS_UINT32) ; - GETNAME (GxB_TIMES_PLUS_UINT64) ; - GETNAME (GxB_TIMES_PLUS_FP32) ; - GETNAME (GxB_TIMES_PLUS_FP64) ; - GETNAME (GxB_TIMES_PLUS_FC32) ; - GETNAME (GxB_TIMES_PLUS_FC64) ; - - GETNAME (GxB_ANY_PLUS_INT8) ; - GETNAME (GxB_ANY_PLUS_INT16) ; - GETNAME (GxB_ANY_PLUS_INT32) ; - GETNAME (GxB_ANY_PLUS_INT64) ; - GETNAME (GxB_ANY_PLUS_UINT8) ; - GETNAME (GxB_ANY_PLUS_UINT16) ; - GETNAME (GxB_ANY_PLUS_UINT32) ; - GETNAME (GxB_ANY_PLUS_UINT64) ; - GETNAME (GxB_ANY_PLUS_FP32) ; - GETNAME (GxB_ANY_PLUS_FP64) ; - GETNAME (GxB_ANY_PLUS_FC32) ; - GETNAME (GxB_ANY_PLUS_FC64) ; - - //-------------------------------------------------------------------------- - // *_MINUS - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_MINUS_INT8) ; - GETNAME (GxB_MIN_MINUS_INT16) ; - GETNAME (GxB_MIN_MINUS_INT32) ; - GETNAME (GxB_MIN_MINUS_INT64) ; - GETNAME (GxB_MIN_MINUS_UINT8) ; - GETNAME (GxB_MIN_MINUS_UINT16) ; - GETNAME (GxB_MIN_MINUS_UINT32) ; - GETNAME (GxB_MIN_MINUS_UINT64) ; - GETNAME (GxB_MIN_MINUS_FP32) ; - GETNAME (GxB_MIN_MINUS_FP64) ; - - GETNAME (GxB_MAX_MINUS_INT8) ; - GETNAME (GxB_MAX_MINUS_INT16) ; - GETNAME (GxB_MAX_MINUS_INT32) ; - GETNAME (GxB_MAX_MINUS_INT64) ; - GETNAME (GxB_MAX_MINUS_UINT8) ; - GETNAME (GxB_MAX_MINUS_UINT16) ; - GETNAME (GxB_MAX_MINUS_UINT32) ; - GETNAME (GxB_MAX_MINUS_UINT64) ; - GETNAME (GxB_MAX_MINUS_FP32) ; - GETNAME (GxB_MAX_MINUS_FP64) ; - - GETNAME (GxB_PLUS_MINUS_INT8) ; - GETNAME (GxB_PLUS_MINUS_INT16) ; - GETNAME (GxB_PLUS_MINUS_INT32) ; - GETNAME (GxB_PLUS_MINUS_INT64) ; - GETNAME (GxB_PLUS_MINUS_UINT8) ; - GETNAME (GxB_PLUS_MINUS_UINT16) ; - GETNAME (GxB_PLUS_MINUS_UINT32) ; - GETNAME (GxB_PLUS_MINUS_UINT64) ; - GETNAME (GxB_PLUS_MINUS_FP32) ; - GETNAME (GxB_PLUS_MINUS_FP64) ; - GETNAME (GxB_PLUS_MINUS_FC32) ; - GETNAME (GxB_PLUS_MINUS_FC64) ; - - GETNAME (GxB_TIMES_MINUS_INT8) ; - GETNAME (GxB_TIMES_MINUS_INT16) ; - GETNAME (GxB_TIMES_MINUS_INT32) ; - GETNAME (GxB_TIMES_MINUS_INT64) ; - GETNAME (GxB_TIMES_MINUS_UINT8) ; - GETNAME (GxB_TIMES_MINUS_UINT16) ; - GETNAME (GxB_TIMES_MINUS_UINT32) ; - GETNAME (GxB_TIMES_MINUS_UINT64) ; - GETNAME (GxB_TIMES_MINUS_FP32) ; - GETNAME (GxB_TIMES_MINUS_FP64) ; - GETNAME (GxB_TIMES_MINUS_FC32) ; - GETNAME (GxB_TIMES_MINUS_FC64) ; - - GETNAME (GxB_ANY_MINUS_INT8) ; - GETNAME (GxB_ANY_MINUS_INT16) ; - GETNAME (GxB_ANY_MINUS_INT32) ; - GETNAME (GxB_ANY_MINUS_INT64) ; - GETNAME (GxB_ANY_MINUS_UINT8) ; - GETNAME (GxB_ANY_MINUS_UINT16) ; - GETNAME (GxB_ANY_MINUS_UINT32) ; - GETNAME (GxB_ANY_MINUS_UINT64) ; - GETNAME (GxB_ANY_MINUS_FP32) ; - GETNAME (GxB_ANY_MINUS_FP64) ; - GETNAME (GxB_ANY_MINUS_FC32) ; - GETNAME (GxB_ANY_MINUS_FC64) ; - - //-------------------------------------------------------------------------- - // *_TIMES - //-------------------------------------------------------------------------- - - GETNAME (GrB_MIN_TIMES_SEMIRING_INT8) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_INT16) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_INT32) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_INT64) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_UINT8) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_UINT16) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_UINT32) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_UINT64) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_FP32) ; - GETNAME (GrB_MIN_TIMES_SEMIRING_FP64) ; - - GETNAM2 (GxB_MIN_TIMES_INT8, "GrB_MIN_TIMES_SEMIRING_INT8") ; - GETNAM2 (GxB_MIN_TIMES_INT16, "GrB_MIN_TIMES_SEMIRING_INT16") ; - GETNAM2 (GxB_MIN_TIMES_INT32, "GrB_MIN_TIMES_SEMIRING_INT32") ; - GETNAM2 (GxB_MIN_TIMES_INT64, "GrB_MIN_TIMES_SEMIRING_INT64") ; - GETNAM2 (GxB_MIN_TIMES_UINT8, "GrB_MIN_TIMES_SEMIRING_UINT8") ; - GETNAM2 (GxB_MIN_TIMES_UINT16, "GrB_MIN_TIMES_SEMIRING_UINT16") ; - GETNAM2 (GxB_MIN_TIMES_UINT32, "GrB_MIN_TIMES_SEMIRING_UINT32") ; - GETNAM2 (GxB_MIN_TIMES_UINT64, "GrB_MIN_TIMES_SEMIRING_UINT64") ; - GETNAM2 (GxB_MIN_TIMES_FP32, "GrB_MIN_TIMES_SEMIRING_FP32") ; - GETNAM2 (GxB_MIN_TIMES_FP64, "GrB_MIN_TIMES_SEMIRING_FP64") ; - - GETNAME (GrB_MAX_TIMES_SEMIRING_INT8) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_INT16) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_INT32) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_INT64) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_UINT8) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_UINT16) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_UINT32) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_UINT64) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_FP32) ; - GETNAME (GrB_MAX_TIMES_SEMIRING_FP64) ; - - GETNAM2 (GxB_MAX_TIMES_INT8, "GrB_MAX_TIMES_SEMIRING_INT8") ; - GETNAM2 (GxB_MAX_TIMES_INT16, "GrB_MAX_TIMES_SEMIRING_INT16") ; - GETNAM2 (GxB_MAX_TIMES_INT32, "GrB_MAX_TIMES_SEMIRING_INT32") ; - GETNAM2 (GxB_MAX_TIMES_INT64, "GrB_MAX_TIMES_SEMIRING_INT64") ; - GETNAM2 (GxB_MAX_TIMES_UINT8, "GrB_MAX_TIMES_SEMIRING_UINT8") ; - GETNAM2 (GxB_MAX_TIMES_UINT16, "GrB_MAX_TIMES_SEMIRING_UINT16") ; - GETNAM2 (GxB_MAX_TIMES_UINT32, "GrB_MAX_TIMES_SEMIRING_UINT32") ; - GETNAM2 (GxB_MAX_TIMES_UINT64, "GrB_MAX_TIMES_SEMIRING_UINT64") ; - GETNAM2 (GxB_MAX_TIMES_FP32, "GrB_MAX_TIMES_SEMIRING_FP32") ; - GETNAM2 (GxB_MAX_TIMES_FP64, "GrB_MAX_TIMES_SEMIRING_FP64") ; - - GETNAME (GrB_PLUS_TIMES_SEMIRING_INT8) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_INT16) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_INT32) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_INT64) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_UINT8) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_UINT16) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_UINT32) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_UINT64) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_FP32) ; - GETNAME (GrB_PLUS_TIMES_SEMIRING_FP64) ; - - GETNAM2 (GxB_PLUS_TIMES_INT8, "GrB_PLUS_TIMES_SEMIRING_INT8") ; - GETNAM2 (GxB_PLUS_TIMES_INT16, "GrB_PLUS_TIMES_SEMIRING_INT16") ; - GETNAM2 (GxB_PLUS_TIMES_INT32, "GrB_PLUS_TIMES_SEMIRING_INT32") ; - GETNAM2 (GxB_PLUS_TIMES_INT64, "GrB_PLUS_TIMES_SEMIRING_INT64") ; - GETNAM2 (GxB_PLUS_TIMES_UINT8, "GrB_PLUS_TIMES_SEMIRING_UINT8") ; - GETNAM2 (GxB_PLUS_TIMES_UINT16, "GrB_PLUS_TIMES_SEMIRING_UINT16") ; - GETNAM2 (GxB_PLUS_TIMES_UINT32, "GrB_PLUS_TIMES_SEMIRING_UINT32") ; - GETNAM2 (GxB_PLUS_TIMES_UINT64, "GrB_PLUS_TIMES_SEMIRING_UINT64") ; - GETNAM2 (GxB_PLUS_TIMES_FP32, "GrB_PLUS_TIMES_SEMIRING_FP32") ; - GETNAM2 (GxB_PLUS_TIMES_FP64, "GrB_PLUS_TIMES_SEMIRING_FP64") ; - GETNAME (GxB_PLUS_TIMES_FC32) ; - GETNAME (GxB_PLUS_TIMES_FC64) ; - - GETNAME (GxB_TIMES_TIMES_INT8) ; - GETNAME (GxB_TIMES_TIMES_INT16) ; - GETNAME (GxB_TIMES_TIMES_INT32) ; - GETNAME (GxB_TIMES_TIMES_INT64) ; - GETNAME (GxB_TIMES_TIMES_UINT8) ; - GETNAME (GxB_TIMES_TIMES_UINT16) ; - GETNAME (GxB_TIMES_TIMES_UINT32) ; - GETNAME (GxB_TIMES_TIMES_UINT64) ; - GETNAME (GxB_TIMES_TIMES_FP32) ; - GETNAME (GxB_TIMES_TIMES_FP64) ; - GETNAME (GxB_TIMES_TIMES_FC32) ; - GETNAME (GxB_TIMES_TIMES_FC64) ; - - GETNAME (GxB_ANY_TIMES_INT8) ; - GETNAME (GxB_ANY_TIMES_INT16) ; - GETNAME (GxB_ANY_TIMES_INT32) ; - GETNAME (GxB_ANY_TIMES_INT64) ; - GETNAME (GxB_ANY_TIMES_UINT8) ; - GETNAME (GxB_ANY_TIMES_UINT16) ; - GETNAME (GxB_ANY_TIMES_UINT32) ; - GETNAME (GxB_ANY_TIMES_UINT64) ; - GETNAME (GxB_ANY_TIMES_FP32) ; - GETNAME (GxB_ANY_TIMES_FP64) ; - GETNAME (GxB_ANY_TIMES_FC32) ; - GETNAME (GxB_ANY_TIMES_FC64) ; - - //-------------------------------------------------------------------------- - // *_DIV - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_DIV_INT8) ; - GETNAME (GxB_MIN_DIV_INT16) ; - GETNAME (GxB_MIN_DIV_INT32) ; - GETNAME (GxB_MIN_DIV_INT64) ; - GETNAME (GxB_MIN_DIV_UINT8) ; - GETNAME (GxB_MIN_DIV_UINT16) ; - GETNAME (GxB_MIN_DIV_UINT32) ; - GETNAME (GxB_MIN_DIV_UINT64) ; - GETNAME (GxB_MIN_DIV_FP32) ; - GETNAME (GxB_MIN_DIV_FP64) ; - - GETNAME (GxB_MAX_DIV_INT8) ; - GETNAME (GxB_MAX_DIV_INT16) ; - GETNAME (GxB_MAX_DIV_INT32) ; - GETNAME (GxB_MAX_DIV_INT64) ; - GETNAME (GxB_MAX_DIV_UINT8) ; - GETNAME (GxB_MAX_DIV_UINT16) ; - GETNAME (GxB_MAX_DIV_UINT32) ; - GETNAME (GxB_MAX_DIV_UINT64) ; - GETNAME (GxB_MAX_DIV_FP32) ; - GETNAME (GxB_MAX_DIV_FP64) ; - - GETNAME (GxB_PLUS_DIV_INT8) ; - GETNAME (GxB_PLUS_DIV_INT16) ; - GETNAME (GxB_PLUS_DIV_INT32) ; - GETNAME (GxB_PLUS_DIV_INT64) ; - GETNAME (GxB_PLUS_DIV_UINT8) ; - GETNAME (GxB_PLUS_DIV_UINT16) ; - GETNAME (GxB_PLUS_DIV_UINT32) ; - GETNAME (GxB_PLUS_DIV_UINT64) ; - GETNAME (GxB_PLUS_DIV_FP32) ; - GETNAME (GxB_PLUS_DIV_FP64) ; - GETNAME (GxB_PLUS_DIV_FC32) ; - GETNAME (GxB_PLUS_DIV_FC64) ; - - GETNAME (GxB_TIMES_DIV_INT8) ; - GETNAME (GxB_TIMES_DIV_INT16) ; - GETNAME (GxB_TIMES_DIV_INT32) ; - GETNAME (GxB_TIMES_DIV_INT64) ; - GETNAME (GxB_TIMES_DIV_UINT8) ; - GETNAME (GxB_TIMES_DIV_UINT16) ; - GETNAME (GxB_TIMES_DIV_UINT32) ; - GETNAME (GxB_TIMES_DIV_UINT64) ; - GETNAME (GxB_TIMES_DIV_FP32) ; - GETNAME (GxB_TIMES_DIV_FP64) ; - GETNAME (GxB_TIMES_DIV_FC32) ; - GETNAME (GxB_TIMES_DIV_FC64) ; - - GETNAME (GxB_ANY_DIV_INT8) ; - GETNAME (GxB_ANY_DIV_INT16) ; - GETNAME (GxB_ANY_DIV_INT32) ; - GETNAME (GxB_ANY_DIV_INT64) ; - GETNAME (GxB_ANY_DIV_UINT8) ; - GETNAME (GxB_ANY_DIV_UINT16) ; - GETNAME (GxB_ANY_DIV_UINT32) ; - GETNAME (GxB_ANY_DIV_UINT64) ; - GETNAME (GxB_ANY_DIV_FP32) ; - GETNAME (GxB_ANY_DIV_FP64) ; - GETNAME (GxB_ANY_DIV_FC32) ; - GETNAME (GxB_ANY_DIV_FC64) ; - - //-------------------------------------------------------------------------- - // *_RDIV - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_RDIV_INT8) ; - GETNAME (GxB_MIN_RDIV_INT16) ; - GETNAME (GxB_MIN_RDIV_INT32) ; - GETNAME (GxB_MIN_RDIV_INT64) ; - GETNAME (GxB_MIN_RDIV_UINT8) ; - GETNAME (GxB_MIN_RDIV_UINT16) ; - GETNAME (GxB_MIN_RDIV_UINT32) ; - GETNAME (GxB_MIN_RDIV_UINT64) ; - GETNAME (GxB_MIN_RDIV_FP32) ; - GETNAME (GxB_MIN_RDIV_FP64) ; - - GETNAME (GxB_MAX_RDIV_INT8) ; - GETNAME (GxB_MAX_RDIV_INT16) ; - GETNAME (GxB_MAX_RDIV_INT32) ; - GETNAME (GxB_MAX_RDIV_INT64) ; - GETNAME (GxB_MAX_RDIV_UINT8) ; - GETNAME (GxB_MAX_RDIV_UINT16) ; - GETNAME (GxB_MAX_RDIV_UINT32) ; - GETNAME (GxB_MAX_RDIV_UINT64) ; - GETNAME (GxB_MAX_RDIV_FP32) ; - GETNAME (GxB_MAX_RDIV_FP64) ; - - GETNAME (GxB_PLUS_RDIV_INT8) ; - GETNAME (GxB_PLUS_RDIV_INT16) ; - GETNAME (GxB_PLUS_RDIV_INT32) ; - GETNAME (GxB_PLUS_RDIV_INT64) ; - GETNAME (GxB_PLUS_RDIV_UINT8) ; - GETNAME (GxB_PLUS_RDIV_UINT16) ; - GETNAME (GxB_PLUS_RDIV_UINT32) ; - GETNAME (GxB_PLUS_RDIV_UINT64) ; - GETNAME (GxB_PLUS_RDIV_FP32) ; - GETNAME (GxB_PLUS_RDIV_FP64) ; - GETNAME (GxB_PLUS_RDIV_FC32) ; - GETNAME (GxB_PLUS_RDIV_FC64) ; - - GETNAME (GxB_TIMES_RDIV_INT8) ; - GETNAME (GxB_TIMES_RDIV_INT16) ; - GETNAME (GxB_TIMES_RDIV_INT32) ; - GETNAME (GxB_TIMES_RDIV_INT64) ; - GETNAME (GxB_TIMES_RDIV_UINT8) ; - GETNAME (GxB_TIMES_RDIV_UINT16) ; - GETNAME (GxB_TIMES_RDIV_UINT32) ; - GETNAME (GxB_TIMES_RDIV_UINT64) ; - GETNAME (GxB_TIMES_RDIV_FP32) ; - GETNAME (GxB_TIMES_RDIV_FP64) ; - GETNAME (GxB_TIMES_RDIV_FC32) ; - GETNAME (GxB_TIMES_RDIV_FC64) ; - - GETNAME (GxB_ANY_RDIV_INT8) ; - GETNAME (GxB_ANY_RDIV_INT16) ; - GETNAME (GxB_ANY_RDIV_INT32) ; - GETNAME (GxB_ANY_RDIV_INT64) ; - GETNAME (GxB_ANY_RDIV_UINT8) ; - GETNAME (GxB_ANY_RDIV_UINT16) ; - GETNAME (GxB_ANY_RDIV_UINT32) ; - GETNAME (GxB_ANY_RDIV_UINT64) ; - GETNAME (GxB_ANY_RDIV_FP32) ; - GETNAME (GxB_ANY_RDIV_FP64) ; - GETNAME (GxB_ANY_RDIV_FC32) ; - GETNAME (GxB_ANY_RDIV_FC64) ; - - //-------------------------------------------------------------------------- - // *_RMINUS - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_RMINUS_INT8) ; - GETNAME (GxB_MIN_RMINUS_INT16) ; - GETNAME (GxB_MIN_RMINUS_INT32) ; - GETNAME (GxB_MIN_RMINUS_INT64) ; - GETNAME (GxB_MIN_RMINUS_UINT8) ; - GETNAME (GxB_MIN_RMINUS_UINT16) ; - GETNAME (GxB_MIN_RMINUS_UINT32) ; - GETNAME (GxB_MIN_RMINUS_UINT64) ; - GETNAME (GxB_MIN_RMINUS_FP32) ; - GETNAME (GxB_MIN_RMINUS_FP64) ; - - GETNAME (GxB_MAX_RMINUS_INT8) ; - GETNAME (GxB_MAX_RMINUS_INT16) ; - GETNAME (GxB_MAX_RMINUS_INT32) ; - GETNAME (GxB_MAX_RMINUS_INT64) ; - GETNAME (GxB_MAX_RMINUS_UINT8) ; - GETNAME (GxB_MAX_RMINUS_UINT16) ; - GETNAME (GxB_MAX_RMINUS_UINT32) ; - GETNAME (GxB_MAX_RMINUS_UINT64) ; - GETNAME (GxB_MAX_RMINUS_FP32) ; - GETNAME (GxB_MAX_RMINUS_FP64) ; - - GETNAME (GxB_PLUS_RMINUS_INT8) ; - GETNAME (GxB_PLUS_RMINUS_INT16) ; - GETNAME (GxB_PLUS_RMINUS_INT32) ; - GETNAME (GxB_PLUS_RMINUS_INT64) ; - GETNAME (GxB_PLUS_RMINUS_UINT8) ; - GETNAME (GxB_PLUS_RMINUS_UINT16) ; - GETNAME (GxB_PLUS_RMINUS_UINT32) ; - GETNAME (GxB_PLUS_RMINUS_UINT64) ; - GETNAME (GxB_PLUS_RMINUS_FP32) ; - GETNAME (GxB_PLUS_RMINUS_FP64) ; - GETNAME (GxB_PLUS_RMINUS_FC32) ; - GETNAME (GxB_PLUS_RMINUS_FC64) ; - - GETNAME (GxB_TIMES_RMINUS_INT8) ; - GETNAME (GxB_TIMES_RMINUS_INT16) ; - GETNAME (GxB_TIMES_RMINUS_INT32) ; - GETNAME (GxB_TIMES_RMINUS_INT64) ; - GETNAME (GxB_TIMES_RMINUS_UINT8) ; - GETNAME (GxB_TIMES_RMINUS_UINT16) ; - GETNAME (GxB_TIMES_RMINUS_UINT32) ; - GETNAME (GxB_TIMES_RMINUS_UINT64) ; - GETNAME (GxB_TIMES_RMINUS_FP32) ; - GETNAME (GxB_TIMES_RMINUS_FP64) ; - GETNAME (GxB_TIMES_RMINUS_FC32) ; - GETNAME (GxB_TIMES_RMINUS_FC64) ; - - GETNAME (GxB_ANY_RMINUS_INT8) ; - GETNAME (GxB_ANY_RMINUS_INT16) ; - GETNAME (GxB_ANY_RMINUS_INT32) ; - GETNAME (GxB_ANY_RMINUS_INT64) ; - GETNAME (GxB_ANY_RMINUS_UINT8) ; - GETNAME (GxB_ANY_RMINUS_UINT16) ; - GETNAME (GxB_ANY_RMINUS_UINT32) ; - GETNAME (GxB_ANY_RMINUS_UINT64) ; - GETNAME (GxB_ANY_RMINUS_FP32) ; - GETNAME (GxB_ANY_RMINUS_FP64) ; - GETNAME (GxB_ANY_RMINUS_FC32) ; - GETNAME (GxB_ANY_RMINUS_FC64) ; - - //-------------------------------------------------------------------------- - // *_ISEQ - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISEQ_INT8) ; - GETNAME (GxB_MIN_ISEQ_INT16) ; - GETNAME (GxB_MIN_ISEQ_INT32) ; - GETNAME (GxB_MIN_ISEQ_INT64) ; - GETNAME (GxB_MIN_ISEQ_UINT8) ; - GETNAME (GxB_MIN_ISEQ_UINT16) ; - GETNAME (GxB_MIN_ISEQ_UINT32) ; - GETNAME (GxB_MIN_ISEQ_UINT64) ; - GETNAME (GxB_MIN_ISEQ_FP32) ; - GETNAME (GxB_MIN_ISEQ_FP64) ; - - GETNAME (GxB_MAX_ISEQ_INT8) ; - GETNAME (GxB_MAX_ISEQ_INT16) ; - GETNAME (GxB_MAX_ISEQ_INT32) ; - GETNAME (GxB_MAX_ISEQ_INT64) ; - GETNAME (GxB_MAX_ISEQ_UINT8) ; - GETNAME (GxB_MAX_ISEQ_UINT16) ; - GETNAME (GxB_MAX_ISEQ_UINT32) ; - GETNAME (GxB_MAX_ISEQ_UINT64) ; - GETNAME (GxB_MAX_ISEQ_FP32) ; - GETNAME (GxB_MAX_ISEQ_FP64) ; - - GETNAME (GxB_PLUS_ISEQ_INT8) ; - GETNAME (GxB_PLUS_ISEQ_INT16) ; - GETNAME (GxB_PLUS_ISEQ_INT32) ; - GETNAME (GxB_PLUS_ISEQ_INT64) ; - GETNAME (GxB_PLUS_ISEQ_UINT8) ; - GETNAME (GxB_PLUS_ISEQ_UINT16) ; - GETNAME (GxB_PLUS_ISEQ_UINT32) ; - GETNAME (GxB_PLUS_ISEQ_UINT64) ; - GETNAME (GxB_PLUS_ISEQ_FP32) ; - GETNAME (GxB_PLUS_ISEQ_FP64) ; - - GETNAME (GxB_TIMES_ISEQ_INT8) ; - GETNAME (GxB_TIMES_ISEQ_INT16) ; - GETNAME (GxB_TIMES_ISEQ_INT32) ; - GETNAME (GxB_TIMES_ISEQ_INT64) ; - GETNAME (GxB_TIMES_ISEQ_UINT8) ; - GETNAME (GxB_TIMES_ISEQ_UINT16) ; - GETNAME (GxB_TIMES_ISEQ_UINT32) ; - GETNAME (GxB_TIMES_ISEQ_UINT64) ; - GETNAME (GxB_TIMES_ISEQ_FP32) ; - GETNAME (GxB_TIMES_ISEQ_FP64) ; - - GETNAME (GxB_ANY_ISEQ_INT8) ; - GETNAME (GxB_ANY_ISEQ_INT16) ; - GETNAME (GxB_ANY_ISEQ_INT32) ; - GETNAME (GxB_ANY_ISEQ_INT64) ; - GETNAME (GxB_ANY_ISEQ_UINT8) ; - GETNAME (GxB_ANY_ISEQ_UINT16) ; - GETNAME (GxB_ANY_ISEQ_UINT32) ; - GETNAME (GxB_ANY_ISEQ_UINT64) ; - GETNAME (GxB_ANY_ISEQ_FP32) ; - GETNAME (GxB_ANY_ISEQ_FP64) ; - - //-------------------------------------------------------------------------- - // *_ISNE - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISNE_INT8) ; - GETNAME (GxB_MIN_ISNE_INT16) ; - GETNAME (GxB_MIN_ISNE_INT32) ; - GETNAME (GxB_MIN_ISNE_INT64) ; - GETNAME (GxB_MIN_ISNE_UINT8) ; - GETNAME (GxB_MIN_ISNE_UINT16) ; - GETNAME (GxB_MIN_ISNE_UINT32) ; - GETNAME (GxB_MIN_ISNE_UINT64) ; - GETNAME (GxB_MIN_ISNE_FP32) ; - GETNAME (GxB_MIN_ISNE_FP64) ; - - GETNAME (GxB_MAX_ISNE_INT8) ; - GETNAME (GxB_MAX_ISNE_INT16) ; - GETNAME (GxB_MAX_ISNE_INT32) ; - GETNAME (GxB_MAX_ISNE_INT64) ; - GETNAME (GxB_MAX_ISNE_UINT8) ; - GETNAME (GxB_MAX_ISNE_UINT16) ; - GETNAME (GxB_MAX_ISNE_UINT32) ; - GETNAME (GxB_MAX_ISNE_UINT64) ; - GETNAME (GxB_MAX_ISNE_FP32) ; - GETNAME (GxB_MAX_ISNE_FP64) ; - - GETNAME (GxB_PLUS_ISNE_INT8) ; - GETNAME (GxB_PLUS_ISNE_INT16) ; - GETNAME (GxB_PLUS_ISNE_INT32) ; - GETNAME (GxB_PLUS_ISNE_INT64) ; - GETNAME (GxB_PLUS_ISNE_UINT8) ; - GETNAME (GxB_PLUS_ISNE_UINT16) ; - GETNAME (GxB_PLUS_ISNE_UINT32) ; - GETNAME (GxB_PLUS_ISNE_UINT64) ; - GETNAME (GxB_PLUS_ISNE_FP32) ; - GETNAME (GxB_PLUS_ISNE_FP64) ; - - GETNAME (GxB_TIMES_ISNE_INT8) ; - GETNAME (GxB_TIMES_ISNE_INT16) ; - GETNAME (GxB_TIMES_ISNE_INT32) ; - GETNAME (GxB_TIMES_ISNE_INT64) ; - GETNAME (GxB_TIMES_ISNE_UINT8) ; - GETNAME (GxB_TIMES_ISNE_UINT16) ; - GETNAME (GxB_TIMES_ISNE_UINT32) ; - GETNAME (GxB_TIMES_ISNE_UINT64) ; - GETNAME (GxB_TIMES_ISNE_FP32) ; - GETNAME (GxB_TIMES_ISNE_FP64) ; - - GETNAME (GxB_ANY_ISNE_INT8) ; - GETNAME (GxB_ANY_ISNE_INT16) ; - GETNAME (GxB_ANY_ISNE_INT32) ; - GETNAME (GxB_ANY_ISNE_INT64) ; - GETNAME (GxB_ANY_ISNE_UINT8) ; - GETNAME (GxB_ANY_ISNE_UINT16) ; - GETNAME (GxB_ANY_ISNE_UINT32) ; - GETNAME (GxB_ANY_ISNE_UINT64) ; - GETNAME (GxB_ANY_ISNE_FP32) ; - GETNAME (GxB_ANY_ISNE_FP64) ; - - //-------------------------------------------------------------------------- - // *_ISGT - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISGT_INT8) ; - GETNAME (GxB_MIN_ISGT_INT16) ; - GETNAME (GxB_MIN_ISGT_INT32) ; - GETNAME (GxB_MIN_ISGT_INT64) ; - GETNAME (GxB_MIN_ISGT_UINT8) ; - GETNAME (GxB_MIN_ISGT_UINT16) ; - GETNAME (GxB_MIN_ISGT_UINT32) ; - GETNAME (GxB_MIN_ISGT_UINT64) ; - GETNAME (GxB_MIN_ISGT_FP32) ; - GETNAME (GxB_MIN_ISGT_FP64) ; - - GETNAME (GxB_MAX_ISGT_INT8) ; - GETNAME (GxB_MAX_ISGT_INT16) ; - GETNAME (GxB_MAX_ISGT_INT32) ; - GETNAME (GxB_MAX_ISGT_INT64) ; - GETNAME (GxB_MAX_ISGT_UINT8) ; - GETNAME (GxB_MAX_ISGT_UINT16) ; - GETNAME (GxB_MAX_ISGT_UINT32) ; - GETNAME (GxB_MAX_ISGT_UINT64) ; - GETNAME (GxB_MAX_ISGT_FP32) ; - GETNAME (GxB_MAX_ISGT_FP64) ; - - GETNAME (GxB_PLUS_ISGT_INT8) ; - GETNAME (GxB_PLUS_ISGT_INT16) ; - GETNAME (GxB_PLUS_ISGT_INT32) ; - GETNAME (GxB_PLUS_ISGT_INT64) ; - GETNAME (GxB_PLUS_ISGT_UINT8) ; - GETNAME (GxB_PLUS_ISGT_UINT16) ; - GETNAME (GxB_PLUS_ISGT_UINT32) ; - GETNAME (GxB_PLUS_ISGT_UINT64) ; - GETNAME (GxB_PLUS_ISGT_FP32) ; - GETNAME (GxB_PLUS_ISGT_FP64) ; - - GETNAME (GxB_TIMES_ISGT_INT8) ; - GETNAME (GxB_TIMES_ISGT_INT16) ; - GETNAME (GxB_TIMES_ISGT_INT32) ; - GETNAME (GxB_TIMES_ISGT_INT64) ; - GETNAME (GxB_TIMES_ISGT_UINT8) ; - GETNAME (GxB_TIMES_ISGT_UINT16) ; - GETNAME (GxB_TIMES_ISGT_UINT32) ; - GETNAME (GxB_TIMES_ISGT_UINT64) ; - GETNAME (GxB_TIMES_ISGT_FP32) ; - GETNAME (GxB_TIMES_ISGT_FP64) ; - - GETNAME (GxB_ANY_ISGT_INT8) ; - GETNAME (GxB_ANY_ISGT_INT16) ; - GETNAME (GxB_ANY_ISGT_INT32) ; - GETNAME (GxB_ANY_ISGT_INT64) ; - GETNAME (GxB_ANY_ISGT_UINT8) ; - GETNAME (GxB_ANY_ISGT_UINT16) ; - GETNAME (GxB_ANY_ISGT_UINT32) ; - GETNAME (GxB_ANY_ISGT_UINT64) ; - GETNAME (GxB_ANY_ISGT_FP32) ; - GETNAME (GxB_ANY_ISGT_FP64) ; - - //-------------------------------------------------------------------------- - // *_ISLT - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISLT_INT8) ; - GETNAME (GxB_MIN_ISLT_INT16) ; - GETNAME (GxB_MIN_ISLT_INT32) ; - GETNAME (GxB_MIN_ISLT_INT64) ; - GETNAME (GxB_MIN_ISLT_UINT8) ; - GETNAME (GxB_MIN_ISLT_UINT16) ; - GETNAME (GxB_MIN_ISLT_UINT32) ; - GETNAME (GxB_MIN_ISLT_UINT64) ; - GETNAME (GxB_MIN_ISLT_FP32) ; - GETNAME (GxB_MIN_ISLT_FP64) ; - - GETNAME (GxB_MAX_ISLT_INT8) ; - GETNAME (GxB_MAX_ISLT_INT16) ; - GETNAME (GxB_MAX_ISLT_INT32) ; - GETNAME (GxB_MAX_ISLT_INT64) ; - GETNAME (GxB_MAX_ISLT_UINT8) ; - GETNAME (GxB_MAX_ISLT_UINT16) ; - GETNAME (GxB_MAX_ISLT_UINT32) ; - GETNAME (GxB_MAX_ISLT_UINT64) ; - GETNAME (GxB_MAX_ISLT_FP32) ; - GETNAME (GxB_MAX_ISLT_FP64) ; - - GETNAME (GxB_PLUS_ISLT_INT8) ; - GETNAME (GxB_PLUS_ISLT_INT16) ; - GETNAME (GxB_PLUS_ISLT_INT32) ; - GETNAME (GxB_PLUS_ISLT_INT64) ; - GETNAME (GxB_PLUS_ISLT_UINT8) ; - GETNAME (GxB_PLUS_ISLT_UINT16) ; - GETNAME (GxB_PLUS_ISLT_UINT32) ; - GETNAME (GxB_PLUS_ISLT_UINT64) ; - GETNAME (GxB_PLUS_ISLT_FP32) ; - GETNAME (GxB_PLUS_ISLT_FP64) ; - - GETNAME (GxB_TIMES_ISLT_INT8) ; - GETNAME (GxB_TIMES_ISLT_INT16) ; - GETNAME (GxB_TIMES_ISLT_INT32) ; - GETNAME (GxB_TIMES_ISLT_INT64) ; - GETNAME (GxB_TIMES_ISLT_UINT8) ; - GETNAME (GxB_TIMES_ISLT_UINT16) ; - GETNAME (GxB_TIMES_ISLT_UINT32) ; - GETNAME (GxB_TIMES_ISLT_UINT64) ; - GETNAME (GxB_TIMES_ISLT_FP32) ; - GETNAME (GxB_TIMES_ISLT_FP64) ; - - GETNAME (GxB_ANY_ISLT_INT8) ; - GETNAME (GxB_ANY_ISLT_INT16) ; - GETNAME (GxB_ANY_ISLT_INT32) ; - GETNAME (GxB_ANY_ISLT_INT64) ; - GETNAME (GxB_ANY_ISLT_UINT8) ; - GETNAME (GxB_ANY_ISLT_UINT16) ; - GETNAME (GxB_ANY_ISLT_UINT32) ; - GETNAME (GxB_ANY_ISLT_UINT64) ; - GETNAME (GxB_ANY_ISLT_FP32) ; - GETNAME (GxB_ANY_ISLT_FP64) ; - - //-------------------------------------------------------------------------- - // *_ISGE - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISGE_INT8) ; - GETNAME (GxB_MIN_ISGE_INT16) ; - GETNAME (GxB_MIN_ISGE_INT32) ; - GETNAME (GxB_MIN_ISGE_INT64) ; - GETNAME (GxB_MIN_ISGE_UINT8) ; - GETNAME (GxB_MIN_ISGE_UINT16) ; - GETNAME (GxB_MIN_ISGE_UINT32) ; - GETNAME (GxB_MIN_ISGE_UINT64) ; - GETNAME (GxB_MIN_ISGE_FP32) ; - GETNAME (GxB_MIN_ISGE_FP64) ; - - GETNAME (GxB_MAX_ISGE_INT8) ; - GETNAME (GxB_MAX_ISGE_INT16) ; - GETNAME (GxB_MAX_ISGE_INT32) ; - GETNAME (GxB_MAX_ISGE_INT64) ; - GETNAME (GxB_MAX_ISGE_UINT8) ; - GETNAME (GxB_MAX_ISGE_UINT16) ; - GETNAME (GxB_MAX_ISGE_UINT32) ; - GETNAME (GxB_MAX_ISGE_UINT64) ; - GETNAME (GxB_MAX_ISGE_FP32) ; - GETNAME (GxB_MAX_ISGE_FP64) ; - - GETNAME (GxB_PLUS_ISGE_INT8) ; - GETNAME (GxB_PLUS_ISGE_INT16) ; - GETNAME (GxB_PLUS_ISGE_INT32) ; - GETNAME (GxB_PLUS_ISGE_INT64) ; - GETNAME (GxB_PLUS_ISGE_UINT8) ; - GETNAME (GxB_PLUS_ISGE_UINT16) ; - GETNAME (GxB_PLUS_ISGE_UINT32) ; - GETNAME (GxB_PLUS_ISGE_UINT64) ; - GETNAME (GxB_PLUS_ISGE_FP32) ; - GETNAME (GxB_PLUS_ISGE_FP64) ; - - GETNAME (GxB_TIMES_ISGE_INT8) ; - GETNAME (GxB_TIMES_ISGE_INT16) ; - GETNAME (GxB_TIMES_ISGE_INT32) ; - GETNAME (GxB_TIMES_ISGE_INT64) ; - GETNAME (GxB_TIMES_ISGE_UINT8) ; - GETNAME (GxB_TIMES_ISGE_UINT16) ; - GETNAME (GxB_TIMES_ISGE_UINT32) ; - GETNAME (GxB_TIMES_ISGE_UINT64) ; - GETNAME (GxB_TIMES_ISGE_FP32) ; - GETNAME (GxB_TIMES_ISGE_FP64) ; - - GETNAME (GxB_ANY_ISGE_INT8) ; - GETNAME (GxB_ANY_ISGE_INT16) ; - GETNAME (GxB_ANY_ISGE_INT32) ; - GETNAME (GxB_ANY_ISGE_INT64) ; - GETNAME (GxB_ANY_ISGE_UINT8) ; - GETNAME (GxB_ANY_ISGE_UINT16) ; - GETNAME (GxB_ANY_ISGE_UINT32) ; - GETNAME (GxB_ANY_ISGE_UINT64) ; - GETNAME (GxB_ANY_ISGE_FP32) ; - GETNAME (GxB_ANY_ISGE_FP64) ; - - //-------------------------------------------------------------------------- - // *_ISLE - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_ISLE_INT8) ; - GETNAME (GxB_MIN_ISLE_INT16) ; - GETNAME (GxB_MIN_ISLE_INT32) ; - GETNAME (GxB_MIN_ISLE_INT64) ; - GETNAME (GxB_MIN_ISLE_UINT8) ; - GETNAME (GxB_MIN_ISLE_UINT16) ; - GETNAME (GxB_MIN_ISLE_UINT32) ; - GETNAME (GxB_MIN_ISLE_UINT64) ; - GETNAME (GxB_MIN_ISLE_FP32) ; - GETNAME (GxB_MIN_ISLE_FP64) ; - - GETNAME (GxB_MAX_ISLE_INT8) ; - GETNAME (GxB_MAX_ISLE_INT16) ; - GETNAME (GxB_MAX_ISLE_INT32) ; - GETNAME (GxB_MAX_ISLE_INT64) ; - GETNAME (GxB_MAX_ISLE_UINT8) ; - GETNAME (GxB_MAX_ISLE_UINT16) ; - GETNAME (GxB_MAX_ISLE_UINT32) ; - GETNAME (GxB_MAX_ISLE_UINT64) ; - GETNAME (GxB_MAX_ISLE_FP32) ; - GETNAME (GxB_MAX_ISLE_FP64) ; - - GETNAME (GxB_PLUS_ISLE_INT8) ; - GETNAME (GxB_PLUS_ISLE_INT16) ; - GETNAME (GxB_PLUS_ISLE_INT32) ; - GETNAME (GxB_PLUS_ISLE_INT64) ; - GETNAME (GxB_PLUS_ISLE_UINT8) ; - GETNAME (GxB_PLUS_ISLE_UINT16) ; - GETNAME (GxB_PLUS_ISLE_UINT32) ; - GETNAME (GxB_PLUS_ISLE_UINT64) ; - GETNAME (GxB_PLUS_ISLE_FP32) ; - GETNAME (GxB_PLUS_ISLE_FP64) ; - - GETNAME (GxB_TIMES_ISLE_INT8) ; - GETNAME (GxB_TIMES_ISLE_INT16) ; - GETNAME (GxB_TIMES_ISLE_INT32) ; - GETNAME (GxB_TIMES_ISLE_INT64) ; - GETNAME (GxB_TIMES_ISLE_UINT8) ; - GETNAME (GxB_TIMES_ISLE_UINT16) ; - GETNAME (GxB_TIMES_ISLE_UINT32) ; - GETNAME (GxB_TIMES_ISLE_UINT64) ; - GETNAME (GxB_TIMES_ISLE_FP32) ; - GETNAME (GxB_TIMES_ISLE_FP64) ; - - GETNAME (GxB_ANY_ISLE_INT8) ; - GETNAME (GxB_ANY_ISLE_INT16) ; - GETNAME (GxB_ANY_ISLE_INT32) ; - GETNAME (GxB_ANY_ISLE_INT64) ; - GETNAME (GxB_ANY_ISLE_UINT8) ; - GETNAME (GxB_ANY_ISLE_UINT16) ; - GETNAME (GxB_ANY_ISLE_UINT32) ; - GETNAME (GxB_ANY_ISLE_UINT64) ; - GETNAME (GxB_ANY_ISLE_FP32) ; - GETNAME (GxB_ANY_ISLE_FP64) ; - - //-------------------------------------------------------------------------- - // *_LOR - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_LOR_INT8) ; - GETNAME (GxB_MIN_LOR_INT16) ; - GETNAME (GxB_MIN_LOR_INT32) ; - GETNAME (GxB_MIN_LOR_INT64) ; - GETNAME (GxB_MIN_LOR_UINT8) ; - GETNAME (GxB_MIN_LOR_UINT16) ; - GETNAME (GxB_MIN_LOR_UINT32) ; - GETNAME (GxB_MIN_LOR_UINT64) ; - GETNAME (GxB_MIN_LOR_FP32) ; - GETNAME (GxB_MIN_LOR_FP64) ; - - GETNAME (GxB_MAX_LOR_INT8) ; - GETNAME (GxB_MAX_LOR_INT16) ; - GETNAME (GxB_MAX_LOR_INT32) ; - GETNAME (GxB_MAX_LOR_INT64) ; - GETNAME (GxB_MAX_LOR_UINT8) ; - GETNAME (GxB_MAX_LOR_UINT16) ; - GETNAME (GxB_MAX_LOR_UINT32) ; - GETNAME (GxB_MAX_LOR_UINT64) ; - GETNAME (GxB_MAX_LOR_FP32) ; - GETNAME (GxB_MAX_LOR_FP64) ; - - GETNAME (GxB_PLUS_LOR_INT8) ; - GETNAME (GxB_PLUS_LOR_INT16) ; - GETNAME (GxB_PLUS_LOR_INT32) ; - GETNAME (GxB_PLUS_LOR_INT64) ; - GETNAME (GxB_PLUS_LOR_UINT8) ; - GETNAME (GxB_PLUS_LOR_UINT16) ; - GETNAME (GxB_PLUS_LOR_UINT32) ; - GETNAME (GxB_PLUS_LOR_UINT64) ; - GETNAME (GxB_PLUS_LOR_FP32) ; - GETNAME (GxB_PLUS_LOR_FP64) ; - - GETNAME (GxB_TIMES_LOR_INT8) ; - GETNAME (GxB_TIMES_LOR_INT16) ; - GETNAME (GxB_TIMES_LOR_INT32) ; - GETNAME (GxB_TIMES_LOR_INT64) ; - GETNAME (GxB_TIMES_LOR_UINT8) ; - GETNAME (GxB_TIMES_LOR_UINT16) ; - GETNAME (GxB_TIMES_LOR_UINT32) ; - GETNAME (GxB_TIMES_LOR_UINT64) ; - GETNAME (GxB_TIMES_LOR_FP32) ; - GETNAME (GxB_TIMES_LOR_FP64) ; - - GETNAME (GxB_ANY_LOR_INT8) ; - GETNAME (GxB_ANY_LOR_INT16) ; - GETNAME (GxB_ANY_LOR_INT32) ; - GETNAME (GxB_ANY_LOR_INT64) ; - GETNAME (GxB_ANY_LOR_UINT8) ; - GETNAME (GxB_ANY_LOR_UINT16) ; - GETNAME (GxB_ANY_LOR_UINT32) ; - GETNAME (GxB_ANY_LOR_UINT64) ; - GETNAME (GxB_ANY_LOR_FP32) ; - GETNAME (GxB_ANY_LOR_FP64) ; - - GETNAME (GxB_LOR_LOR_BOOL) ; - GETNAME (GxB_LXOR_LOR_BOOL) ; - GETNAME (GxB_ANY_LOR_BOOL) ; - - GETNAM2 (GxB_LAND_LOR_BOOL, "GrB_LAND_LOR_SEMIRING_BOOL") ; - GETNAME (GrB_LAND_LOR_SEMIRING_BOOL) ; - - GETNAM2 (GxB_EQ_LOR_BOOL, "GrB_LXNOR_LOR_SEMIRING_BOOL") ; - GETNAME (GrB_LXNOR_LOR_SEMIRING_BOOL) ; - - //-------------------------------------------------------------------------- - // *_LAND - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_LAND_INT8) ; - GETNAME (GxB_MIN_LAND_INT16) ; - GETNAME (GxB_MIN_LAND_INT32) ; - GETNAME (GxB_MIN_LAND_INT64) ; - GETNAME (GxB_MIN_LAND_UINT8) ; - GETNAME (GxB_MIN_LAND_UINT16) ; - GETNAME (GxB_MIN_LAND_UINT32) ; - GETNAME (GxB_MIN_LAND_UINT64) ; - GETNAME (GxB_MIN_LAND_FP32) ; - GETNAME (GxB_MIN_LAND_FP64) ; - - GETNAME (GxB_MAX_LAND_INT8) ; - GETNAME (GxB_MAX_LAND_INT16) ; - GETNAME (GxB_MAX_LAND_INT32) ; - GETNAME (GxB_MAX_LAND_INT64) ; - GETNAME (GxB_MAX_LAND_UINT8) ; - GETNAME (GxB_MAX_LAND_UINT16) ; - GETNAME (GxB_MAX_LAND_UINT32) ; - GETNAME (GxB_MAX_LAND_UINT64) ; - GETNAME (GxB_MAX_LAND_FP32) ; - GETNAME (GxB_MAX_LAND_FP64) ; - - GETNAME (GxB_PLUS_LAND_INT8) ; - GETNAME (GxB_PLUS_LAND_INT16) ; - GETNAME (GxB_PLUS_LAND_INT32) ; - GETNAME (GxB_PLUS_LAND_INT64) ; - GETNAME (GxB_PLUS_LAND_UINT8) ; - GETNAME (GxB_PLUS_LAND_UINT16) ; - GETNAME (GxB_PLUS_LAND_UINT32) ; - GETNAME (GxB_PLUS_LAND_UINT64) ; - GETNAME (GxB_PLUS_LAND_FP32) ; - GETNAME (GxB_PLUS_LAND_FP64) ; - - GETNAME (GxB_TIMES_LAND_INT8) ; - GETNAME (GxB_TIMES_LAND_INT16) ; - GETNAME (GxB_TIMES_LAND_INT32) ; - GETNAME (GxB_TIMES_LAND_INT64) ; - GETNAME (GxB_TIMES_LAND_UINT8) ; - GETNAME (GxB_TIMES_LAND_UINT16) ; - GETNAME (GxB_TIMES_LAND_UINT32) ; - GETNAME (GxB_TIMES_LAND_UINT64) ; - GETNAME (GxB_TIMES_LAND_FP32) ; - GETNAME (GxB_TIMES_LAND_FP64) ; - - GETNAME (GxB_ANY_LAND_INT8) ; - GETNAME (GxB_ANY_LAND_INT16) ; - GETNAME (GxB_ANY_LAND_INT32) ; - GETNAME (GxB_ANY_LAND_INT64) ; - GETNAME (GxB_ANY_LAND_UINT8) ; - GETNAME (GxB_ANY_LAND_UINT16) ; - GETNAME (GxB_ANY_LAND_UINT32) ; - GETNAME (GxB_ANY_LAND_UINT64) ; - GETNAME (GxB_ANY_LAND_FP32) ; - GETNAME (GxB_ANY_LAND_FP64) ; - - GETNAME (GxB_LAND_LAND_BOOL) ; - GETNAME (GxB_ANY_LAND_BOOL) ; - GETNAME (GxB_EQ_LAND_BOOL) ; - - GETNAM2 (GxB_LOR_LAND_BOOL, "GrB_LOR_LAND_SEMIRING_BOOL") ; - GETNAME (GrB_LOR_LAND_SEMIRING_BOOL) ; - - GETNAM2 (GxB_LXOR_LAND_BOOL, "GrB_LXOR_LAND_SEMIRING_BOOL") ; - GETNAME (GrB_LXOR_LAND_SEMIRING_BOOL) ; - - //-------------------------------------------------------------------------- - // *_LXOR - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_LXOR_INT8) ; - GETNAME (GxB_MIN_LXOR_INT16) ; - GETNAME (GxB_MIN_LXOR_INT32) ; - GETNAME (GxB_MIN_LXOR_INT64) ; - GETNAME (GxB_MIN_LXOR_UINT8) ; - GETNAME (GxB_MIN_LXOR_UINT16) ; - GETNAME (GxB_MIN_LXOR_UINT32) ; - GETNAME (GxB_MIN_LXOR_UINT64) ; - GETNAME (GxB_MIN_LXOR_FP32) ; - GETNAME (GxB_MIN_LXOR_FP64) ; - - GETNAME (GxB_MAX_LXOR_INT8) ; - GETNAME (GxB_MAX_LXOR_INT16) ; - GETNAME (GxB_MAX_LXOR_INT32) ; - GETNAME (GxB_MAX_LXOR_INT64) ; - GETNAME (GxB_MAX_LXOR_UINT8) ; - GETNAME (GxB_MAX_LXOR_UINT16) ; - GETNAME (GxB_MAX_LXOR_UINT32) ; - GETNAME (GxB_MAX_LXOR_UINT64) ; - GETNAME (GxB_MAX_LXOR_FP32) ; - GETNAME (GxB_MAX_LXOR_FP64) ; - - GETNAME (GxB_PLUS_LXOR_INT8) ; - GETNAME (GxB_PLUS_LXOR_INT16) ; - GETNAME (GxB_PLUS_LXOR_INT32) ; - GETNAME (GxB_PLUS_LXOR_INT64) ; - GETNAME (GxB_PLUS_LXOR_UINT8) ; - GETNAME (GxB_PLUS_LXOR_UINT16) ; - GETNAME (GxB_PLUS_LXOR_UINT32) ; - GETNAME (GxB_PLUS_LXOR_UINT64) ; - GETNAME (GxB_PLUS_LXOR_FP32) ; - GETNAME (GxB_PLUS_LXOR_FP64) ; - - GETNAME (GxB_TIMES_LXOR_INT8) ; - GETNAME (GxB_TIMES_LXOR_INT16) ; - GETNAME (GxB_TIMES_LXOR_INT32) ; - GETNAME (GxB_TIMES_LXOR_INT64) ; - GETNAME (GxB_TIMES_LXOR_UINT8) ; - GETNAME (GxB_TIMES_LXOR_UINT16) ; - GETNAME (GxB_TIMES_LXOR_UINT32) ; - GETNAME (GxB_TIMES_LXOR_UINT64) ; - GETNAME (GxB_TIMES_LXOR_FP32) ; - GETNAME (GxB_TIMES_LXOR_FP64) ; - - GETNAME (GxB_ANY_LXOR_INT8) ; - GETNAME (GxB_ANY_LXOR_INT16) ; - GETNAME (GxB_ANY_LXOR_INT32) ; - GETNAME (GxB_ANY_LXOR_INT64) ; - GETNAME (GxB_ANY_LXOR_UINT8) ; - GETNAME (GxB_ANY_LXOR_UINT16) ; - GETNAME (GxB_ANY_LXOR_UINT32) ; - GETNAME (GxB_ANY_LXOR_UINT64) ; - GETNAME (GxB_ANY_LXOR_FP32) ; - GETNAME (GxB_ANY_LXOR_FP64) ; - - GETNAME (GxB_LOR_LXOR_BOOL) ; - GETNAME (GxB_LAND_LXOR_BOOL) ; - GETNAME (GxB_LXOR_LXOR_BOOL) ; - GETNAME (GxB_EQ_LXOR_BOOL) ; - GETNAME (GxB_ANY_LXOR_BOOL) ; - - //-------------------------------------------------------------------------- - // *_EQ - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_EQ_INT8) ; - GETNAME (GxB_LOR_EQ_INT16) ; - GETNAME (GxB_LOR_EQ_INT32) ; - GETNAME (GxB_LOR_EQ_INT64) ; - GETNAME (GxB_LOR_EQ_UINT8) ; - GETNAME (GxB_LOR_EQ_UINT16) ; - GETNAME (GxB_LOR_EQ_UINT32) ; - GETNAME (GxB_LOR_EQ_UINT64) ; - GETNAME (GxB_LOR_EQ_FP32) ; - GETNAME (GxB_LOR_EQ_FP64) ; - - GETNAME (GxB_LAND_EQ_INT8) ; - GETNAME (GxB_LAND_EQ_INT16) ; - GETNAME (GxB_LAND_EQ_INT32) ; - GETNAME (GxB_LAND_EQ_INT64) ; - GETNAME (GxB_LAND_EQ_UINT8) ; - GETNAME (GxB_LAND_EQ_UINT16) ; - GETNAME (GxB_LAND_EQ_UINT32) ; - GETNAME (GxB_LAND_EQ_UINT64) ; - GETNAME (GxB_LAND_EQ_FP32) ; - GETNAME (GxB_LAND_EQ_FP64) ; - - GETNAME (GxB_LXOR_EQ_INT8) ; - GETNAME (GxB_LXOR_EQ_INT16) ; - GETNAME (GxB_LXOR_EQ_INT32) ; - GETNAME (GxB_LXOR_EQ_INT64) ; - GETNAME (GxB_LXOR_EQ_UINT8) ; - GETNAME (GxB_LXOR_EQ_UINT16) ; - GETNAME (GxB_LXOR_EQ_UINT32) ; - GETNAME (GxB_LXOR_EQ_UINT64) ; - GETNAME (GxB_LXOR_EQ_FP32) ; - GETNAME (GxB_LXOR_EQ_FP64) ; - - GETNAME (GxB_EQ_EQ_INT8) ; - GETNAME (GxB_EQ_EQ_INT16) ; - GETNAME (GxB_EQ_EQ_INT32) ; - GETNAME (GxB_EQ_EQ_INT64) ; - GETNAME (GxB_EQ_EQ_UINT8) ; - GETNAME (GxB_EQ_EQ_UINT16) ; - GETNAME (GxB_EQ_EQ_UINT32) ; - GETNAME (GxB_EQ_EQ_UINT64) ; - GETNAME (GxB_EQ_EQ_FP32) ; - GETNAME (GxB_EQ_EQ_FP64) ; - - GETNAME (GxB_ANY_EQ_INT8) ; - GETNAME (GxB_ANY_EQ_INT16) ; - GETNAME (GxB_ANY_EQ_INT32) ; - GETNAME (GxB_ANY_EQ_INT64) ; - GETNAME (GxB_ANY_EQ_UINT8) ; - GETNAME (GxB_ANY_EQ_UINT16) ; - GETNAME (GxB_ANY_EQ_UINT32) ; - GETNAME (GxB_ANY_EQ_UINT64) ; - GETNAME (GxB_ANY_EQ_FP32) ; - GETNAME (GxB_ANY_EQ_FP64) ; - - GETNAME (GxB_LOR_EQ_BOOL) ; - GETNAME (GxB_LAND_EQ_BOOL) ; - GETNAME (GxB_LXOR_EQ_BOOL) ; - GETNAME (GxB_EQ_EQ_BOOL) ; - GETNAME (GxB_ANY_EQ_BOOL) ; - - //-------------------------------------------------------------------------- - // *_NE - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_NE_INT8) ; - GETNAME (GxB_LOR_NE_INT16) ; - GETNAME (GxB_LOR_NE_INT32) ; - GETNAME (GxB_LOR_NE_INT64) ; - GETNAME (GxB_LOR_NE_UINT8) ; - GETNAME (GxB_LOR_NE_UINT16) ; - GETNAME (GxB_LOR_NE_UINT32) ; - GETNAME (GxB_LOR_NE_UINT64) ; - GETNAME (GxB_LOR_NE_FP32) ; - GETNAME (GxB_LOR_NE_FP64) ; - - GETNAME (GxB_LAND_NE_INT8) ; - GETNAME (GxB_LAND_NE_INT16) ; - GETNAME (GxB_LAND_NE_INT32) ; - GETNAME (GxB_LAND_NE_INT64) ; - GETNAME (GxB_LAND_NE_UINT8) ; - GETNAME (GxB_LAND_NE_UINT16) ; - GETNAME (GxB_LAND_NE_UINT32) ; - GETNAME (GxB_LAND_NE_UINT64) ; - GETNAME (GxB_LAND_NE_FP32) ; - GETNAME (GxB_LAND_NE_FP64) ; - - GETNAME (GxB_LXOR_NE_INT8) ; - GETNAME (GxB_LXOR_NE_INT16) ; - GETNAME (GxB_LXOR_NE_INT32) ; - GETNAME (GxB_LXOR_NE_INT64) ; - GETNAME (GxB_LXOR_NE_UINT8) ; - GETNAME (GxB_LXOR_NE_UINT16) ; - GETNAME (GxB_LXOR_NE_UINT32) ; - GETNAME (GxB_LXOR_NE_UINT64) ; - GETNAME (GxB_LXOR_NE_FP32) ; - GETNAME (GxB_LXOR_NE_FP64) ; - - GETNAME (GxB_EQ_NE_INT8) ; - GETNAME (GxB_EQ_NE_INT16) ; - GETNAME (GxB_EQ_NE_INT32) ; - GETNAME (GxB_EQ_NE_INT64) ; - GETNAME (GxB_EQ_NE_UINT8) ; - GETNAME (GxB_EQ_NE_UINT16) ; - GETNAME (GxB_EQ_NE_UINT32) ; - GETNAME (GxB_EQ_NE_UINT64) ; - GETNAME (GxB_EQ_NE_FP32) ; - GETNAME (GxB_EQ_NE_FP64) ; - - GETNAME (GxB_ANY_NE_INT8) ; - GETNAME (GxB_ANY_NE_INT16) ; - GETNAME (GxB_ANY_NE_INT32) ; - GETNAME (GxB_ANY_NE_INT64) ; - GETNAME (GxB_ANY_NE_UINT8) ; - GETNAME (GxB_ANY_NE_UINT16) ; - GETNAME (GxB_ANY_NE_UINT32) ; - GETNAME (GxB_ANY_NE_UINT64) ; - GETNAME (GxB_ANY_NE_FP32) ; - GETNAME (GxB_ANY_NE_FP64) ; - - //-------------------------------------------------------------------------- - // *_GT - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_GT_INT8) ; - GETNAME (GxB_LOR_GT_INT16) ; - GETNAME (GxB_LOR_GT_INT32) ; - GETNAME (GxB_LOR_GT_INT64) ; - GETNAME (GxB_LOR_GT_UINT8) ; - GETNAME (GxB_LOR_GT_UINT16) ; - GETNAME (GxB_LOR_GT_UINT32) ; - GETNAME (GxB_LOR_GT_UINT64) ; - GETNAME (GxB_LOR_GT_FP32) ; - GETNAME (GxB_LOR_GT_FP64) ; - - GETNAME (GxB_LAND_GT_INT8) ; - GETNAME (GxB_LAND_GT_INT16) ; - GETNAME (GxB_LAND_GT_INT32) ; - GETNAME (GxB_LAND_GT_INT64) ; - GETNAME (GxB_LAND_GT_UINT8) ; - GETNAME (GxB_LAND_GT_UINT16) ; - GETNAME (GxB_LAND_GT_UINT32) ; - GETNAME (GxB_LAND_GT_UINT64) ; - GETNAME (GxB_LAND_GT_FP32) ; - GETNAME (GxB_LAND_GT_FP64) ; - - GETNAME (GxB_LXOR_GT_INT8) ; - GETNAME (GxB_LXOR_GT_INT16) ; - GETNAME (GxB_LXOR_GT_INT32) ; - GETNAME (GxB_LXOR_GT_INT64) ; - GETNAME (GxB_LXOR_GT_UINT8) ; - GETNAME (GxB_LXOR_GT_UINT16) ; - GETNAME (GxB_LXOR_GT_UINT32) ; - GETNAME (GxB_LXOR_GT_UINT64) ; - GETNAME (GxB_LXOR_GT_FP32) ; - GETNAME (GxB_LXOR_GT_FP64) ; - - GETNAME (GxB_EQ_GT_INT8) ; - GETNAME (GxB_EQ_GT_INT16) ; - GETNAME (GxB_EQ_GT_INT32) ; - GETNAME (GxB_EQ_GT_INT64) ; - GETNAME (GxB_EQ_GT_UINT8) ; - GETNAME (GxB_EQ_GT_UINT16) ; - GETNAME (GxB_EQ_GT_UINT32) ; - GETNAME (GxB_EQ_GT_UINT64) ; - GETNAME (GxB_EQ_GT_FP32) ; - GETNAME (GxB_EQ_GT_FP64) ; - - GETNAME (GxB_ANY_GT_INT8) ; - GETNAME (GxB_ANY_GT_INT16) ; - GETNAME (GxB_ANY_GT_INT32) ; - GETNAME (GxB_ANY_GT_INT64) ; - GETNAME (GxB_ANY_GT_UINT8) ; - GETNAME (GxB_ANY_GT_UINT16) ; - GETNAME (GxB_ANY_GT_UINT32) ; - GETNAME (GxB_ANY_GT_UINT64) ; - GETNAME (GxB_ANY_GT_FP32) ; - GETNAME (GxB_ANY_GT_FP64) ; - - GETNAME (GxB_LOR_GT_BOOL) ; - GETNAME (GxB_LAND_GT_BOOL) ; - GETNAME (GxB_LXOR_GT_BOOL) ; - GETNAME (GxB_EQ_GT_BOOL) ; - GETNAME (GxB_ANY_GT_BOOL) ; - - //-------------------------------------------------------------------------- - // *_LT - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_LT_INT8) ; - GETNAME (GxB_LOR_LT_INT16) ; - GETNAME (GxB_LOR_LT_INT32) ; - GETNAME (GxB_LOR_LT_INT64) ; - GETNAME (GxB_LOR_LT_UINT8) ; - GETNAME (GxB_LOR_LT_UINT16) ; - GETNAME (GxB_LOR_LT_UINT32) ; - GETNAME (GxB_LOR_LT_UINT64) ; - GETNAME (GxB_LOR_LT_FP32) ; - GETNAME (GxB_LOR_LT_FP64) ; - - GETNAME (GxB_LAND_LT_INT8) ; - GETNAME (GxB_LAND_LT_INT16) ; - GETNAME (GxB_LAND_LT_INT32) ; - GETNAME (GxB_LAND_LT_INT64) ; - GETNAME (GxB_LAND_LT_UINT8) ; - GETNAME (GxB_LAND_LT_UINT16) ; - GETNAME (GxB_LAND_LT_UINT32) ; - GETNAME (GxB_LAND_LT_UINT64) ; - GETNAME (GxB_LAND_LT_FP32) ; - GETNAME (GxB_LAND_LT_FP64) ; - - GETNAME (GxB_LXOR_LT_INT8) ; - GETNAME (GxB_LXOR_LT_INT16) ; - GETNAME (GxB_LXOR_LT_INT32) ; - GETNAME (GxB_LXOR_LT_INT64) ; - GETNAME (GxB_LXOR_LT_UINT8) ; - GETNAME (GxB_LXOR_LT_UINT16) ; - GETNAME (GxB_LXOR_LT_UINT32) ; - GETNAME (GxB_LXOR_LT_UINT64) ; - GETNAME (GxB_LXOR_LT_FP32) ; - GETNAME (GxB_LXOR_LT_FP64) ; - - GETNAME (GxB_EQ_LT_INT8) ; - GETNAME (GxB_EQ_LT_INT16) ; - GETNAME (GxB_EQ_LT_INT32) ; - GETNAME (GxB_EQ_LT_INT64) ; - GETNAME (GxB_EQ_LT_UINT8) ; - GETNAME (GxB_EQ_LT_UINT16) ; - GETNAME (GxB_EQ_LT_UINT32) ; - GETNAME (GxB_EQ_LT_UINT64) ; - GETNAME (GxB_EQ_LT_FP32) ; - GETNAME (GxB_EQ_LT_FP64) ; - - GETNAME (GxB_ANY_LT_INT8) ; - GETNAME (GxB_ANY_LT_INT16) ; - GETNAME (GxB_ANY_LT_INT32) ; - GETNAME (GxB_ANY_LT_INT64) ; - GETNAME (GxB_ANY_LT_UINT8) ; - GETNAME (GxB_ANY_LT_UINT16) ; - GETNAME (GxB_ANY_LT_UINT32) ; - GETNAME (GxB_ANY_LT_UINT64) ; - GETNAME (GxB_ANY_LT_FP32) ; - GETNAME (GxB_ANY_LT_FP64) ; - - GETNAME (GxB_LOR_LT_BOOL) ; - GETNAME (GxB_LAND_LT_BOOL) ; - GETNAME (GxB_LXOR_LT_BOOL) ; - GETNAME (GxB_EQ_LT_BOOL) ; - GETNAME (GxB_ANY_LT_BOOL) ; - - //-------------------------------------------------------------------------- - // *_GE - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_GE_INT8) ; - GETNAME (GxB_LOR_GE_INT16) ; - GETNAME (GxB_LOR_GE_INT32) ; - GETNAME (GxB_LOR_GE_INT64) ; - GETNAME (GxB_LOR_GE_UINT8) ; - GETNAME (GxB_LOR_GE_UINT16) ; - GETNAME (GxB_LOR_GE_UINT32) ; - GETNAME (GxB_LOR_GE_UINT64) ; - GETNAME (GxB_LOR_GE_FP32) ; - GETNAME (GxB_LOR_GE_FP64) ; - - GETNAME (GxB_LAND_GE_INT8) ; - GETNAME (GxB_LAND_GE_INT16) ; - GETNAME (GxB_LAND_GE_INT32) ; - GETNAME (GxB_LAND_GE_INT64) ; - GETNAME (GxB_LAND_GE_UINT8) ; - GETNAME (GxB_LAND_GE_UINT16) ; - GETNAME (GxB_LAND_GE_UINT32) ; - GETNAME (GxB_LAND_GE_UINT64) ; - GETNAME (GxB_LAND_GE_FP32) ; - GETNAME (GxB_LAND_GE_FP64) ; - - GETNAME (GxB_LXOR_GE_INT8) ; - GETNAME (GxB_LXOR_GE_INT16) ; - GETNAME (GxB_LXOR_GE_INT32) ; - GETNAME (GxB_LXOR_GE_INT64) ; - GETNAME (GxB_LXOR_GE_UINT8) ; - GETNAME (GxB_LXOR_GE_UINT16) ; - GETNAME (GxB_LXOR_GE_UINT32) ; - GETNAME (GxB_LXOR_GE_UINT64) ; - GETNAME (GxB_LXOR_GE_FP32) ; - GETNAME (GxB_LXOR_GE_FP64) ; - - GETNAME (GxB_EQ_GE_INT8) ; - GETNAME (GxB_EQ_GE_INT16) ; - GETNAME (GxB_EQ_GE_INT32) ; - GETNAME (GxB_EQ_GE_INT64) ; - GETNAME (GxB_EQ_GE_UINT8) ; - GETNAME (GxB_EQ_GE_UINT16) ; - GETNAME (GxB_EQ_GE_UINT32) ; - GETNAME (GxB_EQ_GE_UINT64) ; - GETNAME (GxB_EQ_GE_FP32) ; - GETNAME (GxB_EQ_GE_FP64) ; - - GETNAME (GxB_ANY_GE_INT8) ; - GETNAME (GxB_ANY_GE_INT16) ; - GETNAME (GxB_ANY_GE_INT32) ; - GETNAME (GxB_ANY_GE_INT64) ; - GETNAME (GxB_ANY_GE_UINT8) ; - GETNAME (GxB_ANY_GE_UINT16) ; - GETNAME (GxB_ANY_GE_UINT32) ; - GETNAME (GxB_ANY_GE_UINT64) ; - GETNAME (GxB_ANY_GE_FP32) ; - GETNAME (GxB_ANY_GE_FP64) ; - - GETNAME (GxB_LOR_GE_BOOL) ; - GETNAME (GxB_LAND_GE_BOOL) ; - GETNAME (GxB_LXOR_GE_BOOL) ; - GETNAME (GxB_EQ_GE_BOOL) ; - GETNAME (GxB_ANY_GE_BOOL) ; - - //-------------------------------------------------------------------------- - // *_LE - //-------------------------------------------------------------------------- - - GETNAME (GxB_LOR_LE_INT8) ; - GETNAME (GxB_LOR_LE_INT16) ; - GETNAME (GxB_LOR_LE_INT32) ; - GETNAME (GxB_LOR_LE_INT64) ; - GETNAME (GxB_LOR_LE_UINT8) ; - GETNAME (GxB_LOR_LE_UINT16) ; - GETNAME (GxB_LOR_LE_UINT32) ; - GETNAME (GxB_LOR_LE_UINT64) ; - GETNAME (GxB_LOR_LE_FP32) ; - GETNAME (GxB_LOR_LE_FP64) ; - - GETNAME (GxB_LAND_LE_INT8) ; - GETNAME (GxB_LAND_LE_INT16) ; - GETNAME (GxB_LAND_LE_INT32) ; - GETNAME (GxB_LAND_LE_INT64) ; - GETNAME (GxB_LAND_LE_UINT8) ; - GETNAME (GxB_LAND_LE_UINT16) ; - GETNAME (GxB_LAND_LE_UINT32) ; - GETNAME (GxB_LAND_LE_UINT64) ; - GETNAME (GxB_LAND_LE_FP32) ; - GETNAME (GxB_LAND_LE_FP64) ; - - GETNAME (GxB_LXOR_LE_INT8) ; - GETNAME (GxB_LXOR_LE_INT16) ; - GETNAME (GxB_LXOR_LE_INT32) ; - GETNAME (GxB_LXOR_LE_INT64) ; - GETNAME (GxB_LXOR_LE_UINT8) ; - GETNAME (GxB_LXOR_LE_UINT16) ; - GETNAME (GxB_LXOR_LE_UINT32) ; - GETNAME (GxB_LXOR_LE_UINT64) ; - GETNAME (GxB_LXOR_LE_FP32) ; - GETNAME (GxB_LXOR_LE_FP64) ; - - GETNAME (GxB_EQ_LE_INT8) ; - GETNAME (GxB_EQ_LE_INT16) ; - GETNAME (GxB_EQ_LE_INT32) ; - GETNAME (GxB_EQ_LE_INT64) ; - GETNAME (GxB_EQ_LE_UINT8) ; - GETNAME (GxB_EQ_LE_UINT16) ; - GETNAME (GxB_EQ_LE_UINT32) ; - GETNAME (GxB_EQ_LE_UINT64) ; - GETNAME (GxB_EQ_LE_FP32) ; - GETNAME (GxB_EQ_LE_FP64) ; - - GETNAME (GxB_ANY_LE_INT8) ; - GETNAME (GxB_ANY_LE_INT16) ; - GETNAME (GxB_ANY_LE_INT32) ; - GETNAME (GxB_ANY_LE_INT64) ; - GETNAME (GxB_ANY_LE_UINT8) ; - GETNAME (GxB_ANY_LE_UINT16) ; - GETNAME (GxB_ANY_LE_UINT32) ; - GETNAME (GxB_ANY_LE_UINT64) ; - GETNAME (GxB_ANY_LE_FP32) ; - GETNAME (GxB_ANY_LE_FP64) ; - - GETNAME (GxB_LOR_LE_BOOL) ; - GETNAME (GxB_LAND_LE_BOOL) ; - GETNAME (GxB_LXOR_LE_BOOL) ; - GETNAME (GxB_EQ_LE_BOOL) ; - GETNAME (GxB_ANY_LE_BOOL) ; - - - //-------------------------------------------------------------------------- - // bitwise - //-------------------------------------------------------------------------- - - GETNAME (GxB_BOR_BOR_UINT8) ; - GETNAME (GxB_BOR_BOR_UINT16) ; - GETNAME (GxB_BOR_BOR_UINT32) ; - GETNAME (GxB_BOR_BOR_UINT64) ; - - GETNAME (GxB_BOR_BAND_UINT8) ; - GETNAME (GxB_BOR_BAND_UINT16) ; - GETNAME (GxB_BOR_BAND_UINT32) ; - GETNAME (GxB_BOR_BAND_UINT64) ; - - GETNAME (GxB_BOR_BXOR_UINT8) ; - GETNAME (GxB_BOR_BXOR_UINT16) ; - GETNAME (GxB_BOR_BXOR_UINT32) ; - GETNAME (GxB_BOR_BXOR_UINT64) ; - - GETNAME (GxB_BOR_BXNOR_UINT8) ; - GETNAME (GxB_BOR_BXNOR_UINT16) ; - GETNAME (GxB_BOR_BXNOR_UINT32) ; - GETNAME (GxB_BOR_BXNOR_UINT64) ; - - GETNAME (GxB_BAND_BOR_UINT8) ; - GETNAME (GxB_BAND_BOR_UINT16) ; - GETNAME (GxB_BAND_BOR_UINT32) ; - GETNAME (GxB_BAND_BOR_UINT64) ; - - GETNAME (GxB_BAND_BAND_UINT8) ; - GETNAME (GxB_BAND_BAND_UINT16) ; - GETNAME (GxB_BAND_BAND_UINT32) ; - GETNAME (GxB_BAND_BAND_UINT64) ; - - GETNAME (GxB_BAND_BXOR_UINT8) ; - GETNAME (GxB_BAND_BXOR_UINT16) ; - GETNAME (GxB_BAND_BXOR_UINT32) ; - GETNAME (GxB_BAND_BXOR_UINT64) ; - - GETNAME (GxB_BAND_BXNOR_UINT8) ; - GETNAME (GxB_BAND_BXNOR_UINT16) ; - GETNAME (GxB_BAND_BXNOR_UINT32) ; - GETNAME (GxB_BAND_BXNOR_UINT64) ; - - GETNAME (GxB_BXOR_BOR_UINT8) ; - GETNAME (GxB_BXOR_BOR_UINT16) ; - GETNAME (GxB_BXOR_BOR_UINT32) ; - GETNAME (GxB_BXOR_BOR_UINT64) ; - - GETNAME (GxB_BXOR_BAND_UINT8) ; - GETNAME (GxB_BXOR_BAND_UINT16) ; - GETNAME (GxB_BXOR_BAND_UINT32) ; - GETNAME (GxB_BXOR_BAND_UINT64) ; - - GETNAME (GxB_BXOR_BXOR_UINT8) ; - GETNAME (GxB_BXOR_BXOR_UINT16) ; - GETNAME (GxB_BXOR_BXOR_UINT32) ; - GETNAME (GxB_BXOR_BXOR_UINT64) ; - - GETNAME (GxB_BXOR_BXNOR_UINT8) ; - GETNAME (GxB_BXOR_BXNOR_UINT16) ; - GETNAME (GxB_BXOR_BXNOR_UINT32) ; - GETNAME (GxB_BXOR_BXNOR_UINT64) ; - - - GETNAME (GxB_BXNOR_BOR_UINT8) ; - GETNAME (GxB_BXNOR_BOR_UINT16) ; - GETNAME (GxB_BXNOR_BOR_UINT32) ; - GETNAME (GxB_BXNOR_BOR_UINT64) ; - - GETNAME (GxB_BXNOR_BAND_UINT8) ; - GETNAME (GxB_BXNOR_BAND_UINT16) ; - GETNAME (GxB_BXNOR_BAND_UINT32) ; - GETNAME (GxB_BXNOR_BAND_UINT64) ; - - GETNAME (GxB_BXNOR_BXOR_UINT8) ; - GETNAME (GxB_BXNOR_BXOR_UINT16) ; - GETNAME (GxB_BXNOR_BXOR_UINT32) ; - GETNAME (GxB_BXNOR_BXOR_UINT64) ; - - GETNAME (GxB_BXNOR_BXNOR_UINT8) ; - GETNAME (GxB_BXNOR_BXNOR_UINT16) ; - GETNAME (GxB_BXNOR_BXNOR_UINT32) ; - GETNAME (GxB_BXNOR_BXNOR_UINT64) ; - - //-------------------------------------------------------------------------- - // positional semirings - //-------------------------------------------------------------------------- - - GETNAME (GxB_MIN_FIRSTI_INT32) ; - GETNAME (GxB_MIN_FIRSTI_INT64) ; - - GETNAME (GxB_MAX_FIRSTI_INT32) ; - GETNAME (GxB_MAX_FIRSTI_INT64) ; - - GETNAME (GxB_ANY_FIRSTI_INT32) ; - GETNAME (GxB_ANY_FIRSTI_INT64) ; - - GETNAME (GxB_PLUS_FIRSTI_INT32) ; - GETNAME (GxB_PLUS_FIRSTI_INT64) ; - - GETNAME (GxB_TIMES_FIRSTI_INT32) ; - GETNAME (GxB_TIMES_FIRSTI_INT64) ; - - GETNAME (GxB_MIN_FIRSTI1_INT32) ; - GETNAME (GxB_MIN_FIRSTI1_INT64) ; - - GETNAME (GxB_MAX_FIRSTI1_INT32) ; - GETNAME (GxB_MAX_FIRSTI1_INT64) ; - - GETNAME (GxB_ANY_FIRSTI1_INT32) ; - GETNAME (GxB_ANY_FIRSTI1_INT64) ; - - GETNAME (GxB_PLUS_FIRSTI1_INT32) ; - GETNAME (GxB_PLUS_FIRSTI1_INT64) ; - - GETNAME (GxB_TIMES_FIRSTI1_INT32) ; - GETNAME (GxB_TIMES_FIRSTI1_INT64) ; - - GETNAM2 (GxB_MIN_FIRSTJ_INT32, "GxB_MIN_SECONDI_INT32") ; - GETNAM2 (GxB_MIN_FIRSTJ_INT64, "GxB_MIN_SECONDI_INT64") ; - - GETNAM2 (GxB_MAX_FIRSTJ_INT32, "GxB_MAX_SECONDI_INT32") ; - GETNAM2 (GxB_MAX_FIRSTJ_INT64, "GxB_MAX_SECONDI_INT64") ; - - GETNAM2 (GxB_ANY_FIRSTJ_INT32, "GxB_ANY_SECONDI_INT32") ; - GETNAM2 (GxB_ANY_FIRSTJ_INT64, "GxB_ANY_SECONDI_INT64") ; - - GETNAM2 (GxB_PLUS_FIRSTJ_INT32, "GxB_PLUS_SECONDI_INT32") ; - GETNAM2 (GxB_PLUS_FIRSTJ_INT64, "GxB_PLUS_SECONDI_INT64") ; - - GETNAM2 (GxB_TIMES_FIRSTJ_INT32, "GxB_TIMES_SECONDI_INT32") ; - GETNAM2 (GxB_TIMES_FIRSTJ_INT64, "GxB_TIMES_SECONDI_INT64") ; - - GETNAM2 (GxB_MIN_FIRSTJ1_INT32, "GxB_MIN_SECONDI1_INT32") ; - GETNAM2 (GxB_MIN_FIRSTJ1_INT64, "GxB_MIN_SECONDI1_INT64") ; - - GETNAM2 (GxB_MAX_FIRSTJ1_INT32, "GxB_MAX_SECONDI1_INT32") ; - GETNAM2 (GxB_MAX_FIRSTJ1_INT64, "GxB_MAX_SECONDI1_INT64") ; - - GETNAM2 (GxB_ANY_FIRSTJ1_INT32, "GxB_ANY_SECONDI1_INT32") ; - GETNAM2 (GxB_ANY_FIRSTJ1_INT64, "GxB_ANY_SECONDI1_INT64") ; - - GETNAM2 (GxB_PLUS_FIRSTJ1_INT32, "GxB_PLUS_SECONDI1_INT32") ; - GETNAM2 (GxB_PLUS_FIRSTJ1_INT64, "GxB_PLUS_SECONDI1_INT64") ; - - GETNAM2 (GxB_TIMES_FIRSTJ1_INT32, "GxB_TIMES_SECONDI1_INT32") ; - GETNAM2 (GxB_TIMES_FIRSTJ1_INT64, "GxB_TIMES_SECONDI1_INT64") ; - - GETNAME (GxB_MIN_SECONDI_INT32) ; - GETNAME (GxB_MIN_SECONDI_INT64) ; - - GETNAME (GxB_MAX_SECONDI_INT32) ; - GETNAME (GxB_MAX_SECONDI_INT64) ; - - GETNAME (GxB_ANY_SECONDI_INT32) ; - GETNAME (GxB_ANY_SECONDI_INT64) ; - - GETNAME (GxB_PLUS_SECONDI_INT32) ; - GETNAME (GxB_PLUS_SECONDI_INT64) ; - - GETNAME (GxB_TIMES_SECONDI_INT32) ; - GETNAME (GxB_TIMES_SECONDI_INT64) ; - - GETNAME (GxB_MIN_SECONDI1_INT32) ; - GETNAME (GxB_MIN_SECONDI1_INT64) ; - - GETNAME (GxB_MAX_SECONDI1_INT32) ; - GETNAME (GxB_MAX_SECONDI1_INT64) ; - - GETNAME (GxB_ANY_SECONDI1_INT32) ; - GETNAME (GxB_ANY_SECONDI1_INT64) ; - - GETNAME (GxB_PLUS_SECONDI1_INT32) ; - GETNAME (GxB_PLUS_SECONDI1_INT64) ; - - GETNAME (GxB_TIMES_SECONDI1_INT32) ; - GETNAME (GxB_TIMES_SECONDI1_INT64) ; - - GETNAME (GxB_MIN_SECONDJ_INT32) ; - GETNAME (GxB_MIN_SECONDJ_INT64) ; - - GETNAME (GxB_MAX_SECONDJ_INT32) ; - GETNAME (GxB_MAX_SECONDJ_INT64) ; - - GETNAME (GxB_ANY_SECONDJ_INT32) ; - GETNAME (GxB_ANY_SECONDJ_INT64) ; - - GETNAME (GxB_PLUS_SECONDJ_INT32) ; - GETNAME (GxB_PLUS_SECONDJ_INT64) ; - - GETNAME (GxB_TIMES_SECONDJ_INT32) ; - GETNAME (GxB_TIMES_SECONDJ_INT64) ; - - GETNAME (GxB_MIN_SECONDJ1_INT32) ; - GETNAME (GxB_MIN_SECONDJ1_INT64) ; - - GETNAME (GxB_MAX_SECONDJ1_INT32) ; - GETNAME (GxB_MAX_SECONDJ1_INT64) ; - - GETNAME (GxB_ANY_SECONDJ1_INT32) ; - GETNAME (GxB_ANY_SECONDJ1_INT64) ; - - GETNAME (GxB_PLUS_SECONDJ1_INT32) ; - GETNAME (GxB_PLUS_SECONDJ1_INT64) ; - - GETNAME (GxB_TIMES_SECONDJ1_INT32) ; - GETNAME (GxB_TIMES_SECONDJ1_INT64) ; - - //-------------------------------------------------------------------------- - // other methods - //-------------------------------------------------------------------------- - - OK (GrB_Semiring_get_INT32_(GrB_PLUS_TIMES_SEMIRING_FP32, &code, - GrB_INPUT1TYPE_CODE)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_Semiring_get_SIZE_(GrB_PLUS_TIMES_SEMIRING_FP32, &size, - GrB_INPUT1TYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - - OK (GrB_Semiring_get_String_(GrB_PLUS_TIMES_SEMIRING_FP32, name, - GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GrB_Semiring_get_SIZE_(GrB_MAX_PLUS_SEMIRING_INT32, &size, - GrB_INPUT2TYPE_STRING)) ; - CHECK (size == strlen ("GrB_INT32") + 1) ; - - OK (GrB_Semiring_get_String_(GrB_MAX_PLUS_SEMIRING_INT32, name, - GrB_INPUT2TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_INT32")) ; - - OK (GrB_Semiring_get_INT32_(GrB_PLUS_TIMES_SEMIRING_FP64, &code, - GrB_OUTPUTTYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_Semiring_get_SIZE_(GrB_PLUS_TIMES_SEMIRING_FP64, &size, - GrB_OUTPUTTYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP64") + 1) ; - - OK (GrB_Semiring_get_String_(GrB_PLUS_TIMES_SEMIRING_FP64, name, - GrB_OUTPUTTYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP64")) ; - - OK (GrB_Semiring_get_Scalar_(GrB_PLUS_TIMES_SEMIRING_FP32, s_int32, - GrB_INPUT1TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_FP32_CODE) ; - - OK (GrB_Semiring_get_Scalar_(GrB_LOR_LAND_SEMIRING_BOOL, s_int32, - GrB_OUTPUTTYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - OK (GrB_Semiring_get_INT32_(GrB_PLUS_TIMES_SEMIRING_FP64, &code, - GrB_INPUT2TYPE_CODE)) ; - CHECK (code == GrB_FP64_CODE) ; - - OK (GrB_Semiring_get_Scalar_(GrB_LOR_LAND_SEMIRING_BOOL, s_int32, - GrB_INPUT2TYPE_CODE)) ; - OK (GrB_Scalar_extractElement_INT32_(&code, s_int32)) ; - CHECK (code == GrB_BOOL_CODE) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Semiring_get_INT32_(GrB_LOR_LAND_SEMIRING_BOOL, &code, - GrB_NAME)) ; - ERR (GrB_Semiring_get_String_(GrB_PLUS_TIMES_SEMIRING_INT32, name, - 999)) ; - - ERR (GrB_Semiring_get_VOID_(GrB_LOR_LAND_SEMIRING_BOOL, nothing, 0)) ; - - OK (GrB_BinaryOp_new (×, mytimes, GrB_FP32, GrB_FP32, GrB_FP32)) ; - OK (GrB_BinaryOp_set_String_(times, "mytimes", GrB_NAME)) ; - METHOD (GrB_BinaryOp_set_String (times, MYTIMES_DEFN, GxB_JIT_C_DEFINITION)) ; - - OK (GrB_BinaryOp_new (&add, myadd, GrB_FP32, GrB_FP32, GrB_FP32)) ; - OK (GrB_BinaryOp_set_String_(add, "myadd", GrB_NAME)) ; - METHOD (GrB_BinaryOp_set_String (add, MYADD_DEFN, GxB_JIT_C_DEFINITION)) ; - - OK (GrB_Monoid_new_FP32 (&monoid, add, (float) 0.0)) ; - OK (GrB_Monoid_get_SIZE_(monoid, &size, GrB_NAME)) ; - OK (GrB_Monoid_get_String_(monoid, name, GrB_NAME)) ; - printf ("\nuser monoid: [%s]:%d\n", name, size) ; - CHECK (MATCH (name, "")) ; - CHECK (size == 1) ; - OK (GxB_print (monoid, 3)) ; - - OK (GrB_Semiring_new (&semiring, monoid, times)) ; - - OK (GrB_Semiring_get_SIZE_(semiring, &size, GrB_INPUT1TYPE_STRING)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - OK (GrB_Semiring_get_String(semiring, name, GrB_INPUT1TYPE_STRING)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Semiring_get_SIZE_(semiring, &size, GrB_INPUT1TYPE_CODE)) ; - ERR (GrB_Semiring_set_String_(GrB_MAX_TIMES_SEMIRING_INT32, "stuff", - GrB_NAME)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Semiring_set_Scalar_(semiring, s_int32, 0)) ; - ERR (GrB_Semiring_set_INT32_(semiring, 0, 0)) ; - ERR (GrB_Semiring_set_VOID_(semiring, nothing, 0, 0)) ; - - OK (GrB_Semiring_get_String_(semiring, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - OK (GrB_Semiring_set_String_(semiring, "stuff", GrB_NAME)) ; - OK (GrB_Semiring_get_String_(semiring, name, GrB_NAME)) ; - CHECK (MATCH (name, "stuff")) ; - OK (GrB_Semiring_get_SIZE_(semiring, &size, GrB_NAME)) ; - CHECK (size == strlen (name) + 1) ; - OK (GxB_print (semiring, 3)) ; - - expected = GrB_ALREADY_SET ; - ERR (GrB_Semiring_set_String_(semiring, "another user name", GrB_NAME)) ; - printf (" test GrB_ALREADY_SET: ok\n") ; - - printf ("\nsemiring with terminal monoid:\n") ; - int32_t id_int32 ; - OK (GrB_Semiring_get_String_(GrB_MAX_TIMES_SEMIRING_INT32, - name, GrB_NAME)) ; - OK (GxB_Semiring_fprint (GrB_MAX_TIMES_SEMIRING_INT32, name, 3, NULL)) ; - OK (GrB_Monoid_get_Scalar_ (GrB_MAX_TIMES_SEMIRING_INT32, s_int32, - GxB_MONOID_IDENTITY)) ; - OK (GrB_Scalar_nvals (&nvals, s_int32)) ; - CHECK (nvals == 1) ; - OK (GrB_Scalar_extractElement_INT32_(&id_int32, s_int32)) ; - CHECK (id_int32 == INT32_MIN) ; - - int32_t term_int32 ; - OK (GrB_Monoid_get_Scalar_ (GrB_MAX_TIMES_SEMIRING_INT32, s_int32, - GxB_MONOID_TERMINAL)) ; - OK (GrB_Scalar_extractElement_INT32_(&term_int32, s_int32)) ; - CHECK (term_int32 == INT32_MAX) ; - - op = NULL ; - OK (GrB_Semiring_get_SIZE_ (semiring, &size, GxB_MONOID_OPERATOR)) ; - CHECK (size == sizeof (GrB_BinaryOp)) ; - OK (GrB_Semiring_get_VOID (semiring, (void *) (&op), GxB_MONOID_OPERATOR)) ; - CHECK (op == add) ; - OK (GrB_Semiring_get_VOID_ (GrB_PLUS_TIMES_SEMIRING_INT32, (void *) &op, - GxB_MONOID_OPERATOR)) ; - CHECK (op == GrB_PLUS_INT32) ; - - OK (GrB_Semiring_get_SIZE_ (semiring, &size, GxB_SEMIRING_MONOID)) ; - CHECK (size == sizeof (GrB_Monoid)) ; - - OK (GrB_Semiring_get_SIZE_ (semiring, &size, GxB_SEMIRING_MULTIPLY)) ; - CHECK (size == sizeof (GrB_BinaryOp)) ; - - OK (GrB_Semiring_get_VOID_ (semiring, (void *) (&mon), - GxB_SEMIRING_MONOID)) ; - CHECK (mon == monoid) ; - - OK (GrB_Semiring_get_VOID_ (semiring, (void *) (&op), - GxB_SEMIRING_MULTIPLY)) ; - CHECK (op == times) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&add) ; - GrB_free (×) ; - GrB_free (&monoid) ; - GrB_free (&semiring) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test32: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test33.c b/Test/GB_mex_test33.c deleted file mode 100644 index 00a459d468..0000000000 --- a/Test/GB_mex_test33.c +++ /dev/null @@ -1,155 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test33: test GrB_get and GrB_set (context) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test33" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Matrix A = NULL ; - GrB_Vector v = NULL ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GxB_Context context = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GxB_Context get/set - //-------------------------------------------------------------------------- - - int32_t nthreads1 = 999, nthreads2 = 777 ; - GxB_get (GxB_NTHREADS, &nthreads1) ; - printf ("nthreads: %d\n", nthreads1) ; - - OK (GxB_Context_get_INT_ (GxB_CONTEXT_WORLD, &nthreads2, GxB_NTHREADS)) ; - printf ("nthreads: %d\n", nthreads2) ; - CHECK (nthreads1 == nthreads2) ; - - OK (GxB_Context_set_INT_ (GxB_CONTEXT_WORLD, 7, GxB_NTHREADS)) ; - OK (GxB_Context_get_INT_ (GxB_CONTEXT_WORLD, &nthreads2, GxB_NTHREADS)) ; - CHECK (nthreads2 == 7) ; - - OK (GxB_Global_Option_get (GxB_NTHREADS, &i)) ; - CHECK (i == 7) ; - - OK (GrB_Scalar_setElement_FP64 (s_int32, 31)) ; - OK (GxB_Context_set_Scalar_ (GxB_CONTEXT_WORLD, s_int32, GxB_NTHREADS)) ; - OK (GxB_Context_get_Scalar_ (GxB_CONTEXT_WORLD, s_fp64, GxB_NTHREADS)) ; - OK (GrB_Scalar_extractElement_FP64 (&dvalue, s_fp64)) ; - CHECK (dvalue == 31) ; - - GxB_set (GxB_NTHREADS, nthreads1) ; - - int32_t gpu ; - OK (GxB_Context_get_INT_ (GxB_CONTEXT_WORLD, &gpu, GxB_GPU_ID)) ; - CHECK (gpu == -1) ; - - gpu = 4 ; - OK (GxB_Context_set_INT_ (GxB_CONTEXT_WORLD, 3, GxB_GPU_ID)) ; - OK (GxB_Context_get_INT_ (GxB_CONTEXT_WORLD, &gpu, GxB_GPU_ID)) ; - CHECK (gpu == -1) ; - - OK (GxB_Context_set_Scalar_ (GxB_CONTEXT_WORLD, s_int32, GxB_GPU_ID)) ; - OK (GxB_Context_get_Scalar_ (GxB_CONTEXT_WORLD, s_fp64, GxB_GPU_ID)) ; - OK (GrB_Scalar_extractElement_FP64 (&dvalue, s_fp64)) ; - CHECK (dvalue == -1) ; - - double chunk ; - OK (GxB_Context_get_Scalar_ (GxB_CONTEXT_WORLD, s_fp64, GxB_CHUNK)) ; - OK (GrB_Scalar_extractElement_FP64 (&chunk, s_fp64)) ; - printf ("chunk: %g\n", chunk) ; - - OK (GrB_Scalar_setElement_FP64 (s_fp64, 2048)) ; - OK (GxB_Context_set_Scalar_ (GxB_CONTEXT_WORLD, s_fp64, GxB_CHUNK)) ; - OK (GxB_Context_get_Scalar_ (GxB_CONTEXT_WORLD, s_fp32, GxB_CHUNK)) ; - OK (GrB_Scalar_extractElement_FP32 (&fvalue, s_fp32)) ; - CHECK (fvalue == 2048) ; - printf ("new chunk: %g\n", fvalue) ; - - OK (GxB_Context_get_SIZE_ (GxB_CONTEXT_WORLD, &size, GrB_NAME)) ; - CHECK (size == GxB_MAX_NAME_LEN) ; - OK (GxB_Context_get_String_ (GxB_CONTEXT_WORLD, name, GrB_NAME)) ; - printf ("name of world [%s]\n", name) ; - CHECK (MATCH (name, "GxB_CONTEXT_WORLD")) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Context_set_String_ (GxB_CONTEXT_WORLD, "newname", GrB_NAME)) ; - OK (GxB_Context_get_String_ (GxB_CONTEXT_WORLD, name, GrB_NAME)) ; - CHECK (MATCH (name, "GxB_CONTEXT_WORLD")) ; - - ERR (GxB_Context_get_SIZE_ (GxB_CONTEXT_WORLD, &size, GxB_FORMAT)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Context_get_VOID_ (GxB_CONTEXT_WORLD, nothing, 0)) ; - ERR (GxB_Context_set_VOID_ (GxB_CONTEXT_WORLD, nothing, 0, 0)) ; - ERR (GxB_Context_get_String_ (GxB_CONTEXT_WORLD, name, 999)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Context_get_INT_ (GxB_CONTEXT_WORLD, &i, GrB_NAME)) ; - ERR (GxB_Context_get_Scalar_ (GxB_CONTEXT_WORLD, s_fp32, GrB_NAME)) ; - ERR (GxB_Context_set_INT_ (GxB_CONTEXT_WORLD, 7, GrB_NAME)) ; - ERR (GxB_Context_set_Scalar_ (GxB_CONTEXT_WORLD, s_fp64, GrB_NAME)) ; - - expected = GrB_EMPTY_OBJECT ; - OK (GrB_Scalar_clear (s_int32)) ; - ERR (GxB_Context_set_Scalar_ (GxB_CONTEXT_WORLD, s_int32, GxB_NTHREADS)) ; - - OK (GxB_Context_new (&context)) ; - OK (GxB_Context_get_String_ (context, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - OK (GxB_Context_set_String_ (context, "another_name", GrB_NAME)) ; - OK (GxB_Context_get_String_ (context, name, GrB_NAME)) ; - CHECK (MATCH (name, "another_name")) ; - OK (GxB_Context_get_SIZE_ (context, &size, GrB_NAME)) ; - CHECK (size == strlen (name) + 1) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&A) ; - GrB_free (&v) ; - GrB_free (&s) ; - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&context) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test33: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test34.c b/Test/GB_mex_test34.c deleted file mode 100644 index 4ec290378b..0000000000 --- a/Test/GB_mex_test34.c +++ /dev/null @@ -1,466 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test34: test GrB_get and GrB_set (descriptor) -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test34" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -#define DGET(desc,value,field) \ -{ \ - OK (GrB_Descriptor_get_INT32 (desc, &i, field)) ; \ - CHECK (i == value) ; \ - OK (GrB_Scalar_clear (s_int32)) ; \ - OK (GrB_Descriptor_get_Scalar (desc, s_int32, field)) ; \ - int32_t iscalar = -1 ; \ - OK (GrB_Scalar_extractElement_INT32 (&iscalar, s_int32)) ; \ - CHECK (iscalar == value) ; \ - OK (GrB_Descriptor_get_SIZE (desc, &size, GrB_NAME)) ; \ - CHECK (size == GxB_MAX_NAME_LEN) ; \ - OK (GrB_Descriptor_get_String (desc, name, GrB_NAME)) ; \ - CHECK (MATCH (name, #desc)) ; \ -} - -#define DSET(desc,value,field) \ -{ \ - OK (GrB_Descriptor_set_INT32 (desc, GrB_DEFAULT, field)) ; \ - OK (GrB_Descriptor_set_INT32 (desc, value, field)) ; \ - int32_t i2 ; \ - OK (GrB_Descriptor_get_INT32 (desc, &i2, field)) ; \ - CHECK (i2 == value) ; \ - OK (GrB_Descriptor_set_INT32 (desc, GrB_DEFAULT, field)) ; \ - OK (GrB_Scalar_setElement_INT32 (s_int32, value)) ; \ - OK (GrB_Descriptor_set_Scalar (desc, s_int32, field)) ; \ - int32_t i3 ; \ - OK (GrB_Descriptor_get_INT32 (desc, &i2, field)) ; \ - CHECK (i2 == value) ; \ -} - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Matrix A = NULL ; - GrB_Vector v = NULL ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_Descriptor desc = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size ; - char name [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GrB_Descriptor get/set - //-------------------------------------------------------------------------- - -#if 0 - - // OUTP MASK MASK INP0 INP1 - // structural complement - // =========== ============== ========== ======== ======== - -// GrB_NULL // - - - - - -GrB_DESC_T1 , // - - - - GrB_TRAN -GrB_DESC_T0 , // - - - GrB_TRAN - -GrB_DESC_T0T1 , // - - - GrB_TRAN GrB_TRAN - -GrB_DESC_C , // - - GrB_COMP - - -GrB_DESC_CT1 , // - - GrB_COMP - GrB_TRAN -GrB_DESC_CT0 , // - - GrB_COMP GrB_TRAN - -GrB_DESC_CT0T1 , // - - GrB_COMP GrB_TRAN GrB_TRAN - -GrB_DESC_S , // - GrB_STRUCTURE - - - -GrB_DESC_ST1 , // - GrB_STRUCTURE - - GrB_TRAN -GrB_DESC_ST0 , // - GrB_STRUCTURE - GrB_TRAN - -GrB_DESC_ST0T1 , // - GrB_STRUCTURE - GrB_TRAN GrB_TRAN - -GrB_DESC_SC , // - GrB_STRUCTURE GrB_COMP - - -GrB_DESC_SCT1 , // - GrB_STRUCTURE GrB_COMP - GrB_TRAN -GrB_DESC_SCT0 , // - GrB_STRUCTURE GrB_COMP GrB_TRAN - -GrB_DESC_SCT0T1 , // - GrB_STRUCTURE GrB_COMP GrB_TRAN GrB_TRAN - -GrB_DESC_R , // GrB_REPLACE - - - - -GrB_DESC_RT1 , // GrB_REPLACE - - - GrB_TRAN -GrB_DESC_RT0 , // GrB_REPLACE - - GrB_TRAN - -GrB_DESC_RT0T1 , // GrB_REPLACE - - GrB_TRAN GrB_TRAN - -GrB_DESC_RC , // GrB_REPLACE - GrB_COMP - - -GrB_DESC_RCT1 , // GrB_REPLACE - GrB_COMP - GrB_TRAN -GrB_DESC_RCT0 , // GrB_REPLACE - GrB_COMP GrB_TRAN - -GrB_DESC_RCT0T1 , // GrB_REPLACE - GrB_COMP GrB_TRAN GrB_TRAN - -GrB_DESC_RS , // GrB_REPLACE GrB_STRUCTURE - - - -GrB_DESC_RST1 , // GrB_REPLACE GrB_STRUCTURE - - GrB_TRAN -GrB_DESC_RST0 , // GrB_REPLACE GrB_STRUCTURE - GrB_TRAN - -GrB_DESC_RST0T1 , // GrB_REPLACE GrB_STRUCTURE - GrB_TRAN GrB_TRAN - -GrB_DESC_RSC , // GrB_REPLACE GrB_STRUCTURE GrB_COMP - - -GrB_DESC_RSCT1 , // GrB_REPLACE GrB_STRUCTURE GrB_COMP - GrB_TRAN -GrB_DESC_RSCT0 , // GrB_REPLACE GrB_STRUCTURE GrB_COMP GrB_TRAN - -GrB_DESC_RSCT0T1 ; // GrB_REPLACE GrB_STRUCTURE GrB_COMP GrB_TRAN GrB_TRAN - -#endif - - DGET (GrB_NULL , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_T1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_T0 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_T0T1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_C , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_CT1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_CT0 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_CT0T1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_S , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_ST1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_ST0 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_ST0T1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_SC , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_SCT1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_SCT0 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_SCT0T1 , GrB_DEFAULT, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_R , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RT1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RT0 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RT0T1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_RC , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RCT1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RCT0 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RCT0T1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_RS , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RST1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RST0 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RST0T1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - - DGET (GrB_DESC_RSC , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RSCT1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RSCT0 , GrB_REPLACE, GrB_OUTP_FIELD) ; - DGET (GrB_DESC_RSCT0T1 , GrB_REPLACE, GrB_OUTP_FIELD) ; - - - - DGET (GrB_NULL , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_T1 , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_T0 , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_T0T1 , GrB_DEFAULT, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_C , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_CT1 , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_CT0 , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_CT0T1 , GrB_COMP, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_S , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_ST1 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_ST0 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_ST0T1 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_SC , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_SCT1 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_SCT0 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_SCT0T1 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_R , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RT1 , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RT0 , GrB_DEFAULT, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RT0T1 , GrB_DEFAULT, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_RC , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RCT1 , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RCT0 , GrB_COMP, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RCT0T1 , GrB_COMP, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_RS , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RST1 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RST0 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RST0T1 , GrB_STRUCTURE, GrB_MASK_FIELD) ; - - DGET (GrB_DESC_RSC , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RSCT1 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RSCT0 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - DGET (GrB_DESC_RSCT0T1 , GrB_COMP_STRUCTURE, GrB_MASK_FIELD) ; - - - - DGET (GrB_NULL , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_T1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_T0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_T0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_C , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_CT1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_CT0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_CT0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_S , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_ST1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_ST0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_ST0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_SC , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_SCT1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_SCT0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_SCT0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_R , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RT1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RT0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_RT0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_RC , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RCT1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RCT0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_RCT0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_RS , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RST1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RST0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_RST0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - DGET (GrB_DESC_RSC , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RSCT1 , GrB_DEFAULT, GrB_INP0_FIELD) ; - DGET (GrB_DESC_RSCT0 , GrB_TRAN , GrB_INP0_FIELD) ; - DGET (GrB_DESC_RSCT0T1 , GrB_TRAN , GrB_INP0_FIELD) ; - - - DGET (GrB_NULL , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_T1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_T0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_T0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_C , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_CT1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_CT0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_CT0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_S , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_ST1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_ST0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_ST0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_SC , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_SCT1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_SCT0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_SCT0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_R , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RT1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_RT0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RT0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_RC , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RCT1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_RCT0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RCT0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_RS , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RST1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_RST0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RST0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - DGET (GrB_DESC_RSC , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RSCT1 , GrB_TRAN , GrB_INP1_FIELD) ; - DGET (GrB_DESC_RSCT0 , GrB_DEFAULT, GrB_INP1_FIELD) ; - DGET (GrB_DESC_RSCT0T1 , GrB_TRAN , GrB_INP1_FIELD) ; - - - for (int field = GxB_AxB_METHOD ; field <= GxB_IMPORT ; field++) - { - DGET (GrB_NULL , GrB_DEFAULT, field) ; - DGET (GrB_DESC_T1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_T0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_T0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_C , GrB_DEFAULT, field) ; - DGET (GrB_DESC_CT1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_CT0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_CT0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_S , GrB_DEFAULT, field) ; - DGET (GrB_DESC_ST1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_ST0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_ST0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_SC , GrB_DEFAULT, field) ; - DGET (GrB_DESC_SCT1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_SCT0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_SCT0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_R , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RT1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RT0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RT0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_RC , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RCT1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RCT0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RCT0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_RS , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RST1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RST0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RST0T1 , GrB_DEFAULT, field) ; - - DGET (GrB_DESC_RSC , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RSCT1 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RSCT0 , GrB_DEFAULT, field) ; - DGET (GrB_DESC_RSCT0T1 , GrB_DEFAULT, field) ; - } - - OK (GrB_Descriptor_get_String (NULL, name, GrB_NAME)) ; - CHECK (MATCH (name, "GrB_NULL")) ; - - //-------------------------------------------------------------------------- - - OK (GrB_Descriptor_new (&desc)) ; - - DSET (desc, GrB_REPLACE, GrB_OUTP_FIELD) ; - DSET (desc, GrB_DEFAULT, GrB_OUTP_FIELD) ; - - DSET (desc, GrB_REPLACE, GrB_OUTP) ; - DSET (desc, GrB_DEFAULT, GrB_OUTP) ; - - DSET (desc, GrB_COMP , GrB_MASK_FIELD) ; - DSET (desc, GrB_STRUCTURE , GrB_MASK_FIELD) ; - DSET (desc, GrB_COMP_STRUCTURE , GrB_MASK_FIELD) ; - DSET (desc, GrB_DEFAULT , GrB_MASK_FIELD) ; - - DSET (desc, GrB_COMP , GrB_MASK) ; - DSET (desc, GrB_STRUCTURE , GrB_MASK) ; - DSET (desc, GrB_COMP_STRUCTURE , GrB_MASK) ; - DSET (desc, GrB_DEFAULT , GrB_MASK) ; - - DSET (desc, GrB_TRAN , GrB_INP0) ; - DSET (desc, GrB_DEFAULT , GrB_INP0) ; - - DSET (desc, GrB_TRAN , GrB_INP1) ; - DSET (desc, GrB_DEFAULT , GrB_INP1) ; - - DSET (desc, GxB_AxB_GUSTAVSON , GxB_AxB_METHOD) ; - DSET (desc, GxB_AxB_DOT , GxB_AxB_METHOD) ; - DSET (desc, GxB_AxB_HASH , GxB_AxB_METHOD) ; - DSET (desc, GxB_AxB_SAXPY , GxB_AxB_METHOD) ; - DSET (desc, GrB_DEFAULT , GxB_AxB_METHOD) ; - - DSET (desc, 1 , GxB_SORT) ; - DSET (desc, GrB_DEFAULT , GxB_SORT) ; - - DSET (desc, 1 , GxB_COMPRESSION) ; - DSET (desc, GrB_DEFAULT , GxB_COMPRESSION) ; - - DSET (desc, GxB_FAST_IMPORT , GxB_IMPORT) ; - DSET (desc, GxB_SECURE_IMPORT , GxB_IMPORT) ; - DSET (desc, GrB_DEFAULT , GxB_IMPORT) ; - - OK (GrB_Descriptor_get_String_ (desc, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - OK (GrB_Descriptor_set_String_ (desc, "user_name", GrB_NAME)) ; - OK (GrB_Descriptor_get_String_ (desc, name, GrB_NAME)) ; - printf ("got name: [%s]\n", name) ; - CHECK (MATCH (name, "user_name")) ; - OK (GrB_Descriptor_set_String_ (desc, "", GrB_NAME)) ; - OK (GrB_Descriptor_get_String_ (desc, name, GrB_NAME)) ; - printf ("got name: [%s]\n", name) ; - CHECK (MATCH (name, "")) ; - METHOD (GrB_Descriptor_set_String_ (desc, "yet another name", GrB_NAME)) ; - OK (GrB_Descriptor_get_String_ (desc, name, GrB_NAME)) ; - printf ("got name: [%s]\n", name) ; - CHECK (MATCH (name, "yet another name")) ; - OK (GrB_Descriptor_get_SIZE_ (desc, &size, GrB_NAME)) ; - CHECK (size == strlen (name) + 1) ; - - //-------------------------------------------------------------------------- - // error handling - //-------------------------------------------------------------------------- - - printf ("\nerror handling:\n") ; - expected = GrB_INVALID_VALUE ; - ERR (GrB_Descriptor_get_VOID_ (GrB_DESC_T1, nothing, GrB_NAME)) ; - ERR (GrB_Descriptor_set_VOID_ (desc, nothing, 0, 0)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Descriptor_get_INT32_ (GrB_DESC_T1, &i, GrB_NAME)) ; - ERR (GrB_Descriptor_set_INT32_ (GrB_DESC_T1, GrB_REPLACE, GrB_OUTP)) ; - ERR (GrB_Descriptor_set_INT32 (NULL, GrB_REPLACE, GrB_OUTP)) ; - ERR (GrB_Descriptor_get_SIZE_ (GrB_DESC_T1, &size, GrB_OUTP)) ; - ERR (GrB_Descriptor_set_Scalar_ (GrB_DESC_T1, s_int32, GrB_MASK)) ; - ERR (GrB_Descriptor_set_Scalar (NULL, s_int32, GrB_MASK)) ; - ERR (GrB_Descriptor_set_INT32_ (desc, GrB_DEFAULT, GrB_NAME)) ; - ERR (GrB_Descriptor_set_String_ (GrB_DESC_T1, "newname", GrB_NAME)) ; - - char *err ; - ERR (GrB_Descriptor_set_INT32_ (desc, 999, GrB_OUTP)) ; - OK (GrB_Descriptor_error (&err, desc)) ; - printf ("error: %s\n\n", err) ; - - ERR (GrB_Descriptor_set_INT32_ (desc, 998, GrB_MASK)) ; - OK (GrB_Descriptor_error (&err, desc)) ; - printf ("error: %s\n\n", err) ; - - ERR (GrB_Descriptor_set_INT32_ (desc, 997, GrB_INP0)) ; - OK (GrB_Descriptor_error (&err, desc)) ; - printf ("error: %s\n\n", err) ; - - ERR (GrB_Descriptor_set_INT32_ (desc, 996, GrB_INP1)) ; - OK (GrB_Descriptor_error (&err, desc)) ; - printf ("error: %s\n\n", err) ; - - ERR (GrB_Descriptor_set_INT32_ (desc, 995, GxB_AxB_METHOD)) ; - OK (GrB_Descriptor_error (&err, desc)) ; - printf ("error: %s\n\n", err) ; - - expected = GrB_EMPTY_OBJECT ; - OK (GrB_Scalar_clear (s_int32)) ; - ERR (GrB_Descriptor_set_Scalar_ (desc, s_int32, GrB_MASK)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Descriptor_set_VOID_ (desc, nothing, 0, 0)) ; - ERR (GrB_Descriptor_get_VOID_ (desc, nothing, 0)) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&A) ; - GrB_free (&v) ; - GrB_free (&s) ; - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&desc) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test34: all tests passed\n\n") ; -} - diff --git a/Test/GB_mex_test35.c b/Test/GB_mex_test35.c deleted file mode 100644 index 1b7807581c..0000000000 --- a/Test/GB_mex_test35.c +++ /dev/null @@ -1,316 +0,0 @@ -//------------------------------------------------------------------------------ -// GB_mex_test35: test GrB_get for a serialized blob -//------------------------------------------------------------------------------ - -// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -//------------------------------------------------------------------------------ - -#include "GB_mex.h" -#include "GB_mex_errors.h" - -#define USAGE "GB_mex_test35" - -#define FREE_ALL ; -#define GET_DEEP_COPY ; -#define FREE_DEEP_COPY ; - -typedef struct { int32_t stuff ; } mytype ; -#define MYTYPE_DEFN \ -"typedef struct { int32_t stuff ; } mytype ;" - -void mexFunction -( - int nargout, - mxArray *pargout [ ], - int nargin, - const mxArray *pargin [ ] -) -{ - - //-------------------------------------------------------------------------- - // startup GraphBLAS - //-------------------------------------------------------------------------- - - GrB_Info info, expected ; - bool malloc_debug = GB_mx_get_global (true) ; - GrB_Matrix A = NULL ; - GrB_Scalar s = NULL, s_fp64 = NULL, s_int32 = NULL, s_fp32 = NULL ; - GrB_Type type = NULL ; - uint8_t stuff [256] ; - void *nothing = stuff ; - size_t size, blob_size = 0 ; - char name [256] ; - char defn [2048] ; - int32_t code, i ; - float fvalue ; - double dvalue ; - void *blob = NULL ; - - OK (GrB_Scalar_new (&s_fp64, GrB_FP64)) ; - OK (GrB_Scalar_new (&s_fp32, GrB_FP32)) ; - OK (GrB_Scalar_new (&s_int32, GrB_INT32)) ; - - //-------------------------------------------------------------------------- - // GxB_Serialized_get - //-------------------------------------------------------------------------- - - OK (GrB_Matrix_new (&A, GrB_FP32, 5, 5)) ; - OK (GrB_Matrix_setElement (A, 0, 0, 1)) ; - OK (GrB_Matrix_wait (A, GrB_MATERIALIZE)) ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Serialized_get_VOID_(blob, nothing, 0, blob_size)) ; - - OK (GxB_Serialized_get_SIZE_(blob, &size, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - OK (GxB_Serialized_get_String_(blob, name, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GxB_Serialized_get_SIZE_(blob, &size, GxB_JIT_C_NAME, blob_size)) ; - CHECK (size == strlen ("float") + 1) ; - OK (GxB_Serialized_get_String_(blob, name, GxB_JIT_C_NAME, blob_size)) ; - CHECK (MATCH (name, "float")) ; - - OK (GxB_Serialized_get_String_(blob, name, GrB_NAME, blob_size)) ; - CHECK (MATCH (name, "")) ; - - OK (GxB_Serialized_get_String_(blob, name, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - - OK (GxB_Serialized_get_SIZE_(blob, &size, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - - OK (GxB_Serialized_get_INT32_(blob, &code, GrB_ELTYPE_CODE, blob_size)) ; - CHECK (code == GrB_FP32_CODE) ; - - i = -1 ; - OK (GxB_Serialized_get_Scalar_(blob, s_int32, GrB_ELTYPE_CODE, blob_size)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_FP32_CODE) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GrB_STORAGE_ORIENTATION_HINT, - blob_size)) ; - printf ("blob storage: %d\n", i) ; - CHECK (i == GrB_COLMAJOR) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_FORMAT, blob_size)) ; - printf ("blob storage: %d\n", i) ; - CHECK (i == GxB_BY_COL) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_SPARSITY_CONTROL, blob_size)) ; - printf ("blob sparsity control: %d\n", i) ; - CHECK (i == GxB_AUTO_SPARSITY) ; - - OK (GrB_assign (A, NULL, NULL, 1, GrB_ALL, 5, GrB_ALL, 5, NULL)) ; - OK (GrB_Matrix_wait (A, GrB_MATERIALIZE)) ; - - OK (GrB_Matrix_get_String_ (A, name, GxB_JIT_C_NAME)) ; - CHECK (MATCH (name, "float")) ; - - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_NAME)) ; - CHECK (size == 1) ; - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - CHECK (MATCH (name, "")) ; - - OK (GrB_Matrix_set_String_(A, "A matrix", GrB_NAME)) ; - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - CHECK (MATCH (name, "A matrix")) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_SPARSITY_STATUS, blob_size)) ; - printf ("blob sparsity status: %d\n", i) ; - CHECK (i == GxB_FULL) ; - - OK (GxB_Serialized_get_String_ (blob, name, GrB_NAME, blob_size)) ; - printf ("name: [%s]\n", name) ; - CHECK (MATCH (name, "A matrix")) ; - OK (GxB_Serialized_get_String_ (blob, &size, GrB_NAME, blob_size)) ; - CHECK (size == strlen ("A matrix") + 1) ; - - OK (GxB_Serialized_get_String_ (blob, name, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (MATCH (name, "GrB_FP32")) ; - OK (GxB_Serialized_get_String_(blob, &size, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (size == strlen ("GrB_FP32") + 1) ; - - OK (GxB_Serialized_get_String_ (blob, name, GxB_JIT_C_NAME, blob_size)) ; - CHECK (MATCH (name, "float")) ; - OK (GxB_Serialized_get_String_ (blob, &size, GxB_JIT_C_NAME, blob_size)) ; - CHECK (size == strlen ("float") + 1) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Serialized_get_INT32_(blob, &i, 0, blob_size)) ; - ERR (GxB_Serialized_get_SIZE_(blob, &size, 0, blob_size)) ; - - fvalue = -1 ; - OK (GxB_Serialized_get_Scalar_(blob, s_fp32, GxB_BITMAP_SWITCH, - blob_size)) ; - OK (GrB_Scalar_extractElement_FP32_(&fvalue, s_fp32)) ; - printf ("blob bitmap switch: %g\n", fvalue) ; - CHECK (abs (fvalue - 0.04) < 1e-6) ; - - OK (GrB_Matrix_set_INT32_(A, GxB_BITMAP, GxB_SPARSITY_CONTROL)) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_String_(A, name, GxB_JIT_C_NAME)) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_SPARSITY_STATUS, blob_size)) ; - printf ("blob sparsity status: %d\n", i) ; - CHECK (i == GxB_BITMAP) ; - - OK (GrB_Scalar_setElement_FP32_(s_fp32, 0.25)) ; - OK (GrB_Matrix_set_Scalar_(A, s_fp32, GxB_HYPER_SWITCH)) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_Scalar_(blob, s_fp64, GxB_HYPER_SWITCH, blob_size)) ; - OK (GrB_Scalar_extractElement_FP64_(&dvalue, s_fp64)) ; - printf ("blob hyper switch: %g\n", dvalue) ; - CHECK (abs (dvalue - 0.25) < 1e-6) ; - - OK (GrB_Matrix_set_INT32_(A, GrB_ROWMAJOR, GrB_STORAGE_ORIENTATION_HINT)) ; - OK (GrB_Matrix_get_INT32_(A, &i, GrB_STORAGE_ORIENTATION_HINT)) ; - CHECK (i == GrB_ROWMAJOR) ; - OK (GrB_Matrix_get_INT32_(A, &i, GxB_FORMAT)) ; - CHECK (i == GxB_BY_ROW) ; - // GxB_print (A, 3) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_INT32_(blob, &i, GrB_STORAGE_ORIENTATION_HINT, - blob_size)) ; - CHECK (i == GrB_ROWMAJOR) ; - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_FORMAT, blob_size)) ; - CHECK (i == GxB_BY_ROW) ; - // GxB_print (A, 3) ; - - expected = GrB_INVALID_VALUE ; - ERR (GrB_Matrix_get_String_(A, defn, 999)) ; - ERR (GrB_Matrix_get_Scalar(A, s_int32, 999)) ; - - OK (GrB_Matrix_get_SIZE_(A, &size, GrB_NAME)) ; - CHECK (size == strlen ("A matrix") + 1) ; - - expected = GrB_INVALID_OBJECT ; - uint8_t *b = (uint8_t *) blob ; - ERR (GxB_Serialized_get_INT32_(blob, &i, GxB_FORMAT, 20)) ; - b [0]++ ; - ERR (GxB_Serialized_get_INT32_(blob, &i, GxB_FORMAT, blob_size)) ; - b [0]-- ; - OK (GxB_Serialized_get_INT32_(blob, &i, GxB_FORMAT, blob_size)) ; - CHECK (i == GxB_BY_ROW) ; - - OK (GxB_Serialized_get_Scalar_(blob, s_int32, GrB_STORAGE_ORIENTATION_HINT, - blob_size)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GrB_ROWMAJOR) ; - - OK (GxB_Serialized_get_Scalar_(blob, s_int32, GxB_FORMAT, blob_size)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GxB_BY_ROW) ; - - OK (GxB_Serialized_get_Scalar_(blob, s_int32, GxB_SPARSITY_CONTROL, - blob_size)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GxB_BITMAP) ; - - OK (GxB_Serialized_get_Scalar_(blob, s_int32, GxB_SPARSITY_STATUS, - blob_size)) ; - OK (GrB_Scalar_extractElement_INT32_(&i, s_int32)) ; - CHECK (i == GxB_BITMAP) ; - - expected = GrB_INVALID_VALUE ; - ERR (GxB_Serialized_get_Scalar_(blob, s_int32, GrB_NAME, blob_size)) ; - ERR (GxB_Serialized_get_Scalar_(blob, name, 9999, blob_size)) ; - - OK (GrB_Type_new (&type, sizeof (mytype))) ; - OK (GrB_Type_set_String_ (type, "mytype", GxB_JIT_C_NAME)) ; - OK (GrB_Type_set_String_ (type, MYTYPE_DEFN, GxB_JIT_C_DEFINITION)) ; - GrB_free (&A) ; - - int32_t one = 1 ; - OK (GrB_Matrix_new (&A, type, 5, 5)) ; - OK (GrB_Matrix_setElement (A, (void *) &one, 0, 0)) ; - OK (GrB_Matrix_wait (A, GrB_MATERIALIZE)) ; - OK (GxB_print (A, 3)) ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_String_(blob, name, GrB_NAME, blob_size)) ; - CHECK (MATCH (name, "")) ; - - OK (GxB_Serialized_get_String_(blob, name, GxB_JIT_C_NAME, blob_size)) ; - CHECK (MATCH (name, "mytype")) ; - - OK (GxB_Serialized_get_String_(blob, name, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (MATCH (name, "")) ; - - GrB_free (&A) ; - GrB_free (&type) ; - OK (GrB_Type_new (&type, sizeof (mytype))) ; - OK (GrB_Matrix_new (&A, type, 50, 50)) ; - OK (GrB_Matrix_setElement (A, (void *) &one, 0, 0)) ; - OK (GrB_Matrix_wait (A, GrB_MATERIALIZE)) ; - OK (GrB_Matrix_set_INT32_(A, GxB_HYPERSPARSE, GxB_SPARSITY_CONTROL)) ; - - OK (GrB_Matrix_set_String_(A, "A hyper", GrB_NAME)) ; - OK (GrB_Matrix_get_String_(A, name, GrB_NAME)) ; - printf ("name [%s]\n", name) ; - CHECK (MATCH (name, "A hyper")) ; - GxB_print (A, 3) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_String_(blob, name, GxB_JIT_C_NAME, blob_size)) ; - CHECK (MATCH (name, "")) ; - OK (GxB_Serialized_get_String_(blob, name, GrB_NAME, blob_size)) ; - printf ("name [%s]\n", name) ; - CHECK (MATCH (name, "A hyper")) ; - - OK (GrB_Type_set_String_ (type, "mytype", GxB_JIT_C_NAME)) ; - OK (GrB_Type_set_String_ (type, "my type", GrB_NAME)) ; - - // free the blob and recreate it - mxFree (blob) ; blob = NULL ; blob_size = 0 ; - OK (GxB_Matrix_serialize (&blob, &blob_size, A, NULL)) ; - - OK (GxB_Serialized_get_String_(blob, name, GxB_JIT_C_NAME, blob_size)) ; - CHECK (MATCH (name, "mytype")) ; - OK (GxB_Serialized_get_String_(blob, name, GrB_ELTYPE_STRING, blob_size)) ; - CHECK (MATCH (name, "my type")) ; - OK (GxB_Serialized_get_String_(blob, name, GrB_NAME, blob_size)) ; - printf ("name [%s]\n", name) ; - CHECK (MATCH (name, "A hyper")) ; - - //-------------------------------------------------------------------------- - // finalize GraphBLAS - //-------------------------------------------------------------------------- - - GrB_free (&A) ; - GrB_free (&s) ; - GrB_free (&s_fp64) ; - GrB_free (&s_fp32) ; - GrB_free (&s_int32) ; - GrB_free (&type) ; - if (blob != NULL) mxFree (blob) ; - GB_mx_put_global (true) ; - printf ("\nGB_mex_test35: all tests passed.\n\n") ; -} - diff --git a/Test/GB_mex_test5.c b/Test/GB_mex_test5.c index 7d48a17de0..a794b031ce 100644 --- a/Test/GB_mex_test5.c +++ b/Test/GB_mex_test5.c @@ -547,12 +547,20 @@ void mexFunction OK (GrB_IndexUnaryOp_wait_ (Banded, GrB_MATERIALIZE)) ; OK (GxB_IndexUnaryOp_fprint (Banded, "banded", 3, NULL)) ; +// #undef GrB_IndexUnaryOp_new +// #undef GrM_IndexUnaryOp_new +// OK (GRB (IndexUnaryOp_new) (&UpperBanded, +// (GxB_index_unary_function) upperbanded_idx, +// GrB_BOOL, GrB_INT64, GrB_INT64)) ; OK (GxB_IndexUnaryOp_new (&UpperBanded, (GxB_index_unary_function) upperbanded_idx, GrB_BOOL, GrB_INT64, GrB_INT64, "upperbanded_idx", UPPERBANDED_IDX_DEFN)) ; OK (GxB_IndexUnaryOp_fprint (UpperBanded, "upperbanded", 3, NULL)) ; +// OK (GRB (IndexUnaryOp_new) (&UpperBanded_int64, +// (GxB_index_unary_function) upperbanded_idx_int64, +// GrB_INT64, GrB_INT64, GrB_INT64)) ; OK (GxB_IndexUnaryOp_new (&UpperBanded_int64, (GxB_index_unary_function) upperbanded_idx_int64, GrB_INT64, GrB_INT64, GrB_INT64, @@ -1232,7 +1240,7 @@ void mexFunction expected = GrB_DOMAIN_MISMATCH ; printf ("(1)------------------------------------------------\n") ; - OK (GrB_IndexUnaryOp_new (&Gunk, + OK (GRB (IndexUnaryOp_new) (&Gunk, (GxB_index_unary_function) donothing, MyType, MyType, MyType)) ; ERR (GrB_Matrix_select_Scalar (A, NULL, NULL, Gunk, A, scalar, NULL)) ; OK (GrB_Matrix_error_ (&err, A)) ; @@ -1240,7 +1248,7 @@ void mexFunction OK (GrB_IndexUnaryOp_free_ (&Gunk)) ; printf ("(2)------------------------------------------------\n") ; - OK (GrB_IndexUnaryOp_new (&Gunk, + OK (GRB (IndexUnaryOp_new) (&Gunk, (GxB_index_unary_function) donothing, GrB_BOOL, MyType, MyType)) ; ERR (GrB_Matrix_select_Scalar (A, NULL, NULL, Gunk, A, scalar, NULL)) ; OK (GrB_Matrix_error_ (&err, A)) ; @@ -1248,7 +1256,7 @@ void mexFunction OK (GrB_IndexUnaryOp_free_ (&Gunk)) ; printf ("(3)------------------------------------------------\n") ; - OK (GrB_IndexUnaryOp_new (&Gunk, + OK (GRB (IndexUnaryOp_new) (&Gunk, (GxB_index_unary_function) donothing, GrB_BOOL, GrB_FP64, MyType)) ; ERR (GrB_Matrix_select_Scalar (A, NULL, NULL, Gunk, A, scalar, NULL)) ; OK (GrB_Matrix_error_ (&err, A)) ; @@ -1256,7 +1264,7 @@ void mexFunction OK (GrB_IndexUnaryOp_free_ (&Gunk)) ; printf ("(4)------------------------------------------------\n") ; - OK (GrB_IndexUnaryOp_new (&Gunk, + OK (GRB (IndexUnaryOp_new) (&Gunk, (GxB_index_unary_function) donothing, MyType, GrB_FP64, GrB_FP64)) ; ERR (GrB_Matrix_select_Scalar (A, NULL, NULL, Gunk, A, scalar, NULL)) ; OK (GrB_Matrix_error_ (&err, A)) ; diff --git a/Test/GB_mex_test7.c b/Test/GB_mex_test7.c index cffd16f7aa..c9340ffe46 100644 --- a/Test/GB_mex_test7.c +++ b/Test/GB_mex_test7.c @@ -29,7 +29,6 @@ void mexFunction GrB_Info info ; GrB_Matrix A = NULL, B = NULL, Y_mangled = NULL, Y = NULL, C1 = NULL, C2 = NULL ; - GrB_Scalar s = NULL ; //-------------------------------------------------------------------------- // startup GraphBLAS @@ -42,15 +41,6 @@ void mexFunction // matrix check //-------------------------------------------------------------------------- - OK (GrB_Scalar_new (&s, GrB_INT64)) ; - OK (GrB_Scalar_setElement_INT64 (s, 0)) ; - OK (GrB_Global_set_Scalar (GrB_GLOBAL, s, GxB_HYPER_HASH)) ; - OK (GrB_Scalar_clear (s)) ; - OK (GrB_Global_get_Scalar (GrB_GLOBAL, s, GxB_HYPER_HASH)) ; - int64_t i = 1 ; - OK (GrB_Scalar_extractElement_INT64 (&i, s)) ; - CHECK (i == 0) ; - OK (GrB_Matrix_new (&A, GrB_FP64, 100, 100)) ; OK (GxB_Matrix_Option_set (A, GxB_SPARSITY_CONTROL, GxB_HYPERSPARSE)) ; OK (GrB_Matrix_setElement_FP64 (A, (double) 1.2, 0, 0)) ; @@ -296,13 +286,6 @@ void mexFunction // wrapup //-------------------------------------------------------------------------- - OK (GrB_Scalar_setElement_INT64 (s, 1024)) ; - OK (GrB_Global_set_Scalar (GrB_GLOBAL, s, GxB_HYPER_HASH)) ; - OK (GrB_Scalar_clear (s)) ; - OK (GrB_Global_get_Scalar (GrB_GLOBAL, s, GxB_HYPER_HASH)) ; - OK (GrB_Scalar_extractElement_INT64 (&i, s)) ; - CHECK (i == 1024) ; - OK (GrB_Scalar_free (&s)) ; GB_mx_put_global (true) ; printf ("\nGB_mex_test7: all tests passed\n\n") ; } diff --git a/Test/GB_mx_get_global.c b/Test/GB_mx_get_global.c index 2293698d51..374bab5a97 100644 --- a/Test/GB_mx_get_global.c +++ b/Test/GB_mx_get_global.c @@ -162,16 +162,6 @@ bool GB_mx_get_global // true if doing malloc_debug Complex_init (builtin_complex [0]) ; - //-------------------------------------------------------------------------- - // set the hyper_hash control to a small value - //-------------------------------------------------------------------------- - - GrB_Scalar s ; - GrB_Scalar_new (&s, GrB_INT64) ; - GrB_Scalar_setElement_INT64 (s, 8) ; - GrB_Global_set_Scalar (GrB_GLOBAL, s, GxB_HYPER_HASH) ; - GrB_Scalar_free (&s) ; - //-------------------------------------------------------------------------- // return malloc debug status //-------------------------------------------------------------------------- diff --git a/Test/GB_spec_op.m b/Test/GB_spec_op.m index 52b3f07dc3..8e31058d65 100644 --- a/Test/GB_spec_op.m +++ b/Test/GB_spec_op.m @@ -222,20 +222,20 @@ z = pow2 (x,y) ; case { 'fmod', 'rem' } - % see C11 fmod function - % the built-in rem differs slightly from the C11 fmod, + % see ANSI C11 fmod function + % the built-in rem differs slightly from the ANSI C11 fmod, % if x/y is O(eps) smaller than an integer. z = rem (x,y) ; case { 'remainder' } - % see C11 remainder function + % see ANSI C11 remainder function m = (y ~= 0 & x ~= y) ; z = nan (size (x), ztype) ; z (x == y) = 0 ; z (m) = x (m) - round (x (m) ./ y (m)) .* y (m) ; case { 'copysign' } - % see C11 copysign function + % see ANSI C11 copysign function z = abs (x) .* (2 * double (y >= 0) - 1) ; case { 'complex', 'cmplx' } diff --git a/Test/README.txt b/Test/README.txt index 9fa56d5242..e633aa6fdb 100644 --- a/Test/README.txt +++ b/Test/README.txt @@ -15,8 +15,8 @@ files to provide 'help GB_mex...' documentation. For a usable @GrB interface to GraphBLAS, see the GraphBLAS/GraphBLAS folder, and the @GrB object it supports. -Requirements: the mex command must use a C compiler supporting C11. -Microft Visual Studio does not support C11 so this test is not available +Requirements: the mex command must use a C compiler supporting ANSI C11. +Microft Visual Studio does not support ANSI C11 so this test is not available on Windows unless you use another compiler. To run the tests, use the following command in this directory, in the diff --git a/Test/logstat.m b/Test/logstat.m index 111e7898e5..73c0b1043f 100644 --- a/Test/logstat.m +++ b/Test/logstat.m @@ -142,13 +142,8 @@ function logstat (testscript, threads, jit_controls, factory_controls) fprintf (f, '%s %-11s %7.1f sec ', s, testscript, t) ; if (~isempty (strfind (pwd, 'Tcov'))) - global GraphBLAS_debug GraphBLAS_grbcov GraphBLAS_grbcovs ... - GraphBLAS_scripts GraphBLAS_times - GraphBLAS_grbcovs {end+1} = GraphBLAS_grbcov (1:n) ; - GraphBLAS_scripts {end+1} = testscript ; - GraphBLAS_times {end+1} = t ; - save grbstat GraphBLAS_debug GraphBLAS_grbcov GraphBLAS_grbcovs ... - GraphBLAS_scripts GraphBLAS_times + global GraphBLAS_debug GraphBLAS_grbcov + save grbstat GraphBLAS_debug GraphBLAS_grbcov testscript if (isempty (GraphBLAS_debug)) GraphBLAS_debug = false ; end diff --git a/Test/make.m b/Test/make.m index 99e1750314..63e4af6d52 100644 --- a/Test/make.m +++ b/Test/make.m @@ -11,7 +11,7 @@ function make (what) % % in -lgraphblas, use 'make all' if recompilation is needed % make all % make everything from scratch % -% GraphBLAS requires an C11 compliant compiler. On the Mac, clang 8.0 +% GraphBLAS requires an ANSI C11 compliant compiler. On the Mac, clang 8.0 % suffices. gcc should be version 4.9.3 or later % SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. diff --git a/Test/unused/test151.m b/Test/test151.m similarity index 100% rename from Test/unused/test151.m rename to Test/test151.m diff --git a/Test/unused/test156.m b/Test/test156.m similarity index 100% rename from Test/unused/test156.m rename to Test/test156.m diff --git a/Test/unused/test233.m b/Test/test233.m similarity index 100% rename from Test/unused/test233.m rename to Test/test233.m diff --git a/Test/unused/test266.m b/Test/test266.m similarity index 100% rename from Test/unused/test266.m rename to Test/test266.m diff --git a/Test/test269.m b/Test/test269.m deleted file mode 100644 index 7499482c72..0000000000 --- a/Test/test269.m +++ /dev/null @@ -1,10 +0,0 @@ -function test269 -%TEST269 test GrB_get / GrB_set for types, scalars, vectors, and matrices - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test26 ; -fprintf ('test269: all tests passed.\n') ; - - diff --git a/Test/test270.m b/Test/test270.m deleted file mode 100644 index ef47b3e291..0000000000 --- a/Test/test270.m +++ /dev/null @@ -1,10 +0,0 @@ -function test270 -%TEST270 test GrB_get / GrB_set for unary ops - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test27 ; -fprintf ('test270: all tests passed.\n') ; - - diff --git a/Test/test271.m b/Test/test271.m deleted file mode 100644 index d894881954..0000000000 --- a/Test/test271.m +++ /dev/null @@ -1,10 +0,0 @@ -function test271 -%TEST271 test GrB_get / GrB_set for binary ops - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test28 ; -fprintf ('test271: all tests passed.\n') ; - - diff --git a/Test/test273.m b/Test/test273.m deleted file mode 100644 index d6ab27b54d..0000000000 --- a/Test/test273.m +++ /dev/null @@ -1,9 +0,0 @@ -function test273 -%TEST273 test Global get/set - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test29 ; -fprintf ('test273 all tests passed.\n') ; - diff --git a/Test/test274.m b/Test/test274.m deleted file mode 100644 index 0e6ea92271..0000000000 --- a/Test/test274.m +++ /dev/null @@ -1,9 +0,0 @@ -function test274 -%TEST274 test get/set for IndexUnary ops - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test30 ; -fprintf ('test274 all tests passed.\n') ; - diff --git a/Test/test275.m b/Test/test275.m deleted file mode 100644 index b6238edafb..0000000000 --- a/Test/test275.m +++ /dev/null @@ -1,9 +0,0 @@ -function test275 -%TEST275 test get/set for monoids - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test31 ; -fprintf ('test275 all tests passed.\n') ; - diff --git a/Test/test276.m b/Test/test276.m deleted file mode 100644 index 832a5c1794..0000000000 --- a/Test/test276.m +++ /dev/null @@ -1,9 +0,0 @@ -function test276 -%TEST276 test get/set for semirings - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test32 ; -fprintf ('test276 all tests passed.\n') ; - diff --git a/Test/test277.m b/Test/test277.m deleted file mode 100644 index c84d58d820..0000000000 --- a/Test/test277.m +++ /dev/null @@ -1,9 +0,0 @@ -function test277 -%TEST277 test get/set for context - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test33 ; -fprintf ('test277 all tests passed.\n') ; - diff --git a/Test/test278.m b/Test/test278.m deleted file mode 100644 index b594294c13..0000000000 --- a/Test/test278.m +++ /dev/null @@ -1,9 +0,0 @@ -function test278 -%TEST278 test get/set for descriptor - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test34 ; -fprintf ('test278 all tests passed.\n') ; - diff --git a/Test/test279.m b/Test/test279.m deleted file mode 100644 index cb5a68c705..0000000000 --- a/Test/test279.m +++ /dev/null @@ -1,9 +0,0 @@ -function test279 -%TEST279 test get/set for serialized blob - -% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. -% SPDX-License-Identifier: Apache-2.0 - -GB_mex_test35 ; -fprintf ('test279 all tests passed.\n') ; - diff --git a/Test/unused/test_assign.m b/Test/test_assign.m similarity index 100% rename from Test/unused/test_assign.m rename to Test/test_assign.m diff --git a/Test/testall.m b/Test/testall.m index 17204c2a56..db7e9fe704 100644 --- a/Test/testall.m +++ b/Test/testall.m @@ -74,15 +74,12 @@ function testall (threads,longtests) f00 = {0,0} ; % factory off, off % run twice -j04 = {0,4} ; % JIT off, off j40 = {4,0} ; % JIT on, off f11 = {1,1} ; % factory on, on j4040 = {4,0,4,0} ; % JIT on, off, on , off f1100 = {1,1,0,0} ; % factory on, on , off, off -j040 = {0,4,0} ; % JIT off, on , off - j440 = {4,4,0} ; % JIT on, on , off f100 = {1,0,0} ; % factory on, off, off @@ -99,18 +96,7 @@ function testall (threads,longtests) % tests with high rates (over 100/sec) %---------------------------------------- -logstat ('test250' ,t, j44 , f10 ) ; % JIT tests, set/get, other tests -logstat ('test279' ,t, j0 , f1 ) ; % blob get/set -logstat ('test278' ,t, j0 , f1 ) ; % descriptor get/set -logstat ('test277' ,t, j0 , f1 ) ; % context get/set -logstat ('test276' ,t, j0 , f1 ) ; % semiring get/set -logstat ('test275' ,t, j0 , f1 ) ; % monoid get/set -logstat ('test274' ,t, j0 , f1 ) ; % index unary op get/set -logstat ('test273' ,t, j0 , f1 ) ; % global get/set -logstat ('test272' ,t, j0 , f1 ) ; % misc simple tests -logstat ('test271' ,t, j0 , f1 ) ; % binary op get/set -logstat ('test270' ,t, j0 , f1 ) ; % unary op get/set -logstat ('test269' ,t, j0 , f1 ) ; % get/set for type, scalar, vec, mtx +logstat ('test272' ,t, j0 , f1 ) ; % Context logstat ('test268' ,t, j4 , f1 ) ; % C=Z sparse masker jall = {4,3,2,1,4,2} ; fall = {1,1,1,1,0,0} ; @@ -126,6 +112,7 @@ function testall (threads,longtests) hack (2) = 0 ; GB_mex_hack (hack) ; % re-enable the Werk stack logstat ('test267' ,t, j40 , f00 ) ; % JIT error handling +logstat ('test266' ,t, j4 , f0 ) ; % JIT error handling logstat ('test265' ,t, j4 , f0 ) ; % reduce to scalar with user types logstat ('test264' ,t, j4 , f0 ) ; % enumify / macrofy tests logstat ('test263' ,t, j4 , f0 ) ; % JIT tests @@ -139,14 +126,13 @@ function testall (threads,longtests) logstat ('test254' ,t, j440, f100) ; %% mask types logstat ('test253' ,t, j4 , f1 ) ; % basic JIT tests logstat ('test252' ,t, j4 , f1 ) ; % basic tests -%ogstat ('test251' ,t, j404, f110) ; % dot4, dot2, with plus_pair -logstat ('test251' ,t, j44 , f10 ) ; % dot4, dot2, with plus_pair +logstat ('test251' ,t, j404, f110) ; % dot4, dot2, with plus_pair +logstat ('test250' ,t, j44 , f10 ) ; % JIT tests, set/get, other tests logstat ('test249' ,t, j4 , f1 ) ; % GxB_Context object logstat ('test247' ,t, j4 , f1 ) ; % GrB_mxm: fine Hash method logstat ('test246' ,t, j4 , f1 ) ; % GrB_mxm parallelism (slice_balanced) -%ogstat ('test01' ,t, j44 , f10 ) ; % error handling -logstat ('test01' ,t, j4 , f1 ) ; % error handling +logstat ('test01' ,t, j44 , f10 ) ; % error handling logstat ('test245' ,t, j40 , f11 ) ; % test complex row/col scale logstat ('test199' ,t, j4 , f1 ) ; % test dot2 with hypersparse logstat ('test83' ,t, j4 , f1 ) ; % GrB_assign with C_replace and empty J @@ -165,8 +151,7 @@ function testall (threads,longtests) logstat ('test256' ,t, j4 , f0 ) ; % JIT error handling logstat ('test186' ,t, j40 , f11 ) ; % saxpy, all formats (slice_balanced) logstat ('test186(0)' ,t, j4 , f1 ) ; % repeat with default slice_balanced -%ogstat ('test150' ,t, j40 , f10 ) ; %% mxm zombies, typecasting (dot3,saxpy) -logstat ('test150' ,t, j0 , f0 ) ; %% mxm zombies, typecasting (dot3,saxpy) +logstat ('test150' ,t, j40 , f10 ) ; %% mxm zombies, typecasting (dot3,saxpy) hack (2) = 0 ; GB_mex_hack (hack) ; % re-enable the Werk stack @@ -180,7 +165,7 @@ function testall (threads,longtests) logstat ('test179' ,t, j44 , f10 ) ; % test bitmap select logstat ('test174' ,t, j4 , f1 ) ; % test GrB_assign C=A logstat ('test155' ,t, j4 , f1 ) ; % test GrB_*_setElement, removeElement -%ogstat ('test156' ,t, j44 , f10 ) ; % test GrB_assign C=A with typecasting +logstat ('test156' ,t, j44 , f10 ) ; % test GrB_assign C=A with typecasting logstat ('test136' ,s, j4 , f1 ) ; % subassignment special cases logstat ('test02' ,t, j4 , f1 ) ; % matrix copy and dup tests logstat ('test109' ,t, j404, f110) ; % terminal monoid with user-defined type @@ -188,12 +173,10 @@ function testall (threads,longtests) logstat ('test207' ,t, j4 , f1 ) ; % test iso subref logstat ('test221' ,t, j4 , f1 ) ; % test C += A, C is bitmap and A is full logstat ('test162' ,t, j4 , f1 ) ; % test C=A*B with very sparse M -%ogstat ('test159' ,t, j40 , f10 ) ; %% test A*B -logstat ('test159' ,t, j0 , f0 ) ; %% test A*B +logstat ('test159' ,t, j40 , f10 ) ; %% test A*B logstat ('test09' ,t, j4 , f1 ) ; % duplicate I,J test of GB_mex_subassign logstat ('test132' ,t, j4 , f1 ) ; % setElement -%ogstat ('test141' ,t, j404, f110) ; % eWiseAdd with dense matrices -logstat ('test141' ,t, j0 , f1 ) ; % eWiseAdd with dense matrices +logstat ('test141' ,t, j404, f110) ; % eWiseAdd with dense matrices logstat ('testc2(1,1)',t, j44 , f10 ) ; % complex tests (quick case, builtin) logstat ('test214' ,t, j4 , f1 ) ; % test C=A'*B (tricount) logstat ('test213' ,t, j4 , f1 ) ; % test iso assign (method 05d) @@ -215,10 +198,8 @@ function testall (threads,longtests) hack (2) = 1 ; GB_mex_hack (hack) ; % disable the Werk stack -%ogstat ('test14' ,t, j404, f110) ; % GrB_reduce -logstat ('test14' ,t, j44 , f10 ) ; % GrB_reduce +logstat ('test14' ,t, j404, f110) ; % GrB_reduce logstat ('test180' ,s, j4 , f1 ) ; % test assign and subassign (1 thread) -%ogstat ('test180' ,t, j4 , f1 ) ; % test assign and subassign (4 threads) logstat ('test236' ,t, j4 , f1 ) ; % test GxB_Matrix_sort, GxB_Vector_sort hack (2) = 0 ; GB_mex_hack (hack) ; % re-enable the Werk stack @@ -238,8 +219,7 @@ function testall (threads,longtests) logstat ('test154' ,t, j40 , f11 ) ; % apply with binop and scalar binding logstat ('test238' ,t, j44 , f10 ) ; % test GrB_mxm (dot4 and dot2) -%ogstat ('test151b' ,t, j404, f110) ; % test bshift operator -logstat ('test151b' ,t, j4 , f1 ) ; % test bshift operator +logstat ('test151b' ,t, j404, f110) ; % test bshift operator logstat ('test184' ,t, j4 , f1 ) ; % special cases: mxm, transpose, build logstat ('test191' ,t, j40 , f10 ) ; %% test split logstat ('test188' ,t, j40 , f11 ) ; % test concat @@ -282,8 +262,7 @@ function testall (threads,longtests) logstat ('test176' ,t, j4 , f1 ) ; % test GrB_assign, method 09, 11 logstat ('test208' ,t, j4 , f1 ) ; % test iso apply, bind 1st and 2nd logstat ('test216' ,t, j4 , f1 ) ; % test C=A, iso case -%ogstat ('test142' ,t, j4040, f1100) ; %% test GrB_assign with accum -logstat ('test142' ,t, j040, f100) ; %% test GrB_assign with accum +logstat ('test142' ,t, j4040, f1100) ; %% test GrB_assign with accum logstat ('test137' ,s, j40 , f11 ) ; % GrB_eWiseMult, FIRST and SECOND logstat ('test139' ,s, j4 , f1 ) ; % merge sort, special cases logstat ('test172' ,t, j4 , f1 ) ; % test eWiseMult with M bitmap/full @@ -317,24 +296,20 @@ function testall (threads,longtests) logstat ('test200' ,t, j4 , f1 ) ; % test iso full matrix multiply logstat ('test197' ,t, j4 , f1 ) ; % test large sparse split logstat ('test84' ,t, j4 , f1 ) ; % GrB_assign (row/col with C CSR/CSC) -%ogstat ('test19b' ,t, j4 , f1 ) ; % GrB_assign, many pending operators +logstat ('test19b' ,t, j4 , f1 ) ; % GrB_assign, many pending operators logstat ('test19b' ,s, j4 , f1 ) ; % GrB_assign, many pending operators logstat ('test133' ,t, j4 , f1 ) ; % test mask operations (GB_masker) logstat ('test80' ,t, j4 , f1 ) ; % test GrB_mxm on all semirings -%ogstat ('test151' ,t, j44 , f10 ) ; % test bitwise operators -%ogstat ('test23' ,t, j40 , f11 ) ; % quick test of GB_*_build -logstat ('test23' ,t, j0 , f1 ) ; % quick test of GB_*_build +logstat ('test151' ,t, j44 , f10 ) ; % test bitwise operators +logstat ('test23' ,t, j40 , f11 ) ; % quick test of GB_*_build logstat ('test135' ,t, j4 , f1 ) ; % reduce to scalar -%ogstat ('test160' ,s, j40 , f11 ) ; % test A*B, single threaded -logstat ('test160' ,s, j0 , f1 ) ; % test A*B, single threaded +logstat ('test160' ,s, j40 , f11 ) ; % test A*B, single threaded logstat ('test54' ,t, j4 , f1 ) ; % assign and extract with begin:inc:end logstat ('test129' ,t, j4 , f1 ) ; % test GxB_select (tril, nonz, hyper) logstat ('test69' ,t, j4 , f1 ) ; % assign and subassign with alias logstat ('test230' ,t, j4 , f1 ) ; % test apply with idxunops -%ogstat ('test74' ,t, j40 , f11 ) ; % test GrB_mxm on all semirings -logstat ('test74' ,t, j0 , f1 ) ; % test GrB_mxm on all semirings -%ogstat ('test127' ,t, j40 , f11 ) ; % test eWiseAdd, eWiseMult -logstat ('test127' ,t, j0 , f1 ) ; % test eWiseAdd, eWiseMult +logstat ('test74' ,t, j40 , f11 ) ; % test GrB_mxm on all semirings +logstat ('test127' ,t, j404, f110) ; % test eWiseAdd, eWiseMult logstat ('test19' ,t, j4 , f1 ) ; % GxB_subassign, many pending operators %---------------------------------------- @@ -344,15 +319,12 @@ function testall (threads,longtests) logstat ('test11' ,t, j4 , f1 ) ; % exhaustive test of GrB_extractTuples logstat ('test215' ,t, j4 , f1 ) ; % test C=A'*B (dot2, ANY_PAIR) logstat ('test193' ,t, j4 , f1 ) ; % test GxB_Matrix_diag -%ogstat ('test195' ,t, j0 , f1 ) ; % all variants of saxpy3 slice_balanced logstat ('test195' ,t, j4 , f1 ) ; % all variants of saxpy3 slice_balanced -%ogstat ('test233' ,t, j4 , f1 ) ; % bitmap saxpy C=A*B, A sparse, B bitmap +% logstat ('test233' ,t, j4 , f1 ) ; % bitmap saxpy C=A*B, A sparse, B bitmap logstat ('test243' ,t, j4 , f1 ) ; % test GxB_Vector_Iterator -%ogstat ('test29' ,t, j40 , f11 ) ; % reduce with zombies -logstat ('test29' ,t, j0 , f1 ) ; % reduce with zombies +logstat ('test29' ,t, j40 , f11 ) ; % reduce with zombies -%ogstat ('testc2(0,0)',t, j404, f110) ; % A'*B, A+B, A*B, user-defined complex -logstat ('testc2(0,0)',t, j04, f10 ) ; % A'*B, A+B, A*B, user-defined complex +logstat ('testc2(0,0)',t, j404, f110) ; % A'*B, A+B, A*B, user-defined complex logstat ('testc4(0)' ,t, j4 , f1 ) ; % extractElement, setElement, user type logstat ('testc7(0)' ,t, j4 , f1 ) ; % assign, builtin complex logstat ('testcc(1)' ,t, j4 , f1 ) ; % transpose, builtin complex @@ -368,7 +340,6 @@ function testall (threads,longtests) logstat ('test53' ,t, j4 , f1 ) ; % quick test of GB_mex_Matrix_extract logstat ('test17' ,t, j4 , f1 ) ; % quick test of GrB_*_extractElement -%ogstat ('test231' ,t, j0 , f1 ) ; % test GrB_select with idxunp logstat ('test231' ,t, j4 , f1 ) ; % test GrB_select with idxunp %---------------------------------------- diff --git a/cmake_modules/GraphBLAS_JIT_configure.cmake b/cmake_modules/GraphBLAS_JIT_configure.cmake index 8b49048c00..8f57d212ab 100644 --- a/cmake_modules/GraphBLAS_JIT_configure.cmake +++ b/cmake_modules/GraphBLAS_JIT_configure.cmake @@ -8,7 +8,13 @@ #------------------------------------------------------------------------------- # construct the JIT compiler/link strings -set ( GB_C_COMPILER "${CMAKE_C_COMPILER}" ) +if ( MINGW ) + execute_process ( COMMAND cygpath -u "${CMAKE_C_COMPILER}" + OUTPUT_VARIABLE C_COMPILER_BINARY OUTPUT_STRIP_TRAILING_WHITESPACE ) +else ( ) + set ( C_COMPILER_BINARY "${CMAKE_C_COMPILER}" ) +endif ( ) +set ( GB_C_COMPILER "${C_COMPILER_BINARY}" ) set ( GB_C_FLAGS "${CMAKE_C_FLAGS}" ) set ( GB_C_LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" ) set ( GB_LIB_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}" ) @@ -25,8 +31,8 @@ if ( APPLE ) set ( GB_C_FLAGS "${GB_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT} " ) set ( GB_C_LINK_FLAGS "${GB_C_LINK_FLAGS} -dynamiclib " ) set ( GB_OBJ_SUFFIX ".o" ) -elseif ( WIN32 ) - # Windows +elseif ( MSVC ) + # Microsoft compiler set ( GB_OBJ_SUFFIX ".obj" ) else ( ) # Linux / Unix @@ -38,7 +44,7 @@ endif ( ) string ( REPLACE "\"" "\\\"" GB_C_FLAGS ${GB_C_FLAGS} ) # construct the -I list for OpenMP -if ( OPENMP_FOUND ) +if ( OpenMP_C_FOUND ) set ( GB_OMP_INC_DIRS ${OpenMP_C_INCLUDE_DIRS} ) set ( GB_OMP_INC ${OpenMP_C_INCLUDE_DIRS} ) list ( TRANSFORM GB_OMP_INC PREPEND " -I" ) @@ -48,16 +54,59 @@ else ( ) endif ( ) # construct the library list -string ( REPLACE "." "\\." LIBSUFFIX1 ${GB_LIB_SUFFIX} ) -string ( REPLACE "." "\\." LIBSUFFIX2 ${CMAKE_STATIC_LIBRARY_SUFFIX} ) -set ( GB_C_LIBRARIES "" ) -foreach ( LIB_NAME ${GB_CMAKE_LIBRARIES} ) - if (( LIB_NAME MATCHES ${LIBSUFFIX1} ) OR ( LIB_NAME MATCHES ${LIBSUFFIX2} )) - string ( APPEND GB_C_LIBRARIES " " ${LIB_NAME} ) - else ( ) - string ( APPEND GB_C_LIBRARIES " -l" ${LIB_NAME} ) - endif ( ) -endforeach ( ) +if ( APPLE ) + set ( default_jit_enable_relocate OFF ) +else ( ) + set ( default_jit_enable_relocate ON ) +endif ( ) + +option ( GRAPHBLAS_JIT_ENABLE_RELOCATE + "ON: Enable relocation of libraries for JIT. OFF: Keep libraries with full path for JIT." + default_jit_enable_relocate ) + +if ( GRAPHBLAS_JIT_ENABLE_RELOCATE ) + + # This might be something like: + # /usr/lib/libgomp.so;/usr/lib/libpthread.a;m + # convert to -l flags to avoid relocation issues, i.e.: "-lgomp -lpthread -lm" + set ( GB_C_LIBRARIES "" ) + foreach ( _lib ${GB_CMAKE_LIBRARIES} ) + string ( FIND ${_lib} "." _pos REVERSE ) + if ( ${_pos} EQUAL "-1" ) + set ( GB_C_LIBRARIES "${GB_C_LIBRARIES} -l${_lib}" ) + continue () + endif ( ) + set ( _kinds "SHARED" "STATIC" ) + if ( WIN32 ) + list ( PREPEND _kinds "IMPORT" ) + endif ( ) + foreach ( _kind IN LISTS _kinds ) + set ( _regex ".*\\/(lib)?([^\\.]*)(${CMAKE_${_kind}_LIBRARY_SUFFIX})" ) + if ( ${_lib} MATCHES ${_regex} ) + string ( REGEX REPLACE ${_regex} "\\2" _libname ${_lib} ) + if ( NOT "${_libname}" STREQUAL "" ) + set ( GB_C_LIBRARIES "${GB_C_LIBRARIES} -l${_libname}" ) + break () + endif ( ) + endif ( ) + endforeach ( ) + endforeach ( ) + +else ( ) + + # keep full paths to libraries + string ( REPLACE "." "\\." LIBSUFFIX1 ${GB_LIB_SUFFIX} ) + string ( REPLACE "." "\\." LIBSUFFIX2 ${CMAKE_STATIC_LIBRARY_SUFFIX} ) + set ( GB_C_LIBRARIES "" ) + foreach ( LIB_NAME ${GB_CMAKE_LIBRARIES} ) + if (( LIB_NAME MATCHES ${LIBSUFFIX1} ) OR ( LIB_NAME MATCHES ${LIBSUFFIX2} )) + string ( APPEND GB_C_LIBRARIES " " ${LIB_NAME} ) + else ( ) + string ( APPEND GB_C_LIBRARIES " -l" ${LIB_NAME} ) + endif ( ) + endforeach ( ) + +endif ( ) if ( NOT NJIT OR ENABLE_CUDA ) message ( STATUS "------------------------------------------------------------------------" ) diff --git a/cmake_modules/GraphBLAS_JIT_paths.cmake b/cmake_modules/GraphBLAS_JIT_paths.cmake index e718fae789..69a3737840 100644 --- a/cmake_modules/GraphBLAS_JIT_paths.cmake +++ b/cmake_modules/GraphBLAS_JIT_paths.cmake @@ -43,8 +43,8 @@ if ( SUITESPARSE_CUDA ) set ( COMPACT on ) endif ( ) -option ( COMPACT "ON: do not compile FactoryKernels. OFF (default): compile FactoryKernels" off ) -option ( NJIT "ON: do not use the CPU JIT. OFF (default): enable the CPU JIT" off ) +option ( COMPACT "ON: do not compile FactoryKernels. OFF (default): compile FactoryKernels" OFF ) +option ( NJIT "ON: do not use the CPU JIT. OFF (default): enable the CPU JIT" OFF ) if ( NJIT ) # disable the CPU JIT (but keep any PreJIT kernels enabled) diff --git a/cmake_modules/GraphBLAS_version.cmake b/cmake_modules/GraphBLAS_version.cmake index 7a9dac2ba5..90ad98f4fb 100644 --- a/cmake_modules/GraphBLAS_version.cmake +++ b/cmake_modules/GraphBLAS_version.cmake @@ -8,15 +8,15 @@ #------------------------------------------------------------------------------- # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "Oct 7, 2023" ) -set ( GraphBLAS_VERSION_MAJOR 9 ) -set ( GraphBLAS_VERSION_MINOR 0 ) -set ( GraphBLAS_VERSION_SUB 0 ) +set ( GraphBLAS_DATE "Dec 30, 2023" ) +set ( GraphBLAS_VERSION_MAJOR 8 CACHE STRING "" FORCE ) +set ( GraphBLAS_VERSION_MINOR 3 CACHE STRING "" FORCE ) +set ( GraphBLAS_VERSION_SUB 0 CACHE STRING "" FORCE ) # GraphBLAS C API Specification version, at graphblas.org -set ( GraphBLAS_API_DATE "Oct 7, 2023" ) +set ( GraphBLAS_API_DATE "Nov 15, 2021" ) set ( GraphBLAS_API_VERSION_MAJOR 2 ) -set ( GraphBLAS_API_VERSION_MINOR 1 ) +set ( GraphBLAS_API_VERSION_MINOR 0 ) set ( GraphBLAS_API_VERSION_SUB 0 ) message ( STATUS "Building SuiteSparse:GraphBLAS version: v" diff --git a/cmake_modules/SuiteSparsePolicy.cmake b/cmake_modules/SuiteSparsePolicy.cmake index 3d07aaa566..8e64cc381d 100644 --- a/cmake_modules/SuiteSparsePolicy.cmake +++ b/cmake_modules/SuiteSparsePolicy.cmake @@ -15,21 +15,28 @@ # set ( CMAKE_BUILD_TYPE Debug ) # # ENABLE_CUDA: if set to true, CUDA is enabled for the project. -# Default: true for CHOLMOD and SPQR, false for GraphBLAS -# (for which CUDA is in progress and not ready for -# production use). +# Default: true for CHOLMOD and SPQR, which use the GPU +# for their numerical factorizsation. The flag is false +# for GraphBLAS since CUDA for that package is in +# progress and not ready for production use. +# CUDA acceleration not supported on Windows with MSVC. # # LOCAL_INSTALL: if true, "cmake --install" will install # into SuiteSparse/lib and SuiteSparse/include. # if false, "cmake --install" will install into the # default prefix (or the one configured with # CMAKE_INSTALL_PREFIX). Requires cmake 3.19. +# This is ignored when using the root CMakeLists.txt. +# Set CMAKE_INSTALL_PREFIX instead. # Default: false # -# NSTATIC: if true, static libraries are not built. -# Default: false, except for GraphBLAS, which +# BUILD_SHARED_LIBS: if true, shared libraries are built. +# Default: true. +# +# BUILD_STATIC_LIBS: if true, static libraries are built. +# Default: true, except for GraphBLAS, which # takes a long time to compile so the default for -# GraphBLAS is true. +# GraphBLAS is false. # # SUITESPARSE_CUDA_ARCHITECTURES: a string, such as "all" or # "35;50;75;80" that lists the CUDA architectures to use @@ -68,9 +75,25 @@ # explicitly, if the defaults are not appropriate for your # system. # Default: false +# +# SUITESPARSE_PKGFILEDIR: where to install the CMake Config and pkg-config +# files. This defaults to the same directory as where +# the compiled libraries are installed, in a subfolder +# called cmake. If not already set in the cache, +# LOCAL_INSTALL=0 defines this as "lib", and the +# CMAKE_INSTALL_PREFIX is added. LOCAL_INSTALL=1 defines +# this as SuiteSparse/lib. This variable is cached so +# that if it is not set, or unset first, it remains +# unchanged (see "make local" and "make global" in the +# SuiteSparse_config/Makefile for an example). +# +# SUITESPARSE_INCLUDEDIR_POSTFIX : # Postfix for installation target of +# header from SuiteSparse. Default: suitesparse, so the +# default include directory is: +# CMAKE_INSTALL_PREFIX/include/suitesparse -message ( STATUS "Source: ${CMAKE_SOURCE_DIR} ") -message ( STATUS "Build: ${CMAKE_BINARY_DIR} ") +message ( STATUS "Source: ${CMAKE_SOURCE_DIR} ") +message ( STATUS "Build: ${CMAKE_BINARY_DIR} ") cmake_policy ( SET CMP0042 NEW ) # enable MACOSX_RPATH by default cmake_policy ( SET CMP0048 NEW ) # VERSION variable policy @@ -92,19 +115,30 @@ include ( GNUInstallDirs ) set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules ) -# NSTATIC option -if ( NSTATIC_DEFAULT_ON ) - option ( NSTATIC "ON (default): do not build static libraries. OFF: build static libraries" on ) +# BUILD_SHARED_LIBS and BUILD_STATIC_LIBS options +option ( BUILD_SHARED_LIBS "OFF: do not build shared libraries. ON (default): build shared libraries" ON ) + +if ( BUILD_STATIC_LIBS_DEFAULT_OFF ) + option ( BUILD_STATIC_LIBS "OFF (default): do not build static libraries. ON: build static libraries" OFF ) else ( ) - option ( NSTATIC "ON: do not build static libraries. OFF (default): build static libraries" off ) + # For backwards compatibility, use NSTATIC if it is set. + if ( NSTATIC ) + option ( BUILD_STATIC_LIBS "OFF: do not build static libraries. ON (default): build static libraries" OFF ) + else ( ) + option ( BUILD_STATIC_LIBS "OFF: do not build static libraries. ON (default): build static libraries" ON ) + endif ( ) +endif ( ) + +if ( NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS ) + message ( FATAL_ERROR "At least one of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS must be set to ON." ) endif ( ) # installation options -if ( ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.19.0" ) +if ( NOT SUITESPARSE_ROOT_CMAKELISTS AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.19.0" ) # the LOCAL_INSTALL option requires cmake 3.19.0 or later - option ( LOCAL_INSTALL "Install in SuiteSparse/lib" off ) + option ( LOCAL_INSTALL "Install in SuiteSparse/lib" OFF ) else ( ) - set ( LOCAL_INSTALL off ) + set ( LOCAL_INSTALL OFF ) endif ( ) if ( SUITESPARSE_SECOND_LEVEL ) @@ -121,32 +155,37 @@ endif ( ) # find this one without "make install" set ( CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${CMAKE_BINARY_DIR} ) -# determine if this Package is inside the SuiteSparse folder -set ( INSIDE_SUITESPARSE false ) -if ( LOCAL_INSTALL ) - # if you do not want to install local copies of SuiteSparse - # packages in SuiteSparse/lib and SuiteSparse/, set - # LOCAL_INSTALL to false in your CMake options. - if ( SUITESPARSE_SECOND_LEVEL ) - # the package is normally located at the 2nd level inside SuiteSparse - # (SuiteSparse/GraphBLAS/GraphBLAS/ for example) - if ( EXISTS ${CMAKE_SOURCE_DIR}/../../SuiteSparse_config ) - set ( INSIDE_SUITESPARSE true ) +if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) + # determine if this Package is inside the SuiteSparse folder + set ( INSIDE_SUITESPARSE false ) + if ( LOCAL_INSTALL ) + # if you do not want to install local copies of SuiteSparse + # packages in SuiteSparse/lib and SuiteSparse/, set + # LOCAL_INSTALL to false in your CMake options. + if ( SUITESPARSE_SECOND_LEVEL ) + # the package is normally located at the 2nd level inside SuiteSparse + # (SuiteSparse/GraphBLAS/GraphBLAS/ for example) + if ( EXISTS ${CMAKE_SOURCE_DIR}/../../SuiteSparse_config ) + set ( INSIDE_SUITESPARSE true ) + endif ( ) + else ( ) + # typical case, the package is at the 1st level inside SuiteSparse + # (SuiteSparse/AMD for example) + if ( EXISTS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config ) + set ( INSIDE_SUITESPARSE true ) + endif ( ) endif ( ) - else ( ) - # typical case, the package is at the 1st level inside SuiteSparse - # (SuiteSparse/AMD for example) - if ( EXISTS ${CMAKE_SOURCE_DIR}/../SuiteSparse_config ) - set ( INSIDE_SUITESPARSE true ) + + if ( NOT INSIDE_SUITESPARSE ) + message ( FATAL_ERROR "Unsupported layout for local installation. Correct the directory layout or unset LOCAL_INSTALL." ) endif ( ) - endif ( ) - if ( NOT INSIDE_SUITESPARSE ) - message ( FATAL_ERROR "Unsupported layout for local installation. Correct the directory layout or unset LOCAL_INSTALL." ) endif ( ) - endif ( ) +set ( SUITESPARSE_INCLUDEDIR_POSTFIX "suitesparse" CACHE STRING + "Postfix for installation target of header from SuiteSparse (default: \"suitesparse\")" ) + if ( LOCAL_INSTALL ) if ( INSIDE_SUITESPARSE ) # ../lib and ../include exist: the package is inside SuiteSparse. @@ -160,11 +199,11 @@ if ( LOCAL_INSTALL ) endif ( ) endif ( ) set ( SUITESPARSE_LIBDIR ${SUITESPARSE_LOCAL_PREFIX}/lib ) - set ( SUITESPARSE_INCLUDEDIR ${SUITESPARSE_LOCAL_PREFIX}/include ) + set ( SUITESPARSE_INCLUDEDIR ${SUITESPARSE_LOCAL_PREFIX}/include/${SUITESPARSE_INCLUDEDIR_POSTFIX} ) set ( SUITESPARSE_BINDIR ${SUITESPARSE_LOCAL_PREFIX}/bin ) else ( ) set ( SUITESPARSE_LIBDIR ${CMAKE_INSTALL_LIBDIR} ) - set ( SUITESPARSE_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} ) + set ( SUITESPARSE_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/${SUITESPARSE_INCLUDEDIR_POSTFIX} ) set ( SUITESPARSE_BINDIR ${CMAKE_INSTALL_BINDIR} ) endif ( ) @@ -174,17 +213,21 @@ if ( INSIDE_SUITESPARSE ) set ( CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${SUITESPARSE_LIBDIR} ) endif ( ) -message ( STATUS "Install lib: ${SUITESPARSE_LIBDIR}" ) -message ( STATUS "Install include: ${SUITESPARSE_INCLUDEDIR}" ) -message ( STATUS "Install bin: ${SUITESPARSE_BINDIR}" ) -message ( STATUS "Install rpath: ${CMAKE_INSTALL_RPATH}" ) -message ( STATUS "Build rpath: ${CMAKE_BUILD_RPATH}" ) +set ( SUITESPARSE_PKGFILEDIR ${SUITESPARSE_LIBDIR} CACHE STRING + "Directory where CMake Config and pkg-config files will be installed" ) + +message ( STATUS "Install lib: ${SUITESPARSE_LIBDIR}" ) +message ( STATUS "Install include: ${SUITESPARSE_INCLUDEDIR}" ) +message ( STATUS "Install bin: ${SUITESPARSE_BINDIR}" ) +message ( STATUS "Install pkg-file: ${SUITESPARSE_PKGFILEDIR}" ) +message ( STATUS "Install rpath: ${CMAKE_INSTALL_RPATH}" ) +message ( STATUS "Build rpath: ${CMAKE_BUILD_RPATH}" ) if ( NOT CMAKE_BUILD_TYPE ) set ( CMAKE_BUILD_TYPE Release ) endif ( ) -message ( STATUS "Build type: ${CMAKE_BUILD_TYPE} ") +message ( STATUS "Build type: ${CMAKE_BUILD_TYPE} ") set ( CMAKE_INCLUDE_CURRENT_DIR ON ) @@ -195,16 +238,16 @@ set ( CMAKE_INCLUDE_CURRENT_DIR ON ) include ( CheckLanguage ) option ( NFORTRAN "ON: do not try to use Fortran. OFF (default): try Fortran" off ) if ( NFORTRAN ) - message ( STATUS "Fortran: not enabled" ) + message ( STATUS "Fortran: not enabled" ) else ( ) check_language ( Fortran ) if ( CMAKE_Fortran_COMPILER ) enable_language ( Fortran ) - message ( STATUS "Fortran: ${CMAKE_Fortran_COMPILER}" ) + message ( STATUS "Fortran: ${CMAKE_Fortran_COMPILER}" ) else ( ) # Fortran not available: set ( NFORTRAN true ) - message ( STATUS "Fortran: not available" ) + message ( STATUS "Fortran: not available" ) endif ( ) endif ( ) @@ -223,48 +266,47 @@ endif ( ) # find CUDA #------------------------------------------------------------------------------- -if ( ENABLE_CUDA ) +if ( ENABLE_CUDA AND NOT MSVC ) # try finding CUDA check_language ( CUDA ) - message ( STATUS "Looking for CUDA" ) + # message ( STATUS "Looking for CUDA" ) if ( CMAKE_CUDA_COMPILER ) # with CUDA: - message ( STATUS "Find CUDA tool kit:" ) + # message ( STATUS "Find CUDA tool kit:" ) # FindCUDAToolKit needs to have C or CXX enabled first (see above) - include ( FindCUDAToolkit ) - message ( STATUS "CUDA toolkit found: " ${CUDAToolkit_FOUND} ) - message ( STATUS "CUDA toolkit version: " ${CUDAToolkit_VERSION} ) - message ( STATUS "CUDA toolkit include: " ${CUDAToolkit_INCLUDE_DIRS} ) - message ( STATUS "CUDA toolkit lib dir: " ${CUDAToolkit_LIBRARY_DIR} ) + find_package ( CUDAToolkit ) + message ( STATUS "CUDA toolkit : " ${CUDAToolkit_FOUND} ) + message ( STATUS "CUDA toolkit ver: " ${CUDAToolkit_VERSION} ) + message ( STATUS "CUDA toolkit inc: " ${CUDAToolkit_INCLUDE_DIRS} ) + message ( STATUS "CUDA toolkit lib: " ${CUDAToolkit_LIBRARY_DIR} ) if ( CUDAToolkit_VERSION VERSION_LESS "11.2" ) # CUDA is present but too old - message ( STATUS "CUDA: not enabled (CUDA 11.2 or later required)" ) - set ( SUITESPARSE_CUDA off ) + message ( STATUS "CUDA: not enabled (CUDA 11.2 or later required)" ) + set ( SUITESPARSE_CUDA OFF ) else ( ) # CUDA 11.2 or later present enable_language ( CUDA ) - set ( SUITESPARSE_CUDA on ) + set ( SUITESPARSE_CUDA ON ) endif ( ) else ( ) # without CUDA: - message ( STATUS "CUDA: not found" ) - set ( SUITESPARSE_CUDA off ) + message ( STATUS "CUDA: not found" ) + set ( SUITESPARSE_CUDA OFF ) endif ( ) else ( ) # CUDA is disabled - set ( SUITESPARSE_CUDA off ) + set ( SUITESPARSE_CUDA OFF ) endif ( ) if ( SUITESPARSE_CUDA ) - message ( STATUS "CUDA: enabled" ) - add_compile_definitions ( SUITESPARSE_CUDA ) + message ( STATUS "CUDA: enabled" ) set ( SUITESPARSE_CUDA_ARCHITECTURES "52;75;80" CACHE STRING "CUDA architectures" ) set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) else ( ) - message ( STATUS "CUDA: not enabled" ) + message ( STATUS "CUDA: not enabled" ) endif ( ) diff --git a/cmake_modules/SuiteSparseReport.cmake b/cmake_modules/SuiteSparseReport.cmake index 9271c4a920..b5ee026a35 100644 --- a/cmake_modules/SuiteSparseReport.cmake +++ b/cmake_modules/SuiteSparseReport.cmake @@ -12,14 +12,13 @@ message ( STATUS "------------------------------------------------------------------------" ) message ( STATUS "SuiteSparse CMAKE report for: ${CMAKE_PROJECT_NAME}" ) message ( STATUS "------------------------------------------------------------------------" ) -message ( STATUS "inside common SuiteSparse root: ${INSIDE_SUITESPARSE}" ) -message ( STATUS "install in SuiteSparse/lib and SuiteSparse/include: ${LOCAL_INSTALL}" ) -message ( STATUS "build type: ${CMAKE_BUILD_TYPE}" ) -if ( NSTATIC ) - message ( STATUS "NSTATIC: true (do not build static library)" ) -else ( ) - message ( STATUS "NSTATIC: false (build static library)" ) +if ( NOT SUITESPARSE_ROOT_CMAKELISTS ) + message ( STATUS "inside common SuiteSparse root: ${INSIDE_SUITESPARSE}" ) + message ( STATUS "install in SuiteSparse/lib and SuiteSparse/include: ${LOCAL_INSTALL}" ) endif ( ) +message ( STATUS "build type: ${CMAKE_BUILD_TYPE}" ) +message ( STATUS "BUILD_SHARED_LIBS: ${BUILD_SHARED_LIBS}" ) +message ( STATUS "BUILD_STATIC_LIBS: ${BUILD_STATIC_LIBS}" ) if ( OPENMP_FOUND ) message ( STATUS "use OpenMP: yes ") else ( ) diff --git a/lz4/README.txt b/lz4/README.txt index 222c8c9c22..e2f8c05db7 100644 --- a/lz4/README.txt +++ b/lz4/README.txt @@ -23,7 +23,7 @@ Files in this folder: When LZ4 is compiled for use in SuiteSparse:GraphBLAS, LZ4_USER_MEMORY_FUNCTIONS is defined, and LZ4_malloc, LZ4_calloc, and LZ4_free, are provided to LZ4. Those functions use whatever memory manager is given to -GxB_init, or the C11 malloc/calloc/free for GrB_init. +GxB_init, or the ANSI C11 malloc/calloc/free for GrB_init. This compile-time change could cause a conflict if LZ4 is also installed as a system-wide library. To avoid the conflict, all LZ4 function names are renamed diff --git a/rmm_wrap/CMakeLists.txt b/rmm_wrap/CMakeLists.txt index 177a5da235..5267e55b75 100644 --- a/rmm_wrap/CMakeLists.txt +++ b/rmm_wrap/CMakeLists.txt @@ -8,70 +8,71 @@ cmake_minimum_required ( VERSION 3.19 ) -project(rmm_wrap VERSION 0.1) +project ( rmm_wrap VERSION 0.1 ) # This build depends upon having RMM cmake installed from https://github.com/rapidsai/rmm.git -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_C_STANDARD 99) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") +set ( CMAKE_CXX_STANDARD 17 ) +set ( CMAKE_C_STANDARD 99 ) +set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" ) -find_package(CUDA REQUIRED) +find_package ( CUDAToolkit REQUIRED ) -set(EXTERNAL_INCLUDES_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes) +set ( EXTERNAL_INCLUDES_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) -IF(NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}) -file(MAKE_DIRECTORY ${EXTERNAL_INCLUDES_DIRECTORY}) -endif() +if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY} ) + file ( MAKE_DIRECTORY ${EXTERNAL_INCLUDES_DIRECTORY} ) +endif ( ) -IF(NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/spdlog) -execute_process( - COMMAND git clone "https://github.com/gabime/spdlog.git" --branch v1.10.0 --recursive spdlog - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes) -endif() +if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/spdlog ) + execute_process ( + COMMAND git clone "https://github.com/gabime/spdlog.git" --branch v1.10.0 --recursive spdlog + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) +endif ( ) -set(SPDLOG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/spdlog/include) -include_directories(${SPDLOG_INCLUDE_DIR}) +set ( SPDLOG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/spdlog/include ) +include_directories ( ${SPDLOG_INCLUDE_DIR} ) -IF(NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/rmm) -execute_process( - COMMAND git clone "https://github.com/rapidsai/rmm.git" --branch branch-21.10 --recursive rmm - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes) +if ( NOT EXISTS ${EXTERNAL_INCLUDES_DIRECTORY}/rmm ) + execute_process ( + COMMAND git clone "https://github.com/rapidsai/rmm.git" --branch branch-21.10 --recursive rmm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes ) endif() -set(RMM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/rmm/include) -include_directories(${RMM_INCLUDE_DIR}) +set ( RMM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/external_includes/rmm/include ) +include_directories ( ${RMM_INCLUDE_DIR} ) -add_library(rmm_wrap rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h) +add_library ( RMM_wrap rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h ) -set_target_properties (rmm_wrap PROPERTIES - VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} - SOVERSION ${GraphBLAS_VERSION_MAJOR} - C_STANDARD 11 - C_STANDARD_REQUIRED ON - PUBLIC_HEADER "rmm_wrap.h" ) +set_target_properties ( RMM_wrap PROPERTIES + VERSION ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} + OUTPUT_NAME rmm_wrap + SOVERSION ${GraphBLAS_VERSION_MAJOR} + PUBLIC_HEADER "rmm_wrap.h" + WINDOWS_EXPORT_ALL_SYMBOLS ON ) -add_executable(rmm_wrap_test rmm_wrap_test.c rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h) +add_executable ( rmm_wrap_test rmm_wrap_test.c rmm_wrap.cpp rmm_wrap.hpp rmm_wrap.h ) -set(RMM_WRAP_LIBS ${EXTRA_LIBS} ${CUDA_LIBRARIES}) -set(RMM_WRAP_INCLUDES ${PROJECT_BINARY_DIR} - ${SPDLOG_INCLUDE_DIR} - ${RMM_INCLUDE_DIR} - ${CUDA_INCLUDE_DIRS} - ${CONDA_PREFIX}/include - ${PROJECT_SOURCE_DIR}/include) +set ( RMM_WRAP_LIBS ${EXTRA_LIBS} CUDA::cudart_static ) +set ( RMM_WRAP_INCLUDES ${PROJECT_BINARY_DIR} + ${SPDLOG_INCLUDE_DIR} + ${RMM_INCLUDE_DIR} + ${CUDA_INCLUDE_DIRS} + ${CONDA_PREFIX}/include + ${PROJECT_SOURCE_DIR}/include ) -target_link_libraries(rmm_wrap PUBLIC ${RMM_WRAP_LIBS}) -target_include_directories(rmm_wrap PUBLIC "${RMM_WRAP_INCLUDES}") +target_link_libraries ( RMM_wrap PRIVATE ${RMM_WRAP_LIBS} ) +target_include_directories ( RMM_wrap PRIVATE "${RMM_WRAP_INCLUDES}" ) -target_link_libraries(rmm_wrap_test PUBLIC ${RMM_WRAP_LIBS}) -target_include_directories(rmm_wrap_test PUBLIC "${RMM_WRAP_INCLUDES}") +target_link_libraries ( rmm_wrap_test PUBLIC ${RMM_WRAP_LIBS} ) +target_include_directories ( rmm_wrap_test PUBLIC "${RMM_WRAP_INCLUDES}" ) #------------------------------------------------------------------------------- # installation location #------------------------------------------------------------------------------- -install ( TARGETS rmm_wrap +install ( TARGETS RMM_wrap + EXPORT GraphBLASTargets LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} RUNTIME DESTINATION ${SUITESPARSE_BINDIR} diff --git a/zstd/README.txt b/zstd/README.txt index 6c9d594c89..227086b279 100644 --- a/zstd/README.txt +++ b/zstd/README.txt @@ -17,8 +17,8 @@ Files in this folder: When ZSTD is compiled for use in SuiteSparse:GraphBLAS, ZSTD_DEPS_MALLOC is defined, and ZSTD_malloc, ZSTD_calloc, and ZSTD_free, are provided to ZSTD -instead of have it use the standard C11 malloc/calloc/free. Those -functions use whatever memory manager is given to GxB_init, or the C11 +instead of have it use the standard ANSI C11 malloc/calloc/free. Those +functions use whatever memory manager is given to GxB_init, or the ANSI C11 malloc/calloc/free for GrB_init. This compile-time change could cause a conflict if ZSTD is also installed as a

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⁣(I7hj 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궼hu|TdxNt#4f3_CzF5b<)@Gg2TJ?`=Q1bfC>x=6* z-~V#;`qFlzxcJSKV%)t}by2B*zuznP??kA4Z~7y7^piFQ8l}aJp_B$I zkmZvzB=8)!*LMG)M-9Gfg~rR)R3mo3gtFE{CnrM-4FppN{<$_uOg<-O8DT6wm+x_x?p{gvcj|^Tm61~r_(2+`6Fad%D=$t%>$MM$8c+1vo4w;mTCSi*e ziO`bNj9vTZw;K&oB2C#zYWE_70NCh{*WC{aXOFXRcKI&!&-crBryr7V#wCknB4*2n z8RsF>v79BbWJ0RhvY7oAaLsr$UvMts;AU493XnB8uz22LZNA~*W<7PL=HQe5 z$jdt0uHJt2EH(NwPGs(ql0r8MBq3z$x^%}GiiT4*M zlyx(tFbvSnh8D}}n1`h1FVsE#*?l>obSjuoz0#;|6bGNq=b8u0kLT~{+_Ir(Wm`JE zHvit0wJ8``Btk$@$cGkn7!X3bpn`|%2U~Aw#@Qr96n~hf)>KVNA@FMsWo{MB?6*(Z zt0hx#pjUqhA5Ix5)FEytGJrcF0hCoSQmARO)@)3L3bnMBL+~uVla}?un+@KMwHlh8 zJ))c>>a9qkBf*MOmPApndv3o?>MmIl>TVZmtr8a?;RA#R+<^CWhGTGfO>=87!w*ZZ z$3AQe34dvGYdTd|VBn;Kg%nKbUdfw_^PfLmu=Z)v%?J$^3ORJh*O1G#aT+8P&jcZD z8+Uk2ng1PsEUi&|n(n2hZDrN8^)7EqTlppHWvwhpAi8k$p9Um?SBzPllPP*#^rzHD&Fh~xarrj^6-@!kQEPuRgf>yPYIqeZGFO7oWyS;7iv-3 z=cf0xgjx@WxTh;8GSoi$^&d2i=HL@FolwUu9eM!Y$#B5?LzWw|F6AstMkNV#phosJ zjDN$)xGI+JEqlCgk3=>~Sjzi~0@66i?JU8933-YQrlKKLbJ((l#Kbz-{D``TL1WCm z%TCoe6|pFO*@8}AZAM&h7AZNx9`zqAJYh6+jmtBv@f%wkD)NPCvvS=q5ag4X6}q5Os8P_%0e|;>V!)jDoepxl*_LaU5AfzI3nDz_o3wjCKA@bUY}y>Po>En(P}2GWSXT6jXGFkTtS1l}351(+ap_t_qM6ouSW{fg zoU=QU(0dpf6$e`8Jq(0Gcib%Ph?xOR8xNV!766K0_goK*mP4Z@UOi3xawg(qaet=YCT;_(SB3upl&@o3tC_=s@@g+~B_fLpmk z{xh~>#A{fr^gadN-#wc46rYW0-=;NZL~APZ-Mf8Pb&UiSeyHtc#I(KvI%)AInmGUG z6?@gF1qTwOV`Ky1@-+T?W-Xt$=6??LoUjS%fZikVWD4RbQ(_?ROO@5n*V|(vhi>|F zBCo2#JiQ^8LukWDANXJC5bC`zK%oW?CBp)=w$-ESj?fP_SzcS0*IWQ=Uhn|vbCpl0 zb(k=&2Pz%`g-n==dk5xOMW@~S8;5(@HLkkgjl|Ln3ZsdY-&189BG2ipuz0Y%D?6(>Y(n z7Xw<;mHTYBMslmA6M&#f$$L}p#QaH=H-<6M=2q8sCBumvP}3hcFp-5p2v zEV{DQ0=rGtmiKEzb2*y7%Bn~I4#A&rt!Hs7qIad;Vfdu-9agGNFC0enfB^7-AOPLS z0Y4TLPFTI&m94qm)@Vax&h~AezIBw3SjrJqz>co0xzhbsA)~59b$?7w*RgTBAJ#E& zDZsqUGwg>z#Yfhi;hi0#kyRc|v}ce32@qCCLy*ZEU`)BoN_e}+PWwC!Cup8hjNmj` z2NaY0LW<0ILLAf{xOpWbe*9W>fs&WV!<)3r3ghwxugsgw-F~zRx~Gq9Ru999OZU5$ z2CMFx;7XKRqP#Mdr+@Ku?vTctd<_mnpULDPAgEO;iElwiH?+R3ZEFYgsi6h)R64>e z>EedZUQM=gFy)>9#@Oq_E4V_2mG2s25Q1w;Hm*F`>ux~>O;S6?ZB%<;>I?RO#$9LO z?Q&NZ=4=uJQOctIe=wI%$1#9jd%c-LTj9~6s6Q3>6W`+^4u7}%bnKIY{tt47Ns*3l z@0XrwEl1kR@yah_*?pT*;$RNY8_;!#s**hT@_#6^@t*cdDFT;?H1s!k93C2h+A8j~ zg*B*pXGh8S{&tA&{h@W_2iwsU4~K9F^=iP7YDX_5PX1LFvnY987(_4xax}Uoq0~>d zvSo2+x75!k`F{^jKo|Ab;N|54wyU;mpa0i#;dZ}yr zFVB}(*Prixx%#}EJW+vr<799hgud$Y0tpw9f*1ewB`qus2L^t)zWH=Mc?SNwBKAfd zHeOIZkqj6wn3KATrP~B547Ob?-~AVmF#yDu5i$xC0XCO07zPsqF*r7tfw%@Kf3;ZM zbK5oyfA3%6+sov&Vo6G(B=7c+rd^j_n)DjC+ugd$F*Y4*l_j4(l5Bg}zdnGVWGhwD zF6$n0p-2!P1n>i3KDnIm$;(Il*8gYoM^Ar@!-)_qjUqXjuO>n!EELg1MIn=6Jee;i zzj_~};M3pculkEmf0XgymS8atf8ofIpP6kl^#iFqkvzdg>`5+z+0+k%$h(@##4}Z$ zl?9z8Ofqqcz2XD*0TZ#B_%dQ)sz}IR_bVh>6vv%Hi;ey`1xW@3Cc@1;F^0EZI-+325TkRQY>jAHi~(SscHewxTnT)>}@8awap zJMYW=6a6>;fZRR*)H7rQZy@$>ClH%S(1%-_HRf!qtJ=&Q`A}FAup~}8@S%s+ay0*;+%~BEh!ax4l|Xbi5DOId+S-h9mnjoceZqZ=ZIl9B zr5$O52^geaZ5moMYkadH@vMvRr|Bf1$Fs$Bb7jP<{Bl zym@vG3Z5UHAD*7f-<}?isVR8M(w&|kc*Mh5S%4qISb4!LFZI%XfKz8x+Z~A6R>K>) zFFq?ja1l)Xm?H0SRz(^OLUEu5z{8%SvNHSm8F-APIAXDTkO>7RCAmR-Sg6 zVniYFCrPZvlK4KvS6>fV#FGy8_ApS!ckA_aQQsy(;zA_|f1%!9;v#?p5#Edfze-@) zGk94&JOA#yxYBt&7CNzDst1wEG;LLkgIO4}NcGY9?&xH$!t>V$zlYqEtf2Xck}n?zQrDX9gi1!&^YjE8C z*2d5Prt*GshvJ6j9zK3NsyVQW)LzZU=9rwJ3vlcuVyP5~wpi- zs(YPVibOGsWAPbHpvvF~IpKl}opYEPBP8uO#4dC8QXax5bx;_i}(ZB8|`#2fa zN6x(jOREf^U9mMCc5aafuRGB6xzRLRQR5-Jv(vlo6^qJf+dLt7)$ncHNkjiD;}51X z_uQKjSrNaQ!bH0eG}rXK$qJN@d(fU${#90If6x@s;mT;hMAL<>jSSr1pHuo!n~lwd zcl4dus_xoitQ5~py{NM79n~TgEJ*vXC`xQ^|Fqc(R(^j*FSA$Sp zX2m7#EJ~Vht1`z%RHYpRfzsgKR1TG|%Z=%t3mNUbg)La{{|@^E2Lqvz-NUdmlS45) zf8CDOcL033gT=}{e`WR^=l}-ezBZ2Hf}kb0WY^S5!hQ zbl###IKiy-P8RJT_rx=%pwABOEY^ieP*-420Q7W|U1Ygy9ccSHYt}?*dvIL1ffz2J zQ$}8nf7(PqZ~XMqG$kgEvQ?DW1@=i%2}Y zc+%`5?d&n5Ri7{PdDTN2CkV%YB@+lJWH-3Lg4!@xG#%f=H}7aczdAr)nAcCn67hPS z^}o=lz*}g19VM;nGR$|}-D5%B!rZMXbiQV;LVSlp1 z&69V>$F#d@i-r9y!tOhiqhHt>RwxsIWYB-xaTlq{7$B^h3UbVeAWVVdZB_bXG@S!` zUSYb0W81cEH@4Z>cG8$%Y};mI+qP}n_UX*I=1;uOUfB1#b4;eUL}_lw6$`2SXhyVy z9BR5i)e)uP>=|}VYPRpfGecX{L?{RK36<4MAR~jbgDcaUB>VzR>5)$L*8)WaVdY4z z?FYw5&6fqG0d#3-yKS^0`~K7Fq%QJcsGI>dxtBVfnZsioDKGhQv50d07`PFO0ZEK! zxi@e?(qtlU^IKPuOdx^=)jN|!SzD9+YiAV>Y&mrL_+7F6*u`Y=2~#O6tTfz);aOtJ zNEC}U=`-KhpXT2+N1!Fe#VY3m=ISfTIC%{on5h0=%9xs(_Y#GP8n> zuhci;SuzWC&u#-~#Ekup(sOG(aJnhWykEb}Y1~(P3DI9|HMO|+VM1CnyQu9PE1s<_ z4~B2n7i&&n2||SSQm=oDg=njfUfArlX)6i^h2h0&uJ_huiN(kvbl_)lsj=Bjx>QWH zmpNa%0yZ(qwQmPPb5rg1Ht^Qi{z0}RD?~)-I<+v_hy%W2Lt4v}A8tLIMlqmCWy!Z7 zYqnDM(vkC%USj#EbGTS30v5i~VTTims_x4N(m_JRejalxban*#*iEy7_|`h&n(#1T z7-B+79(>6IE^L#V#IB;d>$;T#5qp7LoxD0}0niuHe;?WibuERFaAXpCk8+9?FbM_Z z9jC#~7xS2fHFP4IXXhhybnLy0{XZZSIkk1fU#b;RmzRxl7`_ z0Gg@#D&Vorm`Xi+X&-xbR0Oqq_M&?Eje>SfuGLy`bw9G-o?hfA=9b57&u^P@&KZ2$ zy>oVFom7#P)!&D;J{2oZbGk~$^Z^zKKNQA5mo=@IePw8QP!|H0E`fL>d=}Q6$4}3H zADyCet<^0r$~b#;xIhXQQA(MNw<!NokyEfaH5UkPq+Yp@qNpcIP}( z>+7r0b#BsWUpV7ToM$euU@j`zxiJCVqdzw4tdyztE{W+zpi%OgR3V*Xsx!iTC3)&l zW|i=C2mu;V0p99Bv{j*I;>qw@0G(6K3At82AYKZWSYDec(a`o5jK|BUKZQ+@mr+1o za$T;futzCfP^aFEgEO6Ey!rY*8-7o^yE%kpU69-Oe|PoiV>4OetsD8z3TZ1D+|Z+jyM3YUa-L~BA zU%3iYf``Ojs}GPkeu;>VaF7$f%$E3Lh066ahqnS=!;C{?CEb4i`8glQtYIeCi6O(? zI~JDY_Ws=qA~sm(17NL#Y4C-Kg6eq<78|ok9w*ftF zkv-}tb>vGBojWykANSi{+j0e_xmG(H$3Tsy^wN5E08bP<;+4YzZWXl(3&qIO|A34c z7x3_-N|c1hCc`-ll-NgN;lwS0=iA zE_(&q5{ff@tCvRowR@pQ#=BZ)c(uR4uP8}v+{Sx{dcPNTq1=BdnL^|j9V88J&csbT z-m><8!bw7u6)wsgc)xK!&^EhUw>2O>XeJ}9BZnvuh106FfQS+QXTQFUTfDxCfRNK{ z=J(Y+q`h@70Jbg%Y7Q>xp0b$VxU35?738Ui9{n23JMAwUL)BrAGEnltimb{4?D3)v zePZqL`S3VIg@rn{mM=)GH{}Zf8^X`IbccQ-@t3pBb3M9dQ_i`#s6)@Enr($u1AD0SlRW9# zfF@MJYuSkTgL!E}2Bu(TMv{A=9JOu;^zagpkA$R{>9%yIl^%@X-}t@=K{hPWrRn~H zl^>4GG&iqFG#KWdIMA51voq&INFP1WM3ImcJ-aN)`r7~E{&_mSYQ4B@l8kMJ!YHMd zU27`VdInUaItjoS&pg^zjkgg-3|d>^sVJ?UWGzO6l6>Vss(oEu=Z=-Y`6Hsflji9&c7@G)}Ge19!TvlW=*- zrs1E_#G=dvEwQbDu^cVYJYI^P3kLbx=aQh(JXWJ^xrij3sX22>&HrO?Kn3-y;rC#& zOc!9z3<#3x^2+cs$q`Ni=C8j^t^{2~RyX_g8SSU;w9lY&qy(g%lT4vzivcwG1cK@P zW}=G}tHJH0_Qux}ejU$OX#E6B1^<=0XwqL=tuFRxREHW)+=48FcZ+0!V)LcEylgSA zvDv^)uR!&Kx)p3Mw1ht$#RI*WgLP&>$XS4P36npfK^yJ@*SKoEvA=CO>ud9;3Pncu z?$~rVmTknZrjn}RvoIvK?f)_v|E`rJ-SHvO5DBZ~`nvBMN9=nKq&XEi3^hRi@u;ol zm{Kn2JLv7OO(u!JTb{jv2xNurQg-{(R+keKxY(iS*QezJQkEpmdC;W%)}*=Q+Oe1b2bSqt&2j-ytzka>x{axpV{>V4A|0|E;9_br>X!(gaN~S zD!F_dvKrGvwbT02qBDaYyZL1JL;6>Y7__F-wOsOe889gndr8$`l<|65EL z6_aK15=|SD=~Jqy`oK~> zE{LPGV+7bqm+?*KF5&R0P)>9~!5cJnRei~;gYepvHlztj#qsV1j-Q5aj>fJwMQm=m z$)f~puA|rQ^rq|0z0$V+fsxlunhN|GC{#RqbA@NjGmaQ|Kt^&9EMq1_CX}^5Ld)dv zCpSAxm{Z7Hzj*HE+NuDHyR(v9CK5_qjWikOTpaDxEyFpA0yDe8W4Sqw_dyB=2x<;p zEM>d0T5QP$r(!^F-i&?e)8QNbS~TUuk;`Ld~tEopRXpOOH%sB|LxLJNV2bKM`A zi|EI6qr*V25c^&WsRj>NdgMF&agSezgpjq`qJ?d>{@F;trwVyY4+ng*kc>bkv!dm} z>zEt^^w-IqnMujwbdiZ7kA1ATymz70r|0+gm8-qX=IyHr!(LPx!z1+_8eH@_3daRZ zKq?e(%#&`an~i`<g=D$Cykp8L3+d>_UMoA@gKe}c4%to;V4BW!r zXF);jMtac{IDGDPfgV;ea_#aAHrraCI!P9;8f-oT|^>?{HXVM^eue_|37>{fb=fn#4;&*mP`DsLLT z6Rn_8%Sa$f2Gc42>0klL-@+l4f+>Wd3PWyehNER=L>y{BNsqJ~6 zc;ybgE^mij`e0quljB>n@Iw;7x;+O@2ZcxJA^hv}s^f)mJEu#apv$+Ywr2yX5Y^#< zi+YGpEd+eI<7ze}baHz8qQ#(5QYD?@C}cC5`eq%M1*Lti*NhOCUFpO(lNuUt z`}ENei$w;5C#_6DP)E3lA{T$gqowRIXf7VZ0Kxb+WE&S2CKIfCZV~|Srm7BgP}b8y z_%(wfre~g}9;GFd?9YVs&RnDJ8E5jYSyfDsMIK4Q_+VQ6FIlh0C@08OcgZ^R^v<$x zmZFJ_9~T=j$-g^Vd#mHf5f9q3c$lM>GE1m8L5QBkMid=~hk6O9=FK5dlvl{3`Z*Hx zhz(6xF!FSy_)F4uHUR(--sfKRLAm|1_RrUiv;m(jL|ZmRKAqhIX~it9A7wK7Ya~kk zSXLR~sk9W_NeBZXpLNQa*K45L!{LR2_bdcvnk8B}6c+xa?n*wdmj_N(%4S2BI+b25 z+tNDa6<5~%S4uN~FiIB;z4GZQ# zT7`qo=k-;-ZNn6dSx+{5&ec+qC%NgnQ8-I^pnUtCC)l&Uo4Ww2hMeGHjeyY;w_~sS zlCn4TSTNmecPLHcF0G@YgMSC?Of2gg z!uFS`bVg-ua7=}I_|qN=x^x0&)Pq;6Ps*tn^RkqgDNVlxTS3H$e)(>NP_P5(0YNvm z_-iwO*Ul8En}>q>SUY{ZTHIH1?lKU$HyV>#hs&)T{MMydg9#;ILDK01A38E9*TPgD z^!$Qs67vDXwhBeQc7=*iw;68mC)9H*s71kc-+SLM@Lw~VCPzg6JtL2>sDQfZomY!e z$@h$x6qMr%)QTl$Rv6}3;}1_K${vticzc@OIfo5RQ@yHxRV|emf|f zqUEH+#0kd!dkY@2m<}bLLjQ;>;A34qtHAif3&s|F zt3_mbFLQ4n^W8-;n- z`HeaUMC@1`oe0!Ak_>K|0ljFwOdE9$=6>2k-NXATwK@T7%^r~T!;3hrW5#-K%Tq_r zFQPJpy;U;}(SD}I2%(!Z$*wf~PsqY3HpTxxWnBN!UH^JaTeK*@o&P8=-BspMjLSH05r>clkfShyX%kZ zm>7vjB|aX3u$wP}8HDX@Q*Tk~^b%^^DLe6`qo4(6GG%$J8Sw_AM|I~h3%+l!=lqY` zE$j(TeWipUyynll8Nfl7*tmwS`hiq`Jr!w^A}89MY1S~|y7V3$_aG>p8Jz3sFLIJ= zYAL9HVElfT1X(B5r=0^c<^;2~zJyN2u~@yt|okZZz3@3nLV9~uPB*h&`W8-2dzV{Wx!7*bDc@Zb!L6wbC>W$ z5iQ-Z9^vY9CH3&0nD=-W39CRAG~Y8cXUmWKE7Hl>Vgc0~;0O%Hu* zfB6IqdhW<{-SGU$FX}@HeOxl<_eIqo*0CHu&T$zkoy#-j<)eEPE%{^*_yudaa7HHv z(-Xug>vidT{)*V^-W)}!6!z?%&N#}GHf3~7k$Xf&VI-OmHNUxqKJzB5MK>xUDmogQ zm@;cLsR1koSBhbV@|xPUz#fC&TiB#Ao^AO?AoyP1izMUG_!Q#N>}tuyQtD5q{U^v# z)rA~!6|Wwsr+HA^kxRZ=LO}L)u8%ogZg6h^oXJiq{{|T@kx9fhc$)f{c?NH_IE!@( z69wI=Gx?4Gn8-ep8Q-5UQvljp7yMf(YsS)S-vB$VGBj-N64SJlm|W>Tov%UWHeR|` z9T(-bmd=OJUzd#eUYp{k;EL3K3HJSe-OH9cc`Dqg*r8*E`IVirK*k`vD(EPa+|+qF zbrTgW+OW>yN&;$i-I{2{@2RRdpmC#1^2j78=3?j%*q2jvFs9{zi?4)avyV5 zX9CD$yk|8T3TjGRP5uogGSaLyigVMj;7p~g?-Qp=0>R;CVLvHUMA!e4vQ!FOo(t)f(HlyR*gY_g?@M>`o^+H= zH`KLTP9tXiUWk%?XuP>nW|t{)ts`BknP&(rrLWFuX}+^h=hapRe(6}e2g&I<$;dg$ zHZO94!uu1GXR^W@Xpb`bz1OwyTH>z+_dBK!q%y>v`E-dO0zMEjea+>!2b{Vks zY0jHUYY9QfFl}>J$?vOwuMiss@lYC6?|bXL!TN|5K9=Nmy%1=RaJriKNUcIFcRvl? zqA;OJB0iiSFP|^;d#V2jowMZizz&b${Di-8Lx9`?+9@7aEoS$OZT&~kwx1OVWnJ}A zw?5=pkyP}fEGP@HMA$#0*FMLIF9(k7OW2Wz_m%MA(8T|L59D10FluTmEjV53RW~#& zK!UphJAs6}qSudHD6wkQ&uFYU)D_Akv#xC{K}hLs_4{q>&VmwV5e`4XM1drBq~qZ0 zT82-PoR3>zSD~9S6;i@HSUSj{c$uZGQ$8q*ncO+SdZ>sdVZ!vD`HKuZ_tW>y7jSnf zixH?DfUeW0Wbos{l34DTZJRm9mME41U>##)cz8rz`79lu6EEW&Bx*}?AjzQ`dlQrz z7LBJ=(X6e^ivQb_%L%)PF*IGt%2wf0bXU-_tz$#Gf?aWB;t#2bQ+aX2`y($h20Dk zW|!m2Qa=!dw5hwL+t!+uX-Z=`Aj6a?1hL95bSYVaVvrpNfB7csD^c;AK1i&qci@Ru z%#Z^m_?^7a!8kK6Pc!Fv13FA9b(fRubg{*`)@GouUEx z8;Cj=?K&_Xeqwc8E8+;Y;^N8vD-H7Txj4Lw~$;!mGR4&oi}P$Ohs->jL`1!8=Vn(&o1 zh9XlyJWGqOifwqaivLj|VD=70XWLGYW>R0oo&^hRg z>oJf)t0OY#cwg0_l|EPYPa$mLc}>Owko%aDO}(F2>ob>y zlPvP*MOc(zvwcN!r@u{ylaj${|I{TabDs{Xz`REV9tpz*`WkoYcFOnd|3pHSrA*8= zzR}4-leYFI!EKqs-7^1Rf-iXMPiwiOvZV@4_9r4_5%l-JBVdA))W&3kN)VAxJoaN5 zwflLUvU(zP@;bf(D0Du(edE00K!R}i{;f5b|AKfO*o+-g5WyRDO#O9M4Vvl$x#e=Se?xwt?=3IMqFrZdN1HD$$M2b>Mm?~myOL{rh4p6adobER-A zG}b|&R$aIX$oHBRhLt=a)?1)|N-19!{H=Q<;okn|H*KsI467F2=$SHL#QscgtIK`5 zB{OnkjYyLLWWH}aVr5AH2`_@^hE)9v`aA~~F54TXl7hehd^VO@;JOHBa4G2Q$ZBJ& z-MuWoGd^2nN=YtA=r(B7c_X|{Bn_4*_C6=IE~`37+g*8yB9Emj-$YlSEZ(Fx-P})i zZ{|V5&T(RBH5Rp50x>D8dRc_lZC!#-P#7kRNEp*pR2CQ%VDA5Q*H}}94uP2g|I82V zBZd->rQ!=e@-39S-ex=a2w*wn*%Tw#xgpdeinH&}X=2N@@k27XmFuAt$q2sG8}Adm z`8gv|iBibN>7To`zDKem(qYL0G{S7%m^73iN-H!Psn#fQ^RrW*+n3jYwTtVDGpRw( zT!(@JsFKU|H!B~<^fT8j69@r7X3njJn+uube>hh3x-aPPI}7QYcT!Ulr?kZ20MAm~KV@mc73 zlZWP3d-V zc1?6bBmsi9_9LXl%)ELtPIepSr#R4&|tnG+sjTV-_+M zN9s7Ncd1ryBb(Y{(|!4DV?qT-j8W!I8fe_&bJVYd+#lzQ! z4=V^`au9PU$-?`mXq+ylMQCA(120UMiR^$hU6R}Clw0I{4t52k3#K?W6ObNth=P&?5Nc1*O}zgemF`L!!5(}rf^pFus1$G5 ziQM`&FJ#_UlibjWSAo9bFzmRikY@wD>*=@XxW6=*aw1w!_BU5*%MBzDT2h%IH}|t%RGg%8SON? z_qv&ga7a?n2FYvp=BNhcehwB!oWR;Yf2q%WCN?L(CKvvgTpUft6&=#U$48i0GAU@C z22u+kBFxN%xResP->KDll*Z)94gu5Mu?_TqMb38oRfdAar~D0z$3+tm+`NW)>;?p5V)>S{>h9G3$$U>fOMrgBfH!Rx^T0H2L7bo#h~oAI~jhFO+P#Rw`P?^ zpRS=qUwF}$GpH%=jquD5eik^khaBHVIj{=Q;s?TW*FJ18nP=(qLizH9Id5^E!>JPC zI5SQ`OT@fOpx?x@Z97rYb6Ro9LRdlyafK)I&%CK7QEaSac5Z)`G-xu?dSTnd8iqM< z$o5@n#6)Bd9nB=Z*tPKnfrxNFx|Rjgni!-%2TQQ9c&r@=vH ze}f%mU;5P*jF>N-x<(&%5OPn;JmSP1xDI`@09>d0q4n!X>W{K64sU{(gO<)PR2 zX{iy7pZ&+K%03FsH}F%GyS_=eYd7%9v%MrW)1Dakg>Ng$JIv?#8Pm{7|72ygp<#9- z`E@nfOC0xt*JHBsJ@d>3 zbV_Q5$OB|cOu&K}O;FsMpSi(e%qC8XVs9Vx;`}_?GKW8K{LNuDBKFk^)LbGe{Kx-2 zYH$|1^h`?T64%a^G%J8=#=DWQ zYXuzN(uNq9n>sXoiVjLJJf0spRHC34X=banWuE{xC>UXls7hZ|h4fMz4I-1mY#g`X zOwl&yF8Vpt_{YvMIa|}@GU{<6@=9v#9jBJdn9JBOGA!{EtUQ>hD_~yTCc_^~xQ)@7 zZ43G|#AV6rTBKooSD^#MbXw$JZLtEE)d29#{#r0>FxciOV{wzh{Y+BU@ek`Af2a<2 zLoml^>Yk0 zey6UTw^!o4o1Dm2r-!S3z#j(urlFcWKLWWoG&*tr3r2{Ay86aaAr)C*V{y<5MfcIcc;MY1i|ihZ&tR=?W;t0t?t(5v zr3kjW(EiyxiaL>J|s3EdIg7A=j#rBT*_(W|J)(=pfdb{3pj`HqZL0AQZmIznQ2aoK3gcCg_kF!P{WuxvN)Z*Lpg*{x zqdkR7RdEl=mQ8`xx}e!G5^(GA=o&zvPMb@(xiu!{X4SF}oxH2yg2pgaItFL}pkIQa zA}JqZ`tQ((r`+4KW+bRqFC%lpj3@>e7GmB%a3eiZR}DmS@dn(fv~vzVhE~TnSe#I6 zU6g%nD|n0t9I2vV4YfEjbV&Np!?(xw#g-?fUu+}tyBW)wMD`_4R7;&J$l2n9=_xb; z7?#5a4h^msHrJ&O)vrt@hJg9vOWW;93wJtTiKqoQm8MZo&{T_(pw(+6%jWl{+NG_J zi|&SDWudr)?5uiqHl>v4n?+iyEfsA}&8Mj^=w)1ht9^#!P=ToJ^6T1J$K2Z74c3>8 zH^Aq8;%#VS?yVy6<;IuCHgp=(Gbm!HL}ryo`%q2K`|l0*-%TdPJpi@J(xdFslj70g zr>mbho8W+8ngpWa!zu83aAA7eG4fqrKva{9I3wyTnyQtJ-m7g!u%xD^Y=ibpWEQKo z_c)(5YeV!-{lxEr513u7M{GyP0GgydJtIc;=?AXwpNHZpX3?C)!yMP zBnpngPwuC-EU#5%VZcG9os%06Ln$`)B1r?2g|sJ6WAD#FWzQXQs?wqAAf@X$FUefJ zhaJAJjYT*PsB(~&Uu%3-7^)|p4;T6Vruq`tUSv*dCKL}u+{94jcs)O%edrWfUn32s z=-e!DfV}8=5W%%5Sv%@kvX<8<@Q$!MZhY+6llV|Sbjl0kYjhj`*eq-$t4sW((}z(o~Oc0Q}N*Ca=cj6UP3 z59VGHzTF>`^-x)$(8xIQ@zDLZYfht|uKd7mW70-gBabIcxL#xiEFea%)#pZ2`ZW2; zWwmjeZ67y<-vB=pxz?YJae{*dw7Kk->RA+b6arLRU3+DNnVveg$S5*t3CTuLy;Wzo$kq(96de*)tPk zVb2s7n4mOvc5?ZQ@6nyzHhFUEkM+$9UEwew4Dyv(0q6F<0V=a%2Fyb4c+sQTvOI;-H2cZfD#??o0v0KgC??*gk9c?D5Bk1{2s(Yy?eS}dYZw4X&VJ0&*rb7XTR^ZeMih`) zN}^?0QKf-9g%1q^BLa5Y0qPDn=ux7wd-3=mTKaOn(+wVgk|~)~0i-$n3FZJ)fyasl zVpP6)EAE*;Y8`i9ZP+3~l$mWSp~u6Pyw44C(1a6?8+gJ??QTS!&oHu)vy13?bPp|%xIaK9SOj2%pvK)KgvE3HpCk5sD!lG1%U zHA9GsQ09sN#&#LCWvYmncHwSX)Lt|N9mNdetX!7U4u?0t(k?135cd#JD%!>~ z2jriSHXR&72JXs7g{Lv#42fUTtr2NpQX<18k~`tlnsufLMe>OLqB1lK{z99g10w~- zdM#!$3h4Eud=sxYqfwXm7)ES~(KLx>SZ2texym*L6u@+@=y9q+v6X<38%nQ5r^I2c z2IoLIsPk7N3pnRn20Fs zM3G7XG;@144379Uf}ww(1wP3*y}e!iO;d<9k4&ctG)yR&V}OBv+cs1`KUJ)iDZ<2K9FcapEZ4UHDAS-L4ugwdbK7uokdW3b+B-#Aoz$zb zDh`#=O@Dn;m0em4*5!3#ykx0j6^V#_O2vdLbh{bpk+ZAz#q;6ZrpCI}i!qk0Ct%m# ziK4XM?gH?7a<&u1b|Y$`iL^^?*HQJ&bM27f^pT9yTF;b+V?R)3dS+hjRR$4Jua;*4 z)GCZ$BaFc8u8xV4i9}>oDF?-z5=7$?c5lQ5+GTJrkLx-%RYh7&p&_o{tWGt{zhrZh zX}adDL#Acd!JZIgkS_{(ODtfb@>H`-2Hh}LO|(p2`qD_k!m4E@$zrS&$ETk(;{bwy z;_RBr4}E{tk~u==$exZ@=exW9SyUas9_ZTuk%5V)XYVOVCgx9>OxW`CXDdld`OR{+ zN0SB!XY;wiOnRZ`Eg@efhFJET2mJ@FJbF(O(hXL!T8+3K&XZ%hBA`8 zAIXJnw^YsVyMODy18=?^$U;H@Ldvh&AK3vPJ9AC&o}mpKl8|XwS}8rl5F>44)>F!_8=Scn@3Tq`ExhgGXs}L?z2c0Q7D8IS}|)gVorw^=mhh6 z;K_2Qoaq5U-OOlb!a3Rn2$L-x?_t4D7yU!%iTqe8%`P&v&p(ojpIH~7^)$VeJL)*N z+kaVz#Stg%?m+oUm;?o2QP<1~D<@!_l8Z|}8-Rjs|HtY|7r%HOMSE(NsaKR+wk_elW`g7L3G( z{kYSHn=EPo2i0~Lsa;08ox}yP(-dLqa5Iv4gxkyYi+ibpH4FpTxG-!7u%ABP6Zkkv zZ`BD2Q9)}5NW;`N3}<_2r>UsGPu8^uiwBAU(qZiEEtV=90cpXe7#F9)q(D)*t~Td` zcN81vYIc>p4=RvHXK_Vn(A`buOJ`B8J~Zf5M+!n_e~Hl*Dbx_A^2hX@*g@4@O%aT- zw36R8e|6b**)ah4*K=GfZAh?^-iNn1h89Btezuou{&`S&V>zx9Hwf6^;3Pwr4F$g_ zEJsI55(pDi>y+*f**NYIpqxVtmhh(x$Kwx8WK24aXKll5GDH~bDvI9@fI%jYG66m2 zrmr^Dk){vc0#~q5X&8?&a*e)*n{C?LA1yDDTUNjRj6d7!$87~(AU!WAgpxix=8A#d z2J?K%1zLnOueAx=zUOBfHJ}Y%v4lMDwg^w4bo}gu% zX>N?AcZ`2MEd(n~9E;EGL}9_ny;wO*1SpYoNeN!Qh({0Ce1mGgnpyw%2&d*51ET}~ zt4P~H(g21uHvas}=zV6?Ppec(`@q6r&lc0;mj-Qzb4>7BvP;fP43JY+70DorF1fzm z7@*?NOo!z+2R&*<`y+J?9G@@!Kj;1&#>No5U4PtO&TTtg$1;f{8=E-0GWTcYE5;$4 zqao9Xo8O%>+H-t=T!L#PV%CXY9ZLeLo6zXP>j&G-siv6GN zZl;s6-NBfN*WDc}_wSOx`gwgtUUqL%-?}|oXlMV@CGs^uSpKOl?j{Hw%xp!fO^fGn zoCFM%LsPsEO=8J` zuJY#By1{svFZ=m{=d7aX1z@5rGWKVl45bBaH_4~aqBhra4Da<%*8LtFafcz?Y z`EB-ZB}`7uWhH#|a~+jf-4HXv|k0=(@Uv)E=e)u$w z;t0wR0+Lm4cC;u^@O_5G4zV0H9tFUh6;;M=7>X+@4ZE-U`0ym|p>8Q~*O z@uDAO+!ZN>^dwz=Tf6Af(5%ea@Vo6#mr06LuPvtP!3>nJ;s+nyDL zCT56EiQ=jGW z$~F-W9|WL)^%Rm45X-x@Uz4ohJZJe55JKMs2RK8l*Dci1e;2)k zU->ZseNBu074KCT@{sVwCH&@@f`Kx2W#odSSSZ zi-8W{YrJAPZYPX>-t}FE8aC(SiFJytm9WYFhKzWK*xqJ@lLH_{{gm!QT}uWf8u`pk zUznjjtMc4bJl>W_pNJPn(kCNC?}sS%z=!C^!wdjp)k9JW?)I zusxc&=Gjr*+GbY!G{d9XAbfEA7IuMi;5BZ_Vi1Fqjo_%cwQDxp?nz zl?gSkrDf^T3%jv%@x!EP|C>q9?<0z;ywJOE_$i8MVOs!hlAZ3%#g6eb>KVefNnx=( z$LU8cB%vRk?<@sGD8C%4(>?G&PM6)Njb;z(L*xw5G0A9%fqvzsoFA;_Z}Ab_lcT5g zAYQl4T)N8eNfS@q3LUB?Gb!w}&>V+wa3%icC<<4Wu2#)w*%% zB{r7hObmA2*cttq4n59JI2*g1)&(asUzW9>&R1=J`HxmSxwf~x^c6q2^n-4q-Cq^v z=CR+Pe+axO{--7X!)Hx}iG=*G+xd@n@n5%-G@03Oe}9gD%yM5!t0i4jjvyljGJz`G zI6~E9b^39}4HI@gL731Iw~3J?2E2B4>t-W3V9p9HYC0Dja;M>}VL?3}$8j2^YRIA; z&k>n*=!t4E0vbKKBy!Gvo3bzP?q-4WtA9bAWLkBF6gD@p%m9(rD^7#)6;QHuZ26DaJ>OW-w3Rc- zG|>F;JVG}!CMjT+36DizH9s!aJH<1RO=#yJrK!7iP?-<=-Yyx#2bDJo$8#kBZOe_e zexDX)f&uFQz#SdPeydJfq=QP3zx;f@L`f?hw_|K*Cwu#{P4qjfP30WgEfHqH9^H}? z0D@0m^2r<~J}6j0H&QNSjb|gh{+cU6&!9umYc3)d*^0ii4SMU}CUNyIvBd2h;zxik zEF0xVS+Tsvny)Xb%!ML>eJFPBH)-dGu zbc|R^k??qgh9$@|KdxcbV>Y*_dBX2bj5iM(3=y-$tHs`0T}_Kf`K^J!c1~`{`S)cL zNryfnf@1i+roIaRn6U^VEWe7MQQ|`4ktX!KY+ix_&YBvr7pO%#=d{cR$X3qfv<)f7%1w2#xY z4Z5Wj^;{t%r1!0=349F6=MSAQs5dwbN`fHP4Me~qU$_o!+QOo16 zUZ)m&^#Dzk^m11qC|jz)uY8(3X7%OY3cU*gEcfv!ovU)U!L%wS4wL&!`|{#3u*jBx zS(T($TXDI#!}Fw|(=VWhj`{ihagMUfA=R_zHqF#6Ey<{Hieb;uhTfTOC|!CA;j1NW z&}FME2}dhyoU##^jOL8pvc7dhiOuoZim71;sJJob=rJ6~GuVqwZXX|Ytd^YqA+!o- zrhDnAm20$C%{F#LquJelL3Vp>7nLT!LrK*v%Wo@>7MrksqcTC~o2ZAs6@?J#Ds`_6 zdDjOleXa8yxXSSCjl>odc|be{4ErWgqW5M;K*{EEi58#E2#pQc=8Jj_KU=9zG@G%3!lQZN4Me5_*!^))h--$~e zDt};t#|JK0JMwbnWo}Cl`(XU+icfo*d#YFni>L!7WKCC(5-xjBT3kNGE%8^oCGPoT zi6_INkHKOjM! zFy4VAGu3L76{q+ygHY!|%v9XNxP#ZlWPcoUZ~D{Z?3DgMh!Jm_4g3FC;O)EDKTj|D z+2sApABGJepeUAy?(YAWSmou+xH_gz8~lgm(P&l)lTmUc2XE3%S$+PsHmmf(BNmd7 z@(nO;ES*wPMtf^sPM`e+KpJIpm*K7o6_-J>2^9f1mw~tjDSyRSZExE)5dPj@;g8Bt z(;_8`a*F|TvLH?)#s2*6c$8zga*GaK`^6%UsPx~vvZ*a zO9Ycj!H}K1J%5=B~%J?mwmZw<{G z?iczj@Z)}-F4Hk(LNFntM`f*P+Ak}+Ke4volFeE9iS4mx)bL=-F3VGDI#VW79!n;D z4vmn7VMMyE1=B!8Ub``4CWnH}Gnyynmkr7J^-^saHBNPI*P&i&}3t zrhJED@5xW4;9L0R*({R?1s5XChS#45w5ONjn8!_d644rTSv1Y+MCTl(j?tdOB zoGCx-jsN{57M`h_tSZR{3Fbs(#s^>eudUNRl0bw{UBed~M)|=;2Ph60SCO;sKY;l3 z{0c(Km46K>G-9u6#a|>P*9sMfHzPql)rF>*fOOd*aFv4TJbZX|G7Y&8$W6P%OxtQoxJgFug+0TogMiWU8ut+`XMn_oR2i#{W3WvU5fO7(c5sN8e@nghbByt`N)UkZb14zhx zmyky-f@bh&_%dq?y`8N(Hqbasj(G86{8qWIl4KQ&6R6ItYcbUfc zDaWh@(T4MPOWewbe)~x${0VN^a{-(=a#*3A!j+E!LHQBn%kW3O?B1&2(&TTHd zPw7*RS(KGTk93ugP3=|s8WvaIj(^3&V=NwgYZgDaAp;gaTK>(MFJ(XL^#V_DeYrTD z4GV0rREhoa5bjL^WjEw`@GeR>P|hHyr!+Os5>qyAovk6^d-3Ks*D&SOF*EHyh@Ytu zr6P*Fcil1vomoQN%U&sV?gFeeMI=3&R6vpg!fJ-8M|v+?8r#9zPO!RAMSn_yu1rl$ z6M>Pqhc%I=J%$8?+TaMN-J?O9s2hThw0NSz-g_^GPULpB|u0wF_I*9LH)JRv<0KqM>=yRoa zU%>=W)23OYm-&&z$iWI3?tdP8i#LDVyj#3{KX%O|XYpgUYD|&Upwt!kOXmjM+@#sD zJj{K;;&_*EuBxt1%FqliSC*nC_Ql2D-HBa z!fe&QG^@r@DtX2@1$!sLu2m0(Gxb3CC-1*uIHxW;Qw|kPD84?P?ti&t4^TS`OZRfk zAr0a!$2PvMTN+;4+QS{j&|&{q8!hHS!d&QcDw#vy-vLg-o4+*oG`i|aN}t?oNP@(J z-#ffUf|iz5OTyG7Ih;JD9uVGGVI5-?yu+(`z=B}(PYk@qV((9Z5oO@FfT@F$`teVK zQ7lFZO2nPsFF+!OLx0N8dwV3|#rxIpYYorrhZ}l^+?-~mu0Ourj@EJ!5DMQhR}H04 z)9RM;MA*N!Ax+$c$YIa17?ED1ZLJRCJS(!+{aNEw4PTk%9{#48To^`7z;;vouPmI?7C{gX zX1%z6@-H_t{h*f-G71y|F))|m0SPFV&T9w?0x~d{;N}V{moK#n1%E{l{_bC~AK^py z_I-9ygp^XXAc0ghMFOe_InFgPwSAHAOj~|E&#WEr%f;OJLO^QN_1(N zvO)>#6AA5-ut9lYwda8rE@~ba;SKS?2~U;>K?I$JNraGvqadAylORtcOc+H}EUc|a zc|yF`%H>BrK}MJtmU^BOJYlG3qU1P5?-;}E$s6uurBQLT4&vWQBYVT;H~kji{N>i?F&kHr+7zz ziT7CpuJa-9GJgP2VXct>t*iks_~^4-6h7r0Apkz5h&9Lnc_zzQfhe+f2_SUYyW}v+ z(L&%cG5Z-1#!UHH6wu-rMc_AP4TL8opXHn&L~xWtK_;&OH3ASYLTJen+Y$kA7g-m9 zr?vG-2_nTdCul^?x=1KWdA|uWr@*=hV^kjdAS74Rd4Ip0Cx$)56GY1zgpbiNP6?S7 zeavsIhzw)kU9^u~!MmbVa!V}L)bG=JHJ;VY>Uvtq`E;_Z>gs(XC)Ip_m4CU;ktARO1R)cwbwNu6@!zuY zg?I<1O|a{YD1Q3+7ooM15$OytNrmiKtY)*ze}9lh5*jTd=((G;i$)^lyGmQcPj$5f z^dvnpuA8)>2)k29X`P$|LG4PvtQL(pI}^oAkcVd1Wxbb%865Pt{sdCOQFH%}HV4o8 zlV?7R>ra@pc)hG97bP$uiq|h*isEhgsS%gExOzRlDM!UOSi4*_HJ@*e^%+fdwOUTf zdVhW9XXO-mIs#uvrnfaBhJhF z>@%7%;QQlxKAypN@W`27z7&f&)?c1%wnFo`CfPO1Cna*dIN8#TYDKyjqU$Zl8aDeo;*8dR5j%Qu{c&_kAaZZ;|HH64Lv~c?b*JG2KVTF@G#< zqvmuhq!ujD04(?o6Php#6y8cy@1DT`2k}8=K(6S8q__47h;TE%$P2Vvtn-I^i!EjT ztC|*@>D*^O;QLnD*GMg-Ql>SSxkHpxA@ph!|k%(G@ z3;%A?)+@NVv$WRvbm}H;3@XT!9)HS-?Q{L~>fllM(b8c~Sl=%vw!L9PA3iyhcHCed zo-GebqluL|_->v)=G$%dIoX@8rPgu-YAvTW4CBK6Ko6suO+kazWbU*#MVCd(W6}v+ z^YP&oR~JS(nN)7kZOar3NNJbzm)rk|dH zn3m&)pVXi0rkvOEwwcd{7i`w?`I@g2q{`PQC^qB&eSf`q*nz{m!*;EeS`%NoNQ;a^ zXu;3afrsgUhh4AA)3sHH=*vi-R2=RQ+-^beD9w;-DFGavPIoT$p*z=hu%P9&`)%oe zMqs|BT=redW$zFC<4qqhd4JQVjcJqi6r`dD8J__JcX}eNdgHPF#s19-JypW&mQ5#vDYm2!bxof&TkY;YJrQA^zT=kO zH~M}%-cFxrH|Z1Iuz&Q~EApd7p75QaK~JOqMlpIe-(KS1*Z1zh-05wFu}M0VTpFE~ zRV0i@%i)DaBbiJ%Zbmq0GGgeR98V06)KWhrH2@rGP~&dAmX0?@N%Bu7xbuto+Y^9; z+#o8usj8bCy zqBQm6cU$fndi(72X~JaEzHQ2R-zS7%d7|4zqFr>l6D-mRZx`JUMH<=Kk{dfW!dC_( zk#i>bV8j(uDxsxC2|kK6j+zxL7fBx7*HwQzH@8C`x#5UMGZ@sxwyA1Ij}}$kXDnA4 z(^+;LkhkA{ANQH81yeG6+4(pVXWQ|GE3;d!Fc=N_HpTH{h(;=y zgxsBk5XbZE8GTF z!!o*?w#(7u5AM_bJ442afB%G3_Tm`e)4{kXed=tzFf)4+i@IsOZz{6>?rNBcX#D=_ zn(luPvET;$dm&MZ1HeAPk=uvs$@hOhy#023)8|eCy9)6##?wRX;)XZxfBNy8-kJfB zcb{IatEmZisJ5767cviSBR*cjXcDtnewyon?dFA9_Su^Yus3gC_yUSj>Imw`HT7=R z1SpfyxJ6aA{%rid0pNADX&v(udrxn(hA8M62V=!Dodgf%$9ed(|Iq6^v=4txZJzb7 z^{IOt9DapAACWPLJdnYq+pde=ew0d<9lBX?W@DQbF~dCIi)t9bs0ArRg74wgGt=MdV6)x=qUV44YS)S@6-;zW}uJ{d1SBiU1gbzoiu8|adpKvr) zRzqOkd%6Km^6ROSG}b|1P|$x5%c`LVmPo5Ey50%BC{6Qdyeb@Zo?yyJGXfK+UHDW5alS&3oRm{&(13~93^eYWl5@C0g#REgv))n}^2_hCywq{MG!FbdO0t!VjbN!E7PrODz z+Elki-wFu7iLZW$5Peku!V|*1_ryJA^*5&jQcQ|m3y;x-liU0jM{%4&g6G5;6Rz`Ll?T9 z%x&rH#O)i;*SdbLz6SkD@<{mkUfCIDJKqek$%P<)j zPDRi_?FglILCJr@hjS>=Q1xewg=<~|xsMS8hr^xEzU@wTy>taqEk8(E?4?QrY&O1` z5E$opN`cz{$)WR-do2K$O;uLKoW=!cC2Qs(5$&!gzWadpK{jDYa&k5$yPp)QowZM$ z?U;d{r7TfLhqJS&tJ6Y(W2(wQ=70lvD0hFsa>9arXG*%^c{tYLX`!v$Cn3ZogA=>AE6elOla@cA)j{AE<>kga1dUWd8DsGN z;#1e{myk6K!0l5krNKp>9qB~`>K-9$>&Eq=LTQ#CNanV`b+cG^$vH^hy(IT5Xp34! z|Fx}TZV!KTd-Xh0xJsCYK%8Xc&%lc4!;1Vnv0|nLN@(KdLrjurU76lfWSYQ1wmXP? z&Y+X`(V+m`YJ@SHitSQb@-f1QZt_OKe#lTOieRe>3()oOlR`gp%;{h)Tr-1 z;joLn_udo@`m%?%@f4fGp_(6lFSQ_6G^*Qoc zHN_6_lrLvt4%UVv(E1V1x?4Q#&@Z7-VsIipY&vS7gVwQK0{~kFnFh51aLi~^sH~Gk zUytAX4k76Sj+f!C3KW--+XfW^IWd>v<_am7@N5JHe>N0;@2~LFrUWq~QY0m<>wviE zCEclq`E%k}mBKAf_maJm)*#xzV4jCjR8r6Mye_ zHh*&bQu-50Nh}1L%&#U?1cb$6A_XUmhm-ko^0W8n!LRc-{a42?L%Q<`BO(mpm0A0$ znk^0&f5q=AtMRMjmnlS}?FbyK=73IN{(a_7vVx=n_N8YMcl`0NcPD;O zo)vZtH)R|w#wbWGKyvoqET^jqlpPUB2olI>U^gByv>Vvx8o&|0w^p?sGqEcIXwwVzW@+1GVbrNs)yJT}mbThu49l->EsT2+Xp@D5?m!!dz*Kztc=9~hj? ze`%^%+M|G6@EPD1#UzNsJ&Rw$_S{1gk-K4c7(NR1GX)UbEGoTh6TO(Fg{p4fZbo?_ zIq_NVKUtcmjW!Aa?g%%h-esF+%``3SY-tIrE7g=$ZC5mF)mY`b{dSa3%Bs?}Bf5bL zxNmlci4SP>5bO(XYiIJZDAQ&AKj3t@f6zBgrIKdeLL3;4FO*6WZCxLk76>m_DD$n= zq|!}WIoSav>Mhd*BMd&5ZDSXeSMIl3>gqntV!|cATeW@n9;#O9++g}U{?jNBnn|K? zCj3=}%5X+_S6YGWx<<9azJ&2$nt%)T z4}aoBre`|9z&}D`v@^EWLplKLLuP&NDB(U8|H^;SZ9#rV?AlQ<2e{0T2 zB=~Uai}RCr7pL=|7Ngk>a#kGiL3Z`M(H{J&DtBrfMe~BLWYmluY&qO?Mw5tkY6^s~oPLW`~u=91gDqMb@(#R+KVH&gf zLkg$pqoZ?=`P(j7o}Giqec?5#{$LAkUpj3fmtvQ8(rSZib6u^pe~sVxXfrYlD!s{6 z(yhNvo3)*Xcr#i}s4UZ%<0U|4x+xfBmU@t$2o~GYd(+m9ePvn+$-OJp%^;xo`(0{% z^yc_XB~SbI(Nv^nL9^C&fNFz*sw;?jWtFQU(PNUiBwsak@94(+e@u&|-M9V(2D;BF zW6yuc{h6qW;W8zie0bOblf=qrn53!YJ-P zIKjO6XI37q)4wp;J*yLyDJQsjnU!Cy)8VTT12G7&Qi^U-?K%Cx`85W@RJ@`)FxH1D>8k*s&wLM$!4k+!Nfo z8idD$hI}t*e{{WPYiYIp2ArPUjjY26HYVJU9uF*@kHE5yVjZyf6dc(FLtG)ro~1?S z1_`oat%_CG+jL2+`E)AEO1A-hxo zAf)X3xDi7=6MZ_)^N<;C_;$GE1`nynB=&56G~`AE^Uv{)HdQuD*riq}+~PgO$b@s4 zDsaXae*g#1?K~EyBUu{H);EdXm_j75H&`&@a0c~^5n=qGyIBD$iQqrn4O2fNtf!t! zmbxy!bTX-pD>+OGfr(p_`mw`0`DSxe4 zS##Vr5`Ooum`9FFgo%rX^Ag#yRZgvwl%=RDWpAk{5~JaYL(cNhvA;gu0CDDar9`|b>K7Xn;Yu^GHtp9!S>zj`eT`*<=NfH6)YL;gY@2)<+ z=gg2UWssc2VKh*tRqo=)IFXbt*@eQzP9%g;IZ%Rp^knUeKzh5hTC>=DG=le4+Sp-@ zD#e~^(lzybA!{R7;1-A__5>JoTU9hTj0YJO1Tl&*o-YI& z&xbAeuOZ$yDp%hEDym^?;N_6QaOTo*M)iQXS=lu8&WsFeF1$NRxFxsBWd)v;rCm{1 z#OZvR5E{mVPk%mZ-nl%_Vt*0_BUMqMDLd6{(oDStRVDROt1280kv(&D6opHjOw_}{ z5H?*?WEk%_)4Jl|iPM>&({6@mZ`0~V*@bIEy-jiBuBaQ!Wn;dBur~_KhkGoTp8$qw z-TntiIYWv2QvK@da`6UKC~Sk*q*3%uFyl=YbFLL<6zK351e z!DNDf?b0X=NfeH-URWV>1xRJ@F$ZN>a-bBTiWZV5i3K``IDZi(f{D2_H>$gY7y@g! zWQjvUS@d0p0R`ob7-&>m{7<=<(m+7Q;r}038wUT3E8OasB!Vw3hwN{gx>DIK+N!+1*LU=j$z z*8CIE$E7qCF@J$u@l@$_zXt$y6)KYODGRwxX=xTvxN!fjzEdAc1-HX#2MRYM6w%xg zEIe8ifd{5iXAuuCIwl%t1j0u z^X!%Kxd=T@7zuDFbrJbd?_Zle7NFuXfC1BpfTc>pJbxepaA`Z`bSaG?jH9_Zb`Lve ziO5M1if1BM@Oa7U?j@|W)JNRK1Av)@e0MLF51b%F60m3)TDsuCB5q@>0%QK9aL@#3 zcHGQWg~cT<4T=1X0eOrZOzKh0y)O_zx;W4~_6%$Wic+~N(PD>O!G}FwJuM1MW*M_J zD@PlKfPa#Z%?te3SGn30l@rz?=ou!&wne^#qNy#a%nAbKj@A@H=3cAO*o~_0%rYtj zHo7iN1>@65f<|Jg*#tJGexj4HaZwxb!K@z`9)p$#V|{HoIGY;@4j;qq^tZp9-=yVG+{2}d4%FDC?JfES za|U<{{#{|*i`aWV)agaR(biDvehI#5 zS&pi}^t>-Rb-quVR=quI(*5?`zfRAO_J3P|XSNc?i5y_jHux4UU}SCx3_cfGQ@8b| zGxV25+e3Kjt@EzW3(M5zovBJea&X25^cK_Az17hAc#q9O-Q?H^V+U1Fr|E%}qI`r_b-xA1dVdvL z4qLrbxEw5I%k*aR7nTI6?r=qDbmJoOY=45CU{R(3;<`wX-k+_dG!B4)`fp#@mT_oG zEUU_YDj4oey^zE1MFsGm=K5JF@b0(R5b<~j1XHELbc!TBwSfVn&vs=D1Q?q@01ZOO zBcCk8GoR)J%?01 zL!j3xiyhpl+)VVffiGpT8C>g!fKFe_M8AIMFE%k~0?DzV zY%Qy)bGPL7-NJUJxKh~zP+ShRhGn}k-$$gZdzZWitaPbuzNf#Pe=_`S$}f-Y{vB?M+XSknpOMQnhcPijSns9fC|GyBvPHDFGq~E zhaFVz=8*&36|Cs0L7(B^%h{{dSFJZVWZ}=}8%FEl9~>65p!l`dZ=5h=;Xzo~mf6BB zjDEL(Rek=$P(q@I0zj2TyPMttXBYLt|8SP zfb~T(zS};n%tIn%Ja5EWRU)RkALRlWIr<2rMy$)`*n;;@m@mg$G)0pihmiSWh!y}b z_-bAd#0#nq7q9*XvjYUsN0;HQ3KRh|mw{~p69Y0fIG6F82q}NHSzD9SI2L~ASLD%6 zP1Kew`N9?tFbou1!=>mRwzh_?E+tVC&-jwE9ccdjo{Q`_K@I!BzQmF&OGls1)UhLbgGn0+0t=py_ zu9imX=yO|cuw|mhAt|y#$W%>ITrFYWwrp^F5at)yGJ`Ff4NFpbiJJCG9jZp=}O zHH!zscC&FCZVqiwkhBnmK9|H*Zaus^+~MK@d5T=6k| z9cJj^IHG@t!yY{nD~R4w=32yAaei0?v24mAB#thGlIaY*B&WrfNtQ+Zh(@{n$|GO) z4#4WT)B0zFSP$GLD6w(uUAH`REyDM?B)Jn%*xJ=?=NGGOv*auCQk?7Q&ee|99j2=^ z+8&$rP=ft%*LJuQzTS7vf(RS#_IB$8EgQpvuyB7W$18ykw8^5*)fVt*cHCX#9(&vD zT+aglGdEb9O&)C>tZ#>7=X%tyBKC#{ufRrRV%wm#UQTuu_rj<~Au zL%7&4<*>(A5q(tR9!)BjUS1fhE!??|{%Sj(eG-`8vvK8&Jq{2Wn-am|0nk{Q@y=gp z^X7j&zd%K+&Sf(!Tji>u01xJWs8f1Aah;Uc6i<-iPjd6m*{9y(sa0ojt4xRFo!XL z25Hi<#@`i#(D4hxCebG~>bVaJyur&(V|0J>JQubxE!<|aTb?`Qkf>*#qZc821oQ`eCEz=W@&$gN8 z!X)P>`xKj)mxrjgaa((=2JV2G1df?Q^i|V2!65E-Zn&%M{oS~A;LK8{BG0G5344D^ z(8jFL-Y_uO1y2TI(8=I=IvLDf8P$cysrr_~)rjPVySu7g5zOGKDZXg5 z|Lb-PZVf*Xl2Bj(1XDR(->dHV-3!;RyYeu!!2p}509SSvU~@WjU~%9oDw&}D@Z$By z(2A;n5IF@M^j)Fgfq_!Xi{SC$&Fg=+f7}F>Qi?R0j@5ca@9aPZniR&n=pyC7g~&+- zA*5snb}?s$IgNXzNY7+cN&!(x#!a_D;v{07&eSFjEu;lD{G|JTTrFh^#v0VaT*OH- zS3?%?X;8jI$aum8<6Ig&y$@aqu!Z#7D@nh1CFTdG&i=orRuBoor;ddxW~YDVDe7E2 zBjstiI4B;m(35;Y@+s2O2|%M%4k5!4Q33k4rqJ{m)ytu|O0*s=v*?)*hql6FXzx0E z?vM(qY+|Q47Uowf$%Qv{^zN|}F13D7WZqB^{>6psA6SQdDvPmu5F=-0NYJmtl=&#GP9 zK?JS2i_R3E)E72UyX5%Tb|i% zh{WT~u8+h8f#X=bxF6u@kzqK~p8zK)k|Hqkn819As^wNZFoMawvL1g)FKJ=Vql_JV zG8qtX1pjEc-7g%{`v3EZbFdGTrMgz`d1ACG-w6Yal-@`l%Mzl zJe`G9b?NTQf%{Brpi#F?TN3rb2peY@Y9rk6 zJPrdq7P%qPs+Qt0HCKNar-%I#Kj`{l*@LXCQ2ZW2_X~fEAdaq%J8q2mc}Oyj?^+^{ z)AtnJ2{0b?j7B1H^DN#^fBy0&oZ2g))a1ioKx*?q@XfRIQ~)6PH?AKUO_q<01{A;! zU3t%P`P^Q5tk(lw7Ybbav`J^ruE0eg)qd?;E9>~KB!5Y z4$Cyf`SJZQ9Qr5M*E?`}$CZGT z?Rql2>-py2^B;dIM!q^vrHx6W-gz3GBw8d!hcq&gdGtf96EHoQi6GX3vlEmwA7R2p z!4-fXK*PnJ<;UUJ@0W)o`iP20P`&+pety^MaH^&Z7j^KtwLO(8u+3haS_s={ML6JH zhK$Io(zk}T@=f|)?LMTTG!0^zL>s5AiK zHuncGMA?6OZc)K$o77zEHl3Xn{7-p|WdYU79Q*utf%xSf5hI(JB2gN%Xzc5&3Z{=NT7n zgqb}x9D8az(GDra$Z;;{3git&`_Va(= zeR%h;hf3gTmY}N)S#wXJJw2rnW=t&}#9GE0?l(CD`_Pq5&?Ti>vAJ+bXGXXbo5;jd%v?jE`g&;gSs^Jo(+ zO+hG6Pk+tK!p(P568v8SxZ+Ps@e&QLP)L7nAn5O?{MH$8HVM<>_`zrkI(cFYub-~mu55pv zxUpVyQG}5|8m7r@Flfj`oMQL59x%0s)+`_tX2nGrRD%-Vw6$Z=cb@V=(~h}&?+st& z!sHj;nY@xVkZ!bNtFg$#kKI^JmiS*-=lY%!0_ggZx{(vs*o&hc(voq`c&*sxB=`#^ zrJ%J`diAr0J^SX9=}VJBB9(!(kSY=7ISUCf=xo++w~zh{bKHCqmvP|=6_c^E69O_Z zm+>MGDu1n5S##Ss5`NFG&?B`KVMrV#IB&M&aWYAqU0buM-SL)-reKR@id6B4$NTHI z8x2wu&gqhlRhmc;~y{)AhTbe&Nv~2w1EXU##yJf%I7r#EVc# z#$~ivZx+9MKbAc5OjT!Pv0TX@@UkM!+l{Gd)_-gb4GQzL{LlK=pMHsg5l_KkEa8)u z+r=NJx2ONQz54c@h{pniA(Nt~y)Ua>(y-+!jD2t2eP?6tlQwT?LL{AB$a1j?;+P4o zVIY~5A@Ta>QuF>6JeD430S<(h6dPLES6R6XyozRnYu7}W)wFZBt^g4w zmw(_Jr@}n1w71qamyM6;|TFYQ=SE)jGqIYo<9LGChI6ujlKJ-#*Oo z)*%ac^s1OEp+e>Z(MY4n`s(EJ;(U&)Qh!W@`pwI$p`6$2t4|+hxrG5!5H-{LgD)LZ zK`i1?K%AU?{(f@x;d+jH6tg%|Q|`dr`mIJ!F&R3oR$gWDq%m%NV{ZIF78yC*ibEjE zFdS>CK_>;Cf+KyMR@oi;n1?(B{GvDF-nB_BDY60t@fX3OLKwlp)y2ET@0JQ|C4U_S zVN9poV@Dz{@LwLVyqy0W|5y-APqNVhs9lcS1jdmsK@o6&U(@|>_(XsgkVuF8ITV30 zXFd)B@5WdD*Q81@R=2do{XoNVK(l1CsZ3pyak!Tvh-{PM0dW);Y}{*yr#P@+;cx+_ zXGC`L_fK>9alI$Ar5V~hO&Tj8?WeR)6mg3SeZh z5W-F}Awy?{m~jBcm5>0CoCFAB)M5aR%&1{<@l zOzOZ2=J##k5T>U?H2;LZku9Eq_HF#-X z1ANXnE~GJxr-S4EZH_a?1b^GdKqoe`jl8lV_9!7Jm7uiDX%W*o5>Xu5C9DhVuk{_+ zJEJ)Uxg8t{YoL6}n(ZrhSw-L>LQGO(b>vDB(?OrVi)3ePmhl}Hh5A@+7lrVVLneET zJs+|sruDXL^9_w%)}cvDC<&vis2h`PoH*G%t&&p8y3X!$gSA%>dVe3S8$a2IbOqCU zR}Mnn6Hw`l^Pa6HCHl`Sh)Kwm2bCQ4g_vm_jBkcapRzosQGYL-JX*Q-4b3nt@i#9q zScWV8{UD}1NXS5AIdCj@iNwVfY}wGly~uR z8nHFaT!w42#$4}{sy06lQ)48(-)e*PPb9pHHrtT%D(|jsXd4(l(>4i@YX^UW$-yo- z%ZfRN5Fkr*$Z9CS9ZJBqv+(1{=?3bMFIN%@vw zY#dCjFvsk=)aZ&xMUvtff;m`l0qPjEMV^sLh@}Fbt{r8w#qN$q#?hxq+ifSa@*8O6 zT9@?FvH<8*S%2D4x^uY6Q5j8JxtzT-&DJU2MGqt#rQ$JTYC&ZLVVLLT(nbTtZZzUR zE8FCt2wVwWC>cybIK6LkyfD%ZvmwsORpbkOf?cCHw1N<}%}5D|M&aO3d)Nrz?tad> zH5OKSfaAAMNjBT+DZoYbb^++ea>&h86#&;9JIzABkAJGM4pCgxq3(5vE6&?YK{tHi zZ@5@PgX|Q<18s$wfs+J$y%V{QiA@^=-BZ zi&%I_ZGVp4<@ui%Zv|(&2aCDP3Xl>-6XwTc1+?~=?lWr#c~jd0q!%RtK9*M)kbOG@ z>2%lug;;J@EB9E^cXRfQ&sn#|R&dY_MT`eZqBvk~5kqGpNDl71F6bo14&@PKfS;$_ zY=0hh;6s9Y&1|;NHe9%<=UD5ZAY+a%0C zn|)z30g&0}iBD_V_yYJ?<^}D1NnE10%5z7r+fJj1iET6Q+?e}>^u4pLrmIj<7^G6V zAeF9(z`>wu!znd6P|Kc`J1h*drZMJc41W{hojh-DeC`)SaN6eWjW7JAgy2tU4KMV? zW{0QBbZ|d?R5g{WD=gl}!n?E`lr4u~Ho3YJUJ2!`vt0?;j|DA}USOLMOYdvaG_`#Q zj|l-jxvM*tXJxhTd1hF9sL3-`pcRubIIs*Y6kAD!6eFth^}GK8Ay)H(3T19&bC>3> z3J(D_mmzoo6#+As(f0@`f0bCvcH2f0-Rmp38}J+p!jk~98oi>CVmh%Y$7fEQMGI_+ zJpus+0A(wi`SrO~)c^s8rZXF|s=9%$$E`=hn>;!^oNEb5j(m6z;PZdyDF^f1L)2^M!s?t!3r9 zd@`lhQ{Smg`9!kVxhT9XJ{CN&SO=}dR}X2&0YrAuC%P*)M^6-Ru^y2 z7b0oINS&L{o*(6Gsyw91r4ao~H|n6nTcbG+x~!X@xN)3~6~tSD%%ZW{7UceH<`hOe zD2r`n|5vJfmJRo2EwZ_4+lJgi47-Jhf9bM*m7O>0;ejIHg#a|`rHh`=T_&v`*6|dn(d|oYb$%IM_K9hIpChScTX5aL-&MH>`)YX z50QX8MEk6Vh`bY!+6~vLWmT~ts)9fk=~r2PR~5PysTjcTB2V!00jt01q0S@L{=~Wb zctsWATsYAh<)g5Wq09luio#;0lzp4Jda8BP^a<4ae|XmUn1Z!~}2x3zQL5O~#WvYn8yx+nCUCJf_6QnECh~yA#XoCQ@e}oUP zCywm-wzn;mkOr$yRPCzzxjAZT=%r+8+QA9zF55y+vW=u2mOuhaC`_d=9h5*yAn*(u zN|J;5e}N6%6M_m5h%deAX>VO^C3XW~1e`_nq zx#7CL(uMH9NGV5t7+s4<%myK5gE(k5e|2r1g#u#Ga0}TdBC!obm;NBdg;4%L zgXz-!yi|ErF4aG5uh@{zukEU``P{{ul|Bwo=rjyk8V+)iI1XAG^g)B@lhh9ge=_T} zt~pX^*B;X@Qji>sRN6(VKbj*2?)#B~?RVS4sK00C4x3Tv4b3EWXC`rECjX0>MBY`D ze}qKcm_m%uRP9L8O&~-sq>Ce6n7vT-0}@!(imIu|*fT^_TTAq<|CjDMT!Fu9mtv#l-j|62NAc)pgTn&)_u(+QI4OU@Ptr*KAbX z=x(fOYx7m;yjpLzEkAI)QpQ0aAsQ){eXemkA}5+!5HhZt&8#AO!x{T* zNvFb>yEpY3K-yzf7AOXcGg?zrMMz3*l?02eY4u{m3OCxC8+6%2XSDW!jk4DPTxryk zc!1W&Hwc^l9CQoUw^GixU%yinvvE<(hJT$b^K4Pfc11CBZUls&`ZSS+#h>Qw(Jn)jZk?Ze` z%N>aOYKUE)>)8?7zUY%Fmlb~(_|EtUd=H%lcHp$wUPb8NIt}E9$_Vk+Y|v%6Nd(RZ zy<`VLPD%JT%Us~6ZZQg@l1P<_EkKCSrFtl&RDhFG0%A*XVu^hhdx|4{s0scb&Wl_k zj=4^_Qz~9i56Q`MTx}YC*6Ms!Rz>ynDw}vRJv-`aT(aGCR~Nc(Eg>or{(t<`k?9sB z174vaY3q6~g@t=1U~TLBma;s+y;N>ZxT~^tWr6D_*(6_|{Pw#y zSz;0PxnY)0zVO!dByckhTrpXkyq7PJBVD2ZdFaJ>6~dj0LSMc2*CRaq)gnX|2@D*J zop~6G4*=U)slNb@vFGeSC%i9zp8TnNW%P?~grlGdC1DbJBkrjmD}M$xGC9|>GI(u= z!{#`&BY);5i9dw4YoVK=&G~zy$w36t#}#kz0WHF?qou#e{0CxbH_0s+JNCYFVC}K4 z*0LsFI^GC#Tb>^1AGV6wk6_5e`RzRs2@N8cv$;WGDp3#J`tZwwm2u8k`u1Y}MxL=P zEOFlPaIFdvFLKP7xk+96k#3yTwmdk_F9%aRWrZL6QRL0+=N~@}<0#Ae4?@YV!}S-i znRCh0J&LM33g5&}V>ikWl_+x2f#tw3iblJTEdK)<-4+3t;jRi4m*PwX7MEh<2rPd~ zbK5u)zUNoyHdL(%;YASi&6YEsc*ZrZ$W^JWWDc}MOV~)HmZai5{`_{MK}nP)XOh{A z2y_Er1O4^a4T=xu13tKZ#l!RR{?+JL!v`W|QY3nC|2PnWGYd_VXeMHpJ|B(db-rFaEc1p{LzzbPJS;{#IefR^hH;T} zYdlu~Ent$GL-88O~sHvCvFwLweYqYZsdb24;-5mhDdvp#IV|Ew!r0FcSP6lfB(yJ%hIxkS40P7=SJqSdw^a{2BFExhru4 zEj)`E$sSPfC5->Tr5b9RMfraN7y%2_q?mjqO~#|VE@=k*01yatef)AfVU{UDhQ2Kx zi@GQSLibKg*+IrKBTa`?aF`5}-d`XD##gj{I)L?381GM(r6wCFW<)rNf6<`cat74k z;k{9k|J8f{;5{5?YNFd}(G+lCLMa(td@XZ)@hAKN*NA8V;Dh56iIsoRjVl*<<%f!B zyeP^}aqm`Dy9l7Ag;*GNmE%c$f>m6D>(LYuUHTJEIGpGby<(%*J6om@cotmku|%f- zR?NS+Gru5@Cex~IkqZ>U(dvkW&hOQ-Lg+-Zudet{H@t6}0LgVX;WlsErYgIUc{%Gw z>}-4RD*_JCHr_WYpu&HTt4n$X{2(e~VX_pX1-f;3Lp7tqM|2= zJktNU_P8s`+dEpsL~lxRug&({D-H0IkzII=Cu7OakRe1gd2?|a!X^yr8U3!RKQ@bM zja$vE4;9}SSE~mHmX$dkF76mShVkXKlc_7p)_veYPj?g6o7R7o^CRe!31^wy(kE_3 zYU52i^X(MiC^nOho zOWsy>;p&`G3>qdf)j#}u%vwgN{j6mm(8nabxO+qWX6@}RrUaH8X_|(7;0gaE8HcAJ zc1WW8p;a&zH@PU?6!C^b>tY?^t_6cr?%^U%!i68lNtb`Iu}fJSu<~=RzvlLtzaU8& z?~)AcLze)^c3vT|KWA**gmKqyNt9C5Er=jx$mq|KbiOda25cWPT0yKBPO!Jy3N@Q$ z>(5_pMQWT7N_^ZNDc&??&{!7A=%la(PaO}?zw@J=JRCnF<(*7JG@v4CiR zhbK=|`|V@n3W|l=J#3(O0R1dX@^h*o9Ox8VMbn%hC!R5rrrjO@V9<-!;Jq9vVvbdW z;WiTAgz!r6^160QlHwL$;H|LsN#2@$X0yt9Btn0c3zcp*@`uR$x;jxt3H3u5m0OGo zc^acCJERSi1tLJ@4I{w;K#j5oX$%K-xWS1YH=kpAka{1U9SFOZJp*fifh%XlXK)xm zDMi$**2`km4*?Cy-rK8@G(LAAcHOY98tZ3DoRE-5yJ9mT~(NWu{2;XDBpqaq%FO>Ur)`aHqTXO1+o6P&x@y_Hq}B zZ@R&hvVxR=45P63IcXBgZ_=1> zlL3i;59F%jJShybssjOdIE6`BM~l*zb#R9&^X?Xd$|JOgV!SeWmcz~=^%1Yq+j{nI z=}`3O5MsxA%JtgDZB``e%EE@ah*r-_?+~&_NmMhn+aWkX!(ANis>q&rtpJ~YGl_pZ z!@Y2DYVVQ0fcVTP(}FU`RtSpmrAwX<$iw&p4>}f+5k8iaC^fl*cE7fbfqfALBz) z7-0WcnTL@Ek$$A6Q_pHTl)Q)oAU=N}i2r{ncZEw_{4TQRxsqG*fq}yG!at3_zQT3b zHCTs2m2n&7{fqJ7f z5_&0TNow~lnhDSR#4~CF#qkhpW;oGYJ%K6;lGtd;j+GP+IMZ56HX4a5^@+34SKGhIZvHyoF3z7u= zm!>UN%@N;+@$~BcRZ4PrG#@m0zmUW;AdWm(^ zcgrnE4;IpbP2oag#XoV6u&3RlIDJM_Tb&>1W5|*}{%Z)(>Z8cnD{EER(_o z(VBgatE3BOY(hBO@WxCK&I;Ie7tS=kEGyz>xcubd8?s1@-%W2<;c9~4FP{7d-FgOr z%qX^hCVDAy?ca;sXMY$-C?rxi_#^?O1QV4`dXrw?zxp561T#>V;jRi4mqr*16aq3f zm*AcXD}Px_ciT1=-uG8%H`F;11%M<-c;~hgx0xi96Z@Plk}hBh7FqM5A)(lA{`}kr zL`ycEb}}0gxVU)T``s5L7TbkbT>K!Oe1E+9Vf{KO7A7`Y>BZH}LP`-AS-Q|!8mly4 zTx}MgqEA2Dr7EH?()_;s{p!s$eer3fvLcJF>VLNP6|y`mSBciqdCcE1uO6YFr6M|S zw*651s^wuRggAo{DWc1L?Uyog%ax2SchIuKNS(8b0ejd)a`ofe^UE`yelgfx#Z3zf zukdV(tcVLG7b_`alW9IbZ8-vGW}>>oZxQ**F`=;?th?RYZ6NeF%rPGJgri{7F}bNb zXMYD~g>Bt6oiE1C*RKn6Bugb#taJjRqEnnNm5zRT2Qv#9T`hAR4a-bLwnOP4?Va^i zXkPX={w}QfL_cY)jXJFPitfBhl!n`8;no?CrP*hZi4=b1D_Av2qMu#q+NH{)>*Wf5 zNxlOQDIrZ9lq(i;F`$OA@sZS=rb$E!_J4jio~_rLzK;80y9TttiL!N)D7bC*1RYU) zN?1+G$zziwr{Ge_-vF0NC4mdSI4=+2QYJYD7Y<8te~&;h1%b<5?hsOE1eyRMWcz?C z+rc)CYnZYnSUtm1kg7fG0+>jRBs}4l@PrM(({_)L*aiaP3BTixF-=SXMA&8!&3_{( zO=6j(&k&S}1QC=Yf@DAt(ilMmiNn;B!@meCz)zkekEjZmP{}tjk$xK!S)NPtmzXHB zILp$fnD}`4R_bSfkXjef6}2pe;Q)@ErY5=!^pD^)G9CS4Tiewo9`tqzecK{m zCO~W(X8bKoco)8x^=9?f-c}ns0DmP{;J0{S+z(%H9rwU}(ky&8_3A~u46gLR1k@n0}oH|fc69rU>F}p@7i$=9x^v^CW}XS02oSd@lYyyzi-_D_eOxs zXk2HpG4e>`sgjY(&XOYenrVF?2&rF$0ALJsC(P-EPatt0AEQFZe0?e41b?YfMr!c> zBG=#LGcE?Fp+82f|dPZ$0`I29Q(?jv9yi7ZXEY2;K5cF zc_fZZ-H&y*<)#g@f~v6nZEvx$sEz`oi68c*-w$q1kw(PAWY5gJNaZs#FCdJ5uuNz$ zc1Gm5koBj&-R=Es)JVa;Q-6J=ZBv-2!1$m-d@x2tZ}!atpB7ACenanxj$y-Z=>4fH zNVO<(^?j<|k9qN2)mo;}YcyDqM;C`L`dy0Eo@2_`qyDv4(bXLidgi;aqvzI%H^&jS zMtx+BdDL1DhU7*}Rg8+>?Hgb3n!2>U?z@)*1-h36EPcnpcA&_MCx7%5cxhBeegM59 z3!HAOam86nS4AvR`8<_?1mXlCw!|ey9_cC9;l#qhErK^_c$9*Hr5wb~Va61(k?G&c zG!RG$0_jX;;;YgoL=b86;(v)Cr|yD-NR}HJ)93qK#V_?%sOR_r#^^mc{2~ID%C@s| zhozE2pL$sO*|Wq;41Wb_7J^9%!2?`J-PAtNDMY~cJ*pg)|LBw(oMgyBqVhBPvf z(-|lv<l11z1x_^YG|sXk_HJlIZv9+@KtD*$KgN`JJm3c@`~7dZzPY-{i! z0Vy>4HaN>mBABz}gFrwYcXxMjTl?5;_G?y^R>yuki3>UT@y{X=Gy2TI6`KRkE#(t< z)%A48$JPohcQv@i+0n&(lg-Uvi5wy;fHr$7bKL1d&P2@uTq%k@g;bfv&TYmtG!BCo zbrULw!OvO?=6`ZxN+U1WL@4A6^AzY*_F?vnW0XB(<1PEKP>vx5Er>=SC!)cD!7jlQ z=|Y{V3iimN2J1Pj%U(!*5-7`*IkG3LZh}1}Ng92q>Lup!8`tcr+8(F~u=CIX49Qcm zKZ;++X|CZ|u%Qaadc7=?Xy{wqN`z7Y0`_ijH@0+V7=NM!V|-*5I|LTn_LzKNbDGxn z6uzKUw;Wsm-B86MO2e#cPDsV6bRY+@n2iEBLS}+3Pqh_;3v(W%QI!nel2Qr;1opnMedA*0nPdv&igN-oI3B&`y9XP3|WZQpW3IUOz{t#BE zyE)4X0NpU_KTtA~V2thrT_~EgG*~I&zzw-CZ2g88aM#>{?DZD(7G{%?z?{}W7Q~(j zAjq`N`N>ZD;TBb&K!B!oXJq$T$h51`DSspi0y|iQJ9s!Gv~H}(SwWk2RZu|#s5(5q zr#*qfa*UbnstSui?lzn(=I(3*fw}Th8fe2cEeuq{b>BQD;-lSe$NSh zn)rtP(RI&)c~b*kbP1JN%q7oNRgc^XIOMb3GR=Gg9Jc&@`*tE`LM^3Y%n(n>{#QKUr*X@bQo4fe{HvhOhz*rS1BV z(_$BLTJ(^tNG?K&j{X(D!F$X(BvM-n`N32u)9W<_b2J8%0Pf)OQxypWdJl(5!L52M zg~Kuw_JPH1SXj^uG3^jR+TkG; zji0)^9bT@tQv?BGJu8>H8p82Ic#bXMeq&9KLiDiPhv!>JeuC|cK0N-03>je2ZQ&qp z2=u#(CJDF=M_1}}z31UW4l!@oEufFkmf+(6EW6Py|I6DiGP(haDga zJl?T^b@hMtZe%8ok~qk=G^Nt(*D7DIa1@mnLc~TEi&diIM2EU2Nl%{z{(1Goe*w?B z>Fk%`t_lfG!H0vhL8jTl4 z(e}W~vModpgOZwL_s{PPhjQ)KDX)6fi+XKz z+nGM=dZMMQ+iG_L8STTYf{v5J(y`rBMIhii?w=yTnP8(g8c}csC(Yq~a z(dDsCA=$KPOwnztmV;Cv*m8f1_XIxs2CjgoHCm$3S>$5SklAeuN71{TX>^9RZ5_q9 z8%)0HvwY>KrBhU7r>ua8K@6UY4ljBcB>_9fbCO)wZB9GV9~?)_hSZ5uU`WC=$o`I> z+);PnRLpV%Nvm|7<@}T_SAWeekPgM>d%`nVarpD$=FIzSui09?-L8MVm`qmBeAN`Z zF`J3-xe!4-fxF_wPtqh7X(|$T*Kq-R<3#Z=4nZ~4uym?F&#!J#eDW^#BDe)A97R0*5wu4`@RB46&QQ@37e8@{5o ze8J|9e%n{txHE(7WnX{xP^Vw~z#l24SmyW-mLIdZE#*0g6lJLgjqe9L8bhTi6;D-i zjG4SJ8ss4ql-vmL^_Jrrvrkwky57K6C_iO)Q#APoYyJXAK2|-QfcmPC*VjXdSuz%P z(3p;{Lp5We9ASU$2#7HJv36eGO)*F! z6q3zqN^6oHq*W@(!!QBOR^yGCF7Dol6#Wy@XCE8$NWmKql1CP{Tht#y*3lqbZ_Fq} z+-@u$&guMwk^7R6iS9&4+;4ov#{F+KN~toY`_3M+d{YDeM48Ii z=Sj5p2TMRiY<7QreSJ>9bB*oz#rfoXL7$D@-t_ z6Jk%qZ5k{iE%R&=w(C_j;pS z{WuCEhFA+i#U6CmwA%tVJ~oQBZ-5`}`BPJ@`;yqxfAq?cssAGFW%b3EeoebebO$>` z+5hMfkb0E{?9XDer3&8rau70#$&Zc=_en|N!8mFBF+;!{x6+*{p2xHx2^v2P0~=fz z=q*Vh9*}=EqbXu1CTwr-?}$&X0EHSy*%eu1M;nl|IXO#d3<8Gis{u!fWqSx&B(4BOXfSjkJN%$&*#?3H6?a?uo7G)zYC8yZNu;+;z0L{5wY!sUscBtk z!f}bHWB6dOfOB>owcuZ@Yg@$jSP4{9?d&}@=ste|_cY;AFt~Y+X8=BL7YlroBn>2=vU8VoOz$+biKiZ+zCGju#l_5j}N3QSz zQ}2K2N3f4*w1%pvxqW^L_953LyikkGiRQ(I-b&vsgv&m640`0j!+6y?ij9)J)|Q#2 z-RLqmk460}NL_(cy2bNBoH*?96BRFf$we3swJ@7c@rX#skwB#EzOQmKY+x!y462!* zC@KLD1^>rPgrX2pkh1tfsq|kJ#sfjX6YM?JY>we6#H9#Nx9Ag3J3kF31vDYs4ysAa z6$gF4&++7)j6J$vlI8GBLwp4?NdK^f(fb&4YYW@U-caYi|E zJd%{lnMd%H8OD*KEHG9D&#PTh(FsgYiP9N5Mdb!Ks^WPckDZO>AuNBfHp-Y))*H_~ zhjU}$o>w+n-jx8C1S_A=E4%_I*>W(5(40ok)5$NN8TkQ<&9%12t6yr6Bj5OJiExaU<29Hy?|bZ@G^*r5dRs*urred3;>q}`;7gHs1wLa)(U@ZSz!UsCRP^VX^IMz zGXKD)#E<9!uCM?SfU|W5yaK72>A-0Yy@n32azh8}oX`=#`%EQ6$Nf^ZVP|H)mgcCD5-H z^No7(LRGJr!33p{b+5oJ3;DHAiN%jo+9wuDXr8c5^?HA`m|oNyb*ZY?-@a1SFZIWb z+Me*sr)7&E@a*pKz~Z1VNuqq;O0h){5F z`wb47tgxB^HD2|6wT)mvn z7ufBxi8z0Z&x2zH;H)pfm+&CQ$YFV*+eH)?M~>--)& z^XYgQcq8~oJa0R$>-bZO2d8VpkmeAFqu+0rBAR4-q=kOQiha(H!7{q^VX`R|LH&1Sj&Q&qj2 zZEo(b^mK7oeYct{Z@&KFVm(jL3R zlO!HyoE6d@-%mq*KZVCuNS)1vt`kpbd@eh1HgcY+Etdx1bmm;o1dZ%;fbr1@H3{NI z=C{SgdCfJ)v$%AMWKM_%98W~bxy2&}4fcNzLgR6)AU7~pJcbtS=en$DHj81<4!@k+ zj*LUQImFTS5W-`72>y6`pxBy0NNtCu!a@}&{r-Ol zGGeG@P_@H!Q2SAUML90!pwTWK9$i;Znf2}DYRv(51mi4ezAmuf8%jQM1_A|I9(?mO z60PRx94cI|maEyit~T}bX1=&xy!+J5z2jt{8o^cs@W>Gtk+-0#M12g;q#OcoA%8gf zpBDFi6~fJR0-y{4Er@UY#%N)!W7DZZe6i#$KX})5Ls1=H%gFT$+z}4+!trx3z$E!FcRFEZY(dr_@QD{9`HEet5 zuNO1+ChPG=8SyI@om8|9Q7E8P{)iYyxDCV(&VCH)Q-ZUmHVT(`MC|zR;e%e!CU-3Q zYPy)etzj83qH22Ad#tAGsWX2kK$}oxMZT>>J?S{~f#J@N)7WY}UR+&!E)|jZbFCKI zg7H9RUVqfri<#gAR|$7ns_$Qa`}#sVgPIg^K6=!4$458^H8ss0K;W9Ptu3*wrfkRK z>r(}!Gi66Ko~aJ#rRH6UE_~MuD~s8mj;((KU%6_xX#`J8&<5p|iwS?(Ay{fPJARjt zi+_psJspXfvz+L2o<(q$V41be z1!6(nYszV~5CJ5c%>0&Uvd!;I0*@)-J$;SbBvUPDVakm+a2h( zR*f-2vE4xE05KTUeFJ}?krcZ$6cfrQorWSpL@@iIi1>nEIEjJK2+YREfzS>%?fg(o zI2Q4%(}B=@e}@!t7_`k+$0J|C?Bvb-N}2C8+c~~g>;N-++P3gNI*HDEZs_ue8@kxt zKg2F&PF?bwy32~x!K5ur8I>11B%lSdK}>`%N45b^6$t5_&pLmbBNEUZw?v`x-Z|^S z2zSI)pM}kG(2>{puyka~aGfRE6CfB+4wW!Ib_eoE)cBoi0)`%bBjAKQ+PNcMR~M#4 zN5vJ3qSTlaPk=6peE#&pf}hZ@Aiv=R{G@1daw7yDz&{rx(IqH6fv@bXDOpY4jSrS0 z^pKFY$j=B~I?sQh5~y;P38z9X!P9Zh4v$B4^0;nXIz{4+Jk6jEg3I?dN-`3|adG`_ zw$b(Vef8U~^>SXX_EvB|PBu5^tNON{tZTize)}-`=b>+0CRE^L-B3&@z~kkin6N6Ek_SS2)E&+~6?1=gBWXW)K70|@kH<#`*0Sez zDv!9G%H4%i?&4|g;%V;UY0l%qsBL^zG^pEr6Gk0!=7?e>myfqK; z9Z1AF<}UqVl2Uv%yPM4K?<#Ntw3ml&z8qBKm3@U+;R~TS6xtch@AQU2Q((=aVIJ_w zTH+7~c*$>r!T8GnQ9z}kNm-$A*Ga)+XukW2=zD)Jvxw35$u=VmkuOGJ7`!I2klVI} zKorZWzyYGN2ZRee*PIae9hQO*2SkG2+HGIX7Z@^Gm$q$o?9U>F27I^MbC?ck+dX@2 zb5vR7_d(_o+;ALbVWEIG=?d{1I|wIwDlxf!DpAWY=bWdjb+W zsFHt3s6C;9l(rP!r#}*{oYdoMpDTTunh};6HQ)2LPc6T>ka+=jnr=8<5S^M*&V%Sqj)Vf}c4|kETrfwPl|A^T^>8@8 zxh(_VnWlCY+>9+X(g)8YOAEi*F}-~G0;`jL5Lpe<6=x9i7_=TC&F!; zU^cdGgOk~&?d{ob`7@FJpEX26tNd`incB9$if>xVo;DjX^hd3Af@u4b8~5I{Dac=J z+}N{i&T__pwuNu^-ku>R#y0#g9oAen9;jivFt#1Cjcw@selzQ9Ykc-jSG z1g{XZvJk-#EkzUsJAGQ7k|%7L;vilYwXhIj8J3xynN7xn(U2lCq$%-ZXcyxNweeik zF`ZBzFteyuqz$T>XHnTXUC!4%s%$Z#7*$T|n4%5ZoB$Z$1R z0+0epB`s|34%VXdnh4 zOh(uSwjAsXu!F!(gE$iGT#&=LTs^r0xd4%bq*<4d&;}C%I5L-zZwnR>I5r9|Ol59o zbZ9alF*qAwh+1YzIT9}zTf8_bk zM*y`k4SEm>XKVp<_V}L=)coeo&i1@a zOm1#&jD|K&jCPJ@f;991Hw$NTe}D?m3FznwGy(iY8K7ur1N=8NMmP$9nz@D3-wIVb zQ)f3rM$0W*x1g--q6;=!qyC6YGDloe3F!Bbar>92N>F#{AFlp?PT}ie{bk&Xkl$= z^kML?(hUKUBFX^64~GBd=Va_?Vejn3=wxC27e}VQ!hEz@!q!C0&c+64>+A&gSAF6Z zjzHs&zI!nJd$?A%c5b#_|3Rh}wkD>3(J*nbXHvJdaBu<2i2vK>Lj?CnW(ITya4<77 zb8&J5fDQnlyRkXbUkTJaf9!$(QnLId{@~!_Wp8H>F#Vtb^sz7ne*A&+ax!!U0-POP zfIeRTRQxZ3V_^Z9SQtA4jDThqws3!3wXN ziJh&r#~<^5jhN|^gs6m~2Hn3Y|5qt0YUd8{V&LEeFtBnk16Wu%f7tHunzx3398~p$14Q(u}J^pR+vAHhJA6KAY_i+oh|JPI# z`1k3G+F6_YU!9Dzf8ob1h}fE0|F?}6PLdYxKocbkXJhlf*X3`y`d^1;ZD9*kvU9Td z>uCWnurM?KAKk}w8C!ikA5I@T`7agl<9PlzrG%}qoylKU#`-Z~Lq|tL54evZe;^Kk z7t6;vngHGZwZ#A?Mq4}Q4;R1(IUj(jog>^|6XoOpFp2ynfBGA70+>YqAT9ut*dN3L zV3PPR;$j9cN&Z1B04AwFhz-Cb^9Qj5m}LK;j|}pE&_@P^KZqN^r1%GYe>8^WgQwG<;{HNF*MBsE zxg+o&)A%Ua+0E`B4j(aG{sBL_=lT!$(EztUkoCjc{U7inyvIM_M{_*?6!#Iy6X^JN zs{grle`6QNkM21C>oxv(2>yfr_4Nt_x&w{jmKW@d`GPI$gF7B-MeyAi_9p~pDfTtf zXc)Yf9Xnl~kf4)kYO(@19q&YvM|x4#b|t89g;$7Qy-r#ip~Kn|mD``aUku_^ruW<7 zmZq=L;yfp%>z*|APe`P8199+1OlnT%v-1?>58wSc($3hqO zl@Dq-<=|h+XBeW@zv>2*%u(bUWzXY~LOC-K!qB2!x+Bls-p!)rPQDY%#?!(1oJO;K z^U~g8jd`5+T(4APb?U(-$JNFm1iwWao2K*IypD-_{ ze}PNttAyhiT*e@f=`Y`nPTrI2W}NA0tzkT=2%w}QZh-L$p(vFyO{^vxDK*F@u<(0) zB_mW#&;m7~>-<5~b9%1cP3xTyi^Izj{cFO8=uQBArz_i+^W_nWslsqtN**%V6l8;J zMe!5X%(!a4kA%vIQ*>jIm(IX@K4bAce}g5sWtexdvyJWsZ$G>{H@4EmvyoEcVdBNv z>$mPW^AVkgQ;->p{#&Cf9~@f zUb`dSW_3K5BJo6R9h-E0reVXT*|h_|1@=^!ChHsa;e>gteP?-oUrJ)ljF3tC1RW z$xQxx3E6`B=L|mlt!YL@-;*+be~sB%2N-!-I)iB#%h|>qIOn&|u5!x-#GOE07npSU zOJ#=`evJefk%bVv<3}FD4rqf7D#~L?@n#+=GL80ckHW52kt5D6j1mOio)z8N1s0in zIf``%pX7*{xSw!IFJY!p%A`eBxVjdE1W7A$3bV1DPg6$R_-Lp1!>u{sf4ku&B@sn6 z_nufnREbF52Ed9~X`4>*q2|WF;D6=j)rxBi_-(CTfd}0ZEK_hJq~lfrhPN|j3`?o~ z>q`mlbXjiKMlFJqi8N5MIF$;kh1Tid5OHQIK+S|_PSkL#C<-MoWJM=t%rKrj#jKvC z{lyd+TK6y+n)wKp>x{@ye`Qi1l{(`^9@`R?Y?Q>tZG*L)tlf6hahu#b>U~-b?Mxmz zDN%3At3s>f%li}i0Haj08~XRky;X0e2UgKzv$aOIYa^>3$=V!v_yEPq5>rdQ7!x6~ zIBQZm&eICQUNf+RSg*%hRNBXl^RrakX?S#cRpmV-*5dYp=SoVde^T2jT-`7AddgA3 zLA-}ZJL|2zoYuIu%tkz+HhLYGSM(=LE2ZCbKa+Ff>CgqJOGJ_lwtQ8{|8z=?I9bmq z{<1A!vr~?vdrP}5{NTw(RZ>hjmCRWje94-+1{K*&0ZB)le3N12|D_&BeDjT|ei$s- ziW+SsAtu%;4aL3&f64jFo&J$%-%}XQ&U~G&bb#;iXLN(RveAUbH%ypkbYqGhWM66w zk`*{v*F`5JWS_Jl9)|_DgQ+dA-8{}vwCV|`i9}R|;B?prN@a#V`@mmR5tNbX3Y7I+ zji{}tDbCuP&k(wfgnr%}$qFSc9Hb3_v|TmG-Grwr$NaTle>dTZJINi%CUs}-y*DQVuh?|a5nl1xK3pbU2!b0ik%^a}g{22rb|2^+47f7> zaCUEn!7PKlNU)Ol@!7hdrr5_MjFAB-3;(NO=vFK)8QQN{fVfO<7pqAe(bBd?hSUQ? zD-0iDP5is}e*DGCS%x_j-{6Qfp_ULpMA(CNB_VE}#lg+{AW zwr5ZB%f5&)qF+0r6wxd~!63h}b=ly>477v<>Ojj2Bv_V30UsgtP^7~PiU-934j?DNby5sASD-(r_ zI=>1oe@NH(SN=G8e!M7KwXx+HV@ZEv2)p0Ud&Vr&K}i4utvnk*>_hnFY{>-=!#1F> z?y=)p9DG2(Eu?+fEPU{!f}td8A$Ywvb@J`vbk#LnLvmhM#N4XRF710Y*C&&>X6OA5Rp6%Fti{Or8 zUTy9{vTLO=sybZF6($4!pk_X7sFrw(v2J%V5^x_JLtTxaY2u_V^B{1c_cWW1qToFX znGtUy`=I-|Tm`8@%EKSIncajMWm7SBf0v-eixkWHQ8yBxXEj{StpS(*0D5sLav>lv z`QUg9(Ad-WyQAH=alfSo-d7U*7SJ91SxfTxme(ixJ;#XKf2ws_3vnS`p{%yE@oN>@ zQppaQ1)P1%R$3IzkmE%eLZ0v5I?HtieD7jx1~fmPp9y`9{w(LWeba1ur5^iJo(}VfZ)NRk)N|PY*4x9@#oUJOx}bs*dcbz$ zR(j_r9G$7~gb4#(p%_i)QU2i&Ccf5ageKAh6@n_8_1@~-Oq%MuGK@@#7+uFK|FRBB9>`H$09FvyM$NF0*<~;$_m*4Bpe);lY(!!+4UEue}C>EcTbDw zekU+|;o(BqEo$kR@~Rps$waHrCTTSI!r-`Ky&Ow>(e3~mn2D3KN3h(s6q)ag03k01 zYBmGMYilG68~!BU*6$FDmo((~%aTLCp9j2LQAMLc7Wr2d7Z7vncbsiK#p(8BE&Aud zWS3#*1-}%cRfuqG_Q95@e_ehDQcY)3UA}yg(g#Srm%>6wqWW8WQ=Abu4-ao?jC`-- zP<3A{e(UZr!#9O1LdY}(kS>4JbEnnC)}<|EgXxa`=ZSei$%&}`)JWF^<**S;TFI-iX3BqaI&Hy-=;YD)X33K2at&1K(LvJ_%JHNWmT4pf8Ue9Fu*~tB)kiv zlfDHh&e3s*N26ODeNt19FRa+*w*=oEmBEBB9rXCGmZU*+%fpp&R?&#c9M}2RLmLE}+>X{=pBuKl$*~#Pj}vKyXPtyr;Vd4)C+$HRjRtmf z9buz+kVGo_wzT;le_iRye?ryBi|w^1PtcVTu5yFLVx$l}dPFh0i_I(#=28ZBtCuGG zEbGeb%>Bb9jxu7<~3f2#Ybd|c`jV^)0NyYdL4 zqF>IPt%`hLC3^RfoBVadrBx6I$4MpAkI%GFYQwzOJSHz(eD{@6%`2?BUD-9DXN&Sc zF^|yXG}|V!xvxr-{Ce5YV?du#=Rd#bFU2#QDK1m{q!IeS&nGfo$7@X+91mg>U zx&@U85mey$e~x8ogR@rx&d-}J6j8j=nQ+ zO(9_AsAjNUyoSy#qMqb!`G*tPt?Z&pM2y#`a3 zFBy?kFDTG~a<#;L`8|?6E+^MyKZ=r!nRwdnA<5ZAf2VO)d3@|yLVbvY0B2xSmv|%2 z3EfTN{raJ@X8Dw}twM7#8a@H&dsQKd77Opus7GgS5FMC%EF=C$ zd@conf5)sDE^McfDcdHzz$ujP)8%fg>>DVHAw4EcM(5(bIy5zp&}Qr<`D}-;>r#{; zO!kUFy%fmFgv)$Y9nOgdh@h#wpkHz9504R!F&=w;+!Qh}QJFxzV82aP`WG@Y8kME) zT9Rn*#t8FA6&)Z3-o1HxELhLcyuXsx16D6@f93MgCwGH-*41t7X421LmRXBHjKNZU zX#BHxe|aWu@#6BM*4Zxg*cwz-*n?@E6HEKiXBa~30^c46&ARw$lBQZ$vW-pzsLB@OR*z{;!Y zX#Kp38A=}X&D4lnm|sH`6b0S<{BAp?0#-sv6X2_Fmco@v-UL>6SbpqPCm3+ zuYF5$#g--M*T(jGe!l74{5`_EaX-@7z86}y?z3ix1yUq~@^C3mT#|eG#_9L|hy)X~ zk?)gN+~v9Vh&XBZfg5@X0|GEyf24t$BvyZ+5oZ({UjSL)>Bz1zWmmalEx(AF)@p4X zLxgc7BSJP%@x+JG9&@2_*xvF2JfYtq-NLY$@2Z||X8uyb+(H%qIgsEEMZ*mmebTY?LTgg|5X|eY=8CO>G;L zI){e%`-_B}zR4;@V-M-?H`ORcxqTBSKOt{ryTMvjfiQ*{H~=pYnvHP z2UcB~P`|CzuWf4}p-n>_E^mNIzT@Xvc$u(?bmysK+JRkS9do?XsPxqnc3o)e$% z$kAg61HIoVh>wqPo_jugkQMja5qz+ zmh(=i2K~qk1obO9qS{ZXvVRk_`~YS}CwY$BWsr%ZczNP$mq>;fP|gK21J@@oIQav+ zZxS^vg9W}aG>vj3Y+6?nZk=fGAo9xh`)FSGKhm5hfJuz_cgBOd3@{}kxgu#ls6f~h zkVnwH*XwuJfkkEZH+4>!==$7pENRakv}R067yYFxT$RVF00e#u41XQV;Uwe!S4~&B zZ?L$-t5xn=T7zU@GIk+cQSdQ6cWbEg+wi5b#yh+tbgD$%LG4h~fYd{K!;(!1($irl zJ<8OY)g8SotLw8~)kgUXkJAl}`-(#)wFpf;k6+f^u&7gm*c@XYy z$Q9CK#`W4^aHvWnl7GqNB4g`NA}m(o9NZWWAmrgf{^sM)G-)M9f#|E>+!+*EraGb{ z;1>4qP*y#0`H6awG^yqJmSc0Y%;vs$6Ja4o5?$rw5;c`z64kIQ;D{qurzLc4-4T>L zrs1b);<3KUA&VT>FnwsXcEWrz{Q$4p)^4u4F4wvjP1Ax2>3>h;zxY&+7m?g#-D0%u zbctX4<^_7fE92Gpg%Y4@|298|P!C#=7GM2&!>j~ckf-c^Y8-&F<~VLj62x1$i0QUv zi$uJ_huoSBI1(0ll7r0gp7Jx+yS2dU>qq3MrR`!)_cU<}fOwqBa1qS`ts z_j8>0#EQM}8h>L=6(+@JnU9S>W%c-H6aR54Kvi8IY$7Vw&i)3a@!gb^Ls%pVw&38( z$N}RRRFB}UOLKu%<5Mh=LY4E%0=?>`nE{M}UQ-@(NM!XfgVay0`3KL2Lpmw%1eknN zg9JxC390ziO+$y(tQfPn5*yfgy(R_Q!uM1dSL#~vdVi+In-zJZ3RJ(Ns6~^Vi)EE6 zzE!DAAt6KAJ`FYG?Kcno!_}(yX0t*Y->r-<_1dgo54Weny`vzfy!J$7jZ>9X9*Phg zY)z;)kXN%j(tkJK*@=&TQ7e}fi-lObmJah&Faj`-<5m?b9M z{`NId!GC^&Une%2c~YqK6*$BPrmc2-6H6CTrlM0|^Nwcz?Ql4&-}(#V>$(WRkOjkq*Y z%^5i-IlHrbM-xhotPyAvT!+lLq707MLY705A%CM>Ix78O6@s9@Sb_(fbutVWRgR5m zB0OcI-A|T*?K0kw1BE${#TG96-nxdEsAxc$ z{C}@!_i+{{gR)9oYF*Z!yV`qQ+KjVna8g3|>pS=X$3VR7uZ=F>zjGfUBC~DTr@U~Z ziaXFJ4t7yKtRw5NDInZzJ3;k3FEF7`mj7r`L*V;$p78t~S&R=eNl#q7&V_j$47w0u zzDW5+N5Iqn?dLb8d|Ej%b%zA2JdmWIU4ODk4543Et+nuoGzzd+XU|duDnzwInlgyQ zq$;1eE=x4u+Sg`4W{(#JYfmCB(s!BZgeMy2)z%f&hJQFBir5~UkSbSs}oqwPbXIDa$t znsWZaJ6*`{Q^y$FU@ONJFf7z>^YcZ)5!=;!z1}PJCuW_&CbfkD6)W8}2;Y^I<(_`+ zdmS5L^}6XU)-gswWeNIiLCw%+x zQ(>JVJa3E9d|Pl(lO!(NT266}0e>}j4lnN)cMlD1a{S!*XDEpENHfW~@4wbE1Fwvv zm368xrpkz}Nb2qU*E8WsL8#enu8@#1`Bty@1(hLIB?3b<5BVUDZU^X?h;mG;a=iKZ zQ|?{~X)Qu*cA-ZP$ulteywnEd7qY8pbxDFySP&V;ZG0=a4S@k!xI=38&ws|c%~XUD zX1izw^Hq1@#GR&7TqJE-`2JWF5oLT6W^3b$PLI@~iH=rvTeI1H=gQZhRJknij=TQs z1m#0%ayR0Y`V~)|zse;`l0bGmggqtj2}AAjQ}fghO{$+^cs`3d3bm-JgK@95GPQ%` zH-_r@?jV)qqZWzDC~h6vr+;l_%zXK}e@;mrF*|*A!qnzu=< znf5T{HnJ5aF=bswlK`sL$oR(lxkcyop%^XY7MmsTeqyV$Z*FzeLpWF(aWNV16Bjo&v~8BS5psXA9I1DqNlS%^Ugt~VT1pvXu746|67f7K4i%&| z53Nqu-yJ&Vxg`FW=)q7kARc5Rn#H2w&lPy@-^LUNhG(^ zoa5}-6>G;5Pd9Y$F;OpP+AlQZ+Im>@D;ljrU;~olp{g0$b|~{_4|*31>avnIuRVlt+8-BRgBfcvTT6ns)w39 z6H8&1vru@=)!5C*FX1&82GffVoPv6A!7p=zE5hk%sDE;gj2Q}HDbLyMrQ=s=NOA5m$Y?_n{tu3q-6z7K4_d_)Uj!vk$jcNI_y$TO7-*G)-XnqtDv0{L73B zzO`p*zkYLQN5X;XO;qS!v5KpOGTd5x08ZPMP&+fL=tX_;=E9s+TzO@}8FOd1T-u6SU*IWshGyju=fK-G|CL z^{SZ@Yi;2DCl(ak@1p3NUU)#q!g7*c{%2C`u;X5f4~mIslnrpDS}a0M_> z(Uup?Qju+>-9d)@Ivb;eA}mgTN?ksfbr$V|HB7Pe^YhrO76EKo@K)xJQX~Mko?K9F zSC-6>1k8O8I!# z^oT(g-F+BHVedo_ky-QQ>hDxE@tNiVuXk){;QPUf>N{%|cOV?L;K;AU$DIRYp@VU5 z?ch@J&5QnPBTx2?%U*Wt1m915j@jlVJ%0%=mKU#WU%#LM7JdZkM|Z$y;3k$eB+yD- zlB|o>R`>!nATJkLf;uU6fiTj9P?}Io9Y<>mTN9WQXBB9pygz#FYkyw6 zK|;^ZE$5unx~TH0)D9J|aC1?S809p1n%Aj91Xf#=LFEFd`{-Q@h(_}Wb$RUPpVMkU+H%yQU+lfl8q6>z%iHTt@vffu$qPE87F?3Y2^je(>F=miQducA(y+RF->B@9ml6fo3EfHMtoC27nt#&m7T0Ht zLX!+>-I7Qc8xh$(a%x8(ogccB&dD|A zQo$eHG!jCpn=Y_jSnS{lK1B4D9?2Be(OwAD%tyROSw3PE*Pe`Aj@_s1UkuvraMA{u zjV_-CLRI99Q->$4k1*xEh<|atmXPDb89B$TZJ0_iU#~L%e4K20#vR-f03s(ORc23J zV|RTc1xYmlL3Lp~!6e6@OW?jXuO(T}Yw$}{J9C<``jMs`X&P6_ zxr92$Gcup}+3vFft4&LuclnyedeHmC3H&-;q!N=GZ*M_I-%6~u0DrDLksw2q>3-(E z;7Y>^y3gk^+b3kr+^-L$2w7AN<17RGQ<0rmLeU3s5+34!23Wn5`x*bai8emln>pIw zxby7UrYdJmw^Vz2j5Q@WZQoG^;gaVKJ2AdHGD(p98kqTf<9v%DrCO0p`k-kPktZoA zdCmy|%g;4UY=hG^aDPrs0eOz4YsQ&8!3cJ@@>?lH-I-PO8GFl6_rvu(0%oY0A^Gh^q#2x^Kj-MfYr0%A-3s3kU}HV zy&B0zy7mS>&75m8gM6J;eW_&$-BwJ&Z{U|hRNGgG%K9=Aw14B325qK^g3RN2)WQyD zthi(&v=vRMAM7fo7_7NX?h2Lan#Euj1t{Ba;MHio%xU!;^Ec8p&(4d=(Je1Rr0mJ4 zO=DZQ`;}5wD26% z+*?l{2%2Agj(;E%`6?gYxBH4#^hx;fd0S-14o>km!TrG5geQ-cxYY5;vdnu>R`SaG zoC}v|$|cVUu)1)i2R)V}A?S)z_J;PH&RN7Y1hte(nt*d?c4yF7{c?)!PVpRWp#%Ds z53LQlnDa&c`6KQ2rHwt|VpjX^a6BA(cqFo)ffe1!pnq%gS#*+{snwA2`uznpV}8ZH z58u8s^#fp~KV3B%v7p+lr#LdeWSEY@;JEtmBrD1jWtzrn$orz3D ze;Yu`*=z=p`aUyRbb2r%z&tFYy?bhV)c+(vnSy9Q42uY*W=GTyP1zcM(4)NH<_^|Z zUBsEA5P$4SsZPPD_zf0Ac5k^udJNLh%R$TTrEDJkibz>Z0^=7eza#U27 z1S=XfinWbw5x)m;_9NhAx>#I&UUEy7K4}yin^5*cc{kEa@U$Gj`d!W-J>R8gp7BJ- zCgyulgH(qC6Tfb{>hk12T-QUnlO0J+CPG{!EyK#jTOoxmAW7@#Mcja#7q#HKr5CSy z7k?KTMsD2z{my;=xqJ-VzN2w!mO$Z#jBY`=bzx)#!HpEc9(irZk|@#%biM~xoS48P znydoBbRI>Ok`*ThK8{DVTwyNF}?h(RvozxKSI;g#J?!cT$Dw6*Ox`~-a zXXo`cYafwKObQ{!l*_ayS6vW>N25r1gnvs2xAxc>p2GtcK&3!#Ik86>DT_vvm)%d? zyE6$SaLN~!I7gKae<(Hf#64#2Z2Fs1|8R04AJn9=0#700ZZL%Qw>=UmtqSMh`Y%!! z2Uq)mt;<^k>Z3u)?soVgqV-%3v1-MXbP8)W1s09_{;Ii2(3Yz;VIG$uYK9JfXn)76 z2=ZDpn@R*Fzslitx6xM_gf1d%_rs3pUCkdOS^UV;ERsmnqL**rI1*Oca?5UBi!~#) zz-x}3Fo)a_1kmP;UlFvdy@euEp46xKznt?G>(Xt5Q&S$Xa{Sse{fB7GGt-XUq~lK9 z6>u{ug4~IGcCvEWNqX73h2=0gA%BILN-DXIKmWFe@UG^9J+I&}=N>A`Tu50`Y41^O z{6>R!y@dvy5wD~+Cy<+lzFubJ#EjPMxcR%k`H)f?o`$&KypKD}>T}!*(@we7$P7AY z&(gfx0?u*JxA}>qfvnEUUKYWm-tC7zniTxhqKUi7gMpv~Wtua%wvL4WXipurqG z=(I-U@U8vkOg)zi$o?adEduouSyK!2mdvP+Ue&wZkfzCfaNjl-k)n=7$_7z{deG!r@INJ_w`lyvq$GC;);k=Z}7YGglA5n8KfgvN89FI1=q5J z49Hw8Xp0t3B!V+rmbHoRVt>vn+9g$jv)GE~h<+;U&BKtB&DpkqKIB@w1Ya)^r3B0p z;fiktkwaD~#-bIFYR*<3WO$8rQx<87TZq$Rhf30;R&iT-;v~AufZi`^{h;*58s{gE z^SnWtC5niC(lIMH5jJY|pZRQZ*B@gCa zC_8WwC>}VYN>hkV3qfs+f+e3#VOX4=hqBuCbk%b$h>GfvHH~JCeKDh=+0I}y5;d~| z%qhMW>agpF!VkQxFn_*oF&ptrGo)~#XeG|eWN>*XiqUu?crkiE@GR2x1mWD~;s2&0 zY;~bm(+iia)GWuR_q#a9QblxNgN~`FiDhA-jqa+_07Y(5?8}p18oAE3Bfe(V5n9Z) z+u4_gYJ_>)VcCdgqEShRHAS#l%@{$lb|9$*?v{P}^bW!1%zv2;*T&wozKPghOa(PN zQummF2C5$w0qd4o`SolZr!E{UFvBI>5Rb}?$Ez?TxJSlzK9_?76BHnb6XQPGq%|Ap zP4~L1KuUMc6R>szvUA4i0=60~oPy~NN0YLAcKfBO`o|OfOGXL&qXwq$ROXskb*OJ2 zI1R2z1776MZhu$G8x~R3=;33JHRT&Azgu1Z)RMbcg{ta<1CCvuYsQVbojaG6IFbF^?Y;%jqfnu7dP`^pVYz!#xqF926_mq^6}Ae`O|UW4!#Gkl8Vs^Y{-MWt?H=? zUvE@Y`uH?IDn8AhY^m=MYvkzRMC={M5KvpG-x)U(Sp9oIF(w@ z-qSN*sei;{WE7o^a0nVaLh`pt@Fi0;CLF)*9)*F*=W$C>F_5re5|Azc#8sWv@?iqkkaoXAC>zA;#Dzks7 zs8$N*lnP6Nc-T1+u^wjD*;TEZ=I55@9swTH2{pwpRDb&ExgBTEzRS%R>9aAO5o9D|jns}V(VWkXQx;7Cy>;30yX(;v zr+)!%tzPBmoz`b|_!%CUy5+v(bvoE@ko7FU#}^_0POfTD%k;A-5Rw5Q`w=1HK(wo{ zrebgm?7F-H-wd|BE&9iPWV5Dm))QSy}{hw6^eeh==+z;8bi)i z6rYyZwHt3|IXNS}(N@2Kv2szocIK1{@qdL(I_yRB(_EmeO6vS}~a# zB203Aa$JZqD4^S4F{h28F*PYi@}lsyj026M$b-_BbmHgpP5}#&Tr3V;ph%K}For`F z56Z;+Jr1RO5`YSalkMQ=TMxllpy|u%&%C1|-5YZl0%XCu<10?HC*HctB`*XWYJcZ` zEWWeWiaQC(SD!~()^mvR&I*bK^$HCDRj=koJmnTG7@(Sqk#yvBHcAbBgo<7r61ELy zUq>ALP0{I$ud zKfSRz6hF~o>3gm_q+ryb8!UNAnSb~sA)jY=35TOdY^i@8{F306LWqx+=j6f@le_JW z*fbS$U@km(n#sm%>EF57RaB@x!$OFqnu>dXgjN>cjsKcJAxAiEStpI*7wxpcP=+#I zn&OSO6x=K_-5Bn&#odbAY>ck8goKL^=fHbgOj=LGqaLY&1(1q+BN6U~L(8UblwG!uln!J#WDQTFlZ11?*cKucY_x^A#>x8S+*3HiIB!pHkvC^y{n+-y58l;hzGCRAh72|8CqzXPeP zr^2$pzGozvR8x5fFd{jo^nV%fwk~rPKq3hdGZaTCN+w8K8;Y~s`+3d62j=yf+GL#{ zJxf#aJT9MDB?r69GA&!&FDW-`RDkZMKoduo08WPwXm5-p%r&i-V#Yqi)YjuFC4)f! zR4+L|cLa4sa1c*t1B!uiKa>;B29CO~bO_`Ei`t{r3i2qN`T$%-1Z zhIMYQL8G1lRdiM*AAipf87w(c>C#^Y1RfH+{`1>w==I?XZ>5S3lx{F3Z<=J@%D^#^ z6e0jh+py_?9{F4CpvMyei-j4%Q7f2wdU)D3b&pwU%@SI2fYik#etpt*Mg0^=bK0Y(u|?+gR)4E?01}GloXm3DckoF? zRBd)?^%4yG;yk%r$-<+^@jh|E_lP^vfOxDJAnu^NiBD@P=m05$iVb(;uiu45m}*p# z=?L8tPotJ~3*B4}^p|`f*Z2L5vy>UlLOZJ)vWJXgR@#glEp2^}Ew&GclkB}t=1pV`IAO<_8X87c1$Wm#xvP_=40mQ0e zV@4g3mzFoA!ZfBg?SN;6d?Eg@RVbE5OrF-H#~bw z{2*nPOD)(*MY>xNI^wse(mJUS_LEw-b)SRM|~=xL`hN@PEgMuUwxSTYymwZ$J6;$OI-xnLqZm z<~loSN7%d%F?aqv3550avOVUK!{P%`6ww(pO7UBj248~YQ1njg3NnNuN`PIP`GQp$ z+VhK(dnJ=$o9GcttiT7$4tv^Qx|SYL9NWEX-H3CurqC+hzB<#fY22}wbFfmp?u1UN z(|=ln+NttF1O4LD8x14dQ{mw6XE!xdXaHk^yE6fesOzQgQ*^)aaOY#y7^V2 zh}iokxmIU8t@gX)x@cK`2N2+G?F=lc9Xs?HV^?8?G5cL1QeA09RvZx2)ZIg=P(5EJ@2wNN&W4>%8F$#z2wZp-;|@ zX_xZG@+CJ);3p~}_^Zk3TRynpF;q(Z1U{wLzGZW)rYk6d`q-fA3;U{uo68Vaj(@%{ z9wOI1w%)dip_D~@9drc(H~ajFkK0EFxiDv zTyjZSFwhol)_&u*AIND~(%P%Wz^mj4_)(di5%|m2AUvgo^jz3#?7jwwc z3d4MM+ZxESCUM|Xdd1x0oF}xn5`SH*)%EaM^ods>D1&3Jt4`k+#Ny?YdH5XgGkAT8nDy2m5+g7h&>FfCW~E-FBIO`|ZaNW&cxEWdkbe}h&t_nN z+|G?#`Kb<>TsIdS1v1#S+Ls&*U;W%MB@ZiV$$qpKsv&@hY6Ib*nBnyGNq;p-P24lY zg3M-GLMJ9GU$!Py&W1QR+>=G%hW*qb!A{^Vg1v<9L>aZOi(mP5?##>|{Wxzr%6z40 zIILnC8a}3HaZ}bOPsYy4-GA7Y^0$P(;4*)2Ka5WR(&{qVNcniIDw139<|`{rRpe+* zA12!FA%|ZpJ^>R+ zQ@D7nKBvj8Q8q6AO*?jyXK?reXkvmKDnLiVwv)BX8mNrzHQ12zA+~4jMZ#zu9FB)j zo<~qEzGG;%9AW@Rl79;m?H3VAkssu}@gZ&R#S$UO7AVkNfoW%q_3=79G&G7A^?{x? zTHR#O?|Qpbd#-`7beMV)qQ11$F;f0=I|?-lU8R7|RQ&^K{UMX*?)Nr*XixJK!NG06 z_}g{k-SrzH&xIRy((+nQCs$=27PT}ZZGm8^uyl?I-R4Rdn19>xhGCR$@YPFuOinDn zq?g5wW{h>k`-wH7O65`Wmxr16M*c=5Gl3d7_A3%7)^A&j-wx^Sc$dtp$4|kn5Lv89 z>@n3w(W-_QMc6Lz#mwynNkH$)p+pOEUcQ;WMo)2wf$jkZxk|g+LU|3~|b12d4FZn=R#q;oY zBgA-WwGj2X=(-_eVn?1LT5XvErk1%qLN`RW32lL5W zOJCy5y7V8v`!Z6>G>PFCy5IV+;6#nVj0@*JRoGg1Xmb?dmEt?l!W}Dtd88?Bb|R+GkANtjR^R;9 z%$#{or{S2cifS?L%vnrWq9=^oif8V&&+d-T&VSR-6mwJwZc*fj@><1K6EyI-&k}43u9nH(A+5>V zg}uEfX}Zx9OXQn9m(hE0-gBEEmhcuR3CVCK8D_A_eQZ|906#s4E3@7m zGk*v1UPx-#TJActzcoQ5<_i`=J7dz%QG;Po++gU*qD}Ww1otTsnNv#6qMEVL5*I&0`b551=$ zX1@=Zc5MVEWpxk}{2)``h*@+snCO;{B7cYe9zl)_lf<#D%;u(4y5@WY9XTeSE#+Z! zAz_~!!qb-#x)c)5ysqRN{n-6g&byQ?B2hKT`%^mm2|GEW>9eIgR8I_kny|LI`JP=* zQ!V}rtLb6!9ia~W- zJJb_N@nm?Y4f}3W{?H+J7*8!yNPn$u=`RSrR;XtA0a^4z5BZKz`~^ZlQ#W0FO*d$I z2ptkduk+okpYx@o0H0{8raK4#CEyH3r=p=yWx(f^&23u-T9cpN)BMx654aM|PTX`# z22#Ahn0Sn`cqK>QhES*4bg&zI6ca(E+ zNL?w#4-WkTLv;ROud-Nek&w{dbTlq*6MOG_bz<49h#pbIlSkFp#*8tB!NIBOr(QuD z-=&G)?7~xEb42)F{&TCJ_=OeaM@?@BLM^a0U2iLxfNgSiQ2wF-i|%j(et~6qfbNN*kcxpbzK>=9 zqF|{j*hJ1blMX6hZQJ)hYTOkigZpVXB-jqOlhW!Xz9)G~xd|P-Ke5HFY zTKlb2pt5+0o${S0<#UT8K3n0_|i*u!tP&sm$R47j~uv}3Ih#G7;% zt!6f`8MeBJVb0%FJ#&q9YIazo@mFBY>Jr6t_xu?Q(fr9uxIUeiO2T#S^6FSVN7>kq z-P7T3aD?&iAc7=6W`9{@8F+JQkDfbWX@nH%w7vUrAQg2FM@R@I4sz4bZp^Nzj4fm_ z7M?sy4quq*ewsa4BJ1?R$cq&<_5Qha@Y*NuwV6s-o4}hbmBFl>7lr(Tx?JpOG^+%d z!(RLD;I+r`{OM6r12c$OMg^hT@00e?W8%Jw%>gj zO6O-Qo_a~t^1|A%`o>!bzo>Yk<=}_L8aPZGq&(s? z?vTQhxri;n6MvI6a*Q|73cl6E{Cb~0c2(r{9{s9wt~c1xb|0E#^hLvBfw$HEh`o&1 z3sxvYH8F!^ZsvB~42LuSQ4xA~V|h|T?#x@0vs=bj6Dh%#qLpy|{a#lP18ci?8(O1; zr&30wbhtN|%6czf=bmmgxa3EBAZ&pQ%&_o=vSV~yK7UOyS3e7mVVtj{dBgiehie#u(Pk=k4lGwxtFVL-oNX9 z8fWL1t1JFixj5~C#RWO1<56GCv~-Eal`Bw-eIyja{CQTh{9<>Q1WCG}&V5B9hm94` zBET?}1AiZB{Eb?~yHx1a@Vz(n_X;W3XSV_o)uSz8+3X&^sfA;_Z(7N3Us+&n2ctW2 zZ)>oIV;g%S{5=~YLsa*gLeluV3fG>?a4yg|smo&X%ts(bAsVq3>)gR+P2y7KW?aAC zW;v`=VY|B*_8S_iz!z2scNL z(jvN^?-v+sQvYiEC32dogIdwRDZA*A^rr*4H_?`3UI|3bGYH1lkqyG>M*^6rn1i(- zQ|vTUa@}Q88(Z-3Qogqiyc^I4h&9%mMp09ZEfcuJAC(xX1S>{&LL4UyhZdT? z{(G`h;nLcucpc;_`zZ5Hu|MNTt;a*XlZEh#=goozYh(3c6+3_C2-YP#TD+3w#eWk~ z?GU#M>S6DhJ}S&hYmHD>s~DnM6QE16GZ#~Te{wyy95Z2q4|wAVHX-ROwNgPzPwITxZHE=^ndNT+v)P1PKYq^@7E&(p&(;1bD1!u17h()k+s4+ zmb4`851&aFqe=<6<6*d1T{W@@ps-rwoi0y7EDaBCYKCJWkzyNX`c+I^WJ+`VY1>Vz z=ekt0eL>087RwMqZ-{6r)y$u(q)id3u{u%l(j{Xx=`kfc;nv;NKHJ$-fq&$hN@^HY&OM=dwRH_iq+dGerkPEZDX#rqploW&SiPybOG~>v)W%DqQ3Z z*Kz2~6O;4^gubPr2DfE<{$l0D^kvv=$**|#mnicw@uewma-fh13Iz5Bvr@BblN(E; z4~nqaOyoy&k0X)!uA&{LRevP{$R7PzvKs46yAZaZ50VI1uDqp&K-6&MRfB&&XYXV$ z7Wq2q2Q=07A+J?w-MZL}-T?`MSt8(P(QeVjCpAaFV#UqJyap5SwnxM5(>S18**?2d zmf5w6Xfw~O?JksglYwHhQ>XKa`Ux@_KGw>6ruxk@gg=SBtru&SihtZ)apX{aRVWBD z!!hnd-|XB+`*AU&XFJ@bg!9h=Fxr0SPo3jd@!q-{y%Ym6n@ zvLLM;LOk4pV=u_}4yyV1!+kOAszZPrz^b^3;9#g}var^j ziCN&i#zQo7uHGYrjeoR7*LB#FpfbcsvUEfJP_T>Jcu$<#w$+*`foo32s8<#NQ2v%E z+A|v;s~_n$hu-q2d-hc9;Pjc%~zIeV%`?>LcHJamIuVjPK1%y^>2jKqafZ#wvJ>2AV2{JUV zz#&@Oq!9Xh)V2CSuatYlCLKpxka=&!BMkFgS0Zdf^SenU_Kn$9hAkueq6-OO&*lRo zi0m+&Fq3!Dph6a#u2M;=Kfafv)^o?9Tr`6~5Q%64>dyuT+iw>lcJPGzyuixlgw6}2sCzc3^s}yzY%n@Fx4gV&dCmY? zk*b2;0hu&g-BtBzh$S(^ij^cyu|kFq0;Mk!IQ(?P&&IMGfQhqks0Lf`Jguu_&>~cGpbDHxYXS!lD<+ zchAX3(m%&GC$nV?BO*QPTgyc9uQQA%82w@060RKJVri?-26!ak&-9s=2BGmV@!5$d zHx>s++2M^Q|2+T^j$96?$#>=@-#+Wzj+U2A-IAWq_k1!ep=EzbQZUCHpwaV{OxZp` zuYcvii>2P7+TQLoiq-s06!%gR$J;hri=N)t_1e1>Z4Z3DD+iq|+1&*~d98Xh5GQ0J zgV}kBm-2aB$LH$GezNnsa(SG$^e;+I8q1d7?#=`KyP11^Ro&ZTzln7a{%dw6i+X2dQ zIhfFq@A-|XIs&bIDIU}@FsO^s#sHKH3i=i_F1KNca#wccay_^8!ImZYap?b-bbnFX zFO>0Dy@!9Y6^=L6!wmkxRm1}P{a<9xuvIBxJ8Z4~v!AEkPYT5CB`QCEQvPIO(vPKA zH)UXx#YPq`Ouroq1XN1WoG7-NBg#p{&x+nUH(WQAb^wg0ET-okoy|6cZ^o+&y*MTm zN!CVPPDo{P`Q2Gr1!Ppa>NB@s`+q`rCTg4_#gQU|QU&$?8>4(LK*}jtF6aTOo=TY#>#b(`>mNvC%!L4VeKJ|n@i z)~IKDLD!Pl^Z0h9VeR{EA=2i-5A^HC-eS@DHl$)=Ga zU`t!jO${FI>VI`WjctMSF4A_AlyhuA36#EJ)xKZ>`^^pa_bPBKMO|#L z1IRGZ{&QKTUYoGn6bBh5h|43~tMbq<#G;Ds5oNFj7znYdil5}};*O&6SJW!Viw|!0 z=9=Hhryv&zi@$)YP18E`AwvSxkpl()x?gevjh<3&vo1lnJWVNvf4R- z3Jh!t5)&`e9%@pIdH+$mXFJ5Si)7ns2Dji*Y}rCCJ++M4D6;pDikpe>TDKq+>^L2s z*)ghqiH!_U-Rw7sAZqFXJPl_$CS}9jzarMV-Dqdvt2pt-M_ff`;%!SW5f|#VQA=v8 z9IanCCDRew5<$XBlz+TFuhczqJo6>bl)^vOS$DAN)bR@maHQ6#ZY9V`-}9~g<9x-a zALJyn$1C4(O=XSN^wQfJQK&csmC7|%k9m__Bc@*zA81@J5_HBwC-D z<%748pHFl*wt3x|V5&YaKI)pn{SVcOxo#*At3%#56e}UbG+@A?Uso$PTI>y^$B!;} zOgH|7pjG$Z)&6PhJO{9c>bwb=6MyrxlNx174r}dqunI&EkFF`|DFGz8L||!a`7owN z{Y@L?0CY?HYQW#eHO&sZAx048=++Thf^n@&*Fu+(&;}C$IF}Ix1rxWKx(g~!0x~(5 z!6*zAx7i2`<{y`V8xR$@)F=$UH3Bm;myvG^6t}5f48%YJGc}jNC=3+0gP#nwAeX^R z3lo=sp9}@JP{0gnAp$cwmyvG^6t~ae3_WB4IG5qt3KO>=Mh)3r12{A@m%%6u6t@th z4IL<#psxiKmw=xP1-C}b4eB2PI5d{T4i>ja>iUHnz?4~nYpjI8EBqrvrAdStswGn2N!lO4v;V)qo%FRB>;dxJRBepHwFWP z4%7t(`OA*Mpa(%XL*Wj>|6<4>AeMhFcQ#o|mph^w+yPK_g#lbV02jY7mw+$`1aN~u zLVpqA2w_0h(hX`2sBr+wa0iGp27?UT(Gvl+wR5>U=dZs26POv`5)u+%`yCEQ*+URe zu%!c_X6a%FvA;VJYzYIj;b17l#q&QYm_+SdTpWctIo;jeIV|m+Ip7Feab|xuz#Zyh z2WUZ@AqY2!HSnutK;6`hc?{C#oZDC0qzViC>Y}4d>7*CU=2Y4 zcc%l|N~(Z{BgEkkvg#iMHsH_U09+hgf2aF1`d1>T!|z~AFc@y{XzAbyb+83&pfCua zA+O5e;^D#uSUOn$B3i{pMRztY@|S&E1pp&&z%80C#ur{tMYa9jtABwPEe* z$f@f9b#jF$$^OZ?GhzH=vxT?-d>{}=5X1*SoB)Ui*pBnp0Xm+Jkl%k!u3zT69(=tW z;f{dKT^kTzs14-q2gBRh(hUN*AY387-v4&|7h!O50oG8k3t$DYg*ssTll{&NvH1hv z-9G~A0T_esns*-I)HW*zHdVF#Wk7%)ozhsl)Gt z3jvt^(YXnT4+OsZ;`)D9`|ptdKau~+@_*I&|5haL3WNRjGyOsM|M)HKp)k)s8F#{U zb-7ytHTc~sIQ%bFAM(fMszI!wuJ-@yRdTVsTLviyTiD-&ggSrALp>nYPoXYgyFc{u zhh6vAroo^Nkf(5G=&!d0VCMpX{>OK>Uf}0_g77cRu1_ z(vcppn5dZPf+W|yDt*A7-G6c1VGE(MhLhQj3M7TC;_b(3QsP(`qZmJl*Z+JKEYQib zS-z2X-Rit)B(wwA0|lqJG>POcQBoPLJNF|DY3RSY3>cc=M&l!llU;R`bVsl6M?j;` zq?;p2FFb!&jiXZr78d%_d%BZ&j&fAGD)`G@JtigaQl`lmjO!&Oj7?XrcSd5A<~x-s zG3=)|v0d;!dH)$HKm@t>t>hMw#kiWh@DA!YPK>6u-&u&Gb5mu@TeM!_Tj_9BHsP2V zrKrB@^~ixw=fQbecZoJ%PNc#!!(^lAfgGJUh0uRp8m!#T-S@SM9^OR;j~$|cPHk=| z(wN4xqpXwJm#@}*-h4XQTYhpsH;nGK0JjsvN6Vty>}w0j1q+p2fR@EJhfF+)O#jr6 zQe)vO!F8!ZG*>^z5z44|KTqH4X-nCTtJPsQq9YrVDd|;{37<-g9b}|u(z+D2lVqu2 zm!f~{W&Wx|8pe}ut_!I%)_y}h=*Qkkb7umI?BTZ&&XT0ywVqbm2>_GloI?DiSZH-c z_(=nLINX!MEYFGTL<3J|BzTR7d}34PUf)26ql;X#%QZT_o824vcXU0@C(LOXhnfe1 z{_InJUhS7Ny2LJ__m3PG@KROAbQ4DvPfCCI_X-C#^h$a&w|w$2DNp5RJ0+PfOMTkm zQ4t;_+k?+S#w`+`h)M;B;}Z%xI0-M9$;M8RcQ$vqO?!aCU9=wK_@iHU7wBa=%Sa@_ zfJ9}Xw*bd?xwxORNo^;H+MlisYNm35%8okthvMBiOZ;L2n_rRRt@_D&B=Q^99iM-! zOVFGjlc1!d&F49wEHJ_kHy zZ}CcH>I5aX(FU$f+|X*F+a2+kkoK1ase*EDuh5{lkF|p!-N|KyuK5l_8agLc3g(Wd z72C|>Qc5+fL6E^qB|3X>wD)Ui!681$U$~;FsGi7Z&I*_LN>~ zFX_~w7Dm<2CT7IVko47N;c7p(O#P5O+-=w?=@A#v+;meZif_!$iJ`4EFW8#E%%7pd zyjt+hw@xergLGf}hoogorjhSAv%$p*-ub5rG`<+K)Ez{oN6eJI(lzWh%KCqfJxPrZ zEF49x5^~szuZ5<^*o*sW7`z@CMV#l^xG0&*j482VmD)%rg)qsBed&}M-Mmp)Sf+9J zUz}Y0{CUjafbr^pKO{kX3L}c~{T@PqSplIkjURG>x{CVVo7+)bW~!Bgb4< z{C-M{_l3&i5__k}nq3^q$pL@Y9#z(eRIWgzM7?8hX3z8g9qexGT(PmSZES4Y*x2S3 z+qP}nwvCN#JNf7Pso!1qqnYVGr|Q(qoT;wr_w?(-E%x&?6*kE$39hffvJMPCT?6~V-pCtikPcq;AW_XZaJ?1 z38MSGmsetwkFuE_X37@Ou0TBJH^)ZxzM1DNiaQF5NF@j1Pj_oq*J_=Gr-GIm^q!oa2g021<0;Oy@tS*_%bphxS#LzRDFSD&M$NNPE2#E5UwrQpl|uvC=HwX*vr! z4O%)h>h%wM|3CD8#xsEuwH^glAr2O(G66+>E_juDbC^3tm%yvZ`C^4%a+5ymDs}B7 zwSD+&NQ!K`qUri^7@_I`LGjjhqpr&KQxOV&_)*w%dR&8;!JLO2JRgMW|!C ze`<^a=h^87@VApc+(q|k1WOnW6A9cFjuicJT1v1s#yTN*BW&Dj$)_*lMT!U6#5A!2 zUHTQBQ~6xWP#$9#6dT zxFrSQ<0n{hcqP#jE9|KwX!+Hs+!1iDUnPG;7Pf+xg~EqhoBIfU5m(xR@t`gmTw2gE zfO_<*SRcLC5J7m_zCR? zy{$p5BkYsB?EfZc0fctjJ%Zfyp z^G>nL{Q>vHuWBD0`jVqMe2cEXhgW}0e_m)7Z{ z6jspXMBIp0tr~k1r00%_ns7ZmuM^pN+$)CnsRA`G&_4%R!#nm1g*3BbGDKMRPl{9~x zxl2EZDm3bTP(QI;*8sT{8yI7r9Q*SNU0M$2U4%~`Ce-dU9}NYFd$D(8)zZaKHDXA8 z`DaRsda{(ZJ&@fDK|OQfG8t1#7<9+}o&s?#-a{<$HSYZJtzP$vyhhI=50{48N$Dd4 z5%iWb&zGSK$+xhuJm$@DP+`b-a0d9m$%=bi7OsZ%I@DHG1ind{$66eA#yyi z>}CuzqpFj1pdS1*(6CA4P5JxmP6reXhQEcv^V+=NrN6s7`6rd2ZF}p$Q`X&Vn?$?DAa~|a)RSy4=|MJU@^2M<#rKIGd^UF!aZ`XJt{}nC++(&9 z`|~5{MgfLehetM|cdd#8q~BRuXNIEmgm!KSV6<3N!A<3rFpYN(nf|i~vL4vrA(3W% zpjom<8eS8Hv204hsifOhC~2mNSFhBPv&c}cabL> zV0KuFU&_r!HTYI+%DZv~Hx4vB3ire-Nnmh#LR+d>q{nZw;-J0I!E36_-Mgqx z=G#3s#}jV5w2>ZAzX{zCvqEBoA{n<)C@m{oV;OdX^RJlF)-u?xB-4Ci7<&+?dd8=O{Zhf-`EpAkP{u zTAdfR$gu7gfkBfAQ;vf9S(z~*PYH#Cs@~wKY3Pk`NW-l&gp7b)<{~;S_Sh4+_Wap3 zta=(#Gs*8a1bZL^9F7x&!BcVMu`J%c!u+!*@5bl*B84yZ$D%|U+agJet{IqZhUsaN zSMCy?e*1W)>|!__G^tyrzMDtJq$P?ncaKVgRrZUJb6`>gymq3h;0ke3_9Gl-0afRt z=i&-BPI&6tBo7?zBinT<_FzM8#A#%~^kGkAYBDJ<6DE*Clqm>WwUT%u42+p}vrP8* z#I!ENV(wfjjOP|TEANVX@%ew0VdG9JmB>8J>Uu|jvaNrqD119ckbCJPOP5Nv9jiKD!-rDXJrOLa>3FnEc~MysE$15{XSPt^ zEzj6->IS4>WT(q^x)l7ao4O)*esx4?;L|ugH$ITBUP@L9X~Zttt2GAgpSOB)CokC1 zoLk5+K{k2T1eKUPGg_}So^8?eV&Fw%ylCQnWOMY*r9*HBy~e;{|8b$tTuYy1TY$n9 z37S#;iK(o{S=Z$rA_Y;7Vy|)sc?72&L0GfrPN~E(fKu~dzO-#Q)iUMW5+OwQSw*PP z+zJ@1CaoMkw>K&?=h;3wYsGX$=%G`dNcc3HGCA6keQj{)<1LGBa&ku0XUC^LZctrc zQ*Q{5KjZ|S6x;rI{c zI_JXn`Kk92*ariV08tGru~OGqo=;#vOafZhWT|%~8m?6j?zMxhsmqPys7Qo$6tJ#A zRYm{N77lTBy%V<+azW<35E68VC!tz@`k*`zZHMxyL2QkD3sSF+ytL}>n$225tUtd& z$XzX%+;exWz*4l@>JBSVrcaf}kjbq{O1N&U;7KSQq6=|jbBI|#>9mg;Kr6>zoCTtV zPd>3gDDBV-XMEPqXkEP>!`g!f{+NtbXu2Al`r8e|-?zS#5ScteM@C9%%;}kky{te3 zx_3)y6Q|O(E$=)@@pZF@sdF;MIKZsrPZ;r8Wbqk;e)!qQq`MvXmQRLVVgtFW8jQ1< zA2`*|#`uxvb#?RF6I+=0R|K!z6%x4Bj_B>KMr?yp^i1I@rBebGzYo_$<^!+ZmTjD`gOQPxfSlQ?P-{$lvY$#Sg=W=b z0N^)oMT0iW%}_n$x99K++W`op;DzXL-E!R!Z14Sw3k@3Iu72KUQOXL}DkLB#O?CW3 z&VMi`(P}W03gQGx`Qe89YidV8V|uyZHC1K~J8Z))_Mx@qm)|XUriMyt7d2`+PthWN z2vy$ZicltBA!K)pct!H?N6@q?(})<$?~Xz0ClIZapiC7TGtb!K%UvLPr_muX`KkB= zO_Qgi1^>1-QUqXG@&4hX!1vELBc{)l4t?OWb*UsK4r5o#`1T+ zdxBQx*Z|o+6N3I5L%@?~T={OB93Jilcau^j7Z>gi}&f6Yps(#&D7r z4s{2*3c0cPs(IhTIzDhRh@p`b#h|nsCq++_G(&OucTU3u96YpC9b>b&^R2lP9~{B6 ztJm2UJngx3`RVU2l`)-eR;=2F7V6D+{3mlN>qa)S96wzCX#% z_FRK4O|`Y9tqJV5o-yvP+zUdR@kIQXHWg4u?4BZj-rd}B-${Vse~>xJy1#x-`v5$a>)~JFVign62Eq4Zod#iuy*{TjZ%(3h zjdUFl>yf%8CvgxB0^<3&7{pfFdmia38gl;t7(7C@Zx*x;1T(4ribae@{)?ti>D<_W z?drfr9?ria90MIArrK5=dpve;p>)Hzmix#+Tj zRysAb`??3BSoI$b)$g?G1^ybBs$t0aduhw#4jHMnn2@qn+E&TIvT?zh9_Wq1ma08% zM$b5r70oR}oRy|pES@GyNmYt(T6VDfP-GPCsmqK;jw|9#h}$wvhZqqHT^622sa$<) zs=uW+R#JgR@qXAH4$b-JYauue`L`_VF$dCKEldPZXdfP_IJ=cPj;TApcRYrEdk&^u zEA?#q?-@2o5dDH+`3>)1j>j3czGK4(<6QqM1*@21d-VJz?!wAv85|F}X%2=izP*T- zF8pVuoC8JXvQtE&euC#$+qKv9+{LmXDySFzbUNq&v=ZU|nDvc)tKE=j-;UpUBkvK;#+4#=2%Iq{Q zaK`iGPQW^>BkF)^Iwt0=&r-y=?f7uQe;6w-jE@Kfh0`uom>h9nLPkf+IYBo0FWYMnIL@zFWk$aV7$T&YP=cmQG*`(%>J6#ld=sy7 z)Xh!Z6=log^UoR%I^AYHj`QG&Ik(=z#0V4`H zL|j3(P(ux3yt4`En>YFOmOADt1YbqsV)vM`Tn9oc$jn;;r+F2}0L8&1cK*dceikg7 zhQ`2xuBeijPyfN6W5{L#^O~BQeTiTpIvQaYXi^Rm=32Wndpmg0&1>q?WaH-NgJ_xF zxf=)R8PF3+(-X54Lcx~$YAcBe#ReX!@1&GS+t?p^g-+-2Iw}C`of|2IBt!Fhra%uB z#oGSkql2W8P4$TU)|H{;ppbMR15v}h!m*UdMDoNz{|1CP1YVa7s-24yA>ao|1J8nD zdaPCYPYsE}N#WL)*E&pvxUDE%D4IbCu7CrVq`@S#WafCON)c}Abe;0oa=S8M0N&*z(ca~h z(<^_L^(+}5oS4@(deDwDaWc?#gxoe|-{vgQ^uY?=!{M><8%=1>vh`Q!=E z2s15QHS1YB?guwks;b$ALgBRf9?I;@qvWNk2eZ`#>*df3eUo%{E-8NjjqX*st=b~i z6%QEaLJ382w^81G7UBf%yL9((E!|<6!nOBPG3MA6kepT5-WD-N=s5BY4Vdmx4+XMV zMk8(!V|~z<-l;Sq(C`jh+n46QfC@QIpRDsgV|9R64nv<#TQ=s>=0XbC`;2HT73Ci- z{QzFGZ@Wn>hbzYX5;ka!opG^9RgNby8(qRcF4b{B$=NgBg02Fd+rNjVC-ir(5AdnP zz*t4qk=1Sg-Xy>>BM0ow&{PiR>2R7M#1I8v&NTpPR(CR=k!?EVyWLhZu->gaoPv(p zRq~x!NEO15W@NaQ!1YLG!IwrGt~a!!ein9{e=%HwG5=W><$B&A29cM_Dvj*aWNfqC z>Dd3m#7&)9*ntA-;&BY`Ta>oCWk`im;dB=a!UYcenV^H@Ml&L=axbi3^wQ^(4)aTi48hRMt80X z5XU>?%icm)a|KJwb5r+Y8Ft%bJf>vimN2xW=;moES=IwN$b{###3=3A#J^N1xaQDk zWPgv^ir)gm{`G$j#Q2mu19jN;qdRR(7)m??s`X4vz`qj zqr|PCmk|Q4l$v2aEAS#)<3$%L5vvzHOWD8CXDn&VA|iRG=9sge!kyI7jV0FnYgjzj zrC6#d%)vCsS4!yvZ?+S4p>6tMnJw<$u+`w54=3&(Cyw-@z4~QHRxYI>s3V1DTs7ti z$?7d2qic&-XInC-yj~DD@d=L>r)TDOQHrZD87u^h^I`2=vEiEol>!BRxNKF=E;XoO zq;;V#*{~1&Th^5#P~a|bwTCSmaHsQ}sCJ!Ca4CDIyi<7>6aVnb-&@BbHz60d_vka- zhpNZ$t-fBQ{m@FZ>>C-7ZN$gmGvhwY;<(+#_Y`AX^VG*mtXP*qrU?%>Tc6I@L)m)= zg6M*~Qt$kyvq%=T{FYCQl)$rMgR!$T4ZxF=e`^^2Pj10?4$t*%W=-xPhXo{mj}V%3 zAP`Wn|0kZH0<}3A8_|~Md-#9q4Lo(kbdvAk|H(IIybyn5Cu13)z$vvKt-=<^I^H;)f89ja}E^ToP|3p znA5fkx0Cs@qx=KjO_(Kz>|D}Re&&V?VFH4Y`8-!Q&d0dBVghI15s>?z%PItW=sIdm9&Zr_xiyD5>c_}ge zL(?>6Aa~MZWrg^5T)x>7>7Sfpvnn_=0%-?M^Snc|w0fv{ZfOVKRnc~ZF1Q|S(=;}` zc`)fa3NXxE`CifrU)NkgA~yq467`?wNhu|HzdPDUOUc*t+KWT(5P2T`gv*b`e=0>_ zAcoTaR*diAFb$TdJi>Jsu3yk~e3opsiV4CO&?Lpb(m`Om7TN9Lk z1Bo>4xGn-?o(oYlf5<|SX&osbIpSo&qY()T-%fD;<5!x1Uu*$ag;HeHa?~Cvw#yvww?dy>{I(;hhWZjLytlnwfg7iCJjcUvnUq zz>wHSfoRVLrDXthqBWNR#L5pM8Enh-27Vjl-`K)DyzKWg_M_ouvX#xgkS+Wf&vj20 zGuC{bt8XtyorjyzcLLRJ%$UNTaJA2vXU`q9CASNgM$cZX_@44J6tUk+FcIJ~Y47Fk&j zvJeoRbe+J@csbbO`j?NZ4~o{i&O>27-5B8u7W`ncyDKKB@5`eXI(N37+#HxuvZN`t z=pz0-QoGQvkQdcS%tNDLU%H?156eVU9$OZ8u-#tRQV@pMPpakVU4eMaZ+pPeccW{# z3X9hTPf%id{HIV38H^y!mU|eTKoITO4e0ZcTIbyKh5{@a*;VT`xEOl}H=Eq%^U_~* z)f5nfckz#NxmdBmqV5R(`>b`F;xMi3!%@MSn7x{dX_gGli$sA~!h+9ON4>IjGA*cT zW%Jw$y{)~{h`2E5M=cM2!8kxLjy%X_!IwYb0$ARpB+(Zn)B%2!NfN(h=QVV40-5fN z9@PShk}~*Em{#8~9*gyj>ysM*^W=#A2vv=NUqPuPl{)0nnl)Jj_QI$pJF~0e9N;#p z{isvh&&W&CH%YJHZ{uRHFz2CW(gOAAFx$dC|EOCX4fF#vBTyX(AzOgyi0P*)@?iB>WB8Jxk#`f=5QGNC z`+YR7W~Bcpoc~diiivpgZZ6_*;MigXip7rf&f8NDBjgE(=_6KAi;_!LWnPonPTFqt zQ--2Vl2+ZA<51w;WHtc#QI0bGWZpMFH~+N+F3FAMy3hS;(l(^z^a2NxMDh98JU^(-yC4jKb5{%RlQBq@wB2U_Dx$*BS%0gbpPrxLS4Lw1O!YDOk6VVoz+IQe9%Z#1HPu6saO!X72%DFpnR6$c}W9Lb_aHbOLP z&=g91MF)6@OymNQKnYtna_>`b-K@c7$nKdA@P;_fRR~%Q@1~W#iqf3svrD~u_9!z1 z?p}xlMLIOVNA4(j`g`4y*oS6sQiy}keNn)Ih@ZwW^d7>se{~_?F*9VVW?R^opupBpy*lMF_j!|EZo<6ORYlMw7tf7H9Zg^fy+({IZLL zPpn}Kdm_K@K~RSnr$>7X*puJRM>w$wfapz0877wBGaX+#l4CTWq6#KX<~TX&5X~wR zhHZi;<3LCBKS=?dn)lqJE`}KqSMaf_XoeYYYiw3;Tv$_Gs!^mC9^>#6&JwH(sw5x1 z7-7QbFC_<>Fz!miH3Y-o&A1t^xXhf=*jFIhEy1(irlz4RgPg%8$sSk!t-`3)@Y}YF zZ;HTvNxB#S>F$*wS0&lWF(j%!Gp-$|Mth$=*9c~d>)m0X#jwK`*umb(4} zrLJgH+BVXvV#+ZNMmz2VZs9hK*FM=5TrZBTb_fOZ#&Y+yq}`|KG-Phv0Y17&>VaTfO-QIa`L+)o>dF%O#GrvUxmJmMMPK(f$2B&F|NAb0IHWBW zH1D^P?8V4PZw*m2q+;sdZOZ`nJ*PjZJ+1LiP8POPTtd1dF`8o3_k%lm8r}OUF&+WF zLeYZ0J2bfT^eyHfu;c<-el@oG! zL86}1DoZgv>m5^A{8w)LRR9D#hgx$~KR&kGZqI@Id;kjZJd_stegU#IrlFKM)(ZL0yW715vM-<>a>6UWd9DfYPi6ew>1wP^n$p5!6P z9{IV$Dc&C;^C5BeGyU<>=mXn>gby>;@zL0ABBAE zPB2^vNeC=ZZN|??!TMGx7*E!(1ZX>6m|g5IS~e=sct1oa0RB`NjbU<~augaz=_<039f5nrbj- z67JokIID;Ql{?GM5@;8oz1%bqFN;S)n<1&6@-elqPF1yi4=G3z3Wogpb0B$%cU0Nf zs%tpE`DwYaI!PH)B{XABM}d{~c0rnm#)3yu=Q7B-^)Q0)jFt?i_W;S4Bf}2L5*Ht- z)iuqFkxVs0mHW~CMT3rAL13{<2u+5jP_bVG`g9xOX-T0;;XDaYbT9!tFg1g_qSkDC zw#e(kQ`3#5j9ZVr=CWcvkz7fDam55=q)^N@H8N7F(`ytyyWED)3(GXoLv7 z45s|FH^7;=_gwm97Eggc-Bj_ysoB;7DbeWbs3W1P3WhtW7#AgR)KRUS8Y1Y=S0aT- zki?wWEaFh5TC|UUoRB3ObaMO3NFHLgE9`3rJG2gIe1gJwYh9L%MWt(OPyaM-)uAJI zfFdXDRDjn>`pY@EZ`}J#NBdiKFtaQngTt5_zXGkJp>QRfowOKe*q;x}$DH>bV`9EU z702PGHLZ2IBW}p5HsrZ!hS$JC} zpMIa*;}oseR5^W>^S$MU6GIPDxK&?Q_l*DjnB1ax;EdVjr->bbspMM02wz>RGGlZ9r>o_fpQx#_$)F`Xg47rpCUg;-d5Op|p( zZl!ZG`(ab?F8durnqIOYq>E1O9h%)$xXpH0>abL&_a9n0EOc1#GH0iI-!*brN0H@^ zrmWT1dpiKT_t5fS z)dH8mcuN!WH-u|ZA+Nmz?4+P`sL;D52E z_-g`ngNrlA7th?hSf2B{(z27O{#pi>YPoP8QYA|od5W)eMgESbpvOm~?AqpPNqdwH z8vZ~souC!7JM15QHe%<(e*iib#5Ki^%`Z=9^RWD@9C2RW{yW`7^3wF34V+ z5T)j@N&H&654nIuQ#yx8n#a!s27h?sPP_pvh3N4aV-FoUkK?V;$1x`UTH@3P3f6;F z+mDu5wcH=xr9VwGCbPES3Z}FceBj!Rwnu8UHT%kDvpSp_1*&eLdmHsupHn7TmREH5 zbJxS&@p^N=Uhl&((P>S!_i+LiaBFGHA}g@>GskJoTrxYY0MYQ-o!$?RELSu-JM%zS zhq6wpvrud{vb-cX!J^GctApAt&*y^&6A~U9w$@+kXoWWOR;i z@GaT)BNzC(6A;qhQM2a~em3(5ho#}kkZK40xv?!HPULGQy%%F@zf#bqE6?+?FfbvX zHTa@Ea^omJTpenQOjnepQ27o$)BH{%=D{`>)>Bd9(JzU-lIEzx}JE&;w~q&wH*5d|avTyq^vUkR4iz zMZK^u{kj#(&gCg@*BA3gR|sn5tO0O_18*eZ%{+6Fjbm0blqTkt=It5}Dfhsm5XVAD zH84uBlYkY3-|{2p=dR`aFDD-#)7h7X!`Q4+P%crV8e5^bfs>ccZoEbhe!KjKlIprd zTa|)Goh}IQd|pG=Y(g@M@C#O^SAUy7C8}>yKEU65&F2ziCt$oix0c+{Ei`$^tJfx@ z$Ddo38$J&P_wrq`L$XCh)BAvp)1fL7Axo+lu(URPGc9+$&(cSx8@g?)2TmMd(4g*^6^cw;6j8A4FcIe`8a{;8)G+H9$(+b z%3H@MT-QwdE({NPzfGkqgXKc8OJ=3z!6H7-i|bdfqUAwyq;l56TWB~pGy;R4=4D{U zyEPe+QZTFQIgO913y^4Bm9VGRD*$Lv1p0p5N#CJxFV ztW445s;!hGTElR{448j~?m4n0u|0C2(YvK9E6zhPE~pLQZx#=q``0HS%!&;=YMko} zFwnw#a~FQ#j5RrYs<^*iz=Tip<+fiIB09Tc`@^zKCg$P>NDK_-Ly+GJ?6RI}SCcEp zzSVS_h_=D&czsV{YoMq#uO;m8!MXvy&S_hY=yv9g@9#I?#zy0JdO1RJbgpZaIELS^ z{8NUa)lu~GXn|}+wngAr@$Pus87CERe#`TI3JF@M3)tSGlcxAknR@RJKa%Ceft-F& z7U#@r+UB_2yasM)IkW&r5ITFV`ZKEhmy^lD$0rIo3#`g4UMsnG_VQJ2qUG>Bo~#YM zB2o;mr>qE^m9l228vC%dXkGIgyR4kf+dMtwPfNmZhWiPLRt8gh?skriW-7fZgv17B zd-LGq05@f~V#OJ(d18)cGzE8#_Ud()Vovg{f5S0#Gk{)&ld!VGE(*x2jUe_6yt&Fa zvPJ$>^?Kdfffuvk%d+@kWhav?jvXI4H?M*1on@`v$``as7jei{AmefC*+qu>?HxOt zvq$-VmTKYL!28O3&lp{2i8nO{tH_7>dxctcZu=``<#JwLeILU7Pia9NgZl(lXhS*N zKhIxw_<%Zin;xx%Ml$Z+X172cwW;@WFHg zQ#G3-y58C)m`WFRKIN}%E*Z`FE8Y>^{OW3bAU_Q#pjnsy3G-zQ?3@*5MF4_pI(7ND zx->_(u=Gc>^i+h*AN8rVG=j2u^qZnI2hlaIx{Y;)t+R_~jW`H02+GAjLA zn75XE5AH&@=96|le)T;Q&H!kWNO~_MPf(nXk1}d16 zZp;$rk&m_m-^QQER%kVU&aX0Xzh}lQM;x1Urc9fp#=S~Iv#0H;9Nj0p5Lzeh9sf}l zf{Bwyn${L^J^zd%N;`lZxO4MzZM5{Jj9JU#dCmHlzifl&fTWO^UyA|Mz)IH{NPHk& zwEgFo-&BY{9Z&6~k5B@x_<>Kz)#2gA0UJMP0qlysWL%`SIN;DI87fB(GEi{UHsY1F zz(6EkL(ykWku`$^lZb!ouWD%xmAbM|M>$EfDrf@UYzlUKSb2e`x*a*QVQ$PC*b3Od zruYf#9UMN*l+SY%9uU9|P60jy+z3kOXbH1{Mu(1*-=i8S11TI1UXOwPsZ0J`2iTb( z!yL(2kg$Ki6{mPF4ts`OZA&ZgKoNSnb1s>jsochlr~6EqA}MJ z$P|(t;AO)3@u7BdQD`>^toyAbW?9N;c&Pd~Vk@j>G|Z;j3>kgUua>+36_>$U9?=RS zs7yUIK{S0js8GgIY}2)O=C}NcOdG^8YpvG5zkNeQrRg~c8LN?{3`E_%$#!n7l9|4# zydX@nMi|OcURYCU7ERf)@|$D3jK(}@uf3Wz-v(kF(F!Q-BQ=o*g)Yrws4|UMpMr1} z53IZ2ebut_qWzoHrlevNYyD@eIW>VU9*@F@zxqFum_VQS!bDS$z6+mP8R0+C6=3~iZmBsYE2S2 zXsyA-K34m-6(R&!L?MT1HRrNrkXNjUgYMo&2S z+7Mq-_5xufHF{#8xelv7AX_6ltSX!zn45mI*U_i*MP zqS%B&TK!>sf~*xQML3p~gTyLsYPHM3s+Eh+#D>F=z_#cgjYa9G?dLVpBQF%x_?TVi zrs+!EYF;Rq*OkfA_jPDcDA*^kPyJXFRfO@bkb=afW{vPv&i9D1L=5_=yn%!1Nd$Qs z>qP~7ts~j?xYLWsb3t87;5ug|L0E}7yM_>h@QZ}%K4pu%6)QVheU!EN0O%-WE)9}c z_8*J9K$1P$bU>_r;$#RNsh++ty}mFhoE$VwUl>jRfGfyae-J*=*QB<;g*Onu)e(Wa z6Vn=vi`3f4n-xA%i6HyuWpeyF0h}Prj2k^RcpRL=&$-JLEB39hg`LO+2`VatTY-~1 zazvXhD=7Yw`TLzsF9Ok8_j+HPoPVTQ`InkNs+-?|fGZ(PVd-3B)LMAS<{@iY{n@2F zyy|L^cw3r^8#G~kWcBkJg&+V|1>C-v_#I?6d6RJ3a8yjK6YiEs`KFLLyJgD<<~^@LY8G6g7lDxZ}I+%ZG!ok3B`2WsiFYex?hBQ?f~46QbJ z0+h8&QF~PMeCD?UiDjOcl;B3qY&-qy`(gH*lAZm^6#teI$7ce5shEo_7G~ulZ<`%f zY7VV-_VlPOqjn^h8K*wLcSxzysD}ad8<>xUlxneiEX|bsd;z^tSzPPno&s^vA;h?R)S$X1jcQQk@btn{WG3ksmYr5dS33(_Ym zNnq5LC{464Qkn%c{%##hE&0Aj`$u_}M5)#wN6@Y;J5SI-nHfqrUammtt^z}ZPr#Vm zs-KymV<9MwxtHnIiR`y-X$;#R3JpBNJ~<4`tk$et`yS>2A3Mtwx*-3_7WU5UF*_`K zqd6!lu~LU$=MVJ0uRan!$wxh>7*tU^XCF1!r^wRj6p%Ct)Nd|YqZ(MiwfPaHA?>MY z+s&yeQV0NgFSJa3!fIst@62t3v8P~ly=`RGJ1GqG9j(~C^hIJ?M-35&uyR+tWtL(- zO<#H0L1PMNO;(l1u<=s;!adpn&!BQbdAR0HnU))J+CR9%x>dTvi&x(?uAQHB^gBuX z$AAF!xU{b1a2trwZ>b${``Q5G?pdNNV+UCZdNh3L0KGLs=J-77Q7kw!^K4zK=-9FO z(8oUq-z35ees4|LdIpY`HKP-Y)4G48Pa6llThvJD1Qat01?~@GvxnnIuz85A*tPSM z&-3zD_xtV5a_vJjKA+cT-GSB4^ml9j;dFD$FyG(YiT~~926i2tJpnPCMXr$*tUq_= z@4BnIWuu~9AlGye7vK@+TD!TwOzbc5ub-OA%VsX5iBQf zpn{gpO8}Q2qlCT)Q}``E=1Xo22y_;vh$la&CErk$AIl=&&=uOThVUsT4|D-_0^0}g z5k_VAM0h5GZf+I=?aPAR@DyY}Hfs9~H_5`aI=Odl1YD)I&Xm%TUk-iMp|d4zyb8LC z=eLG{4Cmi){&_1-a0K3?oWsVQ@uTh$V@9RZQC^z67a7U8-Z(P`d(UI-d?D6j7yjxTa0i~k-Rf-H8jRQpM zVfD!t3;6tQzP$yy#M0hwf}VBA*PZtDv>)iG0+_q0DoiuQed(;WY*do8< zv>EBm2~A)0tO+TMzU2}P7ID}2vxfIa0Z>P^M;l>$yfKh|(8h-!Bx5!yWjcFuss8#EK;t_YA}rX|@mMD$jO7 z^wY4a>O_C94lk_gAGf3a@#6b@O#M(s9^wc`-aD{035`h*QI&5R z46i+nWw>Vonv$}WzM}?;gn_$K;L@t2(oR0A1yBL79)TG()`VGkI@XkmXr-T?N}XX@ zk6IUKm9(VOFloM7)>N%j5gn$dfEld<%1Tq_1YM~sI_a+0q)~1bCNhuKwCc@O_Ko#< zSTaf=q?*%_T|~C-wS^l7f2w%0&{S z@3T6&+p-p!|FGge&J~HNg)2ZZN?<){O2x`SGP3qr@;Xd|FJ&Dw@KHF?YeXSx2I;6uQHVgp9`H7R|13$3!cRoBLR3&hbcB_yNU-!`@3CFD z>6|8;!OQb$b8mf%&+BE+kc(hd=GZ3M25355pLM3o=lS`3lzg|J`TdjLY~5k-b${O8 zbU&8E0pDIfp5SN9F?{ZS)wuScg6;lDdGu-J>?z*{ApX)zV)NMtmHd(721acI0*nXm zfYt#elb^$uk3%O7&MOd4xED#-7aq+eH$x`vL_QD{%Y`;m0PTQw)|PP)zwqM%pKJUm zmd*b9WK@2?3qDe9>-v0N=KJ+1En#7va_=Wx&9%G;2YJ$u2x-1a#2lR#9xO&s!U;Nu z%}*z%MyQklGLI*x?cvc&wLJr)1pEgQ2N59yM=tAg0GGqX(zy+=MHc=SLbMC|N8aea z-XM5T-Uvxp2U1`sIdT|LJo&o_>SLZ5IkarvHMaapcwa6#cc`F^5Fs6O@c&NZPNcvN za-1;1c=CIR1Q=gIfT;p#b8?-t=+2b2lWJZ2_L+pUHq|8+W>u=)ceU$IEtfKHIJi;S zM}+W?YLI`>gpRF$S%pV_aEe(hZcHQ`8RYhlA)&!lbPT4wZIx@)h&&w#KUE)>Y%;FV zw502cEMIyHPGNSPb%?a+c2*-Tv7E#Rqp7>6QJD#)1S3w^-2=td@|NyQd5&oGmtX&l zg#JqK$_l zF9rTVozSEvgBIEI&0iOGQM-)FS3Rj6J9c)Py`bW3drg?V0OQ*1bt*yl$71ev#$ld} z>b2l1o*GQ^hJ9f)5)11#65|-0m;tM=Z8j2P8-5@(8cS{#5~mmZ z^AfV)7_#S>wd42^fD89gvjg2u73=PB>hBT>(Lyy#I#_;#AyXNyxFtT75DR`<^H;mV zEz+4$XsV(=)yeL!EL)Y4Yb~u#N5d4C9{PdhruN}#n>Vl=Wy}7w#!{PFbFdsRi~GAW zT>K50h0*N0rx~wu1au*$Yn#gV$V1O6?9X$mHFZL(j1@ksG1aDar(mcv#YL;s3|AS0 zA6IYS3}5Q}&qI?|Cy5!kM{lex*(NGWNROHEaneJ@mf41cAvk%fP> zi3N0P{$IcBphJ`RYH4RvLuZ3Rdv=xq)4DQT6ZlZq%g2@Dv1*I%zB#dbTjjgl@TYt5 zFuB3+&d}Iozck^sRO+#$FOkOcQT z$?sq1oO|ot_v+QI=~}b)YT4cW_1C+*clSVm!c|Aw{@v_H@alzr|Hb@j+KNqHI>WD4 z#*t-FZ5mel?1r{K5%YY7!gW)4s)mT8Zj~ zt2X+Jf9*@S25R=ylwXMlOsMLf4&n03SNVBmTT>l(jA^&pdu6M{dMiYwPVRHN+{M)N z!XGb=xz7Ai0y4Q>xKX2Uu3tq~Zj}EPrcAK6lYs}6JsNJ7deScK7;Xj)K1#jX+>rR6 zw|Wu&zi;(S>4K7kctHO2Faac1NN~p37iuAb_g81c4@iBV4mHEgdBUn*VLa#Fcuy9Y z7<&9pJS4uftgLjqV`;Q}^|j*bw-tBS@i5_GiMo(02Jo@Y~uystd8>3Jk!6|!NhIX{b)}X8QbSsqMyy~Ul8z0RNF}N^nWq6FfYAwgX=pFmeDdj}2 zr6Zg^;)8zV?xKgIf2bc5Hn#v_aH15+R5YUGlDPF3j&1G_@Qw73`iDczGs`gg!iRV? zUxbc9eAaT2h?VfjcDq{6so z3sd5_XDd_Cp=|W@-HNY6{jYWnK^!N8DK7lFiZXT2{Wc_bLz8PT-caADU<|x(#%B@`@S4MAFyBL*aGzdvLi^N)mE+_6!M&wrAb-RFZyZe8-ipH|X|g z`5{TH79m_c28~x7!qsltFr*WOnfzoOFV5Qd_d$ z@yQgMo-Cqs1zofW2QSubCVYSL zXSXcYHkI)+8fh*q4Qf;xPYxd*t~Og&%F9&R8o`ac%WP_!YT3v*%bbmum}FvzI6W_0 zY+S>-ZQzix#iO)tw9B-5eY;xYOUeb~0khohp1#M?x!4v_XaBADXMTM97w^wF;E!M1 z@s2LOR@f}c2jLOz0c0y{aR-H@2Gwgr##>F|vJX4TCSub4wHH3|bHSfkF4{(6Dhocp z#B^V^*Ur#4OP_G$-FVF|PLm@+<1*N>;7%Q3i&h13fp(Dp5}n?FPFP)J9K7E1Po%wH zbK~+Zn(Hr5m#8J%DSC8bbD8NNzeo*w^VTR0ZeQ;>(@K})M<)2Tk#&2pSBjLKJYd%2{=yBO(qZuY)2OnCTPLn{rOsQwKTW^6In`=_s?ZTJS zg0bPOR_i&z%MG<*!6OU$c5hqZj^^upm$QrWoOhH9^RdC+mo_6kD3=0OZ*zhd8}NG| zL9g4vB6kf|6AX3Sn1McnI|atoP{}(f;?Ac(VB>22%ba%JPAbp!`n?(%c8iIV#ufj{ z*}tj!(cA)$IP%!-fY*$)*wC4z^UvG(nzjfnd|u2vYUt#0H5KYn;%wtmoS)tAaIQD? zS>BoTsWly!;19HFH8pby2R zr}R~y%+{ueV-MR-c+1E=+8w_bzmZSTPCxjYHbaA(!LWU!Q1jGWd~gh0M)x{ARIql@Rq~w?CAu+8mlg!P5ymvxGn^-}oW%{WYmE zUg`@K;Wzg|-fgg<`yYQ?O|xHQ*sb2?K?Tr64;@s6?Oh^h@Ujw9-Zpwr^d{k zp%Wgq%znyGz2}lQHH~R8s)hf>oSm!jrL7G6jsLsR#pSea?aASV?8a8kKwLPdmFu{M zSu0$it~It>G;pe6Gog#*_b_Mm2b zmvFfMNFH+F_(Ef2nb3k%!{??a^fwGiY5#~0Nf@zUUY?K{7qPznf32eDODAMOW`_hD z87ELT6NP+!3rm0_f3IPCOZmJwCjvu};2i*yhUWL=BF<3aY9@~u70vG>)=q98e~0_T z)x5)wpo`#^$}*u37Cgu=@a8&z7Sv7{_sh5&iI8O{St>NXp!H4ZBxhUd94o07|9E+; zDDwfDSPP6KD@E$UR^;#QZA z3`}p}%7`5bcn4$w3M6qah{#duU{Oijxk-o>?qO?KaEN)Lo4*h%YpJrcJHZCrVFjTKarxaRZXc^=%w@ z{i1>Yj<+5@ia`*TOTk6tVLLef{h->)Zjdl-Vet%K6;2%*OpX<~@0%9*ElI|Z2}yBc zoWPJaHu^_cm5trF1}2iHxYnmWKEik7FK^LbD23NGs`_8kwQu;~go<~Bi4{TN?!LrB z_$$TUU!`0^eH^gBsn~G~*Qm1BJ+p0ou zA3?cSgQ|rgkA7>AVJdpat^3mxc4ezvaG|rMTpKD(2Lg9gx?ygu@r6b*hD^ziTjqdnX33njkLldkk zo`Fvz-kz8zakC!UL$h0w$E%+lui+H-!CxJ`H#Zhv*Dfn?p0*d$lF(RHju z(Rb_ahJ6w-5X`c2$8}}qMh7|x{<*fk5fXn%x!hBCJTUIg ziO+#^;oe;^I(QMlS2Nfgr>?9o=N`vGpXF=RS@UDVi972Zjz)4H2?dLnCnklSiJmn* ze3z&&kqL`L+YP?+3Q~`%w2Wj!i|n(g@Siw|)$Y?4GAiE?ATiPI%QWL6Vk>VeFPHAgRt0Z@)XTxI^7pce z$V}9|ev(-!Y73PYEupgEb)>M3uf93=N!o(a_EwzE_+?4OI$}0f!sJ~WCUZIkZ z5t9JUO*}zhHfilXA3cNd+1Hv3a)9Swr+y)hlCg=wc=NGtE<>!>Qf66VqmaaF<%>2q_$~G5Ceh~ z%qhs~DtPcG*<=|pJ5#6Iui#iEDa2Yj6Q#?*#i~ALR>f`eC3S23=IH(EkXbcm?mU-N z>2Iq4yDK&*c)JQ;e}oOI!6@_l7`@9E3-w;Xs1b6PQl2^H62YV4NoU)d*eZ&7G?&cQ zv9?ruhuha6s)w-^68k!)&nfbzrS|*~HPj^QCf~0+uPrr`0-o18TKGqpetvQEEF}b- zs=chX#Ii;SuH_zXU0V)Q=vtWSK}vJQ7iu)%Uc&|BZ|*1``HRkAx>KXAQu-Ugw3yjm10yPJTttL=@L2F#2=z>yO@ zcUxW^)SBrJWS3ms);NtfQt1y?Er~@-mM2r6k=2|nxlPudRWm7-`rAB>o6^wYr=vl4 zuLEN|dcs5^s*`mDWt=@0-!%`}B}1uCrq;vXvDzj(0$rMgTB&{w5T80y(tGYW#0+V8 z1N%I3cpw;gqD*|2Iy^@z>dZ*FoQNV@a_ zJ*R(K*nS!RkXcb*ipsBR#mQ+~I$)%zrj}FzWUzTwzAtFAc!VaL{>@Qj(oVM<%1bEU zVoPo%h{<9lIGf8SOuomQ@91{oayHeMG=zD?sS?eMF2IVisK+h;)rm+6!jdh=m9DNW zpYGu5BDBF+*i~UuoT!duHp&!cGg?X+Ga@%DA)K7+l7HsgudcY~6kluO70t?x;*p__ zq+&U2RbAz|sONj=adx)d6aHTyHl=m8!#1VghYp`{ZeHUq>O{mW>i8z^o0|PGmBseW zo+oLzlg+}8obdDDh7g$J+#`^mo20x0|#ki;21=IE!fif zRx^EM`r!KZ@#5!C3(+3Q+^eXw^Yw#kE}BijnmazlApT%caf+v1uiL~E#CA(m>)ZL2 z$8)ZgL;1;k>$ILBVC*surz?G*Q6Hyc?k7o&&zGmYQW809kC5Pnr}k~{>h+1~&(m98 z;wz90T8K#3gT?Ky$73%Ih6x37_EY`6hsTVDP;7W70^`tTb2eh&m=(v=^p`?G;}>Shkpsy${b9w#|3~ zxMr$krx%ptkpTbA1TY~!edOo)U!67(pKvB>Ytpk-laEx#%HUQ z4jyM)Av(-pEA}NGD;FE$vc)wUyfWprm#wyeA9$_zvdF#Lpq6alGl}nyIM06cn5^V3 zw`Lh%)YiXVZ1=46zD~?)`7&lN;Of0?5jeA{bRElPJR;WWqTVoKvOIT)h{E18)M0&T zq20>S(|lkBq@NCrEEgW1PSaWbehKcEuHlk_B&#c4QZN;d$5S{TwOdBInEJS^2OQV< zQyJ^$JBD81Nr0SJ1dXoRms()`HiBa0$a|H+*_Z|u zH2y;&Q=&q$L;45yjorZt6U%TTXZ&YijeXehs4iO9DxO4Yuyx}^TJTZL<)ZsZ_wpVD zMYz;;y!|e3wR$9WRFkW{K*kc8e^1-Azyj^fr`slr&eVp4=2aEs+iyPX-IiI$Z z+IM<4x;!#+SSu%grsPcaYJZq9xOW&X-|6oWh z%pXzqItF?EoevuY=u?-l+t|r({;@E}xR>10g%`~!JHJ6(L_}?@G_F9GVIpAb_$Oo` z!8oK9Gz*vTPIEw>rnEkYjglXJz(AwYaZi#t^cjHXzjCEI{dlPfJ!x8?n? z5Cp~n?D2B?JqktKXfZw`MEQV1?@1({W&aUp^OvQ_^Eac*C~<%{=rvO(htP|GCLBsl zRH7^-*1;`%bNUh_VMb|Us5g=U(4?$U4=~uH1f;%ufl9^o{=GzyP7WB2hM*16 zq7D6ox@%DZ;&VpwD0*Svdk{CZGGBP?9HL)b>J*P~BzXwY< zoSD#z_;DptAKeoX57e_)8?kI~I<(=*~YhNUp4iJ(j$ zAt}Fyq;uxu7Di9Mlm3JA11w%6QvF95)j8OozE6aQ=owVNj1eX z1Ik|d1Bp7@If})naOudE3;`y4Hoz70Xu!%#XK`3sPDUxBrpC+RS>nI^TY>O6`bI?E zGCx*@e+`{#-;8cCc%cbG=h8LO5uX*xLWAhgnysRv=>*u&XLd*HqkXzL#17qJAOj4h z%LAyF!vN9s8bbe*nBO;rd~JyU>i$d}Aocrqn-x98k{+5DC35p7@m}Bl3*`OOht1S5 z;xG0e_0bfpU}9j7PssX|6S?`-5@Lw-pjj63Wi)-!M{7BJnT4!>{R2W3y2ZWso zC6(t&?sIb4RG1t#btxoIrXfnE0a>`E4{syI7u_x8LmJ-3LW~bU$d5WP;|N6luQX}e zvivH6lraa;S+!++z~D>t8V`q!=pGo-H@ICQwMF822Q-bIr<<#8x@7C30}8gz%mb@d zBisY3I1W!hG^xR^aKtu7#5TY!E(lS5ozR~_c`>2dkW^i!&?7IwXG-T#i+FyeaULZN zz#zpSiW~ehQz#V&QK;1u2mvH!L_U`Q{;QzMwK(rSzmsS$zjboUGu~GItt39(5*-1? zvl)30Ms0#tPB6&bLYreZOTwC7G*!tizH4>JXN6G@zwtLgkCR7Fk@@frWe=*PCcOxT zEaGfnsHULZyK(%uplauksaY3IKqfLpX4T~R#%v*D4|SagpUTHwqlG5nVtE9Ih>~vK zX8GkX6v!C8w8NMFTDa0UBhLB-Lj}1+&OnRu*HJC~yuOEKxXIfJ7KABf+Y1r#q<0bk z8Jqk#Mx99}7`4#rIkdLlNer|4D)ADK=`p(0yH`IL))Rk0waLL{aa!d28*u=toxX6j zw-wYx*0-Ym66l3x(!-7D^cMKiTIA<)>16L^%8F&Q$h|&Bg{$>WTScm7GIs}J@;#V^ zi-lYQUc!MGSP>e}b+pKTQPt=3?4R#5|2V(-t)F<{+q3=S{0`&0cp!l25`gj^B2(te zCsin3al!J#W^tN9y$COj9#}A=Okkvl|5DroH@c>kPNT@H^~LwZ?4 z9#N`Nc;--=V8kNgw>G;qepxOq4e4amrATnW z?ybuY{B$sn1J1L)lnW+B{Rj8 z&cfQSsGXhH8r)<1$r#P)lMp7tj}7~uFiKj%pFY$y&bhy==2x+p)FOO^^*~%ujP^iS zkb`ziShEYGA^gJ+j#ru-%Tw&ih%vvs<9@o|nt!^#n^?E;(v`fFthmdrG8wvSbn5-| zo9{0ARC(>K@mqzhzKaX(d&8HM!3_6#?`B5u{P>={BG5?^c6Zob=8Zw5rVArJ#(!hJ zM<aDHmu#7y3FhKdY%df@-vUR?a15U)t94 zBPi)@9>d#``*kS|UC%qQ5G9YF*8vz}4D^R>?yR3RM+4hgO zqQ`LoF1Vkgu{_l>YE=8x)7H{Gvpf$!7L8M|$LAglx*A)K4R3iv=BWB3xjTv1V~Zx< zU+;)rC$?`d7*4d;!!hgf8;(AgMPE&FkluCnP%Qcu~b1pRC`Rw?1~$BlQY?h0?s z*%LHQXX_Z6Gwxg|3C_G!kZrw6(-+Iavchd;b-Pb|FJf!8b#@#p68We$GCQia`*qf| zBq-CnGJ_sh+1cF#g2d41$CoBPntkMtDsK7*MTU*jKM+vqD>@vbpVVq5|7#?5CJm|2 z!a2{S&IWQQ-W7ceyD>!1Msf+CYM`3S#auSZ&n|gzE;Yecww_t9T1Feyyu`Ax|$x2 z1YgtV*bpEUjWzA&P3K6F*m=|YXqlVgTe-2&9hP!Y6aS?OZV&G>D(3bl>0i-Nrk*k3 z!mQe>jz0O*Ga6XL@LgHeozlR$U#Bh&+Gc~8w&R6BjlPBxwQdJK9R7W{fM-4oF(Z1H z81?yg&zn$bR{KzCxNWgTAAuVhpZ(Q`hN%+5sWr@OWKSB)eG`j0r-H4)&D{HD-MyCK z;4dCUBdR_Jx+i)v-)DLjhDT;oG0du3P*+uF+w%hnpJR8V6Zj5J)kIqdCM&+s8`Fmo z$3rT(xwWYS~lJhxph(yMfc6JucpTT^GdJ6|;bV%=>FB)PZwYFNeB^%BJ z1a8x?qaj|y%t|i(GQDbvZfWi7sUGbd`=PZ*X3r`R1Ir!eZKfjzJUGd0wDnrO{dXsLrDj@C)l6x8j(aSkUmi!RkVNH*- zMk2E-Biuzlni#vS=qeN^^SQlT&Q~WFqa_{b+FYyDKQA9a$(9HA?-?%`m+6`}a?c|Z zTC1sl1CQaJB@dO9eMqO$EOf5AXNx2zH=FmgXSh)!uIJ!!SKjr{6??Hae(#k2pg}%p zz7A*Xd54n6IQ2p9#xHP~5+B+*)>zir#c{%(LWmE=(%A(1JrO=&QEw4){-(wIAZq00 zLg3Z3zmV7-J9$fZqzJzMkX1C1c-%M`7*noz9-R3^3()gn06FRTGBi2PNHBmLzt>X) z;L9~;dj7Z+%Um`F+){@AX2g~z&V-1(>ErfEN<6;mkfZ$Cu4(^#8JI}XKofeqhBU5p z&4)Nn&+T{P0Glv?Gs+2_zD?R09ois*d&8nKJ(a$I3Jf{p1b6}w(`s>#lHe=(B!HWo z#O7uyhvG{2Ae9^JL#03zd=oA-_w@WJ;5Kj-)>G*n$>+y7|I%8>?kcg`3=;Vr%g0Xf z*T%kMdh2c3*71(bV<3R