Showing preview only (4,255K chars total). Download the full file or copy to clipboard to get everything.
Repository: cornell-zhang/rosetta
Branch: master
Commit: 2feed1ce02d8
Files: 219
Total size: 3.9 MB
Directory structure:
gitextract_lpiadbln/
├── .gitattributes
├── 3d-rendering/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── 3d_rendering_host.cpp
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── input_data.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── rendering.cpp
│ ├── sdsoc/
│ │ ├── rendering.cpp
│ │ └── rendering.h
│ └── sw/
│ ├── rendering_sw.cpp
│ └── rendering_sw.h
├── BNN/
│ ├── LICENSE
│ ├── README.md
│ ├── cpp/
│ │ ├── Makefile
│ │ ├── Makefile.inc
│ │ ├── accel/
│ │ │ ├── Accel.cpp
│ │ │ ├── Accel.h
│ │ │ ├── AccelPrint.cpp
│ │ │ ├── AccelPrint.h
│ │ │ ├── AccelSchedule.cpp
│ │ │ ├── AccelSchedule.h
│ │ │ ├── AccelTest.cpp
│ │ │ ├── AccelTest.h
│ │ │ ├── Dense.cpp
│ │ │ ├── Dense.h
│ │ │ ├── InputConv.cpp
│ │ │ ├── InputConv.h
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── accel_test_bnn.cpp
│ │ │ ├── accel_test_layer.cpp
│ │ │ ├── accel_test_random.cpp
│ │ │ ├── hls.tcl
│ │ │ ├── opt.tcl
│ │ │ ├── parse_vivado.py
│ │ │ └── sdsoc_build/
│ │ │ ├── Makefile
│ │ │ └── sds.tcl
│ │ ├── minizip/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChangeLog
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── Makefile.am
│ │ │ ├── README.md
│ │ │ ├── aes/
│ │ │ │ ├── Makefile
│ │ │ │ ├── aes.h
│ │ │ │ ├── aes_via_ace.h
│ │ │ │ ├── aescrypt.c
│ │ │ │ ├── aeskey.c
│ │ │ │ ├── aesopt.h
│ │ │ │ ├── aestab.c
│ │ │ │ ├── aestab.h
│ │ │ │ ├── brg_endian.h
│ │ │ │ ├── brg_types.h
│ │ │ │ ├── entropy.c
│ │ │ │ ├── entropy.h
│ │ │ │ ├── fileenc.c
│ │ │ │ ├── fileenc.h
│ │ │ │ ├── hmac.c
│ │ │ │ ├── hmac.h
│ │ │ │ ├── prng.c
│ │ │ │ ├── prng.h
│ │ │ │ ├── pwd2key.c
│ │ │ │ ├── pwd2key.h
│ │ │ │ ├── sha1.c
│ │ │ │ └── sha1.h
│ │ │ ├── configure.ac
│ │ │ ├── crypt.h
│ │ │ ├── ioapi.c
│ │ │ ├── ioapi.h
│ │ │ ├── ioapi_buf.c
│ │ │ ├── ioapi_buf.h
│ │ │ ├── ioapi_mem.c
│ │ │ ├── ioapi_mem.h
│ │ │ ├── iowin32.c
│ │ │ ├── iowin32.h
│ │ │ ├── miniunz.c
│ │ │ ├── miniunz.vcproj
│ │ │ ├── minizip.c
│ │ │ ├── minizip.pc.in
│ │ │ ├── minizip.sln
│ │ │ ├── minizip.vcproj
│ │ │ ├── unzip.c
│ │ │ ├── unzip.h
│ │ │ ├── zip.c
│ │ │ └── zip.h
│ │ └── utils/
│ │ ├── Common.cpp
│ │ ├── Common.h
│ │ ├── DataIO.cpp
│ │ ├── DataIO.h
│ │ ├── Debug.h
│ │ ├── Makefile
│ │ ├── ParamIO.cpp
│ │ ├── ParamIO.h
│ │ ├── SArray.h
│ │ ├── Timer.cpp
│ │ ├── Timer.h
│ │ ├── Typedefs.h
│ │ ├── ZipIO.cpp
│ │ ├── ZipIO.h
│ │ └── open_zip.cpp
│ ├── data/
│ │ └── get_data.sh
│ ├── params/
│ │ └── get_params.sh
│ └── setup.sh
├── LICENSE
├── README.md
├── digit-recognition/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── digit_recognition.cpp
│ │ ├── testing_data.h
│ │ ├── training_data.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── digitrec.cl
│ ├── sdsoc/
│ │ ├── digitrec.cpp
│ │ └── digitrec.h
│ └── sw/
│ ├── digitrec_sw.cpp
│ └── digitrec_sw.h
├── face-detection/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── face_detect_host.cpp
│ │ ├── image.cpp
│ │ ├── image.h
│ │ ├── image0_320_240.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ ├── face_detect.cpp
│ │ ├── haar_dataEWC_with_partitioning.h
│ │ ├── haar_dataRcc_with_partitioning.h
│ │ └── haar_mapping.h
│ ├── sdsoc/
│ │ ├── face_detect.cpp
│ │ ├── face_detect.h
│ │ ├── haar_dataEWC_with_partitioning.h
│ │ ├── haar_dataRcc_with_partitioning.h
│ │ └── haar_mapping.h
│ └── sw/
│ ├── face_detect_sw.cpp
│ ├── face_detect_sw.h
│ ├── haar_dataEWC_with_partitioning.h
│ └── haar_dataRcc_with_partitioning.h
├── harness/
│ ├── README.md
│ ├── harness.mk
│ └── ocl_src/
│ ├── CLKernel.cpp
│ ├── CLKernel.h
│ ├── CLMemObj.cpp
│ ├── CLMemObj.h
│ ├── CLWorld.cpp
│ └── CLWorld.h
├── optical-flow/
│ ├── Makefile
│ ├── README.md
│ ├── datasets/
│ │ ├── current/
│ │ │ ├── frame1.ppm
│ │ │ ├── frame2.ppm
│ │ │ ├── frame3.ppm
│ │ │ ├── frame4.ppm
│ │ │ ├── frame5.ppm
│ │ │ └── ref.flo
│ │ └── sintel_alley/
│ │ ├── frame1.ppm
│ │ ├── frame2.ppm
│ │ ├── frame3.ppm
│ │ ├── frame4.ppm
│ │ ├── frame5.ppm
│ │ └── ref.flo
│ ├── imageLib/
│ │ ├── Convert.cpp
│ │ ├── Convert.h
│ │ ├── Convolve.cpp
│ │ ├── Convolve.h
│ │ ├── Copyright.h
│ │ ├── Error.h
│ │ ├── Image.cpp
│ │ ├── Image.h
│ │ ├── ImageIO.cpp
│ │ ├── ImageIO.h
│ │ ├── README.txt
│ │ ├── RefCntMem.cpp
│ │ ├── RefCntMem.h
│ │ ├── flowIO.cpp
│ │ ├── flowIO.h
│ │ └── imageLib.h
│ ├── output_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── optical_flow_host.cpp
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── optical_flow.cpp
│ ├── sdsoc/
│ │ ├── optical_flow.cpp
│ │ └── optical_flow.h
│ └── sw/
│ ├── optical_flow_sw.cpp
│ └── optical_flow_sw.h
└── spam-filter/
├── Makefile
├── README.md
├── data/
│ └── .gitignore
├── output_golden.txt
└── src/
├── host/
│ ├── check_result.cpp
│ ├── check_result.h
│ ├── spam_filter.cpp
│ ├── typedefs.h
│ ├── utils.cpp
│ └── utils.h
├── ocl/
│ ├── lut.h
│ └── sgd.cpp
├── sdsoc/
│ ├── lut.h
│ ├── sgd.cpp
│ └── sgd.h
└── sw/
├── lut.h
├── sgd_sw.cpp
└── sgd_sw.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
**/*.h linguist-language=C++
================================================
FILE: 3d-rendering/Makefile
================================================
# Set kernel name
KERNEL_NAME = rendering
# Set host source and headers
HOST_SRC_CPP = ./src/host/3d_rendering_host.cpp ./src/host/utils.cpp ./src/host/check_result.cpp
HOST_SRC_H = ./src/host/utils.h ./src/host/check_result.h ./src/host/typedefs.h ./src/host/input_data.h
DATA =
# Set host code include paths
HOST_INC = -I$(XILINX_VIVADO)/include
HOST_LIB = -L$(XILINX_VIVADO)/lib
# Set kernel file
OCL_KERNEL_SRC = ./src/ocl/rendering.cpp
OCL_KERNEL_H = ./src/host/typedefs.h
SDSOC_KERNEL_SRC = ./src/sdsoc/rendering.cpp
SDSOC_KERNEL_H = ./src/host/typedefs.h
SW_KERNEL_SRC = ./src/sw/rendering_sw.cpp
SW_KERNEL_H = ./src/host/typedefs.h ./src/sw/rendering_sw.h
# Set opencl kernel arguments
OCL_KERNEL_ARGS = --max_memory_ports all --report_level 2 -I$(shell pwd)/src/
#-------------------------
# Leave the rest to harness
#-------------------------
include ../harness/harness.mk
================================================
FILE: 3d-rendering/README.md
================================================
# 3D Rendering
## Description
This design renders 2D images from 3D models (3D triangle mesh). It is composed of the following stages.
1. Projection: 3D triangle -> 2D triangle
2. Rasterization (1, 2): search pixels in 2D triangle within the bounding box
3. Z-culling: hide or display pixels according to each pixel's "z" value (depth)
4. ColoringFB: coloring framebuffer according to the zbuffer
## Major Optimizations
This application has two major optimizations:
1. Data packing optimization for inputs. Each 3D triangle is packed into a 32-bit integer for faster off-chip data transfer.
2. Coarse-grained pipelining (dataflow). The stages introduced above are arranged in a coarse-grained pipeline so that their execution time can be overlapped.
## Usage
### SDAccel
To execute or simulate the design, do
`./rendering_host.exe -f <path_to_xclbin_file>`
### SDSoC
To run design on the board, do
`./rendering.elf`
### SW
To run software version, do
`./rendering_sw.exe`
================================================
FILE: 3d-rendering/outputs_golden.txt
================================================
Image After Rendering:
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000001111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111100000000000000000000000000000000000000000000011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111100000000000000000000000000000000000000000001111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111100000000000000000000000000000000000000000111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111110000000000000000000000000000000000000011111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111110000000000000000000000000000000000001111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111000000000000000000000000000000000111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111000000000000000000000000000000000111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111000000000000000000000000000000001111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111100000000000000000000000000000001111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111100000000000000000000000000000011111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111100000000000000000000000000000011111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000111111111111111111111111111111111110000000000000000000000000000111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111110000000000000000000000000000111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111110000000000000000000000000000111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111000000000000000000000000001111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111000000000000000000000000001111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111000000000000000000000000001111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111100000011111111111110000011111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000001111100000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000011111111110000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000111111111111110000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0001111111111111111100000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0001111111111111111110000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0011111111111111111111100000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0011111111111111111111100000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111111111111111111000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111111111111111111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111110000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111100000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111110000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111100000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111100000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111111111111111111111111111111111111111110000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111100000000000111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000
0111111111111111111111111111111111111111111111111100000000000000000000111111111111111111111111111111111111111111111111111111111111111111110000000000111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000
0011111111111111111111111111111111111111111111111111111111111100000000001111111111111111111111111111111111111111111111111111111111111111000000000011111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000
0011111111111111111111111111111111111111111111111111111111111111111000011111111111111111111111111111111111111111111111111111111111111100000000001111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000
0011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000001111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000
0001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000
0001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000
0000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000
0000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000
0000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000
0000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000
0000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000
0000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000
0000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000
0000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000
0000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000
0000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000
0000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000
0000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000
0000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000
0000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000
0000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000
0000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000
0000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000
0000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000
0000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000
0000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000
0000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000
0000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000
0000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000
0000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000
0000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000
0000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000
0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000
0000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000
0000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000
0000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000
0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000
0000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000001111111111111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000011111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000111111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000011111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000111111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000011111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000001111111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000011111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000001111111111111111111111000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000111111111111111111110000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000001111111111111111100000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000011111111111111000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000001111111111110000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000001111110000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111000000001111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000011111111111111111111111111000000000111110000000000000000000001111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000001111111111111111111111110000000000000000000000000000000000000111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111000000000000000000000000000000000000000111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011111111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000111111111111111110000000000000000000000000000000000000000001111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000001111111111111100000000000000000000000000000000000000000000111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000011111111111000000000000000000000000000000000000000000000011111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000001111110000000000000000000000000000000000000000000000000111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
================================================
FILE: 3d-rendering/src/host/3d_rendering_host.cpp
================================================
/*===============================================================*/
/* */
/* 3d_rendering.cpp */
/* */
/* Main host function for the 3D Rendering application. */
/* */
/*===============================================================*/
// standard C/C++ headers
#include <cstdio>
#include <cstdlib>
#include <getopt.h>
#include <string>
#include <time.h>
#include <sys/time.h>
#ifdef OCL
// harness headers
#include "CLWorld.h"
#include "CLKernel.h"
#include "CLMemObj.h"
// harness namespace
using namespace rosetta;
#endif
#ifdef SDSOC
// sdsoc headers
#include "sds_lib.h"
// hardware function declaration
#include "../sdsoc/rendering.h"
#endif
#ifdef SW
# include "../sw/rendering_sw.h"
#endif
// other headers
#include "utils.h"
#include "typedefs.h"
#include "check_result.h"
// data
#include "input_data.h"
int main(int argc, char ** argv)
{
printf("3D Rendering Application\n");
#ifdef OCL
// parse command line arguments for opencl version
std::string kernelFile("");
parse_sdaccel_command_line_args(argc, argv, kernelFile);
#endif
// sdsoc and sw versions have no additional command line arguments
// for this benchmark, data is included in array triangle_3ds
// timers
struct timeval start, end;
// opencl version host code
#ifdef OCL
// create space for input and output
bit32* input = new bit32[3 * NUM_3D_TRI];
bit32* output = new bit32[NUM_FB];
// pack input data for better performance
for ( int i = 0; i < NUM_3D_TRI; i ++)
{
input[3*i](7,0) = triangle_3ds[i].x0;
input[3*i](15,8) = triangle_3ds[i].y0;
input[3*i](23,16) = triangle_3ds[i].z0;
input[3*i](31,24) = triangle_3ds[i].x1;
input[3*i+1](7,0) = triangle_3ds[i].y1;
input[3*i+1](15,8) = triangle_3ds[i].z1;
input[3*i+1](23,16) = triangle_3ds[i].x2;
input[3*i+1](31,24) = triangle_3ds[i].y2;
input[3*i+2](7,0) = triangle_3ds[i].z2;
input[3*i+2](31,8) = 0;
}
// create OpenCL world
CLWorld rendering_world = CLWorld(TARGET_DEVICE, CL_DEVICE_TYPE_ACCELERATOR);
// add the bitstream file
rendering_world.addProgram(kernelFile);
// create kernels
// this kernel is written in C++
CLKernel Rendering(rendering_world.getContext(), rendering_world.getProgram(), "rendering", rendering_world.getDevice());
// create mem objects
CLMemObj input_mem ( (void*)input, sizeof(bit32), 3 * NUM_3D_TRI, CL_MEM_READ_ONLY);
CLMemObj output_mem( (void*)output, sizeof(bit32), NUM_FB, CL_MEM_WRITE_ONLY);
// start timer
gettimeofday(&start, 0);
// add them to the world
// added in sequence, each of them can be referenced by an index
rendering_world.addMemObj(input_mem);
rendering_world.addMemObj(output_mem);
// set work size
int global_size[3] = {1, 1, 1};
int local_size[3] = {1, 1, 1};
Rendering.set_global(global_size);
Rendering.set_local(local_size);
// add them to the world
rendering_world.addKernel(Rendering);
// set kernel arguments
rendering_world.setMemKernelArg(0, 0, 0);
rendering_world.setMemKernelArg(0, 1, 1);
// run!
rendering_world.runKernels();
// read the data back
rendering_world.readMemObj(1);
// end timer
gettimeofday(&end, 0);
#endif
#ifdef SDSOC
// create space for input and output
bit32 *input = (bit32*)sds_alloc(3 * NUM_3D_TRI * sizeof(bit32));
bit32* output = (bit32*)sds_alloc(NUM_FB * sizeof(bit32));
// pack input data for better performance
for ( int i = 0; i < NUM_3D_TRI; i++)
{
input[3*i](7,0) = triangle_3ds[i].x0;
input[3*i](15,8) = triangle_3ds[i].y0;
input[3*i](23,16) = triangle_3ds[i].z0;
input[3*i](31,24) = triangle_3ds[i].x1;
input[3*i+1](7,0) = triangle_3ds[i].y1;
input[3*i+1](15,8) = triangle_3ds[i].z1;
input[3*i+1](23,16) = triangle_3ds[i].x2;
input[3*i+1](31,24) = triangle_3ds[i].y2;
input[3*i+2](7,0) = triangle_3ds[i].z2;
input[3*i+2](31,8) = 0;
}
// run hardware function and time it
gettimeofday(&start, 0);
rendering(input, output);
gettimeofday(&end, 0);
#endif
#ifdef SW
// output
bit8 output[MAX_X][MAX_Y];
// run and time sw function
gettimeofday(&start, 0);
rendering_sw(triangle_3ds, output);
gettimeofday(&end, 0);
#endif
// check results
printf("Checking results:\n");
check_results(output);
// print time
long long elapsed = (end.tv_sec - start.tv_sec) * 1000000LL + end.tv_usec - start.tv_usec;
printf("elapsed time: %lld us\n", elapsed);
// cleanup
#ifdef OCL
rendering_world.releaseWorld();
delete []input;
delete []output;
#endif
#ifdef SDSOC
sds_free(input);
sds_free(output);
#endif
return EXIT_SUCCESS;
}
================================================
FILE: 3d-rendering/src/host/check_result.cpp
================================================
/*===============================================================*/
/* */
/* check_result.cpp */
/* */
/* Software evaluation of training and test error rate */
/* */
/*===============================================================*/
#include <cstdio>
#include "typedefs.h"
#include <fstream>
#include <iostream>
#ifndef SW
void check_results(bit32* output)
#else
void check_results(bit8 output[MAX_X][MAX_Y])
#endif
{
#ifndef SW
bit8 frame_buffer_print[MAX_X][MAX_Y];
// read result from the 32-bit output buffer
for (int i = 0, j = 0, n = 0; n < NUM_FB; n ++ )
{
bit32 temp = output[n];
frame_buffer_print[i][j++] = temp(7,0);
frame_buffer_print[i][j++] = temp(15,8);
frame_buffer_print[i][j++] = temp(23,16);
frame_buffer_print[i][j++] = temp(31,24);
if(j == MAX_Y)
{
i++;
j = 0;
}
}
#endif
// print result
std::ofstream ofile;
ofile.open("outputs.txt");
if (ofile.is_open())
{
ofile << "Image After Rendering: \n";
for (int j = MAX_X - 1; j >= 0; j -- )
{
for (int i = 0; i < MAX_Y; i ++ )
{
int pix;
#ifndef SW
pix = frame_buffer_print[i][j].to_int();
#else
pix = output[i][j];
#endif
if (pix)
ofile << "1";
else
ofile << "0";
}
ofile << std::endl;
}
}
else
{
std::cout << "Failed to create output file!" << std::endl;
}
}
================================================
FILE: 3d-rendering/src/host/check_result.h
================================================
/*===============================================================*/
/* */
/* check_result.h */
/* */
/* Compare result and expected label to get error rate */
/* */
/*===============================================================*/
#ifndef SW
void check_results(bit32* output);
#else
void check_results(bit8 output[MAX_X][MAX_Y]);
#endif
================================================
FILE: 3d-rendering/src/host/input_data.h
================================================
/*===============================================================*/
/* */
/* input_data.h */
/* */
/* Stores the test input dataset. 3D model - bear */
/* */
/*===============================================================*/
const int num_3d_triangles = 3192;
Triangle_3D triangle_3ds[3192] = {
{77, 212, 124, 69, 210, 123, 76, 197, 133},
{78, 212, 66, 70, 210, 66, 68, 220, 79},
{78, 212, 66, 68, 220, 79, 78, 222, 79},
{77, 196, 58, 70, 210, 66, 78, 212, 66},
{51, 205, 110, 57, 199, 123, 69, 210, 123},
{68, 220, 79, 52, 204, 79, 50, 206, 95},
{70, 210, 66, 58, 198, 66, 52, 204, 79},
{70, 210, 66, 52, 204, 79, 68, 220, 79},
{41, 162, 110, 43, 151, 111, 50, 158, 124},
{41, 162, 110, 50, 158, 124, 49, 166, 124},
{39, 161, 95, 40, 149, 95, 43, 151, 111},
{39, 161, 95, 43, 151, 111, 41, 162, 110},
{42, 162, 79, 43, 151, 80, 39, 161, 95},
{43, 151, 80, 40, 149, 95, 39, 161, 95},
{50, 166, 66, 51, 157, 66, 42, 162, 79},
{51, 157, 66, 43, 151, 80, 42, 162, 79},
{50, 158, 124, 56, 151, 124, 65, 164, 133},
{43, 151, 111, 51, 143, 111, 56, 151, 124},
{43, 151, 111, 56, 151, 124, 50, 158, 124},
{40, 149, 95, 49, 140, 95, 51, 143, 111},
{40, 149, 95, 51, 143, 111, 43, 151, 111},
{43, 151, 80, 52, 142, 80, 40, 149, 95},
{52, 142, 80, 49, 140, 95, 40, 149, 95},
{51, 157, 66, 57, 151, 67, 43, 151, 80},
{57, 151, 67, 52, 142, 80, 43, 151, 80},
{66, 163, 58, 57, 151, 67, 51, 157, 66},
{75, 179, 136, 65, 164, 133, 74, 161, 133},
{56, 151, 124, 73, 145, 124, 74, 161, 133},
{56, 151, 124, 74, 161, 133, 65, 164, 133},
{51, 143, 111, 72, 135, 111, 73, 145, 124},
{51, 143, 111, 73, 145, 124, 56, 151, 124},
{49, 140, 95, 72, 131, 96, 72, 135, 111},
{49, 140, 95, 72, 135, 111, 51, 143, 111},
{52, 142, 80, 73, 134, 80, 49, 140, 95},
{73, 134, 80, 72, 131, 96, 49, 140, 95},
{57, 151, 67, 74, 144, 67, 52, 142, 80},
{74, 144, 67, 73, 134, 80, 52, 142, 80},
{66, 163, 58, 75, 160, 58, 57, 151, 67},
{75, 160, 58, 74, 144, 67, 57, 151, 67},
{75, 160, 58, 66, 163, 58, 76, 178, 55},
{41, 185, 110, 41, 162, 110, 49, 166, 124},
{41, 185, 110, 49, 166, 124, 49, 184, 123},
{38, 185, 95, 39, 161, 95, 41, 162, 110},
{38, 185, 95, 41, 162, 110, 41, 185, 110},
{41, 185, 79, 42, 162, 79, 38, 185, 95},
{42, 162, 79, 39, 161, 95, 38, 185, 95},
{50, 183, 66, 50, 166, 66, 41, 185, 79},
{50, 166, 66, 42, 162, 79, 41, 185, 79},
{75, 179, 136, 65, 190, 132, 61, 181, 132},
{57, 199, 123, 49, 184, 123, 65, 190, 132},
{49, 184, 123, 61, 181, 132, 65, 190, 132},
{51, 205, 110, 41, 185, 110, 57, 199, 123},
{41, 185, 110, 49, 184, 123, 57, 199, 123},
{50, 206, 95, 38, 185, 95, 51, 205, 110},
{38, 185, 95, 41, 185, 110, 51, 205, 110},
{52, 204, 79, 41, 185, 79, 38, 185, 95},
{52, 204, 79, 38, 185, 95, 50, 206, 95},
{58, 198, 66, 50, 183, 66, 41, 185, 79},
{58, 198, 66, 41, 185, 79, 52, 204, 79},
{66, 189, 58, 62, 181, 58, 50, 183, 66},
{66, 189, 58, 50, 183, 66, 58, 198, 66},
{62, 181, 58, 66, 189, 58, 76, 178, 55},
{122, 172, 135, 131, 158, 132, 137, 164, 133},
{138, 146, 124, 150, 157, 124, 137, 164, 133},
{138, 146, 124, 137, 164, 133, 131, 158, 132},
{143, 138, 112, 159, 152, 112, 150, 157, 124},
{143, 138, 112, 150, 157, 124, 138, 146, 124},
{144, 135, 97, 162, 150, 97, 159, 152, 112},
{144, 135, 97, 159, 152, 112, 143, 138, 112},
{143, 138, 82, 159, 152, 82, 144, 135, 97},
{159, 152, 82, 162, 150, 97, 144, 135, 97},
{139, 146, 69, 151, 156, 69, 143, 138, 82},
{151, 156, 69, 159, 152, 82, 143, 138, 82},
{132, 158, 60, 139, 163, 60, 139, 146, 69},
{139, 163, 60, 151, 156, 69, 139, 146, 69},
{139, 163, 60, 132, 158, 60, 124, 172, 57},
{122, 172, 135, 137, 164, 133, 137, 173, 132},
{150, 157, 124, 150, 174, 124, 137, 164, 133},
{150, 174, 124, 137, 173, 132, 137, 164, 133},
{159, 152, 112, 159, 175, 112, 150, 157, 124},
{159, 175, 112, 150, 174, 124, 150, 157, 124},
{162, 150, 97, 162, 175, 97, 159, 152, 112},
{162, 175, 97, 159, 175, 112, 159, 152, 112},
{159, 152, 82, 159, 174, 82, 162, 175, 97},
{159, 152, 82, 162, 175, 97, 162, 150, 97},
{151, 156, 69, 151, 174, 69, 159, 174, 82},
{151, 156, 69, 159, 174, 82, 159, 152, 82},
{139, 163, 60, 138, 173, 60, 151, 174, 69},
{139, 163, 60, 151, 174, 69, 151, 156, 69},
{138, 173, 60, 139, 163, 60, 124, 172, 57},
{132, 133, 112, 143, 138, 112, 130, 143, 124},
{143, 138, 112, 138, 146, 124, 130, 143, 124},
{133, 130, 97, 144, 135, 97, 132, 133, 112},
{144, 135, 97, 143, 138, 112, 132, 133, 112},
{132, 133, 82, 143, 138, 82, 144, 135, 97},
{132, 133, 82, 144, 135, 97, 133, 130, 97},
{130, 142, 69, 139, 146, 69, 143, 138, 82},
{130, 142, 69, 143, 138, 82, 132, 133, 82},
{113, 141, 69, 130, 142, 69, 132, 133, 82},
{118, 155, 60, 130, 142, 69, 113, 141, 69},
{122, 172, 135, 137, 173, 132, 136, 178, 132},
{150, 174, 124, 148, 183, 124, 136, 178, 132},
{150, 174, 124, 136, 178, 132, 137, 173, 132},
{159, 175, 112, 157, 186, 111, 148, 183, 124},
{159, 175, 112, 148, 183, 124, 150, 174, 124},
{162, 175, 97, 160, 187, 97, 157, 186, 111},
{162, 175, 97, 157, 186, 111, 159, 175, 112},
{159, 174, 82, 157, 186, 82, 162, 175, 97},
{157, 186, 82, 160, 187, 97, 162, 175, 97},
{151, 174, 69, 149, 182, 69, 159, 174, 82},
{149, 182, 69, 157, 186, 82, 159, 174, 82},
{138, 173, 60, 138, 177, 60, 151, 174, 69},
{138, 177, 60, 149, 182, 69, 151, 174, 69},
{138, 177, 60, 138, 173, 60, 124, 172, 57},
{122, 172, 135, 136, 178, 132, 134, 182, 132},
{148, 183, 124, 145, 191, 124, 134, 182, 132},
{148, 183, 124, 134, 182, 132, 136, 178, 132},
{157, 186, 111, 152, 197, 111, 145, 191, 124},
{157, 186, 111, 145, 191, 124, 148, 183, 124},
{160, 187, 97, 154, 198, 96, 152, 197, 111},
{160, 187, 97, 152, 197, 111, 157, 186, 111},
{157, 186, 82, 152, 196, 81, 160, 187, 97},
{152, 196, 81, 154, 198, 96, 160, 187, 97},
{149, 182, 69, 146, 190, 69, 157, 186, 82},
{146, 190, 69, 152, 196, 81, 157, 186, 82},
{138, 177, 60, 136, 182, 60, 149, 182, 69},
{136, 182, 60, 146, 190, 69, 149, 182, 69},
{136, 182, 60, 138, 177, 60, 124, 172, 57},
{122, 172, 135, 134, 182, 132, 128, 189, 132},
{145, 191, 124, 133, 203, 124, 128, 189, 132},
{145, 191, 124, 128, 189, 132, 134, 182, 132},
{152, 197, 111, 136, 213, 111, 133, 203, 124},
{152, 197, 111, 133, 203, 124, 145, 191, 124},
{154, 198, 96, 136, 213, 111, 152, 197, 111},
{152, 196, 81, 137, 213, 81, 154, 198, 96},
{146, 190, 69, 134, 203, 68, 152, 196, 81},
{134, 203, 68, 137, 213, 81, 152, 196, 81},
{136, 182, 60, 129, 188, 60, 146, 190, 69},
{129, 188, 60, 134, 203, 68, 146, 190, 69},
{129, 188, 60, 136, 182, 60, 124, 172, 57},
{128, 189, 132, 112, 196, 134, 111, 177, 137},
{128, 189, 132, 111, 177, 137, 122, 172, 135},
{133, 203, 124, 114, 212, 125, 112, 196, 134},
{133, 203, 124, 112, 196, 134, 128, 189, 132},
{136, 213, 111, 115, 222, 111, 114, 212, 125},
{136, 213, 111, 114, 212, 125, 133, 203, 124},
{134, 203, 68, 115, 211, 66, 137, 213, 81},
{115, 211, 66, 115, 222, 80, 137, 213, 81},
{129, 188, 60, 114, 195, 57, 134, 203, 68},
{114, 195, 57, 115, 211, 66, 134, 203, 68},
{124, 172, 57, 113, 176, 54, 129, 188, 60},
{113, 176, 54, 114, 195, 57, 129, 188, 60},
{113, 176, 54, 124, 172, 57, 111, 158, 58},
{124, 172, 57, 118, 155, 60, 111, 158, 58},
{112, 196, 134, 104, 197, 135, 105, 178, 138},
{112, 196, 134, 105, 178, 138, 111, 177, 137},
{114, 212, 125, 104, 197, 135, 112, 196, 134},
{114, 195, 57, 106, 196, 56, 115, 211, 66},
{113, 176, 54, 107, 177, 54, 114, 195, 57},
{107, 177, 54, 106, 196, 56, 114, 195, 57},
{83, 158, 57, 91, 158, 56, 87, 142, 66},
{82, 176, 54, 94, 177, 53, 91, 158, 56},
{82, 176, 54, 91, 158, 56, 83, 158, 57},
{74, 161, 133, 81, 177, 137, 75, 179, 136},
{75, 160, 58, 83, 158, 57, 74, 144, 67},
{76, 178, 55, 82, 176, 54, 75, 160, 58},
{82, 176, 54, 83, 158, 57, 75, 160, 58},
{91, 158, 56, 108, 142, 66, 87, 142, 66},
{104, 197, 135, 97, 197, 135, 105, 178, 138},
{97, 197, 135, 93, 178, 138, 105, 178, 138},
{100, 213, 125, 97, 197, 135, 104, 197, 135},
{106, 196, 56, 98, 196, 56, 101, 213, 65},
{107, 177, 54, 94, 177, 53, 98, 196, 56},
{107, 177, 54, 98, 196, 56, 106, 196, 56},
{75, 179, 136, 76, 197, 133, 65, 190, 132},
{69, 210, 123, 57, 199, 123, 76, 197, 133},
{57, 199, 123, 65, 190, 132, 76, 197, 133},
{77, 196, 58, 58, 198, 66, 70, 210, 66},
{66, 189, 58, 77, 196, 58, 76, 178, 55},
{77, 196, 58, 66, 189, 58, 58, 198, 66},
{75, 179, 136, 61, 181, 132, 65, 164, 133},
{49, 166, 124, 50, 158, 124, 65, 164, 133},
{49, 184, 123, 49, 166, 124, 65, 164, 133},
{49, 184, 123, 65, 164, 133, 61, 181, 132},
{66, 163, 58, 50, 166, 66, 50, 183, 66},
{66, 163, 58, 51, 157, 66, 50, 166, 66},
{66, 163, 58, 62, 181, 58, 76, 178, 55},
{62, 181, 58, 66, 163, 58, 50, 183, 66},
{130, 143, 124, 138, 146, 124, 131, 158, 132},
{132, 158, 60, 139, 146, 69, 130, 142, 69},
{118, 155, 60, 132, 158, 60, 130, 142, 69},
{132, 158, 60, 118, 155, 60, 124, 172, 57},
{111, 158, 58, 118, 155, 60, 113, 141, 69},
{111, 158, 58, 113, 141, 69, 108, 142, 66},
{91, 158, 56, 111, 158, 58, 108, 142, 66},
{107, 177, 54, 113, 176, 54, 111, 158, 58},
{94, 177, 53, 107, 177, 54, 111, 158, 58},
{94, 177, 53, 111, 158, 58, 91, 158, 56},
{72, 131, 96, 85, 132, 112, 72, 135, 111},
{83, 158, 57, 87, 142, 66, 74, 144, 67},
{74, 144, 67, 87, 142, 66, 73, 134, 80},
{97, 197, 135, 76, 197, 133, 93, 178, 138},
{76, 197, 133, 81, 177, 137, 93, 178, 138},
{76, 197, 133, 75, 179, 136, 81, 177, 137},
{100, 213, 125, 77, 212, 124, 97, 197, 135},
{77, 212, 124, 76, 197, 133, 97, 197, 135},
{102, 224, 112, 78, 223, 110, 100, 213, 125},
{78, 223, 110, 77, 212, 124, 100, 213, 125},
{101, 213, 65, 78, 222, 79, 103, 224, 79},
{101, 213, 65, 78, 212, 66, 78, 222, 79},
{98, 196, 56, 78, 212, 66, 101, 213, 65},
{98, 196, 56, 77, 196, 58, 78, 212, 66},
{94, 177, 53, 77, 196, 58, 98, 196, 56},
{94, 177, 53, 82, 176, 54, 77, 196, 58},
{82, 176, 54, 76, 178, 55, 77, 196, 58},
{114, 212, 125, 100, 213, 125, 104, 197, 135},
{115, 222, 111, 100, 213, 125, 114, 212, 125},
{115, 222, 111, 102, 224, 112, 100, 213, 125},
{115, 211, 66, 101, 213, 65, 115, 222, 80},
{106, 196, 56, 101, 213, 65, 115, 211, 66},
{101, 213, 65, 103, 224, 79, 115, 222, 80},
{133, 130, 97, 132, 133, 112, 108, 132, 113},
{89, 131, 110, 85, 132, 112, 84, 130, 108},
{74, 130, 96, 72, 131, 96, 74, 131, 94},
{87, 139, 69, 87, 142, 66, 91, 140, 68},
{123, 129, 97, 116, 131, 106, 127, 122, 113},
{116, 122, 119, 127, 122, 113, 116, 131, 106},
{116, 131, 106, 108, 131, 110, 116, 122, 119},
{98, 121, 119, 116, 122, 119, 108, 131, 110},
{108, 131, 110, 96, 131, 111, 98, 121, 119},
{96, 131, 111, 89, 131, 110, 98, 121, 119},
{82, 119, 115, 98, 121, 119, 89, 131, 110},
{89, 131, 110, 84, 130, 108, 82, 119, 115},
{71, 119, 105, 82, 119, 115, 84, 130, 108},
{84, 130, 108, 76, 131, 101, 71, 119, 105},
{76, 131, 101, 74, 130, 96, 71, 119, 105},
{87, 139, 69, 91, 140, 68, 92, 133, 59},
{91, 140, 68, 102, 140, 69, 92, 133, 59},
{116, 134, 60, 92, 133, 59, 102, 140, 69},
{102, 140, 69, 108, 140, 69, 116, 134, 60},
{108, 140, 69, 112, 139, 71, 116, 134, 60},
{122, 133, 63, 116, 134, 60, 112, 139, 71},
{112, 139, 71, 119, 135, 78, 122, 133, 63},
{127, 122, 113, 116, 122, 119, 133, 90, 134},
{133, 90, 134, 150, 85, 125, 127, 122, 113},
{116, 122, 119, 98, 121, 119, 106, 96, 137},
{106, 96, 137, 133, 90, 134, 116, 122, 119},
{98, 121, 119, 82, 119, 115, 79, 101, 130},
{79, 101, 130, 106, 96, 137, 98, 121, 119},
{82, 119, 115, 71, 119, 105, 62, 106, 114},
{62, 106, 114, 79, 101, 130, 82, 119, 115},
{165, 79, 94, 164, 77, 102, 167, 66, 94},
{166, 64, 102, 167, 66, 94, 164, 77, 102},
{164, 77, 102, 150, 85, 125, 150, 71, 127},
{150, 71, 127, 166, 64, 102, 164, 77, 102},
{150, 85, 125, 133, 90, 134, 131, 74, 137},
{131, 74, 137, 150, 71, 127, 150, 85, 125},
{133, 90, 134, 106, 96, 137, 131, 74, 137},
{100, 79, 140, 131, 74, 137, 106, 96, 137},
{106, 96, 137, 79, 101, 130, 100, 79, 140},
{70, 81, 133, 100, 79, 140, 79, 101, 130},
{79, 101, 130, 62, 106, 114, 70, 81, 133},
{50, 84, 114, 70, 81, 133, 62, 106, 114},
{167, 66, 94, 166, 64, 102, 167, 53, 93},
{166, 51, 101, 167, 53, 93, 166, 64, 102},
{166, 64, 102, 150, 71, 127, 149, 57, 126},
{149, 57, 126, 166, 51, 101, 166, 64, 102},
{100, 79, 140, 70, 81, 133, 97, 59, 138},
{67, 58, 131, 97, 59, 138, 70, 81, 133},
{70, 81, 133, 50, 84, 114, 67, 58, 131},
{50, 84, 114, 44, 84, 102, 47, 60, 112},
{40, 59, 100, 47, 60, 112, 44, 84, 102},
{39, 61, 95, 40, 59, 100, 44, 84, 102},
{78, 102, 35, 90, 102, 32, 86, 82, 29},
{86, 82, 29, 74, 80, 31, 78, 102, 35},
{130, 81, 30, 86, 82, 29, 90, 102, 32},
{140, 76, 36, 130, 81, 30, 142, 91, 38},
{167, 53, 93, 163, 59, 61, 167, 66, 94},
{167, 53, 93, 166, 51, 101, 167, 41, 91},
{165, 39, 99, 167, 41, 91, 166, 51, 101},
{47, 60, 112, 40, 59, 100, 47, 48, 110},
{40, 47, 98, 47, 48, 110, 40, 59, 100},
{40, 59, 100, 39, 61, 95, 39, 48, 94},
{39, 48, 94, 40, 47, 98, 40, 59, 100},
{39, 61, 95, 38, 67, 68, 38, 55, 67},
{38, 55, 67, 39, 48, 94, 39, 61, 95},
{38, 67, 68, 43, 68, 59, 38, 55, 67},
{43, 55, 58, 38, 55, 67, 43, 68, 59},
{43, 68, 59, 60, 79, 39, 60, 67, 37},
{60, 67, 37, 43, 55, 58, 43, 68, 59},
{60, 79, 39, 74, 80, 31, 74, 68, 30},
{74, 68, 30, 60, 67, 37, 60, 79, 39},
{74, 80, 31, 86, 82, 29, 86, 70, 27},
{86, 70, 27, 74, 68, 30, 74, 80, 31},
{130, 81, 30, 140, 76, 36, 129, 68, 29},
{167, 41, 91, 165, 39, 99, 164, 35, 90},
{39, 48, 94, 38, 55, 67, 39, 42, 66},
{38, 55, 67, 43, 55, 58, 43, 43, 57},
{43, 43, 57, 39, 42, 66, 38, 55, 67},
{43, 55, 58, 60, 67, 37, 59, 55, 37},
{59, 55, 37, 43, 43, 57, 43, 55, 58},
{60, 67, 37, 74, 68, 30, 73, 57, 30},
{73, 57, 30, 59, 55, 37, 60, 67, 37},
{74, 68, 30, 86, 70, 27, 84, 59, 28},
{84, 59, 28, 73, 57, 30, 74, 68, 30},
{39, 42, 66, 43, 43, 57, 42, 37, 66},
{46, 38, 57, 42, 37, 66, 43, 43, 57},
{43, 43, 57, 59, 55, 37, 61, 49, 38},
{61, 49, 38, 46, 38, 57, 43, 43, 57},
{59, 55, 37, 73, 57, 30, 61, 49, 38},
{74, 51, 31, 61, 49, 38, 73, 57, 30},
{73, 57, 30, 84, 59, 28, 85, 53, 29},
{85, 53, 29, 74, 51, 31, 73, 57, 30},
{42, 37, 66, 46, 38, 57, 45, 32, 66},
{49, 33, 58, 45, 32, 66, 46, 38, 57},
{46, 38, 57, 61, 49, 38, 63, 43, 40},
{63, 43, 40, 49, 33, 58, 46, 38, 57},
{61, 49, 38, 74, 51, 31, 75, 45, 34},
{75, 45, 34, 63, 43, 40, 61, 49, 38},
{74, 51, 31, 85, 53, 29, 86, 47, 32},
{86, 47, 32, 75, 45, 34, 74, 51, 31},
{45, 32, 66, 49, 33, 58, 54, 23, 66},
{58, 24, 59, 54, 23, 66, 49, 33, 58},
{49, 33, 58, 63, 43, 40, 70, 35, 43},
{70, 35, 43, 58, 24, 59, 49, 33, 58},
{63, 43, 40, 75, 45, 34, 70, 35, 43},
{81, 37, 37, 70, 35, 43, 75, 45, 34},
{75, 45, 34, 86, 47, 32, 81, 37, 37},
{90, 39, 35, 81, 37, 37, 86, 47, 32},
{70, 35, 43, 81, 37, 37, 74, 31, 45},
{84, 34, 40, 74, 31, 45, 81, 37, 37},
{81, 37, 37, 90, 39, 35, 84, 34, 40},
{93, 36, 38, 84, 34, 40, 90, 39, 35},
{74, 31, 45, 84, 34, 40, 83, 30, 45},
{84, 34, 40, 93, 36, 38, 91, 32, 44},
{91, 32, 44, 83, 30, 45, 84, 34, 40},
{123, 129, 97, 133, 130, 97, 116, 131, 106},
{108, 132, 113, 108, 131, 110, 116, 131, 106},
{133, 130, 97, 108, 132, 113, 116, 131, 106},
{108, 131, 110, 108, 132, 113, 96, 131, 111},
{85, 132, 112, 89, 131, 110, 96, 131, 111},
{108, 132, 113, 85, 132, 112, 96, 131, 111},
{84, 130, 108, 85, 132, 112, 76, 131, 101},
{72, 131, 96, 74, 130, 96, 76, 131, 101},
{85, 132, 112, 72, 131, 96, 76, 131, 101},
{74, 131, 94, 72, 131, 96, 73, 133, 84},
{73, 134, 80, 75, 134, 80, 73, 133, 84},
{72, 131, 96, 73, 134, 80, 73, 133, 84},
{75, 134, 80, 73, 134, 80, 81, 138, 72},
{87, 142, 66, 87, 139, 69, 81, 138, 72},
{73, 134, 80, 87, 142, 66, 81, 138, 72},
{91, 140, 68, 87, 142, 66, 102, 140, 69},
{108, 142, 66, 108, 140, 69, 102, 140, 69},
{87, 142, 66, 108, 142, 66, 102, 140, 69},
{113, 141, 69, 112, 139, 71, 108, 140, 69},
{108, 140, 69, 108, 142, 66, 113, 141, 69},
{112, 139, 71, 113, 141, 69, 119, 135, 78},
{132, 133, 82, 121, 132, 81, 119, 135, 78},
{113, 141, 69, 132, 133, 82, 119, 135, 78},
{133, 130, 97, 123, 129, 97, 123, 130, 93},
{121, 132, 81, 132, 133, 82, 123, 130, 93},
{132, 133, 82, 133, 130, 97, 123, 130, 93},
{38, 67, 68, 39, 61, 95, 44, 84, 102},
{68, 25, 54, 74, 31, 45, 75, 28, 49},
{80, 28, 48, 83, 30, 45, 83, 30, 46},
{83, 30, 46, 83, 30, 45, 85, 30, 46},
{91, 31, 45, 91, 32, 44, 94, 30, 45},
{94, 30, 45, 91, 32, 44, 103, 30, 46},
{54, 23, 67, 54, 23, 66, 55, 23, 66},
{55, 23, 66, 54, 23, 66, 55, 23, 66},
{59, 23, 61, 61, 22, 62, 55, 23, 66},
{55, 23, 66, 61, 22, 62, 55, 23, 66},
{55, 23, 66, 61, 22, 62, 54, 23, 67},
{80, 28, 48, 75, 22, 56, 75, 28, 49},
{61, 22, 62, 68, 25, 54, 75, 22, 56},
{75, 28, 49, 75, 22, 56, 68, 25, 54},
{91, 31, 45, 85, 25, 51, 85, 30, 46},
{85, 30, 46, 85, 25, 51, 83, 30, 46},
{83, 30, 46, 85, 25, 51, 80, 28, 48},
{75, 22, 56, 80, 28, 48, 85, 25, 51},
{116, 17, 65, 118, 14, 76, 105, 14, 73},
{101, 27, 48, 94, 30, 45, 103, 30, 46},
{105, 14, 73, 105, 18, 61, 116, 17, 65},
{85, 25, 51, 85, 17, 61, 75, 22, 56},
{94, 13, 74, 105, 14, 73, 97, 12, 85},
{97, 12, 85, 89, 12, 79, 94, 13, 74},
{89, 12, 79, 87, 13, 71, 94, 13, 74},
{97, 12, 85, 87, 11, 85, 89, 12, 79},
{95, 22, 54, 85, 17, 61, 85, 25, 51},
{101, 27, 48, 95, 22, 54, 94, 30, 45},
{94, 30, 45, 95, 22, 54, 91, 31, 45},
{85, 25, 51, 91, 31, 45, 95, 22, 54},
{95, 22, 54, 95, 15, 66, 85, 17, 61},
{94, 13, 74, 87, 13, 71, 95, 15, 66},
{85, 17, 61, 95, 15, 66, 87, 13, 71},
{95, 15, 66, 95, 22, 54, 105, 18, 61},
{94, 13, 74, 95, 15, 66, 105, 14, 73},
{105, 18, 61, 105, 14, 73, 95, 15, 66},
{70, 35, 43, 74, 31, 45, 68, 25, 54},
{74, 31, 45, 83, 30, 45, 80, 28, 48},
{75, 28, 49, 74, 31, 45, 80, 28, 48},
{91, 32, 44, 91, 31, 45, 85, 30, 46},
{85, 30, 46, 83, 30, 45, 91, 32, 44},
{103, 30, 46, 91, 32, 44, 93, 36, 38},
{54, 23, 66, 54, 23, 67, 53, 24, 69},
{45, 32, 66, 54, 23, 66, 53, 24, 69},
{58, 24, 59, 59, 23, 61, 55, 23, 66},
{55, 23, 66, 54, 23, 66, 58, 24, 59},
{59, 23, 61, 58, 24, 59, 61, 23, 59},
{68, 25, 54, 61, 22, 62, 61, 23, 59},
{61, 23, 59, 58, 24, 59, 68, 25, 54},
{58, 24, 59, 70, 35, 43, 68, 25, 54},
{61, 23, 59, 61, 22, 62, 59, 23, 61},
{120, 164, 134, 122, 172, 135, 117, 167, 135},
{98, 173, 137, 93, 178, 138, 92, 172, 137},
{85, 169, 136, 81, 177, 137, 81, 164, 135},
{100, 136, 118, 108, 132, 113, 108, 136, 118},
{108, 136, 118, 108, 132, 113, 110, 137, 118},
{121, 142, 124, 130, 143, 124, 123, 149, 128},
{122, 162, 133, 120, 164, 134, 122, 160, 135},
{117, 165, 137, 122, 160, 135, 120, 164, 134},
{120, 164, 134, 117, 167, 135, 117, 165, 137},
{111, 170, 138, 117, 165, 137, 117, 167, 135},
{117, 167, 135, 111, 172, 137, 111, 170, 138},
{111, 172, 137, 107, 173, 137, 111, 170, 138},
{97, 172, 139, 111, 170, 138, 107, 173, 137},
{107, 173, 137, 98, 173, 137, 97, 172, 139},
{98, 173, 137, 92, 172, 137, 97, 172, 139},
{92, 170, 139, 97, 172, 139, 92, 172, 137},
{92, 172, 137, 85, 169, 136, 92, 170, 139},
{85, 167, 138, 92, 170, 139, 85, 169, 136},
{85, 169, 136, 81, 164, 135, 85, 167, 138},
{81, 163, 137, 85, 167, 138, 81, 164, 135},
{81, 164, 135, 80, 159, 134, 81, 163, 137},
{80, 158, 136, 81, 163, 137, 80, 159, 134},
{80, 159, 134, 80, 156, 132, 80, 158, 136},
{81, 145, 130, 80, 158, 136, 80, 156, 132},
{80, 156, 132, 82, 146, 127, 81, 145, 130},
{82, 146, 127, 83, 143, 126, 81, 145, 130},
{83, 142, 128, 81, 145, 130, 83, 143, 126},
{83, 143, 126, 84, 141, 124, 83, 142, 128},
{86, 138, 125, 83, 142, 128, 84, 141, 124},
{84, 141, 124, 86, 140, 123, 86, 138, 125},
{94, 134, 121, 86, 138, 125, 86, 140, 123},
{86, 140, 123, 95, 136, 118, 94, 134, 121},
{95, 136, 118, 100, 136, 118, 94, 134, 121},
{108, 135, 121, 94, 134, 121, 100, 136, 118},
{100, 136, 118, 108, 136, 118, 108, 135, 121},
{108, 136, 118, 110, 137, 118, 108, 135, 121},
{117, 137, 124, 108, 135, 121, 110, 137, 118},
{110, 137, 118, 117, 139, 121, 117, 137, 124},
{117, 139, 121, 121, 142, 124, 117, 137, 124},
{120, 140, 127, 117, 137, 124, 121, 142, 124},
{123, 147, 131, 120, 140, 127, 121, 142, 124},
{121, 142, 124, 123, 149, 128, 123, 147, 131},
{123, 155, 135, 123, 147, 131, 123, 149, 128},
{123, 149, 128, 123, 157, 132, 123, 155, 135},
{123, 157, 132, 122, 162, 133, 123, 155, 135},
{122, 160, 135, 123, 155, 135, 122, 162, 133},
{122, 160, 135, 117, 165, 137, 112, 159, 146},
{109, 162, 145, 112, 159, 146, 117, 165, 137},
{117, 165, 137, 111, 170, 138, 109, 162, 145},
{106, 166, 144, 109, 162, 145, 111, 170, 138},
{111, 170, 138, 97, 172, 139, 106, 166, 144},
{97, 167, 144, 106, 166, 144, 97, 172, 139},
{97, 172, 139, 92, 170, 139, 97, 167, 144},
{94, 166, 144, 97, 167, 144, 92, 170, 139},
{92, 170, 139, 85, 167, 138, 89, 165, 144},
{89, 165, 144, 94, 166, 144, 92, 170, 139},
{85, 167, 138, 81, 163, 137, 87, 162, 144},
{87, 162, 144, 89, 165, 144, 85, 167, 138},
{81, 163, 137, 80, 158, 136, 86, 159, 145},
{86, 159, 145, 87, 162, 144, 81, 163, 137},
{80, 158, 136, 81, 145, 130, 86, 150, 145},
{86, 150, 145, 86, 159, 145, 80, 158, 136},
{81, 145, 130, 83, 142, 128, 87, 148, 145},
{87, 148, 145, 86, 150, 145, 81, 145, 130},
{83, 142, 128, 86, 138, 125, 89, 145, 144},
{89, 145, 144, 87, 148, 145, 83, 142, 128},
{86, 138, 125, 94, 134, 121, 94, 141, 143},
{94, 141, 143, 89, 145, 144, 86, 138, 125},
{94, 134, 121, 108, 135, 121, 102, 141, 144},
{102, 141, 144, 94, 141, 143, 94, 134, 121},
{108, 135, 121, 117, 137, 124, 102, 141, 144},
{108, 143, 145, 102, 141, 144, 117, 137, 124},
{117, 137, 124, 120, 140, 127, 108, 143, 145},
{110, 145, 146, 108, 143, 145, 120, 140, 127},
{120, 140, 127, 123, 147, 131, 110, 145, 146},
{112, 150, 146, 110, 145, 146, 123, 147, 131},
{123, 147, 131, 123, 155, 135, 112, 150, 146},
{112, 156, 147, 112, 150, 146, 123, 155, 135},
{123, 155, 135, 122, 160, 135, 112, 156, 147},
{112, 159, 146, 112, 156, 147, 122, 160, 135},
{112, 159, 146, 109, 162, 145, 107, 158, 149},
{105, 160, 149, 107, 158, 149, 109, 162, 145},
{109, 162, 145, 106, 166, 144, 105, 160, 149},
{102, 162, 149, 105, 160, 149, 106, 166, 144},
{106, 166, 144, 97, 167, 144, 102, 162, 149},
{97, 163, 149, 102, 162, 149, 97, 167, 144},
{97, 167, 144, 94, 166, 144, 97, 163, 149},
{94, 163, 149, 97, 163, 149, 94, 166, 144},
{94, 166, 144, 89, 165, 144, 91, 162, 149},
{91, 162, 149, 94, 163, 149, 94, 166, 144},
{89, 165, 144, 87, 162, 144, 91, 162, 149},
{90, 160, 149, 91, 162, 149, 87, 162, 144},
{87, 162, 144, 86, 159, 145, 90, 160, 149},
{89, 158, 149, 90, 160, 149, 86, 159, 145},
{86, 159, 145, 86, 150, 145, 90, 152, 148},
{90, 152, 148, 89, 158, 149, 86, 159, 145},
{87, 148, 145, 89, 145, 144, 91, 148, 148},
{89, 145, 144, 94, 141, 143, 95, 146, 147},
{95, 146, 147, 91, 148, 148, 89, 145, 144},
{94, 141, 143, 102, 141, 144, 100, 146, 147},
{100, 146, 147, 95, 146, 147, 94, 141, 143},
{102, 141, 144, 108, 143, 145, 105, 147, 148},
{105, 147, 148, 100, 146, 147, 102, 141, 144},
{108, 143, 145, 110, 145, 146, 105, 147, 148},
{106, 149, 149, 105, 147, 148, 110, 145, 146},
{110, 145, 146, 112, 150, 146, 106, 149, 149},
{107, 152, 149, 106, 149, 149, 112, 150, 146},
{112, 150, 146, 112, 156, 147, 107, 152, 149},
{107, 156, 150, 107, 152, 149, 112, 156, 147},
{112, 156, 147, 112, 159, 146, 107, 158, 149},
{107, 158, 149, 107, 156, 150, 112, 156, 147},
{107, 158, 149, 105, 160, 149, 98, 151, 150},
{105, 160, 149, 102, 162, 149, 98, 151, 150},
{102, 162, 149, 97, 163, 149, 98, 151, 150},
{97, 163, 149, 94, 163, 149, 98, 151, 150},
{94, 163, 149, 91, 162, 149, 98, 151, 150},
{91, 162, 149, 90, 160, 149, 98, 151, 150},
{90, 160, 149, 89, 158, 149, 98, 151, 150},
{89, 158, 149, 90, 152, 148, 98, 151, 150},
{91, 148, 148, 95, 146, 147, 98, 151, 150},
{95, 146, 147, 100, 146, 147, 98, 151, 150},
{100, 146, 147, 105, 147, 148, 98, 151, 150},
{105, 147, 148, 106, 149, 149, 98, 151, 150},
{106, 149, 149, 107, 152, 149, 98, 151, 150},
{107, 152, 149, 107, 156, 150, 98, 151, 150},
{107, 156, 150, 107, 158, 149, 98, 151, 150},
{122, 172, 135, 111, 177, 137, 111, 172, 137},
{117, 167, 135, 122, 172, 135, 111, 172, 137},
{111, 177, 137, 105, 178, 138, 107, 173, 137},
{111, 172, 137, 111, 177, 137, 107, 173, 137},
{105, 178, 138, 93, 178, 138, 98, 173, 137},
{107, 173, 137, 105, 178, 138, 98, 173, 137},
{81, 177, 137, 85, 169, 136, 92, 172, 137},
{92, 172, 137, 93, 178, 138, 81, 177, 137},
{74, 161, 133, 80, 159, 134, 81, 164, 135},
{81, 164, 135, 81, 177, 137, 74, 161, 133},
{74, 161, 133, 73, 145, 124, 80, 156, 132},
{80, 159, 134, 74, 161, 133, 80, 156, 132},
{73, 145, 124, 83, 143, 126, 82, 146, 127},
{80, 156, 132, 73, 145, 124, 82, 146, 127},
{73, 145, 124, 72, 135, 111, 84, 141, 124},
{83, 143, 126, 73, 145, 124, 84, 141, 124},
{72, 135, 111, 85, 132, 112, 86, 140, 123},
{84, 141, 124, 72, 135, 111, 86, 140, 123},
{86, 140, 123, 85, 132, 112, 95, 136, 118},
{108, 132, 113, 100, 136, 118, 95, 136, 118},
{85, 132, 112, 108, 132, 113, 95, 136, 118},
{108, 132, 113, 132, 133, 112, 117, 139, 121},
{110, 137, 118, 108, 132, 113, 117, 139, 121},
{130, 143, 124, 121, 142, 124, 117, 139, 121},
{117, 139, 121, 132, 133, 112, 130, 143, 124},
{131, 158, 132, 123, 157, 132, 123, 149, 128},
{123, 149, 128, 130, 143, 124, 131, 158, 132},
{123, 157, 132, 131, 158, 132, 122, 162, 133},
{122, 172, 135, 120, 164, 134, 122, 162, 133},
{131, 158, 132, 122, 172, 135, 122, 162, 133},
{86, 150, 145, 87, 148, 145, 90, 152, 148},
{91, 148, 148, 90, 152, 148, 87, 148, 145},
{90, 152, 148, 91, 148, 148, 98, 151, 150},
{123, 220, 86, 115, 222, 80, 115, 224, 88},
{115, 223, 105, 115, 222, 111, 120, 221, 108},
{144, 207, 101, 144, 210, 96, 149, 210, 102},
{148, 212, 96, 149, 210, 102, 144, 210, 96},
{142, 217, 87, 148, 212, 96, 144, 210, 96},
{137, 214, 87, 127, 218, 85, 130, 223, 84},
{126, 225, 84, 130, 223, 84, 127, 218, 85},
{127, 218, 85, 123, 220, 86, 126, 225, 84},
{123, 220, 86, 115, 224, 88, 126, 225, 84},
{117, 230, 88, 126, 225, 84, 115, 224, 88},
{115, 224, 88, 113, 225, 92, 117, 230, 88},
{114, 232, 92, 117, 230, 88, 113, 225, 92},
{113, 225, 92, 112, 226, 95, 114, 232, 92},
{113, 233, 95, 114, 232, 92, 112, 226, 95},
{114, 232, 100, 113, 233, 95, 112, 226, 95},
{112, 226, 95, 112, 225, 99, 114, 232, 100},
{116, 230, 107, 114, 232, 100, 112, 225, 99},
{112, 225, 99, 115, 223, 105, 116, 230, 107},
{122, 226, 109, 116, 230, 107, 115, 223, 105},
{115, 223, 105, 120, 221, 108, 122, 226, 109},
{120, 221, 108, 132, 215, 108, 122, 226, 109},
{140, 217, 110, 122, 226, 109, 132, 215, 108},
{132, 215, 108, 136, 214, 108, 140, 217, 110},
{136, 214, 108, 144, 207, 101, 140, 217, 110},
{149, 210, 102, 140, 217, 110, 144, 207, 101},
{149, 210, 102, 148, 212, 96, 152, 236, 102},
{150, 238, 97, 152, 236, 102, 148, 212, 96},
{148, 212, 96, 142, 217, 87, 150, 238, 97},
{144, 239, 89, 150, 238, 97, 142, 217, 87},
{130, 223, 84, 126, 225, 84, 132, 238, 86},
{128, 238, 86, 132, 238, 86, 126, 225, 84},
{126, 225, 84, 117, 230, 88, 128, 238, 86},
{119, 239, 89, 128, 238, 86, 117, 230, 88},
{117, 230, 88, 114, 232, 92, 119, 239, 89},
{116, 239, 92, 119, 239, 89, 114, 232, 92},
{114, 232, 92, 113, 233, 95, 116, 239, 92},
{115, 239, 96, 116, 239, 92, 113, 233, 95},
{113, 233, 95, 114, 232, 100, 116, 239, 99},
{116, 239, 99, 115, 239, 96, 113, 233, 95},
{114, 232, 100, 116, 230, 107, 119, 238, 105},
{119, 238, 105, 116, 239, 99, 114, 232, 100},
{116, 230, 107, 122, 226, 109, 124, 238, 108},
{124, 238, 108, 119, 238, 105, 116, 230, 107},
{122, 226, 109, 140, 217, 110, 142, 239, 108},
{142, 239, 108, 124, 238, 108, 122, 226, 109},
{140, 217, 110, 149, 210, 102, 152, 236, 102},
{152, 236, 102, 142, 239, 108, 140, 217, 110},
{152, 236, 102, 150, 238, 97, 147, 242, 101},
{146, 243, 97, 147, 242, 101, 150, 238, 97},
{150, 238, 97, 144, 239, 89, 146, 243, 97},
{141, 244, 90, 146, 243, 97, 144, 239, 89},
{132, 238, 86, 128, 238, 86, 131, 244, 88},
{128, 244, 88, 131, 244, 88, 128, 238, 86},
{128, 238, 86, 119, 239, 89, 121, 245, 91},
{121, 245, 91, 128, 244, 88, 128, 238, 86},
{119, 239, 89, 116, 239, 92, 119, 245, 93},
{119, 245, 93, 121, 245, 91, 119, 239, 89},
{116, 239, 92, 115, 239, 96, 119, 245, 93},
{118, 245, 96, 119, 245, 93, 115, 239, 96},
{115, 239, 96, 116, 239, 99, 118, 245, 99},
{118, 245, 99, 118, 245, 96, 115, 239, 96},
{116, 239, 99, 119, 238, 105, 121, 244, 104},
{121, 244, 104, 118, 245, 99, 116, 239, 99},
{119, 238, 105, 124, 238, 108, 121, 244, 104},
{125, 244, 106, 121, 244, 104, 124, 238, 108},
{124, 238, 108, 142, 239, 108, 139, 244, 106},
{139, 244, 106, 125, 244, 106, 124, 238, 108},
{142, 239, 108, 152, 236, 102, 147, 242, 101},
{147, 242, 101, 139, 244, 106, 142, 239, 108},
{147, 242, 101, 146, 243, 97, 142, 248, 100},
{142, 248, 97, 142, 248, 100, 146, 243, 97},
{146, 243, 97, 141, 244, 90, 142, 248, 97},
{138, 249, 93, 142, 248, 97, 141, 244, 90},
{131, 244, 88, 128, 244, 88, 130, 248, 91},
{130, 248, 91, 132, 248, 91, 131, 244, 88},
{128, 244, 88, 121, 245, 91, 125, 248, 93},
{125, 248, 93, 130, 248, 91, 128, 244, 88},
{121, 245, 91, 119, 245, 93, 124, 248, 95},
{124, 248, 95, 125, 248, 93, 121, 245, 91},
{119, 245, 93, 118, 245, 96, 124, 248, 95},
{118, 245, 99, 121, 244, 104, 124, 248, 98},
{125, 248, 101, 124, 248, 98, 121, 244, 104},
{121, 244, 104, 125, 244, 106, 125, 248, 101},
{128, 248, 103, 125, 248, 101, 125, 244, 106},
{125, 244, 106, 139, 244, 106, 128, 248, 103},
{137, 249, 103, 128, 248, 103, 139, 244, 106},
{139, 244, 106, 147, 242, 101, 142, 248, 100},
{142, 248, 100, 137, 249, 103, 139, 244, 106},
{142, 248, 100, 142, 248, 97, 129, 251, 97},
{142, 248, 97, 138, 249, 93, 129, 251, 97},
{132, 248, 91, 130, 248, 91, 129, 251, 97},
{130, 248, 91, 125, 248, 93, 129, 251, 97},
{125, 248, 93, 124, 248, 95, 129, 251, 97},
{124, 248, 98, 125, 248, 101, 129, 251, 97},
{125, 248, 101, 128, 248, 103, 129, 251, 97},
{128, 248, 103, 137, 249, 103, 129, 251, 97},
{137, 249, 103, 142, 248, 100, 129, 251, 97},
{144, 210, 96, 154, 198, 96, 137, 213, 81},
{137, 214, 87, 137, 213, 81, 127, 218, 85},
{115, 222, 80, 123, 220, 86, 127, 218, 85},
{137, 213, 81, 115, 222, 80, 127, 218, 85},
{103, 224, 79, 113, 225, 92, 115, 224, 88},
{115, 224, 88, 115, 222, 80, 103, 224, 79},
{103, 228, 95, 112, 226, 95, 113, 225, 92},
{113, 225, 92, 103, 224, 79, 103, 228, 95},
{103, 228, 95, 102, 224, 112, 112, 225, 99},
{112, 226, 95, 103, 228, 95, 112, 225, 99},
{102, 224, 112, 115, 222, 111, 115, 223, 105},
{112, 225, 99, 102, 224, 112, 115, 223, 105},
{120, 221, 108, 115, 222, 111, 136, 213, 111},
{132, 215, 108, 120, 221, 108, 136, 213, 111},
{136, 213, 111, 136, 214, 108, 132, 215, 108},
{136, 214, 108, 136, 213, 111, 144, 207, 101},
{154, 198, 96, 144, 210, 96, 144, 207, 101},
{136, 213, 111, 154, 198, 96, 144, 207, 101},
{144, 210, 96, 137, 214, 87, 142, 217, 87},
{137, 214, 87, 144, 210, 96, 137, 213, 81},
{130, 223, 84, 142, 217, 87, 137, 214, 87},
{142, 217, 87, 130, 223, 84, 144, 239, 89},
{132, 238, 86, 144, 239, 89, 130, 223, 84},
{144, 239, 89, 132, 238, 86, 141, 244, 90},
{131, 244, 88, 141, 244, 90, 132, 238, 86},
{141, 244, 90, 131, 244, 88, 132, 248, 91},
{132, 248, 91, 138, 249, 93, 141, 244, 90},
{138, 249, 93, 132, 248, 91, 129, 251, 97},
{118, 245, 96, 118, 245, 99, 124, 248, 95},
{124, 248, 98, 124, 248, 95, 118, 245, 99},
{124, 248, 95, 124, 248, 98, 129, 251, 97},
{78, 225, 90, 78, 222, 79, 72, 223, 88},
{76, 223, 108, 78, 223, 110, 78, 223, 107},
{88, 225, 103, 88, 225, 101, 89, 230, 104},
{89, 231, 102, 89, 230, 104, 88, 225, 101},
{88, 225, 101, 86, 226, 95, 89, 231, 102},
{86, 232, 94, 89, 231, 102, 86, 226, 95},
{86, 226, 95, 82, 226, 92, 86, 232, 94},
{78, 229, 88, 86, 232, 94, 82, 226, 92},
{82, 226, 92, 78, 225, 90, 78, 229, 88},
{78, 225, 90, 72, 223, 88, 78, 229, 88},
{65, 223, 86, 78, 229, 88, 72, 223, 88},
{72, 223, 88, 67, 222, 88, 65, 223, 86},
{67, 222, 88, 60, 216, 94, 65, 223, 86},
{58, 216, 93, 65, 223, 86, 60, 216, 94},
{58, 216, 94, 58, 216, 93, 60, 216, 94},
{60, 216, 94, 60, 216, 95, 58, 216, 94},
{59, 214, 105, 58, 216, 94, 60, 216, 95},
{62, 216, 106, 67, 220, 108, 66, 222, 109},
{76, 226, 109, 66, 222, 109, 67, 220, 108},
{67, 220, 108, 76, 223, 108, 76, 226, 109},
{76, 223, 108, 78, 223, 107, 76, 226, 109},
{78, 223, 107, 88, 225, 103, 76, 226, 109},
{89, 230, 104, 76, 226, 109, 88, 225, 103},
{89, 230, 104, 89, 231, 102, 85, 241, 103},
{85, 242, 101, 85, 241, 103, 89, 231, 102},
{89, 231, 102, 86, 232, 94, 85, 242, 101},
{82, 243, 93, 85, 242, 101, 86, 232, 94},
{86, 232, 94, 78, 229, 88, 82, 243, 93},
{74, 240, 87, 82, 243, 93, 78, 229, 88},
{78, 229, 88, 65, 223, 86, 61, 234, 85},
{61, 234, 85, 74, 240, 87, 78, 229, 88},
{65, 223, 86, 58, 216, 93, 53, 227, 92},
{53, 227, 92, 61, 234, 85, 65, 223, 86},
{58, 216, 93, 58, 216, 94, 53, 227, 92},
{58, 216, 94, 59, 214, 105, 54, 225, 105},
{66, 222, 109, 76, 226, 109, 72, 237, 109},
{72, 237, 109, 61, 233, 109, 66, 222, 109},
{76, 226, 109, 89, 230, 104, 85, 241, 103},
{85, 241, 103, 72, 237, 109, 76, 226, 109},
{85, 241, 103, 85, 242, 101, 83, 247, 102},
{83, 248, 100, 83, 247, 102, 85, 242, 101},
{85, 242, 101, 82, 243, 93, 83, 248, 100},
{81, 249, 93, 83, 248, 100, 82, 243, 93},
{82, 243, 93, 74, 240, 87, 72, 247, 87},
{72, 247, 87, 81, 249, 93, 82, 243, 93},
{74, 240, 87, 61, 234, 85, 60, 244, 85},
{60, 244, 85, 72, 247, 87, 74, 240, 87},
{61, 234, 85, 53, 227, 92, 52, 239, 91},
{52, 239, 91, 60, 244, 85, 61, 234, 85},
{61, 233, 109, 72, 237, 109, 60, 243, 107},
{70, 245, 107, 60, 243, 107, 72, 237, 109},
{72, 237, 109, 85, 241, 103, 70, 245, 107},
{83, 247, 102, 70, 245, 107, 85, 241, 103},
{83, 247, 102, 83, 248, 100, 81, 253, 101},
{81, 249, 93, 72, 247, 87, 79, 255, 93},
{72, 253, 88, 79, 255, 93, 72, 247, 87},
{72, 247, 87, 60, 244, 85, 61, 250, 86},
{61, 250, 86, 72, 253, 88, 72, 247, 87},
{60, 244, 85, 52, 239, 91, 54, 245, 91},
{54, 245, 91, 61, 250, 86, 60, 244, 85},
{60, 243, 107, 70, 245, 107, 61, 249, 105},
{70, 251, 105, 61, 249, 105, 70, 245, 107},
{70, 245, 107, 83, 247, 102, 70, 251, 105},
{81, 253, 101, 70, 251, 105, 83, 247, 102},
{79, 255, 93, 72, 253, 88, 67, 254, 95},
{64, 253, 92, 67, 254, 95, 72, 253, 88},
{72, 253, 88, 61, 250, 86, 64, 253, 92},
{58, 251, 91, 64, 253, 92, 61, 250, 86},
{61, 250, 86, 54, 245, 91, 58, 251, 91},
{55, 248, 94, 58, 251, 91, 54, 245, 91},
{61, 249, 105, 70, 251, 105, 63, 252, 101},
{63, 252, 101, 59, 250, 101, 61, 249, 105},
{70, 251, 105, 81, 253, 101, 68, 253, 99},
{68, 253, 99, 63, 252, 101, 70, 251, 105},
{67, 254, 95, 64, 253, 92, 56, 251, 97},
{64, 253, 92, 58, 251, 91, 56, 251, 97},
{58, 251, 91, 55, 248, 94, 56, 251, 97},
{59, 250, 101, 63, 252, 101, 56, 251, 97},
{63, 252, 101, 68, 253, 99, 56, 251, 97},
{103, 228, 95, 86, 226, 95, 88, 225, 101},
{88, 225, 101, 102, 224, 112, 103, 228, 95},
{103, 224, 79, 82, 226, 92, 86, 226, 95},
{86, 226, 95, 103, 228, 95, 103, 224, 79},
{78, 222, 79, 78, 225, 90, 82, 226, 92},
{82, 226, 92, 103, 224, 79, 78, 222, 79},
{68, 220, 79, 67, 222, 88, 72, 223, 88},
{72, 223, 88, 78, 222, 79, 68, 220, 79},
{67, 222, 88, 68, 220, 79, 60, 216, 94},
{50, 206, 95, 60, 216, 95, 60, 216, 94},
{68, 220, 79, 50, 206, 95, 60, 216, 94},
{62, 216, 106, 61, 215, 105, 51, 205, 110},
{78, 223, 107, 78, 223, 110, 88, 225, 103},
{102, 224, 112, 88, 225, 101, 88, 225, 103},
{78, 223, 110, 102, 224, 112, 88, 225, 103},
{60, 216, 95, 61, 215, 105, 59, 214, 105},
{60, 216, 95, 50, 206, 95, 61, 215, 105},
{61, 215, 105, 50, 206, 95, 51, 205, 110},
{78, 223, 110, 67, 220, 108, 77, 212, 124},
{67, 220, 108, 78, 223, 110, 76, 223, 108},
{67, 220, 108, 69, 210, 123, 77, 212, 124},
{67, 220, 108, 51, 205, 110, 69, 210, 123},
{51, 205, 110, 67, 220, 108, 62, 216, 106},
{61, 215, 105, 62, 216, 106, 59, 214, 105},
{66, 222, 109, 59, 214, 105, 62, 216, 106},
{54, 225, 105, 53, 227, 92, 58, 216, 94},
{53, 227, 92, 54, 225, 105, 53, 237, 103},
{59, 214, 105, 66, 222, 109, 54, 225, 105},
{61, 233, 109, 54, 225, 105, 66, 222, 109},
{53, 237, 103, 52, 239, 91, 53, 227, 92},
{52, 239, 91, 53, 237, 103, 55, 243, 102},
{54, 225, 105, 61, 233, 109, 53, 237, 103},
{60, 243, 107, 53, 237, 103, 61, 233, 109},
{83, 248, 100, 81, 249, 93, 81, 253, 101},
{79, 255, 93, 81, 253, 101, 81, 249, 93},
{55, 243, 102, 54, 245, 91, 52, 239, 91},
{54, 245, 91, 55, 243, 102, 56, 247, 99},
{53, 237, 103, 60, 243, 107, 55, 243, 102},
{61, 249, 105, 55, 243, 102, 60, 243, 107},
{55, 243, 102, 61, 249, 105, 59, 250, 101},
{81, 253, 101, 79, 255, 93, 68, 253, 99},
{67, 254, 95, 68, 253, 99, 79, 255, 93},
{68, 253, 99, 67, 254, 95, 56, 251, 97},
{56, 247, 99, 55, 248, 94, 54, 245, 91},
{55, 248, 94, 56, 247, 99, 56, 251, 97},
{59, 250, 101, 56, 247, 99, 55, 243, 102},
{56, 247, 99, 59, 250, 101, 56, 251, 97},
{132, 122, 105, 136, 113, 110, 141, 126, 107},
{145, 117, 112, 141, 126, 107, 136, 113, 110},
{153, 105, 112, 151, 107, 113, 144, 102, 110},
{144, 102, 110, 152, 95, 103, 153, 105, 112},
{160, 96, 104, 153, 105, 112, 152, 95, 103},
{152, 95, 103, 154, 94, 99, 160, 96, 104},
{154, 94, 99, 156, 92, 94, 160, 96, 104},
{164, 93, 95, 160, 96, 104, 156, 92, 94},
{146, 127, 87, 141, 129, 95, 148, 132, 93},
{148, 132, 93, 157, 129, 78, 146, 127, 87},
{147, 131, 96, 148, 132, 93, 141, 129, 95},
{161, 125, 73, 157, 129, 78, 162, 131, 78},
{162, 131, 78, 166, 127, 72, 161, 125, 73},
{157, 129, 78, 148, 132, 93, 151, 133, 93},
{151, 133, 93, 162, 131, 78, 157, 129, 78},
{148, 132, 93, 147, 131, 96, 150, 132, 96},
{150, 132, 96, 151, 133, 93, 148, 132, 93},
{162, 131, 78, 151, 133, 93, 154, 134, 94},
{154, 134, 94, 164, 132, 80, 162, 131, 78},
{151, 133, 93, 150, 132, 96, 153, 133, 96},
{153, 133, 96, 154, 134, 94, 151, 133, 93},
{154, 129, 114, 153, 133, 96, 150, 132, 96},
{123, 130, 93, 123, 129, 97, 131, 125, 95},
{123, 129, 97, 127, 122, 113, 132, 122, 105},
{131, 125, 95, 123, 129, 97, 132, 122, 105},
{132, 122, 105, 127, 122, 113, 136, 113, 110},
{144, 102, 110, 150, 85, 125, 152, 95, 103},
{164, 77, 102, 154, 94, 99, 152, 95, 103},
{150, 85, 125, 164, 77, 102, 152, 95, 103},
{164, 77, 102, 165, 79, 94, 156, 92, 94},
{154, 94, 99, 164, 77, 102, 156, 92, 94},
{136, 113, 110, 144, 102, 110, 145, 117, 112},
{144, 102, 110, 136, 113, 110, 127, 122, 113},
{151, 107, 113, 145, 117, 112, 144, 102, 110},
{127, 122, 113, 150, 85, 125, 144, 102, 110},
{131, 125, 95, 132, 122, 105, 141, 129, 95},
{141, 126, 107, 141, 129, 95, 132, 122, 105},
{141, 129, 95, 141, 126, 107, 147, 131, 96},
{147, 131, 96, 154, 129, 114, 150, 132, 96},
{154, 129, 114, 147, 131, 96, 141, 126, 107},
{141, 126, 107, 145, 117, 112, 154, 129, 114},
{65, 114, 104, 71, 119, 105, 69, 119, 101},
{65, 114, 104, 69, 119, 101, 63, 123, 101},
{42, 90, 71, 43, 87, 85, 35, 94, 86},
{43, 87, 85, 43, 88, 88, 35, 94, 86},
{39, 97, 99, 35, 94, 86, 43, 88, 88},
{43, 88, 88, 46, 90, 98, 39, 97, 99},
{46, 90, 98, 48, 92, 103, 39, 97, 99},
{41, 99, 103, 39, 97, 99, 48, 92, 103},
{47, 104, 108, 41, 99, 103, 48, 92, 103},
{48, 92, 103, 53, 97, 108, 47, 104, 108},
{53, 97, 108, 58, 106, 108, 47, 104, 108},
{52, 112, 108, 47, 104, 108, 58, 106, 108},
{58, 106, 108, 60, 108, 108, 52, 112, 108},
{63, 123, 101, 64, 126, 97, 50, 128, 96},
{50, 128, 96, 49, 125, 99, 63, 123, 101},
{35, 94, 86, 39, 97, 99, 27, 104, 98},
{27, 104, 98, 24, 102, 87, 35, 94, 86},
{39, 97, 99, 41, 99, 103, 29, 106, 101},
{29, 106, 101, 27, 104, 98, 39, 97, 99},
{41, 99, 103, 47, 104, 108, 34, 109, 106},
{34, 109, 106, 29, 106, 101, 41, 99, 103},
{47, 104, 108, 52, 112, 108, 39, 116, 106},
{39, 116, 106, 34, 109, 106, 47, 104, 108},
{49, 125, 99, 50, 128, 96, 37, 131, 100},
{38, 137, 85, 38, 134, 96, 50, 132, 84},
{38, 135, 78, 38, 137, 85, 50, 132, 84},
{30, 129, 72, 33, 132, 73, 42, 123, 69},
{32, 113, 70, 29, 110, 71, 20, 120, 72},
{17, 117, 73, 20, 120, 72, 29, 110, 71},
{24, 102, 87, 27, 104, 98, 16, 112, 98},
{16, 112, 98, 12, 110, 88, 24, 102, 87},
{27, 104, 98, 29, 106, 101, 18, 114, 102},
{18, 114, 102, 16, 112, 98, 27, 104, 98},
{29, 106, 101, 34, 109, 106, 22, 117, 106},
{22, 117, 106, 18, 114, 102, 29, 106, 101},
{34, 109, 106, 39, 116, 106, 27, 123, 106},
{27, 123, 106, 22, 117, 106, 34, 109, 106},
{38, 137, 85, 38, 135, 78, 28, 144, 81},
{28, 144, 81, 28, 146, 87, 38, 137, 85},
{38, 135, 78, 33, 132, 73, 28, 144, 81},
{23, 141, 76, 28, 144, 81, 33, 132, 73},
{33, 132, 73, 30, 129, 72, 23, 141, 76},
{20, 139, 75, 23, 141, 76, 30, 129, 72},
{20, 120, 72, 17, 117, 73, 9, 128, 76},
{9, 128, 76, 12, 130, 75, 20, 120, 72},
{12, 110, 88, 16, 112, 98, 5, 121, 90},
{8, 123, 99, 5, 121, 90, 16, 112, 98},
{16, 112, 98, 18, 114, 102, 8, 123, 99},
{10, 125, 102, 8, 123, 99, 18, 114, 102},
{18, 114, 102, 22, 117, 106, 14, 127, 106},
{14, 127, 106, 10, 125, 102, 18, 114, 102},
{22, 117, 106, 27, 123, 106, 14, 127, 106},
{18, 133, 106, 14, 127, 106, 27, 123, 106},
{27, 140, 100, 28, 143, 98, 21, 146, 100},
{22, 148, 97, 21, 146, 100, 28, 143, 98},
{28, 146, 87, 28, 144, 81, 23, 149, 83},
{23, 149, 83, 23, 151, 88, 28, 146, 87},
{28, 144, 81, 23, 141, 76, 23, 149, 83},
{18, 147, 79, 23, 149, 83, 23, 141, 76},
{23, 141, 76, 20, 139, 75, 15, 146, 78},
{15, 146, 78, 18, 147, 79, 23, 141, 76},
{5, 121, 90, 8, 123, 99, 0, 134, 91},
{3, 135, 99, 0, 134, 91, 8, 123, 99},
{8, 123, 99, 10, 125, 102, 3, 135, 99},
{10, 125, 102, 14, 127, 106, 9, 137, 104},
{14, 127, 106, 18, 133, 106, 9, 137, 104},
{13, 141, 104, 9, 137, 104, 18, 133, 106},
{21, 146, 100, 22, 148, 97, 19, 150, 98},
{20, 151, 96, 19, 150, 98, 22, 148, 97},
{23, 151, 88, 23, 149, 83, 20, 152, 85},
{20, 152, 85, 21, 153, 89, 23, 151, 88},
{23, 149, 83, 18, 147, 79, 16, 152, 82},
{16, 152, 82, 20, 152, 85, 23, 149, 83},
{18, 147, 79, 15, 146, 78, 13, 151, 82},
{13, 151, 82, 16, 152, 82, 18, 147, 79},
{12, 151, 81, 13, 151, 82, 15, 146, 78},
{4, 149, 83, 6, 149, 82, 7, 140, 78},
{0, 134, 91, 3, 135, 99, 0, 147, 92},
{2, 147, 98, 0, 147, 92, 3, 135, 99},
{7, 147, 102, 4, 147, 100, 9, 137, 104},
{9, 137, 104, 13, 141, 104, 7, 147, 102},
{12, 149, 102, 7, 147, 102, 13, 141, 104},
{19, 150, 98, 20, 151, 96, 17, 153, 96},
{18, 153, 95, 17, 153, 96, 20, 151, 96},
{21, 153, 89, 20, 152, 85, 18, 154, 87},
{18, 154, 87, 18, 155, 90, 21, 153, 89},
{20, 152, 85, 16, 152, 82, 18, 154, 87},
{15, 154, 85, 18, 154, 87, 16, 152, 82},
{16, 152, 82, 13, 151, 82, 13, 154, 85},
{13, 154, 85, 15, 154, 85, 16, 152, 82},
{12, 151, 81, 6, 149, 82, 7, 154, 85},
{6, 149, 82, 4, 149, 83, 6, 154, 86},
{6, 154, 86, 7, 154, 85, 6, 149, 82},
{0, 147, 92, 2, 147, 98, 3, 153, 92},
{5, 152, 97, 3, 153, 92, 2, 147, 98},
{2, 147, 98, 4, 147, 100, 5, 152, 97},
{7, 147, 102, 12, 149, 102, 8, 152, 99},
{12, 153, 99, 8, 152, 99, 12, 149, 102},
{17, 153, 96, 18, 153, 95, 6, 158, 92},
{18, 155, 90, 18, 154, 87, 6, 158, 92},
{18, 154, 87, 15, 154, 85, 6, 158, 92},
{15, 154, 85, 13, 154, 85, 6, 158, 92},
{7, 154, 85, 6, 154, 86, 6, 158, 92},
{3, 153, 92, 5, 152, 97, 6, 158, 92},
{8, 152, 99, 12, 153, 99, 6, 158, 92},
{74, 130, 96, 74, 131, 94, 70, 123, 96},
{42, 90, 71, 38, 67, 68, 43, 87, 85},
{44, 84, 102, 43, 88, 88, 43, 87, 85},
{38, 67, 68, 44, 84, 102, 43, 87, 85},
{44, 84, 102, 48, 92, 103, 46, 90, 98},
{43, 88, 88, 44, 84, 102, 46, 90, 98},
{50, 84, 114, 53, 97, 108, 48, 92, 103},
{48, 92, 103, 44, 84, 102, 50, 84, 114},
{62, 106, 114, 58, 106, 108, 53, 97, 108},
{53, 97, 108, 50, 84, 114, 62, 106, 114},
{58, 106, 108, 62, 106, 114, 60, 108, 108},
{65, 114, 104, 60, 108, 108, 62, 106, 114},
{62, 106, 114, 71, 119, 105, 65, 114, 104},
{69, 119, 101, 70, 123, 96, 63, 123, 101},
{69, 119, 101, 71, 119, 105, 70, 123, 96},
{71, 119, 105, 74, 130, 96, 70, 123, 96},
{64, 126, 97, 63, 123, 101, 70, 123, 96},
{42, 90, 71, 43, 68, 59, 38, 67, 68},
{35, 94, 86, 35, 97, 72, 42, 90, 71},
{35, 97, 72, 35, 94, 86, 24, 102, 87},
{60, 108, 108, 65, 114, 104, 52, 112, 108},
{63, 123, 101, 52, 112, 108, 65, 114, 104},
{52, 112, 108, 63, 123, 101, 49, 125, 99},
{50, 128, 96, 50, 132, 84, 38, 134, 96},
{24, 105, 75, 29, 110, 71, 35, 97, 72},
{29, 110, 71, 24, 105, 75, 17, 117, 73},
{24, 102, 87, 24, 105, 75, 35, 97, 72},
{24, 105, 75, 24, 102, 87, 12, 110, 88},
{49, 125, 99, 39, 116, 106, 52, 112, 108},
{39, 116, 106, 49, 125, 99, 37, 131, 100},
{38, 134, 96, 37, 131, 100, 50, 128, 96},
{37, 131, 100, 38, 134, 96, 28, 143, 98},
{28, 143, 98, 27, 140, 100, 37, 131, 100},
{42, 123, 69, 32, 113, 70, 30, 129, 72},
{20, 120, 72, 30, 129, 72, 32, 113, 70},
{30, 129, 72, 20, 120, 72, 12, 130, 75},
{12, 113, 77, 17, 117, 73, 24, 105, 75},
{17, 117, 73, 12, 113, 77, 9, 128, 76},
{12, 110, 88, 12, 113, 77, 24, 105, 75},
{12, 113, 77, 12, 110, 88, 5, 121, 90},
{37, 131, 100, 27, 123, 106, 39, 116, 106},
{27, 123, 106, 37, 131, 100, 27, 140, 100},
{38, 134, 96, 38, 137, 85, 28, 143, 98},
{28, 146, 87, 28, 143, 98, 38, 137, 85},
{12, 130, 75, 20, 139, 75, 30, 129, 72},
{20, 139, 75, 12, 130, 75, 7, 140, 78},
{5, 124, 80, 9, 128, 76, 12, 113, 77},
{5, 121, 90, 5, 124, 80, 12, 113, 77},
{5, 124, 80, 5, 121, 90, 0, 134, 91},
{27, 140, 100, 18, 133, 106, 27, 123, 106},
{28, 143, 98, 28, 146, 87, 22, 148, 97},
{23, 151, 88, 22, 148, 97, 28, 146, 87},
{7, 140, 78, 15, 146, 78, 20, 139, 75},
{15, 146, 78, 7, 140, 78, 6, 149, 82},
{6, 149, 82, 12, 151, 81, 15, 146, 78},
{12, 130, 75, 9, 128, 76, 7, 140, 78},
{9, 128, 76, 5, 124, 80, 7, 140, 78},
{0, 136, 83, 7, 140, 78, 5, 124, 80},
{0, 134, 91, 0, 136, 83, 5, 124, 80},
{0, 136, 83, 0, 134, 91, 0, 147, 92},
{9, 137, 104, 3, 135, 99, 10, 125, 102},
{3, 135, 99, 9, 137, 104, 4, 147, 100},
{4, 147, 100, 2, 147, 98, 3, 135, 99},
{18, 133, 106, 27, 140, 100, 13, 141, 104},
{21, 146, 100, 13, 141, 104, 27, 140, 100},
{22, 148, 97, 23, 151, 88, 20, 151, 96},
{21, 153, 89, 20, 151, 96, 23, 151, 88},
{0, 148, 86, 4, 149, 83, 7, 140, 78},
{7, 140, 78, 0, 136, 83, 0, 148, 86},
{0, 147, 92, 0, 148, 86, 0, 136, 83},
{0, 148, 86, 0, 147, 92, 3, 153, 92},
{13, 141, 104, 21, 146, 100, 12, 149, 102},
{19, 150, 98, 12, 149, 102, 21, 146, 100},
{20, 151, 96, 21, 153, 89, 18, 153, 95},
{18, 155, 90, 18, 153, 95, 21, 153, 89},
{18, 153, 95, 18, 155, 90, 6, 158, 92},
{13, 151, 82, 12, 151, 81, 13, 154, 85},
{7, 154, 85, 13, 154, 85, 12, 151, 81},
{13, 154, 85, 7, 154, 85, 6, 158, 92},
{4, 149, 83, 0, 148, 86, 3, 154, 88},
{3, 154, 88, 6, 154, 86, 4, 149, 83},
{6, 154, 86, 3, 154, 88, 6, 158, 92},
{3, 153, 92, 3, 154, 88, 0, 148, 86},
{3, 154, 88, 3, 153, 92, 6, 158, 92},
{4, 147, 100, 7, 147, 102, 5, 152, 97},
{8, 152, 99, 5, 152, 97, 7, 147, 102},
{5, 152, 97, 8, 152, 99, 6, 158, 92},
{12, 149, 102, 19, 150, 98, 12, 153, 99},
{17, 153, 96, 12, 153, 99, 19, 150, 98},
{12, 153, 99, 17, 153, 96, 6, 158, 92},
{168, 130, 76, 164, 132, 80, 167, 132, 81},
{167, 132, 81, 164, 132, 80, 166, 133, 88},
{163, 132, 102, 154, 129, 114, 161, 129, 113},
{161, 129, 113, 154, 129, 114, 159, 120, 120},
{164, 96, 109, 160, 96, 104, 166, 94, 105},
{168, 92, 97, 164, 93, 95, 168, 92, 95},
{168, 92, 95, 164, 93, 95, 169, 92, 92},
{162, 131, 78, 164, 132, 80, 168, 130, 76},
{166, 133, 88, 164, 132, 80, 154, 134, 94},
{154, 134, 94, 153, 133, 96, 164, 134, 96},
{153, 133, 96, 154, 129, 114, 163, 132, 102},
{164, 134, 96, 153, 133, 96, 163, 132, 102},
{159, 120, 120, 154, 129, 114, 145, 117, 112},
{153, 105, 112, 160, 96, 104, 164, 96, 109},
{162, 101, 117, 153, 105, 112, 164, 96, 109},
{164, 93, 95, 168, 92, 97, 166, 94, 105},
{166, 94, 105, 160, 96, 104, 164, 93, 95},
{166, 127, 72, 162, 131, 78, 168, 130, 76},
{169, 125, 71, 166, 127, 72, 168, 130, 76},
{154, 134, 94, 164, 134, 96, 166, 133, 88},
{162, 101, 117, 151, 107, 113, 153, 105, 112},
{159, 111, 120, 151, 107, 113, 162, 101, 117},
{159, 111, 120, 145, 117, 112, 151, 107, 113},
{145, 117, 112, 159, 111, 120, 159, 120, 120},
{169, 125, 71, 168, 130, 76, 177, 125, 72},
{176, 130, 77, 177, 125, 72, 168, 130, 76},
{168, 130, 76, 167, 132, 81, 176, 130, 77},
{175, 133, 83, 176, 130, 77, 167, 132, 81},
{167, 132, 81, 166, 133, 88, 175, 133, 83},
{172, 134, 98, 175, 133, 83, 166, 133, 88},
{166, 133, 88, 164, 134, 96, 172, 134, 98},
{164, 134, 96, 163, 132, 102, 172, 134, 98},
{169, 129, 116, 172, 134, 98, 163, 132, 102},
{163, 132, 102, 161, 129, 113, 169, 129, 116},
{161, 129, 113, 159, 120, 120, 169, 129, 116},
{167, 120, 123, 169, 129, 116, 159, 120, 120},
{159, 120, 120, 159, 111, 120, 167, 120, 123},
{167, 111, 123, 167, 120, 123, 159, 111, 120},
{159, 111, 120, 162, 101, 117, 167, 111, 123},
{169, 100, 119, 167, 111, 123, 162, 101, 117},
{162, 101, 117, 164, 96, 109, 169, 100, 119},
{173, 93, 108, 169, 100, 119, 164, 96, 109},
{164, 96, 109, 166, 94, 105, 173, 93, 108},
{166, 94, 105, 168, 92, 97, 173, 93, 108},
{176, 91, 97, 173, 93, 108, 168, 92, 97},
{168, 92, 97, 168, 92, 95, 176, 91, 97},
{168, 92, 95, 169, 92, 92, 176, 91, 97},
{178, 95, 82, 176, 91, 97, 169, 92, 92},
{177, 116, 67, 177, 125, 72, 189, 121, 73},
{177, 125, 72, 176, 130, 77, 188, 125, 79},
{188, 125, 79, 189, 121, 73, 177, 125, 72},
{176, 130, 77, 175, 133, 83, 187, 128, 85},
{187, 128, 85, 188, 125, 79, 176, 130, 77},
{175, 133, 83, 172, 134, 98, 184, 130, 101},
{184, 130, 101, 187, 128, 85, 175, 133, 83},
{172, 134, 98, 169, 129, 116, 184, 130, 101},
{180, 125, 120, 184, 130, 101, 169, 129, 116},
{169, 129, 116, 167, 120, 123, 180, 125, 120},
{178, 115, 127, 180, 125, 120, 167, 120, 123},
{167, 120, 123, 167, 111, 123, 178, 115, 127},
{178, 105, 128, 178, 115, 127, 167, 111, 123},
{167, 111, 123, 169, 100, 119, 178, 105, 128},
{180, 93, 123, 178, 105, 128, 169, 100, 119},
{169, 100, 119, 173, 93, 108, 180, 93, 123},
{184, 86, 111, 180, 93, 123, 173, 93, 108},
{173, 93, 108, 176, 91, 97, 184, 86, 111},
{187, 83, 100, 184, 86, 111, 176, 91, 97},
{176, 91, 97, 178, 95, 82, 190, 88, 84},
{190, 88, 84, 187, 83, 100, 176, 91, 97},
{178, 95, 82, 179, 99, 76, 190, 93, 77},
{190, 93, 77, 190, 88, 84, 178, 95, 82},
{179, 99, 76, 178, 113, 67, 190, 108, 67},
{190, 108, 67, 190, 93, 77, 179, 99, 76},
{189, 121, 73, 188, 125, 79, 197, 117, 82},
{197, 117, 82, 197, 112, 77, 189, 121, 73},
{188, 125, 79, 187, 128, 85, 196, 119, 88},
{196, 119, 88, 197, 117, 82, 188, 125, 79},
{187, 128, 85, 184, 130, 101, 194, 120, 102},
{194, 120, 102, 196, 119, 88, 187, 128, 85},
{184, 130, 101, 180, 125, 120, 194, 120, 102},
{190, 116, 118, 194, 120, 102, 180, 125, 120},
{180, 125, 120, 178, 115, 127, 190, 116, 118},
{188, 107, 124, 190, 116, 118, 178, 115, 127},
{178, 115, 127, 178, 105, 128, 188, 107, 124},
{186, 99, 125, 188, 107, 124, 178, 105, 128},
{178, 105, 128, 180, 93, 123, 186, 99, 125},
{188, 89, 121, 186, 99, 125, 180, 93, 123},
{180, 93, 123, 184, 86, 111, 188, 89, 121},
{190, 82, 109, 188, 89, 121, 184, 86, 111},
{184, 86, 111, 187, 83, 100, 190, 82, 109},
{192, 80, 100, 190, 82, 109, 187, 83, 100},
{187, 83, 100, 190, 88, 84, 195, 84, 86},
{195, 84, 86, 192, 80, 100, 187, 83, 100},
{190, 88, 84, 190, 93, 77, 196, 88, 80},
{196, 88, 80, 195, 84, 86, 190, 88, 84},
{190, 93, 77, 190, 108, 67, 197, 101, 72},
{197, 101, 72, 196, 88, 80, 190, 93, 77},
{197, 112, 77, 197, 117, 82, 203, 106, 86},
{203, 106, 86, 203, 104, 82, 197, 112, 77},
{197, 117, 82, 196, 119, 88, 203, 108, 91},
{203, 108, 91, 203, 106, 86, 197, 117, 82},
{196, 119, 88, 194, 120, 102, 202, 109, 102},
{202, 109, 102, 203, 108, 91, 196, 119, 88},
{194, 120, 102, 190, 116, 118, 198, 106, 114},
{198, 106, 114, 202, 109, 102, 194, 120, 102},
{190, 116, 118, 188, 107, 124, 198, 106, 114},
{195, 99, 119, 198, 106, 114, 188, 107, 124},
{188, 107, 124, 186, 99, 125, 195, 99, 119},
{193, 93, 119, 195, 99, 119, 186, 99, 125},
{186, 99, 125, 188, 89, 121, 193, 93, 119},
{193, 85, 116, 193, 93, 119, 188, 89, 121},
{188, 89, 121, 190, 82, 109, 193, 85, 116},
{194, 79, 107, 193, 85, 116, 190, 82, 109},
{190, 82, 109, 192, 80, 100, 194, 79, 107},
{195, 78, 99, 194, 79, 107, 192, 80, 100},
{192, 80, 100, 195, 84, 86, 198, 81, 88},
{198, 81, 88, 195, 78, 99, 192, 80, 100},
{195, 84, 86, 196, 88, 80, 199, 85, 84},
{199, 85, 84, 198, 81, 88, 195, 84, 86},
{196, 88, 80, 197, 101, 72, 201, 95, 78},
{201, 95, 78, 199, 85, 84, 196, 88, 80},
{203, 104, 82, 203, 106, 86, 207, 95, 90},
{207, 95, 90, 206, 94, 87, 203, 104, 82},
{203, 106, 86, 203, 108, 91, 207, 96, 93},
{207, 96, 93, 207, 95, 90, 203, 106, 86},
{203, 108, 91, 202, 109, 102, 207, 97, 101},
{207, 97, 101, 207, 96, 93, 203, 108, 91},
{202, 109, 102, 198, 106, 114, 204, 94, 110},
{204, 94, 110, 207, 97, 101, 202, 109, 102},
{198, 106, 114, 195, 99, 119, 204, 94, 110},
{201, 90, 113, 204, 94, 110, 195, 99, 119},
{195, 99, 119, 193, 93, 119, 201, 90, 113},
{198, 86, 112, 201, 90, 113, 193, 93, 119},
{193, 93, 119, 193, 85, 116, 198, 86, 112},
{196, 81, 110, 198, 86, 112, 193, 85, 116},
{193, 85, 116, 194, 79, 107, 196, 81, 110},
{196, 78, 103, 196, 81, 110, 194, 79, 107},
{194, 79, 107, 195, 78, 99, 196, 78, 103},
{196, 77, 98, 196, 78, 103, 195, 78, 99},
{195, 78, 99, 198, 81, 88, 198, 79, 90},
{198, 79, 90, 196, 77, 98, 195, 78, 99},
{198, 81, 88, 199, 85, 84, 200, 82, 87},
{200, 82, 87, 198, 79, 90, 198, 81, 88},
{199, 85, 84, 201, 95, 78, 203, 89, 84},
{203, 89, 84, 200, 82, 87, 199, 85, 84},
{206, 94, 87, 207, 95, 90, 207, 89, 92},
{207, 89, 92, 206, 88, 89, 206, 94, 87},
{207, 95, 90, 207, 96, 93, 208, 90, 94},
{208, 90, 94, 207, 89, 92, 207, 95, 90},
{207, 96, 93, 207, 97, 101, 207, 90, 100},
{207, 90, 100, 208, 90, 94, 207, 96, 93},
{207, 97, 101, 204, 94, 110, 205, 88, 106},
{205, 88, 106, 207, 90, 100, 207, 97, 101},
{204, 94, 110, 201, 90, 113, 205, 88, 106},
{202, 85, 109, 205, 88, 106, 201, 90, 113},
{201, 90, 113, 198, 86, 112, 202, 85, 109},
{200, 83, 108, 202, 85, 109, 198, 86, 112},
{198, 86, 112, 196, 81, 110, 200, 83, 108},
{198, 79, 106, 200, 83, 108, 196, 81, 110},
{196, 81, 110, 196, 78, 103, 198, 79, 106},
{197, 77, 101, 198, 79, 106, 196, 78, 103},
{196, 78, 103, 196, 77, 98, 197, 77, 101},
{198, 76, 97, 197, 77, 101, 196, 77, 98},
{196, 77, 98, 198, 79, 90, 199, 78, 92},
{199, 78, 92, 198, 76, 97, 196, 77, 98},
{198, 79, 90, 200, 82, 87, 201, 80, 89},
{201, 80, 89, 199, 78, 92, 198, 79, 90},
{200, 82, 87, 203, 89, 84, 204, 85, 87},
{204, 85, 87, 201, 80, 89, 200, 82, 87},
{206, 88, 89, 207, 89, 92, 208, 84, 98},
{207, 89, 92, 208, 90, 94, 208, 84, 98},
{208, 90, 94, 207, 90, 100, 208, 84, 98},
{207, 90, 100, 205, 88, 106, 208, 84, 98},
{205, 88, 106, 202, 85, 109, 208, 84, 98},
{202, 85, 109, 200, 83, 108, 208, 84, 98},
{200, 83, 108, 198, 79, 106, 208, 84, 98},
{198, 79, 106, 197, 77, 101, 208, 84, 98},
{197, 77, 101, 198, 76, 97, 208, 84, 98},
{198, 76, 97, 199, 78, 92, 208, 84, 98},
{199, 78, 92, 201, 80, 89, 208, 84, 98},
{201, 80, 89, 204, 85, 87, 208, 84, 98},
{189, 121, 73, 190, 108, 67, 177, 116, 67},
{190, 108, 67, 189, 121, 73, 197, 112, 77},
{178, 113, 67, 177, 116, 67, 190, 108, 67},
{197, 112, 77, 197, 101, 72, 190, 108, 67},
{197, 101, 72, 197, 112, 77, 203, 104, 82},
{203, 104, 82, 201, 95, 78, 197, 101, 72},
{201, 95, 78, 203, 104, 82, 206, 94, 87},
{206, 94, 87, 203, 89, 84, 201, 95, 78},
{203, 89, 84, 206, 94, 87, 206, 88, 89},
{206, 88, 89, 204, 85, 87, 203, 89, 84},
{204, 85, 87, 206, 88, 89, 208, 84, 98},
{149, 47, 125, 149, 57, 126, 140, 52, 130},
{115, 46, 135, 97, 47, 136, 111, 40, 133},
{145, 44, 141, 154, 38, 134, 149, 47, 125},
{149, 47, 125, 140, 52, 130, 145, 44, 141},
{129, 54, 136, 118, 50, 136, 120, 43, 147},
{118, 50, 136, 115, 46, 135, 120, 43, 147},
{116, 39, 146, 120, 43, 147, 115, 46, 135},
{115, 46, 135, 111, 40, 133, 116, 39, 146},
{110, 33, 141, 116, 39, 146, 111, 40, 133},
{108, 20, 125, 108, 24, 133, 109, 30, 127},
{161, 30, 136, 162, 20, 128, 157, 35, 127},
{157, 35, 127, 154, 38, 134, 161, 30, 136},
{158, 35, 142, 161, 30, 136, 154, 38, 134},
{154, 38, 134, 145, 44, 141, 147, 41, 147},
{147, 41, 147, 158, 35, 142, 154, 38, 134},
{145, 44, 141, 132, 46, 148, 147, 41, 147},
{134, 44, 154, 147, 41, 147, 132, 46, 148},
{120, 43, 147, 116, 39, 146, 121, 39, 154},
{118, 34, 154, 121, 39, 154, 116, 39, 146},
{116, 39, 146, 110, 33, 141, 113, 27, 151},
{113, 27, 151, 118, 34, 154, 116, 39, 146},
{110, 33, 141, 108, 24, 133, 111, 14, 146},
{111, 14, 146, 113, 27, 151, 110, 33, 141},
{108, 24, 133, 108, 20, 125, 112, 8, 139},
{112, 8, 139, 111, 14, 146, 108, 24, 133},
{116, 4, 133, 112, 8, 139, 108, 20, 125},
{158, 13, 125, 159, 15, 127, 158, 12, 131},
{160, 14, 133, 158, 12, 131, 159, 15, 127},
{159, 15, 127, 162, 20, 128, 162, 18, 133},
{162, 18, 133, 160, 14, 133, 159, 15, 127},
{162, 20, 128, 161, 30, 136, 162, 18, 133},
{162, 28, 141, 162, 18, 133, 161, 30, 136},
{161, 30, 136, 158, 35, 142, 162, 28, 141},
{158, 32, 146, 162, 28, 141, 158, 35, 142},
{158, 35, 142, 147, 41, 147, 149, 38, 152},
{149, 38, 152, 158, 32, 146, 158, 35, 142},
{147, 41, 147, 134, 44, 154, 136, 40, 158},
{136, 40, 158, 149, 38, 152, 147, 41, 147},
{121, 39, 154, 118, 34, 154, 124, 36, 158},
{121, 31, 158, 124, 36, 158, 118, 34, 154},
{118, 34, 154, 113, 27, 151, 117, 25, 155},
{117, 25, 155, 121, 31, 158, 118, 34, 154},
{113, 27, 151, 111, 14, 146, 115, 13, 150},
{115, 13, 150, 117, 25, 155, 113, 27, 151},
{111, 14, 146, 112, 8, 139, 116, 8, 143},
{116, 8, 143, 115, 13, 150, 111, 14, 146},
{112, 8, 139, 116, 4, 133, 119, 3, 138},
{119, 3, 138, 116, 8, 143, 112, 8, 139},
{116, 4, 133, 122, 1, 125, 125, 0, 131},
{125, 0, 131, 119, 3, 138, 116, 4, 133},
{122, 1, 125, 125, 0, 121, 128, 0, 126},
{128, 0, 126, 125, 0, 131, 122, 1, 125},
{134, 0, 116, 136, 1, 116, 136, 0, 122},
{138, 0, 122, 136, 0, 122, 136, 1, 116},
{136, 1, 116, 139, 1, 116, 138, 0, 122},
{140, 1, 122, 138, 0, 122, 139, 1, 116},
{139, 1, 116, 147, 4, 119, 140, 1, 122},
{148, 3, 125, 140, 1, 122, 147, 4, 119},
{147, 4, 119, 150, 5, 121, 148, 3, 125},
{151, 5, 126, 148, 3, 125, 150, 5, 121},
{158, 12, 131, 160, 14, 133, 162, 11, 136},
{164, 13, 138, 162, 11, 136, 160, 14, 133},
{160, 14, 133, 162, 18, 133, 164, 13, 138},
{166, 17, 139, 164, 13, 138, 162, 18, 133},
{162, 18, 133, 162, 28, 141, 166, 17, 139},
{166, 26, 149, 166, 17, 139, 162, 28, 141},
{162, 28, 141, 158, 32, 146, 166, 26, 149},
{163, 30, 155, 166, 26, 149, 158, 32, 146},
{158, 32, 146, 149, 38, 152, 163, 30, 155},
{153, 36, 162, 163, 30, 155, 149, 38, 152},
{149, 38, 152, 136, 40, 158, 153, 36, 162},
{140, 39, 169, 153, 36, 162, 136, 40, 158},
{124, 36, 158, 121, 31, 158, 123, 30, 168},
{123, 30, 168, 127, 35, 169, 124, 36, 158},
{121, 31, 158, 117, 25, 155, 118, 23, 164},
{118, 23, 164, 123, 30, 168, 121, 31, 158},
{117, 25, 155, 115, 13, 150, 115, 12, 157},
{115, 12, 157, 118, 23, 164, 117, 25, 155},
{115, 13, 150, 116, 8, 143, 116, 7, 149},
{116, 7, 149, 115, 12, 157, 115, 13, 150},
{116, 8, 143, 119, 3, 138, 119, 3, 143},
{119, 3, 143, 116, 7, 149, 116, 8, 143},
{119, 3, 138, 125, 0, 131, 125, 1, 134},
{125, 1, 134, 119, 3, 143, 119, 3, 138},
{125, 0, 131, 128, 0, 126, 128, 1, 130},
{128, 1, 130, 125, 1, 134, 125, 0, 131},
{136, 0, 122, 138, 0, 122, 137, 1, 125},
{140, 2, 125, 137, 1, 125, 138, 0, 122},
{138, 0, 122, 140, 1, 122, 140, 2, 125},
{142, 2, 125, 140, 2, 125, 140, 1, 122},
{140, 1, 122, 148, 3, 125, 142, 2, 125},
{151, 4, 129, 142, 2, 125, 148, 3, 125},
{148, 3, 125, 151, 5, 126, 151, 4, 129},
{153, 5, 130, 151, 4, 129, 151, 5, 126},
{162, 11, 136, 154, 5, 131, 158, 12, 131},
{162, 11, 136, 164, 13, 138, 161, 10, 138},
{162, 11, 140, 161, 10, 138, 164, 13, 138},
{164, 13, 138, 166, 17, 139, 165, 15, 142},
{165, 15, 142, 162, 11, 140, 164, 13, 138},
{166, 17, 139, 166, 26, 149, 165, 23, 150},
{165, 23, 150, 165, 15, 142, 166, 17, 139},
{166, 26, 149, 163, 30, 155, 162, 27, 156},
{162, 27, 156, 165, 23, 150, 166, 26, 149},
{163, 30, 155, 153, 36, 162, 153, 32, 162},
{153, 32, 162, 162, 27, 156, 163, 30, 155},
{153, 36, 162, 140, 39, 169, 141, 34, 169},
{141, 34, 169, 153, 32, 162, 153, 36, 162},
{127, 35, 169, 123, 30, 168, 129, 31, 168},
{126, 26, 167, 129, 31, 168, 123, 30, 168},
{123, 30, 168, 118, 23, 164, 126, 26, 167},
{121, 21, 164, 126, 26, 167, 118, 23, 164},
{118, 23, 164, 115, 12, 157, 121, 21, 164},
{119, 11, 157, 121, 21, 164, 115, 12, 157},
{115, 12, 157, 116, 7, 149, 119, 11, 157},
{119, 6, 150, 119, 11, 157, 116, 7, 149},
{116, 7, 149, 119, 3, 143, 119, 6, 150},
{122, 3, 144, 119, 6, 150, 119, 3, 143},
{119, 3, 143, 125, 1, 134, 127, 1, 137},
{127, 1, 137, 122, 3, 144, 119, 3, 143},
{125, 1, 134, 128, 1, 130, 130, 0, 133},
{130, 0, 133, 127, 1, 137, 125, 1, 134},
{137, 1, 125, 140, 2, 125, 138, 1, 129},
{140, 1, 128, 138, 1, 129, 140, 2, 125},
{140, 2, 125, 142, 2, 125, 140, 1, 128},
{143, 1, 129, 140, 1, 128, 142, 2, 125},
{142, 2, 125, 151, 4, 129, 143, 1, 129},
{150, 3, 132, 143, 1, 129, 151, 4, 129},
{151, 4, 129, 153, 5, 130, 150, 3, 132},
{153, 4, 133, 150, 3, 132, 153, 5, 130},
{153, 5, 130, 154, 5, 131, 153, 4, 133},
{154, 4, 134, 153, 4, 133, 154, 5, 131},
{154, 5, 131, 162, 11, 136, 161, 10, 138},
{161, 10, 138, 154, 4, 134, 154, 5, 131},
{161, 10, 138, 162, 11, 140, 157, 14, 145},
{165, 15, 142, 165, 23, 150, 160, 17, 148},
{160, 23, 154, 160, 17, 148, 165, 23, 150},
{165, 23, 150, 162, 27, 156, 160, 23, 154},
{158, 25, 158, 160, 23, 154, 162, 27, 156},
{162, 27, 156, 153, 32, 162, 158, 25, 158},
{151, 29, 162, 158, 25, 158, 153, 32, 162},
{153, 32, 162, 141, 34, 169, 143, 30, 167},
{143, 30, 167, 151, 29, 162, 153, 32, 162},
{129, 31, 168, 126, 26, 167, 133, 25, 166},
{133, 25, 166, 135, 28, 167, 129, 31, 168},
{126, 26, 167, 121, 21, 164, 129, 21, 163},
{129, 21, 163, 133, 25, 166, 126, 26, 167},
{121, 21, 164, 119, 11, 157, 128, 14, 159},
{128, 14, 159, 129, 21, 163, 121, 21, 164},
{119, 11, 157, 119, 6, 150, 128, 11, 153},
{128, 11, 153, 128, 14, 159, 119, 11, 157},
{119, 6, 150, 122, 3, 144, 130, 9, 150},
{130, 9, 150, 128, 11, 153, 119, 6, 150},
{122, 3, 144, 127, 1, 137, 134, 8, 144},
{134, 8, 144, 130, 9, 150, 122, 3, 144},
{127, 1, 137, 130, 0, 133, 136, 7, 141},
{136, 7, 141, 134, 8, 144, 127, 1, 137},
{143, 1, 129, 150, 3, 132, 144, 8, 139},
{154, 4, 134, 161, 10, 138, 152, 10, 142},
{157, 14, 145, 152, 10, 142, 161, 10, 138},
{160, 17, 148, 160, 23, 154, 144, 13, 151},
{160, 23, 154, 158, 25, 158, 144, 13, 151},
{158, 25, 158, 151, 29, 162, 144, 13, 151},
{151, 29, 162, 143, 30, 167, 144, 13, 151},
{135, 28, 167, 133, 25, 166, 144, 13, 151},
{133, 25, 166, 129, 21, 163, 144, 13, 151},
{129, 21, 163, 128, 14, 159, 144, 13, 151},
{128, 14, 159, 128, 11, 153, 144, 13, 151},
{128, 11, 153, 130, 9, 150, 144, 13, 151},
{130, 9, 150, 134, 8, 144, 144, 13, 151},
{134, 8, 144, 136, 7, 141, 144, 13, 151},
{152, 10, 142, 157, 14, 145, 144, 13, 151},
{97, 47, 136, 115, 46, 135, 118, 50, 136},
{111, 40, 133, 97, 47, 136, 96, 28, 126},
{149, 47, 125, 166, 51, 101, 149, 57, 126},
{149, 47, 125, 165, 39, 99, 166, 51, 101},
{154, 38, 134, 157, 35, 127, 149, 47, 125},
{140, 52, 130, 129, 54, 136, 145, 44, 141},
{132, 46, 148, 145, 44, 141, 129, 54, 136},
{150, 71, 127, 131, 74, 137, 129, 54, 136},
{131, 74, 137, 100, 79, 140, 129, 54, 136},
{129, 54, 136, 149, 57, 126, 150, 71, 127},
{140, 52, 130, 149, 57, 126, 129, 54, 136},
{97, 59, 138, 129, 54, 136, 100, 79, 140},
{129, 54, 136, 97, 59, 138, 97, 47, 136},
{129, 54, 136, 97, 47, 136, 118, 50, 136},
{111, 40, 133, 109, 30, 127, 110, 33, 141},
{109, 30, 127, 111, 40, 133, 96, 28, 126},
{108, 24, 133, 110, 33, 141, 109, 30, 127},
{120, 43, 147, 132, 46, 148, 129, 54, 136},
{132, 46, 148, 120, 43, 147, 121, 39, 154},
{121, 39, 154, 134, 44, 154, 132, 46, 148},
{134, 44, 154, 121, 39, 154, 124, 36, 158},
{125, 0, 121, 134, 0, 116, 136, 0, 122},
{124, 36, 158, 136, 40, 158, 134, 44, 154},
{136, 40, 158, 124, 36, 158, 127, 35, 169},
{136, 0, 122, 128, 0, 126, 125, 0, 121},
{128, 0, 126, 136, 0, 122, 137, 1, 125},
{150, 5, 121, 158, 13, 125, 151, 5, 126},
{158, 12, 131, 151, 5, 126, 158, 13, 125},
{151, 5, 126, 158, 12, 131, 154, 5, 131},
{154, 5, 131, 153, 5, 130, 151, 5, 126},
{127, 35, 169, 140, 39, 169, 136, 40, 158},
{140, 39, 169, 127, 35, 169, 129, 31, 168},
{137, 1, 125, 128, 1, 130, 128, 0, 126},
{128, 1, 130, 137, 1, 125, 138, 1, 129},
{129, 31, 168, 141, 34, 169, 140, 39, 169},
{141, 34, 169, 129, 31, 168, 135, 28, 167},
{138, 1, 129, 130, 0, 133, 128, 1, 130},
{162, 11, 140, 165, 15, 142, 157, 14, 145},
{160, 17, 148, 157, 14, 145, 165, 15, 142},
{157, 14, 145, 160, 17, 148, 144, 13, 151},
{135, 28, 167, 143, 30, 167, 141, 34, 169},
{143, 30, 167, 135, 28, 167, 144, 13, 151},
{130, 0, 133, 138, 1, 129, 136, 7, 141},
{144, 8, 139, 136, 7, 141, 138, 1, 129},
{138, 1, 129, 140, 1, 128, 144, 8, 139},
{140, 1, 128, 143, 1, 129, 144, 8, 139},
{136, 7, 141, 144, 8, 139, 144, 13, 151},
{152, 10, 142, 144, 8, 139, 150, 3, 132},
{144, 8, 139, 152, 10, 142, 144, 13, 151},
{150, 3, 132, 153, 4, 133, 152, 10, 142},
{153, 4, 133, 154, 4, 134, 152, 10, 142},
{87, 47, 134, 97, 47, 136, 83, 53, 134},
{68, 58, 131, 67, 58, 131, 67, 58, 131},
{90, 41, 132, 87, 47, 134, 88, 39, 140},
{85, 45, 141, 88, 39, 140, 87, 47, 134},
{81, 51, 141, 85, 45, 141, 87, 47, 134},
{87, 47, 134, 83, 53, 134, 81, 51, 141},
{72, 56, 139, 81, 51, 141, 83, 53, 134},
{83, 53, 134, 74, 57, 132, 72, 56, 139},
{74, 57, 132, 68, 58, 131, 72, 56, 139},
{65, 57, 138, 72, 56, 139, 68, 58, 131},
{68, 58, 131, 67, 58, 131, 65, 57, 138},
{61, 57, 134, 65, 57, 138, 67, 58, 131},
{49, 45, 122, 53, 53, 126, 55, 54, 119},
{55, 54, 119, 52, 47, 115, 49, 45, 122},
{49, 41, 120, 49, 45, 122, 52, 47, 115},
{88, 39, 140, 85, 45, 141, 86, 38, 151},
{84, 44, 151, 86, 38, 151, 85, 45, 141},
{85, 45, 141, 81, 51, 141, 80, 51, 149},
{80, 51, 149, 84, 44, 151, 85, 45, 141},
{81, 51, 141, 72, 56, 139, 71, 56, 146},
{71, 56, 146, 80, 51, 149, 81, 51, 141},
{72, 56, 139, 65, 57, 138, 71, 56, 146},
{63, 57, 144, 71, 56, 146, 65, 57, 138},
{65, 57, 138, 61, 57, 134, 59, 57, 140},
{59, 57, 140, 63, 57, 144, 65, 57, 138},
{53, 53, 126, 49, 45, 122, 49, 50, 134},
{45, 42, 133, 49, 50, 134, 49, 45, 122},
{49, 45, 122, 49, 41, 120, 45, 42, 133},
{44, 36, 132, 45, 42, 133, 49, 41, 120},
{81, 20, 149, 72, 7, 142, 85, 24, 131},
{86, 38, 151, 84, 44, 151, 84, 39, 157},
{82, 45, 157, 84, 39, 157, 84, 44, 151},
{84, 44, 151, 80, 51, 149, 78, 51, 155},
{78, 51, 155, 82, 45, 157, 84, 44, 151},
{80, 51, 149, 71, 56, 146, 69, 56, 152},
{69, 56, 152, 78, 51, 155, 80, 51, 149},
{71, 56, 146, 63, 57, 144, 69, 56, 152},
{62, 57, 150, 69, 56, 152, 63, 57, 144},
{63, 57, 144, 59, 57, 140, 57, 57, 146},
{57, 57, 146, 62, 57, 150, 63, 57, 144},
{49, 50, 134, 45, 42, 133, 43, 42, 139},
{43, 42, 139, 48, 51, 141, 49, 50, 134},
{45, 42, 133, 44, 36, 132, 43, 37, 139},
{43, 37, 139, 43, 42, 139, 45, 42, 133},
{44, 36, 132, 43, 26, 134, 43, 37, 139},
{41, 27, 140, 43, 37, 139, 43, 26, 134},
{43, 26, 134, 46, 16, 133, 45, 17, 139},
{45, 17, 139, 41, 27, 140, 43, 26, 134},
{46, 16, 133, 53, 7, 132, 52, 9, 138},
{52, 9, 138, 45, 17, 139, 46, 16, 133},
{53, 7, 132, 59, 4, 133, 58, 5, 139},
{58, 5, 139, 52, 9, 138, 53, 7, 132},
{59, 4, 133, 67, 2, 135, 66, 3, 141},
{66, 3, 141, 58, 5, 139, 59, 4, 133},
{67, 2, 135, 72, 7, 142, 66, 3, 141},
{71, 8, 148, 66, 3, 141, 72, 7, 142},
{72, 7, 142, 81, 20, 149, 71, 8, 148},
{80, 21, 155, 71, 8, 148, 81, 20, 149},
{84, 39, 157, 82, 45, 157, 85, 41, 167},
{82, 47, 168, 85, 41, 167, 82, 45, 157},
{82, 45, 157, 78, 51, 155, 77, 54, 166},
{77, 54, 166, 82, 47, 168, 82, 45, 157},
{78, 51, 155, 69, 56, 152, 67, 60, 163},
{67, 60, 163, 77, 54, 166, 78, 51, 155},
{69, 56, 152, 62, 57, 150, 67, 60, 163},
{59, 61, 161, 67, 60, 163, 62, 57, 150},
{48, 51, 141, 43, 42, 139, 40, 46, 147},
{40, 46, 147, 45, 55, 150, 48, 51, 141},
{43, 42, 139, 43, 37, 139, 39, 40, 146},
{39, 40, 146, 40, 46, 147, 43, 42, 139},
{43, 37, 139, 41, 27, 140, 38, 29, 146},
{38, 29, 146, 39, 40, 146, 43, 37, 139},
{41, 27, 140, 45, 17, 139, 43, 19, 144},
{43, 19, 144, 38, 29, 146, 41, 27, 140},
{45, 17, 139, 52, 9, 138, 51, 10, 142},
{51, 10, 142, 43, 19, 144, 45, 17, 139},
{52, 9, 138, 58, 5, 139, 57, 6, 142},
{57, 6, 142, 51, 10, 142, 52, 9, 138},
{58, 5, 139, 66, 3, 141, 57, 6, 142},
{66, 4, 144, 57, 6, 142, 66, 3, 141},
{66, 3, 141, 71, 8, 148, 66, 4, 144},
{71, 9, 152, 66, 4, 144, 71, 8, 148},
{71, 8, 148, 80, 21, 155, 71, 9, 152},
{80, 22, 162, 71, 9, 152, 80, 21, 155},
{85, 41, 167, 82, 47, 168, 78, 44, 170},
{78, 44, 170, 81, 38, 169, 85, 41, 167},
{82, 47, 168, 77, 54, 166, 74, 50, 168},
{74, 50, 168, 78, 44, 170, 82, 47, 168},
{77, 54, 166, 67, 60, 163, 65, 55, 166},
{65, 55, 166, 74, 50, 168, 77, 54, 166},
{67, 60, 163, 59, 61, 161, 65, 55, 166},
{58, 56, 164, 65, 55, 166, 59, 61, 161},
{54, 56, 160, 58, 56, 164, 59, 61, 161},
{45, 55, 150, 40, 46, 147, 45, 50, 153},
{41, 42, 151, 45, 50, 153, 40, 46, 147},
{40, 46, 147, 39, 40, 146, 41, 42, 151},
{40, 37, 149, 41, 42, 151, 39, 40, 146},
{39, 40, 146, 38, 29, 146, 40, 37, 149},
{39, 27, 149, 40, 37, 149, 38, 29, 146},
{38, 29, 146, 43, 19, 144, 39, 27, 149},
{43, 18, 147, 39, 27, 149, 43, 19, 144},
{43, 19, 144, 51, 10, 142, 51, 10, 145},
{51, 10, 145, 43, 18, 147, 43, 19, 144},
{51, 10, 142, 57, 6, 142, 56, 6, 145},
{56, 6, 145, 51, 10, 145, 51, 10, 142},
{57, 6, 142, 66, 4, 144, 64, 5, 147},
{64, 5, 147, 56, 6, 145, 57, 6, 142},
{66, 4, 144, 71, 9, 152, 64, 5, 147},
{69, 9, 155, 64, 5, 147, 71, 9, 152},
{71, 9, 152, 80, 22, 162, 77, 21, 164},
{77, 21, 164, 69, 9, 155, 71, 9, 152},
{81, 38, 169, 78, 44, 170, 76, 36, 170},
{74, 41, 171, 76, 36, 170, 78, 44, 170},
{78, 44, 170, 74, 50, 168, 70, 46, 170},
{70, 46, 170, 74, 41, 171, 78, 44, 170},
{74, 50, 168, 65, 55, 166, 70, 46, 170},
{63, 50, 168, 70, 46, 170, 65, 55, 166},
{65, 55, 166, 58, 56, 164, 63, 50, 168},
{57, 51, 167, 63, 50, 168, 58, 56, 164},
{45, 50, 153, 41, 42, 151, 46, 47, 158},
{43, 40, 155, 46, 47, 158, 41, 42, 151},
{41, 42, 151, 40, 37, 149, 43, 36, 154},
{43, 36, 154, 43, 40, 155, 41, 42, 151},
{40, 37, 149, 39, 27, 149, 43, 36, 154},
{42, 28, 153, 43, 36, 154, 39, 27, 149},
{39, 27, 149, 43, 18, 147, 45, 21, 151},
{45, 21, 151, 42, 28, 153, 39, 27, 149},
{43, 18, 147, 51, 10, 145, 52, 14, 149},
{52, 14, 149, 45, 21, 151, 43, 18, 147},
{51, 10, 145, 56, 6, 145, 56, 11, 149},
{56, 11, 149, 52, 14, 149, 51, 10, 145},
{56, 6, 145, 64, 5, 147, 63, 10, 151},
{63, 10, 151, 56, 11, 149, 56, 6, 145},
{64, 5, 147, 69, 9, 155, 63, 10, 151},
{66, 13, 157, 63, 10, 151, 69, 9, 155},
{69, 9, 155, 77, 21, 164, 66, 13, 157},
{73, 22, 165, 66, 13, 157, 77, 21, 164},
{76, 36, 170, 74, 41, 171, 69, 37, 169},
{69, 37, 169, 70, 34, 168, 76, 36, 170},
{74, 41, 171, 70, 46, 170, 66, 41, 168},
{66, 41, 168, 69, 37, 169, 74, 41, 171},
{70, 46, 170, 63, 50, 168, 66, 41, 168},
{61, 44, 167, 66, 41, 168, 63, 50, 168},
{63, 50, 168, 57, 51, 167, 61, 44, 167},
{57, 45, 166, 61, 44, 167, 57, 51, 167},
{54, 45, 163, 57, 45, 166, 57, 51, 167},
{46, 47, 158, 43, 40, 155, 49, 42, 159},
{47, 37, 158, 49, 42, 159, 43, 40, 155},
{43, 40, 155, 43, 36, 154, 47, 37, 158},
{46, 34, 156, 47, 37, 158, 43, 36, 154},
{43, 36, 154, 42, 28, 153, 46, 34, 156},
{46, 28, 156, 46, 34, 156, 42, 28, 153},
{42, 28, 153, 45, 21, 151, 48, 23, 155},
{48, 23, 155, 46, 28, 156, 42, 28, 153},
{45, 21, 151, 52, 14, 149, 53, 18, 153},
{53, 18, 153, 48, 23, 155, 45, 21, 151},
{52, 14, 149, 56, 11, 149, 56, 16, 153},
{56, 16, 153, 53, 18, 153, 52, 14, 149},
{56, 11, 149, 63, 10, 151, 61, 15, 154},
{61, 15, 154, 56, 16, 153, 56, 11, 149},
{63, 10, 151, 66, 13, 157, 61, 15, 154},
{63, 17, 159, 61, 15, 154, 66, 13, 157},
{66, 13, 157, 73, 22, 165, 63, 17, 159},
{68, 24, 165, 63, 17, 159, 73, 22, 165},
{70, 34, 168, 69, 37, 169, 57, 39, 165},
{69, 37, 169, 66, 41, 168, 57, 39, 165},
{66, 41, 168, 61, 44, 167, 57, 39, 165},
{61, 44, 167, 57, 45, 166, 57, 39, 165},
{57, 45, 166, 54, 45, 163, 57, 39, 165},
{49, 42, 159, 47, 37, 158, 57, 39, 165},
{47, 37, 158, 46, 34, 156, 57, 39, 165},
{46, 34, 156, 46, 28, 156, 57, 39, 165},
{46, 28, 156, 48, 23, 155, 57, 39, 165},
{48, 23, 155, 53, 18, 153, 57, 39, 165},
{53, 18, 153, 56, 16, 153, 57, 39, 165},
{56, 16, 153, 61, 15, 154, 57, 39, 165},
{61, 15, 154, 63, 17, 159, 57, 39, 165},
{63, 17, 159, 68, 24, 165, 57, 39, 165},
{83, 53, 134, 97, 47, 136, 97, 59, 138},
{67, 58, 131, 68, 58, 131, 74, 57, 132},
{74, 57, 132, 83, 53, 134, 97, 59, 138},
{97, 59, 138, 67, 58, 131, 74, 57, 132},
{50, 84, 114, 47, 60, 112, 63, 59, 127},
{47, 60, 112, 47, 48, 110, 52, 47, 115},
{55, 54, 119, 47, 60, 112, 52, 47, 115},
{88, 33, 127, 96, 28, 126, 90, 41, 132},
{97, 47, 136, 87, 47, 134, 90, 41, 132},
{96, 28, 126, 97, 47, 136, 90, 41, 132},
{63, 59, 127, 67, 58, 131, 50, 84, 114},
{67, 58, 131, 67, 58, 131, 63, 59, 127},
{63, 59, 127, 55, 54, 119, 53, 53, 126},
{63, 59, 127, 47, 60, 112, 55, 54, 119},
{87, 27, 123, 96, 28, 126, 88, 33, 127},
{67, 58, 131, 63, 59, 127, 61, 57, 134},
{53, 53, 126, 61, 57, 134, 63, 59, 127},
{61, 57, 134, 53, 53, 126, 49, 50, 134},
{87, 27, 123, 88, 33, 127, 85, 24, 131},
{88, 33, 127, 90, 41, 132, 85, 24, 131},
{88, 39, 140, 85, 24, 131, 90, 41, 132},
{49, 50, 134, 59, 57, 140, 61, 57, 134},
{59, 57, 140, 49, 50, 134, 48, 51, 141},
{85, 24, 131, 88, 39, 140, 81, 20, 149},
{86, 38, 151, 81, 20, 149, 88, 39, 140},
{48, 51, 141, 57, 57, 146, 59, 57, 140},
{57, 57, 146, 48, 51, 141, 45, 55, 150},
{45, 55, 150, 54, 61, 157, 57, 57, 146},
{81, 20, 149, 86, 38, 151, 80, 21, 155},
{84, 39, 157, 80, 21, 155, 86, 38, 151},
{62, 57, 150, 57, 57, 146, 54, 61, 157},
{54, 61, 157, 59, 61, 161, 62, 57, 150},
{59, 61, 161, 54, 61, 157, 54, 56, 160},
{80, 21, 155, 84, 39, 157, 80, 22, 162},
{85, 41, 167, 80, 22, 162, 84, 39, 157},
{80, 22, 162, 85, 41, 167, 81, 38, 169},
{54, 61, 157, 45, 55, 150, 54, 56, 160},
{45, 50, 153, 54, 56, 160, 45, 55, 150},
{54, 56, 160, 45, 50, 153, 46, 47, 158},
{46, 47, 158, 53, 51, 164, 54, 56, 160},
{81, 38, 169, 77, 21, 164, 80, 22, 162},
{77, 21, 164, 81, 38, 169, 76, 36, 170},
{58, 56, 164, 54, 56, 160, 53, 51, 164},
{53, 51, 164, 57, 51, 167, 58, 56, 164},
{57, 51, 167, 53, 51, 164, 54, 45, 163},
{76, 36, 170, 73, 22, 165, 77, 21, 164},
{73, 22, 165, 76, 36, 170, 70, 34, 168},
{53, 51, 164, 46, 47, 158, 54, 45, 163},
{49, 42, 159, 54, 45, 163, 46, 47, 158},
{54, 45, 163, 49, 42, 159, 57, 39, 165},
{70, 34, 168, 68, 24, 165, 73, 22, 165},
{68, 24, 165, 70, 34, 168, 57, 39, 165},
{92, 53, 30, 85, 53, 29, 91, 54, 29},
{89, 70, 28, 98, 80, 29, 87, 74, 23},
{98, 85, 23, 87, 74, 23, 98, 80, 29},
{112, 84, 24, 98, 85, 23, 98, 80, 29},
{98, 80, 29, 111, 79, 29, 112, 84, 24},
{115, 81, 24, 112, 84, 24, 111, 79, 29},
{111, 79, 29, 113, 76, 29, 115, 81, 24},
{119, 72, 25, 115, 81, 24, 113, 76, 29},
{113, 76, 29, 117, 68, 29, 119, 72, 25},
{120, 61, 26, 119, 72, 25, 117, 68, 29},
{117, 68, 29, 118, 62, 29, 120, 61, 26},
{120, 60, 27, 120, 61, 26, 118, 62, 29},
{118, 62, 29, 117, 60, 29, 120, 60, 27},
{117, 60, 29, 117, 58, 29, 120, 60, 27},
{118, 54, 29, 120, 60, 27, 117, 58, 29},
{117, 58, 29, 116, 53, 31, 118, 54, 29},
{112, 48, 33, 118, 54, 29, 116, 53, 31},
{116, 53, 31, 112, 49, 32, 112, 48, 33},
{112, 49, 32, 111, 48, 33, 112, 48, 33},
{97, 45, 34, 112, 48, 33, 111, 48, 33},
{92, 53, 30, 91, 54, 29, 90, 54, 28},
{91, 54, 29, 90, 59, 28, 90, 54, 28},
{88, 61, 25, 90, 54, 28, 90, 59, 28},
{90, 59, 28, 89, 64, 28, 88, 61, 25},
{86, 67, 24, 88, 61, 25, 89, 64, 28},
{86, 67, 24, 87, 74, 23, 88, 71, 10},
{89, 76, 12, 88, 71, 10, 87, 74, 23},
{87, 74, 23, 98, 85, 23, 89, 76, 12},
{98, 85, 16, 89, 76, 12, 98, 85, 23},
{98, 85, 23, 112, 84, 24, 111, 84, 16},
{111, 84, 16, 98, 85, 16, 98, 85, 23},
{112, 84, 24, 115, 81, 24, 113, 82, 15},
{113, 82, 15, 111, 84, 16, 112, 84, 24},
{115, 81, 24, 119, 72, 25, 116, 75, 12},
{116, 75, 12, 113, 82, 15, 115, 81, 24},
{119, 72, 25, 120, 61, 26, 117, 66, 9},
{117, 66, 9, 116, 75, 12, 119, 72, 25},
{120, 60, 27, 118, 54, 29, 116, 60, 9},
{118, 54, 29, 112, 48, 33, 111, 54, 9},
{111, 54, 9, 116, 60, 9, 118, 54, 29},
{112, 48, 33, 97, 45, 34, 98, 51, 9},
{98, 51, 9, 111, 54, 9, 112, 48, 33},
{97, 45, 34, 93, 48, 32, 98, 51, 9},
{95, 53, 9, 98, 51, 9, 93, 48, 32},
{93, 48, 32, 90, 54, 28, 95, 53, 9},
{92, 60, 8, 95, 53, 9, 90, 54, 28},
{90, 54, 28, 88, 61, 25, 92, 60, 8},
{90, 66, 9, 92, 60, 8, 88, 61, 25},
{88, 61, 25, 86, 67, 24, 90, 66, 9},
{88, 71, 10, 90, 66, 9, 86, 67, 24},
{88, 71, 10, 89, 76, 12, 92, 76, 6},
{92, 80, 9, 92, 76, 6, 89, 76, 12},
{89, 76, 12, 98, 85, 16, 92, 80, 9},
{99, 85, 13, 92, 80, 9, 98, 85, 16},
{98, 85, 16, 111, 84, 16, 108, 85, 13},
{108, 85, 13, 99, 85, 13, 98, 85, 16},
{111, 84, 16, 113, 82, 15, 109, 83, 11},
{109, 83, 11, 108, 85, 13, 111, 84, 16},
{113, 82, 15, 116, 75, 12, 112, 79, 8},
{112, 79, 8, 109, 83, 11, 113, 82, 15},
{116, 75, 12, 117, 66, 9, 113, 74, 4},
{113, 74, 4, 112, 79, 8, 116, 75, 12},
{116, 60, 9, 111, 54, 9, 108, 65, 2},
{108, 65, 2, 111, 69, 3, 116, 60, 9},
{111, 54, 9, 98, 51, 9, 99, 63, 2},
{99, 63, 2, 108, 65, 2, 111, 54, 9},
{98, 51, 9, 95, 53, 9, 99, 63, 2},
{96, 64, 2, 99, 63, 2, 95, 53, 9},
{95, 53, 9, 92, 60, 8, 96, 64, 2},
{94, 69, 3, 96, 64, 2, 92, 60, 8},
{92, 60, 8, 90, 66, 9, 94, 69, 3},
{93, 73, 4, 94, 69, 3, 90, 66, 9},
{90, 66, 9, 88, 71, 10, 93, 73, 4},
{92, 76, 6, 93, 73, 4, 88, 71, 10},
{92, 76, 6, 92, 80, 9, 94, 79, 5},
{95, 82, 6, 94, 79, 5, 92, 80, 9},
{92, 80, 9, 99, 85, 13, 95, 82, 6},
{99, 85, 10, 95, 82, 6, 99, 85, 13},
{99, 85, 13, 108, 85, 13, 106, 85, 9},
{106, 85, 9, 99, 85, 10, 99, 85, 13},
{108, 85, 13, 109, 83, 11, 107, 84, 8},
{107, 84, 8, 106, 85, 9, 108, 85, 13},
{109, 83, 11, 112, 79, 8, 109, 81, 6},
{109, 81, 6, 107, 84, 8, 109, 83, 11},
{112, 79, 8, 113, 74, 4, 109, 77, 3},
{109, 77, 3, 109, 81, 6, 112, 79, 8},
{111, 69, 3, 108, 65, 2, 106, 71, 1},
{106, 71, 1, 108, 74, 2, 111, 69, 3},
{108, 65, 2, 99, 63, 2, 99, 70, 1},
{99, 70, 1, 106, 71, 1, 108, 65, 2},
{99, 63, 2, 96, 64, 2, 99, 70, 1},
{98, 71, 1, 99, 70, 1, 96, 64, 2},
{96, 64, 2, 94, 69, 3, 98, 71, 1},
{96, 74, 2, 98, 71, 1, 94, 69, 3},
{94, 69, 3, 93, 73, 4, 96, 74, 2},
{95, 77, 3, 96, 74, 2, 93, 73, 4},
{93, 73, 4, 92, 76, 6, 95, 77, 3},
{94, 79, 5, 95, 77, 3, 92, 76, 6},
{94, 79, 5, 95, 82, 6, 102, 77, 0},
{95, 82, 6, 99, 85, 10, 102, 77, 0},
{99, 85, 10, 106, 85, 9, 102, 77, 0},
{106, 85, 9, 107, 84, 8, 102, 77, 0},
{107, 84, 8, 109, 81, 6, 102, 77, 0},
{109, 81, 6, 109, 77, 3, 102, 77, 0},
{108, 74, 2, 106, 71, 1, 102, 77, 0},
{106, 71, 1, 99, 70, 1, 102, 77, 0},
{99, 70, 1, 98, 71, 1, 102, 77, 0},
{98, 71, 1, 96, 74, 2, 102, 77, 0},
{96, 74, 2, 95, 77, 3, 102, 77, 0},
{95, 77, 3, 94, 79, 5, 102, 77, 0},
{89, 70, 28, 86, 70, 27, 86, 82, 29},
{98, 80, 29, 89, 70, 28, 86, 82, 29},
{86, 82, 29, 130, 81, 30, 98, 80, 29},
{111, 79, 29, 98, 80, 29, 130, 81, 30},
{130, 81, 30, 113, 76, 29, 111, 79, 29},
{130, 81, 30, 129, 68, 29, 117, 68, 29},
{113, 76, 29, 130, 81, 30, 117, 68, 29},
{85, 53, 29, 84, 59, 28, 90, 59, 28},
{91, 54, 29, 85, 53, 29, 90, 59, 28},
{90, 59, 28, 84, 59, 28, 89, 64, 28},
{84, 59, 28, 86, 70, 27, 89, 64, 28},
{86, 70, 27, 89, 70, 28, 89, 64, 28},
{89, 64, 28, 89, 70, 28, 86, 67, 24},
{87, 74, 23, 86, 67, 24, 89, 70, 28},
{86, 47, 32, 85, 53, 29, 92, 53, 30},
{90, 54, 28, 93, 48, 32, 92, 53, 30},
{97, 45, 34, 111, 48, 33, 90, 39, 35},
{93, 48, 32, 86, 47, 32, 92, 53, 30},
{90, 39, 35, 86, 47, 32, 93, 48, 32},
{93, 48, 32, 97, 45, 34, 90, 39, 35},
{120, 61, 26, 120, 60, 27, 117, 66, 9},
{116, 60, 9, 117, 66, 9, 120, 60, 27},
{117, 66, 9, 116, 60, 9, 111, 69, 3},
{111, 69, 3, 113, 74, 4, 117, 66, 9},
{113, 74, 4, 111, 69, 3, 108, 74, 2},
{108, 74, 2, 109, 77, 3, 113, 74, 4},
{109, 77, 3, 108, 74, 2, 102, 77, 0},
{87, 18, 112, 90, 19, 114, 87, 18, 113},
{84, 23, 119, 87, 27, 123, 81, 19, 121},
{85, 11, 86, 87, 11, 85, 86, 11, 91},
{89, 13, 98, 89, 13, 100, 86, 14, 101},
{88, 15, 106, 86, 14, 101, 89, 13, 100},
{87, 18, 112, 83, 17, 111, 88, 15, 106},
{86, 14, 101, 88, 15, 106, 83, 17, 111},
{83, 17, 111, 87, 18, 112, 87, 18, 113},
{79, 16, 122, 75, 14, 118, 81, 19, 121},
{81, 19, 121, 75, 14, 118, 84, 23, 119},
{83, 17, 111, 84, 23, 119, 75, 14, 118},
{89, 11, 94, 89, 13, 98, 85, 12, 93},
{86, 14, 101, 85, 12, 93, 89, 13, 98},
{86, 11, 91, 85, 12, 93, 85, 11, 86},
{83, 17, 111, 78, 14, 100, 86, 14, 101},
{85, 12, 93, 86, 14, 101, 78, 14, 100},
{94, 16, 107, 90, 19, 114, 87, 18, 112},
{88, 15, 106, 94, 16, 107, 87, 18, 112},
{85, 24, 131, 79, 16, 122, 81, 19, 121},
{81, 19, 121, 87, 27, 123, 85, 24, 131},
{72, 7, 142, 67, 2, 135, 77, 13, 122},
{67, 2, 135, 59, 4, 133, 69, 9, 120},
{86, 11, 91, 87, 11, 85, 97, 12, 85},
{94, 16, 107, 88, 15, 106, 89, 13, 100},
{89, 13, 98, 94, 16, 107, 89, 13, 100},
{84, 23, 119, 96, 28, 126, 87, 27, 123},
{87, 18, 113, 84, 23, 119, 83, 17, 111},
{87, 18, 113, 90, 19, 114, 84, 23, 119},
{90, 19, 114, 96, 28, 126, 84, 23, 119},
{77, 13, 122, 75, 14, 118, 79, 16, 122},
{79, 16, 122, 85, 24, 131, 77, 13, 122},
{85, 24, 131, 72, 7, 142, 77, 13, 122},
{77, 13, 122, 69, 9, 120, 75, 14, 118},
{77, 13, 122, 67, 2, 135, 69, 9, 120},
{89, 11, 94, 85, 12, 93, 86, 11, 91},
{97, 12, 85, 89, 11, 94, 86, 11, 91},
{116, 14, 79, 111, 13, 83, 108, 13, 78},
{116, 14, 79, 116, 14, 85, 111, 13, 83},
{97, 12, 85, 105, 14, 73, 108, 13, 78},
{118, 14, 76, 116, 14, 79, 108, 13, 78},
{108, 13, 78, 105, 14, 73, 118, 14, 76},
{135, 7, 111, 136, 1, 116, 134, 7, 111},
{118, 14, 85, 116, 14, 85, 118, 14, 84},
{119, 14, 76, 118, 14, 76, 119, 14, 76},
{119, 14, 76, 118, 14, 76, 119, 14, 76},
{119, 14, 80, 122, 14, 85, 118, 14, 84},
{118, 14, 84, 122, 14, 85, 118, 14, 85},
{119, 14, 76, 123, 15, 77, 119, 14, 76},
{119, 14, 76, 123, 15, 77, 119, 14, 76},
{122, 14, 85, 119, 14, 80, 123, 15, 77},
{123, 15, 77, 130, 16, 83, 122, 14, 85},
{129, 15, 88, 122, 14, 85, 130, 16, 83},
{129, 15, 88, 130, 16, 83, 135, 17, 88},
{143, 10, 113, 138, 8, 112, 140, 14, 108},
{130, 15, 95, 129, 15, 88, 135, 17, 88},
{134, 7, 111, 133, 7, 110, 134, 9, 109},
{134, 9, 109, 136, 16, 101, 140, 14, 108},
{134, 7, 111, 134, 9, 109, 135, 7, 111},
{140, 14, 108, 138, 8, 112, 134, 9, 109},
{135, 17, 88, 137, 17, 94, 130, 15, 95},
{137, 17, 94, 136, 16, 101, 130, 15, 95},
{141, 18, 96, 136, 16, 101, 137, 17, 94},
{140, 18, 90, 135, 17, 88, 139, 18, 86},
{135, 17, 88, 140, 18, 90, 137, 17, 94},
{141, 18, 96, 137, 17, 94, 140, 18, 90},
{140, 14, 108, 142, 18, 102, 145, 17, 109},
{141, 18, 96, 142, 18, 102, 136, 16, 101},
{142, 18, 102, 140, 14, 108, 136, 16, 101},
{139, 1, 116, 138, 8, 112, 143, 10, 113},
{143, 10, 113, 147, 4, 119, 139, 1, 116},
{134, 0, 116, 133, 7, 110, 134, 7, 111},
{134, 7, 111, 136, 1, 116, 134, 0, 116},
{116, 14, 79, 119, 14, 80, 118, 14, 84},
{118, 14, 84, 116, 14, 85, 116, 14, 79},
{119, 14, 76, 118, 14, 76, 116, 17, 65},
{150, 5, 121, 147, 4, 119, 143, 10, 113},
{140, 14, 108, 145, 17, 109, 143, 10, 113},
{135, 7, 111, 139, 1, 116, 136, 1, 116},
{138, 8, 112, 139, 1, 116, 135, 7, 111},
{135, 7, 111, 134, 9, 109, 138, 8, 112},
{119, 14, 76, 123, 15, 77, 119, 14, 80},
{119, 14, 80, 116, 14, 79, 119, 14, 76},
{116, 14, 79, 118, 14, 76, 119, 14, 76},
{84, 14, 70, 87, 13, 71, 81, 12, 75},
{79, 12, 83, 85, 12, 93, 77, 12, 91},
{76, 13, 97, 78, 14, 100, 77, 14, 100},
{77, 14, 100, 78, 14, 100, 76, 14, 102},
{73, 15, 111, 75, 14, 118, 71, 14, 115},
{71, 14, 115, 75, 14, 118, 65, 11, 117},
{56, 19, 78, 56, 20, 78, 56, 19, 78},
{56, 19, 78, 56, 20, 78, 56, 19, 77},
{63, 18, 70, 61, 22, 62, 67, 18, 66},
{84, 14, 70, 81, 16, 66, 84, 14, 70},
{74, 17, 64, 81, 16, 66, 77, 14, 72},
{81, 12, 75, 77, 14, 72, 84, 14, 70},
{81, 16, 66, 84, 14, 70, 77, 14, 72},
{81, 12, 79, 78, 12, 79, 81, 12, 78},
{81, 12, 78, 78, 12, 79, 81, 12, 75},
{77, 14, 72, 81, 12, 75, 78, 12, 79},
{69, 16, 71, 63, 18, 70, 67, 18, 66},
{77, 14, 72, 69, 16, 71, 74, 17, 64},
{67, 18, 66, 74, 17, 64, 69, 16, 71},
{56, 19, 77, 61, 17, 76, 56, 19, 78},
{56, 19, 78, 61, 17, 76, 56, 19, 78},
{69, 16, 71, 61, 17, 76, 63, 18, 70},
{60, 19, 71, 63, 18, 70, 61, 17, 76},
{76, 12, 84, 79, 12, 83, 77, 12, 91},
{76, 13, 97, 72, 13, 92, 77, 12, 91},
{77, 12, 91, 72, 13, 92, 76, 12, 84},
{67, 14, 85, 76, 12, 84, 72, 13, 92},
{67, 14, 85, 58, 17, 86, 61, 17, 76},
{61, 17, 76, 58, 17, 86, 56, 19, 78},
{77, 14, 100, 71, 14, 100, 76, 13, 97},
{72, 13, 92, 76, 13, 97, 71, 14, 100},
{71, 14, 100, 77, 14, 100, 76, 14, 102},
{76, 14, 102, 74, 15, 107, 71, 14, 100},
{65, 14, 112, 65, 11, 117, 65, 11, 117},
{65, 11, 117, 65, 14, 112, 71, 14, 115},
{73, 15, 111, 71, 14, 115, 65, 14, 112},
{71, 14, 100, 74, 15, 107, 65, 14, 112},
{73, 15, 111, 65, 14, 112, 74, 15, 107},
{71, 13, 78, 61, 17, 76, 69, 16, 71},
{78, 12, 79, 71, 13, 78, 77, 14, 72},
{69, 16, 71, 77, 14, 72, 71, 13, 78},
{71, 13, 78, 78, 12, 79, 76, 12, 84},
{76, 12, 84, 67, 14, 85, 71, 13, 78},
{61, 17, 76, 71, 13, 78, 67, 14, 85},
{58, 17, 86, 67, 14, 85, 64, 15, 93},
{72, 13, 92, 64, 15, 93, 67, 14, 85},
{64, 15, 93, 72, 13, 92, 71, 14, 100},
{89, 12, 79, 81, 12, 78, 81, 12, 75},
{81, 12, 75, 87, 13, 71, 89, 12, 79},
{89, 12, 79, 87, 11, 85, 81, 12, 79},
{81, 12, 78, 89, 12, 79, 81, 12, 79},
{85, 11, 86, 85, 12, 93, 79, 12, 83},
{85, 12, 93, 78, 14, 100, 76, 13, 97},
{77, 12, 91, 85, 12, 93, 76, 13, 97},
{78, 14, 100, 83, 17, 111, 74, 15, 107},
{76, 14, 102, 78, 14, 100, 74, 15, 107},
{83, 17, 111, 75, 14, 118, 73, 15, 111},
{74, 15, 107, 83, 17, 111, 73, 15, 111},
{69, 9, 120, 65, 11, 117, 65, 11, 117},
{65, 11, 117, 75, 14, 118, 69, 9, 120},
{65, 11, 117, 69, 9, 120, 59, 4, 133},
{56, 19, 77, 56, 20, 78, 53, 24, 69},
{61, 22, 62, 63, 18, 70, 60, 19, 71},
{60, 19, 71, 54, 23, 67, 61, 22, 62},
{75, 22, 56, 74, 17, 64, 67, 18, 66},
{67, 18, 66, 61, 22, 62, 75, 22, 56},
{85, 17, 61, 81, 16, 66, 74, 17, 64},
{74, 17, 64, 75, 22, 56, 85, 17, 61},
{81, 16, 66, 85, 17, 61, 84, 14, 70},
{87, 13, 71, 84, 14, 70, 84, 14, 70},
{85, 17, 61, 87, 13, 71, 84, 14, 70},
{87, 11, 85, 85, 11, 86, 79, 12, 83},
{78, 12, 79, 79, 12, 83, 76, 12, 84},
{81, 12, 79, 87, 11, 85, 79, 12, 83},
{79, 12, 83, 78, 12, 79, 81, 12, 79},
{58, 13, 118, 59, 4, 133, 53, 7, 132},
{65, 11, 117, 58, 13, 118, 65, 14, 112},
{65, 11, 117, 59, 4, 133, 58, 13, 118},
{60, 19, 71, 61, 17, 76, 56, 19, 77},
{53, 24, 69, 60, 19, 71, 56, 19, 77},
{60, 19, 71, 53, 24, 69, 54, 23, 67},
{79, 132, 65, 87, 139, 69, 85, 133, 61},
{88, 132, 59, 92, 133, 59, 89, 130, 55},
{80, 108, 38, 78, 102, 35, 77, 106, 37},
{73, 112, 45, 80, 108, 38, 77, 106, 37},
{89, 130, 55, 82, 126, 55, 88, 132, 59},
{85, 133, 61, 88, 132, 59, 82, 126, 55},
{85, 133, 61, 82, 126, 55, 79, 132, 65},
{89, 130, 55, 89, 124, 47, 82, 126, 55},
{85, 117, 42, 93, 119, 40, 87, 112, 37},
{73, 112, 45, 85, 117, 42, 80, 108, 38},
{87, 112, 37, 80, 108, 38, 85, 117, 42},
{85, 117, 42, 73, 112, 45, 82, 126, 55},
{82, 126, 55, 89, 124, 47, 85, 117, 42},
{93, 119, 40, 85, 117, 42, 89, 124, 47},
{81, 138, 72, 87, 139, 69, 79, 132, 65},
{92, 133, 59, 88, 132, 59, 85, 133, 61},
{85, 133, 61, 87, 139, 69, 92, 133, 59},
{89, 130, 55, 92, 133, 59, 98, 119, 39},
{89, 124, 47, 89, 130, 55, 98, 119, 39},
{98, 119, 39, 93, 119, 40, 89, 124, 47},
{98, 119, 39, 90, 102, 32, 87, 112, 37},
{93, 119, 40, 98, 119, 39, 87, 112, 37},
{90, 102, 32, 78, 102, 35, 80, 108, 38},
{87, 112, 37, 90, 102, 32, 80, 108, 38},
{34, 111, 69, 32, 113, 70, 34, 112, 69},
{34, 112, 69, 32, 113, 70, 37, 112, 69},
{68, 110, 48, 73, 112, 45, 69, 109, 44},
{69, 104, 41, 78, 102, 35, 68, 102, 40},
{44, 91, 67, 42, 90, 71, 43, 93, 68},
{43, 93, 68, 42, 90, 71, 41, 95, 70},
{31, 108, 70, 34, 111, 69, 36, 100, 71},
{43, 93, 68, 41, 95, 70, 41, 107, 68},
{41, 95, 70, 36, 100, 71, 41, 107, 68},
{37, 112, 69, 41, 107, 68, 34, 112, 69},
{34, 112, 69, 41, 107, 68, 34, 111, 69},
{36, 100, 71, 34, 111, 69, 41, 107, 68},
{49, 117, 66, 49, 105, 62, 45, 115, 67},
{41, 107, 68, 45, 115, 67, 49, 105, 62},
{46, 89, 62, 44, 91, 67, 49, 105, 62},
{44, 91, 67, 43, 93, 68, 49, 105, 62},
{41, 107, 68, 49, 105, 62, 43, 93, 68},
{59, 95, 45, 65, 96, 40, 60, 88, 41},
{68, 110, 48, 60, 109, 53, 64, 115, 56},
{49, 105, 62, 51, 92, 54, 46, 89, 62},
{68, 102, 40, 65, 96, 40, 66, 104, 44},
{59, 95, 45, 66, 104, 44, 65, 96, 40},
{68, 102, 40, 66, 104, 44, 69, 104, 41},
{69, 106, 41, 69, 104, 41, 66, 104, 44},
{69, 106, 41, 66, 104, 44, 69, 109, 44},
{60, 109, 53, 68, 110, 48, 66, 104, 44},
{69, 109, 44, 66, 104, 44, 68, 110, 48},
{66, 104, 44, 56, 101, 51, 60, 109, 53},
{51, 92, 54, 49, 105, 62, 56, 101, 51},
{60, 109, 53, 56, 101, 51, 49, 105, 62},
{51, 92, 54, 56, 101, 51, 59, 95, 45},
{56, 101, 51, 66, 104, 44, 59, 95, 45},
{32, 113, 70, 34, 111, 69, 31, 108, 70},
{31, 108, 70, 29, 110, 71, 32, 113, 70},
{37, 112, 69, 32, 113, 70, 42, 123, 69},
{73, 112, 45, 68, 110, 48, 64, 115, 56},
{73, 112, 45, 77, 106, 37, 69, 106, 41},
{69, 109, 44, 73, 112, 45, 69, 106, 41},
{77, 106, 37, 78, 102, 35, 69, 104, 41},
{69, 106, 41, 77, 106, 37, 69, 104, 41},
{78, 102, 35, 74, 80, 31, 65, 96, 40},
{68, 102, 40, 78, 102, 35, 65, 96, 40},
{74, 80, 31, 60, 79, 39, 60, 88, 41},
{65, 96, 40, 74, 80, 31, 60, 88, 41},
{53, 85, 50, 60, 79, 39, 43, 68, 59},
{42, 90, 71, 44, 91, 67, 46, 89, 62},
{46, 89, 62, 43, 68, 59, 42, 90, 71},
{35, 97, 72, 36, 100, 71, 41, 95, 70},
{41, 95, 70, 42, 90, 71, 35, 97, 72},
{45, 115, 67, 41, 107, 68, 37, 112, 69},
{42, 123, 69, 45, 115, 67, 37, 112, 69},
{53, 85, 50, 59, 95, 45, 60, 88, 41},
{60, 88, 41, 60, 79, 39, 53, 85, 50},
{59, 95, 45, 53, 85, 50, 51, 92, 54},
{51, 92, 54, 53, 85, 50, 46, 89, 62},
{46, 89, 62, 53, 85, 50, 43, 68, 59},
{36, 100, 71, 35, 97, 72, 31, 108, 70},
{35, 97, 72, 29, 110, 71, 31, 108, 70},
{62, 131, 83, 64, 126, 97, 68, 126, 90},
{70, 129, 85, 73, 133, 84, 71, 130, 83},
{71, 130, 83, 73, 133, 84, 72, 130, 81},
{73, 130, 79, 75, 134, 80, 73, 130, 77},
{73, 130, 77, 75, 134, 80, 75, 130, 70},
{77, 131, 67, 79, 132, 65, 77, 130, 65},
{79, 126, 57, 82, 126, 55, 79, 125, 56},
{56, 115, 62, 49, 105, 62, 53, 116, 65},
{46, 123, 69, 42, 123, 69, 43, 124, 70},
{62, 131, 83, 68, 126, 90, 69, 128, 88},
{68, 126, 90, 69, 124, 93, 69, 128, 88},
{62, 131, 83, 69, 128, 88, 70, 129, 85},
{43, 130, 75, 48, 127, 73, 42, 128, 72},
{42, 128, 72, 48, 127, 73, 43, 124, 70},
{46, 123, 69, 43, 124, 70, 48, 127, 73},
{79, 125, 56, 72, 124, 60, 79, 126, 57},
{77, 130, 65, 79, 126, 57, 72, 124, 60},
{52, 120, 66, 56, 115, 62, 53, 116, 65},
{53, 116, 65, 52, 118, 66, 52, 120, 66},
{47, 120, 68, 46, 123, 69, 52, 120, 66},
{48, 127, 73, 52, 120, 66, 46, 123, 69},
{48, 127, 73, 51, 131, 80, 59, 128, 78},
{74, 129, 69, 73, 130, 77, 75, 130, 70},
{72, 124, 60, 74, 129, 69, 77, 130, 65},
{77, 131, 67, 77, 130, 65, 74, 129, 69},
{52, 120, 66, 62, 118, 61, 56, 115, 62},
{72, 124, 60, 70, 117, 54, 62, 118, 61},
{73, 130, 79, 73, 130, 77, 68, 129, 80},
{74, 129, 69, 68, 129, 80, 73, 130, 77},
{73, 130, 79, 68, 129, 80, 72, 130, 81},
{72, 130, 81, 68, 129, 80, 71, 130, 83},
{71, 130, 83, 68, 129, 80, 70, 129, 85},
{62, 131, 83, 70, 129, 85, 68, 129, 80},
{52, 120, 66, 62, 125, 70, 62, 118, 61},
{74, 129, 69, 72, 124, 60, 62, 125, 70},
{62, 118, 61, 62, 125, 70, 72, 124, 60},
{62, 125, 70, 52, 120, 66, 48, 127, 73},
{74, 129, 69, 62, 125, 70, 68, 129, 80},
{48, 127, 73, 59, 128, 78, 62, 125, 70},
{68, 129, 80, 62, 125, 70, 59, 128, 78},
{50, 128, 96, 64, 126, 97, 62, 131, 83},
{64, 126, 97, 70, 123, 96, 69, 124, 93},
{68, 126, 90, 64, 126, 97, 69, 124, 93},
{74, 131, 94, 69, 128, 88, 69, 124, 93},
{69, 124, 93, 70, 123, 96, 74, 131, 94},
{73, 133, 84, 70, 129, 85, 69, 128, 88},
{69, 128, 88, 74, 131, 94, 73, 133, 84},
{75, 134, 80, 73, 130, 79, 72, 130, 81},
{72, 130, 81, 73, 133, 84, 75, 134, 80},
{75, 130, 70, 75, 134, 80, 81, 138, 72},
{79, 132, 65, 82, 126, 55, 79, 126, 57},
{77, 130, 65, 79, 132, 65, 79, 126, 57},
{70, 117, 54, 73, 112, 45, 64, 115, 56},
{49, 117, 66, 52, 118, 66, 53, 116, 65},
{53, 116, 65, 49, 105, 62, 49, 117, 66},
{49, 117, 66, 45, 115, 67, 47, 120, 68},
{45, 115, 67, 42, 123, 69, 46, 123, 69},
{47, 120, 68, 45, 115, 67, 46, 123, 69},
{42, 123, 69, 33, 132, 73, 42, 128, 72},
{43, 124, 70, 42, 123, 69, 42, 128, 72},
{33, 132, 73, 38, 135, 78, 43, 130, 75},
{42, 128, 72, 33, 132, 73, 43, 130, 75},
{50, 132, 84, 51, 131, 80, 44, 132, 77},
{38, 135, 78, 50, 132, 84, 44, 132, 77},
{50, 132, 84, 50, 128, 96, 62, 131, 83},
{59, 128, 78, 62, 131, 83, 68, 129, 80},
{51, 131, 80, 50, 132, 84, 62, 131, 83},
{62, 131, 83, 59, 128, 78, 51, 131, 80},
{75, 130, 70, 77, 131, 67, 74, 129, 69},
{81, 138, 72, 77, 131, 67, 75, 130, 70},
{77, 131, 67, 81, 138, 72, 79, 132, 65},
{70, 117, 54, 72, 124, 60, 79, 125, 56},
{79, 125, 56, 82, 126, 55, 70, 117, 54},
{82, 126, 55, 73, 112, 45, 70, 117, 54},
{64, 115, 56, 62, 118, 61, 70, 117, 54},
{56, 115, 62, 60, 109, 53, 49, 105, 62},
{60, 109, 53, 56, 115, 62, 64, 115, 56},
{56, 115, 62, 62, 118, 61, 64, 115, 56},
{52, 118, 66, 47, 120, 68, 52, 120, 66},
{52, 118, 66, 49, 117, 66, 47, 120, 68},
{43, 130, 75, 44, 132, 77, 48, 127, 73},
{43, 130, 75, 38, 135, 78, 44, 132, 77},
{51, 131, 80, 48, 127, 73, 44, 132, 77},
{174, 100, 75, 179, 99, 76, 175, 98, 77},
{170, 95, 86, 169, 92, 92, 167, 94, 89},
{157, 94, 92, 156, 92, 94, 156, 93, 91},
{172, 103, 73, 174, 100, 75, 170, 95, 86},
{174, 100, 75, 175, 98, 77, 170, 95, 86},
{175, 98, 77, 175, 96, 81, 170, 95, 86},
{172, 103, 73, 170, 95, 86, 167, 94, 89},
{179, 99, 76, 174, 100, 75, 172, 103, 73},
{172, 103, 73, 178, 113, 67, 179, 99, 76},
{178, 95, 82, 169, 92, 92, 170, 95, 86},
{175, 96, 81, 178, 95, 82, 170, 95, 86},
{169, 92, 92, 164, 93, 95, 164, 94, 91},
{167, 94, 89, 169, 92, 92, 164, 94, 91},
{164, 93, 95, 156, 92, 94, 157, 94, 92},
{164, 94, 91, 164, 93, 95, 157, 94, 92},
{156, 92, 94, 165, 79, 94, 158, 90, 87},
{156, 93, 91, 156, 92, 94, 158, 90, 87},
{172, 103, 73, 167, 94, 89, 164, 94, 91},
{175, 98, 77, 179, 99, 76, 175, 96, 81},
{179, 99, 76, 178, 95, 82, 175, 96, 81},
{145, 126, 86, 146, 127, 87, 146, 126, 86},
{134, 125, 88, 134, 124, 90, 138, 125, 89},
{123, 130, 93, 131, 125, 95, 134, 124, 90},
{134, 125, 88, 123, 130, 93, 134, 124, 90},
{141, 129, 95, 138, 125, 89, 134, 124, 90},
{134, 124, 90, 131, 125, 95, 141, 129, 95},
{146, 127, 87, 157, 129, 78, 152, 125, 80},
{146, 126, 86, 146, 127, 87, 152, 125, 80},
{138, 125, 89, 141, 129, 95, 145, 126, 86},
{141, 129, 95, 146, 127, 87, 145, 126, 86},
{157, 90, 82, 158, 90, 87, 159, 87, 80},
{162, 80, 78, 165, 79, 94, 164, 76, 77},
{160, 70, 57, 157, 66, 52, 158, 72, 54},
{160, 70, 57, 163, 72, 64, 163, 67, 62},
{163, 72, 64, 164, 72, 70, 163, 67, 62},
{163, 76, 70, 162, 80, 78, 164, 76, 77},
{164, 76, 77, 164, 72, 70, 163, 76, 70},
{163, 72, 64, 163, 76, 70, 164, 72, 70},
{163, 72, 64, 159, 78, 60, 163, 76, 70},
{158, 72, 54, 154, 79, 51, 159, 78, 60},
{158, 72, 54, 159, 78, 60, 160, 70, 57},
{163, 72, 64, 160, 70, 57, 159, 78, 60},
{162, 80, 78, 159, 84, 71, 159, 87, 80},
{159, 84, 71, 162, 80, 78, 163, 76, 70},
{163, 76, 70, 159, 78, 60, 159, 84, 71},
{158, 90, 87, 165, 79, 94, 162, 80, 78},
{159, 87, 80, 158, 90, 87, 162, 80, 78},
{167, 66, 94, 164, 72, 70, 164, 76, 77},
{164, 76, 77, 165, 79, 94, 167, 66, 94},
{163, 59, 61, 163, 67, 62, 164, 72, 70},
{164, 72, 70, 167, 66, 94, 163, 59, 61},
{163, 59, 61, 157, 66, 52, 160, 70, 57},
{163, 67, 62, 163, 59, 61, 160, 70, 57},
{157, 66, 52, 140, 76, 36, 154, 79, 51},
{158, 72, 54, 157, 66, 52, 154, 79, 51},
{158, 124, 75, 161, 125, 73, 160, 124, 73},
{160, 124, 73, 161, 125, 73, 161, 124, 73},
{161, 124, 73, 161, 125, 73, 161, 124, 72},
{161, 124, 72, 161, 125, 73, 162, 123, 72},
{162, 123, 72, 161, 125, 73, 163, 122, 71},
{146, 109, 47, 145, 109, 46, 146, 109, 47},
{146, 109, 47, 145, 109, 46, 146, 110, 47},
{146, 109, 47, 146, 109, 47, 146, 110, 47},
{155, 110, 51, 150, 110, 48, 153, 113, 51},
{161, 124, 72, 162, 123, 72, 160, 122, 72},
{164, 119, 69, 160, 122, 72, 163, 122, 71},
{162, 123, 72, 163, 122, 71, 160, 122, 72},
{161, 124, 72, 160, 122, 72, 161, 124, 73},
{161, 124, 73, 160, 122, 72, 160, 124, 73},
{153, 113, 51, 156, 113, 54, 155, 110, 51},
{164, 119, 69, 159, 118, 68, 160, 122, 72},
{157, 129, 78, 161, 125, 73, 158, 124, 75},
{157, 124, 76, 157, 129, 78, 158, 124, 75},
{163, 122, 71, 161, 125, 73, 166, 127, 72},
{169, 125, 71, 177, 125, 72, 170, 121, 69},
{177, 116, 67, 170, 119, 68, 170, 121, 69},
{170, 121, 69, 177, 125, 72, 177, 116, 67},
{147, 104, 46, 145, 109, 46, 146, 109, 47},
{150, 110, 48, 147, 104, 46, 146, 109, 47},
{170, 121, 69, 166, 127, 72, 169, 125, 71},
{166, 127, 72, 170, 121, 69, 163, 122, 71},
{163, 122, 71, 170, 121, 69, 164, 119, 69},
{160, 113, 57, 159, 115, 58, 161, 113, 60},
{161, 115, 62, 159, 117, 62, 162, 116, 64},
{164, 119, 69, 164, 119, 69, 165, 119, 69},
{172, 104, 73, 172, 103, 73, 172, 104, 73},
{156, 95, 89, 156, 93, 91, 156, 95, 86},
{156, 93, 81, 157, 90, 82, 157, 92, 81},
{158, 90, 74, 159, 84, 71, 158, 89, 69},
{157, 85, 64, 159, 78, 60, 156, 84, 56},
{154, 83, 52, 154, 79, 51, 153, 83, 50},
{147, 89, 44, 142, 91, 38, 146, 91, 44},
{150, 101, 48, 147, 104, 46, 154, 105, 51},
{157, 110, 53, 156, 113, 54, 158, 111, 55},
{172, 104, 73, 172, 104, 73, 164, 98, 87},
{161, 113, 60, 160, 107, 65, 160, 113, 57},
{156, 95, 86, 160, 107, 65, 156, 95, 89},
{167, 116, 68, 162, 116, 64, 164, 119, 69},
{169, 119, 68, 167, 116, 68, 165, 119, 69},
{164, 119, 69, 165, 119, 69, 167, 116, 68},
{158, 96, 89, 166, 104, 77, 162, 97, 88},
{173, 113, 66, 166, 104, 77, 167, 116, 68},
{157, 110, 53, 158, 111, 55, 157, 100, 65},
{160, 107, 65, 157, 100, 65, 158, 111, 55},
{156, 93, 81, 157, 100, 65, 156, 93, 84},
{160, 107, 65, 156, 95, 86, 157, 100, 65},
{156, 93, 84, 157, 100, 65, 156, 95, 86},
{147, 94, 45, 150, 89, 47, 146, 91, 44},
{153, 83, 50, 150, 84, 47, 150, 89, 47},
{150, 84, 47, 147, 89, 44, 150, 89, 47},
{146, 91, 44, 150, 89, 47, 147, 89, 44},
{161, 115, 62, 162, 116, 64, 163, 111, 66},
{167, 116, 68, 163, 111, 66, 162, 116, 64},
{160, 107, 65, 161, 113, 60, 163, 111, 66},
{161, 115, 62, 163, 111, 66, 161, 113, 60},
{163, 111, 66, 167, 116, 68, 166, 104, 77},
{158, 89, 69, 157, 92, 74, 158, 90, 74},
{158, 90, 74, 157, 92, 74, 157, 91, 77},
{157, 100, 65, 156, 93, 81, 157, 92, 74},
{157, 92, 81, 157, 92, 74, 156, 93, 81},
{155, 107, 53, 154, 105, 51, 154, 107, 51},
{154, 107, 51, 155, 109, 52, 155, 107, 53},
{157, 100, 65, 155, 107, 53, 157, 110, 53},
{150, 89, 47, 154, 87, 53, 153, 83, 50},
{154, 83, 52, 153, 83, 50, 154, 87, 53},
{154, 83, 52, 154, 87, 53, 156, 84, 56},
{155, 93, 56, 157, 85, 64, 154, 87, 53},
{156, 84, 56, 154, 87, 53, 157, 85, 64},
{148, 98, 46, 151, 94, 50, 147, 94, 45},
{150, 89, 47, 147, 94, 45, 151, 94, 50},
{150, 89, 47, 151, 94, 50, 154, 87, 53},
{155, 93, 56, 154, 87, 53, 151, 94, 50},
{151, 94, 50, 148, 98, 46, 150, 101, 48},
{157, 92, 74, 157, 92, 63, 157, 100, 65},
{155, 93, 56, 157, 92, 63, 157, 85, 64},
{157, 92, 74, 158, 89, 69, 157, 92, 63},
{154, 99, 55, 155, 93, 56, 151, 94, 50},
{155, 107, 53, 154, 99, 55, 154, 105, 51},
{151, 94, 50, 150, 101, 48, 154, 99, 55},
{154, 105, 51, 154, 99, 55, 150, 101, 48},
{155, 93, 56, 154, 99, 55, 157, 92, 63},
{157, 92, 63, 154, 99, 55, 157, 100, 65},
{155, 107, 53, 157, 100, 65, 154, 99, 55},
{159, 117, 62, 161, 115, 62, 161, 113, 60},
{161, 113, 60, 159, 115, 58, 159, 117, 62},
{170, 121, 69, 169, 119, 68, 165, 119, 69},
{165, 119, 69, 164, 119, 69, 170, 121, 69},
{169, 119, 68, 170, 121, 69, 170, 119, 68},
{173, 113, 66, 178, 113, 67, 172, 103, 73},
{172, 104, 73, 172, 103, 73, 164, 98, 87},
{172, 103, 73, 164, 94, 91, 164, 98, 87},
{164, 94, 91, 157, 94, 92, 158, 96, 89},
{162, 97, 88, 164, 94, 91, 158, 96, 89},
{157, 94, 92, 156, 93, 91, 156, 95, 89},
{158, 90, 87, 156, 93, 84, 156, 95, 86},
{156, 95, 86, 156, 93, 91, 158, 90, 87},
{157, 90, 82, 156, 93, 81, 156, 93, 84},
{156, 93, 84, 158, 90, 87, 157, 90, 82},
{159, 87, 80, 159, 84, 71, 158, 90, 74},
{157, 91, 77, 159, 87, 80, 158, 90, 74},
{159, 84, 71, 159, 78, 60, 157, 85, 64},
{154, 79, 51, 154, 83, 52, 156, 84, 56},
{156, 84, 56, 159, 78, 60, 154, 79, 51},
{154, 79, 51, 140, 76, 36, 150, 84, 47},
{153, 83, 50, 154, 79, 51, 150, 84, 47},
{140, 76, 36, 142, 91, 38, 147, 89, 44},
{150, 84, 47, 140, 76, 36, 147, 89, 44},
{147, 104, 46, 150, 101, 48, 148, 98, 46},
{150, 110, 48, 154, 107, 51, 154, 105, 51},
{154, 105, 51, 147, 104, 46, 150, 110, 48},
{155, 110, 51, 155, 109, 52, 154, 107, 51},
{154, 107, 51, 150, 110, 48, 155, 110, 51},
{155, 110, 51, 156, 113, 54, 157, 110, 53},
{162, 116, 64, 159, 118, 68, 164, 119, 69},
{162, 116, 64, 159, 117, 62, 159, 118, 68},
{164, 119, 69, 164, 119, 69, 159, 118, 68},
{169, 119, 68, 170, 119, 68, 167, 116, 68},
{173, 113, 66, 177, 116, 67, 178, 113, 67},
{170, 119, 68, 177, 116, 67, 173, 113, 66},
{173, 113, 66, 167, 116, 68, 170, 119, 68},
{164, 98, 87, 164, 94, 91, 162, 97, 88},
{162, 97, 88, 166, 104, 77, 164, 98, 87},
{158, 96, 89, 156, 95, 89, 166, 104, 77},
{158, 96, 89, 157, 94, 92, 156, 95, 89},
{160, 107, 65, 163, 111, 66, 156, 95, 89},
{166, 104, 77, 156, 95, 89, 163, 111, 66},
{157, 91, 77, 157, 92, 74, 157, 92, 81},
{157, 92, 81, 157, 90, 82, 157, 91, 77},
{157, 91, 77, 157, 90, 82, 159, 87, 80},
{157, 85, 64, 157, 92, 63, 158, 89, 69},
{158, 89, 69, 159, 84, 71, 157, 85, 64},
{155, 109, 52, 157, 110, 53, 155, 107, 53},
{155, 109, 52, 155, 110, 51, 157, 110, 53},
{160, 113, 57, 160, 107, 65, 158, 111, 55},
{158, 111, 55, 156, 113, 54, 160, 113, 57},
{156, 113, 54, 159, 115, 58, 160, 113, 57},
{116, 108, 36, 98, 119, 39, 122, 111, 39},
{143, 109, 45, 145, 109, 46, 143, 107, 44},
{144, 104, 44, 147, 104, 46, 144, 102, 43},
{142, 94, 39, 142, 91, 38, 140, 93, 37},
{122, 111, 39, 122, 106, 35, 116, 108, 36},
{119, 99, 33, 117, 104, 34, 122, 106, 35},
{116, 108, 36, 122, 106, 35, 117, 104, 34},
{124, 96, 32, 133, 97, 34, 131, 91, 32},
{133, 97, 34, 140, 93, 37, 131, 91, 32},
{143, 107, 44, 141, 110, 45, 143, 109, 45},
{139, 97, 38, 144, 97, 42, 142, 94, 39},
{133, 97, 34, 139, 97, 38, 140, 93, 37},
{142, 94, 39, 140, 93, 37, 139, 97, 38},
{127, 100, 34, 133, 97, 34, 124, 96, 32},
{122, 106, 35, 127, 100, 34, 119, 99, 33},
{124, 96, 32, 119, 99, 33, 127, 100, 34},
{128, 112, 40, 126, 110, 38, 122, 111, 39},
{126, 110, 38, 122, 106, 35, 122, 111, 39},
{139, 97, 38, 141, 102, 41, 144, 97, 42},
{144, 102, 43, 141, 102, 41, 144, 104, 44},
{141, 110, 45, 143, 107, 44, 141, 102, 41},
{144, 104, 44, 141, 102, 41, 143, 107, 44},
{127, 100, 34, 134, 101, 36, 133, 97, 34},
{134, 101, 36, 139, 97, 38, 133, 97, 34},
{139, 97, 38, 134, 101, 36, 141, 102, 41},
{134, 101, 36, 130, 107, 37, 141, 102, 41},
{126, 110, 38, 128, 112, 40, 130, 107, 37},
{130, 107, 37, 134, 101, 36, 127, 100, 34},
{126, 110, 38, 130, 107, 37, 122, 106, 35},
{127, 100, 34, 122, 106, 35, 130, 107, 37},
{147, 104, 46, 144, 104, 44, 143, 107, 44},
{143, 107, 44, 145, 109, 46, 147, 104, 46},
{144, 102, 43, 147, 104, 46, 148, 98, 46},
{147, 94, 45, 146, 91, 44, 144, 97, 42},
{146, 91, 44, 142, 91, 38, 142, 94, 39},
{144, 97, 42, 146, 91, 44, 142, 94, 39},
{142, 91, 38, 130, 81, 30, 131, 91, 32},
{140, 93, 37, 142, 91, 38, 131, 91, 32},
{131, 91, 32, 130, 81, 30, 124, 96, 32},
{119, 99, 33, 124, 96, 32, 130, 81, 30},
{130, 81, 30, 90, 102, 32, 119, 99, 33},
{119, 99, 33, 90, 102, 32, 117, 104, 34},
{116, 108, 36, 117, 104, 34, 90, 102, 32},
{90, 102, 32, 98, 119, 39, 116, 108, 36},
{173, 113, 66, 172, 104, 73, 166, 104, 77},
{172, 103, 73, 172, 104, 73, 173, 113, 66},
{164, 98, 87, 166, 104, 77, 172, 104, 73},
{148, 98, 46, 147, 94, 45, 144, 97, 42},
{144, 102, 43, 144, 97, 42, 141, 102, 41},
{148, 98, 46, 144, 97, 42, 144, 102, 43},
{63, 16, 108, 65, 14, 112, 63, 16, 112},
{63, 16, 112, 65, 14, 112, 63, 15, 113},
{49, 36, 118, 49, 41, 120, 50, 39, 117},
{50, 39, 117, 49, 41, 120, 50, 41, 117},
{49, 45, 111, 47, 48, 110, 47, 45, 109},
{42, 43, 101, 40, 47, 98, 41, 41, 97},
{41, 41, 97, 40, 47, 98, 40, 41, 95},
{41, 35, 84, 42, 37, 66, 42, 33, 82},
{44, 31, 81, 45, 32, 66, 46, 28, 81},
{56, 19, 87, 58, 17, 86, 57, 18, 88},
{63, 16, 112, 63, 15, 113, 57, 19, 115},
{58, 16, 117, 57, 19, 115, 63, 15, 113},
{60, 18, 107, 63, 16, 101, 63, 16, 108},
{63, 16, 108, 63, 16, 112, 60, 18, 107},
{57, 19, 115, 60, 18, 107, 63, 16, 112},
{50, 36, 114, 49, 36, 118, 50, 39, 117},
{50, 39, 117, 50, 41, 117, 50, 36, 114},
{49, 36, 118, 50, 36, 114, 48, 32, 120},
{63, 16, 98, 63, 16, 101, 59, 19, 100},
{60, 18, 107, 59, 19, 100, 63, 16, 101},
{49, 28, 100, 54, 24, 108, 50, 36, 114},
{54, 24, 108, 49, 28, 100, 59, 19, 100},
{57, 19, 115, 54, 24, 108, 60, 18, 107},
{59, 19, 100, 60, 18, 107, 54, 24, 108},
{49, 28, 100, 53, 21, 90, 59, 19, 100},
{53, 20, 84, 56, 19, 87, 53, 21, 90},
{56, 19, 87, 57, 18, 88, 53, 21, 90},
{57, 18, 88, 60, 17, 94, 53, 21, 90},
{59, 19, 100, 53, 21, 90, 60, 17, 94},
{40, 40, 93, 42, 35, 94, 40, 41, 95},
{41, 41, 97, 40, 41, 95, 42, 35, 94},
{40, 40, 93, 40, 37, 87, 42, 35, 94},
{51, 27, 117, 50, 36, 114, 54, 24, 108},
{54, 24, 108, 57, 19, 115, 51, 27, 117},
{57, 19, 115, 53, 18, 119, 51, 27, 117},
{50, 36, 114, 51, 27, 117, 48, 32, 120},
{49, 25, 85, 46, 28, 81, 49, 25, 81},
{49, 25, 81, 51, 23, 83, 49, 25, 85},
{45, 39, 104, 47, 45, 109, 42, 43, 101},
{42, 43, 101, 41, 41, 97, 45, 39, 104},
{42, 35, 94, 45, 39, 104, 41, 41, 97},
{50, 36, 114, 49, 45, 111, 45, 39, 104},
{47, 45, 109, 45, 39, 104, 49, 45, 111},
{50, 36, 114, 45, 39, 104, 49, 28, 100},
{42, 35, 94, 49, 28, 100, 45, 39, 104},
{42, 35, 94, 47, 28, 92, 49, 28, 100},
{47, 28, 92, 53, 21, 90, 49, 28, 100},
{53, 21, 90, 47, 28, 92, 49, 25, 85},
{43, 32, 86, 49, 25, 85, 47, 28, 92},
{47, 28, 92, 42, 35, 94, 43, 32, 86},
{40, 37, 87, 43, 32, 86, 42, 35, 94},
{42, 33, 82, 44, 31, 81, 43, 32, 86},
{44, 31, 81, 46, 28, 81, 43, 32, 86},
{49, 25, 85, 43, 32, 86, 46, 28, 81},
{42, 33, 82, 43, 32, 86, 41, 35, 84},
{40, 37, 87, 41, 35, 84, 43, 32, 86},
{71, 14, 100, 63, 16, 101, 63, 16, 98},
{63, 16, 98, 64, 15, 93, 71, 14, 100},
{71, 14, 100, 65, 14, 112, 63, 16, 108},
{63, 16, 101, 71, 14, 100, 63, 16, 108},
{58, 13, 118, 58, 16, 117, 63, 15, 113},
{63, 15, 113, 65, 14, 112, 58, 13, 118},
{49, 29, 120, 46, 16, 133, 43, 26, 134},
{49, 41, 120, 49, 36, 118, 48, 32, 120},
{48, 32, 120, 44, 36, 132, 49, 41, 120},
{50, 41, 117, 49, 41, 120, 52, 47, 115},
{47, 48, 110, 40, 47, 98, 42, 43, 101},
{47, 45, 109, 47, 48, 110, 42, 43, 101},
{39, 48, 94, 40, 40, 93, 40, 41, 95},
{40, 41, 95, 40, 47, 98, 39, 48, 94},
{39, 48, 94, 39, 42, 66, 40, 37, 87},
{40, 40, 93, 39, 48, 94, 40, 37, 87},
{39, 42, 66, 42, 37, 66, 41, 35, 84},
{40, 37, 87, 39, 42, 66, 41, 35, 84},
{42, 37, 66, 45, 32, 66, 44, 31, 81},
{42, 33, 82, 42, 37, 66, 44, 31, 81},
{53, 24, 69, 49, 25, 81, 46, 28, 81},
{46, 28, 81, 45, 32, 66, 53, 24, 69},
{56, 20, 78, 51, 23, 83, 49, 25, 81},
{49, 25, 81, 53, 24, 69, 56, 20, 78},
{58, 17, 86, 56, 19, 87, 53, 20, 84},
{53, 20, 84, 56, 19, 78, 58, 17, 86},
{64, 15, 93, 60, 17, 94, 57, 18, 88},
{57, 18, 88, 58, 17, 86, 64, 15, 93},
{53, 18, 119, 53, 7, 132, 46, 16, 133},
{58, 13, 118, 53, 7, 132, 53, 18, 119},
{58, 16, 117, 53, 18, 119, 57, 19, 115},
{58, 16, 117, 58, 13, 118, 53, 18, 119},
{53, 18, 119, 46, 16, 133, 49, 29, 120},
{51, 27, 117, 53, 18, 119, 49, 29, 120},
{49, 29, 120, 48, 32, 120, 51, 27, 117},
{43, 26, 134, 48, 32, 120, 49, 29, 120},
{48, 32, 120, 43, 26, 134, 44, 36, 132},
{50, 41, 117, 52, 47, 115, 50, 36, 114},
{52, 47, 115, 49, 45, 111, 50, 36, 114},
{47, 48, 110, 49, 45, 111, 52, 47, 115},
{51, 23, 83, 53, 20, 84, 49, 25, 85},
{51, 23, 83, 56, 20, 78, 53, 20, 84},
{53, 20, 84, 56, 20, 78, 56, 19, 78},
{53, 21, 90, 49, 25, 85, 53, 20, 84},
{63, 16, 98, 59, 19, 100, 60, 17, 94},
{60, 17, 94, 64, 15, 93, 63, 16, 98},
{155, 36, 124, 157, 35, 127, 155, 33, 122},
{157, 24, 121, 162, 20, 128, 157, 22, 120},
{145, 18, 109, 145, 17, 109, 145, 18, 108},
{145, 18, 108, 145, 17, 109, 145, 19, 107},
{143, 19, 102, 142, 18, 102, 144, 19, 100},
{163, 33, 90, 164, 35, 90, 163, 34, 92},
{162, 35, 99, 165, 39, 99, 162, 38, 102},
{155, 33, 122, 153, 38, 119, 155, 36, 124},
{153, 38, 119, 155, 33, 122, 154, 34, 113},
{153, 38, 119, 154, 34, 113, 153, 40, 116},
{158, 37, 107, 153, 40, 116, 154, 34, 113},
{157, 22, 120, 155, 20, 119, 155, 24, 117},
{155, 20, 119, 154, 19, 118, 155, 24, 117},
{157, 22, 120, 155, 24, 117, 157, 24, 121},
{157, 24, 121, 155, 24, 117, 155, 33, 122},
{154, 34, 113, 155, 33, 122, 155, 24, 117},
{147, 21, 105, 145, 18, 108, 145, 19, 107},
{145, 19, 107, 143, 19, 102, 147, 21, 105},
{143, 19, 102, 144, 19, 100, 147, 21, 105},
{145, 18, 108, 147, 21, 105, 145, 18, 109},
{145, 18, 109, 147, 21, 105, 147, 19, 112},
{158, 37, 107, 158, 34, 105, 162, 38, 102},
{155, 28, 101, 162, 35, 99, 158, 34, 105},
{162, 38, 102, 158, 34, 105, 162, 35, 99},
{158, 34, 105, 158, 37, 107, 154, 34, 113},
{144, 19, 97, 148, 21, 96, 144, 19, 100},
{155, 28, 101, 147, 21, 105, 148, 21, 96},
{144, 19, 100, 148, 21, 96, 147, 21, 105},
{152, 25, 109, 154, 34, 113, 155, 24, 117},
{147, 21, 105, 152, 25, 109, 147, 19, 112},
{152, 25, 109, 147, 21, 105, 155, 28, 101},
{155, 28, 101, 158, 34, 105, 152, 25, 109},
{154, 34, 113, 152, 25, 109, 158, 34, 105},
{157, 35, 127, 162, 20, 128, 157, 24, 121},
{155, 33, 122, 157, 35, 127, 157, 24, 121},
{159, 15, 127, 155, 20, 119, 157, 22, 120},
{157, 22, 120, 162, 20, 128, 159, 15, 127},
{158, 13, 125, 154, 19, 118, 155, 20, 119},
{155, 20, 119, 159, 15, 127, 158, 13, 125},
{158, 13, 125, 150, 5, 121, 151, 17, 116},
{154, 19, 118, 158, 13, 125, 151, 17, 116},
{151, 17, 116, 150, 5, 121, 143, 10, 113},
{145, 17, 109, 145, 18, 109, 147, 19, 112},
{147, 19, 112, 143, 10, 113, 145, 17, 109},
{142, 18, 102, 143, 19, 102, 145, 19, 107},
{145, 19, 107, 145, 17, 109, 142, 18, 102},
{141, 18, 96, 144, 19, 97, 144, 19, 100},
{144, 19, 100, 142, 18, 102, 141, 18, 96},
{165, 39, 99, 162, 35, 99, 163, 34, 92},
{163, 34, 92, 164, 35, 90, 165, 39, 99},
{162, 38, 102, 165, 39, 99, 158, 37, 107},
{153, 40, 116, 158, 37, 107, 165, 39, 99},
{155, 36, 124, 153, 38, 119, 149, 47, 125},
{157, 35, 127, 155, 36, 124, 149, 47, 125},
{153, 40, 116, 149, 47, 125, 153, 38, 119},
{149, 47, 125, 153, 40, 116, 165, 39, 99},
{143, 10, 113, 147, 19, 112, 151, 17, 116},
{147, 19, 112, 155, 24, 117, 154, 19, 118},
{154, 19, 118, 151, 17, 116, 147, 19, 112},
{155, 24, 117, 147, 19, 112, 152, 25, 109},
{146, 19, 91, 141, 18, 96, 140, 18, 90},
{148, 21, 96, 144, 19, 97, 146, 19, 91},
{144, 19, 97, 141, 18, 96, 146, 19, 91},
{121, 4, 122, 122, 1, 125, 118, 7, 123},
{109, 20, 124, 108, 20, 125, 109, 21, 124},
{108, 27, 123, 96, 28, 126, 100, 23, 119},
{98, 20, 115, 90, 19, 114, 97, 19, 114},
{97, 17, 110, 94, 16, 107, 96, 17, 109},
{96, 17, 109, 94, 16, 107, 95, 16, 107},
{95, 16, 107, 94, 16, 107, 96, 15, 105},
{98, 12, 89, 97, 12, 85, 99, 12, 87},
{99, 12, 87, 97, 12, 85, 102, 12, 86},
{107, 13, 85, 111, 13, 83, 111, 13, 85},
{115, 14, 86, 116, 14, 85, 116, 14, 87},
{116, 14, 87, 116, 14, 85, 117, 14, 87},
{120, 14, 88, 122, 14, 85, 122, 14, 90},
{126, 15, 94, 130, 15, 95, 128, 15, 96},
{128, 15, 96, 130, 15, 95, 130, 15, 97},
{131, 7, 111, 134, 0, 116, 129, 6, 114},
{109, 20, 124, 109, 20, 124, 109, 21, 124},
{109, 20, 124, 109, 21, 124, 109, 27, 123},
{132, 10, 109, 133, 9, 109, 132, 8, 110},
{109, 27, 123, 115, 13, 122, 109, 20, 124},
{109, 20, 124, 115, 13, 122, 115, 10, 126},
{118, 7, 123, 115, 10, 126, 115, 13, 122},
{97, 17, 110, 100, 20, 114, 97, 19, 114},
{108, 27, 123, 100, 23, 119, 100, 20, 114},
{100, 23, 119, 98, 20, 115, 100, 20, 114},
{97, 19, 114, 100, 20, 114, 98, 20, 115},
{102, 12, 86, 104, 13, 90, 99, 12, 87},
{98, 12, 89, 99, 12, 87, 104, 13, 90},
{119, 8, 119, 124, 3, 119, 121, 4, 122},
{121, 4, 122, 118, 7, 123, 119, 8, 119},
{115, 13, 122, 119, 8, 119, 118, 7, 123},
{94, 12, 96, 98, 12, 89, 100, 14, 95},
{104, 13, 90, 100, 14, 95, 98, 12, 89},
{116, 14, 87, 111, 14, 87, 115, 14, 86},
{115, 14, 86, 111, 14, 87, 111, 13, 85},
{111, 13, 85, 111, 14, 87, 107, 13, 85},
{124, 15, 92, 126, 15, 94, 121, 14, 97},
{126, 15, 94, 128, 15, 96, 121, 14, 97},
{127, 13, 102, 133, 15, 101, 132, 10, 109},
{127, 13, 102, 119, 14, 105, 121, 14, 97},
{133, 15, 101, 127, 13, 102, 130, 15, 97},
{121, 14, 97, 128, 15, 96, 127, 13, 102},
{130, 15, 97, 127, 13, 102, 128, 15, 96},
{127, 10, 110, 119, 14, 105, 127, 13, 102},
{132, 8, 110, 131, 7, 111, 127, 10, 110},
{129, 6, 114, 127, 10, 110, 131, 7, 111},
{127, 13, 102, 132, 10, 109, 127, 10, 110},
{132, 8, 110, 127, 10, 110, 132, 10, 109},
{116, 14, 114, 115, 13, 122, 109, 27, 123},
{116, 14, 114, 119, 14, 105, 127, 10, 110},
{115, 13, 122, 116, 14, 114, 119, 8, 119},
{98, 14, 100, 96, 15, 105, 94, 13, 98},
{100, 14, 95, 98, 14, 100, 94, 12, 96},
{94, 13, 98, 94, 12, 96, 98, 14, 100},
{111, 14, 87, 116, 14, 87, 118, 14, 89},
{117, 14, 87, 118, 14, 89, 116, 14, 87},
{118, 14, 89, 117, 14, 87, 118, 14, 87},
{118, 14, 87, 120, 14, 88, 118, 14, 89},
{120, 14, 88, 122, 14, 90, 118, 14, 89},
{121, 14, 97, 118, 14, 89, 124, 15, 92},
{122, 14, 90, 124, 15, 92, 118, 14, 89},
{112, 14, 95, 104, 13, 90, 111, 14, 87},
{121, 14, 97, 112, 14, 95, 118, 14, 89},
{111, 14, 87, 118, 14, 89, 112, 14, 95},
{97, 17, 110, 100, 17, 107, 100, 20, 114},
{100, 17, 107, 97, 17, 110, 96, 17, 109},
{96, 17, 109, 95, 16, 107, 100, 17, 107},
{95, 16, 107, 96, 15, 105, 100, 17, 107},
{96, 15, 105, 98, 14, 100, 100, 17, 107},
{107, 18, 112, 108, 27, 123, 100, 20, 114},
{106, 16, 107, 107, 18, 112, 100, 17, 107},
{100, 20, 114, 100, 17, 107, 107, 18, 112},
{108, 27, 123, 107, 18, 112, 109, 27, 123},
{109, 27, 123, 107, 18, 112, 116, 14, 114},
{106, 15, 101, 104, 13, 90, 112, 14, 95},
{104, 13, 90, 106, 15, 101, 100, 14, 95},
{100, 14, 95, 106, 15, 101, 98, 14, 100},
{98, 14, 100, 106, 15, 101, 100, 17, 107},
{106, 16, 107, 100, 17, 107, 106, 15, 101},
{111, 15, 107, 119, 14, 105, 116, 14, 114},
{116, 14, 114, 107, 18, 112, 111, 15, 107},
{106, 16, 107, 111, 15, 107, 107, 18, 112},
{111, 15, 107, 106, 16, 107, 106, 15, 101},
{124, 6, 116, 124, 3, 119, 119, 8, 119},
{127, 10, 110, 124, 6, 116, 116, 14, 114},
{119, 8, 119, 116, 14, 114, 124, 6, 116},
{127, 10, 110, 129, 6, 114, 124, 6, 116},
{114, 15, 101, 119, 14, 105, 111, 15, 107},
{111, 15, 107, 106, 15, 101, 114, 15, 101},
{112, 14, 95, 114, 15, 101, 106, 15, 101},
{119, 14, 105, 114, 15, 101, 121, 14, 97},
{114, 15, 101, 112, 14, 95, 121, 14, 97},
{125, 0, 121, 122, 1, 125, 121, 4, 122},
{124, 3, 119, 125, 0, 121, 121, 4, 122},
{116, 4, 133, 115, 10, 126, 118, 7, 123},
{118, 7, 123, 122, 1, 125, 116, 4, 133},
{115, 10, 126, 116, 4, 133, 108, 20, 125},
{109, 20, 124, 115, 10, 126, 108, 20, 125},
{108, 20, 125, 109, 20, 124, 109, 20, 124},
{108, 20, 125, 109, 30, 127, 109, 27, 123},
{109, 21, 124, 108, 20, 125, 109, 27, 123},
{109, 30, 127, 96, 28, 126, 108, 27, 123},
{109, 27, 123, 109, 30, 127, 108, 27, 123},
{96, 28, 126, 90, 19, 114, 98, 20, 115},
{100, 23, 119, 96, 28, 126, 98, 20, 115},
{90, 19, 114, 94, 16, 107, 97, 17, 110},
{97, 19, 114, 90, 19, 114, 97, 17, 110},
{89, 13, 98, 94, 13, 98, 96, 15, 105},
{96, 15, 105, 94, 16, 107, 89, 13, 98},
{89, 11, 94, 94, 12, 96, 94, 13, 98},
{94, 13, 98, 89, 13, 98, 89, 11, 94},
{89, 11, 94, 97, 12, 85, 98, 12, 89},
{94, 12, 96, 89, 11, 94, 98, 12, 89},
{102, 12, 86, 97, 12, 85, 108, 13, 78},
{108, 13, 78, 111, 13, 83, 107, 13, 85},
{111, 13, 83, 116, 14, 85, 115, 14, 86},
{111, 13, 85, 111, 13, 83, 115, 14, 86},
{118, 14, 85, 118, 14, 87, 117, 14, 87},
{117, 14, 87, 116, 14, 85, 118, 14, 85},
{118, 14, 85, 122, 14, 85, 120, 14, 88},
{118, 14, 87, 118, 14, 85, 120, 14, 88},
{129, 15, 88, 124, 15, 92, 122, 14, 90},
{122, 14, 90, 122, 14, 85, 129, 15, 88},
{129, 15, 88, 130, 15, 95, 126, 15, 94},
{124, 15, 92, 129, 15, 88, 126, 15, 94},
{136, 16, 101, 133, 15, 101, 130, 15, 97},
{130, 15, 97, 130, 15, 95, 136, 16, 101},
{134, 9, 109, 132, 10, 109, 133, 15, 101},
{133, 15, 101, 136, 16, 101, 134, 9, 109},
{133, 7, 110, 132, 8, 110, 133, 9, 109},
{133, 9, 109, 134, 9, 109, 133, 7, 110},
{133, 7, 110, 134, 0, 116, 131, 7, 111},
{132, 8, 110, 133, 7, 110, 131, 7, 111},
{125, 0, 121, 124, 3, 119, 125, 2, 118},
{107, 13, 85, 104, 13, 90, 102, 12, 86},
{108, 13, 78, 107, 13, 85, 102, 12, 86},
{104, 13, 90, 107, 13, 85, 111, 14, 87},
{132, 10, 109, 134, 9, 109, 133, 9, 109},
{125, 2, 118, 124, 6, 116, 129, 6, 114},
{129, 6, 114, 134, 0, 116, 125, 2, 118},
{134, 0, 116, 125, 0, 121, 125, 2, 118},
{125, 2, 118, 124, 3, 119, 124, 6, 116},
{122, 132, 63, 122, 133, 63, 127, 129, 69},
{130, 127, 78, 129, 128, 78, 132, 126, 81},
{134, 125, 84, 134, 125, 88, 136, 125, 86},
{145, 125, 85, 146, 126, 86, 147, 125, 83},
{152, 125, 80, 152, 125, 80, 152, 125, 79},
{155, 124, 77, 157, 124, 76, 156, 123, 76},
{157, 122, 74, 160, 122, 72, 157, 120, 71},
{158, 118, 68, 159, 118, 68, 158, 118, 67},
{158, 117, 63, 159, 117, 62, 158, 117, 62},
{157, 116, 59, 159, 115, 58, 156, 115, 57},
{153, 113, 52, 153, 113, 51, 152, 113, 51},
{146, 111, 47, 146, 110, 47, 145, 110, 47},
{145, 110, 47, 146, 110, 47, 145, 110, 47},
{141, 110, 45, 141, 110, 45, 140, 110, 45},
{140, 110, 45, 141, 110, 45, 139, 111, 45},
{131, 113, 42, 128, 112, 40, 129, 113, 42},
{115, 134, 59, 114, 131, 57, 114, 133, 58},
{143, 125, 85, 137, 125, 84, 138, 125, 87},
{138, 125, 87, 137, 125, 84, 136, 125, 86},
{134, 125, 84, 136, 125, 86, 137, 125, 84},
{129, 113, 42, 129, 114, 42, 131, 113, 42},
{120, 127, 54, 118, 126, 51, 117, 128, 54},
{117, 131, 57, 120, 127, 54, 117, 128, 54},
{117, 128, 54, 114, 131, 57, 117, 131, 57},
{120, 127, 54, 117, 131, 57, 121, 130, 60},
{117, 131, 57, 117, 134, 59, 121, 130, 60},
{121, 120, 46, 120, 124, 49, 125, 121, 47},
{118, 126, 51, 120, 127, 54, 120, 124, 49},
{125, 115, 42, 121, 120, 46, 126, 117, 45},
{125, 121, 47, 126, 117, 45, 121, 120, 46},
{150, 115, 54, 154, 115, 55, 153, 113, 52},
{153, 113, 52, 152, 113, 51, 150, 115, 54},
{148, 114, 50, 144, 117, 54, 150, 115, 54},
{150, 115, 54, 152, 113, 51, 148, 114, 50},
{149, 111, 49, 148, 114, 50, 152, 113, 51},
{141, 110, 45, 143, 112, 47, 142, 110, 46},
{144, 117, 54, 148, 114, 50, 143, 112, 47},
{142, 110, 46, 143, 112, 47, 144, 110, 47},
{144, 110, 47, 143, 112, 47, 145, 110, 47},
{145, 110, 47, 143, 112, 47, 145, 110, 47},
{145, 110, 47, 143, 112, 47, 146, 111, 47},
{143, 112, 47, 141, 110, 45, 140, 110, 45},
{126, 117, 45, 125, 121, 47, 130, 120, 48},
{121, 130, 60, 122, 132, 63, 125, 128, 62},
{131, 124, 59, 126, 126, 57, 125, 128, 62},
{120, 127, 54, 121, 130, 60, 126, 126, 57},
{125, 128, 62, 126, 126, 57, 121, 130, 60},
{137, 121, 63, 141, 120, 65, 142, 119, 60},
{143, 125, 85, 140, 124, 81, 137, 125, 84},
{133, 126, 77, 130, 127, 78, 132, 126, 81},
{136, 123, 73, 133, 126, 77, 140, 124, 81},
{136, 123, 73, 130, 127, 72, 133, 126, 77},
{139, 121, 69, 141, 120, 65, 137, 121, 63},
{156, 123, 76, 157, 123, 75, 154, 122, 74},
{157, 123, 75, 157, 123, 74, 154, 122, 74},
{157, 122, 74, 154, 122, 74, 157, 123, 74},
{156, 123, 76, 154, 122, 74, 155, 124, 77},
{155, 124, 77, 154, 122, 74, 154, 124, 78},
{154, 122, 74, 157, 122, 74, 157, 120, 71},
{147, 125, 83, 149, 123, 79, 145, 125, 85},
{140, 124, 81, 145, 125, 85, 149, 123, 79},
{147, 120, 74, 149, 123, 79, 154, 122, 74},
{152, 125, 80, 149, 123, 79, 152, 125, 80},
{152, 125, 80, 152, 125, 79, 149, 123, 79},
{152, 125, 79, 154, 124, 78, 149, 123, 79},
{154, 122, 74, 149, 123, 79, 154, 124, 78},
{142, 121, 74, 136, 123, 73, 140, 124, 81},
{140, 124, 81, 149, 123, 79, 142, 121, 74},
{147, 120, 74, 142, 121, 74, 149, 123, 79},
{136, 123, 73, 142, 121, 74, 139, 121, 69},
{147, 120, 74, 144, 119, 69, 142, 121, 74},
{142, 121, 74, 144, 119, 69, 139, 121, 69},
{141, 120, 65, 139, 121, 69, 144, 119, 69},
{158, 118, 68, 155, 118, 67, 157, 120, 71},
{154, 122, 74, 157, 120, 71, 155, 118, 67},
{155, 118, 67, 158, 118, 68, 158, 118, 67},
{158, 118, 67, 158, 117, 63, 155, 118, 67},
{158, 117, 63, 158, 117, 62, 155, 118, 67},
{150, 118, 64, 149, 118, 69, 155, 118, 67},
{155, 118, 67, 149, 118, 69, 154, 122, 74},
{147, 120, 74, 154, 122, 74, 149, 118, 69},
{147, 120, 74, 149, 118, 69, 144, 119, 69},
{150, 115, 54, 154, 116, 59, 154, 115, 55},
{156, 115, 57, 154, 115, 55, 154, 116, 59},
{156, 115, 57, 154, 116, 59, 157, 116, 59},
{150, 118, 64, 155, 118, 67, 154, 116, 59},
{157, 116, 59, 154, 116, 59, 158, 117, 62},
{155, 118, 67, 158, 117, 62, 154, 116, 59},
{146, 119, 64, 141, 120, 65, 144, 119, 69},
{144, 119, 69, 149, 118, 69, 146, 119, 64},
{150, 118, 64, 146, 119, 64, 149, 118, 69},
{141, 120, 65, 146, 119, 64, 142, 119, 60},
{150, 115, 54, 148, 118, 59, 154, 116, 59},
{148, 118, 59, 150, 118, 64, 154, 116, 59},
{142, 119, 60, 146, 119, 64, 148, 118, 59},
{150, 118, 64, 148, 118, 59, 146, 119, 64},
{150, 115, 54, 144, 117, 54, 148, 118, 59},
{142, 119, 60, 148, 118, 59, 144, 117, 54},
{139, 111, 45, 136, 114, 45, 140, 110, 45},
{143, 112, 47, 140, 110, 45, 136, 114, 45},
{130, 120, 48, 137, 119, 52, 136, 114, 45},
{144, 117, 54, 143, 112, 47, 137, 119, 52},
{136, 114, 45, 137, 119, 52, 143, 112, 47},
{130, 115, 44, 130, 120, 48, 136, 114, 45},
{136, 114, 45, 134, 111, 42, 130, 115, 44},
{134, 111, 42, 131, 113, 42, 130, 115, 44},
{129, 114, 42, 130, 115, 44, 131, 113, 42},
{130, 120, 48, 130, 115, 44, 126, 117, 45},
{130, 120, 48, 131, 122, 54, 137, 119, 52},
{131, 124, 59, 131, 122, 54, 126, 126, 57},
{127, 128, 66, 127, 129, 69, 130, 127, 72},
{127, 129, 69, 127, 128, 66, 122, 132, 63},
{127, 128, 66, 125, 128, 62, 122, 132, 63},
{126, 123, 51, 126, 126, 57, 131, 122, 54},
{131, 122, 54, 130, 120, 48, 126, 123, 51},
{125, 121, 47, 126, 123, 51, 130, 120, 48},
{126, 126, 57, 126, 123, 51, 120, 127, 54},
{125, 121, 47, 120, 124, 49, 126, 123, 51},
{120, 127, 54, 126, 123, 51, 120, 124, 49},
{140, 124, 81, 133, 126, 77, 133, 125, 82},
{133, 126, 77, 132, 126, 81, 133, 125, 82},
{140, 124, 81, 133, 125, 82, 137, 125, 84},
{137, 125, 84, 133, 125, 82, 134, 125, 84},
{132, 126, 82, 134, 125, 84, 133, 125, 82},
{131, 124, 59, 131, 125, 65, 137, 121, 63},
{130, 127, 72, 131, 125, 65, 127, 128, 66},
{131, 124, 59, 125, 128, 62, 131, 125, 65},
{127, 128, 66, 131, 125, 65, 125, 128, 62},
{142, 119, 60, 139, 120, 57, 137, 121, 63},
{137, 119, 52, 139, 120, 57, 144, 117, 54},
{139, 120, 57, 142, 119, 60, 144, 117, 54},
{137, 121, 63, 135, 121, 57, 131, 124, 59},
{135
gitextract_lpiadbln/
├── .gitattributes
├── 3d-rendering/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── 3d_rendering_host.cpp
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── input_data.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── rendering.cpp
│ ├── sdsoc/
│ │ ├── rendering.cpp
│ │ └── rendering.h
│ └── sw/
│ ├── rendering_sw.cpp
│ └── rendering_sw.h
├── BNN/
│ ├── LICENSE
│ ├── README.md
│ ├── cpp/
│ │ ├── Makefile
│ │ ├── Makefile.inc
│ │ ├── accel/
│ │ │ ├── Accel.cpp
│ │ │ ├── Accel.h
│ │ │ ├── AccelPrint.cpp
│ │ │ ├── AccelPrint.h
│ │ │ ├── AccelSchedule.cpp
│ │ │ ├── AccelSchedule.h
│ │ │ ├── AccelTest.cpp
│ │ │ ├── AccelTest.h
│ │ │ ├── Dense.cpp
│ │ │ ├── Dense.h
│ │ │ ├── InputConv.cpp
│ │ │ ├── InputConv.h
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── accel_test_bnn.cpp
│ │ │ ├── accel_test_layer.cpp
│ │ │ ├── accel_test_random.cpp
│ │ │ ├── hls.tcl
│ │ │ ├── opt.tcl
│ │ │ ├── parse_vivado.py
│ │ │ └── sdsoc_build/
│ │ │ ├── Makefile
│ │ │ └── sds.tcl
│ │ ├── minizip/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChangeLog
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── Makefile.am
│ │ │ ├── README.md
│ │ │ ├── aes/
│ │ │ │ ├── Makefile
│ │ │ │ ├── aes.h
│ │ │ │ ├── aes_via_ace.h
│ │ │ │ ├── aescrypt.c
│ │ │ │ ├── aeskey.c
│ │ │ │ ├── aesopt.h
│ │ │ │ ├── aestab.c
│ │ │ │ ├── aestab.h
│ │ │ │ ├── brg_endian.h
│ │ │ │ ├── brg_types.h
│ │ │ │ ├── entropy.c
│ │ │ │ ├── entropy.h
│ │ │ │ ├── fileenc.c
│ │ │ │ ├── fileenc.h
│ │ │ │ ├── hmac.c
│ │ │ │ ├── hmac.h
│ │ │ │ ├── prng.c
│ │ │ │ ├── prng.h
│ │ │ │ ├── pwd2key.c
│ │ │ │ ├── pwd2key.h
│ │ │ │ ├── sha1.c
│ │ │ │ └── sha1.h
│ │ │ ├── configure.ac
│ │ │ ├── crypt.h
│ │ │ ├── ioapi.c
│ │ │ ├── ioapi.h
│ │ │ ├── ioapi_buf.c
│ │ │ ├── ioapi_buf.h
│ │ │ ├── ioapi_mem.c
│ │ │ ├── ioapi_mem.h
│ │ │ ├── iowin32.c
│ │ │ ├── iowin32.h
│ │ │ ├── miniunz.c
│ │ │ ├── miniunz.vcproj
│ │ │ ├── minizip.c
│ │ │ ├── minizip.pc.in
│ │ │ ├── minizip.sln
│ │ │ ├── minizip.vcproj
│ │ │ ├── unzip.c
│ │ │ ├── unzip.h
│ │ │ ├── zip.c
│ │ │ └── zip.h
│ │ └── utils/
│ │ ├── Common.cpp
│ │ ├── Common.h
│ │ ├── DataIO.cpp
│ │ ├── DataIO.h
│ │ ├── Debug.h
│ │ ├── Makefile
│ │ ├── ParamIO.cpp
│ │ ├── ParamIO.h
│ │ ├── SArray.h
│ │ ├── Timer.cpp
│ │ ├── Timer.h
│ │ ├── Typedefs.h
│ │ ├── ZipIO.cpp
│ │ ├── ZipIO.h
│ │ └── open_zip.cpp
│ ├── data/
│ │ └── get_data.sh
│ ├── params/
│ │ └── get_params.sh
│ └── setup.sh
├── LICENSE
├── README.md
├── digit-recognition/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── digit_recognition.cpp
│ │ ├── testing_data.h
│ │ ├── training_data.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── digitrec.cl
│ ├── sdsoc/
│ │ ├── digitrec.cpp
│ │ └── digitrec.h
│ └── sw/
│ ├── digitrec_sw.cpp
│ └── digitrec_sw.h
├── face-detection/
│ ├── Makefile
│ ├── README.md
│ ├── outputs_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── face_detect_host.cpp
│ │ ├── image.cpp
│ │ ├── image.h
│ │ ├── image0_320_240.h
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ ├── face_detect.cpp
│ │ ├── haar_dataEWC_with_partitioning.h
│ │ ├── haar_dataRcc_with_partitioning.h
│ │ └── haar_mapping.h
│ ├── sdsoc/
│ │ ├── face_detect.cpp
│ │ ├── face_detect.h
│ │ ├── haar_dataEWC_with_partitioning.h
│ │ ├── haar_dataRcc_with_partitioning.h
│ │ └── haar_mapping.h
│ └── sw/
│ ├── face_detect_sw.cpp
│ ├── face_detect_sw.h
│ ├── haar_dataEWC_with_partitioning.h
│ └── haar_dataRcc_with_partitioning.h
├── harness/
│ ├── README.md
│ ├── harness.mk
│ └── ocl_src/
│ ├── CLKernel.cpp
│ ├── CLKernel.h
│ ├── CLMemObj.cpp
│ ├── CLMemObj.h
│ ├── CLWorld.cpp
│ └── CLWorld.h
├── optical-flow/
│ ├── Makefile
│ ├── README.md
│ ├── datasets/
│ │ ├── current/
│ │ │ ├── frame1.ppm
│ │ │ ├── frame2.ppm
│ │ │ ├── frame3.ppm
│ │ │ ├── frame4.ppm
│ │ │ ├── frame5.ppm
│ │ │ └── ref.flo
│ │ └── sintel_alley/
│ │ ├── frame1.ppm
│ │ ├── frame2.ppm
│ │ ├── frame3.ppm
│ │ ├── frame4.ppm
│ │ ├── frame5.ppm
│ │ └── ref.flo
│ ├── imageLib/
│ │ ├── Convert.cpp
│ │ ├── Convert.h
│ │ ├── Convolve.cpp
│ │ ├── Convolve.h
│ │ ├── Copyright.h
│ │ ├── Error.h
│ │ ├── Image.cpp
│ │ ├── Image.h
│ │ ├── ImageIO.cpp
│ │ ├── ImageIO.h
│ │ ├── README.txt
│ │ ├── RefCntMem.cpp
│ │ ├── RefCntMem.h
│ │ ├── flowIO.cpp
│ │ ├── flowIO.h
│ │ └── imageLib.h
│ ├── output_golden.txt
│ └── src/
│ ├── host/
│ │ ├── check_result.cpp
│ │ ├── check_result.h
│ │ ├── optical_flow_host.cpp
│ │ ├── typedefs.h
│ │ ├── utils.cpp
│ │ └── utils.h
│ ├── ocl/
│ │ └── optical_flow.cpp
│ ├── sdsoc/
│ │ ├── optical_flow.cpp
│ │ └── optical_flow.h
│ └── sw/
│ ├── optical_flow_sw.cpp
│ └── optical_flow_sw.h
└── spam-filter/
├── Makefile
├── README.md
├── data/
│ └── .gitignore
├── output_golden.txt
└── src/
├── host/
│ ├── check_result.cpp
│ ├── check_result.h
│ ├── spam_filter.cpp
│ ├── typedefs.h
│ ├── utils.cpp
│ └── utils.h
├── ocl/
│ ├── lut.h
│ └── sgd.cpp
├── sdsoc/
│ ├── lut.h
│ ├── sgd.cpp
│ └── sgd.h
└── sw/
├── lut.h
├── sgd_sw.cpp
└── sgd_sw.h
SYMBOL INDEX (809 symbols across 99 files)
FILE: 3d-rendering/src/host/3d_rendering_host.cpp
function main (line 46) | int main(int argc, char ** argv)
FILE: 3d-rendering/src/host/typedefs.h
type ap_uint (line 32) | typedef ap_uint<1> bit1;
type ap_uint (line 33) | typedef ap_uint<2> bit2;
type ap_uint (line 34) | typedef ap_uint<8> bit8;
type ap_uint (line 35) | typedef ap_uint<16> bit16;
type ap_uint (line 36) | typedef ap_uint<32> bit32;
type bit8 (line 38) | typedef unsigned char bit8;
type bit32 (line 39) | typedef unsigned int bit32;
type Triangle_3D (line 43) | typedef struct
type Triangle_2D (line 57) | typedef struct
type CandidatePixel (line 69) | typedef struct
type Pixel (line 78) | typedef struct
FILE: 3d-rendering/src/host/utils.cpp
function print_usage (line 16) | void print_usage(char* filename)
function parse_sdaccel_command_line_args (line 22) | void parse_sdaccel_command_line_args(
FILE: 3d-rendering/src/ocl/rendering.cpp
function check_clockwise (line 19) | int check_clockwise( Triangle_2D triangle_2d )
function clockwise_vertices (line 31) | void clockwise_vertices( Triangle_2D *triangle_2d )
function bit1 (line 52) | bit1 pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d )
function bit8 (line 65) | bit8 find_min( bit8 in0, bit8 in1, bit8 in2 )
function bit8 (line 85) | bit8 find_max( bit8 in0, bit8 in1, bit8 in2 )
function projection (line 106) | void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, bit...
function bit2 (line 148) | bit2 rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], Triangle_...
function bit16 (line 180) | bit16 rasterization2 ( bit2 flag, bit8 max_min[], bit16 max_index[], Tri...
function bit16 (line 211) | bit16 zculling ( bit16 counter, CandidatePixel fragments[], bit16 size, ...
function coloringFB (line 250) | void coloringFB(bit16 counter, bit16 size_pixels, Pixel pixels[], bit8 ...
function output_FB (line 275) | void output_FB(bit8 frame_buffer[MAX_X][MAX_Y], bit32 output[NUM_FB])
function rendering (line 297) | void rendering( bit32 input[3*NUM_3D_TRI], bit32 output[NUM_FB])
FILE: 3d-rendering/src/sdsoc/rendering.cpp
function check_clockwise (line 19) | int check_clockwise( Triangle_2D triangle_2d )
function clockwise_vertices (line 31) | void clockwise_vertices( Triangle_2D *triangle_2d )
function bit1 (line 52) | bit1 pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d )
function bit8 (line 65) | bit8 find_min( bit8 in0, bit8 in1, bit8 in2 )
function bit8 (line 85) | bit8 find_max( bit8 in0, bit8 in1, bit8 in2 )
function projection (line 106) | void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, bit...
function bit2 (line 148) | bit2 rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], Triangle_...
function bit16 (line 180) | bit16 rasterization2 ( bit2 flag, bit8 max_min[], bit16 max_index[], Tri...
function bit16 (line 211) | bit16 zculling ( bit16 counter, CandidatePixel fragments[], bit16 size, ...
function coloringFB (line 250) | void coloringFB(bit16 counter, bit16 size_pixels, Pixel pixels[], bit8 ...
function output_FB (line 275) | void output_FB(bit8 frame_buffer[MAX_X][MAX_Y], bit32 output[NUM_FB])
function rendering (line 295) | void rendering( bit32 input[3*NUM_3D_TRI], bit32 output[NUM_FB])
FILE: 3d-rendering/src/sw/rendering_sw.cpp
function check_clockwise (line 19) | int check_clockwise( Triangle_2D triangle_2d )
function clockwise_vertices (line 31) | void clockwise_vertices( Triangle_2D *triangle_2d )
function pixel_in_triangle (line 52) | bool pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d )
function bit8 (line 65) | bit8 find_min( bit8 in0, bit8 in1, bit8 in2 )
function bit8 (line 85) | bit8 find_max( bit8 in0, bit8 in1, bit8 in2 )
function projection (line 106) | void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, int...
function rasterization1 (line 147) | bool rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], int max_i...
function rasterization2 (line 169) | int rasterization2 ( bool flag, bit8 max_min[], int max_index[], Triangl...
function zculling (line 199) | int zculling ( int counter, CandidatePixel fragments[], int size, Pixel ...
function coloringFB (line 235) | void coloringFB(int counter, int size_pixels, Pixel pixels[], bit8 frame...
function rendering_sw (line 255) | void rendering_sw( Triangle_3D triangle_3ds[NUM_3D_TRI], bit8 output[MAX...
FILE: BNN/cpp/accel/Accel.cpp
function print_ap_bits (line 16) | void print_ap_bits(const T& in, const unsigned W) {
function print_params (line 24) | void print_params(T params[CONVOLVERS][K][K]) {
function print_line_buffer_m (line 37) | void print_line_buffer_m(T lbuf[CONV_BANKS]) {
function TwoBit (line 49) | TwoBit encode_bit(const Bit& b) {
function ConvOut (line 56) | ConvOut conv3x3b(
function conv_word (line 77) | void conv_word(
function process_word (line 93) | void process_word(
function bin_conv (line 183) | void bin_conv(
function fp_conv (line 455) | void fp_conv(
function bin_dense (line 582) | void bin_dense(
function top (line 696) | void top(
FILE: BNN/cpp/accel/Accel.h
type LayerTypeEnum (line 57) | enum LayerTypeEnum {LAYER_CONV1, LAYER_CONV, LAYER_DENSE, LAYER_LAST}
type ap_int (line 59) | typedef ap_int<WORD_SIZE> Word;
type ap_int (line 60) | typedef ap_int<WT_SIZE> WtType;
type ap_uint (line 61) | typedef ap_uint<16> Address;
type ap_int (line 62) | typedef ap_int<12> ConvSum;
type ap_int (line 63) | typedef ap_int<5> ConvOut;
type ap_uint (line 64) | typedef ap_uint<10> IdxType;
type ap_int (line 66) | typedef ap_int<16> NormComp;
type ap_int (line 67) | typedef ap_int<16> DenseSum;
FILE: BNN/cpp/accel/AccelPrint.cpp
function print_params3d (line 3) | void print_params3d(Word in[], unsigned M, unsigned num) {
function print_wt_word (line 16) | void print_wt_word(const Word& in) {
function print_wt (line 29) | void print_wt(const WtType& in) {
FILE: BNN/cpp/accel/AccelPrint.h
function set_bit (line 12) | void set_bit(T array[], unsigned bit_idx, Bit val) {
function Bit (line 20) | Bit get_bit(T array[], unsigned bit_idx) {
FILE: BNN/cpp/accel/AccelSchedule.cpp
function compute_accel_schedule (line 28) | void compute_accel_schedule(
function run_accel_schedule (line 94) | void run_accel_schedule(
function find_conv_batch_size (line 145) | unsigned find_conv_batch_size(unsigned width, unsigned width_o,
function find_dense_batch_size (line 174) | unsigned find_dense_batch_size(unsigned n_inputs, unsigned n_outputs) {
function load_conv1_weights (line 201) | void load_conv1_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_out)
function load_conv_weights (line 237) | void load_conv_weights(Word* wt, Word* wt_o,
function load_dense_weights (line 281) | void load_dense_weights(Word* wt, Word* wt_o,
function load_kh (line 294) | void load_kh(Word* kh, Word kh_i[], unsigned o, unsigned n_out) {
function total_time (line 301) | float total_time() {
FILE: BNN/cpp/accel/AccelSchedule.h
type AccelInfo (line 9) | struct AccelInfo {
FILE: BNN/cpp/accel/AccelTest.cpp
function layer_is_conv (line 10) | bool layer_is_conv(unsigned layer_idx) {
function layer_is_binconv (line 13) | bool layer_is_binconv(unsigned layer_idx) {
function layer_is_fpconv (line 17) | bool layer_is_fpconv(unsigned layer_idx) {
function layer_is_last (line 21) | bool layer_is_last(unsigned layer_idx) {
function log2 (line 29) | unsigned log2(unsigned x) {
function WTS_TO_WORDS (line 39) | unsigned WTS_TO_WORDS(const unsigned n) {
function set_weight_array (line 49) | void set_weight_array(Word* w, const float* wts, unsigned layer_idx) {
function set_conv_weight_array (line 60) | void set_conv_weight_array(Word* w, const float* wts, unsigned size) {
function set_dense_weight_array (line 73) | void set_dense_weight_array(Word* w, const float* wts, unsigned M, unsig...
function round_away_from_zero (line 92) | int round_away_from_zero(float f) {
function compute_thresh (line 97) | float compute_thresh(const float k, const float h) {
function set_bnorm_array (line 104) | void set_bnorm_array(Word* kh, const float* k, const float* h, unsigned ...
function set_bnorm_array1 (line 113) | void set_bnorm_array1(Word* kh, const float* k, const float* h, unsigned...
function set_bnorm_array2 (line 132) | void set_bnorm_array2(Word* kh, const float* k, const float* h, unsigned...
function binarize_input_images (line 152) | void binarize_input_images(Word* dmem_i, const float* inputs, unsigned S) {
function padded_conv (line 173) | void padded_conv(Word in[], Word w[], Word out[],
function test_conv_layer (line 207) | void test_conv_layer(
function test_dense_layer (line 281) | void test_dense_layer(
FILE: BNN/cpp/accel/Dense.cpp
function dotproduct_m (line 14) | int dotproduct_m(
function dense_layer_cpu (line 47) | void dense_layer_cpu(
function last_layer_cpu (line 75) | int last_layer_cpu(
FILE: BNN/cpp/accel/InputConv.cpp
function run_input_conv_layer (line 5) | void run_input_conv_layer(
FILE: BNN/cpp/accel/accel_test_bnn.cpp
function main (line 14) | int main(int argc, char** argv) {
FILE: BNN/cpp/accel/accel_test_layer.cpp
function main (line 12) | int main(int argc, char** argv) {
FILE: BNN/cpp/accel/accel_test_random.cpp
function simple_hash (line 9) | unsigned simple_hash(unsigned x) {
function test_conv_layer_random (line 17) | void test_conv_layer_random(
function main (line 67) | int main() {
FILE: BNN/cpp/accel/parse_vivado.py
function get_immediate_subdirs (line 10) | def get_immediate_subdirs(dir):
function changedir (line 14) | def changedir(dir):
function find_text (line 23) | def find_text(node, string):
function parse_impl_xml (line 34) | def parse_impl_xml(file):
function parse_impl (line 57) | def parse_impl():
function parse_syn_xml (line 80) | def parse_syn_xml(file):
function parse_syn (line 106) | def parse_syn():
function parse_sim (line 132) | def parse_sim(soln_dir):
function parse_impl_and_syn (line 163) | def parse_impl_and_syn(soln_dir):
function process_project (line 196) | def process_project(prj_dir):
function print_dict (line 227) | def print_dict(d, key):
function print_data (line 233) | def print_data(d):
function main (line 260) | def main():
FILE: BNN/cpp/minizip/aes/aes.h
type aes_inf (line 71) | typedef union
type aes_encrypt_ctx (line 76) | typedef struct
type aes_decrypt_ctx (line 81) | typedef struct
FILE: BNN/cpp/minizip/aes/aes_via_ace.h
function INLINE (line 335) | INLINE int has_cpuid(void)
function INLINE (line 351) | INLINE int is_via_cpu(void)
function INLINE (line 370) | INLINE int read_via_flags(void)
function INLINE (line 387) | INLINE int via_rng_in(void *buf)
function INLINE (line 399) | INLINE volatile void via_ecb_op5(
function INLINE (line 413) | INLINE volatile void via_cbc_op6(
function INLINE (line 428) | INLINE volatile void via_cbc_op7(
function INLINE (line 446) | INLINE volatile void via_cfb_op6(
function INLINE (line 461) | INLINE volatile void via_cfb_op7(
function INLINE (line 479) | INLINE volatile void via_ofb_op6(
function INLINE (line 498) | INLINE int via_ace_test(void)
function INLINE (line 506) | INLINE int via_rng_test(void)
function INLINE (line 514) | INLINE int read_via_rng(void *buf, int count)
FILE: BNN/cpp/minizip/aes/aeskey.c
function AES_RETURN (line 75) | AES_RETURN aes_encrypt_key128(const unsigned char *key, aes_encrypt_ctx ...
function AES_RETURN (line 123) | AES_RETURN aes_encrypt_key192(const unsigned char *key, aes_encrypt_ctx ...
function AES_RETURN (line 174) | AES_RETURN aes_encrypt_key256(const unsigned char *key, aes_encrypt_ctx ...
function AES_RETURN (line 211) | AES_RETURN aes_encrypt_key(const unsigned char *key, int key_len, aes_en...
function AES_RETURN (line 312) | AES_RETURN aes_decrypt_key128(const unsigned char *key, aes_decrypt_ctx ...
function AES_RETURN (line 391) | AES_RETURN aes_decrypt_key192(const unsigned char *key, aes_decrypt_ctx ...
function AES_RETURN (line 482) | AES_RETURN aes_decrypt_key256(const unsigned char *key, aes_decrypt_ctx ...
function AES_RETURN (line 531) | AES_RETURN aes_decrypt_key(const unsigned char *key, int key_len, aes_de...
FILE: BNN/cpp/minizip/aes/aestab.c
function AES_RETURN (line 187) | AES_RETURN aes_init(void)
function uint_8t (line 211) | static uint_8t hibit(const uint_32t x)
function uint_8t (line 221) | static uint_8t gf_inv(const uint_8t x)
function uint_8t (line 256) | uint_8t fwd_affine(const uint_8t x)
function uint_8t (line 262) | uint_8t inv_affine(const uint_8t x)
function AES_RETURN (line 270) | AES_RETURN aes_init(void)
FILE: BNN/cpp/minizip/aes/brg_types.h
type uint_8t (line 55) | typedef unsigned char uint_8t;
type uint_16t (line 64) | typedef unsigned short uint_16t;
type uint_32t (line 74) | typedef unsigned int uint_32t;
type uint_32t (line 77) | typedef unsigned long uint_32t;
type uint_64t (line 89) | typedef unsigned __int64 uint_64t;
type uint_64t (line 93) | typedef unsigned __int64 uint_64t;
type uint_64t (line 97) | typedef unsigned long long uint_64t;
type uint_64t (line 101) | typedef unsigned int long long uint_64t;
type uint_64t (line 106) | typedef unsigned int uint_64t;
type uint_64t (line 112) | typedef unsigned long uint_64t;
type uint_64t (line 118) | typedef unsigned long long uint_64t;
type uint_64t (line 124) | typedef unsigned long long uint_64t;
FILE: BNN/cpp/minizip/aes/entropy.c
function entropy_fun (line 15) | int entropy_fun(unsigned char buf[], unsigned int len)
function entropy_fun (line 39) | int entropy_fun(unsigned char buf[], unsigned int len)
FILE: BNN/cpp/minizip/aes/fileenc.c
function encr_data (line 52) | static void encr_data(unsigned char data[], unsigned long d_len, fcrypt_...
function fcrypt_init (line 73) | int fcrypt_init(
function fcrypt_encrypt (line 119) | void fcrypt_encrypt(unsigned char data[], unsigned int data_len, fcrypt_...
function fcrypt_decrypt (line 127) | void fcrypt_decrypt(unsigned char data[], unsigned int data_len, fcrypt_...
function fcrypt_end (line 135) | int fcrypt_end(unsigned char mac[], fcrypt_ctx cx[1])
FILE: BNN/cpp/minizip/aes/fileenc.h
type fcrypt_ctx (line 84) | typedef struct
FILE: BNN/cpp/minizip/aes/hmac.c
function hmac_sha_begin (line 44) | void hmac_sha_begin(hmac_ctx cx[1])
function hmac_sha_key (line 50) | int hmac_sha_key(const unsigned char key[], unsigned long key_len, hmac_...
function hmac_sha_data (line 74) | void hmac_sha_data(const unsigned char data[], unsigned long data_len, h...
function hmac_sha_end (line 106) | void hmac_sha_end(unsigned char mac[], unsigned long mac_len, hmac_ctx c...
function hmac_sha (line 132) | void hmac_sha(const unsigned char key[], unsigned long key_len,
FILE: BNN/cpp/minizip/aes/hmac.h
type hmac_ctx (line 81) | typedef struct
FILE: BNN/cpp/minizip/aes/prng.c
function prng_mix (line 52) | static void prng_mix(unsigned char buf[])
function update_pool (line 81) | static void update_pool(prng_ctx ctx[1])
function prng_init (line 100) | void prng_init(prng_entropy_fn fun, prng_ctx ctx[1])
function prng_rand (line 122) | void prng_rand(unsigned char data[], unsigned int data_len, prng_ctx ctx...
function prng_end (line 146) | void prng_end(prng_ctx ctx[1])
FILE: BNN/cpp/minizip/aes/prng.h
type prng_ctx (line 62) | typedef struct
FILE: BNN/cpp/minizip/aes/pwd2key.c
function derive_key (line 44) | void derive_key(const unsigned char pwd[], /* the PASSWORD */
function main (line 165) | int main()
FILE: BNN/cpp/minizip/aes/sha1.c
function VOID_RETURN (line 116) | VOID_RETURN sha1_compile(sha1_ctx ctx[1])
function VOID_RETURN (line 172) | VOID_RETURN sha1_begin(sha1_ctx ctx[1])
function VOID_RETURN (line 185) | VOID_RETURN sha1_hash(const unsigned char data[], unsigned long len, sha...
function VOID_RETURN (line 206) | VOID_RETURN sha1_end(unsigned char hval[], sha1_ctx ctx[1])
function VOID_RETURN (line 250) | VOID_RETURN sha1(unsigned char hval[], const unsigned char data[], unsig...
FILE: BNN/cpp/minizip/aes/sha1.h
type sha1_ctx (line 49) | typedef struct
FILE: BNN/cpp/minizip/crypt.h
function decrypt_byte (line 40) | static int decrypt_byte(unsigned int* pkeys)
function update_keys (line 53) | static int update_keys(unsigned int* pkeys,const unsigned int* pcrc_32_t...
function init_keys (line 70) | static void init_keys(const char* passwd,unsigned int* pkeys,const unsig...
function crypthead (line 96) | static int crypthead(const char* passwd, /* password string */
FILE: BNN/cpp/minizip/ioapi.c
function voidpf (line 45) | voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*...
function call_zseek64 (line 59) | long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filest...
function ZPOS64_T (line 70) | ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf fi...
function fill_zlib_filefunc64_32_def_from_filefunc32 (line 81) | void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def*...
type FILE_IOPOSIX (line 107) | typedef struct
function voidpf (line 114) | static voidpf file_build_ioposix(FILE *file, const char *filename)
function voidpf (line 127) | static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* file...
function voidpf (line 146) | static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* fi...
function voidpf (line 165) | static voidpf ZCALLBACK fopendisk64_file_func (voidpf opaque, voidpf str...
function voidpf (line 190) | static voidpf ZCALLBACK fopendisk_file_func (voidpf opaque, voidpf strea...
function uLong (line 215) | static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, vo...
function uLong (line 226) | static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, c...
function ftell_file_func (line 237) | static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
function ZPOS64_T (line 248) | static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
function fseek_file_func (line 259) | static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLo...
function fseek64_file_func (line 288) | static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, Z...
function fclose_file_func (line 320) | static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
function ferror_file_func (line 334) | static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
function fill_fopen_filefunc (line 345) | void fill_fopen_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
function fill_fopen64_filefunc (line 358) | void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
FILE: BNN/cpp/minizip/ioapi.h
type IT_INT_CUSTOM_TYPE (line 60) | typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T;
type ZPOS64_T (line 64) | typedef uint64_t ZPOS64_T;
type ZPOS64_T (line 67) | typedef unsigned __int64 ZPOS64_T;
type ZPOS64_T (line 69) | typedef unsigned long long int ZPOS64_T;
type zlib_filefunc_def (line 108) | typedef struct zlib_filefunc_def_s
type zlib_filefunc64_def (line 126) | typedef struct zlib_filefunc64_def_s
type zlib_filefunc64_32_def (line 143) | typedef struct zlib_filefunc64_32_def_s
FILE: BNN/cpp/minizip/ioapi_buf.c
type ourstream_t (line 53) | typedef struct ourstream_s {
function print_buf_internal (line 74) | void print_buf_internal(voidpf opaque, voidpf stream, char *format, ...)
function voidpf (line 84) | voidpf fopen_buf_internal_func (opaque, stream, number_disk, mode)
function voidpf (line 102) | voidpf ZCALLBACK fopen_buf_func (opaque, filename, mode)
function voidpf (line 112) | voidpf ZCALLBACK fopen64_buf_func (opaque, filename, mode)
function voidpf (line 122) | voidpf ZCALLBACK fopendisk_buf_func (opaque, stream_cd, number_disk, mode)
function voidpf (line 134) | voidpf ZCALLBACK fopendisk64_buf_func (opaque, stream_cd, number_disk, m...
function fflush_buf (line 147) | long fflush_buf (opaque, stream)
function uLong (line 181) | uLong ZCALLBACK fread_buf_func (opaque, stream, buf, size)
function uLong (line 247) | uLong ZCALLBACK fwrite_buf_func (opaque, stream, buf, size)
function ZPOS64_T (line 308) | ZPOS64_T ftell_buf_internal_func (opaque, stream, position)
function ftell_buf_func (line 323) | long ZCALLBACK ftell_buf_func (opaque, stream)
function ZPOS64_T (line 333) | ZPOS64_T ZCALLBACK ftell64_buf_func (opaque, stream)
function fseek_buf_internal_func (line 343) | int fseek_buf_internal_func (opaque, stream, offset, origin)
function fseek_buf_func (line 419) | long ZCALLBACK fseek_buf_func (opaque, stream, offset, origin)
function fseek64_buf_func (line 436) | long ZCALLBACK fseek64_buf_func (opaque, stream, offset, origin)
function fclose_buf_func (line 453) | int ZCALLBACK fclose_buf_func (opaque, stream)
function ferror_buf_func (line 474) | int ZCALLBACK ferror_buf_func (opaque, stream)
function fill_buffer_filefunc (line 486) | void fill_buffer_filefunc (pzlib_filefunc_def, ourbuf)
function fill_buffer_filefunc64 (line 501) | void fill_buffer_filefunc64 (pzlib_filefunc_def, ourbuf)
FILE: BNN/cpp/minizip/ioapi_buf.h
type ourbuffer_t (line 42) | typedef struct ourbuffer_s {
FILE: BNN/cpp/minizip/ioapi_mem.c
function voidpf (line 35) | voidpf ZCALLBACK fopen_mem_func (opaque, filename, mode)
function voidpf (line 62) | voidpf ZCALLBACK fopendisk_mem_func (opaque, stream, number_disk, mode)
function uLong (line 72) | uLong ZCALLBACK fread_mem_func (opaque, stream, buf, size)
function uLong (line 90) | uLong ZCALLBACK fwrite_mem_func (opaque, stream, buf, size)
function ftell_mem_func (line 126) | long ZCALLBACK ftell_mem_func (opaque, stream)
function fseek_mem_func (line 134) | long ZCALLBACK fseek_mem_func (opaque, stream, offset, origin)
function fclose_mem_func (line 163) | int ZCALLBACK fclose_mem_func (opaque, stream)
function ferror_mem_func (line 171) | int ZCALLBACK ferror_mem_func (opaque, stream)
function fill_memory_filefunc (line 179) | void fill_memory_filefunc (pzlib_filefunc_def, ourmem)
FILE: BNN/cpp/minizip/ioapi_mem.h
type ourmemory_t (line 37) | typedef struct ourmemory_s {
FILE: BNN/cpp/minizip/iowin32.c
type WIN32FILE_IOWIN (line 44) | typedef struct
function win32_translate_open_mode (line 53) | static void win32_translate_open_mode(int mode,
function voidpf (line 79) | static voidpf win32_build_iowin(HANDLE hFile)
function voidpf (line 97) | voidpf ZCALLBACK win32_open64_file_func (voidpf opaque, const void* file...
function voidpf (line 130) | voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque, const void* fil...
function voidpf (line 159) | voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* file...
function voidpf (line 188) | voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filenam...
function voidpf (line 220) | voidpf ZCALLBACK win32_opendisk64_file_func (voidpf opaque, voidpf strea...
function voidpf (line 245) | voidpf ZCALLBACK win32_opendisk64_file_funcW (voidpf opaque, voidpf stre...
function voidpf (line 270) | voidpf ZCALLBACK win32_opendisk64_file_funcA (voidpf opaque, voidpf stre...
function voidpf (line 295) | voidpf ZCALLBACK win32_opendisk_file_func (voidpf opaque, voidpf stream,...
function uLong (line 320) | uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void...
function uLong (line 341) | uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const...
function BOOL (line 362) | static BOOL win32_setfilepointer_internal(HANDLE hFile, LARGE_INTEGER po...
function win32_tell_file_func (line 381) | long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
function ZPOS64_T (line 403) | ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
function win32_seek_file_func (line 427) | long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong o...
function win32_seek64_file_func (line 467) | long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS...
function win32_close_file_func (line 507) | int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
function win32_error_file_func (line 526) | int ZCALLBACK win32_error_file_func (voidpf opaque, voidpf stream)
function fill_win32_filefunc (line 535) | void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
function fill_win32_filefunc64 (line 548) | void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
function fill_win32_filefunc64A (line 561) | void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
function fill_win32_filefunc64W (line 574) | void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def)
FILE: BNN/cpp/minizip/miniunz.c
function change_file_date (line 77) | void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date)
function check_file_exists (line 114) | int check_file_exists(const char* filename)
function makedir (line 123) | int makedir(const char *newdir)
function display_zpos64 (line 176) | void display_zpos64(ZPOS64_T n, int size_char)
function do_banner (line 201) | void do_banner()
function do_help (line 207) | void do_help()
function do_list (line 219) | int do_list(unzFile uf)
function do_extract_currentfile (line 293) | int do_extract_currentfile(unzFile uf, int opt_extract_without_path, int...
function do_extract_all (line 429) | int do_extract_all(unzFile uf, int opt_extract_without_path, int opt_ove...
function do_extract_onefile (line 455) | int do_extract_onefile(unzFile uf, const char* filename, int opt_extract...
function main (line 468) | int main(int argc, const char *argv[])
FILE: BNN/cpp/minizip/minizip.c
function uLong (line 70) | uLong filetime(const char *filename, tm_zip *tmzip, uLong *dostime)
function check_file_exists (line 126) | int check_file_exists(const char* filename)
function is_large_file (line 135) | int is_large_file(const char* filename)
function get_file_crc (line 153) | int get_file_crc(const char* filenameinzip, void *buf, unsigned long siz...
function do_banner (line 189) | void do_banner()
function do_help (line 195) | void do_help()
function main (line 206) | int main(int argc, char *argv[])
FILE: BNN/cpp/minizip/unzip.c
type unz_file_info64_internal (line 99) | typedef struct unz_file_info64_internal_s
type file_in_zip64_read_info_s (line 111) | typedef struct
type unz64_s (line 145) | typedef struct
function local (line 174) | local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm)
function local (line 198) | local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefun...
function local (line 214) | local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filef...
function local (line 234) | local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefu...
function local (line 260) | local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_file...
function local (line 299) | local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def*...
function local (line 361) | local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_de...
function local (line 397) | local unzFile unzOpenInternal(const void *path, zlib_filefunc64_32_def* ...
function unzFile (line 556) | extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def* pzl...
function unzFile (line 567) | extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def...
function unzFile (line 580) | extern unzFile ZEXPORT unzOpen(const char *path)
function unzFile (line 585) | extern unzFile ZEXPORT unzOpen64(const void *path)
function unzClose (line 590) | extern int ZEXPORT unzClose(unzFile file)
function local (line 613) | local int unzGoToNextDisk(unzFile file)
function unzGetGlobalInfo (line 655) | extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglob...
function unzGetGlobalInfo64 (line 668) | extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64* p...
function unzGetGlobalComment (line 678) | extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uLon...
function local (line 705) | local int unz64local_GetCurrentFileInfoInternal(unzFile file, unz_file_i...
function unzGetCurrentFileInfo (line 963) | extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info * p...
function unzGetCurrentFileInfo64 (line 998) | extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64...
function local (line 1008) | local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* p...
function unzOpenCurrentFile3 (line 1094) | extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int* method, int* l...
function unzOpenCurrentFile (line 1299) | extern int ZEXPORT unzOpenCurrentFile(unzFile file)
function unzOpenCurrentFilePassword (line 1304) | extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char* ...
function unzOpenCurrentFile2 (line 1309) | extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int* method, int* l...
function unzReadCurrentFile (line 1321) | extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, unsigned ...
function ZPOS64_T (line 1542) | extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file)
function unzGetLocalExtrafield (line 1553) | extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, unsign...
function unzGoToFirstFile2 (line 1647) | extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfil...
function unzGoToFirstFile (line 1665) | extern int ZEXPORT unzGoToFirstFile(unzFile file)
function unzGoToNextFile2 (line 1670) | extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile...
function unzGoToNextFile (line 1695) | extern int ZEXPORT unzGoToNextFile(unzFile file)
function unzLocateFile (line 1700) | extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unz...
function unzGetFilePos (line 1745) | extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos)
function unzGoToFilePos (line 1757) | extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos)
function unzGetFilePos64 (line 1768) | extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos)
function unzGoToFilePos64 (line 1784) | extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* ...
function uLong (line 1804) | extern uLong ZEXPORT unzGetOffset(unzFile file)
function ZPOS64_T (line 1814) | extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file)
function unzSetOffset (line 1829) | extern int ZEXPORT unzSetOffset(unzFile file, uLong pos)
function unzSetOffset64 (line 1834) | extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos)
function z_off_t (line 1851) | extern z_off_t ZEXPORT unztell(unzFile file)
function ZPOS64_T (line 1862) | extern ZPOS64_T ZEXPORT unztell64(unzFile file)
function unzseek (line 1873) | extern int ZEXPORT unzseek(unzFile file, z_off_t offset, int origin)
function unzseek64 (line 1878) | extern int ZEXPORT unzseek64(unzFile file, ZPOS64_T offset, int origin)
function unzeof (line 1941) | extern int ZEXPORT unzeof(unzFile file)
FILE: BNN/cpp/minizip/unzip.h
type unzFile__ (line 41) | typedef struct TagunzFile__ { int unused; } unzFile__;
type unzFile__ (line 42) | typedef unzFile__ *unzFile;
type voidp (line 44) | typedef voidp unzFile;
type tm_unz (line 57) | typedef struct tm_unz_s
type unz_global_info64 (line 69) | typedef struct unz_global_info64_s
type unz_global_info (line 76) | typedef struct unz_global_info_s
type unz_file_info64 (line 84) | typedef struct unz_file_info64_s
type unz_file_info (line 107) | typedef struct unz_file_info_s
type unz_file_pos (line 276) | typedef struct unz_file_pos_s
type unz64_file_pos (line 285) | typedef struct unz64_file_pos_s
FILE: BNN/cpp/minizip/zip.c
type linkedlist_datablock_internal (line 110) | typedef struct linkedlist_datablock_internal_s
type linkedlist_data (line 119) | typedef struct linkedlist_data_s
type curfile64_info (line 125) | typedef struct
type zip64_internal (line 164) | typedef struct
function local (line 187) | local linkedlist_datablock_internal* allocate_new_datablock()
function local (line 204) | local void free_datablock(linkedlist_datablock_internal* ldi)
function local (line 216) | local void init_linkedlist(linkedlist_data* ll)
function local (line 223) | local void free_linkedlist(linkedlist_data* ll)
function local (line 231) | local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uL...
function local (line 283) | local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm)
function local (line 318) | local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filef...
function local (line 344) | local ZPOS64_T zip64local_getValue_frommemory (void* src, int nbByte)
function local (line 357) | local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbB...
function local (line 377) | local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefun...
function local (line 392) | local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filef...
function local (line 412) | local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefu...
function local (line 438) | local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_file...
function local (line 478) | local int zipGetDiskSizeAvailable(zipFile file, ZPOS64_T *size_available)
function local (line 492) | local int zipGoToSpecificDisk(zipFile file, int number_disk, int open_ex...
function local (line 516) | local int zipGoToFirstDisk(zipFile file)
function local (line 540) | local int zipGoToNextDisk(zipFile file)
function local (line 576) | local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def*...
function local (line 638) | local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_de...
function zipFile (line 674) | extern zipFile ZEXPORT zipOpen4(const void *pathname, int append, ZPOS64...
function zipFile (line 920) | extern zipFile ZEXPORT zipOpen2(const char *pathname, int append, const ...
function zipFile (line 932) | extern zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, con...
function zipFile (line 946) | extern zipFile ZEXPORT zipOpen3(const char *pathname, int append, ZPOS64...
function zipFile (line 958) | extern zipFile ZEXPORT zipOpen3_64(const void *pathname, int append, ZPO...
function zipFile (line 972) | extern zipFile ZEXPORT zipOpen(const char* pathname, int append)
function zipFile (line 977) | extern zipFile ZEXPORT zipOpen64(const void* pathname, int append)
function zipOpenNewFileInZip4_64 (line 982) | extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* fil...
function zipOpenNewFileInZip4 (line 1329) | extern int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char* filena...
function zipOpenNewFileInZip3 (line 1339) | extern int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char* filena...
function zipOpenNewFileInZip3_64 (line 1349) | extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* fil...
function zipOpenNewFileInZip2 (line 1359) | extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filena...
function zipOpenNewFileInZip2_64 (line 1368) | extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* fil...
function zipOpenNewFileInZip64 (line 1377) | extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char* filen...
function zipOpenNewFileInZip (line 1386) | extern int ZEXPORT zipOpenNewFileInZip(zipFile file, const char* filenam...
function local (line 1397) | local int zip64FlushWriteBuffer(zip64_internal* zi)
function zipWriteInFileInZip (line 1482) | extern int ZEXPORT zipWriteInFileInZip(zipFile file,const void* buf,unsi...
function zipCloseFileInZipRaw (line 1577) | extern int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed...
function zipCloseFileInZipRaw64 (line 1582) | extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompr...
function zipCloseFileInZip (line 1858) | extern int ZEXPORT zipCloseFileInZip(zipFile file)
function zipClose (line 1863) | extern int ZEXPORT zipClose(zipFile file, const char* global_comment)
function zipClose_64 (line 1868) | extern int ZEXPORT zipClose_64(zipFile file, const char* global_comment)
function zipClose2_64 (line 1873) | extern int ZEXPORT zipClose2_64(zipFile file, const char* global_comment...
FILE: BNN/cpp/minizip/zip.h
type zipFile__ (line 39) | typedef struct TagzipFile__ { int unused; } zipFile__;
type zipFile__ (line 40) | typedef zipFile__ *zipFile;
type voidp (line 42) | typedef voidp zipFile;
type tm_zip (line 62) | typedef struct tm_zip_s
type zip_fileinfo (line 72) | typedef struct
FILE: BNN/cpp/utils/Common.cpp
function get_root_dir (line 4) | std::string get_root_dir() {
FILE: BNN/cpp/utils/DataIO.h
function size (line 12) | struct Cifar10TestInputs {
function size (line 26) | struct Cifar10TestLabels {
FILE: BNN/cpp/utils/ParamIO.h
function array_size (line 16) | struct Params {
FILE: BNN/cpp/utils/SArray.h
type T (line 9) | typedef T ElemType;
function size (line 12) | static constexpr unsigned size() { return SIZE; }
function T (line 15) | T* ptr() { return data; }
function T (line 16) | const T* ptr() const { return data; }
function T (line 20) | const T& operator[](unsigned i) const { return data[i]; }
function set (line 22) | void set(T x) {
function clear (line 27) | void clear() {
FILE: BNN/cpp/utils/Timer.h
function class (line 22) | class Timer {
FILE: BNN/cpp/utils/Typedefs.h
type InputFixed (line 10) | typedef float InputFixed;
type ap_int (line 13) | typedef ap_int<1> Bit;
type ap_int (line 14) | typedef ap_int<2> TwoBit;
type KType (line 16) | typedef float KType;
type HType (line 17) | typedef float HType;
type NormOutput (line 19) | typedef float NormOutput;
type ap_int (line 20) | typedef ap_int<14> ConvOutput;
type ap_int (line 28) | typedef ap_int<1> Bit;
type ap_int (line 29) | typedef ap_int<2> TwoBit;
type ap_int (line 35) | typedef ap_int<14> ConvOutput;
FILE: BNN/cpp/utils/ZipIO.cpp
function unzFile (line 7) | unzFile open_unzip(const std::string filename) {
function get_nfiles_in_unzip (line 17) | unsigned get_nfiles_in_unzip(unzFile ar) {
function get_current_file_size (line 25) | unsigned get_current_file_size(unzFile ar) {
function read_current_file (line 40) | void read_current_file(unzFile ar, void* buffer, unsigned bytes) {
function write_buffer_to_zip (line 51) | void write_buffer_to_zip(zipFile zf, std::string fname, void* buf, unsig...
FILE: BNN/cpp/utils/open_zip.cpp
function main (line 12) | int main(int argc, char** argv) {
FILE: digit-recognition/src/host/check_result.cpp
function check_results (line 14) | void check_results(LabelType* result, const LabelType* expected, int cnt)
FILE: digit-recognition/src/host/digit_recognition.cpp
function main (line 46) | int main(int argc, char ** argv)
FILE: digit-recognition/src/host/typedefs.h
type DigitType (line 19) | typedef unsigned long long DigitType;
type LabelType (line 20) | typedef unsigned char LabelType;
type ap_uint (line 32) | typedef ap_uint<256> WholeDigitType;
FILE: digit-recognition/src/host/utils.cpp
function print_usage (line 16) | void print_usage(char* filename)
function parse_sdaccel_command_line_args (line 22) | void parse_sdaccel_command_line_args(
FILE: digit-recognition/src/sdsoc/digitrec.cpp
function popcount (line 12) | int popcount(WholeDigitType x)
function update_knn (line 26) | void update_knn( WholeDigitType test_inst, WholeDigitType train_inst, in...
function LabelType (line 62) | LabelType knn_vote( int knn_set[PAR_FACTOR * K_CONST] )
function DigitRec (line 152) | void DigitRec(WholeDigitType global_training_set[NUM_TRAINING / 2], Whol...
FILE: digit-recognition/src/sw/digitrec_sw.cpp
function popcount (line 18) | int popcount(DigitType x)
function update_knn (line 29) | void update_knn( const DigitType* train_inst, const DigitType* test_inst...
function LabelType (line 62) | LabelType knn_vote(int labels[K_CONST])
function DigitRec_sw (line 86) | void DigitRec_sw(const DigitType training_set[NUM_TRAINING * DIGIT_WIDTH],
FILE: face-detection/src/host/check_result.cpp
function check_results (line 16) | void check_results(int &result_size,
FILE: face-detection/src/host/face_detect_host.cpp
function main (line 45) | int main(int argc, char ** argv)
FILE: face-detection/src/host/image.cpp
function itochar (line 22) | void itochar(int x, char* szBuffer, int radix)
function writePgm (line 37) | int writePgm(const char *fileName, unsigned char Data[IMAGE_HEIGHT][IMAG...
function drawRectangle (line 75) | void drawRectangle(unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], MyRect r)
FILE: face-detection/src/host/typedefs.h
type ap_uint (line 41) | typedef ap_uint<18> uint18_t;
type ap_uint (line 42) | typedef ap_uint<10> uint10_t;
type ap_uint (line 43) | typedef ap_uint<1> bit;
type ap_uint (line 44) | typedef ap_uint<5> uint5_t;
type ap_uint (line 45) | typedef ap_uint<13> int_I;
type ap_uint (line 46) | typedef ap_uint<21> int_SI;
type ap_uint (line 47) | typedef ap_uint<18> int_II;
type ap_uint (line 48) | typedef ap_uint<26> int_SII;
type MyPoint (line 52) | typedef struct MyPoint
type MySize (line 58) | typedef struct
type MyRect (line 64) | typedef struct
type MyInputImage (line 72) | typedef struct
FILE: face-detection/src/host/utils.cpp
function print_usage (line 16) | void print_usage(char* filename)
function parse_sdaccel_command_line_args (line 23) | void parse_sdaccel_command_line_args(
function parse_sdsoc_command_line_args (line 51) | void parse_sdsoc_command_line_args(
FILE: face-detection/src/ocl/face_detect.cpp
function uint5_t (line 14) | uint5_t get_bank(uint10_t addr)
function uint5_t (line 20) | uint5_t get_offset(uint10_t addr)
function uint18_t (line 26) | uint18_t get_data0(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 61) | uint18_t get_data1(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 98) | uint18_t get_data2(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 138) | uint18_t get_data3(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 174) | uint18_t get_data4(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 209) | uint18_t get_data5(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 247) | uint18_t get_data6(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 282) | uint18_t get_data7(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 318) | uint18_t get_data8(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 331) | uint18_t get_data9(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 370) | uint18_t get_data10(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 402) | uint18_t get_data11(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 441) | uint18_t get_data12(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 478) | uint18_t get_data13(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 513) | uint18_t get_data14(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 548) | uint18_t get_data15(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 585) | uint18_t get_data16(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 620) | uint18_t get_data17(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 656) | uint18_t get_data18(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 692) | uint18_t get_data19(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 727) | uint18_t get_data20(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 764) | uint18_t get_data21(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 795) | uint18_t get_data22(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 831) | uint18_t get_data23(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 863) | uint18_t get_data24(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 896) | uint18_t get_data25(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 928) | uint18_t get_data26(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 957) | uint18_t get_data27(int offset, uint18_t aa[ROWS*COLS])
function get_all_data (line 982) | void get_all_data(uint18_t output[12], uint10_t addr_list[12], uint18_t ...
function classifier0 (line 1065) | int classifier0( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier1 (line 1097) | int classifier1( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier2 (line 1129) | int classifier2( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier3 (line 1161) | int classifier3( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier4 (line 1193) | int classifier4( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier5 (line 1225) | int classifier5( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier6 (line 1257) | int classifier6( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier7 (line 1289) | int classifier7( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier8 (line 1321) | int classifier8( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier9 (line 1354) | int classifier9( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier10 (line 1386) | int classifier10( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier11 (line 1418) | int classifier11( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier12 (line 1450) | int classifier12( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier13 (line 1482) | int classifier13( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier14 (line 1514) | int classifier14( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier15 (line 1546) | int classifier15( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier16 (line 1578) | int classifier16( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier17 (line 1610) | int classifier17( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier18 (line 1642) | int classifier18( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier19 (line 1674) | int classifier19( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier20 (line 1706) | int classifier20( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier21 (line 1738) | int classifier21( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier22 (line 1770) | int classifier22( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier23 (line 1802) | int classifier23( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier24 (line 1834) | int classifier24( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier25 (line 1866) | int classifier25( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier26 (line 1898) | int classifier26( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier27 (line 1930) | int classifier27( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier28 (line 1962) | int classifier28( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier29 (line 1994) | int classifier29( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier30 (line 2026) | int classifier30( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier31 (line 2058) | int classifier31( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier32 (line 2090) | int classifier32( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier33 (line 2122) | int classifier33( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier34 (line 2154) | int classifier34( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier35 (line 2186) | int classifier35( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier36 (line 2218) | int classifier36( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier37 (line 2250) | int classifier37( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier38 (line 2282) | int classifier38( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier39 (line 2314) | int classifier39( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier40 (line 2346) | int classifier40( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier41 (line 2378) | int classifier41( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier42 (line 2410) | int classifier42( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier43 (line 2442) | int classifier43( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier44 (line 2474) | int classifier44( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier45 (line 2506) | int classifier45( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier46 (line 2538) | int classifier46( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier47 (line 2570) | int classifier47( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier48 (line 2602) | int classifier48( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier49 (line 2634) | int classifier49( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier50 (line 2666) | int classifier50( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier51 (line 2698) | int classifier51( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function myRound (line 2774) | inline int myRound ( float value )
function face_detect (line 2785) | void face_detect
function processImage (line 2883) | void processImage
function cascadeClassifier (line 3056) | int cascadeClassifier
function weakClassifier (line 3321) | int weakClassifier
function imageScaler (line 3356) | void imageScaler
function int_sqrt (line 3393) | unsigned int int_sqrt
function max (line 3420) | int max
function min (line 3432) | int min
FILE: face-detection/src/sdsoc/face_detect.cpp
function uint5_t (line 13) | uint5_t get_bank(uint10_t addr)
function uint5_t (line 19) | uint5_t get_offset(uint10_t addr)
function uint18_t (line 25) | uint18_t get_data0(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 60) | uint18_t get_data1(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 97) | uint18_t get_data2(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 137) | uint18_t get_data3(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 173) | uint18_t get_data4(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 208) | uint18_t get_data5(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 246) | uint18_t get_data6(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 281) | uint18_t get_data7(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 317) | uint18_t get_data8(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 330) | uint18_t get_data9(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 369) | uint18_t get_data10(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 401) | uint18_t get_data11(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 440) | uint18_t get_data12(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 477) | uint18_t get_data13(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 512) | uint18_t get_data14(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 547) | uint18_t get_data15(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 584) | uint18_t get_data16(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 619) | uint18_t get_data17(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 655) | uint18_t get_data18(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 691) | uint18_t get_data19(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 726) | uint18_t get_data20(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 763) | uint18_t get_data21(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 794) | uint18_t get_data22(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 830) | uint18_t get_data23(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 862) | uint18_t get_data24(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 895) | uint18_t get_data25(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 927) | uint18_t get_data26(int offset, uint18_t aa[ROWS*COLS])
function uint18_t (line 956) | uint18_t get_data27(int offset, uint18_t aa[ROWS*COLS])
function get_all_data (line 981) | void get_all_data(uint18_t output[12], uint10_t addr_list[12], uint18_t ...
function classifier0 (line 1063) | int classifier0( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier1 (line 1095) | int classifier1( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier2 (line 1127) | int classifier2( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier3 (line 1159) | int classifier3( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier4 (line 1191) | int classifier4( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier5 (line 1223) | int classifier5( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier6 (line 1255) | int classifier6( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier7 (line 1287) | int classifier7( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier8 (line 1319) | int classifier8( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier9 (line 1352) | int classifier9( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier10 (line 1384) | int classifier10( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier11 (line 1416) | int classifier11( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier12 (line 1448) | int classifier12( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier13 (line 1480) | int classifier13( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier14 (line 1512) | int classifier14( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier15 (line 1544) | int classifier15( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier16 (line 1576) | int classifier16( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier17 (line 1608) | int classifier17( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier18 (line 1640) | int classifier18( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier19 (line 1672) | int classifier19( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier20 (line 1704) | int classifier20( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier21 (line 1736) | int classifier21( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier22 (line 1768) | int classifier22( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier23 (line 1800) | int classifier23( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier24 (line 1832) | int classifier24( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier25 (line 1864) | int classifier25( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier26 (line 1896) | int classifier26( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier27 (line 1928) | int classifier27( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier28 (line 1960) | int classifier28( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier29 (line 1992) | int classifier29( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier30 (line 2024) | int classifier30( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier31 (line 2056) | int classifier31( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier32 (line 2088) | int classifier32( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier33 (line 2120) | int classifier33( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier34 (line 2152) | int classifier34( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier35 (line 2184) | int classifier35( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier36 (line 2216) | int classifier36( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier37 (line 2248) | int classifier37( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier38 (line 2280) | int classifier38( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier39 (line 2312) | int classifier39( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier40 (line 2344) | int classifier40( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier41 (line 2376) | int classifier41( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier42 (line 2408) | int classifier42( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier43 (line 2440) | int classifier43( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier44 (line 2472) | int classifier44( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier45 (line 2504) | int classifier45( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier46 (line 2536) | int classifier46( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier47 (line 2568) | int classifier47( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier48 (line 2600) | int classifier48( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier49 (line 2632) | int classifier49( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier50 (line 2664) | int classifier50( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function classifier51 (line 2696) | int classifier51( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){
function myRound (line 2772) | inline int myRound ( float value )
function face_detect (line 2781) | void face_detect
function processImage (line 2881) | void processImage
function cascadeClassifier (line 3054) | int cascadeClassifier
function weakClassifier (line 3319) | int weakClassifier
function imageScaler (line 3354) | void imageScaler
function int_sqrt (line 3391) | unsigned int int_sqrt
function max (line 3418) | int max
function min (line 3430) | int min
FILE: face-detection/src/sw/face_detect_sw.cpp
function myRound (line 55) | inline int myRound ( float value )
function face_detect_sw (line 61) | void face_detect_sw
function processImage (line 129) | void processImage
function cascadeClassifier (line 177) | int cascadeClassifier
function weakClassifier (line 302) | int weakClassifier
function integralImages (line 337) | void integralImages( int height, int width, unsigned char Data[IMAGE_HEI...
function imageScaler (line 372) | void imageScaler
function int_sqrt (line 413) | unsigned int int_sqrt
function max (line 442) | int max
function min (line 454) | int min
FILE: harness/ocl_src/CLKernel.cpp
type rosetta (line 12) | namespace rosetta
FILE: harness/ocl_src/CLKernel.h
function namespace (line 22) | namespace rosetta
FILE: harness/ocl_src/CLMemObj.cpp
type rosetta (line 12) | namespace rosetta
function cl_mem_flags (line 53) | cl_mem_flags CLMemObj::get_flags() { return flags; }
function cl_mem_ext_ptr_t (line 56) | cl_mem_ext_ptr_t* CLMemObj::get_xil_ext_ptr() { return bank; }
FILE: harness/ocl_src/CLMemObj.h
function namespace (line 20) | namespace rosetta
FILE: harness/ocl_src/CLWorld.cpp
type rosetta (line 11) | namespace rosetta
function cl_device_id (line 35) | cl_device_id CLWorld::getDevice()
function cl_context (line 41) | cl_context CLWorld::getContext()
function cl_program (line 47) | cl_program CLWorld::getProgram()
FILE: harness/ocl_src/CLWorld.h
function namespace (line 23) | namespace rosetta
FILE: optical-flow/imageLib/Convert.cpp
function ScaleAndOffset (line 57) | extern void ScaleAndOffset(CImageOf<T1>& src, CImageOf<T2>& dst, float s...
function ConvertToRGBA (line 89) | extern CImageOf<T> ConvertToRGBA(CImageOf<T> src)
function BandSelect (line 118) | extern void BandSelect(CImageOf<T>& src, CImageOf<T>& dst, int sBand, in...
function CopyPixelsInstantiate (line 156) | void CopyPixelsInstantiate(CImageOf<T1> s1)
function InstantiateConvert (line 167) | int InstantiateConvert(CImageOf<T> src)
function InstantiateAllConverts (line 176) | void InstantiateAllConverts(void)
FILE: optical-flow/imageLib/Convolve.cpp
function TrimIndex (line 33) | static int TrimIndex(int k, EBorderMode e, int n)
function FillRowBuffer (line 55) | static void FillRowBuffer(float buf[], CImageOf<T>& src, CFloatImage& ke...
function ConvolveRow2D (line 82) | static
function Convolve (line 110) | void Convolve(CImageOf<T> src, CImageOf<T>& dst,
function ConvolveSeparable (line 164) | void ConvolveSeparable(CImageOf<T> src, CImageOf<T>& dst,
function InstantiateConvolutionOf (line 211) | void InstantiateConvolutionOf(CImageOf<T> img)
function InstantiateConvolutions (line 218) | void InstantiateConvolutions()
type KernelInit (line 233) | struct KernelInit
FILE: optical-flow/imageLib/Error.h
function exception (line 20) | struct CError : public exception
FILE: optical-flow/imageLib/Image.cpp
function uchar (line 165) | uchar CImageOf<uchar>::MinVal(void) { return 0; }
function uchar (line 166) | uchar CImageOf<uchar>::MaxVal(void) { return 255; }
FILE: optical-flow/imageLib/Image.h
function namespace (line 34) | namespace std {}
type uchar (line 56) | typedef unsigned char uchar;
type CShape (line 61) | struct CShape
function InBounds (line 76) | inline bool CShape::InBounds(int x, int y)
function InBounds (line 83) | inline bool CShape::InBounds(int x, int y, int b)
type EBorderMode (line 94) | enum EBorderMode
type CImageAttributes (line 104) | struct CImageAttributes
function class (line 115) | class CImage : public CImageAttributes
type CImageOf (line 244) | typedef CImageOf<uchar> CByteImage;
type CImageOf (line 245) | typedef CImageOf<int> CIntImage;
type CImageOf (line 246) | typedef CImageOf<float> CFloatImage;
FILE: optical-flow/imageLib/ImageIO.cpp
type CTargaHead (line 56) | struct CTargaHead
class CTargaRLC (line 93) | class CTargaRLC
method CTargaRLC (line 97) | CTargaRLC(bool RLC) : m_count(0), m_RLC(RLC) {}
function uchar (line 106) | inline uchar* CTargaRLC::getBytes(int nBytes, FILE *stream)
function ReadFileTGA (line 139) | void ReadFileTGA(CByteImage& img, const char* filename)
function WriteFileTGA (line 249) | void WriteFileTGA(CImage img, const char* filename)
function skip_comment (line 302) | void skip_comment(FILE *fp)
function skip_space (line 312) | void skip_space(FILE *fp)
function read_header (line 323) | void read_header(FILE *fp, const char *imtype, char c1, char c2,
function ReadFilePGM (line 355) | void ReadFilePGM(CByteImage& img, const char* filename)
function WriteFilePGM (line 429) | void WriteFilePGM(CByteImage img, const char* filename)
function ReadImage (line 518) | void ReadImage (CImage& img, const char* filename)
function WriteImage (line 581) | void WriteImage(CImage& img, const char* filename)
function ReadImageVerb (line 621) | void ReadImageVerb(CImage& img, const char* filename, int verbose) {
function WriteImageVerb (line 628) | void WriteImageVerb(CImage& img, const char* filename, int verbose) {
FILE: optical-flow/imageLib/RefCntMem.cpp
function CRefCntMem (line 65) | CRefCntMem& CRefCntMem::operator=(const CRefCntMem& ref)
FILE: optical-flow/imageLib/RefCntMem.h
type CRefCntMemPtr (line 25) | struct CRefCntMemPtr // shared component of reference counted me...
function class (line 34) | class CRefCntMem // reference-counted memory allocator
FILE: optical-flow/imageLib/flowIO.cpp
function unknown_flow (line 35) | bool unknown_flow(float u, float v) {
function unknown_flow (line 41) | bool unknown_flow(float *f) {
function ReadFlowFile (line 46) | void ReadFlowFile(CFloatImage& img, const char* filename)
function WriteFlowFile (line 96) | void WriteFlowFile(CFloatImage img, const char* filename)
FILE: optical-flow/src/host/check_result.cpp
function check_results (line 20) | void check_results(velocity_t output[MAX_HEIGHT][MAX_WIDTH], CFloatImage...
FILE: optical-flow/src/host/optical_flow_host.cpp
function main (line 43) | int main(int argc, char ** argv)
FILE: optical-flow/src/host/typedefs.h
type pixel_t (line 23) | typedef float pixel_t;
type outer_pixel_t (line 24) | typedef float outer_pixel_t;
type vel_pixel_t (line 25) | typedef float vel_pixel_t;
type gradient_t (line 27) | typedef struct{
type outer_t (line 33) | typedef struct{
type tensor_t (line 37) | typedef struct{
type velocity_t (line 41) | typedef struct{
type ap_uint (line 49) | typedef ap_uint<64> frames_t;
FILE: optical-flow/src/host/utils.cpp
function print_usage (line 16) | void print_usage(char* filename)
function parse_sdaccel_command_line_args (line 24) | void parse_sdaccel_command_line_args(
function parse_sdsoc_command_line_args (line 56) | void parse_sdsoc_command_line_args(
FILE: optical-flow/src/ocl/optical_flow.cpp
function gradient_xy_calc (line 18) | void gradient_xy_calc(input_t frame[MAX_HEIGHT][MAX_WIDTH],
function gradient_z_calc (line 103) | void gradient_z_calc(input_t frame1[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_y (line 126) | void gradient_weight_y(pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_x (line 183) | void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH],
function outer_product (line 230) | void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_y (line 255) | void tensor_weight_y(outer_t outer[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_x (line 305) | void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH],
function flow_calc (line 352) | void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH],
function optical_flow (line 400) | void optical_flow(frames_t frames[MAX_HEIGHT * MAX_WIDTH],
FILE: optical-flow/src/sdsoc/optical_flow.cpp
function gradient_xy_calc (line 20) | void gradient_xy_calc(input_t frame[MAX_HEIGHT][MAX_WIDTH],
function gradient_z_calc (line 105) | void gradient_z_calc(input_t frame1[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_y (line 128) | void gradient_weight_y(pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_x (line 185) | void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH],
function outer_product (line 232) | void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_y (line 257) | void tensor_weight_y(outer_t outer[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_x (line 307) | void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH],
function flow_calc (line 354) | void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH],
function optical_flow (line 401) | void optical_flow(frames_t frames[MAX_HEIGHT][MAX_WIDTH],
FILE: optical-flow/src/sw/optical_flow_sw.cpp
function gradient_xy_calc (line 13) | void gradient_xy_calc(pixel_t frame[MAX_HEIGHT][MAX_WIDTH],
function gradient_z_calc (line 44) | void gradient_z_calc(pixel_t frame0[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_y (line 67) | void gradient_weight_y(pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH],
function gradient_weight_x (line 99) | void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH],
function outer_product (line 129) | void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_y (line 150) | void tensor_weight_y(outer_t outer[MAX_HEIGHT][MAX_WIDTH],
function tensor_weight_x (line 182) | void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH],
function flow_calc (line 213) | void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH],
function optical_flow_sw (line 239) | void optical_flow_sw(pixel_t frame0[MAX_HEIGHT][MAX_WIDTH],
FILE: spam-filter/src/host/check_result.cpp
type DataSet_s (line 13) | struct DataSet_s
function dotProduct (line 25) | float dotProduct(FeatureType* param_vector, DataType* data_point_i, cons...
function LabelType (line 40) | LabelType getPrediction(FeatureType* parameter_vector, DataType* data_po...
function computeErrorRate (line 47) | double computeErrorRate(
function check_results (line 85) | void check_results(FeatureType* param_vector, DataType* data_points, Lab...
FILE: spam-filter/src/host/spam_filter.cpp
function main (line 42) | int main(int argc, char *argv[])
FILE: spam-filter/src/host/typedefs.h
type ap_fixed (line 48) | typedef ap_fixed<FTYPE_TWIDTH,FTYPE_IWIDTH> FeatureType;
type ap_uint (line 49) | typedef ap_uint<VFTYPE_WIDTH> VectorFeatureType;
type ap_fixed (line 54) | typedef ap_fixed<DTYPE_TWIDTH,DTYPE_IWIDTH> DataType;
type ap_uint (line 55) | typedef ap_uint<VDTYPE_WIDTH> VectorDataType;
type ap_uint (line 60) | typedef ap_uint<LTYPE_WIDTH> LabelType;
type ap_uint (line 61) | typedef ap_uint<VLTYPE_WIDTH> VectorLabelType;
type ap_uint (line 70) | typedef ap_uint<LUTIN_TWIDTH> IdxFixed;
type ap_fixed (line 71) | typedef ap_fixed<LUTIN_TWIDTH, LUTIN_IWIDTH> LutInFixed;
type ap_fixed (line 72) | typedef ap_fixed<LUTOUT_TWIDTH, LUTOUT_IWIDTH> LutOutFixed;
type FeatureType (line 75) | typedef float FeatureType;
type DataType (line 76) | typedef float DataType;
type LabelType (line 77) | typedef unsigned char LabelType;
FILE: spam-filter/src/host/utils.cpp
function print_usage (line 16) | void print_usage(char* filename)
function parse_sdaccel_command_line_args (line 23) | void parse_sdaccel_command_line_args(
function parse_sdsoc_command_line_args (line 51) | void parse_sdsoc_command_line_args(
FILE: spam-filter/src/ocl/sgd.cpp
function FeatureType (line 13) | FeatureType dotProduct(FeatureType param[NUM_FEATURES],
function FeatureType (line 32) | FeatureType useLUT(FeatureType in)
function FeatureType (line 48) | FeatureType Sigmoid(FeatureType exponent)
function computeGradient (line 63) | void computeGradient(
function updateParameter (line 78) | void updateParameter(
function read_data (line 95) | void read_data(VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECT...
function compute (line 113) | void compute(FeatureType theta_local[NUM_FEATURES],
function SgdLR (line 140) | void SgdLR( VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTO...
FILE: spam-filter/src/sdsoc/sgd.cpp
function read_data (line 14) | void read_data(VectorDataType data[NUM_FEATURES / D_VECTOR_SIZE],
function FeatureType (line 29) | FeatureType dotProduct(FeatureType param[NUM_FEATURES],
function FeatureType (line 52) | FeatureType useLUT(FeatureType in)
function FeatureType (line 68) | FeatureType Sigmoid(FeatureType exponent)
function computeGradient (line 83) | void computeGradient(
function updateParameter (line 101) | void updateParameter(
function streamOut (line 120) | void streamOut(FeatureType theta_local[NUM_FEATURES], VectorFeatureType ...
function compute (line 136) | void compute(FeatureType theta_local[NUM_FEATURES],
function SgdLR (line 159) | void SgdLR( VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTO...
FILE: spam-filter/src/sw/sgd_sw.cpp
function FeatureType (line 13) | FeatureType dotProduct(FeatureType param[NUM_FEATURES],
function FeatureType (line 22) | FeatureType Sigmoid(FeatureType exponent)
function computeGradient (line 28) | void computeGradient(
function updateParameter (line 38) | void updateParameter(
function SgdLR_sw (line 48) | void SgdLR_sw( DataType data[NUM_FEATURES * NUM_TRAINING],
Condensed preview — 219 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,366K chars).
[
{
"path": ".gitattributes",
"chars": 29,
"preview": "**/*.h linguist-language=C++\n"
},
{
"path": "3d-rendering/Makefile",
"chars": 902,
"preview": "# Set kernel name\nKERNEL_NAME = rendering\n\n# Set host source and headers\nHOST_SRC_CPP = ./src/host/3d_rendering_host.cpp"
},
{
"path": "3d-rendering/README.md",
"chars": 984,
"preview": "# 3D Rendering\n\n## Description\nThis design renders 2D images from 3D models (3D triangle mesh). It is composed of the fo"
},
{
"path": "3d-rendering/outputs_golden.txt",
"chars": 65816,
"preview": "Image After Rendering: \n000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
{
"path": "3d-rendering/src/host/3d_rendering_host.cpp",
"chars": 5145,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/host/check_result.cpp",
"chars": 1714,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/host/check_result.h",
"chars": 583,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/host/input_data.h",
"chars": 138076,
"preview": "/*===============================================================*/\r\n/* "
},
{
"path": "3d-rendering/src/host/typedefs.h",
"chars": 1866,
"preview": "/*===============================================================*/\r\n/* "
},
{
"path": "3d-rendering/src/host/utils.cpp",
"chars": 1084,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/host/utils.h",
"chars": 612,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/ocl/rendering.cpp",
"chars": 10119,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/sdsoc/rendering.cpp",
"chars": 9631,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/sdsoc/rendering.h",
"chars": 700,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/sw/rendering_sw.cpp",
"chars": 7754,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "3d-rendering/src/sw/rendering_sw.h",
"chars": 656,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "BNN/LICENSE",
"chars": 1501,
"preview": "Copyright (c) 2016-2017, Cornell University\nAll rights reserved.\n\nRedistribution and use in source and binary forms, wit"
},
{
"path": "BNN/README.md",
"chars": 3206,
"preview": "Introduction\n------------------------------------------------------------------------\nbnn-fpga is an open-source impleme"
},
{
"path": "BNN/cpp/Makefile",
"chars": 161,
"preview": ".PHONY: all clean\nall:\n\t$(MAKE) -C minizip\n\t$(MAKE) -C utils\n\t$(MAKE) -C accel\n\nclean:\n\t$(MAKE) -C minizip clean\n\t$(MAKE"
},
{
"path": "BNN/cpp/Makefile.inc",
"chars": 109,
"preview": "CXX=g++\nCFLAGS=-O3 -std=gnu++11 -g\nMINIZIP_LDFLAGS=-lminizip -laes -lz\nLDFLAGS=$(MINIZIP_LDFLAGS)\n\nAR=ar rcs\n"
},
{
"path": "BNN/cpp/accel/Accel.cpp",
"chars": 29353,
"preview": "#include <iostream>\n#include <iomanip>\n#include <hls_stream.h>\n#include \"Accel.h\"\n#include \"AccelPrint.h\"\n\nconst static "
},
{
"path": "BNN/cpp/accel/Accel.h",
"chars": 4014,
"preview": "#ifndef ACCEL_ACCEL_H\n#define ACCEL_ACCEL_H\n\n#include <cstddef>\n#include <hls_video.h>\n#include <hls_stream.h>\n#include "
},
{
"path": "BNN/cpp/accel/AccelPrint.cpp",
"chars": 905,
"preview": "#include \"AccelPrint.h\"\n\nvoid print_params3d(Word in[], unsigned M, unsigned num) {\n unsigned addr = M / CONV_W_PER_WOR"
},
{
"path": "BNN/cpp/accel/AccelPrint.h",
"chars": 2145,
"preview": "#ifndef ACCEL_PRINT_H\n#define ACCEL_PRINT_H\n\n#include \"Accel.h\"\n#include <stdio.h>\n\n//----------------------------------"
},
{
"path": "BNN/cpp/accel/AccelSchedule.cpp",
"chars": 10101,
"preview": "#include \"AccelSchedule.h\"\n#include \"AccelTest.h\"\n#include \"Timer.h\"\n\nstatic Timer timers[N_LAYERS] = {\n \"xl-FC3\",\n \"x"
},
{
"path": "BNN/cpp/accel/AccelSchedule.h",
"chars": 1737,
"preview": "#ifndef ACCEL_ACCEL_SCHEDULE_H\n#define ACCEL_ACCEL_SCHEDULE_H\n\n#include <vector>\n#include \"Accel.h\"\n\n// Contains all inf"
},
{
"path": "BNN/cpp/accel/AccelTest.cpp",
"chars": 9437,
"preview": "#include \"AccelTest.h\"\n#include \"AccelSchedule.h\"\n#include <math.h>\n#include <cstdlib>\n\n//------------------------------"
},
{
"path": "BNN/cpp/accel/AccelTest.h",
"chars": 3497,
"preview": "#ifndef ACCEL_ACCEL_TEST_H\n#define ACCEL_ACCEL_TEST_H\n\n#include \"Typedefs.h\"\n#include \"Accel.h\"\n#include \"AccelPrint.h\"\n"
},
{
"path": "BNN/cpp/accel/Dense.cpp",
"chars": 2521,
"preview": "#include \"Dense.h\"\n#include \"Timer.h\"\n\nconst static Word m1(\"0x5555555555555555\", 16);\nconst static Word m2(\"0x333333333"
},
{
"path": "BNN/cpp/accel/Dense.h",
"chars": 449,
"preview": "#ifndef ACCEL_DENSE_H\n#define ACCEL_DENSE_H\n\n#include \"Debug.h\"\n#include \"Typedefs.h\"\n#include \"Accel.h\"\n\nvoid dense_lay"
},
{
"path": "BNN/cpp/accel/InputConv.cpp",
"chars": 2317,
"preview": "#include \"InputConv.h\"\n#include \"AccelTest.h\"\n#include \"Timer.h\"\n\nvoid run_input_conv_layer(\n const float* w_data,\n "
},
{
"path": "BNN/cpp/accel/InputConv.h",
"chars": 296,
"preview": "#ifndef ACCEL_INPUT_CONV_H\n#define ACCEL_INPUT_CONV_H\n\n#include \"Typedefs.h\"\n#include \"Accel.h\"\n\nvoid run_input_conv_lay"
},
{
"path": "BNN/cpp/accel/Makefile",
"chars": 706,
"preview": "include ../Makefile.inc\n\nCFLAGS:=-I../utils $(CFLAGS)\nLDFLAGS:=-L../utils -L../minizip -lCraftUtils $(LDFLAGS)\n\n# HDR ar"
},
{
"path": "BNN/cpp/accel/README.md",
"chars": 262,
"preview": " * Accel.h: the synthesizable accelerator code\n * AccelSchedule.h: driver functions for calling the accel to execute BNN"
},
{
"path": "BNN/cpp/accel/accel_test_bnn.cpp",
"chars": 5817,
"preview": "#include <cstddef>\n#include <cstdlib>\n#include <hls_video.h>\n\n#include \"Accel.h\"\n#include \"AccelSchedule.h\"\n#include \"Ac"
},
{
"path": "BNN/cpp/accel/accel_test_layer.cpp",
"chars": 3276,
"preview": "#include <cstddef>\n#include <hls_video.h>\n\n#include \"Accel.h\"\n#include \"AccelSchedule.h\"\n#include \"AccelTest.h\"\n#include"
},
{
"path": "BNN/cpp/accel/accel_test_random.cpp",
"chars": 2553,
"preview": "#include <cstddef>\n#include <hls_video.h>\n\n#include \"Accel.h\"\n#include \"AccelSchedule.h\"\n#include \"AccelTest.h\"\n\n// used"
},
{
"path": "BNN/cpp/accel/hls.tcl",
"chars": 1040,
"preview": "#=========================================================================\n# hls.tcl\n#=================================="
},
{
"path": "BNN/cpp/accel/opt.tcl",
"chars": 3772,
"preview": "#=========================================================================\n# opt.tcl\n#=================================="
},
{
"path": "BNN/cpp/accel/parse_vivado.py",
"chars": 8152,
"preview": "#!/usr/bin/env python\n\nimport os, re, glob, sys\nimport xml.etree.ElementTree as ET\n\n#-----------------------------------"
},
{
"path": "BNN/cpp/accel/sdsoc_build/Makefile",
"chars": 1016,
"preview": "include ../../Makefile.inc\n\nCFLAGS:=-DHLS_COMPILE -I../../utils $(CFLAGS)\nSLDFLAGS:=-DHLS_COMPILE -L. -lSdsCraftUtils -L"
},
{
"path": "BNN/cpp/accel/sdsoc_build/sds.tcl",
"chars": 461,
"preview": "set rootdir $::env(CRAFT_BNN_ROOT)\nsource $rootdir/cpp/accel/opt.tcl\n\nset_directive_interface -mode ap_fifo \"top\" wt_i\ns"
},
{
"path": "BNN/cpp/minizip/CMakeLists.txt",
"chars": 2881,
"preview": "#***************************************************************************\n# Copyright: Matthias Schmieder,\n# E-Mail:"
},
{
"path": "BNN/cpp/minizip/ChangeLog",
"chars": 4975,
"preview": "More changes since 1.1\r\n- Added support for AE-2 zip files\r\n- Fixed error in AE-1 not testing CRC32\r\n\r\n Credits\r\n \r\n "
},
{
"path": "BNN/cpp/minizip/LICENSE",
"chars": 876,
"preview": "Condition of use and distribution are the same as zlib:\n\nThis software is provided 'as-is', without any express or impli"
},
{
"path": "BNN/cpp/minizip/Makefile",
"chars": 1109,
"preview": "CC=cc\nCFLAGS=-O -I../.. -DHAVE_AES\nARFLAGS=rv\n\nUNZ_OBJS = miniunz.o unzip.o ioapi.o libaes.a\nZIP_OBJS = minizip.o zip.o "
},
{
"path": "BNN/cpp/minizip/Makefile.am",
"chars": 792,
"preview": "lib_LTLIBRARIES = libminizip.la\n\nif COND_DEMOS\nbin_PROGRAMS = miniunzip minizip\nendif\n\nzlib_top_srcdir = $(top_srcdir)/."
},
{
"path": "BNN/cpp/minizip/README.md",
"chars": 2348,
"preview": "Minizip zlib contribution that includes:\r\n\r\n- AES encryption\r\n- I/O buffering\r\n- PKWARE disk spanning\r\n- Visual Studio 2"
},
{
"path": "BNN/cpp/minizip/aes/Makefile",
"chars": 358,
"preview": "CC=cc\r\nCFLAGS=-O -DHAVE_AES\r\nOBJS=aescrypt.o aeskey.o aestab.o entropy.o fileenc.o hmac.o prng.o pwd2key.o sha1.o\r\nARFLA"
},
{
"path": "BNN/cpp/minizip/aes/aes.h",
"chars": 7069,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/aes_via_ace.h",
"chars": 16868,
"preview": "/*\nCopyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved.\n\nThe redistribution and use of this softw"
},
{
"path": "BNN/cpp/minizip/aes/aescrypt.c",
"chars": 9845,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/aeskey.c",
"chars": 15836,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/aesopt.h",
"chars": 26106,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/aestab.c",
"chars": 15278,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/aestab.h",
"chars": 5159,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/brg_endian.h",
"chars": 5164,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/brg_types.h",
"chars": 7975,
"preview": "/*\n---------------------------------------------------------------------------\nCopyright (c) 1998-2010, Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/entropy.c",
"chars": 1034,
"preview": "#ifdef _WIN32\n#include <windows.h>\n#else\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <unistd.h>\n#endif\n\n#if define"
},
{
"path": "BNN/cpp/minizip/aes/entropy.h",
"chars": 193,
"preview": "\n#ifndef _ENTROPY_FUN_H\n#define _ENTROPY_FUN_H\n\n#if defined(__cplusplus)\nextern \"C\"\n{\n#endif\n\nint entropy_fun(unsigned c"
},
{
"path": "BNN/cpp/minizip/aes/fileenc.c",
"chars": 4762,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman < "
},
{
"path": "BNN/cpp/minizip/aes/fileenc.h",
"chars": 4236,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman < "
},
{
"path": "BNN/cpp/minizip/aes/hmac.c",
"chars": 5102,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/hmac.h",
"chars": 2940,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/prng.c",
"chars": 5185,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman < "
},
{
"path": "BNN/cpp/minizip/aes/prng.h",
"chars": 3016,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman < "
},
{
"path": "BNN/cpp/minizip/aes/pwd2key.c",
"chars": 6018,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/pwd2key.h",
"chars": 1996,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/sha1.c",
"chars": 8453,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/aes/sha1.h",
"chars": 2357,
"preview": "/*\n ---------------------------------------------------------------------------\n Copyright (c) 2002, Dr Brian Gladman, W"
},
{
"path": "BNN/cpp/minizip/configure.ac",
"chars": 786,
"preview": "# -*- Autoconf -*-\n# Process this file with autoconf to produce a configur"
},
{
"path": "BNN/cpp/minizip/crypt.h",
"chars": 5052,
"preview": "/* crypt.h -- base code for traditional PKWARE encryption\n Version 1.01e, February 12th, 2005\n\n Copyright (C) 1998-2"
},
{
"path": "BNN/cpp/minizip/ioapi.c",
"chars": 12343,
"preview": "/* ioapi.h -- IO base function header for compress/uncompress .zip\n part of the MiniZip project\n\n Copyright (C) 1998"
},
{
"path": "BNN/cpp/minizip/ioapi.h",
"chars": 6926,
"preview": "/* ioapi.h -- IO base function header for compress/uncompress .zip\n part of the MiniZip project\n\n Copyright (C) 1998"
},
{
"path": "BNN/cpp/minizip/ioapi_buf.c",
"chars": 17427,
"preview": "/* ioapi_buf.h -- IO base function header for compress/uncompress .zip\n files using zlib + zip or unzip API\n\n This v"
},
{
"path": "BNN/cpp/minizip/ioapi_buf.h",
"chars": 1964,
"preview": "/* ioapi_buf.h -- IO base function header for compress/uncompress .zip\n files using zlib + zip or unzip API\n\n This v"
},
{
"path": "BNN/cpp/minizip/ioapi_mem.c",
"chars": 4861,
"preview": "/* ioapi_mem.h -- IO base function header for compress/uncompress .zip\n files using zlib + zip or unzip API\n\n This v"
},
{
"path": "BNN/cpp/minizip/ioapi_mem.h",
"chars": 1785,
"preview": "/* ioapi_mem.h -- IO base function header for compress/uncompress .zip\n files using zlib + zip or unzip API\n\n This v"
},
{
"path": "BNN/cpp/minizip/iowin32.c",
"chars": 18819,
"preview": "/* iowin32.c -- IO base function header for compress/uncompress .zip\n Version 1.1, February 14h, 2010\n part of the M"
},
{
"path": "BNN/cpp/minizip/iowin32.h",
"chars": 918,
"preview": "/* iowin32.h -- IO base function header for compress/uncompress .zip\n Version 1.1, February 14h, 2010\n part of the M"
},
{
"path": "BNN/cpp/minizip/miniunz.c",
"chars": 15761,
"preview": "/* miniunz.c\n Version 1.1, February 14h, 2010\n sample part of the MiniZip project\n\n Copyright (C) 1998-2010 Gilles"
},
{
"path": "BNN/cpp/minizip/miniunz.vcproj",
"chars": 7122,
"preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<VisualStudioProject\r\n\tProjectType=\"Visual C++\"\r\n\tVersion=\"9.00\"\r\n\tName=\""
},
{
"path": "BNN/cpp/minizip/minizip.c",
"chars": 12336,
"preview": "/* minizip.c\n Version 1.1, February 14h, 2010\n sample part of the MiniZip project\n\n Copyright (C) 1998-2010 Gilles"
},
{
"path": "BNN/cpp/minizip/minizip.pc.in",
"chars": 263,
"preview": "prefix=@prefix@\nexec_prefix=@exec_prefix@\nlibdir=@libdir@\nincludedir=@includedir@/minizip\n\nName: minizip\nDescription: Mi"
},
{
"path": "BNN/cpp/minizip/minizip.sln",
"chars": 1328,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 10.00\r\n# Visual Studio 2008\r\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-"
},
{
"path": "BNN/cpp/minizip/minizip.vcproj",
"chars": 7118,
"preview": "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\r\n<VisualStudioProject\r\n\tProjectType=\"Visual C++\"\r\n\tVersion=\"9.00\"\r\n\tName=\""
},
{
"path": "BNN/cpp/minizip/unzip.c",
"chars": 71537,
"preview": "/* unzip.c -- IO for uncompress .zip files using zlib\n Version 1.1, February 14h, 2010\n part of the MiniZip project\n"
},
{
"path": "BNN/cpp/minizip/unzip.h",
"chars": 14443,
"preview": "/* unzip.h -- IO for uncompress .zip files using zlib\n Version 1.1, February 14h, 2010\n part of the MiniZip project\n"
},
{
"path": "BNN/cpp/minizip/zip.c",
"chars": 74816,
"preview": "/* zip.c -- IO on .zip files using zlib\n Version 1.1, February 14h, 2010\n part of the MiniZip project\n\n Copyright "
},
{
"path": "BNN/cpp/minizip/zip.h",
"chars": 9390,
"preview": "/* zip.h -- IO on .zip files using zlib\n Version 1.1, February 14h, 2010\n part of the MiniZip project\n\n Copyright "
},
{
"path": "BNN/cpp/utils/Common.cpp",
"chars": 293,
"preview": "#include \"Common.h\"\n\n//------------------------------------------------------------------------\nstd::string get_root_dir"
},
{
"path": "BNN/cpp/utils/Common.h",
"chars": 348,
"preview": "#ifndef COMMON_H\n#define COMMON_H\n\n#include <string>\n#include <cstdlib>\n#include <assert.h>\n#include <ap_int.h>\n\n#includ"
},
{
"path": "BNN/cpp/utils/DataIO.cpp",
"chars": 1183,
"preview": "#include \"DataIO.h\"\n\n\nCifar10TestInputs::Cifar10TestInputs(unsigned n)\n : m_size(n*CHANNELS*ROWS*COLS)\n{\n data = new f"
},
{
"path": "BNN/cpp/utils/DataIO.h",
"chars": 937,
"preview": "//------------------------------------------------------------------------\n// Class to read the image data\n//-----------"
},
{
"path": "BNN/cpp/utils/Debug.h",
"chars": 366,
"preview": "#ifndef DEBUG_H\n#define DEBUG_H\n\n#ifndef DEBUG_LEVEL\n#define DEBUG_LEVEL 0\n#endif\n\n#ifdef HLS_COMPILE\n#undef DEBUG_LEVEL"
},
{
"path": "BNN/cpp/utils/Makefile",
"chars": 583,
"preview": "include ../Makefile.inc\n\n# HDR are pure headers\nHDR=Debug.h BitVector.h QuantizeParams.h Layers.h Typedefs.h\n# OBJ must "
},
{
"path": "BNN/cpp/utils/ParamIO.cpp",
"chars": 848,
"preview": "#include <assert.h>\n\n#include \"ParamIO.h\"\n#include \"ZipIO.h\"\n#include \"Common.h\"\n\nParams::Params(std::string zipfile)\n "
},
{
"path": "BNN/cpp/utils/ParamIO.h",
"chars": 1368,
"preview": "//------------------------------------------------------------------------\n// Class to read the parameters from a .zip a"
},
{
"path": "BNN/cpp/utils/SArray.h",
"chars": 1738,
"preview": "#ifndef SARRAY_H\n#define SARRAY_H\n\n//------------------------------------------------------------------------\n// Static "
},
{
"path": "BNN/cpp/utils/Timer.cpp",
"chars": 1675,
"preview": "//---------------------------------------------------------\n// Timer.cpp\n//---------------------------------------------"
},
{
"path": "BNN/cpp/utils/Timer.h",
"chars": 1101,
"preview": "//---------------------------------------------------------\n// Timer.h\n//-----------------------------------------------"
},
{
"path": "BNN/cpp/utils/Typedefs.h",
"chars": 650,
"preview": "#ifndef TYPEDEFS_H\n#define TYPEDEFS_H\n\n#include <ap_int.h>\n\n//#define USE_FLOAT\n\n#ifdef USE_FLOAT\n\n typedef float Input"
},
{
"path": "BNN/cpp/utils/ZipIO.cpp",
"chars": 1972,
"preview": "#include <assert.h>\n\n#include \"ZipIO.h\"\n#include \"Debug.h\"\n\n//----------------------------------------------------------"
},
{
"path": "BNN/cpp/utils/ZipIO.h",
"chars": 3173,
"preview": "#ifndef ZIP_IO_H\n#define ZIP_IO_H\n\n#include <cstdint>\n#include <cstdlib>\n#include <string>\n#include \"../minizip/zip.h\"\n#"
},
{
"path": "BNN/cpp/utils/open_zip.cpp",
"chars": 2224,
"preview": "//------------------------------------------------------------------------\n// Simple test program for minizip, it checks"
},
{
"path": "BNN/data/get_data.sh",
"chars": 612,
"preview": "#!/usr/bin/env bash\n\nCURR_DIR=`pwd`\nDIR=\"$( cd \"$( dirname \"${BASH_ROUCE[0]}\" )\" && pwd )\"\ncd $DIR\n\ndeclare -a files=(\"c"
},
{
"path": "BNN/params/get_params.sh",
"chars": 333,
"preview": "#!/usr/bin/env bash\n\nCURR_DIR=`pwd`\nDIR=\"$( cd \"$( dirname \"${BASH_ROUCE[0]}\" )\" && pwd )\"\ncd $DIR\n\ndeclare -a files=(\"c"
},
{
"path": "BNN/setup.sh",
"chars": 104,
"preview": "#!/usr/bin/env bash\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nexport CRAFT_BNN_ROOT=$DIR\n"
},
{
"path": "LICENSE",
"chars": 1518,
"preview": "BSD 3-Clause License\n\nCopyright (c) 2018-2019, cornell-zhang\nAll rights reserved.\n\nRedistribution and use in source and "
},
{
"path": "README.md",
"chars": 8064,
"preview": "# Rosetta: A Realistic High-level Synthesis Benchmark Suite for Software Programmable FPGAs\n\n## Publication\n------------"
},
{
"path": "digit-recognition/Makefile",
"chars": 907,
"preview": "# Set kernel name\nKERNEL_NAME = DigitRec\n\n# Set host source and headers\nHOST_SRC_CPP = ./src/host/digit_recognition.cpp "
},
{
"path": "digit-recognition/README.md",
"chars": 1338,
"preview": "# Digit Recognition\n\n## Description\nThis design classifies hand-written digits using the K-Nearest-Neighbor (KNN) algori"
},
{
"path": "digit-recognition/outputs_golden.txt",
"chars": 4370,
"preview": "Test 133: expected = 0, result = 6\nTest 160: expected = 0, result = 6\nTest 223: expected = 1, result = 4\nTest 261: expec"
},
{
"path": "digit-recognition/src/host/check_result.cpp",
"chars": 1166,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/check_result.h",
"chars": 553,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/digit_recognition.cpp",
"chars": 6173,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/testing_data.h",
"chars": 716,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/training_data.h",
"chars": 1097,
"preview": "/*===============================================================*/\r\n/* "
},
{
"path": "digit-recognition/src/host/typedefs.h",
"chars": 1088,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/utils.cpp",
"chars": 1085,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/host/utils.h",
"chars": 612,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/ocl/digitrec.cl",
"chars": 7642,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/sdsoc/digitrec.cpp",
"chars": 6107,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/sdsoc/digitrec.h",
"chars": 934,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/sw/digitrec_sw.cpp",
"chars": 3355,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "digit-recognition/src/sw/digitrec_sw.h",
"chars": 781,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/Makefile",
"chars": 988,
"preview": "# Set kernel name\nKERNEL_NAME = face_detect\n\n# Set host source and headers\nHOST_SRC_CPP = ./src/host/face_detect_host.cp"
},
{
"path": "face-detection/README.md",
"chars": 1975,
"preview": "# Face Detection\n\n## Description\nThis design detects human faces from an image using the Viola Jones algorithm. The SDSo"
},
{
"path": "face-detection/outputs_golden.txt",
"chars": 2233,
"preview": "\nresult_size = 43\n\n [Test Bench (main) ] detected rects: 50 89 35 35\n\n [Test Bench (main) ] detected rects: 48 91 35 35\n"
},
{
"path": "face-detection/src/host/check_result.cpp",
"chars": 1983,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/host/check_result.h",
"chars": 811,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/host/face_detect_host.cpp",
"chars": 5313,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/host/image.cpp",
"chars": 1818,
"preview": "#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n#include \"image.h\"\n\n#define MYDEBUG\n\nchar* strrev(char* str)\n{"
},
{
"path": "face-detection/src/host/image.h",
"chars": 386,
"preview": "#ifndef __IMAGE_H__\n#define __IMAGE_H__\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include \"typedefs.h"
},
{
"path": "face-detection/src/host/image0_320_240.h",
"chars": 384963,
"preview": "unsigned char Data[240][320]={\n{0xd4,0xd4,0xd4,0xd2,0xd4,0xd6,0xd4,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd"
},
{
"path": "face-detection/src/host/typedefs.h",
"chars": 1838,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/host/utils.cpp",
"chars": 1584,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/host/utils.h",
"chars": 733,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/ocl/face_detect.cpp",
"chars": 91591,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/ocl/haar_dataEWC_with_partitioning.h",
"chars": 75056,
"preview": "static int weights_array0[2913] = {\n-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096"
},
{
"path": "face-detection/src/ocl/haar_dataRcc_with_partitioning.h",
"chars": 79248,
"preview": "static int stages_array[25] = {\n9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200"
},
{
"path": "face-detection/src/ocl/haar_mapping.h",
"chars": 4859,
"preview": "\nstatic int bank_mapping[ROWS * COLS] = \n{8, 13, 20, 14, 21, 12, 10, 1, 15, 2, 14, 17, 16, 20, 9, 6, 19, 14, 1, 0, 2, 18"
},
{
"path": "face-detection/src/sdsoc/face_detect.cpp",
"chars": 90712,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/sdsoc/face_detect.h",
"chars": 787,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/sdsoc/haar_dataEWC_with_partitioning.h",
"chars": 75056,
"preview": "static int weights_array0[2913] = {\n-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096"
},
{
"path": "face-detection/src/sdsoc/haar_dataRcc_with_partitioning.h",
"chars": 79248,
"preview": "static int stages_array[25] = {\n9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200"
},
{
"path": "face-detection/src/sdsoc/haar_mapping.h",
"chars": 4859,
"preview": "\nstatic int bank_mapping[ROWS * COLS] = \n{8, 13, 20, 14, 21, 12, 10, 1, 15, 2, 14, 17, 16, 20, 9, 6, 19, 14, 1, 0, 2, 18"
},
{
"path": "face-detection/src/sw/face_detect_sw.cpp",
"chars": 11576,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/sw/face_detect_sw.h",
"chars": 879,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "face-detection/src/sw/haar_dataEWC_with_partitioning.h",
"chars": 75056,
"preview": "static int weights_array0[2913] = {\n-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096"
},
{
"path": "face-detection/src/sw/haar_dataRcc_with_partitioning.h",
"chars": 79248,
"preview": "static int stages_array[25] = {\n9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200"
},
{
"path": "harness/README.md",
"chars": 190,
"preview": "# OpenCL harness\nThis directory contains the wrapper code around OpenCL APIs (`ocl_src`) and top-level makefile. Part of"
},
{
"path": "harness/harness.mk",
"chars": 4799,
"preview": "# ======================================== Check Xilinx SDX Environment Settings ======================================="
},
{
"path": "harness/ocl_src/CLKernel.cpp",
"chars": 2078,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "harness/ocl_src/CLKernel.h",
"chars": 2502,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "harness/ocl_src/CLMemObj.cpp",
"chars": 1794,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "harness/ocl_src/CLMemObj.h",
"chars": 1559,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "harness/ocl_src/CLWorld.cpp",
"chars": 11179,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "harness/ocl_src/CLWorld.h",
"chars": 3206,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/Makefile",
"chars": 1075,
"preview": "# Set kernel name\nKERNEL_NAME = optical_flow\n\n# Set host source and headers\nHOST_SRC_CPP = ./src/host/optical_flow_host."
},
{
"path": "optical-flow/README.md",
"chars": 2151,
"preview": "# Optical Flow\n\n## Description\nThis design computes the movement of each pixel in five continuous image frames. \nThe har"
},
{
"path": "optical-flow/datasets/current/frame4.ppm",
"chars": 968650,
"preview": "P6\n1024 436\n255\n|x{lvfqb~mow~mtb|iZ|j]~moq{j}jZq`}k\\rcp_m\\N_QEvcTxfp_td}jZjZLvcTtbTkZM[MBSF;OB9XJ@G<3OH@vncrurr~s~th"
},
{
"path": "optical-flow/datasets/sintel_alley/frame4.ppm",
"chars": 968650,
"preview": "P6\n1024 436\n255\n|x{lvfqb~mow~mtb|iZ|j]~moq{j}jZq`}k\\rcp_m\\N_QEvcTxfp_td}jZjZLvcTtbTkZM[MBSF;OB9XJ@G<3OH@vncrurr~s~th"
},
{
"path": "optical-flow/imageLib/Convert.cpp",
"chars": 5242,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Convert.cpp -- convert betwee"
},
{
"path": "optical-flow/imageLib/Convert.h",
"chars": 4316,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Convert.h -- convert between "
},
{
"path": "optical-flow/imageLib/Convolve.cpp",
"chars": 8432,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Convolve.cpp -- separable and"
},
{
"path": "optical-flow/imageLib/Convolve.h",
"chars": 2412,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Convolve.h -- separable and n"
},
{
"path": "optical-flow/imageLib/Copyright.h",
"chars": 3072,
"preview": "/*\n\nStereoMatcher 1.0\n\nThis Microsoft Research Source Code License Agreement (\"MSR-SCLA\") is\na legal agreement between y"
},
{
"path": "optical-flow/imageLib/Error.h",
"chars": 983,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Error.h -- a simple error han"
},
{
"path": "optical-flow/imageLib/Image.cpp",
"chars": 5523,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Image.cpp -- a simple referen"
},
{
"path": "optical-flow/imageLib/Image.h",
"chars": 7824,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// Image.h -- a simple reference"
},
{
"path": "optical-flow/imageLib/ImageIO.cpp",
"chars": 19812,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// ImageIO.cpp -- image file inp"
},
{
"path": "optical-flow/imageLib/ImageIO.h",
"chars": 1446,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// ImageIO.h -- image file input"
},
{
"path": "optical-flow/imageLib/README.txt",
"chars": 517,
"preview": "imageLib is a small C++ library for 2D multi-band images. See Image.h\nfor more detail. Reading and writing of images i"
},
{
"path": "optical-flow/imageLib/RefCntMem.cpp",
"chars": 2425,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// RefCntMem.cpp -- reference-co"
},
{
"path": "optical-flow/imageLib/RefCntMem.h",
"chars": 2141,
"preview": "///////////////////////////////////////////////////////////////////////////\n//\n// NAME\n// RefCntMem.h -- reference-coun"
},
{
"path": "optical-flow/imageLib/flowIO.cpp",
"chars": 4691,
"preview": "// flow_io.cpp\n//\n// read and write our simple .flo flow file format\n\n// \".flo\" file format used for optical flow evalua"
},
{
"path": "optical-flow/imageLib/flowIO.h",
"chars": 539,
"preview": "// flowIO.h\n\n// the \"official\" threshold - if the absolute value of either \n// flow component is greater, it's considere"
},
{
"path": "optical-flow/imageLib/imageLib.h",
"chars": 135,
"preview": "// imageLib.h\n\n// common includes\n\n#include \"Error.h\"\n#include \"Image.h\"\n#include \"ImageIO.h\"\n#include \"Convert.h\"\n#incl"
},
{
"path": "optical-flow/output_golden.txt",
"chars": 31,
"preview": "Average error: 150.083 degrees\n"
},
{
"path": "optical-flow/src/host/check_result.cpp",
"chars": 2743,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/host/check_result.h",
"chars": 851,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/host/optical_flow_host.cpp",
"chars": 6164,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/host/typedefs.h",
"chars": 1468,
"preview": "/*===============================================================*/\r\n/* "
},
{
"path": "optical-flow/src/host/utils.cpp",
"chars": 1800,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/host/utils.h",
"chars": 789,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/ocl/optical_flow.cpp",
"chars": 14554,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/sdsoc/optical_flow.cpp",
"chars": 14079,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/sdsoc/optical_flow.h",
"chars": 998,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/sw/optical_flow_sw.cpp",
"chars": 7826,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "optical-flow/src/sw/optical_flow_sw.h",
"chars": 1194,
"preview": "/*===============================================================*/\r\n/* "
},
{
"path": "spam-filter/Makefile",
"chars": 871,
"preview": "# Set kernel name\nKERNEL_NAME = SgdLR\n\n# Set host source and headers\nHOST_SRC_CPP = ./src/host/spam_filter.cpp ./src/hos"
},
{
"path": "spam-filter/README.md",
"chars": 877,
"preview": "# Spam Filtering\n\n## Description\nThis design trains a logistic regression model to classify emails as either \"spam\" or \""
},
{
"path": "spam-filter/data/.gitignore",
"chars": 63,
"preview": "features.dat\nlabels.dat\nnewfeatsfloat.dat\nnewfeatsint.dat\n*.py\n"
},
{
"path": "spam-filter/output_golden.txt",
"chars": 661,
"preview": "\nmain parameter vector: \nm[0]: 93.9424 | m[1]: -45.7199 | m[2]: 362.705 | m[3]: -180.539 | m[4]: 47.1384 | m[5]: -63.850"
},
{
"path": "spam-filter/src/host/check_result.cpp",
"chars": 4525,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "spam-filter/src/host/check_result.h",
"chars": 567,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "spam-filter/src/host/spam_filter.cpp",
"chars": 8898,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "spam-filter/src/host/typedefs.h",
"chars": 2758,
"preview": "/*===============================================================*/\n/* "
},
{
"path": "spam-filter/src/host/utils.cpp",
"chars": 1607,
"preview": "/*===============================================================*/\n/* "
}
]
// ... and 19 more files (download for full content)
About this extraction
This page contains the full source code of the cornell-zhang/rosetta GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 219 files (3.9 MB), approximately 1.0M tokens, and a symbol index with 809 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.